HekiliDB = { ["namespaces"] = { }, ["profileKeys"] = { ["Quillandrus - Deathwing"] = "Default", ["Quillvolta - Deathwing"] = "Default", ["Quillox - Deathwing"] = "Default", ["Quillstrum - Deathwing"] = "Quillstrum - Deathwing", ["Quilligan - Deathwing"] = "Default", ["Quillmar - Deathwing"] = "Default", ["Quillmog - Deathwing"] = "Quillmog - Deathwing", ["Quillandreia - Deathwing"] = "Default", ["Quilladin - Deathwing"] = "Default", ["Quillten - Deathwing"] = "Quillten - Deathwing", ["Quillikus - Thunderhorn"] = "Quillikus - Thunderhorn", ["Quillcroft - Thunderhorn"] = "Quillcroft - Thunderhorn", ["Quillithar - Deathwing"] = "Default", ["Quillastra - Deathwing"] = "Quillastra - Deathwing", ["Quillika - Thunderhorn"] = "Quillika - Thunderhorn", ["Quillshake - Deathwing"] = "Default", ["Quilldara - Deathwing"] = "Default", ["Quillika - Deathwing"] = "Quillika - Deathwing", ["Quillvyn - Deathwing"] = "Default", ["Notch - Sporeggar"] = "Default", ["Quillichaa - Deathwing"] = "Default", ["Quillord - Deathwing"] = "Default", ["Quillight - Deathwing"] = "Default", ["Quilloria - Deathwing"] = "Default", ["Quillthus - Deathwing"] = "Default", ["Quillithor - Deathwing"] = "Default", ["Quillessa - Deathwing"] = "Default", ["Quilago - Thunderhorn"] = "Quilago - Thunderhorn", ["Quillphis - Deathwing"] = "Quillphis - Deathwing", ["Quillark - Thunderhorn"] = "Default", ["Quillspeth - Thunderhorn"] = "Quillspeth - Thunderhorn", ["Quildra - Thunderhorn"] = "Default", ["Quillrata - Deathwing"] = "Default", ["Quilberg - Thunderhorn"] = "Quilberg - Thunderhorn", ["Quilkin - Thunderhorn"] = "Quilkin - Thunderhorn", ["Quildra - Deathwing"] = "Quildra - Deathwing", ["Quillum - Deathwing"] = "Quillum - Deathwing", ["Quilldraka - Deathwing"] = "Default", ["Quillandria - Thunderhorn"] = "Quillandria - Thunderhorn", ["Quillick - Thunderhorn"] = "Quillick - Thunderhorn", ["Quillidania - Deathwing"] = "Quillidania - Deathwing", ["Quillshi - Deathwing"] = "Default", ["Quillidan - Thunderhorn"] = "Default", ["Quillson - Thunderhorn"] = "Quillson - Thunderhorn", ["Quillisium - Deathwing"] = "Quillisium - Deathwing", ["Quillikan - Deathwing"] = "Quillikan - Deathwing", ["Quillow - Thunderhorn"] = "Default", ["Quilenko - Thunderhorn"] = "Quilenko - Thunderhorn", ["Quilbee - Thunderhorn"] = "Quilbee - Thunderhorn", ["Quillzana - Thunderhorn"] = "Quillzana - Thunderhorn", }, ["profiles"] = { ["Quillidania - Deathwing"] = { ["toggles"] = { ["cooldowns"] = { ["value"] = false, }, ["defensives"] = { ["value"] = false, }, ["interrupts"] = { ["value"] = false, }, }, ["specs"] = { [581] = { ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["settings"] = { ["frailty_stacks"] = 1, ["brand_charges"] = 0, ["infernal_charges"] = 1, }, ["potion"] = "superior_steelskin_potion", }, [577] = { ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["settings"] = { ["retreat_and_return"] = "off", ["retreat_filler"] = false, ["fel_rush_charges"] = 0, ["demon_blades_acknowledged"] = false, ["throw_glaive_charges"] = 0, ["recommend_movement"] = false, ["fel_rush_filler"] = true, ["unbound_movement"] = false, }, ["potion"] = "potion_of_unbridled_fury", }, }, ["displays"] = { ["Interrupts"] = { ["rel"] = "CENTER", ["x"] = -655.999755859375, ["y"] = -191.0000305175781, }, ["Cooldowns"] = { ["rel"] = "CENTER", ["x"] = -655.9996337890625, ["y"] = -130.0000915527344, }, ["Primary"] = { ["rel"] = "CENTER", ["elvuiCooldown"] = true, ["y"] = -191.0006866455078, ["x"] = -54, }, ["AOE"] = { ["rel"] = "CENTER", ["x"] = -54, ["y"] = -190.9997100830078, }, ["Defensives"] = { ["rel"] = "CENTER", ["x"] = -655.999755859375, ["y"] = -247.0000610351563, }, }, ["packs"] = { ["Havoc"] = { ["source"] = "SimulationCraft", ["builtIn"] = true, ["date"] = 20250413, ["spec"] = 577, ["desc"] = "2025-04-13: Save Reaver's Glaive even if we'll waste Art of the Glaive stacks\n\n2025-04-06: Flex Openers\n\n2025-03-14: Sync with SimC\n\n2025-03-01: Sync with SimC\n\n2025-02-26: (minor) Sync with SimC", ["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/demonhunter_havoc.simc\n## Up to date with SimC: March 9 2025 - 91f125a\n\nactions.precombat+=/variable,name=trinket1_steroids,value=trinket.1.is.improvised_seaforium_pacemaker\nactions.precombat+=/variable,name=trinket2_steroids,value=trinket.2.is.improvised_seaforium_pacemaker\n# Blacklist for trinkets to hold trinket cooldowns for Initiative and Necessary Strike line-up outside standard trinket implementation\nactions.precombat+=/variable,name=trinket1_crit,value=trinket.1.is.mad_queens_mandate||trinket.1.is.junkmaestros_mega_magnet||trinket.1.is.geargrinders_spare_keys||trinket.1.is.ravenous_honey_buzzer||trinket.1.is.grim_codex\nactions.precombat+=/variable,name=trinket2_crit,value=trinket.2.is.mad_queens_mandate||trinket.2.is.junkmaestros_mega_magnet||trinket.2.is.geargrinders_spare_keys||trinket.2.is.ravenous_honey_buzzer||trinket.2.is.grim_codex\nactions.precombat+=/variable,name=rg_ds,default=0,op=reset\nactions.precombat+=/sigil_of_flame\nactions.precombat+=/immolation_aura\n\nactions+=/disrupt\n## [Hekili] `retarget_auto_attack` is not implemented.\n### Spread Burning Wounds for uptime in multitarget scenarios\n## actions+=/retarget_auto_attack,line_cd=1,target_if=min:debuff.burning_wound.remains,if=talent.burning_wound&talent.demon_blades&active_dot.burning_wound<(spell_targets>?3)\n## actions+=/retarget_auto_attack,line_cd=1,target_if=min:!target.is_boss,if=talent.burning_wound&talent.demon_blades&active_dot.burning_wound=(spell_targets>?3)\n# Fury generated per second\nactions+=/variable,name=fury_gen,op=set,value=talent.demon_blades*(1%(2.6*attack_haste)*((talent.demonsurge&buff.metamorphosis.up)*3+12))+buff.immolation_aura.stack*6+buff.tactical_retreat.up*10\n# Tier 33 tier set check for trinket lineups withs Necessary Sacrifice\nactions+=/variable,name=tier33_4piece,value=(buff.initiative.up||!talent.initiative)&(buff.necessary_sacrifice.up||!set_bonus.thewarwithin_season_2_4pc)\n# Double on use trinket holding for using a stat cooldown trinket and an on use damage trinket\nactions+=/variable,name=double_on_use,value=!equipped.signet_of_the_priory&!equipped.house_of_cards||(trinket.1.is.house_of_cards||trinket.1.is.signet_of_the_priory)&trinket.1.cooldown.remains>20||(trinket.2.is.house_of_cards||trinket.2.is.signet_of_the_priory)&trinket.2.cooldown.remains>20\n# Use to determine if we traversed either of the opener lists.\nactions.ar+=/variable,name=opened,value=false\n# Separate actionlists for each hero tree\nactions+=/run_action_list,name=ar,strict=1,if=hero_tree.aldrachi_reaver\n## [Syrif] - Fallback for people levelling\nactions+=/run_action_list,name=fs,strict=1,if=!hero_tree.aldrachi_reaver\n\n\n# Aldrachi Reaver\nactions.ar=variable,name=rg_inc,op=set,value=buff.rending_strike.down&buff.glaive_flurry.up&cooldown.blade_dance.up&gcd.remains=0||variable.rg_inc&prev_gcd.1.death_sweep\n## [Hekili] `pick_up_fragment` is not implemented.\n## actions.ar+=/pick_up_fragment,use_off_gcd=1,if=fury<=90\nactions.ar+=/variable,name=fel_barrage,op=set,value=talent.fel_barrage&(cooldown.fel_barrage.remains=desired_targets+raid_event.adds.count||raid_event.adds.in90)&(cooldown.metamorphosis.remains||active_enemies>2)||buff.fel_barrage.up)&!(active_enemies=1&!raid_event.adds.exists)\nactions.ar+=/chaos_strike,if=buff.rending_strike.up&buff.glaive_flurry.up&(variable.rg_ds=2||active_enemies>2)&time>10\nactions.ar+=/annihilation,if=buff.rending_strike.up&buff.glaive_flurry.up&(variable.rg_ds=2||active_enemies>2)\n## [Hekili] Remove `action.reavers_glaive.last_used` check that prevented using Reaver's Glaive after the opener.\nactions.ar+=/reavers_glaive,if=buff.glaive_flurry.down&buff.rending_strike.down&buff.thrill_of_the_fight_damage.remains3||buff.metamorphosis.remains>2||cooldown.eye_beam.remains<10||fight_remains<10)\nactions.ar+=/reavers_glaive,if=buff.glaive_flurry.down&buff.rending_strike.down&buff.thrill_of_the_fight_damage.remains<4&(buff.thrill_of_the_fight_damage.up||!prev_gcd.1.death_sweep||!variable.rg_inc)&active_enemies>2||boss&fight_remains<10\nactions.ar+=/call_action_list,name=ar_cooldown\n## [Hekili] No performance loss in sims changing from Run Action List to Call Action List; checking CDs toggle will help keep cromulent.\nactions.ar+=/call_action_list,name=ar_opener,if=time<15&toggle.cooldowns&(cooldown.eye_beam.up||cooldown.metamorphosis.up||talent.essence_break&cooldown.essence_break.up)\nactions.ar+=/sigil_of_spite,if=debuff.essence_break.down&(!talent.reavers_mark||active_dot.reavers_mark>0||debuff.reavers_mark.remains>=2-talent.quickened_sigils)\nactions.ar+=/run_action_list,name=ar_fel_barrage,if=variable.fel_barrage&raid_event.adds.up\nactions.ar+=/immolation_aura,if=active_enemies>2&talent.ragefire&(!talent.fel_barrage||cooldown.fel_barrage.remains>recharge_time)&debuff.essence_break.down&(buff.metamorphosis.down||buff.metamorphosis.remains>5)\nactions.ar+=/immolation_aura,if=active_enemies>2&talent.ragefire&raid_event.adds.up&raid_event.adds.remains<15&raid_event.adds.remains>5&debuff.essence_break.down\n## [Syrif] - Rework trinket conditions to work with existing metatable structure\nactions.ar+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&(cooldown.eye_beam.remains>15&gcd.remains<0.3||gcd.remains<0.2&cooldown.eye_beam.remains<=gcd.remains&cooldown.metamorphosis.remains>10)&(!variable.trinket1_steroids&!variable.trinket2_steroids||variable.trinket1_steroids&trinket.t1.has_stat.any_dps&trinket.t1.has_cooldown&(trinket.t1.cooldown.remains30)||variable.trinket2_steroids&trinket.t2.has_stat.any_dps&trinket.t1.has_cooldown&(trinket.t2.cooldown.remains30))&time>20&(!talent.inertia&buff.unbound_chaos.down||buff.inertia_trigger.down&buff.metamorphosis.down)\nactions.ar+=/run_action_list,name=ar_fel_barrage,if=variable.fel_barrage||!talent.demon_blades&talent.fel_barrage&(buff.fel_barrage.up||cooldown.fel_barrage.up)&buff.metamorphosis.down\nactions.ar+=/felblade,if=!talent.inertia&active_enemies=1&buff.unbound_chaos.up&buff.initiative.up&debuff.essence_break.down&buff.metamorphosis.down\nactions.ar+=/felblade,if=buff.inertia_trigger.up&talent.inertia&cooldown.eye_beam.remains<=0.5&(cooldown.metamorphosis.remains&talent.looks_can_kill||active_enemies>1)\nactions.ar+=/run_action_list,name=ar_meta,if=buff.metamorphosis.up\nactions.ar+=/felblade,if=buff.inertia_trigger.up&talent.inertia&buff.inertia.down&cooldown.blade_dance.remains<4&(cooldown.eye_beam.remains>5&cooldown.eye_beam.remains>buff.unbound_chaos.remains||cooldown.eye_beam.remains<=gcd.max&cooldown.vengeful_retreat.remains<=gcd.max+1)\n## [Hekili] Note that, with procs, you can get back-to-back Immolation Auras here and that's consistent with the sim: https://www.raidbots.com/simbot/report/d2c3niKvdSVyDbQdsaDsrB/simc\n## actions.ar+=/immolation_aura,if=time<15&active_enemies=1&talent.a_fire_inside&talent.burning_wound&buff.metamorphosis.down\nactions.ar+=/immolation_aura,if=talent.a_fire_inside&talent.burning_wound&full_recharge_timefull_recharge_time||active_enemies>desired_targets)\nactions.ar+=/immolation_aura,if=active_enemies>desired_targets&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>full_recharge_time)\nactions.ar+=/immolation_aura,if=fight_remains<15&cooldown.blade_dance.remains&talent.ragefire\n## [Syrif] - Rework trinket conditions to work with existing metatable structure\nactions.ar+=/eye_beam,if=(cooldown.blade_dance.remains<7||raid_event.adds.up)&(!variable.trinket1_steroids&!variable.trinket2_steroids||variable.trinket1_steroids&trinket.t1.has_stat.any_dps&trinket.t1.has_cooldown&(trinket.t1.cooldown.remains30)||variable.trinket2_steroids&trinket.t2.has_stat.any_dps&trinket.t1.has_cooldown&(trinket.t2.cooldown.remains30))||boss&fight_remains<10\nactions.ar+=/blade_dance,if=cooldown.eye_beam.remains>=gcd.max*3&buff.rending_strike.down\nactions.ar+=/chaos_strike,if=buff.rending_strike.up\nactions.ar+=/sigil_of_flame,if=active_enemies>3||debuff.essence_break.down\nactions.ar+=/felblade,if=fury.deficit>=40+variable.fury_gen*0.5&!buff.inertia_trigger.up\nactions.ar+=/glaive_tempest,if=active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>10\nactions.ar+=/chaos_strike,if=debuff.essence_break.up\nactions.ar+=/throw_glaive,if=active_enemies>1&talent.furious_throws&(!talent.screaming_brutality||charges=2||full_recharge_timegcd.max*2||fury>80\nactions.ar+=/felblade,if=active_enemies=1&!talent.a_fire_inside&debuff.essence_break.down\nactions.ar+=/immolation_aura,if=raid_event.adds.in>full_recharge_time||active_enemies>desired_targets&active_enemies>2\nactions.ar+=/sigil_of_flame,if=buff.out_of_range.down&debuff.essence_break.down&(!talent.fel_barrage||cooldown.fel_barrage.remains>25||active_enemies=1&!raid_event.adds.exists)\nactions.ar+=/demons_bite\nactions.ar+=/throw_glaive,if=buff.unbound_chaos.down&recharge_time8||charges_fractional>1.01)&buff.out_of_range.down&active_enemies>1\nactions.ar+=/fel_rush,if=buff.unbound_chaos.down&recharge_time8||charges_fractional>1.01)&active_enemies>1\nactions.ar+=/arcane_torrent,if=buff.out_of_range.down&debuff.essence_break.down&fury<100\n\nactions.ar_cooldown+=/metamorphosis,if=(((cooldown.eye_beam.remains>=20||talent.cycle_of_hatred&cooldown.eye_beam.remains>=13)&(!talent.essence_break||debuff.essence_break.up)&buff.fel_barrage.down&(raid_event.adds.in>40||(raid_event.adds.remains>8||!talent.fel_barrage)&active_enemies>2)||!talent.chaotic_transformation||boss&fight_remains<30)&buff.inner_demon.down&(!talent.restless_hunter&cooldown.blade_dance.remains>gcd.max*3||prev_gcd.1.death_sweep))&!talent.inertia&!talent.essence_break&(variable.opened||time>15)\nactions.ar_cooldown+=/metamorphosis,if=(cooldown.blade_dance.remains&((prev_gcd.1.death_sweep||prev_gcd.2.death_sweep||prev_gcd.3.death_sweep||buff.metamorphosis.up&buff.metamorphosis.remains40||(raid_event.adds.remains>8||!talent.fel_barrage)&active_enemies>2)||!talent.chaotic_transformation||boss&fight_remains<30)&(buff.inner_demon.down&(buff.rending_strike.down||!talent.restless_hunter||prev_gcd.1.death_sweep)))&(talent.inertia||talent.essence_break)&(variable.opened||time>15)\nactions.ar_cooldown+=/potion,if=boss&fight_remains<35||(buff.metamorphosis.up||debuff.essence_break.up)&time>10\n## [Hekili] `invoke_external_buff` is not implemented.\n## actions.ar_cooldown+=/invoke_external_buff,name=power_infusion,if=buff.metamorphosis.up||boss&fight_remains<=20\nactions.ar_cooldown+=/variable,name=special_trinket,op=set,value=equipped.mad_queens_mandate||equipped.treacherous_transmitter||equipped.skardyns_grace||equipped.signet_of_the_priory||equipped.junkmaestros_mega_magnet||equipped.geargrinders_spare_keys||equipped.mister_locknstalk||equipped.ravenous_honey_buzzer||equipped.grim_codex\nactions.ar_cooldown+=/use_item,name=mad_queens_mandate,if=((!talent.initiative||buff.initiative.up||time>5)&(buff.metamorphosis.remains>5||buff.metamorphosis.down)&(trinket.1.is.mad_queens_mandate&(trinket.2.cooldown.duration<10||trinket.2.cooldown.remains>10||!trinket.2.has_buff.any)||trinket.2.is.mad_queens_mandate&(trinket.1.cooldown.duration<10||trinket.1.cooldown.remains>10||!trinket.1.has_buff.any))&fight_remains>120||boss&fight_remains<10&fight_remainsfight_remains||trinket.2.is.mad_queens_mandate&trinket.2.cooldown.remains>fight_remains)||fight_remains>25\nactions.ar_cooldown+=/use_item,name=skardyns_grace,if=(!equipped.mad_queens_mandate||fight_remains>25||trinket.2.is.skardyns_grace&trinket.1.cooldown.remains>fight_remains||trinket.1.is.skardyns_grace&trinket.2.cooldown.remains>fight_remains||trinket.1.cooldown.duration<10||trinket.2.cooldown.duration<10)&buff.metamorphosis.up\nactions.ar_cooldown+=/use_item,name=house_of_cards,if=(cooldown.eye_beam.up||buff.metamorphosis.up)||boss&fight_remains<20\nactions.ar_cooldown+=/use_item,name=signet_of_the_priory,if=time<20&(!talent.inertia||buff.inertia.up)||buff.metamorphosis.up&time>20||boss&fight_remains<20\nactions.ar_cooldown+=/use_item,name=junkmaestros_mega_magnet,if=variable.tier33_4piece&variable.double_on_use||fight_remains<20\nactions.ar_cooldown+=/use_item,name=geargrinders_spare_keys,if=variable.tier33_4piece&variable.double_on_use||fight_remains<20\nactions.ar_cooldown+=/use_item,name=grim_codex,if=variable.tier33_4piece&variable.double_on_use||boss&fight_remains<10\nactions.ar_cooldown+=/use_item,name=ravenous_honey_buzzer,if=(variable.tier33_4piece&(buff.inertia.down&(cooldown.essence_break.remains&debuff.essence_break.down||!talent.essence_break))&(trinket.1.is.ravenous_honey_buzzer&(trinket.2.cooldown.duration<10||trinket.2.cooldown.remains>10||!trinket.2.has_buff.any)||trinket.2.is.ravenous_honey_buzzer&(trinket.1.cooldown.duration<10||trinket.1.cooldown.remains>10||!trinket.1.has_buff.any))&fight_remains>120||boss&fight_remains<10&fight_remains15||cooldown.eye_beam.remains<5||boss&fight_remains<20\nactions.ar_cooldown+=/use_item,slot=trinket1,if=((cooldown.eye_beam.remains1||buff.metamorphosis.up)&(raid_event.adds.in>trinket.1.cooldown.duration-15||raid_event.adds.remains>8)||!trinket.1.has_buff.any||boss&fight_remains<25)&!trinket.1.is.mister_locknstalk&!variable.trinket1_crit&!trinket.1.is.skardyns_grace&!trinket.1.is.treacherous_transmitter&(!variable.special_trinket||trinket.2.cooldown.remains>20)\nactions.ar_cooldown+=/use_item,slot=trinket2,if=((cooldown.eye_beam.remains1||buff.metamorphosis.up)&(raid_event.adds.in>trinket.2.cooldown.duration-15||raid_event.adds.remains>8)||!trinket.2.has_buff.any||boss&fight_remains<25)&!trinket.2.is.mister_locknstalk&!variable.trinket2_crit&!trinket.2.is.skardyns_grace&!trinket.2.is.treacherous_transmitter&(!variable.special_trinket||trinket.1.cooldown.remains>20)\nactions.ar_cooldown+=/the_hunt,if=debuff.essence_break.down&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>90)&(!talent.reavers_mark||debuff.reavers_mark.up)&buff.reavers_glaive.down&(buff.metamorphosis.remains>5||buff.metamorphosis.down)&(!talent.initiative||buff.initiative.up||time>5)&time>5&(!talent.inertia&buff.unbound_chaos.down||buff.inertia_trigger.down)\nactions.ar_cooldown+=/sigil_of_spite,if=debuff.essence_break.down&(!talent.reavers_mark||active_dot.reavers_mark>0||debuff.reavers_mark.remains>=2-talent.quickened_sigils)&cooldown.blade_dance.remains&time>15\n\nactions.ar_fel_barrage+=/variable,name=generator_up,op=set,value=cooldown.felblade.remains1&raid_event.adds.up||raid_event.adds.in>40)\nactions.ar_fel_barrage+=/essence_break,if=buff.fel_barrage.down&buff.metamorphosis.up\nactions.ar_fel_barrage+=/death_sweep,if=buff.fel_barrage.down\nactions.ar_fel_barrage+=/immolation_aura,if=(active_enemies>2||buff.fel_barrage.up)&(cooldown.eye_beam.remains>recharge_time+3)\nactions.ar_fel_barrage+=/glaive_tempest,if=buff.fel_barrage.down&active_enemies>1\nactions.ar_fel_barrage+=/blade_dance,if=buff.fel_barrage.down\nactions.ar_fel_barrage+=/fel_barrage,if=fury>100&(raid_event.adds.in>90||raid_event.adds.in4&active_enemies>2)\nactions.ar_fel_barrage+=/felblade,if=buff.inertia_trigger.up&buff.fel_barrage.up\nactions.ar_fel_barrage+=/sigil_of_flame,if=fury.deficit>40&buff.fel_barrage.up\nactions.ar_fel_barrage+=/felblade,if=buff.fel_barrage.up&fury.deficit>40\nactions.ar_fel_barrage+=/death_sweep,if=fury-variable.gcd_drain-35>0&(buff.fel_barrage.remains<3||variable.generator_up||fury>80||variable.fury_gen>18)\nactions.ar_fel_barrage+=/glaive_tempest,if=fury-variable.gcd_drain-30>0&(buff.fel_barrage.remains<3||variable.generator_up||fury>80||variable.fury_gen>18)\nactions.ar_fel_barrage+=/blade_dance,if=fury-variable.gcd_drain-35>0&(buff.fel_barrage.remains<3||variable.generator_up||fury>80||variable.fury_gen>18)\nactions.ar_fel_barrage+=/arcane_torrent,if=fury.deficit>40&buff.fel_barrage.up\nactions.ar_fel_barrage+=/the_hunt,if=fury>40&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>80)\nactions.ar_fel_barrage+=/annihilation,if=fury-variable.gcd_drain-40>20&(buff.fel_barrage.remains<3||variable.generator_up||fury>80||variable.fury_gen>18)\nactions.ar_fel_barrage+=/chaos_strike,if=fury-variable.gcd_drain-40>20&(cooldown.fel_barrage.remains&cooldown.fel_barrage.remains<10&fury>100||buff.fel_barrage.up&(buff.fel_barrage.remains*variable.fury_gen-buff.fel_barrage.remains*32)>0)\nactions.ar_fel_barrage+=/demons_bite\n\nactions.ar_meta+=/death_sweep,if=buff.metamorphosis.remains15||cooldown.death_sweep.remains)&(cooldown.metamorphosis.remains&(!talent.essence_break||cooldown.essence_break.remains<=0.6||cooldown.essence_break.remains>10)||cooldown.metamorphosis.up&talent.essence_break&cooldown.essence_break.remains<=0.6&buff.inner_demon.down&cooldown.blade_dance.remains<=gcd.max+0.5||talent.restless_hunter)&cooldown.eye_beam.remains&(!talent.inertia&buff.unbound_chaos.down||buff.inertia_trigger.down)\nactions.ar_meta+=/felblade,if=talent.inertia&buff.inertia_trigger.up&cooldown.essence_break.remains<=1&cooldown.blade_dance.remains<=gcd.max*2&cooldown.metamorphosis.remains<=gcd.max*3\nactions.ar_meta+=/essence_break,if=fury>=30&talent.restless_hunter&cooldown.metamorphosis.up&(talent.inertia&buff.inertia.up||!talent.inertia)&cooldown.blade_dance.remains<=gcd.max\nactions.ar_meta+=/annihilation,if=buff.metamorphosis.remains2)||(cooldown.blade_dance.remains2))\nactions.ar_meta+=/immolation_aura,if=charges=2&active_enemies>1&debuff.essence_break.down\nactions.ar_meta+=/annihilation,if=buff.inner_demon.up&(cooldown.eye_beam.remainsgcd.max*4&buff.metamorphosis.remains>=gcd.max*2&cooldown.metamorphosis.up&cooldown.death_sweep.remains<=gcd.max&buff.inertia.up\nactions.ar_meta+=/essence_break,if=fury>20&(cooldown.blade_dance.remains4)||boss&fight_remains<10\nactions.ar_meta+=/death_sweep\nactions.ar_meta+=/eye_beam,if=debuff.essence_break.down&buff.inner_demon.down\nactions.ar_meta+=/glaive_tempest,if=debuff.essence_break.down&(cooldown.blade_dance.remains>gcd.max*2||fury>60)&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>10)\nactions.ar_meta+=/sigil_of_flame,if=active_enemies>2&debuff.essence_break.down\nactions.ar_meta+=/throw_glaive,if=talent.soulscar&talent.furious_throws&active_enemies>1&debuff.essence_break.down&(charges=2||full_recharge_time60||soul_fragments.total>0||buff.metamorphosis.remains<5&cooldown.felblade.up\nactions.ar_meta+=/annihilation,if=cooldown.blade_dance.remains||fury>60||buff.metamorphosis.remains<5&cooldown.felblade.up\nactions.ar_meta+=/sigil_of_flame,if=buff.metamorphosis.remains>5&buff.out_of_range.down\nactions.ar_meta+=/felblade,if=fury.deficit>40&!buff.inertia_trigger.up\nactions.ar_meta+=/sigil_of_flame,if=debuff.essence_break.down&buff.out_of_range.down\nactions.ar_meta+=/immolation_aura,if=buff.out_of_range.down&recharge_time<(cooldown.eye_beam.remains=desired_targets+raid_event.adds.count||raid_event.adds.in>full_recharge_time)\nactions.ar_meta+=/annihilation\nactions.ar_meta+=/fel_rush,if=recharge_time8||charges_fractional>1.01)&buff.out_of_range.down&active_enemies>1\nactions.ar_meta+=/demons_bite\n\nactions.ar_opener+=/potion\nactions.ar_opener+=/the_hunt,if=buff.reavers_glaive.down&buff.glaive_flurry.down&buff.rending_strike.down\nactions.ar_opener+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&time>4&buff.metamorphosis.up&(!talent.inertia||buff.inertia_trigger.down)&buff.inner_demon.down&cooldown.blade_dance.remains&gcd.remains<0.1\nactions.ar_opener+=/annihilation,if=buff.rending_strike.up&buff.thrill_of_the_fight_damage.down\nactions.ar_opener+=/felblade,if=!talent.inertia&talent.unbound_chaos&buff.unbound_chaos.up&buff.initiative.up&debuff.essence_break.down&active_enemies<=2\nactions.ar_opener+=/fel_rush,if=!talent.inertia&talent.unbound_chaos&buff.unbound_chaos.up&buff.initiative.up&debuff.essence_break.down&active_enemies>2\nactions.ar_opener+=/annihilation,if=talent.inner_demon&buff.inner_demon.up&cooldown.essence_break.up\nactions.ar_opener+=/essence_break,if=(buff.inertia.up||!talent.inertia)&buff.metamorphosis.up&cooldown.blade_dance.remains<=gcd.max&(!talent.reavers_mark||active_dot.reavers_mark>0||debuff.reavers_mark.remains>=2-talent.quickened_sigils)\nactions.ar_opener+=/felblade,if=buff.inertia_trigger.up&talent.inertia&talent.restless_hunter&cooldown.essence_break.up&cooldown.metamorphosis.up&buff.metamorphosis.up&cooldown.blade_dance.remains<=gcd.max\nactions.ar_opener+=/felblade,if=talent.inertia&buff.inertia_trigger.up&(buff.inertia.down&buff.metamorphosis.up)&debuff.essence_break.down&active_enemies<=2\nactions.ar_opener+=/fel_rush,if=talent.inertia&buff.inertia_trigger.up&(buff.inertia.down&buff.metamorphosis.up)&debuff.essence_break.down&(cooldown.felblade.remains||active_enemies>2)\nactions.ar_opener+=/felblade,if=talent.inertia&buff.inertia_trigger.up&buff.metamorphosis.up&cooldown.metamorphosis.remains&debuff.essence_break.down\nactions.ar_opener+=/the_hunt,if=(buff.metamorphosis.up&hero_tree.aldrachi_reaver&talent.shattered_destiny||!talent.shattered_destiny&hero_tree.aldrachi_reaver||hero_tree.felscarred)&(!talent.initiative||talent.inertia||buff.initiative.up||time>5)\nactions.ar_opener+=/felblade,if=fury<40&buff.inertia_trigger.down&debuff.essence_break.down\nactions.ar_opener+=/reavers_glaive,if=debuff.reavers_mark.down&debuff.essence_break.down\nactions.ar_opener+=/chaos_strike,if=buff.rending_strike.up&active_enemies>2\nactions.ar_opener+=/blade_dance,if=buff.glaive_flurry.up&active_enemies>2\nactions.ar_opener+=/immolation_aura,if=talent.a_fire_inside&talent.burning_wound&buff.metamorphosis.down\nactions.ar_opener+=/metamorphosis,if=buff.metamorphosis.up&cooldown.blade_dance.remains>gcd.max*2&buff.inner_demon.down&(!talent.restless_hunter||prev_gcd.1.death_sweep)&(cooldown.essence_break.remains||!talent.essence_break)\nactions.ar_opener+=/sigil_of_spite,if=(!talent.reavers_mark||active_dot.reavers_mark>0||debuff.reavers_mark.up)&(cooldown.eye_beam.remains&cooldown.metamorphosis.remains)\nactions.ar_opener+=/eye_beam,if=buff.metamorphosis.down||debuff.essence_break.down&buff.inner_demon.down&(cooldown.blade_dance.remains||talent.essence_break&cooldown.essence_break.up)\nactions.ar_opener+=/essence_break,if=cooldown.blade_dance.remains=30\nactions.fs+=/call_action_list,name=fs_cooldown\nactions.fs+=/call_action_list,name=fs_opener,if=time<15&toggle.cooldowns&(cooldown.eye_beam.up||cooldown.metamorphosis.up||talent.essence_break&cooldown.essence_break.up||buff.demonsurge.stack<3+talent.student_of_suffering+talent.a_fire_inside)\nactions.fs+=/felblade,if=talent.unbound_chaos&buff.unbound_chaos.up&!talent.inertia&active_enemies<=2&(talent.student_of_suffering&cooldown.eye_beam.remains-gcd.max*2<=buff.unbound_chaos.remains||hero_tree.aldrachi_reaver)\nactions.fs+=/fel_rush,if=talent.unbound_chaos&buff.unbound_chaos.up&!talent.inertia&active_enemies>3&(talent.student_of_suffering&cooldown.eye_beam.remains-gcd.max*2<=buff.unbound_chaos.remains)\nactions.fs+=/run_action_list,name=fs_meta,if=buff.metamorphosis.up\nactions.fs+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&(cooldown.eye_beam.remains>15&gcd.remains<0.3||gcd.remains<0.2&cooldown.eye_beam.remains<=gcd.remains&(cooldown.metamorphosis.remains>10||cooldown.blade_dance.remains=18||!talent.student_of_suffering)&(cooldown.metamorphosis.remains>10||hero_tree.aldrachi_reaver)&time>20\nactions.fs+=/sigil_of_flame,if=talent.student_of_suffering&cooldown.eye_beam.remains<=gcd.max&(cooldown.essence_break.remains10||cooldown.blade_dance.remains=10||cooldown.metamorphosis.up)&(cooldown.blade_dance.remains<7||raid_event.adds.up)||boss&fight_remains<10\nactions.fs+=/blade_dance,if=cooldown.eye_beam.remains>=gcd.max*4||debuff.essence_break.up\nactions.fs+=/chaos_strike,if=debuff.essence_break.up\nactions.fs+=/immolation_aura,if=talent.a_fire_inside&talent.isolated_prey&talent.flamebound&active_enemies=1&cooldown.eye_beam.remains>=gcd.max\nactions.fs+=/felblade,if=fury.deficit>40+variable.fury_gen*(0.5%gcd.max)&(cooldown.vengeful_retreat.remains>=action.felblade.cooldown+0.5&talent.inertia&active_enemies=1||!talent.inertia||hero_tree.aldrachi_reaver||cooldown.essence_break.remains)&cooldown.metamorphosis.remains&cooldown.eye_beam.remains>=0.5+gcd.max*(talent.student_of_suffering&cooldown.sigil_of_flame.remains<=gcd.max)\nactions.fs+=/chaos_strike,if=cooldown.eye_beam.remains>=gcd.max*4||(fury>=70-30*(talent.student_of_suffering&(cooldown.sigil_of_flame.remains<=gcd.max||cooldown.sigil_of_flame.up))-buff.chaos_theory.up*20-variable.fury_gen)\nactions.fs+=/immolation_aura,if=raid_event.adds.in>full_recharge_time&cooldown.eye_beam.remains>=gcd.max*(1+talent.student_of_suffering&(cooldown.sigil_of_flame.remains<=gcd.max||cooldown.sigil_of_flame.up))||active_enemies>desired_targets&active_enemies>2\nactions.fs+=/felblade,if=buff.out_of_range.down&buff.inertia_trigger.down&cooldown.eye_beam.remains>=gcd.max*(1+talent.student_of_suffering&(cooldown.sigil_of_flame.remains<=gcd.max||cooldown.sigil_of_flame.up))\nactions.fs+=/sigil_of_flame,if=buff.out_of_range.down&debuff.essence_break.down&!talent.student_of_suffering&(!talent.fel_barrage||cooldown.fel_barrage.remains>25||(active_enemies=1&!raid_event.adds.exists))\nactions.fs+=/throw_glaive,if=recharge_time8||charges_fractional>1.01)&buff.out_of_range.down&active_enemies>1\nactions.fs+=/fel_rush,if=buff.unbound_chaos.down&recharge_time8||charges_fractional>1.01)&active_enemies>1\nactions.fs+=/arcane_torrent,if=buff.out_of_range.down&debuff.essence_break.down&fury<100\n\nactions.fs_cooldown+=/metamorphosis,if=((cooldown.eye_beam.remains>=20&(!talent.essence_break||debuff.essence_break.up)&buff.fel_barrage.down&(raid_event.adds.in>40||(raid_event.adds.remains>8||!talent.fel_barrage)&active_enemies>2)||!talent.chaotic_transformation||boss&fight_remains<30)&buff.inner_demon.down&(!talent.restless_hunter&cooldown.blade_dance.remains>gcd.max*3||prev_gcd.1.death_sweep))&!talent.inertia&!talent.essence_break&(hero_tree.aldrachi_reaver||buff.demonsurge_death_sweep.down)&(variable.opened||time>15)\nactions.fs_cooldown+=/metamorphosis,if=(cooldown.blade_dance.remains&(buff.metamorphosis.up&cooldown.eye_beam.remains&(!talent.essence_break||debuff.essence_break.up||talent.shattered_destiny||hero_tree.felscarred)&buff.fel_barrage.down&(raid_event.adds.in>40||(raid_event.adds.remains>8||!talent.fel_barrage)&active_enemies>2)||!talent.chaotic_transformation||boss&fight_remains<30)&(buff.inner_demon.down&(!talent.restless_hunter||prev_gcd.1.death_sweep)))&(talent.inertia||talent.essence_break)&(hero_tree.aldrachi_reaver||(buff.demonsurge_death_sweep.down&buff.metamorphosis.up||buff.metamorphosis.remains15)\nactions.fs_cooldown+=/potion,if=boss&fight_remains<35||buff.metamorphosis.up||debuff.essence_break.up\n## [Hekili] `invoke_external_buff` is not implemented.\n## actions.fs_cooldown+=/invoke_external_buff,name=power_infusion,if=buff.metamorphosis.up||boss&fight_remains<=20\nactions.fs_cooldown+=/variable,name=special_trinket,op=set,value=equipped.mad_queens_mandate||equipped.treacherous_transmitter||equipped.skardyns_grace||equipped.signet_of_the_priory||equipped.junkmaestros_mega_magnet||equipped.geargrinders_spare_keys||equipped.mister_locknstalk||equipped.ravenous_honey_buzzer\nactions.fs_cooldown+=/use_item,name=mad_queens_mandate,if=((!talent.initiative||buff.initiative.up||time>5)&(buff.metamorphosis.remains>5||buff.metamorphosis.down)&(trinket.1.is.mad_queens_mandate&(trinket.2.cooldown.duration<10||trinket.2.cooldown.remains>10||!trinket.2.has_buff.any)||trinket.2.is.mad_queens_mandate&(trinket.1.cooldown.duration<10||trinket.1.cooldown.remains>10||!trinket.1.has_buff.any))&fight_remains>120||boss&fight_remains<10&fight_remainsfight_remains||trinket.2.is.mad_queens_mandate&trinket.2.cooldown.remains>fight_remains)||fight_remains>25\nactions.fs_cooldown+=/use_item,name=skardyns_grace,if=(!equipped.mad_queens_mandate||fight_remains>25||trinket.2.is.skardyns_grace&trinket.1.cooldown.remains>fight_remains||trinket.1.is.skardyns_grace&trinket.2.cooldown.remains>fight_remains||trinket.1.cooldown.duration<10||trinket.2.cooldown.duration<10)&buff.metamorphosis.up\nactions.fs_cooldown+=/use_item,name=signet_of_the_priory,if=time<20&(!talent.inertia||buff.inertia.up)||(buff.metamorphosis.up&cooldown.essence_break.up||boss&fight_remains<20)&time>20\nactions.fs_cooldown+=/use_item,name=junkmaestros_mega_magnet,if=buff.initiative.up\nactions.fs_cooldown+=/use_item,name=geargrinders_spare_keys,if=buff.initiative.up\n## [Hekili] `do_treacherous_transmitter` is not implemented.\n## actions.fs_cooldown+=/do_treacherous_transmitter_task,if=cooldown.eye_beam.remains>15||cooldown.eye_beam.remains<5||boss&fight_remains<20\nactions.fs_cooldown+=/use_item,slot=trinket1,if=((cooldown.eye_beam.remains1||buff.metamorphosis.up)&(raid_event.adds.in>trinket.1.cooldown.duration-15||raid_event.adds.remains>8)||!trinket.1.has_buff.any||boss&fight_remains<25)&!trinket.1.is.skardyns_grace&!trinket.1.is.mad_queens_mandate&!trinket.1.is.treacherous_transmitter&(!variable.special_trinket||trinket.2.cooldown.remains>20)\nactions.fs_cooldown+=/use_item,slot=trinket2,if=((cooldown.eye_beam.remains1||buff.metamorphosis.up)&(raid_event.adds.in>trinket.2.cooldown.duration-15||raid_event.adds.remains>8)||!trinket.2.has_buff.any||boss&fight_remains<25)&!trinket.2.is.skardyns_grace&!trinket.2.is.mad_queens_mandate&!trinket.2.is.treacherous_transmitter&(!variable.special_trinket||trinket.1.cooldown.remains>20)\nactions.fs_cooldown+=/the_hunt,if=debuff.essence_break.down&(active_dot.reavers_mark>0||debuff.reavers_mark.up||!talent.reavers_mark)&buff.reavers_glaive.down&(buff.metamorphosis.remains>5||buff.metamorphosis.down)&(!talent.initiative||buff.initiative.up||time>5)&time>5&(!talent.inertia&buff.unbound_chaos.down||buff.inertia_trigger.down)&(hero_tree.aldrachi_reaver||buff.metamorphosis.down)||boss&fight_remains<=30\nactions.fs_cooldown+=/sigil_of_spite,if=debuff.essence_break.down&cooldown.blade_dance.remains&(variable.opened||time>15)\n\nactions.fs_meta=death_sweep,if=buff.metamorphosis.remains30-gcd.max||cooldown.essence_break.remains<=gcd.max+talent.inertia&(cooldown.vengeful_retreat.remains<=gcd||buff.initiative.up)+gcd.max*(cooldown.eye_beam.remains<=gcd.max))||(!talent.essence_break&(cooldown.eye_beam.remains>=10||cooldown.eye_beam.remains<=gcd.max))))\nactions.fs_meta+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&(gcd.remains<0.3||talent.inertia&cooldown.eye_beam.remains>gcd.remains&(buff.cycle_of_hatred.stack=2||buff.cycle_of_hatred.stack=3))&(cooldown.metamorphosis.remains&(buff.demonsurge_annihilation.down&buff.demonsurge_death_sweep.down)||talent.restless_hunter&(!hero_tree.felscarred||buff.demonsurge_annihilation.down))&(!talent.inertia&buff.unbound_chaos.down||buff.inertia_trigger.down)&(!talent.essence_break||cooldown.essence_break.remains>18||cooldown.essence_break.remains<=gcd.remains+talent.inertia*1.5&(!talent.student_of_suffering||(buff.student_of_suffering.up||cooldown.sigil_of_flame.remains>5)))&(cooldown.eye_beam.remains>5||cooldown.eye_beam.remains<=gcd.remains||cooldown.eye_beam.up)\nactions.fs_meta+=/death_sweep,if=hero_tree.felscarred&talent.essence_break&buff.demonsurge_death_sweep.up&(buff.inertia.up&(cooldown.essence_break.remains>buff.inertia.remains||!talent.essence_break)||cooldown.metamorphosis.remains<=5&buff.inertia_trigger.down||buff.inertia.up&buff.demonsurge_abyssal_gaze.up)||talent.inertia&buff.inertia_trigger.down&cooldown.vengeful_retreat.remains>=gcd.max&buff.inertia.down\nactions.fs_meta+=/annihilation,if=buff.metamorphosis.remains=buff.inertia_trigger.remains&cooldown.blade_dance.remains<=4.5&(cooldown.blade_dance.remains||cooldown.blade_dance.remains<=0.5))||buff.metamorphosis.remains<=5.5+talent.shattered_destiny*2)\nactions.fs_meta+=/fel_rush,if=buff.inertia_trigger.up&talent.inertia&debuff.essence_break.down&cooldown.metamorphosis.remains&(!hero_tree.felscarred||cooldown.eye_beam.remains)&(active_enemies>2||hero_tree.felscarred)&(cooldown.felblade.remains&cooldown.essence_break.remains<=0.6)\nactions.fs_meta+=/annihilation,if=buff.inner_demon.up&cooldown.blade_dance.remains&(cooldown.eye_beam.remains20&(cooldown.metamorphosis.remains>10||cooldown.blade_dance.remains=gcd.max*3||!talent.inertia)&buff.out_of_range.remains4)&(!hero_tree.felscarred||active_enemies>1||cooldown.metamorphosis.remains>5&cooldown.eye_beam.remains)&(!buff.cycle_of_hatred.stack=3||buff.initiative.up)||fight_remains<5\nactions.fs_meta+=/sigil_of_doom,if=cooldown.blade_dance.remains&debuff.essence_break.down&(cooldown.eye_beam.remains>=20||cooldown.eye_beam.remains<=gcd.max)&(!talent.student_of_suffering||buff.demonsurge_sigil_of_doom.up)\nactions.fs_meta+=/immolation_aura,if=buff.demonsurge.up&debuff.essence_break.down&buff.demonsurge_consuming_fire.up&cooldown.blade_dance.remains>=gcd.max&cooldown.eye_beam.remains>=gcd.max&fury.deficit>10+variable.fury_gen\nactions.fs_meta+=/eye_beam,if=debuff.essence_break.down&buff.inner_demon.down\nactions.fs_meta+=/abyssal_gaze,if=debuff.essence_break.down&buff.inner_demon.down&(buff.cycle_of_hatred.stack<4||cooldown.essence_break.remains>=20-gcd.max*talent.student_of_suffering||cooldown.sigil_of_flame.remains&talent.student_of_suffering||cooldown.essence_break.remains<=gcd.max)\nactions.fs_meta+=/death_sweep,if=cooldown.essence_break.remains>=gcd.max*2+talent.student_of_suffering*gcd.max||debuff.essence_break.up||!talent.essence_break\n## [Hekili] `soul_fragments` is not implemented.\n## actions.fs_meta+=/annihilation,if=cooldown.blade_dance.remains||fury>60||soul_fragments.total>0||buff.metamorphosis.remains<5\nactions.fs_meta+=/annihilation,if=cooldown.blade_dance.remains||fury>60||buff.metamorphosis.remains<5\nactions.fs_meta+=/immolation_aura,if=buff.out_of_range.down&recharge_time<(cooldown.eye_beam.remains=desired_targets+raid_event.adds.count||raid_event.adds.in>full_recharge_time)\nactions.fs_meta+=/felblade,if=(buff.out_of_range.down||fury.deficit>40+variable.fury_gen*(0.5%gcd.max))&!buff.inertia_trigger.up\nactions.fs_meta+=/annihilation\nactions.fs_meta+=/throw_glaive,if=buff.unbound_chaos.down&recharge_time8||charges_fractional>1.01)&buff.out_of_range.down&active_enemies>1\nactions.fs_meta+=/fel_rush,if=recharge_time8||charges_fractional>1.01)&buff.out_of_range.down&active_enemies>1\nactions.fs_meta+=/demons_bite\n\nactions.fs_opener=potion,if=buff.initiative.up||!talent.initiative\nactions.fs_opener+=/felblade,if=cooldown.the_hunt.up&!talent.a_fire_inside&fury<40\nactions.fs_opener+=/the_hunt,if=talent.inertia||buff.initiative.up||!talent.initiative\nactions.fs_opener+=/felblade,if=talent.inertia&buff.inertia_trigger.up&active_enemies=1&buff.metamorphosis.up&cooldown.metamorphosis.up&cooldown.essence_break.up&buff.inner_demon.down&buff.demonsurge_annihilation.down\nactions.fs_opener+=/fel_rush,if=talent.inertia&buff.inertia_trigger.up&(cooldown.felblade.remains||active_enemies>1)&buff.metamorphosis.up&cooldown.metamorphosis.up&cooldown.essence_break.up&buff.inner_demon.down&buff.demonsurge_annihilation.down\nactions.fs_opener+=/essence_break,if=buff.metamorphosis.up&(!talent.inertia||buff.inertia.up)&buff.inner_demon.down&buff.demonsurge_annihilation.down\nactions.fs_opener+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&time>4&buff.metamorphosis.up&(!talent.inertia||buff.inertia_trigger.down)&talent.essence_break&buff.inner_demon.down&(buff.initiative.down||gcd.remains<0.1)&cooldown.blade_dance.remains\nactions.fs_opener+=/felblade,if=talent.inertia&buff.inertia_trigger.up&hero_tree.felscarred&debuff.essence_break.down&talent.essence_break&cooldown.metamorphosis.remains&active_enemies<=2&cooldown.sigil_of_flame.remains\nactions.fs_opener+=/sigil_of_doom,if=(buff.inner_demon.down||buff.out_of_range.up)&debuff.essence_break.down\nactions.fs_opener+=/annihilation,if=(buff.inner_demon.up||buff.demonsurge_annihilation.up)&(cooldown.metamorphosis.up||!talent.essence_break&cooldown.blade_dance.remains)\nactions.fs_opener+=/death_sweep,if=hero_tree.felscarred&buff.demonsurge_death_sweep.up&!talent.restless_hunter\nactions.fs_opener+=/annihilation,if=hero_tree.felscarred&buff.demonsurge_annihilation.up&(!talent.essence_break||buff.inner_demon.up)\nactions.fs_opener+=/immolation_aura,if=talent.a_fire_inside&talent.burning_wound&buff.metamorphosis.down\nactions.fs_opener+=/felblade,if=fury<40&debuff.essence_break.down&buff.inertia_trigger.down&cooldown.metamorphosis.up\nactions.fs_opener+=/metamorphosis,if=buff.metamorphosis.up&buff.inner_demon.down&buff.demonsurge_annihilation.down&cooldown.blade_dance.remains\nactions.fs_opener+=/eye_beam,if=buff.metamorphosis.down||debuff.essence_break.down&buff.inner_demon.down&(cooldown.blade_dance.remains||talent.essence_break&cooldown.essence_break.up)&(!talent.a_fire_inside||action.immolation_aura.charges=0)\nactions.fs_opener+=/abyssal_gaze,if=debuff.essence_break.down&buff.inner_demon.down\nactions.fs_opener+=/death_sweep\nactions.fs_opener+=/annihilation\nactions.fs_opener+=/demons_bite\nactions.fs_opener+=/variable,name=opened,value=true", ["version"] = 20250413, ["warnings"] = "The import for 'fs_cooldown' required some automated changes.\nLine 5: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 5: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 5: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.2.is.skardyns_grace' to 'trinket.t2.is.skardyns_grace' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.1.is.skardyns_grace' to 'trinket.t1.is.skardyns_grace' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 11: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 11: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 11: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 11: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_use_buff' (1x).\nLine 11: Converted 'trinket.1.is.skardyns_grace' to 'trinket.t1.is.skardyns_grace' (1x).\nLine 11: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 11: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 12: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 12: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 12: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 12: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (1x).\nLine 12: Converted 'trinket.2.is.skardyns_grace' to 'trinket.t2.is.skardyns_grace' (1x).\nLine 12: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 12: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 12: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 12: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nThe following auras were used in the action list but were not found in the addon database:\n - any\n\nThe import for 'fs' required some automated changes.\nLine 12: Converted operations in 'fury.deficit>40+variable.fury_gen*(0.5%gcd.max)&(cooldown.vengeful_retreat.remains>=action.felblade.cooldown+0.5&talent.inertia.enabled&active_enemies=1||!talent.inertia.enabled||hero_tree.aldrachi_reaver||cooldown.essence_break.remains)&cooldown.metamorphosis.remains&cooldown.eye_beam.remains>=0.5+gcd.max*(talent.student_of_suffering.enabled&cooldown.sigil_of_flame.remains<=gcd.max)' to 'fury.deficit>40+variable.fury_gen*(0.5/gcd.max)&(cooldown.vengeful_retreat.remains>=action.felblade.cooldown+0.5&talent.inertia.enabled&active_enemies=1||!talent.inertia.enabled||hero_tree.aldrachi_reaver||cooldown.essence_break.remains)&cooldown.metamorphosis.remains&cooldown.eye_beam.remains>=0.5+gcd.max*(talent.student_of_suffering.enabled&cooldown.sigil_of_flame.remains<=gcd.max)'.\n\nThe import for 'precombat' required some automated changes.\nLine 1: Converted 'trinket.1.is.improvised_seaforium_pacemaker' to 'trinket.t1.is.improvised_seaforium_pacemaker' (1x).\nLine 2: Converted 'trinket.2.is.improvised_seaforium_pacemaker' to 'trinket.t2.is.improvised_seaforium_pacemaker' (1x).\nLine 3: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 3: Converted 'trinket.1.is.junkmaestros_mega_magnet' to 'trinket.t1.is.junkmaestros_mega_magnet' (1x).\nLine 3: Converted 'trinket.1.is.geargrinders_spare_keys' to 'trinket.t1.is.geargrinders_spare_keys' (1x).\nLine 3: Converted 'trinket.1.is.ravenous_honey_buzzer' to 'trinket.t1.is.ravenous_honey_buzzer' (1x).\nLine 3: Converted 'trinket.1.is.grim_codex' to 'trinket.t1.is.grim_codex' (1x).\nLine 4: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 4: Converted 'trinket.2.is.junkmaestros_mega_magnet' to 'trinket.t2.is.junkmaestros_mega_magnet' (1x).\nLine 4: Converted 'trinket.2.is.geargrinders_spare_keys' to 'trinket.t2.is.geargrinders_spare_keys' (1x).\nLine 4: Converted 'trinket.2.is.ravenous_honey_buzzer' to 'trinket.t2.is.ravenous_honey_buzzer' (1x).\nLine 4: Converted 'trinket.2.is.grim_codex' to 'trinket.t2.is.grim_codex' (1x).\n\nThe import for 'default' required some automated changes.\nLine 2: Converted operations in 'talent.demon_blades.enabled*(1%(2.6*attack_haste)*((talent.demonsurge.enabled&buff.metamorphosis.up)*3+12))+buff.immolation_aura.stack*6+buff.tactical_retreat.up*10' to 'talent.demon_blades.enabled*(1/(2.6*attack_haste)*((talent.demonsurge.enabled&buff.metamorphosis.up)*3+12))+buff.immolation_aura.stack*6+buff.tactical_retreat.up*10'.\nLine 4: Converted 'trinket.1.is.house_of_cards' to 'trinket.t1.is.house_of_cards' (1x).\nLine 4: Converted 'trinket.1.is.signet_of_the_priory' to 'trinket.t1.is.signet_of_the_priory' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.2.is.house_of_cards' to 'trinket.t2.is.house_of_cards' (1x).\nLine 4: Converted 'trinket.2.is.signet_of_the_priory' to 'trinket.t2.is.signet_of_the_priory' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\n\nThe import for 'ar_cooldown' required some automated changes.\nLine 5: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 5: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 5: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.2.is.skardyns_grace' to 'trinket.t2.is.skardyns_grace' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.1.is.skardyns_grace' to 'trinket.t1.is.skardyns_grace' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 13: Converted 'trinket.1.is.ravenous_honey_buzzer' to 'trinket.t1.is.ravenous_honey_buzzer' (1x).\nLine 13: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 13: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 13: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 13: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 13: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 13: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (1x).\nLine 13: Converted 'trinket.2.is.ravenous_honey_buzzer' to 'trinket.t2.is.ravenous_honey_buzzer' (1x).\nLine 13: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 13: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 13: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 13: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 13: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 13: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 14: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 14: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.is.mister_locknstalk' to 'trinket.t1.is.mister_locknstalk' (1x).\nLine 14: Converted 'trinket.1.is.skardyns_grace' to 'trinket.t1.is.skardyns_grace' (1x).\nLine 14: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 14: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 14: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 15: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 15: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 15: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 15: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (1x).\nLine 15: Converted 'trinket.2.is.mister_locknstalk' to 'trinket.t2.is.mister_locknstalk' (1x).\nLine 15: Converted 'trinket.2.is.skardyns_grace' to 'trinket.t2.is.skardyns_grace' (1x).\nLine 15: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 15: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 15: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nThe following auras were used in the action list but were not found in the addon database:\n - any\n\nThe import for 'fs_meta' required some automated changes.\nLine 18: Converted operations in '(buff.out_of_range.down||fury.deficit>40+variable.fury_gen*(0.5%gcd.max))&!buff.inertia_trigger.up' to '(buff.out_of_range.down||fury.deficit>40+variable.fury_gen*(0.5/gcd.max))&!buff.inertia_trigger.up'.\n\nThe import for 'ar' required some automated changes.\nLine 14: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 14: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 14: Converted 'trinket.t2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 14: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 23: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 23: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 23: Converted 'trinket.t2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 23: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\n\nImported 11 action lists.\n", ["lists"] = { ["fs_cooldown"] = { { ["enabled"] = true, ["criteria"] = "( ( cooldown.eye_beam.remains >= 20 & ( ! talent.essence_break.enabled || debuff.essence_break.up ) & buff.fel_barrage.down & ( raid_event.adds.in > 40 || ( raid_event.adds.remains > 8 || ! talent.fel_barrage.enabled ) & active_enemies > 2 ) || ! talent.chaotic_transformation.enabled || boss & fight_remains < 30 ) & buff.inner_demon.down & ( ! talent.restless_hunter.enabled & cooldown.blade_dance.remains > gcd.max * 3 || prev_gcd.1.death_sweep ) ) & ! talent.inertia.enabled & ! talent.essence_break.enabled & ( hero_tree.aldrachi_reaver || buff.demonsurge_death_sweep.down ) & ( variable.opened || time > 15 )", ["action"] = "metamorphosis", }, { ["enabled"] = true, ["criteria"] = "( cooldown.blade_dance.remains & ( buff.metamorphosis.up & cooldown.eye_beam.remains & ( ! talent.essence_break.enabled || debuff.essence_break.up || talent.shattered_destiny.enabled || hero_tree.felscarred ) & buff.fel_barrage.down & ( raid_event.adds.in > 40 || ( raid_event.adds.remains > 8 || ! talent.fel_barrage.enabled ) & active_enemies > 2 ) || ! talent.chaotic_transformation.enabled || boss & fight_remains < 30 ) & ( buff.inner_demon.down & ( ! talent.restless_hunter.enabled || prev_gcd.1.death_sweep ) ) ) & ( talent.inertia.enabled || talent.essence_break.enabled ) & ( hero_tree.aldrachi_reaver || ( buff.demonsurge_death_sweep.down & buff.metamorphosis.up || buff.metamorphosis.remains < gcd.max ) & ( buff.demonsurge_annihilation.down ) ) & ( variable.opened || time > 15 )", ["action"] = "metamorphosis", }, { ["enabled"] = true, ["criteria"] = "boss & fight_remains < 35 || buff.metamorphosis.up || debuff.essence_break.up", ["action"] = "potion", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "equipped.mad_queens_mandate || equipped.treacherous_transmitter || equipped.skardyns_grace || equipped.signet_of_the_priory || equipped.junkmaestros_mega_magnet || equipped.geargrinders_spare_keys || equipped.mister_locknstalk || equipped.ravenous_honey_buzzer", ["var_name"] = "special_trinket", }, { ["enabled"] = true, ["action"] = "mad_queens_mandate", ["criteria"] = "( ( ! talent.initiative.enabled || buff.initiative.up || time > 5 ) & ( buff.metamorphosis.remains > 5 || buff.metamorphosis.down ) & ( trinket.t1.is.mad_queens_mandate & ( trinket.t2.cooldown.duration < 10 || trinket.t2.cooldown.remains > 10 || ! trinket.t2.has_use_buff ) || trinket.t2.is.mad_queens_mandate & ( trinket.t1.cooldown.duration < 10 || trinket.t1.cooldown.remains > 10 || ! trinket.t1.has_use_buff ) ) & fight_remains > 120 || boss & fight_remains < 10 & fight_remains < buff.metamorphosis.remains ) & debuff.essence_break.down || fight_remains < 5", ["name"] = "mad_queens_mandate", }, { ["enabled"] = true, ["action"] = "treacherous_transmitter", ["criteria"] = "! equipped.mad_queens_mandate || equipped.mad_queens_mandate & ( trinket.t1.is.mad_queens_mandate & trinket.t1.cooldown.remains > fight_remains || trinket.t2.is.mad_queens_mandate & trinket.t2.cooldown.remains > fight_remains ) || fight_remains > 25", ["name"] = "treacherous_transmitter", }, { ["enabled"] = true, ["action"] = "skardyns_grace", ["criteria"] = "( ! equipped.mad_queens_mandate || fight_remains > 25 || trinket.t2.is.skardyns_grace & trinket.t1.cooldown.remains > fight_remains || trinket.t1.is.skardyns_grace & trinket.t2.cooldown.remains > fight_remains || trinket.t1.cooldown.duration < 10 || trinket.t2.cooldown.duration < 10 ) & buff.metamorphosis.up", ["name"] = "skardyns_grace", }, { ["enabled"] = true, ["action"] = "signet_of_the_priory", ["criteria"] = "time < 20 & ( ! talent.inertia.enabled || buff.inertia.up ) || ( buff.metamorphosis.up & cooldown.essence_break.up || boss & fight_remains < 20 ) & time > 20", ["name"] = "signet_of_the_priory", }, { ["enabled"] = true, ["action"] = "junkmaestros_mega_magnet", ["criteria"] = "buff.initiative.up", ["name"] = "junkmaestros_mega_magnet", }, { ["enabled"] = true, ["action"] = "geargrinders_spare_keys", ["criteria"] = "buff.initiative.up", ["name"] = "geargrinders_spare_keys", }, { ["enabled"] = true, ["action"] = "trinket1", ["criteria"] = "( ( cooldown.eye_beam.remains < gcd.max & active_enemies > 1 || buff.metamorphosis.up ) & ( raid_event.adds.in > trinket.t1.cooldown.duration - 15 || raid_event.adds.remains > 8 ) || ! trinket.t1.has_use_buff || boss & fight_remains < 25 ) & ! trinket.t1.is.skardyns_grace & ! trinket.t1.is.mad_queens_mandate & ! trinket.t1.is.treacherous_transmitter & ( ! variable.special_trinket || trinket.t2.cooldown.remains > 20 )", ["slot"] = "trinket1", }, { ["enabled"] = true, ["action"] = "trinket2", ["criteria"] = "( ( cooldown.eye_beam.remains < gcd.max & active_enemies > 1 || buff.metamorphosis.up ) & ( raid_event.adds.in > trinket.t2.cooldown.duration - 15 || raid_event.adds.remains > 8 ) || ! trinket.t2.has_use_buff || boss & fight_remains < 25 ) & ! trinket.t2.is.skardyns_grace & ! trinket.t2.is.mad_queens_mandate & ! trinket.t2.is.treacherous_transmitter & ( ! variable.special_trinket || trinket.t1.cooldown.remains > 20 )", ["slot"] = "trinket2", }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.down & ( active_dot.reavers_mark > 0 || debuff.reavers_mark.up || ! talent.reavers_mark.enabled ) & buff.reavers_glaive.down & ( buff.metamorphosis.remains > 5 || buff.metamorphosis.down ) & ( ! talent.initiative.enabled || buff.initiative.up || time > 5 ) & time > 5 & ( ! talent.inertia.enabled & buff.unbound_chaos.down || buff.inertia_trigger.down ) & ( hero_tree.aldrachi_reaver || buff.metamorphosis.down ) || boss & fight_remains <= 30", ["action"] = "the_hunt", }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.down & cooldown.blade_dance.remains & ( variable.opened || time > 15 )", ["action"] = "sigil_of_spite", }, }, ["fs"] = { { ["enabled"] = true, ["description"] = "Fel-Scarred", ["action"] = "call_action_list", ["list_name"] = "fs_cooldown", }, { ["enabled"] = true, ["criteria"] = "time < 15 & toggle.cooldowns & ( cooldown.eye_beam.up || cooldown.metamorphosis.up || talent.essence_break.enabled & cooldown.essence_break.up || buff.demonsurge.stack < 3 + talent.student_of_suffering.enabled + talent.a_fire_inside.enabled )", ["action"] = "call_action_list", ["list_name"] = "fs_opener", }, { ["enabled"] = true, ["criteria"] = "talent.unbound_chaos.enabled & buff.unbound_chaos.up & ! talent.inertia.enabled & active_enemies <= 2 & ( talent.student_of_suffering.enabled & cooldown.eye_beam.remains - gcd.max * 2 <= buff.unbound_chaos.remains || hero_tree.aldrachi_reaver )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "talent.unbound_chaos.enabled & buff.unbound_chaos.up & ! talent.inertia.enabled & active_enemies > 3 & ( talent.student_of_suffering.enabled & cooldown.eye_beam.remains - gcd.max * 2 <= buff.unbound_chaos.remains )", ["action"] = "fel_rush", }, { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.up", ["action"] = "run_action_list", ["list_name"] = "fs_meta", }, { ["enabled"] = true, ["action"] = "vengeful_retreat", ["criteria"] = "talent.initiative.enabled & ( cooldown.eye_beam.remains > 15 & gcd.remains < 0.3 || gcd.remains < 0.2 & cooldown.eye_beam.remains <= gcd.remains & ( cooldown.metamorphosis.remains > 10 || cooldown.blade_dance.remains < gcd.max * 3 ) ) & ( ! talent.student_of_suffering.enabled || cooldown.sigil_of_flame.remains ) & ( cooldown.essence_break.remains <= gcd.max * 2 & talent.student_of_suffering.enabled & cooldown.sigil_of_flame.remains || cooldown.essence_break.remains >= 18 || ! talent.student_of_suffering.enabled ) & ( cooldown.metamorphosis.remains > 10 || hero_tree.aldrachi_reaver ) & time > 20", ["use_off_gcd"] = 1, }, { ["enabled"] = true, ["criteria"] = "talent.student_of_suffering.enabled & cooldown.eye_beam.remains <= gcd.max & ( cooldown.essence_break.remains < gcd.max * 3 ) & ( cooldown.metamorphosis.remains > 10 || cooldown.blade_dance.remains < gcd.max * 2 )", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["criteria"] = "( ! talent.initiative.enabled || buff.initiative.up || cooldown.vengeful_retreat.remains >= 10 || cooldown.metamorphosis.up ) & ( cooldown.blade_dance.remains < 7 || raid_event.adds.up ) || boss & fight_remains < 10", ["action"] = "eye_beam", }, { ["enabled"] = true, ["criteria"] = "cooldown.eye_beam.remains >= gcd.max * 4 || debuff.essence_break.up", ["action"] = "blade_dance", }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.up", ["action"] = "chaos_strike", }, { ["enabled"] = true, ["criteria"] = "talent.a_fire_inside.enabled & talent.isolated_prey.enabled & talent.flamebound.enabled & active_enemies = 1 & cooldown.eye_beam.remains >= gcd.max", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "fury.deficit > 40 + variable.fury_gen * ( 0.5 / gcd.max ) & ( cooldown.vengeful_retreat.remains >= action.felblade.cooldown + 0.5 & talent.inertia.enabled & active_enemies = 1 || ! talent.inertia.enabled || hero_tree.aldrachi_reaver || cooldown.essence_break.remains ) & cooldown.metamorphosis.remains & cooldown.eye_beam.remains >= 0.5 + gcd.max * ( talent.student_of_suffering.enabled & cooldown.sigil_of_flame.remains <= gcd.max )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "cooldown.eye_beam.remains >= gcd.max * 4 || ( fury >= 70 - 30 * ( talent.student_of_suffering.enabled & ( cooldown.sigil_of_flame.remains <= gcd.max || cooldown.sigil_of_flame.up ) ) - buff.chaos_theory.up * 20 - variable.fury_gen )", ["action"] = "chaos_strike", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > full_recharge_time & cooldown.eye_beam.remains >= gcd.max * ( 1 + talent.student_of_suffering.enabled & ( cooldown.sigil_of_flame.remains <= gcd.max || cooldown.sigil_of_flame.up ) ) || active_enemies > desired_targets & active_enemies > 2", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "buff.out_of_range.down & buff.inertia_trigger.down & cooldown.eye_beam.remains >= gcd.max * ( 1 + talent.student_of_suffering.enabled & ( cooldown.sigil_of_flame.remains <= gcd.max || cooldown.sigil_of_flame.up ) )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "buff.out_of_range.down & debuff.essence_break.down & ! talent.student_of_suffering.enabled & ( ! talent.fel_barrage.enabled || cooldown.fel_barrage.remains > 25 || ( active_enemies = 1 & ! raid_event.adds.exists ) )", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["criteria"] = "recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1", ["action"] = "throw_glaive", }, { ["enabled"] = true, ["criteria"] = "buff.unbound_chaos.down & recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & active_enemies > 1", ["action"] = "fel_rush", }, { ["enabled"] = true, ["criteria"] = "buff.out_of_range.down & debuff.essence_break.down & fury < 100", ["action"] = "arcane_torrent", }, }, ["ar_cooldown"] = { { ["enabled"] = true, ["criteria"] = "( ( ( cooldown.eye_beam.remains >= 20 || talent.cycle_of_hatred.enabled & cooldown.eye_beam.remains >= 13 ) & ( ! talent.essence_break.enabled || debuff.essence_break.up ) & buff.fel_barrage.down & ( raid_event.adds.in > 40 || ( raid_event.adds.remains > 8 || ! talent.fel_barrage.enabled ) & active_enemies > 2 ) || ! talent.chaotic_transformation.enabled || boss & fight_remains < 30 ) & buff.inner_demon.down & ( ! talent.restless_hunter.enabled & cooldown.blade_dance.remains > gcd.max * 3 || prev_gcd.1.death_sweep ) ) & ! talent.inertia.enabled & ! talent.essence_break.enabled & ( variable.opened || time > 15 )", ["action"] = "metamorphosis", }, { ["enabled"] = true, ["criteria"] = "( cooldown.blade_dance.remains & ( ( prev_gcd.1.death_sweep || prev_gcd.2.death_sweep || prev_gcd.3.death_sweep || buff.metamorphosis.up & buff.metamorphosis.remains < gcd.max ) & cooldown.eye_beam.remains & ( ! talent.essence_break.enabled || debuff.essence_break.up || talent.shattered_destiny.enabled ) & buff.fel_barrage.down & ( raid_event.adds.in > 40 || ( raid_event.adds.remains > 8 || ! talent.fel_barrage.enabled ) & active_enemies > 2 ) || ! talent.chaotic_transformation.enabled || boss & fight_remains < 30 ) & ( buff.inner_demon.down & ( buff.rending_strike.down || ! talent.restless_hunter.enabled || prev_gcd.1.death_sweep ) ) ) & ( talent.inertia.enabled || talent.essence_break.enabled ) & ( variable.opened || time > 15 )", ["action"] = "metamorphosis", }, { ["enabled"] = true, ["criteria"] = "boss & fight_remains < 35 || ( buff.metamorphosis.up || debuff.essence_break.up ) & time > 10", ["action"] = "potion", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "equipped.mad_queens_mandate || equipped.treacherous_transmitter || equipped.skardyns_grace || equipped.signet_of_the_priory || equipped.junkmaestros_mega_magnet || equipped.geargrinders_spare_keys || equipped.mister_locknstalk || equipped.ravenous_honey_buzzer || equipped.grim_codex", ["var_name"] = "special_trinket", }, { ["enabled"] = true, ["action"] = "mad_queens_mandate", ["criteria"] = "( ( ! talent.initiative.enabled || buff.initiative.up || time > 5 ) & ( buff.metamorphosis.remains > 5 || buff.metamorphosis.down ) & ( trinket.t1.is.mad_queens_mandate & ( trinket.t2.cooldown.duration < 10 || trinket.t2.cooldown.remains > 10 || ! trinket.t2.has_use_buff ) || trinket.t2.is.mad_queens_mandate & ( trinket.t1.cooldown.duration < 10 || trinket.t1.cooldown.remains > 10 || ! trinket.t1.has_use_buff ) ) & fight_remains > 120 || boss & fight_remains < 10 & fight_remains < buff.metamorphosis.remains ) & debuff.essence_break.down || fight_remains < 5", ["name"] = "mad_queens_mandate", }, { ["enabled"] = true, ["action"] = "treacherous_transmitter", ["criteria"] = "! equipped.mad_queens_mandate || equipped.mad_queens_mandate & ( trinket.t1.is.mad_queens_mandate & trinket.t1.cooldown.remains > fight_remains || trinket.t2.is.mad_queens_mandate & trinket.t2.cooldown.remains > fight_remains ) || fight_remains > 25", ["name"] = "treacherous_transmitter", }, { ["enabled"] = true, ["action"] = "skardyns_grace", ["criteria"] = "( ! equipped.mad_queens_mandate || fight_remains > 25 || trinket.t2.is.skardyns_grace & trinket.t1.cooldown.remains > fight_remains || trinket.t1.is.skardyns_grace & trinket.t2.cooldown.remains > fight_remains || trinket.t1.cooldown.duration < 10 || trinket.t2.cooldown.duration < 10 ) & buff.metamorphosis.up", ["name"] = "skardyns_grace", }, { ["enabled"] = true, ["action"] = "house_of_cards", ["criteria"] = "( cooldown.eye_beam.up || buff.metamorphosis.up ) || boss & fight_remains < 20", ["name"] = "house_of_cards", }, { ["enabled"] = true, ["action"] = "signet_of_the_priory", ["criteria"] = "time < 20 & ( ! talent.inertia.enabled || buff.inertia.up ) || buff.metamorphosis.up & time > 20 || boss & fight_remains < 20", ["name"] = "signet_of_the_priory", }, { ["enabled"] = true, ["action"] = "junkmaestros_mega_magnet", ["criteria"] = "variable.tier33_4piece & variable.double_on_use || fight_remains < 20", ["name"] = "junkmaestros_mega_magnet", }, { ["enabled"] = true, ["action"] = "geargrinders_spare_keys", ["criteria"] = "variable.tier33_4piece & variable.double_on_use || fight_remains < 20", ["name"] = "geargrinders_spare_keys", }, { ["enabled"] = true, ["action"] = "grim_codex", ["criteria"] = "variable.tier33_4piece & variable.double_on_use || boss & fight_remains < 10", ["name"] = "grim_codex", }, { ["enabled"] = true, ["action"] = "ravenous_honey_buzzer", ["criteria"] = "( variable.tier33_4piece & ( buff.inertia.down & ( cooldown.essence_break.remains & debuff.essence_break.down || ! talent.essence_break.enabled ) ) & ( trinket.t1.is.ravenous_honey_buzzer & ( trinket.t2.cooldown.duration < 10 || trinket.t2.cooldown.remains > 10 || ! trinket.t2.has_use_buff ) || trinket.t2.is.ravenous_honey_buzzer & ( trinket.t1.cooldown.duration < 10 || trinket.t1.cooldown.remains > 10 || ! trinket.t1.has_use_buff ) ) & fight_remains > 120 || boss & fight_remains < 10 & fight_remains < buff.metamorphosis.remains ) || fight_remains < 5", ["name"] = "ravenous_honey_buzzer", }, { ["enabled"] = true, ["action"] = "trinket1", ["criteria"] = "( ( cooldown.eye_beam.remains < gcd.max & active_enemies > 1 || buff.metamorphosis.up ) & ( raid_event.adds.in > trinket.t1.cooldown.duration - 15 || raid_event.adds.remains > 8 ) || ! trinket.t1.has_use_buff || boss & fight_remains < 25 ) & ! trinket.t1.is.mister_locknstalk & ! variable.trinket1_crit & ! trinket.t1.is.skardyns_grace & ! trinket.t1.is.treacherous_transmitter & ( ! variable.special_trinket || trinket.t2.cooldown.remains > 20 )", ["slot"] = "trinket1", }, { ["enabled"] = true, ["action"] = "trinket2", ["criteria"] = "( ( cooldown.eye_beam.remains < gcd.max & active_enemies > 1 || buff.metamorphosis.up ) & ( raid_event.adds.in > trinket.t2.cooldown.duration - 15 || raid_event.adds.remains > 8 ) || ! trinket.t2.has_use_buff || boss & fight_remains < 25 ) & ! trinket.t2.is.mister_locknstalk & ! variable.trinket2_crit & ! trinket.t2.is.skardyns_grace & ! trinket.t2.is.treacherous_transmitter & ( ! variable.special_trinket || trinket.t1.cooldown.remains > 20 )", ["slot"] = "trinket2", }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.down & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > 90 ) & ( ! talent.reavers_mark.enabled || debuff.reavers_mark.up ) & buff.reavers_glaive.down & ( buff.metamorphosis.remains > 5 || buff.metamorphosis.down ) & ( ! talent.initiative.enabled || buff.initiative.up || time > 5 ) & time > 5 & ( ! talent.inertia.enabled & buff.unbound_chaos.down || buff.inertia_trigger.down )", ["action"] = "the_hunt", }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.down & ( ! talent.reavers_mark.enabled || active_dot.reavers_mark > 0 || debuff.reavers_mark.remains >= 2 - talent.quickened_sigils.enabled ) & cooldown.blade_dance.remains & time > 15", ["action"] = "sigil_of_spite", }, }, ["ar_fel_barrage"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "cooldown.felblade.remains < gcd.max || cooldown.sigil_of_flame.remains < gcd.max", ["var_name"] = "generator_up", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "gcd.max * 32", ["var_name"] = "gcd_drain", }, { ["enabled"] = true, ["criteria"] = "buff.inner_demon.up", ["action"] = "annihilation", }, { ["enabled"] = true, ["criteria"] = "buff.fel_barrage.down & ( active_enemies > 1 & raid_event.adds.up || raid_event.adds.in > 40 )", ["action"] = "eye_beam", }, { ["enabled"] = true, ["criteria"] = "buff.fel_barrage.down & buff.metamorphosis.up", ["action"] = "essence_break", }, { ["enabled"] = true, ["criteria"] = "buff.fel_barrage.down", ["action"] = "death_sweep", }, { ["enabled"] = true, ["criteria"] = "( active_enemies > 2 || buff.fel_barrage.up ) & ( cooldown.eye_beam.remains > recharge_time + 3 )", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "buff.fel_barrage.down & active_enemies > 1", ["action"] = "glaive_tempest", }, { ["enabled"] = true, ["criteria"] = "buff.fel_barrage.down", ["action"] = "blade_dance", }, { ["enabled"] = true, ["criteria"] = "fury > 100 & ( raid_event.adds.in > 90 || raid_event.adds.in < gcd.max || raid_event.adds.remains > 4 & active_enemies > 2 )", ["action"] = "fel_barrage", }, { ["enabled"] = true, ["criteria"] = "buff.inertia_trigger.up & buff.fel_barrage.up", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "fury.deficit > 40 & buff.fel_barrage.up", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["criteria"] = "buff.fel_barrage.up & fury.deficit > 40", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "fury - variable.gcd_drain - 35 > 0 & ( buff.fel_barrage.remains < 3 || variable.generator_up || fury > 80 || variable.fury_gen > 18 )", ["action"] = "death_sweep", }, { ["enabled"] = true, ["criteria"] = "fury - variable.gcd_drain - 30 > 0 & ( buff.fel_barrage.remains < 3 || variable.generator_up || fury > 80 || variable.fury_gen > 18 )", ["action"] = "glaive_tempest", }, { ["enabled"] = true, ["criteria"] = "fury - variable.gcd_drain - 35 > 0 & ( buff.fel_barrage.remains < 3 || variable.generator_up || fury > 80 || variable.fury_gen > 18 )", ["action"] = "blade_dance", }, { ["enabled"] = true, ["criteria"] = "fury.deficit > 40 & buff.fel_barrage.up", ["action"] = "arcane_torrent", }, { ["enabled"] = true, ["criteria"] = "fury > 40 & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > 80 )", ["action"] = "the_hunt", }, { ["enabled"] = true, ["criteria"] = "fury - variable.gcd_drain - 40 > 20 & ( buff.fel_barrage.remains < 3 || variable.generator_up || fury > 80 || variable.fury_gen > 18 )", ["action"] = "annihilation", }, { ["enabled"] = true, ["criteria"] = "fury - variable.gcd_drain - 40 > 20 & ( cooldown.fel_barrage.remains & cooldown.fel_barrage.remains < 10 & fury > 100 || buff.fel_barrage.up & ( buff.fel_barrage.remains * variable.fury_gen - buff.fel_barrage.remains * 32 ) > 0 )", ["action"] = "chaos_strike", }, { ["action"] = "demons_bite", ["enabled"] = true, }, }, ["ar_meta"] = { { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.remains < gcd.max || debuff.essence_break.up", ["action"] = "death_sweep", }, { ["enabled"] = true, ["action"] = "vengeful_retreat", ["criteria"] = "talent.initiative.enabled & ( variable.opened || time > 15 || cooldown.death_sweep.remains ) & ( cooldown.metamorphosis.remains & ( ! talent.essence_break.enabled || cooldown.essence_break.remains <= 0.6 || cooldown.essence_break.remains > 10 ) || cooldown.metamorphosis.up & talent.essence_break.enabled & cooldown.essence_break.remains <= 0.6 & buff.inner_demon.down & cooldown.blade_dance.remains <= gcd.max + 0.5 || talent.restless_hunter.enabled ) & cooldown.eye_beam.remains & ( ! talent.inertia.enabled & buff.unbound_chaos.down || buff.inertia_trigger.down )", ["use_off_gcd"] = 1, }, { ["enabled"] = true, ["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & cooldown.essence_break.remains <= 1 & cooldown.blade_dance.remains <= gcd.max * 2 & cooldown.metamorphosis.remains <= gcd.max * 3", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "fury >= 30 & talent.restless_hunter.enabled & cooldown.metamorphosis.up & ( talent.inertia.enabled & buff.inertia.up || ! talent.inertia.enabled ) & cooldown.blade_dance.remains <= gcd.max", ["action"] = "essence_break", }, { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.remains < gcd.max || debuff.essence_break.remains & debuff.essence_break.remains < 0.5 & cooldown.blade_dance.remains || buff.inner_demon.up & cooldown.essence_break.up & cooldown.metamorphosis.up", ["action"] = "annihilation", }, { ["enabled"] = true, ["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & cooldown.metamorphosis.remains & ( cooldown.eye_beam.remains <= 0.5 || cooldown.essence_break.remains <= 0.5 || cooldown.blade_dance.remains <= 5.5 || buff.initiative.remains < gcd.remains )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & ( ( cooldown.metamorphosis.remains & active_enemies > 2 ) || ( cooldown.blade_dance.remains < gcd.max * 3 & cooldown.metamorphosis.remains & active_enemies > 2 ) )", ["action"] = "fel_rush", }, { ["enabled"] = true, ["criteria"] = "charges = 2 & active_enemies > 1 & debuff.essence_break.down", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "buff.inner_demon.up & ( cooldown.eye_beam.remains < gcd.max * 3 & cooldown.blade_dance.remains || cooldown.metamorphosis.remains < gcd.max * 3 )", ["action"] = "annihilation", }, { ["enabled"] = true, ["criteria"] = "time < 20 & buff.thrill_of_the_fight_damage.remains > gcd.max * 4 & buff.metamorphosis.remains >= gcd.max * 2 & cooldown.metamorphosis.up & cooldown.death_sweep.remains <= gcd.max & buff.inertia.up", ["action"] = "essence_break", }, { ["enabled"] = true, ["criteria"] = "fury > 20 & ( cooldown.blade_dance.remains < gcd.max * 3 || cooldown.blade_dance.up ) & ( buff.unbound_chaos.down & ! talent.inertia.enabled || buff.inertia.up ) & buff.out_of_range.remains < gcd.max & ( ! talent.shattered_destiny.enabled || cooldown.eye_beam.remains > 4 ) || boss & fight_remains < 10", ["action"] = "essence_break", }, { ["action"] = "death_sweep", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.down & buff.inner_demon.down", ["action"] = "eye_beam", }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.down & ( cooldown.blade_dance.remains > gcd.max * 2 || fury > 60 ) & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > 10 )", ["action"] = "glaive_tempest", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 2 & debuff.essence_break.down", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["criteria"] = "talent.soulscar.enabled & talent.furious_throws.enabled & active_enemies > 1 & debuff.essence_break.down & ( charges = 2 || full_recharge_time < cooldown.blade_dance.remains )", ["action"] = "throw_glaive", }, { ["enabled"] = true, ["criteria"] = "cooldown.blade_dance.remains || fury > 60 || buff.metamorphosis.remains < 5 & cooldown.felblade.up", ["action"] = "annihilation", }, { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.remains > 5 & buff.out_of_range.down", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["criteria"] = "fury.deficit > 40 & ! buff.inertia_trigger.up", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.down & buff.out_of_range.down", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["criteria"] = "buff.out_of_range.down & recharge_time < ( cooldown.eye_beam.remains = desired_targets + raid_event.adds.count || raid_event.adds.in > full_recharge_time )", ["action"] = "immolation_aura", }, { ["action"] = "annihilation", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1", ["action"] = "fel_rush", }, { ["action"] = "demons_bite", ["enabled"] = true, }, }, ["default"] = { { ["action"] = "disrupt", ["enabled"] = true, }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "talent.demon_blades.enabled * ( 1 / ( 2.6 * attack_haste ) * ( ( talent.demonsurge.enabled & buff.metamorphosis.up ) * 3 + 12 ) ) + buff.immolation_aura.stack * 6 + buff.tactical_retreat.up * 10", ["description"] = "Fury generated per second", ["var_name"] = "fury_gen", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( buff.initiative.up || ! talent.initiative.enabled ) & ( buff.necessary_sacrifice.up || ! set_bonus.thewarwithin_season_2_4pc )", ["description"] = "Tier 33 tier set check for trinket lineups withs Necessary Sacrifice", ["var_name"] = "tier33_4piece", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "! equipped.signet_of_the_priory & ! equipped.house_of_cards || ( trinket.t1.is.house_of_cards || trinket.t1.is.signet_of_the_priory ) & trinket.t1.cooldown.remains > 20 || ( trinket.t2.is.house_of_cards || trinket.t2.is.signet_of_the_priory ) & trinket.t2.cooldown.remains > 20", ["description"] = "Double on use trinket holding for using a stat cooldown trinket and an on use damage trinket", ["var_name"] = "double_on_use", }, { ["enabled"] = true, ["action"] = "run_action_list", ["description"] = "Separate actionlists for each hero tree", ["strict"] = 1, ["criteria"] = "hero_tree.aldrachi_reaver", ["list_name"] = "ar", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "! hero_tree.aldrachi_reaver", ["list_name"] = "fs", }, }, ["precombat"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.improvised_seaforium_pacemaker", ["var_name"] = "trinket1_steroids", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.improvised_seaforium_pacemaker", ["var_name"] = "trinket2_steroids", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.mad_queens_mandate || trinket.t1.is.junkmaestros_mega_magnet || trinket.t1.is.geargrinders_spare_keys || trinket.t1.is.ravenous_honey_buzzer || trinket.t1.is.grim_codex", ["description"] = "Blacklist for trinkets to hold trinket cooldowns for Initiative and Necessary Strike line-up outside standard trinket implementation", ["var_name"] = "trinket1_crit", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.mad_queens_mandate || trinket.t2.is.junkmaestros_mega_magnet || trinket.t2.is.geargrinders_spare_keys || trinket.t2.is.ravenous_honey_buzzer || trinket.t2.is.grim_codex", ["var_name"] = "trinket2_crit", }, { ["enabled"] = true, ["op"] = "reset", ["action"] = "variable", ["var_name"] = "rg_ds", ["default"] = "0", }, { ["action"] = "sigil_of_flame", ["enabled"] = true, }, { ["action"] = "immolation_aura", ["enabled"] = true, }, }, ["ar_opener"] = { { ["action"] = "potion", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.reavers_glaive.down & buff.glaive_flurry.down & buff.rending_strike.down", ["action"] = "the_hunt", }, { ["enabled"] = true, ["action"] = "vengeful_retreat", ["criteria"] = "talent.initiative.enabled & time > 4 & buff.metamorphosis.up & ( ! talent.inertia.enabled || buff.inertia_trigger.down ) & buff.inner_demon.down & cooldown.blade_dance.remains & gcd.remains < 0.1", ["use_off_gcd"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.rending_strike.up & buff.thrill_of_the_fight_damage.down", ["action"] = "annihilation", }, { ["enabled"] = true, ["criteria"] = "! talent.inertia.enabled & talent.unbound_chaos.enabled & buff.unbound_chaos.up & buff.initiative.up & debuff.essence_break.down & active_enemies <= 2", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "! talent.inertia.enabled & talent.unbound_chaos.enabled & buff.unbound_chaos.up & buff.initiative.up & debuff.essence_break.down & active_enemies > 2", ["action"] = "fel_rush", }, { ["enabled"] = true, ["criteria"] = "talent.inner_demon.enabled & buff.inner_demon.up & cooldown.essence_break.up", ["action"] = "annihilation", }, { ["enabled"] = true, ["criteria"] = "( buff.inertia.up || ! talent.inertia.enabled ) & buff.metamorphosis.up & cooldown.blade_dance.remains <= gcd.max & ( ! talent.reavers_mark.enabled || active_dot.reavers_mark > 0 || debuff.reavers_mark.remains >= 2 - talent.quickened_sigils.enabled )", ["action"] = "essence_break", }, { ["enabled"] = true, ["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & talent.restless_hunter.enabled & cooldown.essence_break.up & cooldown.metamorphosis.up & buff.metamorphosis.up & cooldown.blade_dance.remains <= gcd.max", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & ( buff.inertia.down & buff.metamorphosis.up ) & debuff.essence_break.down & active_enemies <= 2", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & ( buff.inertia.down & buff.metamorphosis.up ) & debuff.essence_break.down & ( cooldown.felblade.remains || active_enemies > 2 )", ["action"] = "fel_rush", }, { ["enabled"] = true, ["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & buff.metamorphosis.up & cooldown.metamorphosis.remains & debuff.essence_break.down", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "( buff.metamorphosis.up & hero_tree.aldrachi_reaver & talent.shattered_destiny.enabled || ! talent.shattered_destiny.enabled & hero_tree.aldrachi_reaver || hero_tree.felscarred ) & ( ! talent.initiative.enabled || talent.inertia.enabled || buff.initiative.up || time > 5 )", ["action"] = "the_hunt", }, { ["enabled"] = true, ["criteria"] = "fury < 40 & buff.inertia_trigger.down & debuff.essence_break.down", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "debuff.reavers_mark.down & debuff.essence_break.down", ["action"] = "reavers_glaive", }, { ["enabled"] = true, ["criteria"] = "buff.rending_strike.up & active_enemies > 2", ["action"] = "chaos_strike", }, { ["enabled"] = true, ["criteria"] = "buff.glaive_flurry.up & active_enemies > 2", ["action"] = "blade_dance", }, { ["enabled"] = true, ["criteria"] = "talent.a_fire_inside.enabled & talent.burning_wound.enabled & buff.metamorphosis.down", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.up & cooldown.blade_dance.remains > gcd.max * 2 & buff.inner_demon.down & ( ! talent.restless_hunter.enabled || prev_gcd.1.death_sweep ) & ( cooldown.essence_break.remains || ! talent.essence_break.enabled )", ["action"] = "metamorphosis", }, { ["enabled"] = true, ["criteria"] = "( ! talent.reavers_mark.enabled || active_dot.reavers_mark > 0 || debuff.reavers_mark.up ) & ( cooldown.eye_beam.remains & cooldown.metamorphosis.remains )", ["action"] = "sigil_of_spite", }, { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.down || debuff.essence_break.down & buff.inner_demon.down & ( cooldown.blade_dance.remains || talent.essence_break.enabled & cooldown.essence_break.up )", ["action"] = "eye_beam", }, { ["enabled"] = true, ["criteria"] = "cooldown.blade_dance.remains < gcd.max & ! hero_tree.felscarred & ! talent.shattered_destiny.enabled & buff.metamorphosis.up || cooldown.eye_beam.remains & cooldown.metamorphosis.remains", ["action"] = "essence_break", }, { ["action"] = "death_sweep", ["enabled"] = true, }, { ["action"] = "annihilation", ["enabled"] = true, }, { ["action"] = "demons_bite", ["enabled"] = true, }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "true", ["var_name"] = "opened", }, }, ["ar"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "false", ["description"] = "Use to determine if we traversed either of the opener lists.", ["var_name"] = "opened", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "buff.rending_strike.down & buff.glaive_flurry.up & cooldown.blade_dance.up & gcd.remains = 0 || variable.rg_inc & prev_gcd.1.death_sweep", ["description"] = "Aldrachi Reaver", ["var_name"] = "rg_inc", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "talent.fel_barrage.enabled & ( cooldown.fel_barrage.remains < gcd.max * 7 & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in < gcd.max * 7 || raid_event.adds.in > 90 ) & ( cooldown.metamorphosis.remains || active_enemies > 2 ) || buff.fel_barrage.up ) & ! ( active_enemies = 1 & ! raid_event.adds.exists )", ["var_name"] = "fel_barrage", }, { ["enabled"] = true, ["criteria"] = "buff.rending_strike.up & buff.glaive_flurry.up & ( variable.rg_ds = 2 || active_enemies > 2 ) & time > 10", ["action"] = "chaos_strike", }, { ["enabled"] = true, ["criteria"] = "buff.rending_strike.up & buff.glaive_flurry.up & ( variable.rg_ds = 2 || active_enemies > 2 )", ["action"] = "annihilation", }, { ["enabled"] = true, ["criteria"] = "buff.glaive_flurry.down & buff.rending_strike.down & buff.thrill_of_the_fight_damage.remains < gcd.max * 4 + ( variable.rg_ds = 2 ) + ( cooldown.the_hunt.remains < gcd.max * 3 ) * 3 + ( cooldown.eye_beam.remains < gcd.max * 3 & talent.shattered_destiny.enabled ) * 3 & ( variable.rg_ds = 0 || variable.rg_ds = 1 & cooldown.blade_dance.up || variable.rg_ds = 2 & cooldown.blade_dance.remains ) & ( buff.thrill_of_the_fight_damage.up || ! prev_gcd.1.death_sweep || ! variable.rg_inc ) & active_enemies < 3 & debuff.essence_break.down & ( buff.art_of_the_glaive.stack > 3 || buff.metamorphosis.remains > 2 || cooldown.eye_beam.remains < 10 || fight_remains < 10 )", ["action"] = "reavers_glaive", }, { ["enabled"] = true, ["criteria"] = "buff.glaive_flurry.down & buff.rending_strike.down & buff.thrill_of_the_fight_damage.remains < 4 & ( buff.thrill_of_the_fight_damage.up || ! prev_gcd.1.death_sweep || ! variable.rg_inc ) & active_enemies > 2 || boss & fight_remains < 10", ["action"] = "reavers_glaive", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "ar_cooldown", }, { ["enabled"] = true, ["criteria"] = "time < 15 & toggle.cooldowns & ( cooldown.eye_beam.up || cooldown.metamorphosis.up || talent.essence_break.enabled & cooldown.essence_break.up )", ["action"] = "call_action_list", ["list_name"] = "ar_opener", }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.down & ( ! talent.reavers_mark.enabled || active_dot.reavers_mark > 0 || debuff.reavers_mark.remains >= 2 - talent.quickened_sigils.enabled )", ["action"] = "sigil_of_spite", }, { ["enabled"] = true, ["criteria"] = "variable.fel_barrage & raid_event.adds.up", ["action"] = "run_action_list", ["list_name"] = "ar_fel_barrage", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 2 & talent.ragefire.enabled & ( ! talent.fel_barrage.enabled || cooldown.fel_barrage.remains > recharge_time ) & debuff.essence_break.down & ( buff.metamorphosis.down || buff.metamorphosis.remains > 5 )", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 2 & talent.ragefire.enabled & raid_event.adds.up & raid_event.adds.remains < 15 & raid_event.adds.remains > 5 & debuff.essence_break.down", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["action"] = "vengeful_retreat", ["criteria"] = "talent.initiative.enabled & ( cooldown.eye_beam.remains > 15 & gcd.remains < 0.3 || gcd.remains < 0.2 & cooldown.eye_beam.remains <= gcd.remains & cooldown.metamorphosis.remains > 10 ) & ( ! variable.trinket1_steroids & ! variable.trinket2_steroids || variable.trinket1_steroids & trinket.t1.has_stat.any_dps & trinket.t1.has_cooldown & ( trinket.t1.cooldown.remains < gcd.max * 3 || trinket.t1.cooldown.remains > 30 ) || variable.trinket2_steroids & trinket.t2.has_stat.any_dps & trinket.t1.has_cooldown & ( trinket.t2.cooldown.remains < gcd.max * 3 || trinket.t1.cooldown.remains > 30 ) ) & time > 20 & ( ! talent.inertia.enabled & buff.unbound_chaos.down || buff.inertia_trigger.down & buff.metamorphosis.down )", ["use_off_gcd"] = 1, }, { ["enabled"] = true, ["criteria"] = "variable.fel_barrage || ! talent.demon_blades.enabled & talent.fel_barrage.enabled & ( buff.fel_barrage.up || cooldown.fel_barrage.up ) & buff.metamorphosis.down", ["action"] = "run_action_list", ["list_name"] = "ar_fel_barrage", }, { ["enabled"] = true, ["criteria"] = "! talent.inertia.enabled & active_enemies = 1 & buff.unbound_chaos.up & buff.initiative.up & debuff.essence_break.down & buff.metamorphosis.down", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & cooldown.eye_beam.remains <= 0.5 & ( cooldown.metamorphosis.remains & talent.looks_can_kill.enabled || active_enemies > 1 )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.up", ["action"] = "run_action_list", ["list_name"] = "ar_meta", }, { ["enabled"] = true, ["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & buff.inertia.down & cooldown.blade_dance.remains < 4 & ( cooldown.eye_beam.remains > 5 & cooldown.eye_beam.remains > buff.unbound_chaos.remains || cooldown.eye_beam.remains <= gcd.max & cooldown.vengeful_retreat.remains <= gcd.max + 1 )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "talent.a_fire_inside.enabled & talent.burning_wound.enabled & full_recharge_time < gcd.max * 2 & ( raid_event.adds.in > full_recharge_time || active_enemies > desired_targets )", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "active_enemies > desired_targets & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > full_recharge_time )", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "fight_remains < 15 & cooldown.blade_dance.remains & talent.ragefire.enabled", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "( cooldown.blade_dance.remains < 7 || raid_event.adds.up ) & ( ! variable.trinket1_steroids & ! variable.trinket2_steroids || variable.trinket1_steroids & trinket.t1.has_stat.any_dps & trinket.t1.has_cooldown & ( trinket.t1.cooldown.remains < gcd.max * 3 || trinket.t1.cooldown.remains > 30 ) || variable.trinket2_steroids & trinket.t2.has_stat.any_dps & trinket.t1.has_cooldown & ( trinket.t2.cooldown.remains < gcd.max * 3 || trinket.t1.cooldown.remains > 30 ) ) || boss & fight_remains < 10", ["action"] = "eye_beam", }, { ["enabled"] = true, ["criteria"] = "cooldown.eye_beam.remains >= gcd.max * 3 & buff.rending_strike.down", ["action"] = "blade_dance", }, { ["enabled"] = true, ["criteria"] = "buff.rending_strike.up", ["action"] = "chaos_strike", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 3 || debuff.essence_break.down", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["criteria"] = "fury.deficit >= 40 + variable.fury_gen * 0.5 & ! buff.inertia_trigger.up", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > 10", ["action"] = "glaive_tempest", }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.up", ["action"] = "chaos_strike", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1 & talent.furious_throws.enabled & ( ! talent.screaming_brutality.enabled || charges = 2 || full_recharge_time < cooldown.blade_dance.remains )", ["action"] = "throw_glaive", }, { ["enabled"] = true, ["criteria"] = "cooldown.eye_beam.remains > gcd.max * 2 || fury > 80", ["action"] = "chaos_strike", }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1 & ! talent.a_fire_inside.enabled & debuff.essence_break.down", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > full_recharge_time || active_enemies > desired_targets & active_enemies > 2", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "buff.out_of_range.down & debuff.essence_break.down & ( ! talent.fel_barrage.enabled || cooldown.fel_barrage.remains > 25 || active_enemies = 1 & ! raid_event.adds.exists )", ["action"] = "sigil_of_flame", }, { ["action"] = "demons_bite", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.unbound_chaos.down & recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1", ["action"] = "throw_glaive", }, { ["enabled"] = true, ["criteria"] = "buff.unbound_chaos.down & recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & active_enemies > 1", ["action"] = "fel_rush", }, { ["enabled"] = true, ["criteria"] = "buff.out_of_range.down & debuff.essence_break.down & fury < 100", ["action"] = "arcane_torrent", }, }, ["fs_meta"] = { { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.remains < gcd.max || debuff.essence_break.up || prev_gcd.1.metamorphosis", ["action"] = "death_sweep", }, { ["enabled"] = true, ["criteria"] = "talent.student_of_suffering.enabled & buff.demonsurge_sigil_of_doom.down & debuff.essence_break.down & ( talent.student_of_suffering.enabled & ( ( talent.essence_break.enabled & cooldown.essence_break.remains > 30 - gcd.max || cooldown.essence_break.remains <= gcd.max + talent.inertia.enabled & ( cooldown.vengeful_retreat.remains <= gcd.max || buff.initiative.up ) + gcd.max * ( cooldown.eye_beam.remains <= gcd.max ) ) || ( ! talent.essence_break.enabled & ( cooldown.eye_beam.remains >= 10 || cooldown.eye_beam.remains <= gcd.max ) ) ) )", ["action"] = "sigil_of_doom", }, { ["enabled"] = true, ["action"] = "vengeful_retreat", ["criteria"] = "talent.initiative.enabled & ( gcd.remains < 0.3 || talent.inertia.enabled & cooldown.eye_beam.remains > gcd.remains & ( buff.cycle_of_hatred.stack = 2 || buff.cycle_of_hatred.stack = 3 ) ) & ( cooldown.metamorphosis.remains & ( buff.demonsurge_annihilation.down & buff.demonsurge_death_sweep.down ) || talent.restless_hunter.enabled & ( ! hero_tree.felscarred || buff.demonsurge_annihilation.down ) ) & ( ! talent.inertia.enabled & buff.unbound_chaos.down || buff.inertia_trigger.down ) & ( ! talent.essence_break.enabled || cooldown.essence_break.remains > 18 || cooldown.essence_break.remains <= gcd.remains + talent.inertia.enabled * 1.5 & ( ! talent.student_of_suffering.enabled || ( buff.student_of_suffering.up || cooldown.sigil_of_flame.remains > 5 ) ) ) & ( cooldown.eye_beam.remains > 5 || cooldown.eye_beam.remains <= gcd.remains || cooldown.eye_beam.up )", ["use_off_gcd"] = 1, }, { ["enabled"] = true, ["criteria"] = "hero_tree.felscarred & talent.essence_break.enabled & buff.demonsurge_death_sweep.up & ( buff.inertia.up & ( cooldown.essence_break.remains > buff.inertia.remains || ! talent.essence_break.enabled ) || cooldown.metamorphosis.remains <= 5 & buff.inertia_trigger.down || buff.inertia.up & buff.demonsurge_abyssal_gaze.up ) || talent.inertia.enabled & buff.inertia_trigger.down & cooldown.vengeful_retreat.remains >= gcd.max & buff.inertia.down", ["action"] = "death_sweep", }, { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.remains < gcd.max & cooldown.blade_dance.remains < buff.metamorphosis.remains || debuff.essence_break.remains & debuff.essence_break.remains < 0.5 || talent.restless_hunter.enabled & ( buff.demonsurge_annihilation.up || hero_tree.aldrachi_reaver & buff.inner_demon.up ) & cooldown.essence_break.up & cooldown.metamorphosis.up", ["action"] = "annihilation", }, { ["enabled"] = true, ["criteria"] = "( hero_tree.felscarred & buff.demonsurge_annihilation.up & talent.restless_hunter.enabled ) & ( cooldown.eye_beam.remains < gcd.max * 3 & cooldown.blade_dance.remains || cooldown.metamorphosis.remains < gcd.max * 3 )", ["action"] = "annihilation", }, { ["enabled"] = true, ["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & debuff.essence_break.down & cooldown.metamorphosis.remains & ( ! hero_tree.felscarred || cooldown.eye_beam.remains ) & ( cooldown.blade_dance.remains <= 5.5 & ( talent.essence_break.enabled & cooldown.essence_break.remains <= 0.5 || ! talent.essence_break.enabled || cooldown.essence_break.remains >= buff.inertia_trigger.remains & cooldown.blade_dance.remains <= 4.5 & ( cooldown.blade_dance.remains || cooldown.blade_dance.remains <= 0.5 ) ) || buff.metamorphosis.remains <= 5.5 + talent.shattered_destiny.enabled * 2 )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & debuff.essence_break.down & cooldown.metamorphosis.remains & ( ! hero_tree.felscarred || cooldown.eye_beam.remains ) & ( active_enemies > 2 || hero_tree.felscarred ) & ( cooldown.felblade.remains & cooldown.essence_break.remains <= 0.6 )", ["action"] = "fel_rush", }, { ["enabled"] = true, ["criteria"] = "buff.inner_demon.up & cooldown.blade_dance.remains & ( cooldown.eye_beam.remains < gcd.max * 3 || cooldown.metamorphosis.remains < gcd.max * 3 )", ["action"] = "annihilation", }, { ["enabled"] = true, ["criteria"] = "fury > 20 & ( cooldown.metamorphosis.remains > 10 || cooldown.blade_dance.remains < gcd.max * 2 ) & ( buff.inertia_trigger.down || buff.inertia.up & buff.inertia.remains >= gcd.max * 3 || ! talent.inertia.enabled ) & buff.out_of_range.remains < gcd.max & ( ! talent.shattered_destiny.enabled || cooldown.eye_beam.remains > 4 ) & ( ! hero_tree.felscarred || active_enemies > 1 || cooldown.metamorphosis.remains > 5 & cooldown.eye_beam.remains ) & ( ! buff.cycle_of_hatred.stack = 3 || buff.initiative.up ) || fight_remains < 5", ["action"] = "essence_break", }, { ["enabled"] = true, ["criteria"] = "cooldown.blade_dance.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains >= 20 || cooldown.eye_beam.remains <= gcd.max ) & ( ! talent.student_of_suffering.enabled || buff.demonsurge_sigil_of_doom.up )", ["action"] = "sigil_of_doom", }, { ["enabled"] = true, ["criteria"] = "buff.demonsurge.up & debuff.essence_break.down & buff.demonsurge_consuming_fire.up & cooldown.blade_dance.remains >= gcd.max & cooldown.eye_beam.remains >= gcd.max & fury.deficit > 10 + variable.fury_gen", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.down & buff.inner_demon.down", ["action"] = "eye_beam", }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.down & buff.inner_demon.down & ( buff.cycle_of_hatred.stack < 4 || cooldown.essence_break.remains >= 20 - gcd.max * talent.student_of_suffering.enabled || cooldown.sigil_of_flame.remains & talent.student_of_suffering.enabled || cooldown.essence_break.remains <= gcd.max )", ["action"] = "abyssal_gaze", }, { ["enabled"] = true, ["criteria"] = "cooldown.essence_break.remains >= gcd.max * 2 + talent.student_of_suffering.enabled * gcd.max || debuff.essence_break.up || ! talent.essence_break.enabled", ["action"] = "death_sweep", }, { ["enabled"] = true, ["criteria"] = "cooldown.blade_dance.remains || fury > 60 || buff.metamorphosis.remains < 5", ["action"] = "annihilation", }, { ["enabled"] = true, ["criteria"] = "buff.out_of_range.down & recharge_time < ( cooldown.eye_beam.remains = desired_targets + raid_event.adds.count || raid_event.adds.in > full_recharge_time )", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "( buff.out_of_range.down || fury.deficit > 40 + variable.fury_gen * ( 0.5 / gcd.max ) ) & ! buff.inertia_trigger.up", ["action"] = "felblade", }, { ["action"] = "annihilation", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.unbound_chaos.down & recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1", ["action"] = "throw_glaive", }, { ["enabled"] = true, ["criteria"] = "recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1", ["action"] = "fel_rush", }, { ["action"] = "demons_bite", ["enabled"] = true, }, }, ["fs_opener"] = { { ["enabled"] = true, ["criteria"] = "buff.initiative.up || ! talent.initiative.enabled", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "cooldown.the_hunt.up & ! talent.a_fire_inside.enabled & fury < 40", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "talent.inertia.enabled || buff.initiative.up || ! talent.initiative.enabled", ["action"] = "the_hunt", }, { ["enabled"] = true, ["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & active_enemies = 1 & buff.metamorphosis.up & cooldown.metamorphosis.up & cooldown.essence_break.up & buff.inner_demon.down & buff.demonsurge_annihilation.down", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & ( cooldown.felblade.remains || active_enemies > 1 ) & buff.metamorphosis.up & cooldown.metamorphosis.up & cooldown.essence_break.up & buff.inner_demon.down & buff.demonsurge_annihilation.down", ["action"] = "fel_rush", }, { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.up & ( ! talent.inertia.enabled || buff.inertia.up ) & buff.inner_demon.down & buff.demonsurge_annihilation.down", ["action"] = "essence_break", }, { ["enabled"] = true, ["action"] = "vengeful_retreat", ["criteria"] = "talent.initiative.enabled & time > 4 & buff.metamorphosis.up & ( ! talent.inertia.enabled || buff.inertia_trigger.down ) & talent.essence_break.enabled & buff.inner_demon.down & ( buff.initiative.down || gcd.remains < 0.1 ) & cooldown.blade_dance.remains", ["use_off_gcd"] = 1, }, { ["enabled"] = true, ["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & hero_tree.felscarred & debuff.essence_break.down & talent.essence_break.enabled & cooldown.metamorphosis.remains & active_enemies <= 2 & cooldown.sigil_of_flame.remains", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "( buff.inner_demon.down || buff.out_of_range.up ) & debuff.essence_break.down", ["action"] = "sigil_of_doom", }, { ["enabled"] = true, ["criteria"] = "( buff.inner_demon.up || buff.demonsurge_annihilation.up ) & ( cooldown.metamorphosis.up || ! talent.essence_break.enabled & cooldown.blade_dance.remains )", ["action"] = "annihilation", }, { ["enabled"] = true, ["criteria"] = "hero_tree.felscarred & buff.demonsurge_death_sweep.up & ! talent.restless_hunter.enabled", ["action"] = "death_sweep", }, { ["enabled"] = true, ["criteria"] = "hero_tree.felscarred & buff.demonsurge_annihilation.up & ( ! talent.essence_break.enabled || buff.inner_demon.up )", ["action"] = "annihilation", }, { ["enabled"] = true, ["criteria"] = "talent.a_fire_inside.enabled & talent.burning_wound.enabled & buff.metamorphosis.down", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "fury < 40 & debuff.essence_break.down & buff.inertia_trigger.down & cooldown.metamorphosis.up", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.up & buff.inner_demon.down & buff.demonsurge_annihilation.down & cooldown.blade_dance.remains", ["action"] = "metamorphosis", }, { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.down || debuff.essence_break.down & buff.inner_demon.down & ( cooldown.blade_dance.remains || talent.essence_break.enabled & cooldown.essence_break.up ) & ( ! talent.a_fire_inside.enabled || action.immolation_aura.charges = 0 )", ["action"] = "eye_beam", }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.down & buff.inner_demon.down", ["action"] = "abyssal_gaze", }, { ["action"] = "death_sweep", ["enabled"] = true, }, { ["action"] = "annihilation", ["enabled"] = true, }, { ["action"] = "demons_bite", ["enabled"] = true, }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "true", ["var_name"] = "opened", }, }, }, ["author"] = "SimC", }, ["Vengeance"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20250303, ["spec"] = 581, ["desc"] = "2025-03-03: Fixes for Aldrachi Reaver.\n\n2024-10-29: 11.0.5\n\n2024-10-21: SimC update, increase defensiveness a bit\n\n2024-09-22: SimC update\n\n2024-09-12: Reimplement Demonsurge\n\n2024-09-10: SimC update\n\n2024-09-09: Tweak variable names to be consistent for FS vs. AR; fix wait loop\n\n2024-09-01, 09-08: SimC update\n\n2024-07-23: The War Within", ["profile"] = "actions.precombat+=/variable,name=single_target,value=spell_targets.spirit_bomb=1\nactions.precombat+=/variable,name=small_aoe,value=spell_targets.spirit_bomb>=2&spell_targets.spirit_bomb<=5\nactions.precombat+=/variable,name=big_aoe,value=spell_targets.spirit_bomb>=6\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_buff.agility||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_buff.agility||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit)\nactions.precombat+=/arcane_torrent\nactions.precombat+=/sigil_of_flame,if=hero_tree.aldrachi_reaver||(hero_tree.felscarred&talent.student_of_suffering)\nactions.precombat+=/immolation_aura\n\nactions+=/disrupt\nactions+=/demon_spikes,use_off_gcd=1,if=!buff.demon_spikes.up&(tanking||time<5)\nactions+=/variable,name=num_spawnable_souls,op=reset,default=0\nactions+=/variable,name=num_spawnable_souls,op=max,value=1,if=talent.soul_sigils&cooldown.sigil_of_flame.up\nactions+=/variable,name=num_spawnable_souls,op=max,value=2,if=talent.fracture&cooldown.fracture.charges_fractional>=1&!buff.metamorphosis.up\nactions+=/variable,name=num_spawnable_souls,op=max,value=3,if=talent.fracture&cooldown.fracture.charges_fractional>=1&buff.metamorphosis.up\nactions+=/variable,name=num_spawnable_souls,op=add,value=1,if=talent.soul_carver&(cooldown.soul_carver.remains>(cooldown.soul_carver.duration-3))\nactions+=/infernal_strike,use_off_gcd=1\nactions+=/run_action_list,name=ar,strict=1,if=!hero_tree.felscarred\nactions+=/run_action_list,name=fs,strict=1,if=hero_tree.felscarred\n\nactions.ar+=/variable,name=spb_threshold,op=setif,condition=talent.fiery_demise&dot.fiery_brand.ticking,value=(variable.single_target*5)+(variable.small_aoe*5)+(variable.big_aoe*4),value_else=(variable.single_target*5)+(variable.small_aoe*5)+(variable.big_aoe*4)\nactions.ar+=/variable,name=can_spb,op=setif,condition=talent.spirit_bomb,value=soul_fragments>=variable.spb_threshold,value_else=0\nactions.ar+=/variable,name=can_spb_soon,op=setif,condition=talent.spirit_bomb,value=soul_fragments>=variable.spb_threshold,value_else=0\nactions.ar+=/variable,name=can_spb_one_gcd,op=setif,condition=talent.spirit_bomb,value=(soul_fragments+variable.num_spawnable_souls)>=variable.spb_threshold,value_else=0\n## [Hekili] Move `double_rm_expires` variable from `rg_sequence` to here to prevent an unused variable warning.\nactions.ar+=/variable,name=double_rm_expires,value=time+action.fracture.execute_time+20,if=!buff.glaive_flurry.up&buff.rending_strike.up\nactions.ar+=/variable,name=double_rm_remains,op=setif,condition=(variable.double_rm_expires-time)>0,value=variable.double_rm_expires-time,value_else=0\nactions.ar+=/variable,name=trigger_overflow,op=set,value=0,if=!buff.glaive_flurry.up&!buff.rending_strike.up&!prev_gcd.1.reavers_glaive\nactions.ar+=/variable,name=rg_enhance_cleave,op=setif,condition=variable.trigger_overflow||(spell_targets.spirit_bomb>=4)||(fight_remains<10||target.time_to_die<10),value=1,value_else=0\nactions.ar+=/variable,name=souls_before_next_rg_sequence,value=soul_fragments+buff.art_of_the_glaive.stack\nactions.ar+=/variable,name=souls_before_next_rg_sequence,op=add,value=(1.1*(1+stat.haste))*(variable.double_rm_remains-(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max)))\nactions.ar+=/variable,name=souls_before_next_rg_sequence,op=add,value=3+talent.soul_sigils,if=cooldown.sigil_of_spite.remains<(variable.double_rm_remains-gcd.max-(2-talent.soul_sigils))\nactions.ar+=/variable,name=souls_before_next_rg_sequence,op=add,value=3,if=cooldown.soul_carver.remains<(variable.double_rm_remains-gcd.max)\nactions.ar+=/variable,name=souls_before_next_rg_sequence,op=add,value=3,if=cooldown.soul_carver.remains<(variable.double_rm_remains-gcd.max-3)\nactions.ar+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs||(variable.trinket_1_buffs&((buff.rending_strike.up&buff.glaive_flurry.up)||(prev_gcd.1.reavers_glaive)||(buff.thrill_of_the_fight_damage.remains>8)||(buff.reavers_glaive.up&cooldown.the_hunt.remains<5)))\nactions.ar+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs||(variable.trinket_2_buffs&((buff.rending_strike.up&buff.glaive_flurry.up)||(prev_gcd.1.reavers_glaive)||(buff.thrill_of_the_fight_damage.remains>8)||(buff.reavers_glaive.up&cooldown.the_hunt.remains<5)))\nactions.ar+=/potion,use_off_gcd=1,if=(buff.rending_strike.up&buff.glaive_flurry.up)||prev_gcd.1.reavers_glaive\n##actions.ar+=/call_action_list,name=externals,if=(buff.rending_strike.up&buff.glaive_flurry.up)||prev_gcd.1.reavers_glaive\nactions.ar+=/run_action_list,name=rg_sequence,strict=1,if=buff.glaive_flurry.up||buff.rending_strike.up||prev_gcd.1.reavers_glaive\nactions.ar+=/metamorphosis,use_off_gcd=1,if=time<5||cooldown.fel_devastation.remains>=20\nactions.ar+=/the_hunt,if=!buff.reavers_glaive.up&(buff.art_of_the_glaive.stack+soul_fragments)<20\nactions.ar+=/spirit_bomb,if=variable.can_spb&(soul_fragments>2||prev_gcd.1.sigil_of_spite||prev_gcd.1.soul_carver||(spell_targets.spirit_bomb>=4&talent.fallout&cooldown.immolation_aura.remains=4)||(!buff.reavers_glaive.up||(variable.double_rm_remains>((action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))+gcd.max)))\nactions.ar+=/sigil_of_flame,if=(talent.ascending_flame||(!prev_gcd.1.sigil_of_flame&dot.sigil_of_flame.remains<(4-talent.quickened_sigils)))&(!buff.reavers_glaive.up||(variable.double_rm_remains>((action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))+gcd.max)))\nactions.ar+=/run_action_list,name=rg_overflow,if=buff.reavers_glaive.up&spell_targets.spirit_bomb<4&debuff.reavers_mark.up&(variable.double_rm_remains>(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max)))&(!buff.thrill_of_the_fight_damage.up||(buff.thrill_of_the_fight_damage.remains<(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))&((variable.double_rm_remains-(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max)))>(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max)))&((variable.souls_before_next_rg_sequence>=20)||(variable.double_rm_remains>((action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))+cooldown.the_hunt.remains+action.the_hunt.execute_time)))\n## [Hekili] Only call `ar_execute` on boss fights.\nactions.ar+=/call_action_list,name=ar_execute,if=boss&(fight_remains<10||target.time_to_die<10)\nactions.ar+=/soul_cleave,if=!buff.reavers_glaive.up&(variable.double_rm_remains<=(execute_time+(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))&(soul_fragments<3&((buff.art_of_the_glaive.stack+soul_fragments)>=20))\nactions.ar+=/spirit_bomb,if=!buff.reavers_glaive.up&(variable.double_rm_remains<=(execute_time+(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))&((buff.art_of_the_glaive.stack+soul_fragments)>=20)\nactions.ar+=/bulk_extraction,if=!buff.reavers_glaive.up&(variable.double_rm_remains<=(execute_time+(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))&((buff.art_of_the_glaive.stack+(spell_targets>?5))>=20)\nactions.ar+=/reavers_glaive,if=(fury+(variable.rg_enhance_cleave*25)+(talent.keen_engagement*20))>=30&((!buff.thrill_of_the_fight_attack_speed.up||(variable.double_rm_remains<=(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))||(spell_targets.spirit_bomb>=4))&!(buff.rending_strike.up||buff.glaive_flurry.up)\nactions.ar+=/call_action_list,name=rg_prep,if=(fury+(variable.rg_enhance_cleave*25)+(talent.keen_engagement*20))<30&((!buff.thrill_of_the_fight_attack_speed.up||(variable.double_rm_remains<=(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))||(spell_targets.spirit_bomb>=4))\nactions.ar+=/fiery_brand,if=(!talent.fiery_demise&active_dot.fiery_brand=0)||(talent.down_in_flames&(full_recharge_time=15||buff.thrill_of_the_fight_damage.remains>5))\nactions.ar+=/sigil_of_spite,if=buff.thrill_of_the_fight_damage.up||(fury>=80&(variable.can_spb||variable.can_spb_soon))||((soul_fragments+buff.art_of_the_glaive.stack+((1.1*(1+raw_haste_pct))*(variable.double_rm_remains-(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max)))))<20)\nactions.ar+=/spirit_bomb,if=variable.can_spb\nactions.ar+=/felblade,if=(variable.can_spb||variable.can_spb_soon)&fury<40\nactions.ar+=/vengeful_retreat,use_off_gcd=1,if=(variable.can_spb||variable.can_spb_soon)&fury<40&!cooldown.felblade.up&talent.unhindered_assault\nactions.ar+=/fracture,if=(variable.can_spb||variable.can_spb_soon||variable.can_spb_one_gcd)&fury<40\nactions.ar+=/soul_carver,if=buff.thrill_of_the_fight_damage.up||((soul_fragments+buff.art_of_the_glaive.stack+((1.1*(1+raw_haste_pct))*(variable.double_rm_remains-(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max)))))<20)\nactions.ar+=/fel_devastation,if=!buff.metamorphosis.up&((variable.double_rm_remains>((action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))+2))||(spell_targets.spirit_bomb>=4))&((action.fracture.full_recharge_time<(2+gcd.max))||(!variable.single_target&buff.thrill_of_the_fight_damage.up))\nactions.ar+=/felblade,if=cooldown.fel_devastation.remains=5\nactions.ar+=/soul_cleave,if=soul_fragments>=1\nactions.ar+=/bulk_extraction,if=spell_targets>=3\nactions.ar+=/fracture\nactions.ar+=/soul_cleave\nactions.ar+=/shear\nactions.ar+=/felblade\nactions.ar+=/throw_glaive\n\nactions.ar_execute+=/metamorphosis,use_off_gcd=1\nactions.ar_execute+=/reavers_glaive,if=(fury+(variable.rg_enhance_cleave*25)+(talent.keen_engagement*20))>=30&!(buff.rending_strike.up||buff.glaive_flurry.up)\nactions.ar_execute+=/call_action_list,name=rg_prep,if=buff.reavers_glaive.up&(fury+(variable.rg_enhance_cleave*25)+(talent.keen_engagement*20))<30\nactions.ar_execute+=/the_hunt,if=!buff.reavers_glaive.up\nactions.ar_execute+=/bulk_extraction,if=spell_targets>=3&buff.art_of_the_glaive.stack>=20\nactions.ar_execute+=/sigil_of_flame\nactions.ar_execute+=/fiery_brand\nactions.ar_execute+=/sigil_of_spite\nactions.ar_execute+=/soul_carver\nactions.ar_execute+=/fel_devastation\n\n## actions.externals+=/invoke_external_buff,name=symbol_of_hope\n## actions.externals+=/invoke_external_buff,name=power_infusion\n\nactions.fel_dev+=/spirit_burst,if=buff.demonsurge_spirit_burst.up&(variable.can_spburst||soul_fragments>=4||(buff.metamorphosis.remains<(gcd.max*2)))\nactions.fel_dev+=/soul_sunder,if=buff.demonsurge_soul_sunder.up&(!buff.demonsurge_spirit_burst.up||(buff.metamorphosis.remains<(gcd.max*2)))\nactions.fel_dev+=/sigil_of_spite,if=(!talent.cycle_of_binding||(cooldown.sigil_of_spite.duration<(cooldown.metamorphosis.remains+18)))&(soul_fragments<=2&buff.demonsurge_spirit_burst.up)\nactions.fel_dev+=/soul_carver,if=soul_fragments<=2&!prev_gcd.1.sigil_of_spite&buff.demonsurge_spirit_burst.up\nactions.fel_dev+=/fracture,if=soul_fragments<=2&buff.demonsurge_spirit_burst.up\nactions.fel_dev+=/felblade,if=buff.demonsurge_spirit_burst.up||buff.demonsurge_soul_sunder.up\nactions.fel_dev+=/fracture,if=buff.demonsurge_spirit_burst.up||buff.demonsurge_soul_sunder.up\n\nactions.fel_dev_prep+=/potion,use_off_gcd=1,if=prev_gcd.1.fiery_brand\nactions.fel_dev_prep+=/sigil_of_flame,if=!variable.hold_sof_for_precombat&!variable.hold_sof_for_student&!variable.hold_sof_for_dot\nactions.fel_dev_prep+=/fiery_brand,if=talent.fiery_demise&((fury+variable.fel_dev_passive_fury_gen)>=120)&(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4)&active_dot.fiery_brand=0&((cooldown.metamorphosis.remains<(execute_time+action.fel_devastation.execute_time+(gcd.max*2)))||variable.fiery_brand_back_before_meta)\nactions.fel_dev_prep+=/fel_devastation,if=((fury+variable.fel_dev_passive_fury_gen)>=120)&(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4)\nactions.fel_dev_prep+=/sigil_of_spite,if=(!talent.cycle_of_binding||(cooldown.sigil_of_spite.duration<(cooldown.metamorphosis.remains+18)))&(soul_fragments<=1||(!(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4)&action.fracture.charges_fractional<1))\nactions.fel_dev_prep+=/soul_carver,if=(!talent.cycle_of_binding||cooldown.metamorphosis.remains>20)&(soul_fragments<=1||(!(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4)&action.fracture.charges_fractional<1))&!prev_gcd.1.sigil_of_spite&!prev_gcd.2.sigil_of_spite\nactions.fel_dev_prep+=/felblade,if=(fury+variable.fel_dev_passive_fury_gen)<120&(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4)\nactions.fel_dev_prep+=/fracture,if=!(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4)||(fury+variable.fel_dev_passive_fury_gen)<120\nactions.fel_dev_prep+=/felblade\nactions.fel_dev_prep+=/fracture\n## actions.fel_dev_prep+=/wait,sec=0.1,if=(!(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4)||!((fury+variable.fel_dev_passive_fury_gen)>=120))&action.fracture.charges_fractional>=0.7\nactions.fel_dev_prep+=/fel_devastation\nactions.fel_dev_prep+=/soul_cleave,if=((fury+variable.fel_dev_passive_fury_gen)>=150)\nactions.fel_dev_prep+=/throw_glaive\n\nactions.fs+=/variable,name=crit_pct,op=set,value=(action.sigil_of_flame.crit_pct+(talent.aura_of_pain*6))%100,if=active_dot.sigil_of_flame>0&talent.volatile_flameblood\nactions.fs+=/variable,name=fel_dev_sequence_time,op=set,value=2+(2*gcd.max)\nactions.fs+=/variable,name=fel_dev_sequence_time,op=add,value=gcd.max,if=talent.fiery_demise&cooldown.fiery_brand.up\nactions.fs+=/variable,name=fel_dev_sequence_time,op=add,value=gcd.max,if=cooldown.sigil_of_flame.up||cooldown.sigil_of_flame.remains?variable.fel_dev_sequence_time)),if=talent.student_of_suffering.enabled&(buff.student_of_suffering.remains>1||prev_gcd.1.sigil_of_flame)\nactions.fs+=/variable,name=fel_dev_passive_fury_gen,op=add,value=30+(2*talent.flames_of_fury*spell_targets.sigil_of_flame),if=(cooldown.sigil_of_flame.remains?variable.fel_dev_sequence_time)),if=buff.immolation_aura.remains>1\nactions.fs+=/variable,name=fel_dev_passive_fury_gen,op=add,value=7.5*variable.crit_pct*floor((buff.immolation_aura.remains>?variable.fel_dev_sequence_time)),if=talent.volatile_flameblood&buff.immolation_aura.remains>1\nactions.fs+=/variable,name=fel_dev_passive_fury_gen,op=add,value=22,if=talent.darkglare_boon.enabled\nactions.fs+=/variable,name=spbomb_threshold,op=setif,condition=talent.fiery_demise&dot.fiery_brand.ticking,value=(variable.single_target*5)+(variable.small_aoe*5)+(variable.big_aoe*4),value_else=(variable.single_target*5)+(variable.small_aoe*5)+(variable.big_aoe*4)\nactions.fs+=/variable,name=can_spbomb,op=setif,condition=talent.spirit_bomb,value=soul_fragments>=variable.spbomb_threshold,value_else=0\nactions.fs+=/variable,name=can_spbomb_soon,op=setif,condition=talent.spirit_bomb,value=soul_fragments>=variable.spbomb_threshold,value_else=0\nactions.fs+=/variable,name=can_spbomb_one_gcd,op=setif,condition=talent.spirit_bomb,value=(soul_fragments+variable.num_spawnable_souls)>=variable.spbomb_threshold,value_else=0\nactions.fs+=/variable,name=spburst_threshold,op=setif,condition=talent.fiery_demise&dot.fiery_brand.ticking,value=(variable.single_target*5)+(variable.small_aoe*5)+(variable.big_aoe*4),value_else=(variable.single_target*5)+(variable.small_aoe*5)+(variable.big_aoe*4)\nactions.fs+=/variable,name=can_spburst,op=setif,condition=talent.spirit_bomb,value=soul_fragments>=variable.spburst_threshold,value_else=0\nactions.fs+=/variable,name=can_spburst_soon,op=setif,condition=talent.spirit_bomb,value=soul_fragments>=variable.spburst_threshold,value_else=0\nactions.fs+=/variable,name=can_spburst_one_gcd,op=setif,condition=talent.spirit_bomb,value=(soul_fragments+variable.num_spawnable_souls)>=variable.spburst_threshold,value_else=0\nactions.fs+=/variable,name=meta_prep_time,op=set,value=0\nactions.fs+=/variable,name=meta_prep_time,op=add,value=action.fiery_brand.execute_time,if=talent.fiery_demise&cooldown.fiery_brand.up\nactions.fs+=/variable,name=meta_prep_time,op=add,value=action.sigil_of_flame.execute_time*action.sigil_of_flame.charges\nactions.fs+=/variable,name=dont_soul_cleave,op=setif,condition=buff.metamorphosis.up&buff.demonsurge_hardcast.up,value=buff.demonsurge_spirit_burst.up||(buff.metamorphosis.remains<(gcd.max*2)&((fury+variable.fel_dev_passive_fury_gen)<120||!(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4))),value_else=(cooldown.fel_devastation.remains<(gcd.max*3)&((fury+variable.fel_dev_passive_fury_gen)<120)||!(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4)))\nactions.fs+=/variable,name=fiery_brand_back_before_meta,op=setif,condition=talent.down_in_flames,value=charges>=max_charges||(charges_fractional>=1&cooldown.fiery_brand.full_recharge_time<=gcd.remains+execute_time)||(charges_fractional>=1&((1-(charges_fractional-1))*cooldown.fiery_brand.duration)<=cooldown.metamorphosis.remains),value_else=(cooldown.fiery_brand.duration<=cooldown.metamorphosis.remains)\nactions.fs+=/variable,name=hold_sof_for_meta,op=setif,condition=talent.illuminated_sigils,value=(charges_fractional>=1&((1-(charges_fractional-1))*cooldown.sigil_of_flame.duration)>cooldown.metamorphosis.remains),value_else=cooldown.sigil_of_flame.duration>cooldown.metamorphosis.remains\nactions.fs+=/variable,name=hold_sof_for_fel_dev,op=setif,condition=talent.illuminated_sigils,value=(charges_fractional>=1&((1-(charges_fractional-1))*cooldown.sigil_of_flame.duration)>cooldown.fel_devastation.remains),value_else=cooldown.sigil_of_flame.duration>cooldown.fel_devastation.remains\nactions.fs+=/variable,name=hold_sof_for_student,op=setif,condition=talent.student_of_suffering,value=prev_gcd.1.sigil_of_flame||(buff.student_of_suffering.remains>(4-talent.quickened_sigils)),value_else=0\nactions.fs+=/variable,name=hold_sof_for_dot,op=setif,condition=talent.ascending_flame,value=0,value_else=prev_gcd.1.sigil_of_flame||(dot.sigil_of_flame.remains>(4-talent.quickened_sigils))\nactions.fs+=/variable,name=hold_sof_for_precombat,value=(talent.illuminated_sigils&time<(2-talent.quickened_sigils))\nactions.fs+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs||(variable.trinket_1_buffs&((buff.metamorphosis.up&buff.demonsurge_hardcast.up)||(buff.metamorphosis.up&!buff.demonsurge_hardcast.up&cooldown.metamorphosis.remains<10)||(cooldown.metamorphosis.remains>trinket.1.cooldown.duration)||(variable.trinket_2_buffs&trinket.2.cooldown.remainstrinket.2.cooldown.duration)||(variable.trinket_1_buffs&trinket.1.cooldown.remains=3&((buff.metamorphosis.up&(variable.can_spburst||variable.can_spburst_soon))||(!buff.metamorphosis.up&(variable.can_spbomb||variable.can_spbomb_soon))))&!(buff.metamorphosis.up&buff.demonsurge_hardcast.up)\nactions.fs+=/sigil_of_flame,if=!talent.student_of_suffering&!variable.hold_sof_for_dot&!variable.hold_sof_for_precombat\nactions.fs+=/sigil_of_flame,if=!variable.hold_sof_for_precombat&(charges=max_charges||(!variable.hold_sof_for_student&!variable.hold_sof_for_dot&!variable.hold_sof_for_meta&!variable.hold_sof_for_fel_dev))\nactions.fs+=/fiery_brand,if=active_dot.fiery_brand=0&(!talent.fiery_demise||((talent.down_in_flames&charges>=max_charges)||variable.fiery_brand_back_before_meta))\nactions.fs+=/call_action_list,name=fs_execute,if=fight_remains<20\nactions.fs+=/run_action_list,name=fel_dev,if=buff.metamorphosis.up&!buff.demonsurge_hardcast.up&(buff.demonsurge_soul_sunder.up||buff.demonsurge_spirit_burst.up)\nactions.fs+=/run_action_list,name=metamorphosis,strict=1,if=buff.metamorphosis.up&buff.demonsurge_hardcast.up\nactions.fs+=/run_action_list,name=fel_dev_prep,if=!buff.demonsurge_hardcast.up&(cooldown.fel_devastation.up||(cooldown.fel_devastation.remains<=(gcd.max*3)))\nactions.fs+=/run_action_list,name=meta_prep,if=(cooldown.metamorphosis.remains<=variable.meta_prep_time)&!cooldown.fel_devastation.up&!cooldown.fel_devastation.remains<10&!buff.demonsurge_soul_sunder.up&!buff.demonsurge_spirit_burst.up\nactions.fs+=/the_hunt\nactions.fs+=/felblade,if=((cooldown.sigil_of_spite.remains=40)||(soul_fragments=0&fury>=15))))\nactions.fs+=/sigil_of_spite,if=(!talent.cycle_of_binding||(cooldown.sigil_of_spite.duration<(cooldown.metamorphosis.remains+18)))&(!talent.spirit_bomb||(fury>=80&(variable.can_spbomb||variable.can_spbomb_soon))||(soul_fragments<=(2-talent.soul_sigils.rank)))\nactions.fs+=/spirit_burst,if=variable.can_spburst&talent.fiery_demise&dot.fiery_brand.ticking&cooldown.fel_devastation.remains>=(gcd.max*3)\nactions.fs+=/spirit_bomb,if=variable.can_spbomb&talent.fiery_demise&dot.fiery_brand.ticking&cooldown.fel_devastation.remains>=(gcd.max*3)\nactions.fs+=/soul_sunder,if=variable.single_target&!variable.dont_soul_cleave\nactions.fs+=/soul_cleave,if=variable.single_target&!variable.dont_soul_cleave\nactions.fs+=/spirit_burst,if=variable.can_spburst&cooldown.fel_devastation.remains>=(gcd.max*3)\nactions.fs+=/spirit_bomb,if=variable.can_spbomb&cooldown.fel_devastation.remains>=(gcd.max*3)\nactions.fs+=/felblade,if=((fury<40&((buff.metamorphosis.up&(variable.can_spburst||variable.can_spburst_soon))||(!buff.metamorphosis.up&(variable.can_spbomb||variable.can_spbomb_soon)))))\nactions.fs+=/fracture,if=((fury<40&((buff.metamorphosis.up&(variable.can_spburst||variable.can_spburst_soon))||(!buff.metamorphosis.up&(variable.can_spbomb||variable.can_spbomb_soon))))||(buff.metamorphosis.up&variable.can_spburst_one_gcd)||(!buff.metamorphosis.up&variable.can_spbomb_one_gcd))\nactions.fs+=/felblade,if=fury.deficit>=40\nactions.fs+=/soul_sunder,if=!variable.dont_soul_cleave\nactions.fs+=/soul_cleave,if=!variable.dont_soul_cleave\nactions.fs+=/fracture\nactions.fs+=/throw_glaive\n\nactions.fs_execute+=/metamorphosis,use_off_gcd=1\nactions.fs_execute+=/the_hunt\nactions.fs_execute+=/sigil_of_flame\nactions.fs_execute+=/fiery_brand\nactions.fs_execute+=/sigil_of_spite\nactions.fs_execute+=/soul_carver\nactions.fs_execute+=/fel_devastation\n\nactions.meta_prep+=/metamorphosis,use_off_gcd=1,if=cooldown.sigil_of_flame.charges<1\nactions.meta_prep+=/fiery_brand,if=talent.fiery_demise&((talent.down_in_flames&charges>=max_charges)||active_dot.fiery_brand=0)\nactions.meta_prep+=/potion,use_off_gcd=1\nactions.meta_prep+=/sigil_of_flame\n\n## actions.metamorphosis+=/call_action_list,name=externals\nactions.metamorphosis+=/fel_desolation,if=buff.metamorphosis.remains<(gcd.max*3)\nactions.metamorphosis+=/felblade,if=fury<50&(buff.metamorphosis.remains<(gcd.max*3))&cooldown.fel_desolation.up\nactions.metamorphosis+=/fracture,if=fury<50&!cooldown.felblade.up&(buff.metamorphosis.remains<(gcd.max*3))&cooldown.fel_desolation.up\nactions.metamorphosis+=/sigil_of_doom,if=talent.illuminated_sigils&talent.cycle_of_binding&charges=max_charges\nactions.metamorphosis+=/immolation_aura\nactions.metamorphosis+=/sigil_of_doom,if=!talent.student_of_suffering&(talent.ascending_flame||(!talent.ascending_flame&!prev_gcd.1.sigil_of_doom&(dot.sigil_of_doom.remains<(4-talent.quickened_sigils))))\nactions.metamorphosis+=/sigil_of_doom,if=talent.student_of_suffering&!prev_gcd.1.sigil_of_flame&!prev_gcd.1.sigil_of_doom&(buff.student_of_suffering.remains<(4-talent.quickened_sigils))\nactions.metamorphosis+=/sigil_of_doom,if=buff.metamorphosis.remains<((2-talent.quickened_sigils)+(charges*gcd.max))\nactions.metamorphosis+=/fel_desolation,if=soul_fragments<=3&(soul_fragments>=2||prev_gcd.1.sigil_of_spite)\nactions.metamorphosis+=/felblade,if=((cooldown.sigil_of_spite.remains=40&!prev_gcd.1.sigil_of_spite)\nactions.metamorphosis+=/sigil_of_spite,if=!talent.spirit_bomb||(fury>=80&(variable.can_spburst||variable.can_spburst_soon))||(soul_fragments<=(2-talent.soul_sigils.rank))\nactions.metamorphosis+=/spirit_burst,if=variable.can_spburst&buff.demonsurge_spirit_burst.up\nactions.metamorphosis+=/fel_desolation\nactions.metamorphosis+=/the_hunt\nactions.metamorphosis+=/soul_sunder,if=buff.demonsurge_soul_sunder.up&!buff.demonsurge_spirit_burst.up&!variable.can_spburst_one_gcd\nactions.metamorphosis+=/spirit_burst,if=variable.can_spburst&(talent.fiery_demise&dot.fiery_brand.ticking||variable.big_aoe)&buff.metamorphosis.remains>(gcd.max*2)\nactions.metamorphosis+=/felblade,if=fury<40&(variable.can_spburst||variable.can_spburst_soon)&(buff.demonsurge_spirit_burst.up||talent.fiery_demise&dot.fiery_brand.ticking||variable.big_aoe)\nactions.metamorphosis+=/fracture,if=fury<40&(variable.can_spburst||variable.can_spburst_soon||variable.can_spburst_one_gcd)&(buff.demonsurge_spirit_burst.up||talent.fiery_demise&dot.fiery_brand.ticking||variable.big_aoe)\nactions.metamorphosis+=/fracture,if=variable.can_spburst_one_gcd&(buff.demonsurge_spirit_burst.up||variable.big_aoe)&!prev_gcd.1.fracture\nactions.metamorphosis+=/soul_sunder,if=variable.single_target&!variable.dont_soul_cleave\nactions.metamorphosis+=/spirit_burst,if=variable.can_spburst&buff.metamorphosis.remains>(gcd.max*2)\nactions.metamorphosis+=/felblade,if=fury.deficit>=40\nactions.metamorphosis+=/soul_sunder,if=!variable.dont_soul_cleave&!(variable.big_aoe&(variable.can_spburst||variable.can_spburst_soon))\nactions.metamorphosis+=/felblade\nactions.metamorphosis+=/fracture,if=!prev_gcd.1.fracture\n\nactions.rg_overflow+=/variable,name=trigger_overflow,op=set,value=1\nactions.rg_overflow+=/variable,name=rg_enhance_cleave,op=set,value=1\nactions.rg_overflow+=/reavers_glaive,if=(fury+(variable.rg_enhance_cleave*25)+(talent.keen_engagement*20))>=30&!buff.rending_strike.up&!buff.glaive_flurry.up\nactions.rg_overflow+=/call_action_list,name=rg_prep,if=(fury+(variable.rg_enhance_cleave*25)+(talent.keen_engagement*20))<30\n\nactions.rg_prep+=/felblade\nactions.rg_prep+=/vengeful_retreat,use_off_gcd=1,if=!cooldown.felblade.up&talent.unhindered_assault\nactions.rg_prep+=/sigil_of_flame\nactions.rg_prep+=/immolation_aura\nactions.rg_prep+=/fracture\n\nactions.rg_sequence+=/call_action_list,name=rg_sequence_filler,if=(fury<30&((!variable.rg_enhance_cleave&buff.glaive_flurry.up&buff.rending_strike.up)||(variable.rg_enhance_cleave&!buff.rending_strike.up)))||(action.fracture.charges_fractional<1&((variable.rg_enhance_cleave&buff.rending_strike.up&buff.glaive_flurry.up)||(!variable.rg_enhance_cleave&!buff.glaive_flurry.up)))\nactions.rg_sequence+=/fracture,if=((variable.rg_enhance_cleave&buff.rending_strike.up&buff.glaive_flurry.up)||(!variable.rg_enhance_cleave&!buff.glaive_flurry.up))\nactions.rg_sequence+=/shear,if=((variable.rg_enhance_cleave&buff.rending_strike.up&buff.glaive_flurry.up)||(!variable.rg_enhance_cleave&!buff.glaive_flurry.up))\nactions.rg_sequence+=/soul_cleave,if=((!variable.rg_enhance_cleave&buff.glaive_flurry.up&buff.rending_strike.up)||(variable.rg_enhance_cleave&!buff.rending_strike.up))\n## [Hekili] Fall-through actions in case the \"wrong\" sequence of empowered spells was cast.\nactions.rg_sequence+=/fracture,if=buff.rending_strike.up&!buff.glaive_flurry.up\nactions.rg_sequence+=/shear,if=buff.rending_strike.up&!buff.glaive_flurry.up\nactions.rg_sequence+=/soul_cleave,if=!buff.rending_strike.up&buff.glaive_flurry.up\n\nactions.rg_sequence_filler+=/felblade\nactions.rg_sequence_filler+=/fracture,if=!buff.rending_strike.up\n## actions.rg_sequence_filler+=/wait,sec=0.1,if=action.fracture.charges_fractional>=0.8&((variable.rg_enhance_cleave&buff.rending_strike.up&buff.glaive_flurry.up)||(!variable.rg_enhance_cleave&!buff.glaive_flurry.up))\nactions.rg_sequence_filler+=/sigil_of_flame\nactions.rg_sequence_filler+=/sigil_of_spite\nactions.rg_sequence_filler+=/soul_carver\nactions.rg_sequence_filler+=/fel_devastation\nactions.rg_sequence_filler+=/throw_glaive", ["version"] = 20250303, ["warnings"] = "The import for 'rg_prep' required some automated changes.\nLine 2: Converted 'talent.unhindered_assault' to 'talent.unhindered_assault.enabled' (1x).\n\nThe import for 'fs' required some automated changes.\nLine 1: Converted 'talent.aura_of_pain' to 'talent.aura_of_pain.enabled' (1x).\nLine 1: Converted operations in '(action.sigil_of_flame.crit_pct+(talent.aura_of_pain.enabled*6))%100' to '(action.sigil_of_flame.crit_pct+(talent.aura_of_pain.enabled*6))/100'.\nLine 1: Converted 'talent.volatile_flameblood' to 'talent.volatile_flameblood.enabled' (1x).\nLine 3: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 8: Converted 'talent.flames_of_fury' to 'talent.flames_of_fury.enabled' (1x).\nLine 11: Converted 'talent.volatile_flameblood' to 'talent.volatile_flameblood.enabled' (1x).\nLine 13: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 14: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 15: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 16: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 17: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 18: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 19: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 20: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 22: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 25: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\nLine 26: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 27: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 28: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 28: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 29: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 29: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 30: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 30: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 31: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 31: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 31: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 31: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 32: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 32: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 32: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 32: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 34: Converted 'talent.fallout' to 'talent.fallout.enabled' (1x).\nLine 34: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 35: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 37: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 37: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\nLine 45: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 45: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 45: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 45: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 46: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 46: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 47: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 48: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\n\nThe import for 'fel_dev' required some automated changes.\nLine 3: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\n\nThe import for 'rg_overflow' required some automated changes.\nLine 3: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 4: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\n\nThe import for 'metamorphosis' required some automated changes.\nLine 4: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 4: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 6: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 6: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 6: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 6: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 7: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 7: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 8: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 11: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 12: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 17: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 18: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 19: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 4: Converted 'talent.soul_sigils' to 'talent.soul_sigils.enabled' (1x).\nLine 5: Converted 'talent.fracture' to 'talent.fracture.enabled' (1x).\nLine 6: Converted 'talent.fracture' to 'talent.fracture.enabled' (1x).\nLine 7: Converted 'talent.soul_carver' to 'talent.soul_carver.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.agility' to 'trinket.t1.has_buff.agility' (1x).\nLine 4: Converted 'trinket.1.has_buff.agility' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 4: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 4: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 4: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 4: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.agility' to 'trinket.t2.has_buff.agility' (1x).\nLine 5: Converted 'trinket.2.has_buff.agility' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 5: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 5: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 5: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 5: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\nLine 7: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'meta_prep' required some automated changes.\nLine 2: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 2: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\n\nThe import for 'ar' required some automated changes.\nLine 1: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 2: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 3: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 4: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 11: Converted 'talent.soul_sigils' to 'talent.soul_sigils.enabled' (1x).\nLine 11: Converted 'talent.soul_sigils' to 'talent.soul_sigils.enabled' (1x).\nLine 20: Converted 'talent.fallout' to 'talent.fallout.enabled' (1x).\nLine 22: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 22: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 28: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 29: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 30: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 30: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\nLine 30: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 34: Converted 'talent.unhindered_assault' to 'talent.unhindered_assault.enabled' (1x).\nLine 39: Converted 'talent.unhindered_assault' to 'talent.unhindered_assault.enabled' (1x).\n\nThe import for 'fel_dev_prep' required some automated changes.\nLine 3: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 5: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 6: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\n\nThe import for 'ar_execute' required some automated changes.\nLine 2: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 3: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\n\nImported 14 action lists.\n", ["author"] = "SimC", ["lists"] = { ["rg_prep"] = { { ["action"] = "felblade", ["enabled"] = true, }, { ["enabled"] = true, ["use_off_gcd"] = 1, ["action"] = "vengeful_retreat", ["criteria"] = "! cooldown.felblade.up & talent.unhindered_assault.enabled", }, { ["action"] = "sigil_of_flame", ["enabled"] = true, }, { ["action"] = "immolation_aura", ["enabled"] = true, }, { ["action"] = "fracture", ["enabled"] = true, }, }, ["fs"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( action.sigil_of_flame.crit_pct + ( talent.aura_of_pain.enabled * 6 ) ) / 100", ["var_name"] = "crit_pct", ["criteria"] = "active_dot.sigil_of_flame > 0 & talent.volatile_flameblood.enabled", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "2 + ( 2 * gcd.max )", ["var_name"] = "fel_dev_sequence_time", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "gcd.max", ["var_name"] = "fel_dev_sequence_time", ["criteria"] = "talent.fiery_demise.enabled & cooldown.fiery_brand.up", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "gcd.max", ["var_name"] = "fel_dev_sequence_time", ["criteria"] = "cooldown.sigil_of_flame.up || cooldown.sigil_of_flame.remains < variable.fel_dev_sequence_time", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "gcd.max", ["var_name"] = "fel_dev_sequence_time", ["criteria"] = "cooldown.immolation_aura.up || cooldown.immolation_aura.remains < variable.fel_dev_sequence_time", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "0", ["var_name"] = "fel_dev_passive_fury_gen", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "2.5 * floor ( ( buff.student_of_suffering.remains >? variable.fel_dev_sequence_time ) )", ["var_name"] = "fel_dev_passive_fury_gen", ["criteria"] = "talent.student_of_suffering.enabled & ( buff.student_of_suffering.remains > 1 || prev_gcd.1.sigil_of_flame )", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "30 + ( 2 * talent.flames_of_fury.enabled * spell_targets.sigil_of_flame )", ["var_name"] = "fel_dev_passive_fury_gen", ["criteria"] = "( cooldown.sigil_of_flame.remains < variable.fel_dev_sequence_time )", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "8", ["var_name"] = "fel_dev_passive_fury_gen", ["criteria"] = "cooldown.immolation_aura.remains < variable.fel_dev_sequence_time", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "2 * floor ( ( buff.immolation_aura.remains >? variable.fel_dev_sequence_time ) )", ["var_name"] = "fel_dev_passive_fury_gen", ["criteria"] = "buff.immolation_aura.remains > 1", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "7.5 * variable.crit_pct * floor ( ( buff.immolation_aura.remains >? variable.fel_dev_sequence_time ) )", ["var_name"] = "fel_dev_passive_fury_gen", ["criteria"] = "talent.volatile_flameblood.enabled & buff.immolation_aura.remains > 1", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "22", ["var_name"] = "fel_dev_passive_fury_gen", ["criteria"] = "talent.darkglare_boon.enabled", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "spbomb_threshold", ["value"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )", ["value_else"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )", ["criteria"] = "talent.fiery_demise.enabled & dot.fiery_brand.ticking", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spbomb", ["value"] = "soul_fragments >= variable.spbomb_threshold", ["value_else"] = "0", ["criteria"] = "talent.spirit_bomb.enabled", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spbomb_soon", ["value"] = "soul_fragments >= variable.spbomb_threshold", ["value_else"] = "0", ["criteria"] = "talent.spirit_bomb.enabled", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spbomb_one_gcd", ["value"] = "( soul_fragments + variable.num_spawnable_souls ) >= variable.spbomb_threshold", ["value_else"] = "0", ["criteria"] = "talent.spirit_bomb.enabled", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "spburst_threshold", ["value"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )", ["value_else"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )", ["criteria"] = "talent.fiery_demise.enabled & dot.fiery_brand.ticking", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spburst", ["value"] = "soul_fragments >= variable.spburst_threshold", ["value_else"] = "0", ["criteria"] = "talent.spirit_bomb.enabled", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spburst_soon", ["value"] = "soul_fragments >= variable.spburst_threshold", ["value_else"] = "0", ["criteria"] = "talent.spirit_bomb.enabled", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spburst_one_gcd", ["value"] = "( soul_fragments + variable.num_spawnable_souls ) >= variable.spburst_threshold", ["value_else"] = "0", ["criteria"] = "talent.spirit_bomb.enabled", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "0", ["var_name"] = "meta_prep_time", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "action.fiery_brand.execute_time", ["var_name"] = "meta_prep_time", ["criteria"] = "talent.fiery_demise.enabled & cooldown.fiery_brand.up", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "action.sigil_of_flame.execute_time * action.sigil_of_flame.charges", ["var_name"] = "meta_prep_time", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "dont_soul_cleave", ["value"] = "buff.demonsurge_spirit_burst.up || ( buff.metamorphosis.remains < ( gcd.max * 2 ) & ( ( fury + variable.fel_dev_passive_fury_gen ) < 120 || ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) ) )", ["value_else"] = "( cooldown.fel_devastation.remains < ( gcd.max * 3 ) & ( ( fury + variable.fel_dev_passive_fury_gen ) < 120 ) || ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) ) )", ["criteria"] = "buff.metamorphosis.up & buff.demonsurge_hardcast.up", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "fiery_brand_back_before_meta", ["value"] = "charges >= max_charges || ( charges_fractional >= 1 & cooldown.fiery_brand.full_recharge_time <= gcd.remains + execute_time ) || ( charges_fractional >= 1 & ( ( 1 - ( charges_fractional - 1 ) ) * cooldown.fiery_brand.duration ) <= cooldown.metamorphosis.remains )", ["value_else"] = "( cooldown.fiery_brand.duration <= cooldown.metamorphosis.remains )", ["criteria"] = "talent.down_in_flames.enabled", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "hold_sof_for_meta", ["value"] = "( charges_fractional >= 1 & ( ( 1 - ( charges_fractional - 1 ) ) * cooldown.sigil_of_flame.duration ) > cooldown.metamorphosis.remains )", ["value_else"] = "cooldown.sigil_of_flame.duration > cooldown.metamorphosis.remains", ["criteria"] = "talent.illuminated_sigils.enabled", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "hold_sof_for_fel_dev", ["value"] = "( charges_fractional >= 1 & ( ( 1 - ( charges_fractional - 1 ) ) * cooldown.sigil_of_flame.duration ) > cooldown.fel_devastation.remains )", ["value_else"] = "cooldown.sigil_of_flame.duration > cooldown.fel_devastation.remains", ["criteria"] = "talent.illuminated_sigils.enabled", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "hold_sof_for_student", ["value"] = "prev_gcd.1.sigil_of_flame || ( buff.student_of_suffering.remains > ( 4 - talent.quickened_sigils.enabled ) )", ["value_else"] = "0", ["criteria"] = "talent.student_of_suffering.enabled", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "hold_sof_for_dot", ["value"] = "0", ["value_else"] = "prev_gcd.1.sigil_of_flame || ( dot.sigil_of_flame.remains > ( 4 - talent.quickened_sigils.enabled ) )", ["criteria"] = "talent.ascending_flame.enabled", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( talent.illuminated_sigils.enabled & time < ( 2 - talent.quickened_sigils.enabled ) )", ["var_name"] = "hold_sof_for_precombat", }, { ["enabled"] = true, ["criteria"] = "! variable.trinket_1_buffs || ( variable.trinket_1_buffs & ( ( buff.metamorphosis.up & buff.demonsurge_hardcast.up ) || ( buff.metamorphosis.up & ! buff.demonsurge_hardcast.up & cooldown.metamorphosis.remains < 10 ) || ( cooldown.metamorphosis.remains > trinket.t1.cooldown.duration ) || ( variable.trinket_2_buffs & trinket.t2.cooldown.remains < cooldown.metamorphosis.remains ) ) )", ["action"] = "trinket1", ["slot"] = "trinket1", }, { ["enabled"] = true, ["criteria"] = "! variable.trinket_2_buffs || ( variable.trinket_2_buffs & ( ( buff.metamorphosis.up & buff.demonsurge_hardcast.up ) || ( buff.metamorphosis.up & ! buff.demonsurge_hardcast.up & cooldown.metamorphosis.remains < 10 ) || ( cooldown.metamorphosis.remains > trinket.t2.cooldown.duration ) || ( variable.trinket_1_buffs & trinket.t1.cooldown.remains < cooldown.metamorphosis.remains ) ) )", ["action"] = "trinket2", ["slot"] = "trinket2", }, { ["enabled"] = true, ["criteria"] = "time < 4", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "! ( cooldown.metamorphosis.up & prev_gcd.1.sigil_of_flame ) & ! ( talent.fallout.enabled & talent.spirit_bomb.enabled & spell_targets.spirit_bomb >= 3 & ( ( buff.metamorphosis.up & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( ! buff.metamorphosis.up & ( variable.can_spbomb || variable.can_spbomb_soon ) ) ) ) & ! ( buff.metamorphosis.up & buff.demonsurge_hardcast.up )", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "! talent.student_of_suffering.enabled & ! variable.hold_sof_for_dot & ! variable.hold_sof_for_precombat", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["criteria"] = "! variable.hold_sof_for_precombat & ( charges = max_charges || ( ! variable.hold_sof_for_student & ! variable.hold_sof_for_dot & ! variable.hold_sof_for_meta & ! variable.hold_sof_for_fel_dev ) )", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["criteria"] = "active_dot.fiery_brand = 0 & ( ! talent.fiery_demise.enabled || ( ( talent.down_in_flames.enabled & charges >= max_charges ) || variable.fiery_brand_back_before_meta ) )", ["action"] = "fiery_brand", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "fight_remains < 20", ["list_name"] = "fs_execute", }, { ["enabled"] = true, ["action"] = "run_action_list", ["criteria"] = "buff.metamorphosis.up & ! buff.demonsurge_hardcast.up & ( buff.demonsurge_soul_sunder.up || buff.demonsurge_spirit_burst.up )", ["list_name"] = "fel_dev", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "buff.metamorphosis.up & buff.demonsurge_hardcast.up", ["list_name"] = "metamorphosis", }, { ["enabled"] = true, ["action"] = "run_action_list", ["criteria"] = "! buff.demonsurge_hardcast.up & ( cooldown.fel_devastation.up || ( cooldown.fel_devastation.remains <= ( gcd.max * 3 ) ) )", ["list_name"] = "fel_dev_prep", }, { ["enabled"] = true, ["action"] = "run_action_list", ["criteria"] = "( cooldown.metamorphosis.remains <= variable.meta_prep_time ) & ! cooldown.fel_devastation.up & ! cooldown.fel_devastation.remains < 10 & ! buff.demonsurge_soul_sunder.up & ! buff.demonsurge_spirit_burst.up", ["list_name"] = "meta_prep", }, { ["action"] = "the_hunt", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( ( cooldown.sigil_of_spite.remains < execute_time || cooldown.soul_carver.remains < execute_time ) & cooldown.fel_devastation.remains < ( execute_time + gcd.max ) & fury < 50 )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "( ! talent.fiery_demise.enabled || talent.fiery_demise.enabled & dot.fiery_brand.ticking ) & ( ( ! talent.spirit_bomb.enabled || variable.single_target ) || ( talent.spirit_bomb.enabled & ! prev_gcd.1.sigil_of_spite & ( ( soul_fragments + 3 <= 5 & fury >= 40 ) || ( soul_fragments = 0 & fury >= 15 ) ) ) )", ["action"] = "soul_carver", }, { ["enabled"] = true, ["criteria"] = "( ! talent.cycle_of_binding.enabled || ( cooldown.sigil_of_spite.duration < ( cooldown.metamorphosis.remains + 18 ) ) ) & ( ! talent.spirit_bomb.enabled || ( fury >= 80 & ( variable.can_spbomb || variable.can_spbomb_soon ) ) || ( soul_fragments <= ( 2 - talent.soul_sigils.rank ) ) )", ["action"] = "sigil_of_spite", }, { ["enabled"] = true, ["criteria"] = "variable.can_spburst & talent.fiery_demise.enabled & dot.fiery_brand.ticking & cooldown.fel_devastation.remains >= ( gcd.max * 3 )", ["action"] = "spirit_burst", }, { ["enabled"] = true, ["criteria"] = "variable.can_spbomb & talent.fiery_demise.enabled & dot.fiery_brand.ticking & cooldown.fel_devastation.remains >= ( gcd.max * 3 )", ["action"] = "spirit_bomb", }, { ["enabled"] = true, ["criteria"] = "variable.single_target & ! variable.dont_soul_cleave", ["action"] = "soul_sunder", }, { ["enabled"] = true, ["criteria"] = "variable.single_target & ! variable.dont_soul_cleave", ["action"] = "soul_cleave", }, { ["enabled"] = true, ["criteria"] = "variable.can_spburst & cooldown.fel_devastation.remains >= ( gcd.max * 3 )", ["action"] = "spirit_burst", }, { ["enabled"] = true, ["criteria"] = "variable.can_spbomb & cooldown.fel_devastation.remains >= ( gcd.max * 3 )", ["action"] = "spirit_bomb", }, { ["enabled"] = true, ["criteria"] = "( ( fury < 40 & ( ( buff.metamorphosis.up & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( ! buff.metamorphosis.up & ( variable.can_spbomb || variable.can_spbomb_soon ) ) ) ) )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "( ( fury < 40 & ( ( buff.metamorphosis.up & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( ! buff.metamorphosis.up & ( variable.can_spbomb || variable.can_spbomb_soon ) ) ) ) || ( buff.metamorphosis.up & variable.can_spburst_one_gcd ) || ( ! buff.metamorphosis.up & variable.can_spbomb_one_gcd ) )", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "fury.deficit >= 40", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "! variable.dont_soul_cleave", ["action"] = "soul_sunder", }, { ["enabled"] = true, ["criteria"] = "! variable.dont_soul_cleave", ["action"] = "soul_cleave", }, { ["action"] = "fracture", ["enabled"] = true, }, { ["action"] = "throw_glaive", ["enabled"] = true, }, }, ["rg_overflow"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "1", ["var_name"] = "trigger_overflow", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "1", ["var_name"] = "rg_enhance_cleave", }, { ["enabled"] = true, ["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) >= 30 & ! buff.rending_strike.up & ! buff.glaive_flurry.up", ["action"] = "reavers_glaive", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) < 30", ["list_name"] = "rg_prep", }, }, ["fel_dev"] = { { ["enabled"] = true, ["criteria"] = "buff.demonsurge_spirit_burst.up & ( variable.can_spburst || soul_fragments >= 4 || ( buff.metamorphosis.remains < ( gcd.max * 2 ) ) )", ["action"] = "spirit_burst", }, { ["enabled"] = true, ["criteria"] = "buff.demonsurge_soul_sunder.up & ( ! buff.demonsurge_spirit_burst.up || ( buff.metamorphosis.remains < ( gcd.max * 2 ) ) )", ["action"] = "soul_sunder", }, { ["enabled"] = true, ["criteria"] = "( ! talent.cycle_of_binding.enabled || ( cooldown.sigil_of_spite.duration < ( cooldown.metamorphosis.remains + 18 ) ) ) & ( soul_fragments <= 2 & buff.demonsurge_spirit_burst.up )", ["action"] = "sigil_of_spite", }, { ["enabled"] = true, ["criteria"] = "soul_fragments <= 2 & ! prev_gcd.1.sigil_of_spite & buff.demonsurge_spirit_burst.up", ["action"] = "soul_carver", }, { ["enabled"] = true, ["criteria"] = "soul_fragments <= 2 & buff.demonsurge_spirit_burst.up", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "buff.demonsurge_spirit_burst.up || buff.demonsurge_soul_sunder.up", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "buff.demonsurge_spirit_burst.up || buff.demonsurge_soul_sunder.up", ["action"] = "fracture", }, }, ["meta_prep"] = { { ["enabled"] = true, ["use_off_gcd"] = 1, ["action"] = "metamorphosis", ["criteria"] = "cooldown.sigil_of_flame.charges < 1", }, { ["enabled"] = true, ["criteria"] = "talent.fiery_demise.enabled & ( ( talent.down_in_flames.enabled & charges >= max_charges ) || active_dot.fiery_brand = 0 )", ["action"] = "fiery_brand", }, { ["use_off_gcd"] = 1, ["action"] = "potion", ["enabled"] = true, }, { ["action"] = "sigil_of_flame", ["enabled"] = true, }, }, ["fs_execute"] = { { ["use_off_gcd"] = 1, ["action"] = "metamorphosis", ["enabled"] = true, }, { ["action"] = "the_hunt", ["enabled"] = true, }, { ["action"] = "sigil_of_flame", ["enabled"] = true, }, { ["action"] = "fiery_brand", ["enabled"] = true, }, { ["action"] = "sigil_of_spite", ["enabled"] = true, }, { ["action"] = "soul_carver", ["enabled"] = true, }, { ["action"] = "fel_devastation", ["enabled"] = true, }, }, ["rg_sequence"] = { { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "( fury < 30 & ( ( ! variable.rg_enhance_cleave & buff.glaive_flurry.up & buff.rending_strike.up ) || ( variable.rg_enhance_cleave & ! buff.rending_strike.up ) ) ) || ( action.fracture.charges_fractional < 1 & ( ( variable.rg_enhance_cleave & buff.rending_strike.up & buff.glaive_flurry.up ) || ( ! variable.rg_enhance_cleave & ! buff.glaive_flurry.up ) ) )", ["list_name"] = "rg_sequence_filler", }, { ["enabled"] = true, ["criteria"] = "( ( variable.rg_enhance_cleave & buff.rending_strike.up & buff.glaive_flurry.up ) || ( ! variable.rg_enhance_cleave & ! buff.glaive_flurry.up ) )", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "( ( variable.rg_enhance_cleave & buff.rending_strike.up & buff.glaive_flurry.up ) || ( ! variable.rg_enhance_cleave & ! buff.glaive_flurry.up ) )", ["action"] = "shear", }, { ["enabled"] = true, ["criteria"] = "( ( ! variable.rg_enhance_cleave & buff.glaive_flurry.up & buff.rending_strike.up ) || ( variable.rg_enhance_cleave & ! buff.rending_strike.up ) )", ["action"] = "soul_cleave", }, { ["enabled"] = true, ["criteria"] = "buff.rending_strike.up & ! buff.glaive_flurry.up", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "buff.rending_strike.up & ! buff.glaive_flurry.up", ["action"] = "shear", }, { ["enabled"] = true, ["criteria"] = "! buff.rending_strike.up & buff.glaive_flurry.up", ["action"] = "soul_cleave", }, }, ["metamorphosis"] = { { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.remains < ( gcd.max * 3 )", ["action"] = "fel_desolation", }, { ["enabled"] = true, ["criteria"] = "fury < 50 & ( buff.metamorphosis.remains < ( gcd.max * 3 ) ) & cooldown.fel_desolation.up", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "fury < 50 & ! cooldown.felblade.up & ( buff.metamorphosis.remains < ( gcd.max * 3 ) ) & cooldown.fel_desolation.up", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "talent.illuminated_sigils.enabled & talent.cycle_of_binding.enabled & charges = max_charges", ["action"] = "sigil_of_doom", }, { ["action"] = "immolation_aura", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! talent.student_of_suffering.enabled & ( talent.ascending_flame.enabled || ( ! talent.ascending_flame.enabled & ! prev_gcd.1.sigil_of_doom & ( dot.sigil_of_doom.remains < ( 4 - talent.quickened_sigils.enabled ) ) ) )", ["action"] = "sigil_of_doom", }, { ["enabled"] = true, ["criteria"] = "talent.student_of_suffering.enabled & ! prev_gcd.1.sigil_of_flame & ! prev_gcd.1.sigil_of_doom & ( buff.student_of_suffering.remains < ( 4 - talent.quickened_sigils.enabled ) )", ["action"] = "sigil_of_doom", }, { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.remains < ( ( 2 - talent.quickened_sigils.enabled ) + ( charges * gcd.max ) )", ["action"] = "sigil_of_doom", }, { ["enabled"] = true, ["criteria"] = "soul_fragments <= 3 & ( soul_fragments >= 2 || prev_gcd.1.sigil_of_spite )", ["action"] = "fel_desolation", }, { ["enabled"] = true, ["criteria"] = "( ( cooldown.sigil_of_spite.remains < execute_time || cooldown.soul_carver.remains < execute_time ) & cooldown.fel_desolation.remains < ( execute_time + gcd.max ) & fury < 50 )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "( ! talent.spirit_bomb.enabled || ( variable.single_target & ! buff.demonsurge_spirit_burst.up ) ) || ( ( ( soul_fragments + 3 ) <= 6 ) & fury >= 40 & ! prev_gcd.1.sigil_of_spite )", ["action"] = "soul_carver", }, { ["enabled"] = true, ["criteria"] = "! talent.spirit_bomb.enabled || ( fury >= 80 & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( soul_fragments <= ( 2 - talent.soul_sigils.rank ) )", ["action"] = "sigil_of_spite", }, { ["enabled"] = true, ["criteria"] = "variable.can_spburst & buff.demonsurge_spirit_burst.up", ["action"] = "spirit_burst", }, { ["action"] = "fel_desolation", ["enabled"] = true, }, { ["action"] = "the_hunt", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.demonsurge_soul_sunder.up & ! buff.demonsurge_spirit_burst.up & ! variable.can_spburst_one_gcd", ["action"] = "soul_sunder", }, { ["enabled"] = true, ["criteria"] = "variable.can_spburst & ( talent.fiery_demise.enabled & dot.fiery_brand.ticking || variable.big_aoe ) & buff.metamorphosis.remains > ( gcd.max * 2 )", ["action"] = "spirit_burst", }, { ["enabled"] = true, ["criteria"] = "fury < 40 & ( variable.can_spburst || variable.can_spburst_soon ) & ( buff.demonsurge_spirit_burst.up || talent.fiery_demise.enabled & dot.fiery_brand.ticking || variable.big_aoe )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "fury < 40 & ( variable.can_spburst || variable.can_spburst_soon || variable.can_spburst_one_gcd ) & ( buff.demonsurge_spirit_burst.up || talent.fiery_demise.enabled & dot.fiery_brand.ticking || variable.big_aoe )", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "variable.can_spburst_one_gcd & ( buff.demonsurge_spirit_burst.up || variable.big_aoe ) & ! prev_gcd.1.fracture", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "variable.single_target & ! variable.dont_soul_cleave", ["action"] = "soul_sunder", }, { ["enabled"] = true, ["criteria"] = "variable.can_spburst & buff.metamorphosis.remains > ( gcd.max * 2 )", ["action"] = "spirit_burst", }, { ["enabled"] = true, ["criteria"] = "fury.deficit >= 40", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "! variable.dont_soul_cleave & ! ( variable.big_aoe & ( variable.can_spburst || variable.can_spburst_soon ) )", ["action"] = "soul_sunder", }, { ["action"] = "felblade", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! prev_gcd.1.fracture", ["action"] = "fracture", }, }, ["default"] = { { ["action"] = "disrupt", ["enabled"] = true, }, { ["enabled"] = true, ["use_off_gcd"] = 1, ["action"] = "demon_spikes", ["criteria"] = "! buff.demon_spikes.up & ( tanking || time < 5 )", }, { ["enabled"] = true, ["op"] = "reset", ["action"] = "variable", ["var_name"] = "num_spawnable_souls", ["default"] = "0", }, { ["enabled"] = true, ["op"] = "max", ["action"] = "variable", ["value"] = "1", ["var_name"] = "num_spawnable_souls", ["criteria"] = "talent.soul_sigils.enabled & cooldown.sigil_of_flame.up", }, { ["enabled"] = true, ["op"] = "max", ["action"] = "variable", ["value"] = "2", ["var_name"] = "num_spawnable_souls", ["criteria"] = "talent.fracture.enabled & cooldown.fracture.charges_fractional >= 1 & ! buff.metamorphosis.up", }, { ["enabled"] = true, ["op"] = "max", ["action"] = "variable", ["value"] = "3", ["var_name"] = "num_spawnable_souls", ["criteria"] = "talent.fracture.enabled & cooldown.fracture.charges_fractional >= 1 & buff.metamorphosis.up", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "1", ["var_name"] = "num_spawnable_souls", ["criteria"] = "talent.soul_carver.enabled & ( cooldown.soul_carver.remains > ( cooldown.soul_carver.duration - 3 ) )", }, { ["use_off_gcd"] = 1, ["action"] = "infernal_strike", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "! hero_tree.felscarred", ["list_name"] = "ar", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "hero_tree.felscarred", ["list_name"] = "fs", }, }, ["precombat"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "spell_targets.spirit_bomb = 1", ["var_name"] = "single_target", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "spell_targets.spirit_bomb >= 2 & spell_targets.spirit_bomb <= 5", ["var_name"] = "small_aoe", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "spell_targets.spirit_bomb >= 6", ["var_name"] = "big_aoe", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff )", ["var_name"] = "trinket_1_buffs", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff )", ["var_name"] = "trinket_2_buffs", }, { ["action"] = "arcane_torrent", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "hero_tree.aldrachi_reaver || ( hero_tree.felscarred & talent.student_of_suffering.enabled )", ["action"] = "sigil_of_flame", }, { ["action"] = "immolation_aura", ["enabled"] = true, }, }, ["rg_sequence_filler"] = { { ["action"] = "felblade", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! buff.rending_strike.up", ["action"] = "fracture", }, { ["action"] = "sigil_of_flame", ["enabled"] = true, }, { ["action"] = "sigil_of_spite", ["enabled"] = true, }, { ["action"] = "soul_carver", ["enabled"] = true, }, { ["action"] = "fel_devastation", ["enabled"] = true, }, { ["action"] = "throw_glaive", ["enabled"] = true, }, }, ["fel_dev_prep"] = { { ["enabled"] = true, ["use_off_gcd"] = 1, ["action"] = "potion", ["criteria"] = "prev_gcd.1.fiery_brand", }, { ["enabled"] = true, ["criteria"] = "! variable.hold_sof_for_precombat & ! variable.hold_sof_for_student & ! variable.hold_sof_for_dot", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["criteria"] = "talent.fiery_demise.enabled & ( ( fury + variable.fel_dev_passive_fury_gen ) >= 120 ) & ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) & active_dot.fiery_brand = 0 & ( ( cooldown.metamorphosis.remains < ( execute_time + action.fel_devastation.execute_time + ( gcd.max * 2 ) ) ) || variable.fiery_brand_back_before_meta )", ["action"] = "fiery_brand", }, { ["enabled"] = true, ["criteria"] = "( ( fury + variable.fel_dev_passive_fury_gen ) >= 120 ) & ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 )", ["action"] = "fel_devastation", }, { ["enabled"] = true, ["criteria"] = "( ! talent.cycle_of_binding.enabled || ( cooldown.sigil_of_spite.duration < ( cooldown.metamorphosis.remains + 18 ) ) ) & ( soul_fragments <= 1 || ( ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) & action.fracture.charges_fractional < 1 ) )", ["action"] = "sigil_of_spite", }, { ["enabled"] = true, ["criteria"] = "( ! talent.cycle_of_binding.enabled || cooldown.metamorphosis.remains > 20 ) & ( soul_fragments <= 1 || ( ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) & action.fracture.charges_fractional < 1 ) ) & ! prev_gcd.1.sigil_of_spite & ! prev_gcd.2.sigil_of_spite", ["action"] = "soul_carver", }, { ["enabled"] = true, ["criteria"] = "( fury + variable.fel_dev_passive_fury_gen ) < 120 & ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) || ( fury + variable.fel_dev_passive_fury_gen ) < 120", ["action"] = "fracture", }, { ["action"] = "felblade", ["enabled"] = true, }, { ["action"] = "fracture", ["enabled"] = true, }, { ["action"] = "fel_devastation", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( ( fury + variable.fel_dev_passive_fury_gen ) >= 150 )", ["action"] = "soul_cleave", }, { ["action"] = "throw_glaive", ["enabled"] = true, }, }, ["ar"] = { { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "spb_threshold", ["value"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )", ["value_else"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )", ["criteria"] = "talent.fiery_demise.enabled & dot.fiery_brand.ticking", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spb", ["value"] = "soul_fragments >= variable.spb_threshold", ["value_else"] = "0", ["criteria"] = "talent.spirit_bomb.enabled", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spb_soon", ["value"] = "soul_fragments >= variable.spb_threshold", ["value_else"] = "0", ["criteria"] = "talent.spirit_bomb.enabled", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spb_one_gcd", ["value"] = "( soul_fragments + variable.num_spawnable_souls ) >= variable.spb_threshold", ["value_else"] = "0", ["criteria"] = "talent.spirit_bomb.enabled", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "time + action.fracture.execute_time + 20", ["var_name"] = "double_rm_expires", ["criteria"] = "! buff.glaive_flurry.up & buff.rending_strike.up", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "double_rm_remains", ["value"] = "variable.double_rm_expires - time", ["value_else"] = "0", ["criteria"] = "( variable.double_rm_expires - time ) > 0", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "0", ["var_name"] = "trigger_overflow", ["criteria"] = "! buff.glaive_flurry.up & ! buff.rending_strike.up & ! prev_gcd.1.reavers_glaive", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "rg_enhance_cleave", ["value"] = "1", ["value_else"] = "0", ["criteria"] = "variable.trigger_overflow || ( spell_targets.spirit_bomb >= 4 ) || ( fight_remains < 10 || target.time_to_die < 10 )", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "soul_fragments + buff.art_of_the_glaive.stack", ["var_name"] = "souls_before_next_rg_sequence", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "( 1.1 * ( 1 + stat.haste ) ) * ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) )", ["var_name"] = "souls_before_next_rg_sequence", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "3 + talent.soul_sigils.enabled", ["var_name"] = "souls_before_next_rg_sequence", ["criteria"] = "cooldown.sigil_of_spite.remains < ( variable.double_rm_remains - gcd.max - ( 2 - talent.soul_sigils.enabled ) )", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "3", ["var_name"] = "souls_before_next_rg_sequence", ["criteria"] = "cooldown.soul_carver.remains < ( variable.double_rm_remains - gcd.max )", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "3", ["var_name"] = "souls_before_next_rg_sequence", ["criteria"] = "cooldown.soul_carver.remains < ( variable.double_rm_remains - gcd.max - 3 )", }, { ["enabled"] = true, ["criteria"] = "! variable.trinket_1_buffs || ( variable.trinket_1_buffs & ( ( buff.rending_strike.up & buff.glaive_flurry.up ) || ( prev_gcd.1.reavers_glaive ) || ( buff.thrill_of_the_fight_damage.remains > 8 ) || ( buff.reavers_glaive.up & cooldown.the_hunt.remains < 5 ) ) )", ["action"] = "trinket1", ["slot"] = "trinket1", }, { ["enabled"] = true, ["criteria"] = "! variable.trinket_2_buffs || ( variable.trinket_2_buffs & ( ( buff.rending_strike.up & buff.glaive_flurry.up ) || ( prev_gcd.1.reavers_glaive ) || ( buff.thrill_of_the_fight_damage.remains > 8 ) || ( buff.reavers_glaive.up & cooldown.the_hunt.remains < 5 ) ) )", ["action"] = "trinket2", ["slot"] = "trinket2", }, { ["enabled"] = true, ["use_off_gcd"] = 1, ["action"] = "potion", ["criteria"] = "( buff.rending_strike.up & buff.glaive_flurry.up ) || prev_gcd.1.reavers_glaive", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "buff.glaive_flurry.up || buff.rending_strike.up || prev_gcd.1.reavers_glaive", ["list_name"] = "rg_sequence", }, { ["enabled"] = true, ["use_off_gcd"] = 1, ["action"] = "metamorphosis", ["criteria"] = "time < 5 || cooldown.fel_devastation.remains >= 20", }, { ["enabled"] = true, ["criteria"] = "! buff.reavers_glaive.up & ( buff.art_of_the_glaive.stack + soul_fragments ) < 20", ["action"] = "the_hunt", }, { ["enabled"] = true, ["criteria"] = "variable.can_spb & ( soul_fragments > 2 || prev_gcd.1.sigil_of_spite || prev_gcd.1.soul_carver || ( spell_targets.spirit_bomb >= 4 & talent.fallout.enabled & cooldown.immolation_aura.remains < gcd.max ) )", ["action"] = "spirit_bomb", }, { ["enabled"] = true, ["criteria"] = "( spell_targets.spirit_bomb >= 4 ) || ( ! buff.reavers_glaive.up || ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + gcd.max ) ) )", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "( talent.ascending_flame.enabled || ( ! prev_gcd.1.sigil_of_flame & dot.sigil_of_flame.remains < ( 4 - talent.quickened_sigils.enabled ) ) ) & ( ! buff.reavers_glaive.up || ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + gcd.max ) ) )", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["action"] = "run_action_list", ["criteria"] = "buff.reavers_glaive.up & spell_targets.spirit_bomb < 4 & debuff.reavers_mark.up & ( variable.double_rm_remains > ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) & ( ! buff.thrill_of_the_fight_damage.up || ( buff.thrill_of_the_fight_damage.remains < ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) > ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) & ( ( variable.souls_before_next_rg_sequence >= 20 ) || ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + cooldown.the_hunt.remains + action.the_hunt.execute_time ) ) )", ["list_name"] = "rg_overflow", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "boss & ( fight_remains < 10 || target.time_to_die < 10 )", ["list_name"] = "ar_execute", }, { ["enabled"] = true, ["criteria"] = "! buff.reavers_glaive.up & ( variable.double_rm_remains <= ( execute_time + ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( soul_fragments < 3 & ( ( buff.art_of_the_glaive.stack + soul_fragments ) >= 20 ) )", ["action"] = "soul_cleave", }, { ["enabled"] = true, ["criteria"] = "! buff.reavers_glaive.up & ( variable.double_rm_remains <= ( execute_time + ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( ( buff.art_of_the_glaive.stack + soul_fragments ) >= 20 )", ["action"] = "spirit_bomb", }, { ["enabled"] = true, ["criteria"] = "! buff.reavers_glaive.up & ( variable.double_rm_remains <= ( execute_time + ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( ( buff.art_of_the_glaive.stack + ( spell_targets >? 5 ) ) >= 20 )", ["action"] = "bulk_extraction", }, { ["enabled"] = true, ["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) >= 30 & ( ( ! buff.thrill_of_the_fight_attack_speed.up || ( variable.double_rm_remains <= ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) || ( spell_targets.spirit_bomb >= 4 ) ) & ! ( buff.rending_strike.up || buff.glaive_flurry.up )", ["action"] = "reavers_glaive", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) < 30 & ( ( ! buff.thrill_of_the_fight_attack_speed.up || ( variable.double_rm_remains <= ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) || ( spell_targets.spirit_bomb >= 4 ) )", ["list_name"] = "rg_prep", }, { ["enabled"] = true, ["criteria"] = "( ! talent.fiery_demise.enabled & active_dot.fiery_brand = 0 ) || ( talent.down_in_flames.enabled & ( full_recharge_time < gcd.max ) ) || ( talent.fiery_demise.enabled & active_dot.fiery_brand = 0 & ( buff.reavers_glaive.up || cooldown.the_hunt.remains < 5 || buff.art_of_the_glaive.stack >= 15 || buff.thrill_of_the_fight_damage.remains > 5 ) )", ["action"] = "fiery_brand", }, { ["enabled"] = true, ["criteria"] = "buff.thrill_of_the_fight_damage.up || ( fury >= 80 & ( variable.can_spb || variable.can_spb_soon ) ) || ( ( soul_fragments + buff.art_of_the_glaive.stack + ( ( 1.1 * ( 1 + raw_haste_pct ) ) * ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) ) < 20 )", ["action"] = "sigil_of_spite", }, { ["enabled"] = true, ["criteria"] = "variable.can_spb", ["action"] = "spirit_bomb", }, { ["enabled"] = true, ["criteria"] = "( variable.can_spb || variable.can_spb_soon ) & fury < 40", ["action"] = "felblade", }, { ["enabled"] = true, ["use_off_gcd"] = 1, ["action"] = "vengeful_retreat", ["criteria"] = "( variable.can_spb || variable.can_spb_soon ) & fury < 40 & ! cooldown.felblade.up & talent.unhindered_assault.enabled", }, { ["enabled"] = true, ["criteria"] = "( variable.can_spb || variable.can_spb_soon || variable.can_spb_one_gcd ) & fury < 40", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "buff.thrill_of_the_fight_damage.up || ( ( soul_fragments + buff.art_of_the_glaive.stack + ( ( 1.1 * ( 1 + raw_haste_pct ) ) * ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) ) < 20 )", ["action"] = "soul_carver", }, { ["enabled"] = true, ["criteria"] = "! buff.metamorphosis.up & ( ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + 2 ) ) || ( spell_targets.spirit_bomb >= 4 ) ) & ( ( action.fracture.full_recharge_time < ( 2 + gcd.max ) ) || ( ! variable.single_target & buff.thrill_of_the_fight_damage.up ) )", ["action"] = "fel_devastation", }, { ["enabled"] = true, ["criteria"] = "cooldown.fel_devastation.remains < gcd.max & fury < 50", ["action"] = "felblade", }, { ["enabled"] = true, ["use_off_gcd"] = 1, ["action"] = "vengeful_retreat", ["criteria"] = "cooldown.fel_devastation.remains < gcd.max & fury < 50 & ! cooldown.felblade.up & talent.unhindered_assault.enabled", }, { ["enabled"] = true, ["criteria"] = "cooldown.fel_devastation.remains < gcd.max & fury < 50", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "( full_recharge_time < gcd.max ) || buff.metamorphosis.up || variable.can_spb || variable.can_spb_soon || buff.warblades_hunger.stack >= 5", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "soul_fragments >= 1", ["action"] = "soul_cleave", }, { ["enabled"] = true, ["criteria"] = "spell_targets >= 3", ["action"] = "bulk_extraction", }, { ["action"] = "fracture", ["enabled"] = true, }, { ["action"] = "soul_cleave", ["enabled"] = true, }, { ["action"] = "shear", ["enabled"] = true, }, { ["action"] = "felblade", ["enabled"] = true, }, { ["action"] = "throw_glaive", ["enabled"] = true, }, }, ["ar_execute"] = { { ["use_off_gcd"] = 1, ["action"] = "metamorphosis", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) >= 30 & ! ( buff.rending_strike.up || buff.glaive_flurry.up )", ["action"] = "reavers_glaive", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "buff.reavers_glaive.up & ( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) < 30", ["list_name"] = "rg_prep", }, { ["enabled"] = true, ["criteria"] = "! buff.reavers_glaive.up", ["action"] = "the_hunt", }, { ["enabled"] = true, ["criteria"] = "spell_targets >= 3 & buff.art_of_the_glaive.stack >= 20", ["action"] = "bulk_extraction", }, { ["action"] = "sigil_of_flame", ["enabled"] = true, }, { ["action"] = "fiery_brand", ["enabled"] = true, }, { ["action"] = "sigil_of_spite", ["enabled"] = true, }, { ["action"] = "soul_carver", ["enabled"] = true, }, { ["action"] = "fel_devastation", ["enabled"] = true, }, }, }, }, }, ["notifications"] = { ["enabled"] = false, }, ["runOnce"] = { ["resetAberrantPackageDates_20190728_1"] = true, ["forceReloadAllDefaultPriorities_20220228"] = true, ["autoconvertGlowsForCustomGlow_20190326"] = true, ["removeOldThrottles_20241115"] = true, ["updateMaxRefreshToNewSpecOptions_20220222"] = true, ["forceEnableAllClassesOnceDueToBug_20220225"] = true, ["autoconvertDisplayToggle_20190621_1"] = true, ["forceEnableEnhancedRecheckBoomkin_20210712"] = true, ["enableAllOfTheThings_20180820"] = true, ["forceReloadClassDefaultOptions_20220306_577"] = true, ["resetRogueMfDOption_20200226"] = true, ["forceReloadClassDefaultOptions_20220306_581"] = true, ["fixHavocPriorityVersion_20240805"] = true, ["autoconvertDelaySweepToExtend_20190729"] = true, ["resetPotionsToDefaults_20190717"] = true, ["forceSpellFlashBrightness_20221030"] = true, }, }, ["Quillandria - Thunderhorn"] = { ["runOnce"] = { ["resetPotionsToDefaults_20190717"] = true, ["removeOldThrottles_20241115"] = true, ["forceReloadClassDefaultOptions_20220306_267"] = true, ["resetAllPotions_20201209"] = true, ["enableAllOfTheThings_20180820"] = true, ["resetGlobalCooldownSync_20210403"] = true, ["forceReloadClassDefaultOptions_20220306_266"] = true, ["forceReloadClassDefaultOptions_20220306_265"] = true, ["forceReloadAllDefaultPriorities_20220228"] = true, ["forceEnableAllClassesOnceDueToBug_20220225"] = true, ["autoconvertDelaySweepToExtend_20190729"] = true, ["forceSpellFlashBrightness_20221030"] = true, ["updateMaxRefreshToNewSpecOptions_20220222"] = true, ["resetRogueMfDOption_20200226"] = true, ["autoconvertGlowsForCustomGlow_20190326"] = true, ["fixHavocPriorityVersion_20240805"] = true, ["autoconvertDisplayToggle_20190621_1"] = true, ["forceEnableEnhancedRecheckBoomkin_20210712"] = true, ["resetAberrantPackageDates_20190728_1"] = true, }, ["specs"] = { [266] = { ["maxRefresh"] = 10, ["debuffPadding"] = 0, ["enhancedRecheck"] = false, ["nameplateRange"] = 8, ["potionsReset"] = 20180919.1, ["buffPadding"] = 0, }, [267] = { ["maxRefresh"] = 10, ["settings"] = { ["default_pet"] = "summon_sayaad", ["cataclysm_ttd"] = 11, ["cleave_apl"] = false, ["low_ttd_dot"] = 11, }, ["debuffPadding"] = 0, ["enhancedRecheck"] = false, ["nameplateRange"] = 8, ["potionsReset"] = 20180919.1, ["buffPadding"] = 0, }, [265] = { ["maxRefresh"] = 10, ["settings"] = { ["default_pet"] = "summon_sayaad", ["manage_ds_ticks"] = false, }, ["debuffPadding"] = 0, ["enhancedRecheck"] = false, ["nameplateRange"] = 8, ["potionsReset"] = 20180919.1, ["buffPadding"] = 0, }, [102] = { ["enhancedRecheck"] = true, }, }, ["packs"] = { ["Demonology"] = { ["source"] = "https://github.com/simulationcraft/simc/blob/dragonflight/engine/class_modules/apl/warlock.cpp", ["builtIn"] = true, ["date"] = 20250302, ["spec"] = 266, ["desc"] = "2025-03-02: Sync with SimC", ["lists"] = { ["items"] = { { ["enabled"] = true, ["action"] = "trinket1", ["slot"] = "trinket1", ["use_off_gcd"] = 1, ["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! pet.demonic_tyrant.active & trinket.t1.cast_time > 0 || ! trinket.t1.cast_time > 0 ) & ( pet.demonic_tyrant.active || ! talent.summon_demonic_tyrant.enabled || variable.trinket_priority = 2 & cooldown.summon_demonic_tyrant.remains > 20 & ! pet.demonic_tyrant.active & trinket.t2.cooldown.remains < cooldown.summon_demonic_tyrant.remains + 5 ) & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 & ! variable.trinket_2_manual ) || variable.trinket_1_buff_duration >= fight_remains", }, { ["enabled"] = true, ["action"] = "trinket2", ["slot"] = "trinket2", ["use_off_gcd"] = 1, ["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! pet.demonic_tyrant.active & trinket.t2.cast_time > 0 || ! trinket.t2.cast_time > 0 ) & ( pet.demonic_tyrant.active || ! talent.summon_demonic_tyrant.enabled || variable.trinket_priority = 1 & cooldown.summon_demonic_tyrant.remains > 20 & ! pet.demonic_tyrant.active & trinket.t1.cooldown.remains < cooldown.summon_demonic_tyrant.remains + 5 ) & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 & ! variable.trinket_1_manual ) || variable.trinket_2_buff_duration >= fight_remains", }, { ["enabled"] = true, ["action"] = "trinket1", ["slot"] = "trinket1", ["use_off_gcd"] = 1, ["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ( variable.damage_trinket_priority = 1 || trinket.t2.cooldown.remains ) & ( trinket.t1.cast_time > 0 & ! pet.demonic_tyrant.active || ! trinket.t1.cast_time > 0 ) || ( time < 20 & variable.trinket_2_buffs ) || cooldown.summon_demonic_tyrant.remains_expected > 20 )", }, { ["enabled"] = true, ["action"] = "trinket2", ["slot"] = "trinket2", ["use_off_gcd"] = 1, ["criteria"] = "! variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ( variable.damage_trinket_priority = 2 || trinket.t1.cooldown.remains ) & ( trinket.t2.cast_time > 0 & ! pet.demonic_tyrant.active || ! trinket.t2.cast_time > 0 ) || ( time < 20 & variable.trinket_1_buffs ) || cooldown.summon_demonic_tyrant.remains_expected > 20 )", }, { ["enabled"] = true, ["name"] = "spymasters_web", ["use_off_gcd"] = 1, ["criteria"] = "pet.demonic_tyrant.active & fight_remains <= 80 & buff.spymasters_report.stack >= 30 & ( ! variable.trinket_1_buffs & trinket.t2.is.spymasters_web || ! variable.trinket_2_buffs & trinket.t1.is.spymasters_web ) || fight_remains <= 20 & ( trinket.t1.cooldown.remains & trinket.t2.is.spymasters_web || trinket.t2.cooldown.remains & trinket.t1.is.spymasters_web || ! variable.trinket_1_buffs || ! variable.trinket_2_buffs )", ["action"] = "spymasters_web", }, { ["enabled"] = true, ["name"] = "imperfect_ascendancy_serum", ["use_off_gcd"] = 1, ["criteria"] = "pet.demonic_tyrant.active & gcd.remains > 0 || fight_remains <= 30", ["action"] = "imperfect_ascendancy_serum", }, { ["enabled"] = true, ["name"] = "mirror_of_fractured_tomorrows", ["action"] = "mirror_of_fractured_tomorrows", ["criteria"] = "trinket.t1.is.mirror_of_fractured_tomorrows & variable.trinket_priority = 2 || trinket.t2.is.mirror_of_fractured_tomorrows & variable.trinket_priority = 1", }, { ["enabled"] = true, ["criteria"] = "! variable.trinket_1_buffs & ( variable.damage_trinket_priority = 1 || trinket.t2.cooldown.remains )", ["action"] = "trinket1", ["slot"] = "trinket1", }, { ["enabled"] = true, ["criteria"] = "! variable.trinket_2_buffs & ( variable.damage_trinket_priority = 2 || trinket.t1.cooldown.remains )", ["action"] = "trinket2", ["slot"] = "trinket2", }, { ["enabled"] = true, ["action"] = "main_hand", ["slot"] = "main_hand", ["use_off_gcd"] = 1, ["criteria"] = "! equipped.neural_synapse_enhancer", }, { ["enabled"] = true, ["action"] = "neural_synapse_enhancer", ["slot"] = "main_hand", ["use_off_gcd"] = 1, ["criteria"] = "( pet.demonic_tyrant.active || fight_remains <= 15 ) & ! variable.trinket_1_buffs & ! variable.trinket_2_buffs", ["name"] = "neural_synapse_enhancer", }, { ["enabled"] = true, ["action"] = "neural_synapse_enhancer", ["slot"] = "main_hand", ["use_off_gcd"] = 1, ["criteria"] = "( pet.demonic_tyrant.active || fight_remains <= 15 || trinket.t2.cooldown.remains > cooldown.summon_demonic_tyrant.remains ) & variable.trinket_2_buffs", ["name"] = "neural_synapse_enhancer", }, { ["enabled"] = true, ["action"] = "neural_synapse_enhancer", ["slot"] = "main_hand", ["use_off_gcd"] = 1, ["criteria"] = "( pet.demonic_tyrant.active || fight_remains <= 15 || trinket.t1.cooldown.remains > cooldown.summon_demonic_tyrant.remains ) & variable.trinket_1_buffs", ["name"] = "neural_synapse_enhancer", }, }, ["fight_end"] = { { ["enabled"] = true, ["criteria"] = "fight_remains < 20", ["action"] = "grimoire_felguard", }, { ["action"] = "ruination", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "fight_remains < 2 * gcd.max & ! prev_gcd.1.implosion", ["action"] = "implosion", }, { ["enabled"] = true, ["criteria"] = "fight_remains < gcd.max * 2 * buff.demonic_core.stack + 9 & buff.demonic_core.up & ( soul_shard < 4 || fight_remains < buff.demonic_core.stack * gcd.max )", ["action"] = "demonbolt", }, { ["enabled"] = true, ["criteria"] = "fight_remains < 20", ["action"] = "call_dreadstalkers", }, { ["enabled"] = true, ["criteria"] = "fight_remains < 20", ["action"] = "summon_vilefiend", }, { ["enabled"] = true, ["criteria"] = "fight_remains < 20", ["action"] = "summon_demonic_tyrant", }, { ["enabled"] = true, ["criteria"] = "fight_remains < 10", ["action"] = "demonic_strength", }, { ["enabled"] = true, ["criteria"] = "buff.demonic_core.stack < 3 & fight_remains < 20", ["action"] = "power_siphon", }, { ["enabled"] = true, ["criteria"] = "fight_remains < gcd.max * 2 * buff.demonic_core.stack + 9 & buff.demonic_core.up & ( soul_shard < 4 || fight_remains < buff.demonic_core.stack * gcd.max )", ["action"] = "demonbolt", }, { ["enabled"] = true, ["criteria"] = "soul_shard > 2 & fight_remains < gcd.max * 2 * buff.demonic_core.stack + 9", ["action"] = "hand_of_guldan", }, { ["action"] = "infernal_bolt", ["enabled"] = true, }, }, ["default"] = { { ["action"] = "axe_toss", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "variables", }, { ["enabled"] = true, ["criteria"] = "buff.tyrant.remains > 10", ["action"] = "potion", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "pet.demonic_tyrant.active || boss & fight_remains < 22", ["var_name"] = "check_racials", }, { ["enabled"] = true, ["action"] = "call_action_list", ["use_off_gcd"] = 1, ["criteria"] = "variable.check_racials", ["list_name"] = "racials", }, { ["use_off_gcd"] = 1, ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "items", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "boss & fight_remains < 30", ["list_name"] = "fight_end", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "time < variable.first_tyrant_time", ["list_name"] = "opener", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "cooldown.summon_demonic_tyrant.remains < gcd.max * 14", ["list_name"] = "tyrant", }, { ["enabled"] = true, ["criteria"] = "cooldown.summon_demonic_tyrant.remains > 25 || variable.next_tyrant_cd > 25", ["action"] = "call_dreadstalkers", }, { ["enabled"] = true, ["criteria"] = "cooldown.summon_demonic_tyrant.remains > 30", ["action"] = "summon_vilefiend", }, { ["enabled"] = true, ["criteria"] = "buff.demonic_core.up & ( ! talent.doom.enabled || buff.demonic_core.stack > 1 || debuff.doom.remains > 10 || debuff.doom.down ) & ( ( ( ! talent.fel_invocation.enabled || cooldown.soul_strike.remains > gcd.max * 2 ) & soul_shard < 4 ) ) & ! prev_gcd.1.demonbolt & ! variable.pool_cores_for_tyrant", ["action"] = "demonbolt", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.demonic_core.stack >= 3 - ( talent.doom.enabled & debuff.doom.down ) * 2 & soul_shard <= 3 & ! variable.pool_cores_for_tyrant", ["action"] = "demonbolt", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.demonic_core.stack < 3 & cooldown.summon_demonic_tyrant.remains > 25 & ! buff.demonic_power.up", ["action"] = "power_siphon", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1", ["action"] = "demonic_strength", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1", ["action"] = "bilescourge_bombers", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1 & ( cooldown.demonic_strength.remains || ! talent.demonic_strength.enabled )", ["action"] = "guillotine", }, { ["action"] = "ruination", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.infernal_bolt.remains > cast_time & buff.infernal_bolt.remains < 2 * gcd.max || soul_shard < 3 & cooldown.summon_demonic_tyrant.remains > 20", ["action"] = "infernal_bolt", }, { ["enabled"] = true, ["criteria"] = "two_cast_imps > 0 & variable.impl & ! prev_gcd.1.implosion & ( active_enemies > 3 || active_enemies <= 3 & last_cast_imps > 0 )", ["action"] = "implosion", }, { ["enabled"] = true, ["criteria"] = "variable.diabolic_ritual_remains > gcd.max & variable.diabolic_ritual_remains < gcd.max + gcd.max & buff.demonic_core.up & soul_shard <= 3", ["action"] = "demonbolt", }, { ["enabled"] = true, ["criteria"] = "variable.diabolic_ritual_remains > gcd.max & variable.diabolic_ritual_remains < soul_shard_deficit * cast_time + gcd.max & soul_shard < 5", ["action"] = "shadow_bolt", }, { ["enabled"] = true, ["criteria"] = "( ( soul_shard > 2 & ( cooldown.call_dreadstalkers.remains > gcd.max * 4 || buff.demonic_calling.remains - gcd.max > cooldown.call_dreadstalkers.remains ) & cooldown.summon_demonic_tyrant.remains > 17 ) || soul_shard = 5 || soul_shard = 4 & talent.fel_invocation.enabled ) & ( active_enemies = 1 )", ["action"] = "hand_of_guldan", }, { ["enabled"] = true, ["criteria"] = "soul_shard > 2 & ! ( active_enemies = 1 )", ["action"] = "hand_of_guldan", }, { ["enabled"] = true, ["criteria"] = "active_enemies < 4 & buff.demonic_core.stack > 1 & ( ( soul_shard < 4 & ! talent.soul_strike.enabled || cooldown.soul_strike.remains > gcd.max * 2 & talent.fel_invocation.enabled ) || soul_shard < 3 ) & ! variable.pool_cores_for_tyrant", ["action"] = "demonbolt", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.demonic_core.up & buff.tyrant.up & soul_shard < 3", ["action"] = "demonbolt", }, { ["enabled"] = true, ["criteria"] = "buff.demonic_core.stack > 1 & soul_shard < 4", ["action"] = "demonbolt", }, { ["action"] = "infernal_bolt", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! pet.tyrant.active & cooldown.tyrant_remains > 15 & active_enemies > 1", ["action"] = "lights_judgment", }, { ["action"] = "shadow_bolt", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1 & ( cooldown.demonic_strength.remains || ! talent.demonic_strength.enabled ) & talent.fel_sunder.enabled", ["action"] = "felstorm", }, }, ["precombat"] = { { ["enabled"] = true, ["criteria"] = "time > 0 & ! pet.alive & ! buff.grimoire_of_sacrifice.up", ["action"] = "fel_domination", }, { ["enabled"] = true, ["criteria"] = "! pet.alive & ! buff.grimoire_of_sacrifice.up", ["action"] = "summon_pet", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "12", ["var_name"] = "first_tyrant_time", ["description"] = "Sets the expected Tyrant Setup on pull to take a total 12 seconds long", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "first_tyrant_time", ["value"] = "action.grimoire_felguard.execute_time", ["description"] = "Accounts for the execution time of Grimoire Felguard in the setup of Tyrant on Pull", ["criteria"] = "talent.grimoire_felguard.enabled", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "first_tyrant_time", ["value"] = "action.summon_vilefiend.execute_time", ["description"] = "Accounts for the execution time of Vilefiend in the the setup of Tyrant on Pull", ["criteria"] = "talent.summon_vilefiend.enabled", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "first_tyrant_time", ["value"] = "gcd.max", ["description"] = "Accounts for the execution time of both Grimoire Felguard and Vilefiend in the tyrant Setup on Pull", ["criteria"] = "talent.grimoire_felguard.enabled || talent.summon_vilefiend.enabled", }, { ["enabled"] = true, ["op"] = "sub", ["action"] = "variable", ["value"] = "action.summon_demonic_tyrant.execute_time + action.shadow_bolt.execute_time", ["var_name"] = "first_tyrant_time", ["description"] = "Accounts for Tyrant own Cast Time and an additional Shadowbolt cast time", }, { ["enabled"] = true, ["op"] = "min", ["action"] = "variable", ["value"] = "10", ["var_name"] = "first_tyrant_time", ["description"] = "Sets an absolute minimun of 10s for the First Tyrant Setup", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "1", ["var_name"] = "in_opener", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.has_use_buff", ["var_name"] = "trinket_1_buffs", ["description"] = "Defines if the the Trinket 1 is a buff Trinket in the trinket logic", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.has_use_buff", ["var_name"] = "trinket_2_buffs", ["description"] = "Defines if the the Trinket 2 is a buff Trinket in the trinket logic", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.ruby_whelp_shell", ["var_name"] = "trinket_1_exclude", ["description"] = "For On Use Trinkets on slot 1 with on use effects you dont want to use in combat", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.ruby_whelp_shell", ["var_name"] = "trinket_2_exclude", ["description"] = "For On Use Trinkets on slot 2 with on use effects you dont want to use in combat", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.spymasters_web || trinket.t1.is.imperfect_ascendancy_serum", ["var_name"] = "trinket_1_manual", ["description"] = "Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.spymasters_web || trinket.t2.is.imperfect_ascendancy_serum", ["var_name"] = "trinket_2_manual", ["description"] = "Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.buff_duration + ( trinket.t1.is.mirror_of_fractured_tomorrows * 20 )", ["var_name"] = "trinket_1_buff_duration", ["description"] = "Defines the Duration of the buff or an expected time for value of the trinket", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.buff_duration + ( trinket.t2.is.mirror_of_fractured_tomorrows * 20 )", ["var_name"] = "trinket_2_buff_duration", ["description"] = "Defines the Duration of the buff or an expected time for value of the trinket", }, { ["enabled"] = true, ["op"] = "setif", ["description"] = "Trinket Automatic Logic for Trinket 1", ["value"] = "1", ["var_name"] = "trinket_1_sync", ["action"] = "variable", ["value_else"] = "0.5", ["criteria"] = "variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % cooldown.summon_demonic_tyrant.duration = 0 || cooldown.summon_demonic_tyrant.duration % trinket.t1.cooldown.duration = 0 )", }, { ["enabled"] = true, ["op"] = "setif", ["description"] = "Trinket Automatic Logic for Trinket 2", ["value"] = "1", ["var_name"] = "trinket_2_sync", ["action"] = "variable", ["value_else"] = "0.5", ["criteria"] = "variable.trinket_2_buffs & ( trinket.t2.cooldown.duration % cooldown.summon_demonic_tyrant.duration = 0 || cooldown.summon_demonic_tyrant.duration % trinket.t2.cooldown.duration = 0 )", }, { ["enabled"] = true, ["op"] = "setif", ["description"] = "Automatic Logic in case of 2 Buff Trinkets", ["value"] = "2", ["var_name"] = "damage_trinket_priority", ["action"] = "variable", ["value_else"] = "1", ["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_2_buffs & trinket.t2.ilvl > trinket.t1.ilvl", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "trinket_priority", ["value"] = "2", ["value_else"] = "1", ["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / variable.trinket_2_buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( ( trinket.t1.cooldown.duration / variable.trinket_1_buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) ) * ( 1 + ( ( trinket.t1.ilvl - trinket.t2.ilvl ) / 100 ) ) )", }, { ["action"] = "power_siphon", ["enabled"] = true, }, { ["action"] = "lights_judgment", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! buff.power_siphon.up || soul_shards.deficit > 1", ["action"] = "demonbolt", }, { ["action"] = "shadow_bolt", ["enabled"] = true, }, }, ["racials"] = { { ["use_off_gcd"] = 1, ["action"] = "berserking", ["enabled"] = true, }, { ["action"] = "blood_fury", ["enabled"] = true, }, { ["action"] = "fireblood", ["enabled"] = true, }, { ["action"] = "ancestral_call", ["enabled"] = true, }, }, ["opener"] = { { ["enabled"] = true, ["criteria"] = "soul_shard >= 5 - talent.fel_invocation.enabled", ["action"] = "grimoire_felguard", }, { ["enabled"] = true, ["criteria"] = "soul_shard = 5", ["action"] = "summon_vilefiend", }, { ["enabled"] = true, ["criteria"] = "soul_shard < 5 & cooldown.call_dreadstalkers.up", ["action"] = "shadow_bolt", }, { ["enabled"] = true, ["criteria"] = "soul_shard = 5", ["action"] = "call_dreadstalkers", }, { ["action"] = "ruination", ["enabled"] = true, }, }, ["tyrant"] = { { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "! variable.check_racials & ( variable.imp_despawn & variable.imp_despawn < time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & ( prev_gcd.1.hand_of_guldan || prev_gcd.1.ruination ) & ( variable.imp_despawn & variable.imp_despawn < time + gcd.max + action.summon_demonic_tyrant.cast_time || soul_shard < 2 ) )", ["list_name"] = "racials", }, { ["enabled"] = true, ["criteria"] = "variable.imp_despawn & variable.imp_despawn < time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & ( prev_gcd.1.hand_of_guldan || prev_gcd.1.ruination ) & ( variable.imp_despawn & variable.imp_despawn < time + gcd.max + action.summon_demonic_tyrant.cast_time || soul_shard < 2 )", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "cooldown.summon_demonic_tyrant.remains < 15 & ( time < variable.first_tyrant_time || cooldown.summon_demonic_tyrant.remains > ( action.summon_demonic_tyrant.cast_time + 2 * gcd.max ) )", ["action"] = "power_siphon", }, { ["enabled"] = true, ["criteria"] = "buff.dreadstalkers.remains > gcd.max + action.summon_demonic_tyrant.cast_time & ( soul_shard = 5 || variable.imp_despawn )", ["action"] = "ruination", }, { ["enabled"] = true, ["criteria"] = "( buff.infernal_bolt.remains > cast_time & buff.infernal_bolt.remains < 2 * gcd.max || ! buff.demonic_core.up ) & variable.imp_despawn > time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & soul_shard < 3", ["action"] = "infernal_bolt", }, { ["enabled"] = true, ["criteria"] = "prev_gcd.1.call_dreadstalkers & soul_shard < 4 & buff.demonic_core.stack < 4", ["action"] = "shadow_bolt", }, { ["enabled"] = true, ["criteria"] = "prev_gcd.2.call_dreadstalkers & prev_gcd.1.shadow_bolt & buff.bloodlust.up & soul_shard < 5", ["action"] = "shadow_bolt", }, { ["enabled"] = true, ["criteria"] = "prev_gcd.1.summon_vilefiend & ( buff.demonic_calling.down || prev_gcd.2.grimoire_felguard )", ["action"] = "shadow_bolt", }, { ["enabled"] = true, ["criteria"] = "prev_gcd.1.grimoire_felguard & buff.demonic_core.stack < 3 & buff.demonic_calling.remains > gcd.max * 3", ["action"] = "shadow_bolt", }, { ["enabled"] = true, ["criteria"] = "variable.imp_despawn > time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & ! buff.demonic_core.up & buff.demonic_art_pit_lord.up & variable.imp_despawn < time + gcd.max * 5 + action.summon_demonic_tyrant.cast_time", ["action"] = "hand_of_guldan", }, { ["enabled"] = true, ["criteria"] = "variable.imp_despawn > time + gcd.max + action.summon_demonic_tyrant.cast_time & variable.imp_despawn < time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & buff.dreadstalkers.remains > gcd.max + action.summon_demonic_tyrant.cast_time & soul_shard > 1", ["action"] = "hand_of_guldan", }, { ["enabled"] = true, ["criteria"] = "! buff.demonic_core.up & variable.imp_despawn > time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & variable.imp_despawn < time + gcd.max * 4 + action.summon_demonic_tyrant.cast_time & soul_shard < 3 & buff.dreadstalkers.remains > gcd.max * 2 + action.summon_demonic_tyrant.cast_time", ["action"] = "shadow_bolt", }, { ["enabled"] = true, ["criteria"] = "cooldown.summon_demonic_tyrant.remains < 17 - 2 * gcd.max & cooldown.summon_vilefiend.remains < 15 - 2 * gcd.max & cooldown.call_dreadstalkers.remains < 12 - 2 * gcd.max", ["action"] = "grimoire_felguard", }, { ["enabled"] = true, ["criteria"] = "cooldown.summon_demonic_tyrant.remains < 15 - 2 * gcd.max & ( buff.grimoire_felguard.up || cooldown.grimoire_felguard.remains > 15 || ! talent.grimoire_felguard.enabled ) & ( buff.dreadstalkers.up || cooldown.call_dreadstalkers.remains < 15 - 2 * gcd.max || ! talent.call_dreadstalkers.enabled )", ["action"] = "summon_vilefiend", }, { ["enabled"] = true, ["criteria"] = "cooldown.summon_demonic_tyrant.remains < 12 - 2 * gcd.max & ( buff.vilefiend.up || cooldown.summon_vilefiend.remains < 12 - 2 * gcd.max || ! talent.summon_vilefiend.enabled )", ["action"] = "call_dreadstalkers", }, { ["enabled"] = true, ["criteria"] = "( ( ( variable.imp_despawn & variable.imp_despawn < time + gcd.max * 2.5 + cast_time ) || ( buff.wild_imps.stack > 9 & soul_shards < 2 ) ) & buff.dreadstalkers.up & ( buff.vilefiend.up || ! talent.summon_vilefiend.enabled ) ) || ( buff.dreadstalkers.up & buff.dreadstalkers.remains < gcd.max * 2 + cast_time & ( ( buff.vilefiend.up & buff.vilefiend.remains > 2 * gcd.max ) || ! talent.summon_vilefiend.enabled ) & ( ( buff.grimoire_felguard.up & buff.grimoire_felguard.remains > 2 * gcd.max ) || ! talent.grimoire_felguard.enabled || cooldown.grimoire_felguard.remains > 20 ) )", ["action"] = "summon_demonic_tyrant", }, { ["enabled"] = true, ["criteria"] = "( variable.imp_despawn || buff.dreadstalkers.remains ) & soul_shard >= 3 || soul_shard = 5", ["action"] = "hand_of_guldan", }, { ["enabled"] = true, ["criteria"] = "variable.imp_despawn & soul_shard < 3", ["action"] = "infernal_bolt", }, { ["enabled"] = true, ["criteria"] = "variable.imp_despawn & buff.demonic_core.up & soul_shard < 4 || prev_gcd.1.call_dreadstalkers & soul_shard < 4 & buff.demonic_core.stack = 4 || buff.demonic_core.stack = 4 & soul_shard < 4 || buff.demonic_core.stack >= 2 & cooldown.power_siphon.remains < 5", ["action"] = "demonbolt", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "variable.imp_despawn || soul_shard = 5 & cooldown.summon_vilefiend.remains > gcd.max * 3", ["action"] = "ruination", }, { ["action"] = "shadow_bolt", ["enabled"] = true, }, { ["action"] = "infernal_bolt", ["enabled"] = true, }, }, ["variables"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "cooldown.summon_demonic_tyrant.remains_expected", ["var_name"] = "next_tyrant_cd", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "0", ["var_name"] = "in_opener", ["criteria"] = "pet.demonic_tyrant.active", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["var_name"] = "impl", ["value"] = "buff.tyrant.down", ["description"] = "Defines the viability of Implosion when Tyrant is down", ["criteria"] = "active_enemies > 1 + ( talent.sacrificed_souls.enabled )", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["var_name"] = "impl", ["value"] = "buff.tyrant.remains < 6", ["description"] = "Defines the Viability of Implosion while Tyrant is Up", ["criteria"] = "active_enemies > 2 + ( talent.sacrificed_souls.enabled ) & active_enemies < 5 + ( talent.sacrificed_souls.enabled )", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["var_name"] = "impl", ["value"] = "buff.tyrant.remains < 8", ["description"] = "Defines the Viability of Implosion while Tyrant is Up", ["criteria"] = "active_enemies > 4 + ( talent.sacrificed_souls.enabled )", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "cooldown.summon_demonic_tyrant.remains < 20 & variable.next_tyrant_cd < 20 & ( buff.demonic_core.stack <= 2 || ! buff.demonic_core.up ) & cooldown.summon_vilefiend.remains < gcd.max * 8 & cooldown.call_dreadstalkers.remains < gcd.max * 8", ["var_name"] = "pool_cores_for_tyrant", ["description"] = "Restricts Demonic Core usage for the sake of having 2 or more Demonic Cores on Tyrant Setup", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "buff.diabolic_ritual_mother_of_chaos.remains", ["var_name"] = "diabolic_ritual_remains", ["criteria"] = "buff.diabolic_ritual_mother_of_chaos.up", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "buff.diabolic_ritual_overlord.remains", ["var_name"] = "diabolic_ritual_remains", ["criteria"] = "buff.diabolic_ritual_overlord.up", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "buff.diabolic_ritual_pit_lord.remains", ["var_name"] = "diabolic_ritual_remains", ["criteria"] = "buff.diabolic_ritual_pit_lord.up", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "2 * spell_haste * 6 + 0.58 + time", ["var_name"] = "imp_despawn", ["criteria"] = "prev_gcd.1.hand_of_guldan & buff.dreadstalkers.up & cooldown.summon_demonic_tyrant.remains < 13 & variable.imp_despawn = 0", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1 & ( cooldown.demonic_strength.remains || ! talent.demonic_strength.enabled ) & talent.fel_sunder.enabled", ["action"] = "felstorm", }, }, }, ["version"] = 20250302, ["warnings"] = "The import for 'items' required some automated changes.\nLine 1: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 1: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 1: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 1: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 2: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 3: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 4: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 7: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 7: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 12: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 12: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 13: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 13: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\n\nThe import for 'default' required some automated changes.\nLine 12: Converted 'talent.doom' to 'talent.doom.enabled' (1x).\nLine 12: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\nLine 12: Converted 'pet.felguard.cooldown.soul_strike.remains' to 'cooldown.soul_strike.remains' (1x).\nLine 13: Converted 'talent.doom' to 'talent.doom.enabled' (1x).\nLine 17: Converted 'talent.demonic_strength' to 'talent.demonic_strength.enabled' (1x).\nLine 23: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\nLine 25: Converted 'talent.soul_strike' to 'talent.soul_strike.enabled' (1x).\nLine 25: Converted 'pet.felguard.cooldown.soul_strike.remains' to 'cooldown.soul_strike.remains' (1x).\nLine 25: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\nLine 31: Converted 'talent.demonic_strength' to 'talent.demonic_strength.enabled' (1x).\nLine 31: Converted 'talent.fel_sunder' to 'talent.fel_sunder.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 10: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 11: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 12: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 13: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 14: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 14: Converted 'trinket.1.is.imperfect_ascendancy_serum' to 'trinket.t1.is.imperfect_ascendancy_serum' (1x).\nLine 15: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 15: Converted 'trinket.2.is.imperfect_ascendancy_serum' to 'trinket.t2.is.imperfect_ascendancy_serum' (1x).\nLine 16: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 16: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 16: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 17: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 17: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 17: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 18: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%trinket.t1.cooldown.duration=0)'.\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 19: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%trinket.t2.cooldown.duration=0)'.\nLine 20: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 20: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nLine 21: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 21: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 21: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 21: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 21: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 21: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 21: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 21: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 21: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nLine 21: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 21: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%variable.trinket_2_buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>(((trinket.t1.cooldown.duration%variable.trinket_1_buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))*(1+((trinket.t1.ilvl-trinket.t2.ilvl)%100)))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/variable.trinket_2_buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>(((trinket.t1.cooldown.duration/variable.trinket_1_buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))*(1+((trinket.t1.ilvl-trinket.t2.ilvl)/100)))'.\n\nThe import for 'variables' required some automated changes.\nLine 11: Converted 'talent.demonic_strength' to 'talent.demonic_strength.enabled' (1x).\nLine 11: Converted 'talent.fel_sunder' to 'talent.fel_sunder.enabled' (1x).\n\nThe import for 'tyrant' required some automated changes.\nLine 14: Converted 'talent.grimoire_felguard' to 'talent.grimoire_felguard.enabled' (1x).\nLine 14: Converted 'talent.call_dreadstalkers' to 'talent.call_dreadstalkers.enabled' (1x).\nLine 15: Converted 'talent.summon_vilefiend' to 'talent.summon_vilefiend.enabled' (1x).\n\nThe import for 'opener' required some automated changes.\nLine 1: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\n\nImported 8 action lists.\n", ["author"] = "SimC", ["profile"] = "actions.precombat+=/fel_domination,if=time>0&!pet.alive&!buff.grimoire_of_sacrifice.up\nactions.precombat+=/summon_pet,if=!pet.alive&!buff.grimoire_of_sacrifice.up\n# Sets the expected Tyrant Setup on pull to take a total 12 seconds long\nactions.precombat+=/variable,name=first_tyrant_time,op=set,value=12\n# Accounts for the execution time of Grimoire Felguard in the setup of Tyrant on Pull\nactions.precombat+=/variable,name=first_tyrant_time,op=add,value=action.grimoire_felguard.execute_time,if=talent.grimoire_felguard.enabled\n# Accounts for the execution time of Vilefiend in the the setup of Tyrant on Pull\nactions.precombat+=/variable,name=first_tyrant_time,op=add,value=action.summon_vilefiend.execute_time,if=talent.summon_vilefiend.enabled\n# Accounts for the execution time of both Grimoire Felguard and Vilefiend in the tyrant Setup on Pull\nactions.precombat+=/variable,name=first_tyrant_time,op=add,value=gcd.max,if=talent.grimoire_felguard.enabled||talent.summon_vilefiend.enabled\n# Accounts for Tyrant own Cast Time and an additional Shadowbolt cast time\nactions.precombat+=/variable,name=first_tyrant_time,op=sub,value=action.summon_demonic_tyrant.execute_time+action.shadow_bolt.execute_time\n# Sets an absolute minimun of 10s for the First Tyrant Setup\nactions.precombat+=/variable,name=first_tyrant_time,op=min,value=10\nactions.precombat+=/variable,name=in_opener,op=set,value=1\n# Defines if the the Trinket 1 is a buff Trinket in the trinket logic\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff\n# Defines if the the Trinket 2 is a buff Trinket in the trinket logic\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff\n# For On Use Trinkets on slot 1 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell\n# For On Use Trinkets on slot 2 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell\n# Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.spymasters_web||trinket.1.is.imperfect_ascendancy_serum\n# Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.spymasters_web||trinket.2.is.imperfect_ascendancy_serum\n# Defines the Duration of the buff or an expected time for value of the trinket\nactions.precombat+=/variable,name=trinket_1_buff_duration,value=trinket.1.proc.any_dps.duration+(trinket.1.is.mirror_of_fractured_tomorrows*20)\n# Defines the Duration of the buff or an expected time for value of the trinket\nactions.precombat+=/variable,name=trinket_2_buff_duration,value=trinket.2.proc.any_dps.duration+(trinket.2.is.mirror_of_fractured_tomorrows*20)\n# Trinket Automatic Logic for Trinket 1\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.1.cooldown.duration=0)\n# Trinket Automatic Logic for Trinket 2\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.2.cooldown.duration=0)\n# Automatic Logic in case of 2 Buff Trinkets\nactions.precombat+=/variable,name=damage_trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&!variable.trinket_2_buffs&trinket.2.ilvl>trinket.1.ilvl\nactions.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%variable.trinket_2_buff_duration)*(1.5+trinket.2.has_buff.intellect)*(variable.trinket_2_sync))>(((trinket.1.cooldown.duration%variable.trinket_1_buff_duration)*(1.5+trinket.1.has_buff.intellect)*(variable.trinket_1_sync))*(1+((trinket.1.ilvl-trinket.2.ilvl)%100)))\nactions.precombat+=/power_siphon\nactions.precombat+=/lights_judgment\nactions.precombat+=/demonbolt,if=!buff.power_siphon.up||soul_shards.deficit>1\nactions.precombat+=/shadow_bolt\n\nactions+=/axe_toss\nactions+=/call_action_list,name=variables\nactions+=/potion,if=buff.tyrant.remains>10\nactions+=/variable,name=check_racials,op=set,value=pet.demonic_tyrant.active||boss&fight_remains<22\nactions+=/call_action_list,name=racials,if=variable.check_racials,use_off_gcd=1\nactions+=/call_action_list,name=items,use_off_gcd=1\n## actions+=/invoke_external_buff,name=power_infusion,if=fight_remains<15||pet.demonic_tyrant.active&fight_remains<100||fight_remains<25||(pet.demonic_tyrant.active||!talent.summon_demonic_tyrant&buff.dreadstalkers.up)\nactions+=/call_action_list,name=fight_end,if=boss&fight_remains<30\nactions+=/call_action_list,name=opener,strict=1,if=time25||variable.next_tyrant_cd>25\nactions+=/summon_vilefiend,if=cooldown.summon_demonic_tyrant.remains>30\nactions+=/demonbolt,cycle_targets=1,if=buff.demonic_core.up&(!talent.doom||buff.demonic_core.stack>1||debuff.doom.remains>10||debuff.doom.down)&(((!talent.fel_invocation||pet.felguard.cooldown.soul_strike.remains>gcd.max*2)&soul_shard<4))&!prev_gcd.1.demonbolt&!variable.pool_cores_for_tyrant\nactions+=/demonbolt,cycle_targets=1,if=buff.demonic_core.stack>=3-(talent.doom&debuff.doom.down)*2&soul_shard<=3&!variable.pool_cores_for_tyrant\nactions+=/power_siphon,if=buff.demonic_core.stack<3&cooldown.summon_demonic_tyrant.remains>25&!buff.demonic_power.up\nactions+=/demonic_strength,if=active_enemies>1\nactions+=/bilescourge_bombers,if=active_enemies>1\nactions+=/guillotine,if=active_enemies>1&(cooldown.demonic_strength.remains||!talent.demonic_strength)\nactions+=/ruination\nactions+=/infernal_bolt,if=buff.infernal_bolt.remains>cast_time&buff.infernal_bolt.remains<2*gcd.max||soul_shard<3&cooldown.summon_demonic_tyrant.remains>20\nactions+=/implosion,if=two_cast_imps>0&variable.impl&!prev_gcd.1.implosion&(active_enemies>3||active_enemies<=3&last_cast_imps>0)\nactions+=/demonbolt,if=variable.diabolic_ritual_remains>gcd.max&variable.diabolic_ritual_remainsgcd.max&variable.diabolic_ritual_remains2&(cooldown.call_dreadstalkers.remains>gcd.max*4||buff.demonic_calling.remains-gcd.max>cooldown.call_dreadstalkers.remains)&cooldown.summon_demonic_tyrant.remains>17)||soul_shard=5||soul_shard=4&talent.fel_invocation)&(active_enemies=1)\nactions+=/hand_of_guldan,if=soul_shard>2&!(active_enemies=1)\nactions+=/demonbolt,cycle_targets=1,if=active_enemies<4&buff.demonic_core.stack>1&((soul_shard<4&!talent.soul_strike||pet.felguard.cooldown.soul_strike.remains>gcd.max*2&talent.fel_invocation)||soul_shard<3)&!variable.pool_cores_for_tyrant\nactions+=/demonbolt,if=buff.demonic_core.up&buff.tyrant.up&soul_shard<3\nactions+=/demonbolt,if=buff.demonic_core.stack>1&soul_shard<4\nactions+=/infernal_bolt\nactions+=/lights_judgment,if=!pet.tyrant.active&cooldown.tyrant_remains>15&active_enemies>1\nactions+=/shadow_bolt\nactions+=/felstorm,if=active_enemies>1&(cooldown.demonic_strength.remains||!talent.demonic_strength)&talent.fel_sunder\n\nactions.fight_end+=/grimoire_felguard,if=fight_remains<20\nactions.fight_end+=/ruination\nactions.fight_end+=/implosion,if=fight_remains<2*gcd.max&!prev_gcd.1.implosion\nactions.fight_end+=/demonbolt,if=fight_remains2&fight_remains0||!trinket.1.cast_time>0)&(pet.demonic_tyrant.active||!talent.summon_demonic_tyrant||variable.trinket_priority=2&cooldown.summon_demonic_tyrant.remains>20&!pet.demonic_tyrant.active&trinket.2.cooldown.remains=fight_remains\nactions.items+=/use_item,use_off_gcd=1,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&(!pet.demonic_tyrant.active&trinket.2.cast_time>0||!trinket.2.cast_time>0)&(pet.demonic_tyrant.active||!talent.summon_demonic_tyrant||variable.trinket_priority=1&cooldown.summon_demonic_tyrant.remains>20&!pet.demonic_tyrant.active&trinket.1.cooldown.remains=fight_remains\nactions.items+=/use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&((variable.damage_trinket_priority=1||trinket.2.cooldown.remains)&(trinket.1.cast_time>0&!pet.demonic_tyrant.active||!trinket.1.cast_time>0)||(time<20&variable.trinket_2_buffs)||cooldown.summon_demonic_tyrant.remains_expected>20)\nactions.items+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&((variable.damage_trinket_priority=2||trinket.1.cooldown.remains)&(trinket.2.cast_time>0&!pet.demonic_tyrant.active||!trinket.2.cast_time>0)||(time<20&variable.trinket_1_buffs)||cooldown.summon_demonic_tyrant.remains_expected>20)\nactions.items+=/use_item,use_off_gcd=1,name=spymasters_web,if=pet.demonic_tyrant.active&fight_remains<=80&buff.spymasters_report.stack>=30&(!variable.trinket_1_buffs&trinket.2.is.spymasters_web||!variable.trinket_2_buffs&trinket.1.is.spymasters_web)||fight_remains<=20&(trinket.1.cooldown.remains&trinket.2.is.spymasters_web||trinket.2.cooldown.remains&trinket.1.is.spymasters_web||!variable.trinket_1_buffs||!variable.trinket_2_buffs)\nactions.items+=/use_item,use_off_gcd=1,name=imperfect_ascendancy_serum,if=pet.demonic_tyrant.active&gcd.remains>0||fight_remains<=30\nactions.items+=/use_item,name=mirror_of_fractured_tomorrows,if=trinket.1.is.mirror_of_fractured_tomorrows&variable.trinket_priority=2||trinket.2.is.mirror_of_fractured_tomorrows&variable.trinket_priority=1\nactions.items+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(variable.damage_trinket_priority=1||trinket.2.cooldown.remains)\nactions.items+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(variable.damage_trinket_priority=2||trinket.1.cooldown.remains)\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,if=!equipped.neural_synapse_enhancer\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(pet.demonic_tyrant.active||fight_remains<=15)&!variable.trinket_1_buffs&!variable.trinket_2_buffs\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(pet.demonic_tyrant.active||fight_remains<=15||trinket.2.cooldown.remains>cooldown.summon_demonic_tyrant.remains)&variable.trinket_2_buffs\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(pet.demonic_tyrant.active||fight_remains<=15||trinket.1.cooldown.remains>cooldown.summon_demonic_tyrant.remains)&variable.trinket_1_buffs\n\nactions.opener+=/grimoire_felguard,if=soul_shard>=5-talent.fel_invocation\nactions.opener+=/summon_vilefiend,if=soul_shard=5\nactions.opener+=/shadow_bolt,if=soul_shard<5&cooldown.call_dreadstalkers.up\nactions.opener+=/call_dreadstalkers,if=soul_shard=5\nactions.opener+=/ruination\n\nactions.racials+=/berserking,use_off_gcd=1\nactions.racials+=/blood_fury\nactions.racials+=/fireblood\nactions.racials+=/ancestral_call\n\nactions.tyrant+=/call_action_list,name=racials,if=!variable.check_racials&(variable.imp_despawn&variable.imp_despawn(action.summon_demonic_tyrant.cast_time+2*gcd.max))\nactions.tyrant+=/ruination,if=buff.dreadstalkers.remains>gcd.max+action.summon_demonic_tyrant.cast_time&(soul_shard=5||variable.imp_despawn)\nactions.tyrant+=/infernal_bolt,if=(buff.infernal_bolt.remains>cast_time&buff.infernal_bolt.remains<2*gcd.max||!buff.demonic_core.up)&variable.imp_despawn>time+gcd.max*2+action.summon_demonic_tyrant.cast_time&soul_shard<3\nactions.tyrant+=/shadow_bolt,if=prev_gcd.1.call_dreadstalkers&soul_shard<4&buff.demonic_core.stack<4\nactions.tyrant+=/shadow_bolt,if=prev_gcd.2.call_dreadstalkers&prev_gcd.1.shadow_bolt&buff.bloodlust.up&soul_shard<5\nactions.tyrant+=/shadow_bolt,if=prev_gcd.1.summon_vilefiend&(buff.demonic_calling.down||prev_gcd.2.grimoire_felguard)\nactions.tyrant+=/shadow_bolt,if=prev_gcd.1.grimoire_felguard&buff.demonic_core.stack<3&buff.demonic_calling.remains>gcd.max*3\nactions.tyrant+=/hand_of_guldan,if=variable.imp_despawn>time+gcd.max*2+action.summon_demonic_tyrant.cast_time&!buff.demonic_core.up&buff.demonic_art_pit_lord.up&variable.imp_despawntime+gcd.max+action.summon_demonic_tyrant.cast_time&variable.imp_despawngcd.max+action.summon_demonic_tyrant.cast_time&soul_shard>1\nactions.tyrant+=/shadow_bolt,if=!buff.demonic_core.up&variable.imp_despawn>time+gcd.max*2+action.summon_demonic_tyrant.cast_time&variable.imp_despawngcd.max*2+action.summon_demonic_tyrant.cast_time\nactions.tyrant+=/grimoire_felguard,if=cooldown.summon_demonic_tyrant.remains<17-2*gcd.max&cooldown.summon_vilefiend.remains<15-2*gcd.max&cooldown.call_dreadstalkers.remains<12-2*gcd.max\nactions.tyrant+=/summon_vilefiend,if=cooldown.summon_demonic_tyrant.remains<15-2*gcd.max&(buff.grimoire_felguard.up||cooldown.grimoire_felguard.remains>15||!talent.grimoire_felguard)&(buff.dreadstalkers.up||cooldown.call_dreadstalkers.remains<15-2*gcd.max||!talent.call_dreadstalkers)\nactions.tyrant+=/call_dreadstalkers,if=cooldown.summon_demonic_tyrant.remains<12-2*gcd.max&(buff.vilefiend.up||cooldown.summon_vilefiend.remains<12-2*gcd.max||!talent.summon_vilefiend)\nactions.tyrant+=/summon_demonic_tyrant,if=(((variable.imp_despawn&variable.imp_despawn9&soul_shards<2))&buff.dreadstalkers.up&(buff.vilefiend.up||!talent.summon_vilefiend.enabled))||(buff.dreadstalkers.up&buff.dreadstalkers.remains2*gcd.max)||!talent.summon_vilefiend.enabled)&((buff.grimoire_felguard.up&buff.grimoire_felguard.remains>2*gcd.max)||!talent.grimoire_felguard.enabled||cooldown.grimoire_felguard.remains>20))\nactions.tyrant+=/hand_of_guldan,if=(variable.imp_despawn||buff.dreadstalkers.remains)&soul_shard>=3||soul_shard=5\nactions.tyrant+=/infernal_bolt,if=variable.imp_despawn&soul_shard<3\nactions.tyrant+=/demonbolt,cycle_targets=1,if=variable.imp_despawn&buff.demonic_core.up&soul_shard<4||prev_gcd.1.call_dreadstalkers&soul_shard<4&buff.demonic_core.stack=4||buff.demonic_core.stack=4&soul_shard<4||buff.demonic_core.stack>=2&cooldown.power_siphon.remains<5\nactions.tyrant+=/ruination,if=variable.imp_despawn||soul_shard=5&cooldown.summon_vilefiend.remains>gcd.max*3\nactions.tyrant+=/shadow_bolt\nactions.tyrant+=/infernal_bolt\n\nactions.variables+=/variable,name=next_tyrant_cd,op=set,value=cooldown.summon_demonic_tyrant.remains_expected\nactions.variables+=/variable,name=in_opener,op=set,value=0,if=pet.demonic_tyrant.active\n## Handled internally [Hekili]\n## Sets an expected duration of valid Wild Imps on a tyrant Setup for the sake of casting Tyrant before expiration of Imps\n## actions.variables+=/variable,name=imp_despawn,op=set,value=2*spell_haste*6+0.58+time,if=prev_gcd.1.hand_of_guldan&buff.dreadstalkers.up&cooldown.summon_demonic_tyrant.remains<13&variable.imp_despawn=0\n## Checks the Wild Imps in a Tyrant Setup alongside Dreadstalkers for the sake of casting Tyrant before Expiration Dreadstalkers or Imps\n## actions.variables+=/variable,name=imp_despawn,op=max,value=buff.dreadstalkers.remains+time,if=variable.imp_despawn\n## Checks The Wild Imps in a Tyrant Setup alongside Grimoire Felguard for the sake of casting Tyrant before Expiration of Grimoire Felguard or Imps\n## actions.variables+=/variable,name=imp_despawn,op=max,value=buff.grimoire_felguard.remains+time,if=variable.imp_despawn&buff.grimoire_felguard.up\n## actions.variables+=/variable,name=imp_despawn,op=set,value=0,if=buff.tyrant.up\n# Defines the viability of Implosion when Tyrant is down\nactions.variables+=/variable,name=impl,op=set,value=buff.tyrant.down,if=active_enemies>1+(talent.sacrificed_souls.enabled)\n# Defines the Viability of Implosion while Tyrant is Up\nactions.variables+=/variable,name=impl,op=set,value=buff.tyrant.remains<6,if=active_enemies>2+(talent.sacrificed_souls.enabled)&active_enemies<5+(talent.sacrificed_souls.enabled)\n# Defines the Viability of Implosion while Tyrant is Up\nactions.variables+=/variable,name=impl,op=set,value=buff.tyrant.remains<8,if=active_enemies>4+(talent.sacrificed_souls.enabled)\n# Restricts Demonic Core usage for the sake of having 2 or more Demonic Cores on Tyrant Setup\nactions.variables+=/variable,name=pool_cores_for_tyrant,op=set,value=cooldown.summon_demonic_tyrant.remains<20&variable.next_tyrant_cd<20&(buff.demonic_core.stack<=2||!buff.demonic_core.up)&cooldown.summon_vilefiend.remains1&(cooldown.demonic_strength.remains||!talent.demonic_strength)&talent.fel_sunder", }, ["Destruction"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20250303, ["author"] = "SimC", ["desc"] = "2025-03-03: Sync with SimC", ["lists"] = { ["items"] = { { ["enabled"] = true, ["name"] = "spymasters_web", ["action"] = "spymasters_web", ["criteria"] = "pet.infernal.remains >= 10 & pet.infernal.remains <= 20 & buff.spymasters_report.stack >= 38 & ( fight_remains > 240 || fight_remains <= 140 ) || boss & fight_remains <= 30", }, { ["enabled"] = true, ["criteria"] = "( variable.infernal_active || ! talent.summon_infernal.enabled || variable.trinket_1_will_lose_cast ) & ( variable.trinket_priority = 1 || variable.trinket_2_exclude || ! trinket.t2.has_cooldown || ( trinket.t2.cooldown.remains || variable.trinket_priority = 2 & cooldown.summon_infernal.remains > 20 & ! variable.infernal_active & trinket.t2.cooldown.remains < cooldown.summon_infernal.remains ) ) & variable.trinket_1_buffs & ! variable.trinket_1_manual || ( variable.trinket_1_buff_duration + 1 >= fight_remains )", ["action"] = "trinket1", ["slot"] = "trinket1", }, { ["enabled"] = true, ["criteria"] = "( variable.infernal_active || ! talent.summon_infernal.enabled || variable.trinket_2_will_lose_cast ) & ( variable.trinket_priority = 2 || variable.trinket_1_exclude || ! trinket.t1.has_cooldown || ( trinket.t1.cooldown.remains || variable.trinket_priority = 1 & cooldown.summon_infernal.remains > 20 & ! variable.infernal_active & trinket.t1.cooldown.remains < cooldown.summon_infernal.remains ) ) & variable.trinket_2_buffs & ! variable.trinket_2_manual || ( variable.trinket_2_buff_duration + 1 >= fight_remains )", ["action"] = "trinket2", ["slot"] = "trinket2", }, { ["enabled"] = true, ["action"] = "trinket1", ["slot"] = "trinket1", ["use_off_gcd"] = 1, ["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || talent.summon_infernal.enabled & cooldown.summon_infernal.remains_expected > 20 & ! prev_gcd.1.summon_infernal || ! talent.summon_infernal.enabled )", }, { ["enabled"] = true, ["action"] = "trinket2", ["slot"] = "trinket2", ["use_off_gcd"] = 1, ["criteria"] = "! variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) || talent.summon_infernal.enabled & cooldown.summon_infernal.remains_expected > 20 & ! prev_gcd.1.summon_infernal || ! talent.summon_infernal.enabled )", }, { ["use_off_gcd"] = 1, ["enabled"] = true, ["action"] = "main_hand", ["slot"] = "main_hand", }, }, ["aoe"] = { { ["enabled"] = true, ["criteria"] = "cooldown.summon_infernal.remains >= 55 & soul_shard < 4.7 & ( active_enemies <= 3 + active_dot.wither || time > 30 )", ["action"] = "malevolence", }, { ["enabled"] = true, ["criteria"] = "demonic_art", ["action"] = "rain_of_fire", }, { ["enabled"] = true, ["sec"] = "( ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) )", ["action"] = "wait", ["criteria"] = "( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) < gcd.max * 0.25 ) & soul_shard > 2", }, { ["enabled"] = true, ["criteria"] = "( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) <= action.incinerate.cast_time & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) > gcd.max * 0.25 )", ["action"] = "incinerate", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "havoc_active & havoc_remains > gcd.max & active_enemies < ( 5 + ! talent.wither.enabled ) & ( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled )", ["list_name"] = "havoc", }, { ["enabled"] = true, ["criteria"] = "soul_shard < 4.7 & ( charges > 2 || boss & fight_remains < cooldown.dimensional_rift.duration )", ["action"] = "dimensional_rift", }, { ["enabled"] = true, ["criteria"] = "! talent.inferno.enabled & soul_shard >= ( 4.5 - 0.1 * ( active_dot.immolate + active_dot.wither ) ) || soul_shard >= ( 3.5 - 0.1 * ( active_dot.immolate + active_dot.wither ) ) || buff.ritual_of_ruin.up", ["action"] = "rain_of_fire", }, { ["enabled"] = true, ["criteria"] = "dot.wither.refreshable & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.wither.remains ) & ( ! talent.raging_demonfire.enabled || cooldown.channel_demonfire.remains > remains || time < 5 ) & ( active_dot.wither <= 4 || time > 15 ) & target.time_to_die > 18", ["action"] = "wither", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time & talent.raging_demonfire.enabled", ["action"] = "channel_demonfire", }, { ["enabled"] = true, ["criteria"] = "( ( buff.malevolence.up & ( ( talent.cataclysm.enabled & active_enemies <= 10 ) || ( talent.inferno.enabled & active_enemies <= 6 ) ) ) || ( talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 6 ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 4 ) || active_enemies <= 3 ) & ( ( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled ) || fight_remains <= 8 )", ["action"] = "shadowburn", }, { ["enabled"] = true, ["criteria"] = "( ( buff.malevolence.up & ( ( talent.cataclysm.enabled & active_enemies <= 10 ) || ( talent.inferno.enabled & active_enemies <= 6 ) ) ) || ( talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 6 ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 4 ) || active_enemies <= 3 ) & ( ( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled ) & time_to_die < 5 || boss & fight_remains <= 8 )", ["action"] = "shadowburn", ["cycle_targets"] = 1, }, { ["action"] = "ruination", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "pet.infernal.active & talent.rain_of_chaos.enabled", ["action"] = "rain_of_fire", }, { ["enabled"] = true, ["criteria"] = "( buff.decimation.up ) & ! talent.raging_demonfire.enabled & havoc_active", ["action"] = "soul_fire", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.decimation.up & active_dot.immolate <= 4", ["action"] = "soul_fire", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "soul_shard < 2.5", ["action"] = "infernal_bolt", }, { ["enabled"] = true, ["criteria"] = "( soul_shard > 3.5 - ( 0.1 * active_enemies ) & ! talent.rain_of_fire.enabled ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 3 )", ["action"] = "chaos_bolt", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 15 || talent.wither.enabled", ["action"] = "cataclysm", }, { ["enabled"] = true, ["criteria"] = "( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled || ( talent.inferno.enabled & active_enemies > 4 ) ) & target.time_to_die > 8 & ( cooldown.malevolence.remains > 15 || ! talent.malevolence.enabled ) || time < 5", ["action"] = "havoc", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "dot.wither.refreshable & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.wither.remains ) & ( ! talent.raging_demonfire.enabled || cooldown.channel_demonfire.remains > remains || time < 5 ) & active_dot.wither <= cycle_enemies & target.time_to_die > 18", ["action"] = "wither", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "dot.immolate.refreshable & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.immolate.remains ) & ( ! talent.raging_demonfire.enabled || cooldown.channel_demonfire.remains > remains || time < 5 ) & ( active_dot.immolate <= 6 & ! ( talent.diabolic_ritual.enabled & talent.inferno.enabled ) || active_dot.immolate <= 4 ) & target.time_to_die > 18", ["action"] = "immolate", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "ogcd", }, { ["action"] = "summon_infernal", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "debuff.pyrogenics.down & active_enemies <= 4 & ! talent.diabolic_ritual.enabled", ["action"] = "rain_of_fire", }, { ["enabled"] = true, ["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time", ["action"] = "channel_demonfire", }, { ["enabled"] = true, ["criteria"] = "dot.immolate.refreshable & ( ( ( ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.immolate.remains ) ) || cycle_enemies > active_dot.immolate ) & target.time_to_die > 10 & ! havoc_active & ! ( talent.diabolic_ritual.enabled & talent.inferno.enabled ) )", ["action"] = "immolate", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "dot.immolate.refreshable & ( ( variable.havoc_immo_time < 5.4 || ( dot.immolate.remains < 2 & dot.immolate.remains < havoc_remains ) || ! dot.immolate.ticking || ( variable.havoc_immo_time < 2 ) * havoc_active ) & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.immolate.remains ) & target.time_to_die > 11 & ! ( talent.diabolic_ritual.enabled & talent.inferno.enabled ) )", ["action"] = "immolate", ["cycle_targets"] = 1, }, { ["action"] = "dimensional_rift", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.decimation.up", ["action"] = "soul_fire", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "talent.fire_and_brimstone.enabled & buff.backdraft.up", ["action"] = "incinerate", }, { ["enabled"] = true, ["criteria"] = "buff.backdraft.stack < 2 || ! talent.backdraft.enabled", ["action"] = "conflagrate", }, { ["action"] = "incinerate", ["enabled"] = true, }, }, ["havoc"] = { { ["enabled"] = true, ["criteria"] = "talent.backdraft.enabled & buff.backdraft.down & soul_shard >= 1 & soul_shard <= 4", ["action"] = "conflagrate", }, { ["enabled"] = true, ["criteria"] = "cast_time < havoc_remains & soul_shard < 2.5", ["action"] = "soul_fire", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 15 || ( talent.wither.enabled & dot.wither.remains < action.wither.cast_time * 0.3 )", ["action"] = "cataclysm", }, { ["enabled"] = true, ["criteria"] = "( ( ( dot.immolate.refreshable & variable.havoc_immo_time < 5.4 ) & target.time_to_die > 5 ) || ( ( dot.immolate.remains < 2 & dot.immolate.remains < havoc_remains ) || ! dot.immolate.ticking || variable.havoc_immo_time < 2 ) & target.time_to_die > 11 ) & soul_shard < 4.5", ["action"] = "immolate", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "( ( ( dot.wither.refreshable & variable.havoc_immo_time < 5.4 ) & target.time_to_die > 5 ) || ( ( dot.wither.remains < 2 & dot.wither.remains < havoc_remains ) || ! dot.wither.ticking || variable.havoc_immo_time < 2 ) & target.time_to_die > 11 ) & soul_shard < 4.5", ["action"] = "wither", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "active_enemies <= 4 & ( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled )", ["action"] = "shadowburn", }, { ["enabled"] = true, ["criteria"] = "active_enemies <= 4 & havoc_remains <= gcd.max * 3", ["action"] = "shadowburn", }, { ["enabled"] = true, ["criteria"] = "cast_time < havoc_remains & ( ( ! talent.improved_chaos_bolt.enabled & active_enemies <= 2 ) || ( talent.improved_chaos_bolt.enabled & ( ( talent.wither.enabled & talent.inferno.enabled & active_enemies <= 2 ) || ( talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 4 ) || ( ! talent.wither.enabled & talent.inferno.enabled & active_enemies <= 3 ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 5 ) ) ) )", ["action"] = "chaos_bolt", }, { ["enabled"] = true, ["criteria"] = "active_enemies >= 3", ["action"] = "rain_of_fire", }, { ["enabled"] = true, ["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time & soul_shard < 4.5", ["action"] = "channel_demonfire", }, { ["enabled"] = true, ["criteria"] = "! talent.backdraft.enabled", ["action"] = "conflagrate", }, { ["enabled"] = true, ["criteria"] = "soul_shard < 4.7 & ( charges > 2 || boss & fight_remains < cooldown.dimensional_rift.duration )", ["action"] = "dimensional_rift", }, { ["enabled"] = true, ["criteria"] = "cast_time < havoc_remains", ["action"] = "incinerate", }, }, ["cleave"] = { { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "havoc_active & havoc_remains > gcd.max", ["list_name"] = "havoc", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "cooldown.havoc.remains <= 5 || talent.mayhem.enabled", ["var_name"] = "pool_soul_shards", }, { ["enabled"] = true, ["criteria"] = "( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled )", ["action"] = "malevolence", }, { ["enabled"] = true, ["criteria"] = "( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled ) & target.time_to_die > 8", ["action"] = "havoc", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "demonic_art", ["action"] = "chaos_bolt", }, { ["enabled"] = true, ["criteria"] = "buff.decimation.react & ( soul_shard <= 4 || buff.decimation.remains <= gcd.max * 2 ) & debuff.conflagrate.remains >= execute_time & cooldown.havoc.remains", ["action"] = "soul_fire", }, { ["enabled"] = true, ["criteria"] = "talent.internal_combustion.enabled & ( ( ( dot.wither.remains - 5 * action.chaos_bolt.in_flight ) < dot.wither.duration * 0.4 ) || dot.wither.remains < 3 || ( dot.wither.remains - action.chaos_bolt.execute_time ) < 5 & action.chaos_bolt.usable ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + action.soul_fire.cast_time > ( dot.wither.remains - 5 ) ) & target.time_to_die > 8 & ! action.soul_fire.in_flight_to_target", ["action"] = "wither", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "! talent.internal_combustion.enabled & ( ( ( dot.wither.remains - 5 * ( action.chaos_bolt.in_flight ) ) < dot.wither.duration * 0.3 ) || dot.wither.remains < 3 ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + action.soul_fire.cast_time > ( dot.wither.remains ) ) & target.time_to_die > 8 & ! action.soul_fire.in_flight_to_target", ["action"] = "wither", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "( talent.roaring_blaze.enabled & full_recharge_time <= gcd.max * 2 ) || recharge_time <= 8 & ( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) < gcd.max ) & ! variable.pool_soul_shards", ["action"] = "conflagrate", }, { ["enabled"] = true, ["criteria"] = "( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled ) || boss & fight_remains <= 8", ["action"] = "shadowburn", }, { ["enabled"] = true, ["criteria"] = "buff.ritual_of_ruin.up", ["action"] = "chaos_bolt", }, { ["enabled"] = true, ["criteria"] = "cooldown.summon_infernal.remains >= 90 & talent.rain_of_chaos.enabled", ["action"] = "rain_of_fire", }, { ["enabled"] = true, ["criteria"] = "cooldown.summon_infernal.remains >= 90 & talent.rain_of_chaos.enabled", ["action"] = "shadowburn", }, { ["enabled"] = true, ["criteria"] = "cooldown.summon_infernal.remains >= 90 & talent.rain_of_chaos.enabled", ["action"] = "chaos_bolt", }, { ["enabled"] = true, ["criteria"] = "( debuff.eradication.remains >= execute_time || ! talent.eradication.enabled || ! talent.shadowburn.enabled )", ["action"] = "ruination", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 15", ["action"] = "cataclysm", }, { ["enabled"] = true, ["criteria"] = "talent.raging_demonfire.enabled & ( dot.immolate.remains + dot.wither.remains - 5 * ( action.chaos_bolt.in_flight & talent.internal_combustion.enabled ) ) > cast_time", ["action"] = "channel_demonfire", }, { ["enabled"] = true, ["criteria"] = "soul_shard <= 3.5 & ( debuff.conflagrate.remains > cast_time + travel_time || ! talent.roaring_blaze.enabled & buff.backdraft.up ) & ! variable.pool_soul_shards", ["action"] = "soul_fire", }, { ["enabled"] = true, ["criteria"] = "( dot.immolate.refreshable & ( dot.immolate.remains < cooldown.havoc.remains || ! dot.immolate.ticking ) ) & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > remains ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + ( ! talent.mayhem.enabled * action.soul_fire.cast_time ) > dot.immolate.remains ) & target.time_to_die > 15", ["action"] = "immolate", ["cycle_targets"] = 1, }, { ["action"] = "summon_infernal", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.diabolic_ritual.enabled & ( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains - 2 - ! variable.disable_cb_2t * action.chaos_bolt.cast_time - variable.disable_cb_2t * gcd.max ) <= 0 )", ["action"] = "incinerate", }, { ["enabled"] = true, ["criteria"] = "variable.pooling_condition & ! talent.wither.enabled & buff.rain_of_chaos.up", ["action"] = "rain_of_fire", }, { ["enabled"] = true, ["criteria"] = "variable.allow_rof_2t_spender >= 1 & ! talent.wither.enabled & talent.pyrogenics.enabled & debuff.pyrogenics.remains <= gcd.max & ( ! talent.rain_of_chaos.enabled || cooldown.summon_infernal.remains >= gcd.max * 3 ) & variable.pooling_condition", ["action"] = "rain_of_fire", }, { ["enabled"] = true, ["criteria"] = "variable.do_rof_2t & variable.pooling_condition & ( cooldown.summon_infernal.remains >= gcd.max * 3 || ! talent.rain_of_chaos.enabled )", ["action"] = "rain_of_fire", }, { ["enabled"] = true, ["criteria"] = "soul_shard <= 4 & talent.mayhem.enabled", ["action"] = "soul_fire", }, { ["enabled"] = true, ["criteria"] = "! variable.disable_cb_2t & variable.pooling_condition_cb & ( cooldown.summon_infernal.remains >= gcd.max * 3 || soul_shard > 4 || ! talent.rain_of_chaos.enabled )", ["action"] = "chaos_bolt", }, { ["enabled"] = true, ["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time", ["action"] = "channel_demonfire", }, { ["action"] = "dimensional_rift", ["enabled"] = true, }, { ["action"] = "infernal_bolt", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "time_to_max_charges < 2 * gcd.max || boss & fight_remains < gcd.max * charges", ["action"] = "conflagrate", }, { ["action"] = "incinerate", ["enabled"] = true, }, }, ["variables"] = { { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["value"] = "dot.immolate.remains = 3 || ( talent.secrets_of_the_coven.enabled & buff.infernal_bolt.up || buff.decimation.up ) & soul_shard >= 3 )", ["var_name"] = "pooling_condition", ["default"] = "1", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "variable.pooling_condition || pet.infernal.active & soul_shard >= 3", ["var_name"] = "pooling_condition_cb", ["default"] = "1", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "pet.infernal.active || ( cooldown.summon_infernal.duration - cooldown.summon_infernal.remains ) < 20", ["var_name"] = "infernal_active", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( ( floor ( ( fight_remains / trinket.t1.cooldown.duration ) + 1 ) != floor ( ( fight_remains + ( cooldown.summon_infernal.duration - cooldown.summon_infernal.remains ) ) / cooldown.summon_infernal.duration ) ) & ( floor ( ( fight_remains / trinket.t1.cooldown.duration ) + 1 ) ) != ( floor ( ( ( fight_remains - cooldown.summon_infernal.remains ) / trinket.t1.cooldown.duration ) + 1 ) ) || ( ( floor ( ( fight_remains / trinket.t1.cooldown.duration ) + 1 ) = floor ( ( fight_remains + ( cooldown.summon_infernal.duration - cooldown.summon_infernal.remains ) ) / cooldown.summon_infernal.duration ) ) & ( ( ( fight_remains - cooldown.summon_infernal.remains % trinket.t1.cooldown.duration ) - cooldown.summon_infernal.remains - variable.trinket_1_buff_duration ) > 0 ) ) ) & cooldown.summon_infernal.remains > 20", ["var_name"] = "trinket_1_will_lose_cast", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( ( floor ( ( fight_remains / trinket.t2.cooldown.duration ) + 1 ) != floor ( ( fight_remains + ( cooldown.summon_infernal.duration - cooldown.summon_infernal.remains ) ) / cooldown.summon_infernal.duration ) ) & ( floor ( ( fight_remains / trinket.t2.cooldown.duration ) + 1 ) ) != ( floor ( ( ( fight_remains - cooldown.summon_infernal.remains ) / trinket.t2.cooldown.duration ) + 1 ) ) || ( ( floor ( ( fight_remains / trinket.t2.cooldown.duration ) + 1 ) = floor ( ( fight_remains + ( cooldown.summon_infernal.duration - cooldown.summon_infernal.remains ) ) / cooldown.summon_infernal.duration ) ) & ( ( ( fight_remains - cooldown.summon_infernal.remains % trinket.t2.cooldown.duration ) - cooldown.summon_infernal.remains - variable.trinket_2_buff_duration ) > 0 ) ) ) & cooldown.summon_infernal.remains > 20", ["var_name"] = "trinket_2_will_lose_cast", }, }, ["default"] = { { ["action"] = "spell_lock", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "variables", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "ogcd", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "items", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "( active_enemies >= 3 ) & ! variable.cleave_apl", ["list_name"] = "aoe", }, { ["enabled"] = true, ["action"] = "call_action_list", ["description"] = "This entry is manually translated and will differ from SIMC, but maintains the same functionality.", ["strict"] = 1, ["criteria"] = "active_enemies > 1", ["list_name"] = "cleave", }, { ["enabled"] = true, ["criteria"] = "cooldown.summon_infernal.remains >= 55", ["action"] = "malevolence", }, { ["enabled"] = true, ["sec"] = "( ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) )", ["action"] = "wait", ["criteria"] = "( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) < gcd.max * 0.25 ) & soul_shard > 2", }, { ["enabled"] = true, ["criteria"] = "demonic_art", ["action"] = "chaos_bolt", }, { ["enabled"] = true, ["criteria"] = "buff.decimation.react & ( soul_shard <= 4 || buff.decimation.remains <= gcd.max * 2 ) & debuff.conflagrate.remains >= execute_time", ["action"] = "soul_fire", }, { ["enabled"] = true, ["criteria"] = "talent.internal_combustion.enabled & ( ( ( dot.wither.remains - 5 * action.chaos_bolt.in_flight ) < dot.wither.duration * 0.4 ) || dot.wither.remains < 3 || ( dot.wither.remains - action.chaos_bolt.execute_time ) < 5 & action.chaos_bolt.usable ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + action.soul_fire.cast_time > ( dot.wither.remains - 5 ) ) & target.time_to_die > 8 & ! action.soul_fire.in_flight_to_target", ["action"] = "wither", }, { ["enabled"] = true, ["criteria"] = "talent.roaring_blaze.enabled & debuff.conflagrate.remains < 1.5 || full_recharge_time <= gcd.max * 2 || recharge_time <= 8 & ( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) < gcd.max ) & soul_shard >= 1.5", ["action"] = "conflagrate", }, { ["enabled"] = true, ["criteria"] = "( full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled ) & ! demonic_art || boss & fight_remains <= 8", ["action"] = "shadowburn", }, { ["enabled"] = true, ["criteria"] = "buff.ritual_of_ruin.up", ["action"] = "chaos_bolt", }, { ["enabled"] = true, ["criteria"] = "( cooldown.summon_infernal.remains >= 90 & talent.rain_of_chaos.enabled ) || buff.malevolence.up", ["action"] = "shadowburn", }, { ["enabled"] = true, ["criteria"] = "( cooldown.summon_infernal.remains >= 90 & talent.rain_of_chaos.enabled ) || buff.malevolence.up", ["action"] = "chaos_bolt", }, { ["enabled"] = true, ["criteria"] = "( debuff.eradication.remains >= execute_time || ! talent.eradication.enabled || ! talent.shadowburn.enabled )", ["action"] = "ruination", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 15 & ( dot.immolate.refreshable & ! talent.wither.enabled || talent.wither.enabled & dot.wither.refreshable )", ["action"] = "cataclysm", }, { ["enabled"] = true, ["criteria"] = "talent.raging_demonfire.enabled & ( dot.immolate.remains + dot.wither.remains - 5 * ( action.chaos_bolt.in_flight & talent.internal_combustion.enabled ) ) > cast_time", ["action"] = "channel_demonfire", }, { ["enabled"] = true, ["criteria"] = "! talent.internal_combustion.enabled & ( ( ( dot.wither.remains - 5 * ( action.chaos_bolt.in_flight ) ) < dot.wither.duration * 0.3 ) || dot.wither.remains < 3 ) & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.wither.remains ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + action.soul_fire.cast_time > ( dot.wither.remains ) ) & target.time_to_die > 8 & ! action.soul_fire.in_flight_to_target", ["action"] = "wither", }, { ["enabled"] = true, ["criteria"] = "( ( ( dot.immolate.remains - 5 * ( action.chaos_bolt.in_flight & talent.internal_combustion.enabled ) ) < dot.immolate.duration * 0.3 ) || dot.immolate.remains < 3 || ( dot.immolate.remains - action.chaos_bolt.execute_time ) < 5 & talent.internal_combustion.enabled & action.chaos_bolt.usable ) & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.immolate.remains ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + action.soul_fire.cast_time > ( dot.immolate.remains - 5 * talent.internal_combustion.enabled ) ) & target.time_to_die > 8 & ! action.soul_fire.in_flight_to_target", ["action"] = "immolate", }, { ["action"] = "summon_infernal", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.diabolic_ritual.enabled & ( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains - 2 - ! variable.disable_cb_2t * action.chaos_bolt.cast_time - variable.disable_cb_2t * gcd.max ) <= 0 )", ["action"] = "incinerate", }, { ["enabled"] = true, ["criteria"] = "variable.pooling_condition_cb & ( cooldown.summon_infernal.remains >= gcd.max * 3 || soul_shard > 4 || ! talent.rain_of_chaos.enabled )", ["action"] = "chaos_bolt", }, { ["enabled"] = true, ["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time", ["action"] = "channel_demonfire", ["description"] = "[Hekili] Don't use without Immolate/Wither active.", }, { ["action"] = "dimensional_rift", ["enabled"] = true, }, { ["action"] = "infernal_bolt", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "time_to_max_charges < 2 * gcd.max || boss & fight_remains < gcd.max * charges", ["action"] = "conflagrate", }, { ["enabled"] = true, ["criteria"] = "buff.backdraft.up", ["action"] = "soul_fire", }, { ["action"] = "incinerate", ["enabled"] = true, }, }, ["precombat"] = { { ["enabled"] = true, ["criteria"] = "time > 0 & ! pet.alive", ["action"] = "fel_domination", }, { ["action"] = "summon_pet", ["enabled"] = true, }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "toggle.funnel", ["var_name"] = "cleave_apl", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.has_use_buff", ["var_name"] = "trinket_1_buffs", ["description"] = "Automatic Logic for Buff Trinkets in Trinket Slot 1", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.has_use_buff", ["var_name"] = "trinket_2_buffs", ["description"] = "Automatic Logic for Buff Trinkets in Trinket Slot 2", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "trinket_1_sync", ["value"] = "1", ["value_else"] = "0.5", ["criteria"] = "variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % cooldown.summon_infernal.duration = 0 || cooldown.summon_infernal.duration % trinket.t1.cooldown.duration = 0 )", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "trinket_2_sync", ["value"] = "1", ["value_else"] = "0.5", ["criteria"] = "variable.trinket_2_buffs & ( trinket.t2.cooldown.duration % cooldown.summon_infernal.duration = 0 || cooldown.summon_infernal.duration % trinket.t2.cooldown.duration = 0 )", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.spymasters_web", ["var_name"] = "trinket_1_manual", ["description"] = "Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.spymasters_web", ["var_name"] = "trinket_2_manual", ["description"] = "Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.whispering_incarnate_icon", ["var_name"] = "trinket_1_exclude", ["description"] = "Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.whispering_incarnate_icon", ["var_name"] = "trinket_2_exclude", ["description"] = "For On Use Trinkets on slot 2 with on use effects you dont want to use in combat", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.buff_duration", ["var_name"] = "trinket_1_buff_duration", ["description"] = "Sets the duration of the trinket in the automatic logic", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.buff_duration", ["var_name"] = "trinket_2_buff_duration", ["description"] = "Sets the duration of the trinket in the automatic logic", }, { ["enabled"] = true, ["op"] = "setif", ["description"] = "Automatic Logic in case both Trinkets are on use buffs", ["value"] = "2", ["var_name"] = "trinket_priority", ["action"] = "variable", ["value_else"] = "1", ["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / variable.trinket_2_buff_duration ) * ( 1 + 0.5 * trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / variable.trinket_1_buff_duration ) * ( 1 + 0.5 * trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )", }, { ["enabled"] = true, ["op"] = "reset", ["action"] = "variable", ["var_name"] = "allow_rof_2t_spender", ["default"] = "2", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "variable.allow_rof_2t_spender > 1.99 & ! ( talent.cataclysm.enabled & talent.improved_chaos_bolt.enabled )", ["var_name"] = "do_rof_2t", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "variable.do_rof_2t || variable.allow_rof_2t_spender > 0.01 & variable.allow_rof_2t_spender < 0.99", ["var_name"] = "disable_cb_2t", }, { ["enabled"] = true, ["criteria"] = "talent.grimoire_of_sacrifice.enabled", ["action"] = "grimoire_of_sacrifice", }, { ["enabled"] = true, ["criteria"] = "active_enemies >= 2", ["action"] = "cataclysm", }, { ["action"] = "soul_fire", ["enabled"] = true, }, { ["action"] = "incinerate", ["enabled"] = true, }, }, ["ogcd"] = { { ["enabled"] = true, ["criteria"] = "variable.infernal_active || ! talent.summon_infernal.enabled", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "variable.infernal_active || ! talent.summon_infernal.enabled || ( boss & fight_remains < ( cooldown.summon_infernal.remains_expected + cooldown.berserking.duration ) & ( fight_remains > cooldown.berserking.duration ) ) || boss & fight_remains < cooldown.summon_infernal.remains_expected", ["action"] = "berserking", }, { ["enabled"] = true, ["criteria"] = "variable.infernal_active || ! talent.summon_infernal.enabled || ( boss & fight_remains < cooldown.summon_infernal.remains_expected + 10 + cooldown.blood_fury.duration & fight_remains > cooldown.blood_fury.duration ) || boss & fight_remains < cooldown.summon_infernal.remains", ["action"] = "blood_fury", }, { ["enabled"] = true, ["criteria"] = "variable.infernal_active || ! talent.summon_infernal.enabled || ( boss & fight_remains < cooldown.summon_infernal.remains_expected + 10 + cooldown.fireblood.duration & fight_remains > cooldown.fireblood.duration ) || boss & fight_remains < cooldown.summon_infernal.remains_expected", ["action"] = "fireblood", }, { ["enabled"] = true, ["criteria"] = "variable.infernal_active || ! talent.summon_infernal.enabled || ( boss & fight_remains < ( cooldown.summon_infernal.remains_expected + cooldown.berserking.duration ) & ( fight_remains > cooldown.berserking.duration ) ) || boss & fight_remains < cooldown.summon_infernal.remains_expected", ["action"] = "ancestral_call", }, }, }, ["version"] = 20250303, ["warnings"] = "The import for 'items' required some automated changes.\nLine 2: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 3: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\n\nThe import for 'variables' required some automated changes.\nLine 2: Converted 'talent.secrets_of_the_coven' to 'talent.secrets_of_the_coven.enabled' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted operations in '((floor((fight_remains%trinket.t1.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(floor((fight_remains%trinket.t1.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)%trinket.t1.cooldown.duration)+1))||((floor((fight_remains%trinket.t1.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%%trinket.t1.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_1_buff_duration)>0)))&cooldown.summon_infernal.remains>20' to '((floor((fight_remains/trinket.t1.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(floor((fight_remains/trinket.t1.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)/trinket.t1.cooldown.duration)+1))||((floor((fight_remains/trinket.t1.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%trinket.t1.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_1_buff_duration)>0)))&cooldown.summon_infernal.remains>20'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted operations in '((floor((fight_remains%trinket.t2.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(floor((fight_remains%trinket.t2.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)%trinket.t2.cooldown.duration)+1))||((floor((fight_remains%trinket.t2.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%%trinket.t2.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_2_buff_duration)>0)))&cooldown.summon_infernal.remains>20' to '((floor((fight_remains/trinket.t2.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(floor((fight_remains/trinket.t2.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)/trinket.t2.cooldown.duration)+1))||((floor((fight_remains/trinket.t2.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%trinket.t2.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_2_buff_duration)>0)))&cooldown.summon_infernal.remains>20'.\n\nThe import for 'default' required some automated changes.\nLine 11: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 11: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 12: Converted 'talent.roaring_blaze' to 'talent.roaring_blaze.enabled' (1x).\nLine 13: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 13: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 13: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 13: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 15: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 16: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 17: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 17: Converted 'talent.shadowburn' to 'talent.shadowburn.enabled' (1x).\nLine 18: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 18: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 19: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 19: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 20: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 20: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 20: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 21: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 21: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 21: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 21: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 21: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 23: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 24: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%trinket.t1.cooldown.duration=0)'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%trinket.t2.cooldown.duration=0)'.\nLine 8: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 9: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 10: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 11: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 14: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 16: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 16: Converted 'talent.improved_chaos_bolt' to 'talent.improved_chaos_bolt.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 5: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 7: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 8: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 9: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 10: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 10: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 10: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 10: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 10: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 10: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 10: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 10: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 10: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 10: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 11: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 11: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 11: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 11: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 11: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 11: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 11: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 13: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 14: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 17: Converted 'talent.rain_of_fire' to 'talent.rain_of_fire.enabled' (1x).\nLine 17: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 17: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 18: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 19: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 19: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 19: Converted 'talent.malevolence' to 'talent.malevolence.enabled' (1x).\nLine 20: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 21: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 21: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 21: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 24: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 26: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 26: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 27: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 27: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 31: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\n\nThe import for 'cleave' required some automated changes.\nLine 2: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 3: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 7: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 7: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 8: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 8: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 10: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 10: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 10: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 10: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 12: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 13: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 14: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 15: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 15: Converted 'talent.shadowburn' to 'talent.shadowburn.enabled' (1x).\nLine 17: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 17: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 18: Converted 'talent.roaring_blaze' to 'talent.roaring_blaze.enabled' (1x).\nLine 19: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 19: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 19: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 21: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 22: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 23: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 23: Converted 'talent.pyrogenics' to 'talent.pyrogenics.enabled' (1x).\nLine 23: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 24: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 25: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 26: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\n\nThe import for 'havoc' required some automated changes.\nLine 1: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\nLine 3: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 6: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 6: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 6: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 6: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 8: Converted 'talent.improved_chaos_bolt' to 'talent.improved_chaos_bolt.enabled' (1x).\nLine 8: Converted 'talent.improved_chaos_bolt' to 'talent.improved_chaos_bolt.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\n\nThe import for 'ogcd' required some automated changes.\nLine 1: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 2: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 3: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\n\nImported 8 action lists.\n", ["profile"] = "actions.precombat=fel_domination,if=time>0&!pet.alive\nactions.precombat+=/summon_pet\nactions.precombat+=/variable,name=cleave_apl,value=toggle.funnel\n# Automatic Logic for Buff Trinkets in Trinket Slot 1\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff\n# Automatic Logic for Buff Trinkets in Trinket Slot 2\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%%trinket.2.cooldown.duration=0)\n# Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.spymasters_web\n# Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.spymasters_web\n# Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.whispering_incarnate_icon\n# For On Use Trinkets on slot 2 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.whispering_incarnate_icon\n# Sets the duration of the trinket in the automatic logic\nactions.precombat+=/variable,name=trinket_1_buff_duration,value=trinket.1.proc.any_dps.duration\n# Sets the duration of the trinket in the automatic logic\nactions.precombat+=/variable,name=trinket_2_buff_duration,value=trinket.2.proc.any_dps.duration\n# Automatic Logic in case both Trinkets are on use buffs\nactions.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%variable.trinket_2_buff_duration)*(1+0.5*trinket.2.has_buff.intellect)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.1.has_buff.intellect)*(variable.trinket_1_sync))\nactions.precombat+=/variable,name=allow_rof_2t_spender,default=2,op=reset\nactions.precombat+=/variable,name=do_rof_2t,value=variable.allow_rof_2t_spender>1.99&!(talent.cataclysm&talent.improved_chaos_bolt),op=set\nactions.precombat+=/variable,name=disable_cb_2t,value=variable.do_rof_2t||variable.allow_rof_2t_spender>0.01&variable.allow_rof_2t_spender<0.99\nactions.precombat+=/grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice.enabled\nactions.precombat+=/cataclysm,if=active_enemies>=2\nactions.precombat+=/soul_fire\nactions.precombat+=/incinerate\n\nactions+=/spell_lock\nactions+=/call_action_list,name=variables\nactions+=/call_action_list,name=ogcd\nactions+=/call_action_list,name=items\nactions+=/call_action_list,name=aoe,strict=1,if=(active_enemies>=3)&!variable.cleave_apl\n# This entry is manually translated and will differ from SIMC, but maintains the same functionality.\nactions+=/call_action_list,name=cleave,strict=1,if=active_enemies>1\nactions+=/malevolence,if=cooldown.summon_infernal.remains>=55\nactions+=/wait,sec=((buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)),if=(diabolic_ritual&(buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)2\nactions+=/chaos_bolt,if=demonic_art\nactions+=/soul_fire,if=buff.decimation.react&(soul_shard<=4||buff.decimation.remains<=gcd.max*2)&debuff.conflagrate.remains>=execute_time\nactions+=/wither,if=talent.internal_combustion&(((dot.wither.remains-5*action.chaos_bolt.in_flight)(dot.wither.remains-5))&target.time_to_die>8&!action.soul_fire.in_flight_to_target\nactions+=/conflagrate,if=talent.roaring_blaze&debuff.conflagrate.remains<1.5||full_recharge_time<=gcd.max*2||recharge_time<=8&(diabolic_ritual&(buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)=1.5\nactions+=/shadowburn,if=(full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)&!demonic_art||boss&fight_remains<=8\nactions+=/chaos_bolt,if=buff.ritual_of_ruin.up\nactions+=/shadowburn,if=(cooldown.summon_infernal.remains>=90&talent.rain_of_chaos)||buff.malevolence.up\nactions+=/chaos_bolt,if=(cooldown.summon_infernal.remains>=90&talent.rain_of_chaos)||buff.malevolence.up\nactions+=/ruination,if=(debuff.eradication.remains>=execute_time||!talent.eradication||!talent.shadowburn)\nactions+=/cataclysm,if=raid_event.adds.in>15&(dot.immolate.refreshable&!talent.wither||talent.wither&dot.wither.refreshable)\nactions+=/channel_demonfire,if=talent.raging_demonfire&(dot.immolate.remains+dot.wither.remains-5*(action.chaos_bolt.in_flight&talent.internal_combustion))>cast_time\nactions+=/wither,if=!talent.internal_combustion&(((dot.wither.remains-5*(action.chaos_bolt.in_flight))dot.wither.remains)&(!talent.soul_fire||cooldown.soul_fire.remains+action.soul_fire.cast_time>(dot.wither.remains))&target.time_to_die>8&!action.soul_fire.in_flight_to_target\nactions+=/immolate,if=(((dot.immolate.remains-5*(action.chaos_bolt.in_flight&talent.internal_combustion))dot.immolate.remains)&(!talent.soul_fire||cooldown.soul_fire.remains+action.soul_fire.cast_time>(dot.immolate.remains-5*talent.internal_combustion))&target.time_to_die>8&!action.soul_fire.in_flight_to_target\nactions+=/summon_infernal\nactions+=/incinerate,if=talent.diabolic_ritual&(diabolic_ritual&(buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains-2-!variable.disable_cb_2t*action.chaos_bolt.cast_time-variable.disable_cb_2t*gcd.max)<=0)\nactions+=/chaos_bolt,if=variable.pooling_condition_cb&(cooldown.summon_infernal.remains>=gcd.max*3||soul_shard>4||!talent.rain_of_chaos)\n# [Hekili] Don't use without Immolate/Wither active.\nactions+=/channel_demonfire,if=dot.immolate.remains+dot.wither.remains>cast_time\nactions+=/dimensional_rift\nactions+=/infernal_bolt\nactions+=/conflagrate,if=time_to_max_charges<2*gcd.max||boss&fight_remains=55&soul_shard<4.7&(active_enemies<=3+active_dot.wither||time>30)\nactions.aoe+=/rain_of_fire,if=demonic_art\nactions.aoe+=/wait,sec=((buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)),if=(diabolic_ritual&(buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)2\nactions.aoe+=/incinerate,if=(diabolic_ritual&(buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)<=action.incinerate.cast_time&(buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)>gcd.max*0.25)\nactions.aoe+=/call_action_list,name=havoc,strict=1,if=havoc_active&havoc_remains>gcd.max&active_enemies<(5+!talent.wither)&(!cooldown.summon_infernal.up||!talent.summon_infernal)\nactions.aoe+=/dimensional_rift,if=soul_shard<4.7&(charges>2||boss&fight_remains=(4.5-0.1*(active_dot.immolate+active_dot.wither))||soul_shard>=(3.5-0.1*(active_dot.immolate+active_dot.wither))||buff.ritual_of_ruin.up\nactions.aoe+=/wither,cycle_targets=1,if=dot.wither.refreshable&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.wither.remains)&(!talent.raging_demonfire||cooldown.channel_demonfire.remains>remains||time<5)&(active_dot.wither<=4||time>15)&target.time_to_die>18\nactions.aoe+=/channel_demonfire,if=dot.immolate.remains+dot.wither.remains>cast_time&talent.raging_demonfire\nactions.aoe+=/shadowburn,if=((buff.malevolence.up&((talent.cataclysm&active_enemies<=10)||(talent.inferno&active_enemies<=6)))||(talent.wither&talent.cataclysm&active_enemies<=6)||(!talent.wither&talent.cataclysm&active_enemies<=4)||active_enemies<=3)&((cooldown.shadowburn.full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)||fight_remains<=8)\nactions.aoe+=/shadowburn,cycle_targets=1,if=((buff.malevolence.up&((talent.cataclysm&active_enemies<=10)||(talent.inferno&active_enemies<=6)))||(talent.wither&talent.cataclysm&active_enemies<=6)||(!talent.wither&talent.cataclysm&active_enemies<=4)||active_enemies<=3)&((cooldown.shadowburn.full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)&time_to_die<5||boss&fight_remains<=8)\nactions.aoe+=/ruination\nactions.aoe+=/rain_of_fire,if=pet.infernal.active&talent.rain_of_chaos\nactions.aoe+=/soul_fire,cycle_targets=1,if=(buff.decimation.up)&!talent.raging_demonfire&havoc_active\nactions.aoe+=/soul_fire,cycle_targets=1,if=buff.decimation.up&active_dot.immolate<=4\nactions.aoe+=/infernal_bolt,if=soul_shard<2.5\nactions.aoe+=/chaos_bolt,if=(soul_shard>3.5-(0.1*active_enemies)&!talent.rain_of_fire)||(!talent.wither&talent.cataclysm&active_enemies<=3)\nactions.aoe+=/cataclysm,if=raid_event.adds.in>15||talent.wither\nactions.aoe+=/havoc,cycle_targets=1,if=(!cooldown.summon_infernal.up||!talent.summon_infernal||(talent.inferno&active_enemies>4))&target.time_to_die>8&(cooldown.malevolence.remains>15||!talent.malevolence)||time<5\nactions.aoe+=/wither,cycle_targets=1,if=dot.wither.refreshable&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.wither.remains)&(!talent.raging_demonfire||cooldown.channel_demonfire.remains>remains||time<5)&active_dot.wither<=cycle_enemies&target.time_to_die>18\nactions.aoe+=/immolate,cycle_targets=1,if=dot.immolate.refreshable&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.immolate.remains)&(!talent.raging_demonfire||cooldown.channel_demonfire.remains>remains||time<5)&(active_dot.immolate<=6&!(talent.diabolic_ritual&talent.inferno)||active_dot.immolate<=4)&target.time_to_die>18\nactions.aoe+=/call_action_list,name=ogcd\nactions.aoe+=/summon_infernal\nactions.aoe+=/rain_of_fire,if=debuff.pyrogenics.down&active_enemies<=4&!talent.diabolic_ritual\nactions.aoe+=/channel_demonfire,if=dot.immolate.remains+dot.wither.remains>cast_time\nactions.aoe+=/immolate,cycle_targets=1,if=dot.immolate.refreshable&((((!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.immolate.remains))||cycle_enemies>active_dot.immolate)&target.time_to_die>10&!havoc_active&!(talent.diabolic_ritual&talent.inferno))\nactions.aoe+=/immolate,cycle_targets=1,if=dot.immolate.refreshable&((variable.havoc_immo_time<5.4||(dot.immolate.remains<2&dot.immolate.remainsdot.immolate.remains)&target.time_to_die>11&!(talent.diabolic_ritual&talent.inferno))\nactions.aoe+=/dimensional_rift\nactions.aoe+=/soul_fire,cycle_targets=1,if=buff.decimation.up\nactions.aoe+=/incinerate,if=talent.fire_and_brimstone.enabled&buff.backdraft.up\nactions.aoe+=/conflagrate,if=buff.backdraft.stack<2||!talent.backdraft\nactions.aoe+=/incinerate\n\nactions.cleave+=/call_action_list,name=havoc,strict=1,if=havoc_active&havoc_remains>gcd.max\nactions.cleave+=/variable,name=pool_soul_shards,value=cooldown.havoc.remains<=5||talent.mayhem\nactions.cleave+=/malevolence,if=(!cooldown.summon_infernal.up||!talent.summon_infernal)\nactions.cleave+=/havoc,cycle_targets=1,if=(!cooldown.summon_infernal.up||!talent.summon_infernal)&target.time_to_die>8\nactions.cleave+=/chaos_bolt,if=demonic_art\nactions.cleave+=/soul_fire,if=buff.decimation.react&(soul_shard<=4||buff.decimation.remains<=gcd.max*2)&debuff.conflagrate.remains>=execute_time&cooldown.havoc.remains\nactions.cleave+=/wither,cycle_targets=1,if=talent.internal_combustion&(((dot.wither.remains-5*action.chaos_bolt.in_flight)(dot.wither.remains-5))&target.time_to_die>8&!action.soul_fire.in_flight_to_target\nactions.cleave+=/wither,cycle_targets=1,if=!talent.internal_combustion&(((dot.wither.remains-5*(action.chaos_bolt.in_flight))(dot.wither.remains))&target.time_to_die>8&!action.soul_fire.in_flight_to_target\nactions.cleave+=/conflagrate,if=(talent.roaring_blaze.enabled&full_recharge_time<=gcd.max*2)||recharge_time<=8&(diabolic_ritual&(buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)=90&talent.rain_of_chaos\nactions.cleave+=/shadowburn,if=cooldown.summon_infernal.remains>=90&talent.rain_of_chaos\nactions.cleave+=/chaos_bolt,if=cooldown.summon_infernal.remains>=90&talent.rain_of_chaos\nactions.cleave+=/ruination,if=(debuff.eradication.remains>=execute_time||!talent.eradication||!talent.shadowburn)\nactions.cleave+=/cataclysm,if=raid_event.adds.in>15\nactions.cleave+=/channel_demonfire,if=talent.raging_demonfire&(dot.immolate.remains+dot.wither.remains-5*(action.chaos_bolt.in_flight&talent.internal_combustion))>cast_time\nactions.cleave+=/soul_fire,if=soul_shard<=3.5&(debuff.conflagrate.remains>cast_time+travel_time||!talent.roaring_blaze&buff.backdraft.up)&!variable.pool_soul_shards\nactions.cleave+=/immolate,cycle_targets=1,if=(dot.immolate.refreshable&(dot.immolate.remainsremains)&(!talent.soul_fire||cooldown.soul_fire.remains+(!talent.mayhem*action.soul_fire.cast_time)>dot.immolate.remains)&target.time_to_die>15\nactions.cleave+=/summon_infernal\nactions.cleave+=/incinerate,if=talent.diabolic_ritual&(diabolic_ritual&(buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains-2-!variable.disable_cb_2t*action.chaos_bolt.cast_time-variable.disable_cb_2t*gcd.max)<=0)\nactions.cleave+=/rain_of_fire,if=variable.pooling_condition&!talent.wither&buff.rain_of_chaos.up\nactions.cleave+=/rain_of_fire,if=variable.allow_rof_2t_spender>=1&!talent.wither&talent.pyrogenics&debuff.pyrogenics.remains<=gcd.max&(!talent.rain_of_chaos||cooldown.summon_infernal.remains>=gcd.max*3)&variable.pooling_condition\nactions.cleave+=/rain_of_fire,if=variable.do_rof_2t&variable.pooling_condition&(cooldown.summon_infernal.remains>=gcd.max*3||!talent.rain_of_chaos)\nactions.cleave+=/soul_fire,if=soul_shard<=4&talent.mayhem\nactions.cleave+=/chaos_bolt,if=!variable.disable_cb_2t&variable.pooling_condition_cb&(cooldown.summon_infernal.remains>=gcd.max*3||soul_shard>4||!talent.rain_of_chaos)\nactions.cleave+=/channel_demonfire,if=dot.immolate.remains+dot.wither.remains>cast_time\nactions.cleave+=/dimensional_rift\nactions.cleave+=/infernal_bolt\nactions.cleave+=/conflagrate,if=time_to_max_charges<2*gcd.max||boss&fight_remains=1&soul_shard<=4\nactions.havoc+=/soul_fire,if=cast_time15||(talent.wither&dot.wither.remains5)||((dot.immolate.remains<2&dot.immolate.remains11)&soul_shard<4.5\nactions.havoc+=/wither,cycle_targets=1,if=(((dot.wither.refreshable&variable.havoc_immo_time<5.4)&target.time_to_die>5)||((dot.wither.remains<2&dot.wither.remains11)&soul_shard<4.5\nactions.havoc+=/shadowburn,if=active_enemies<=4&(cooldown.shadowburn.full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)\nactions.havoc+=/shadowburn,if=active_enemies<=4&havoc_remains<=gcd.max*3\nactions.havoc+=/chaos_bolt,if=cast_time=3\nactions.havoc+=/channel_demonfire,if=dot.immolate.remains+dot.wither.remains>cast_time&soul_shard<4.5\nactions.havoc+=/conflagrate,if=!talent.backdraft\nactions.havoc+=/dimensional_rift,if=soul_shard<4.7&(charges>2||boss&fight_remains=10&pet.infernal.remains<=20&buff.spymasters_report.stack>=38&(fight_remains>240||fight_remains<=140)||boss&fight_remains<=30\nactions.items+=/use_item,slot=trinket1,if=(variable.infernal_active||!talent.summon_infernal||variable.trinket_1_will_lose_cast)&(variable.trinket_priority=1||variable.trinket_2_exclude||!trinket.2.has_cooldown||(trinket.2.cooldown.remains||variable.trinket_priority=2&cooldown.summon_infernal.remains>20&!variable.infernal_active&trinket.2.cooldown.remains=fight_remains)\nactions.items+=/use_item,slot=trinket2,if=(variable.infernal_active||!talent.summon_infernal||variable.trinket_2_will_lose_cast)&(variable.trinket_priority=2||variable.trinket_1_exclude||!trinket.1.has_cooldown||(trinket.1.cooldown.remains||variable.trinket_priority=1&cooldown.summon_infernal.remains>20&!variable.infernal_active&trinket.1.cooldown.remains=fight_remains)\nactions.items+=/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)||talent.summon_infernal&cooldown.summon_infernal.remains_expected>20&!prev_gcd.1.summon_infernal||!talent.summon_infernal)\nactions.items+=/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)||talent.summon_infernal&cooldown.summon_infernal.remains_expected>20&!prev_gcd.1.summon_infernal||!talent.summon_infernal)\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand\n\nactions.ogcd+=/potion,if=variable.infernal_active||!talent.summon_infernal\n## actions.ogcd+=/invoke_external_buff,name=power_infusion,if=variable.infernal_active||!talent.summon_infernal||(boss&fight_remainscooldown.invoke_power_infusion_0.duration)||boss&fight_remainscooldown.berserking.duration))||boss&fight_remainscooldown.blood_fury.duration)||boss&fight_remainscooldown.fireblood.duration)||boss&fight_remainscooldown.berserking.duration))||boss&fight_remains=3||(talent.secrets_of_the_coven&buff.infernal_bolt.up||buff.decimation.up)&soul_shard>=3),default=1,op=set\nactions.variables+=/variable,name=pooling_condition_cb,value=variable.pooling_condition||pet.infernal.active&soul_shard>=3,default=1,op=set\n## actions.variables+=/cycling_variable,name=havoc_immo_time,op=add,value=dot.immolate.remains*debuff.havoc.up0)))&cooldown.summon_infernal.remains>20\nactions.variables+=/variable,name=trinket_2_will_lose_cast,value=((floor((fight_remains%trinket.2.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(floor((fight_remains%trinket.2.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)%trinket.2.cooldown.duration)+1))||((floor((fight_remains%trinket.2.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%%trinket.2.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_2_buff_duration)>0)))&cooldown.summon_infernal.remains>20", ["spec"] = 267, }, ["Affliction"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20250303, ["spec"] = 265, ["desc"] = "2025-03-03: Sync with SimC", ["profile"] = "actions.precombat=fel_domination,if=time>0&!pet.alive\nactions.precombat+=/summon_pet\nactions.precombat+=/variable,name=cleave_apl,value=toggle.funnel\n# Used to set Trinket in slot 1 as Buff Trinkets for the automatic logic\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff\n# Used to set Trinkets in slot 2 as Buff Trinkets for the automatic logic\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff\n# Automatic Logic for Buff Trinkets in Trinket Slot 1\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.1.cooldown.duration=0)\n# Automatic Logic for Buff Trinkets in Trinket Slot 2\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.2.cooldown.duration=0)\n# Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.spymasters_web||trinket.1.is.aberrant_spellforge\n# Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.spymasters_web||trinket.2.is.aberrant_spellforge\n# For On Use Trinkets on slot 1 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell\n# For On Use Trinkets on Slot 2 with on use effects you don't want to use in combat\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell\n# Sets the duration of Trinket 1 in the automatic logic\nactions.precombat+=/variable,name=trinket_1_buff_duration,value=trinket.1.proc.any_dps.duration+(trinket.1.is.mirror_of_fractured_tomorrows*20)\n# Sets the duration of Trinket 2 in the automatic logic\nactions.precombat+=/variable,name=trinket_2_buff_duration,value=trinket.2.proc.any_dps.duration+(trinket.2.is.mirror_of_fractured_tomorrows*20)\n# Automatic Logic in case of 2 On Use Buff Trinkets\nactions.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%variable.trinket_2_buff_duration)*(1+0.5*trinket.2.has_buff.intellect)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.1.has_buff.intellect)*(variable.trinket_1_sync))\nactions.precombat+=/grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice.enabled\nactions.precombat+=/seed_of_corruption,if=spell_targets.seed_of_corruption_aoe>2||spell_targets.seed_of_corruption_aoe>1&talent.demonic_soul\nactions.precombat+=/haunt\n\nactions+=/spell_lock\nactions+=/call_action_list,name=variables\nactions+=/call_action_list,name=ogcd\nactions+=/call_action_list,name=items\n# This entry is manually translated and will differ from SIMC, but maintains the same functionality.\nactions+=/call_action_list,name=cleave,if=active_enemies=2||active_enemies>2&variable.cleave_apl\nactions+=/call_action_list,name=aoe,if=active_enemies>2\nactions+=/call_action_list,name=end_of_fight\nactions+=/agony,if=(!talent.vile_taint||remainsdot.agony.remains+5\nactions+=/haunt,if=talent.demonic_soul&buff.nightfall.stack<2-prev_gcd.1.drain_soul&(!talent.vile_taint||cooldown.vile_taint.remains)\nactions+=/unstable_affliction,if=(active_dot.unstable_affliction=0||ticking)&(talent.absolute_corruption&remains<3||!talent.absolute_corruption&remains<5||cooldown.soul_rot.remains<5&remains<8)&(!talent.demonic_soul||buff.nightfall.stack<2||prev_gcd.1.haunt&buff.nightfall.stack<2)&fight_remains>dot.unstable_affliction.remains+5\nactions+=/haunt,if=(talent.absolute_corruption&debuff.haunt.remains<3||!talent.absolute_corruption&debuff.haunt.remains<5||cooldown.soul_rot.remains<5&debuff.haunt.remains<8)&(!talent.vile_taint||cooldown.vile_taint.remains)&fight_remains>debuff.haunt.remains+5\nactions+=/wither,if=talent.wither&!(action.seed_of_corruption.in_flight||active_dot.seed_of_corruption>0)&(talent.absolute_corruption&remains<3||!talent.absolute_corruption&remains<5)&fight_remains>dot.wither.remains+5\nactions+=/corruption,if=!(action.seed_of_corruption.in_flight||active_dot.seed_of_corruption>0)&refreshable&fight_remains>dot.corruption.remains+5\nactions+=/drain_soul,if=buff.nightfall.up&(buff.nightfall.stack>1||buff.nightfall.remains1||buff.nightfall.remains20||cooldown.soul_rot.remains<=execute_time+gcd.max||boss&fight_remains4&(talent.demonic_soul&buff.nightfall.stack<2||!talent.demonic_soul)||buff.tormented_crescendo.stack>1\nactions+=/drain_soul,if=talent.demonic_soul&buff.nightfall.up&buff.tormented_crescendo.stack<2&target.health.pct<20\nactions+=/malefic_rapture,if=talent.demonic_soul&(soul_shard>1||buff.tormented_crescendo.up&cooldown.soul_rot.remains>buff.tormented_crescendo.remains*gcd.max)&(!talent.vile_taint||soul_shard>1&cooldown.vile_taint.remains>10)&(!talent.oblivion||cooldown.oblivion.remains>10||soul_shard>2&cooldown.oblivion.remains<10)\nactions+=/oblivion,if=dot.agony.remains&(dot.corruption.remains||dot.wither.remains)&dot.unstable_affliction.remains&debuff.haunt.remains>5\nactions+=/malefic_rapture,if=talent.tormented_crescendo&buff.tormented_crescendo.up&(buff.tormented_crescendo.remains2)&(!talent.oblivion||cooldown.oblivion.remains>10||soul_shard>2&cooldown.oblivion.remains<10)\nactions+=/malefic_rapture,if=talent.tormented_crescendo&talent.nightfall&buff.tormented_crescendo.up&buff.nightfall.up||talent.demonic_soul&!buff.nightfall.up&(!talent.vile_taint||cooldown.vile_taint.remains>10||soul_shard>1&cooldown.vile_taint.remains<10)\nactions+=/malefic_rapture,if=!talent.demonic_soul&buff.tormented_crescendo.up\nactions+=/drain_soul,if=buff.nightfall.up\nactions+=/shadow_bolt,if=buff.nightfall.up\nactions+=/agony,if=refreshable\nactions+=/unstable_affliction,if=(active_dot.unstable_affliction=0||ticking)&refreshable\nactions+=/drain_soul,chain=1,early_chain_if=buff.nightfall.up,interrupt_if=tick_time>0.5\nactions+=/shadow_bolt\n\nactions.aoe+=/variable,name=min_agony,op=min,default=0,value=dot.agony.remains\nactions.aoe+=/variable,name=min_vt,op=min,default=10,value=dot.vile_taint.remains\nactions.aoe+=/variable,name=min_ps,op=min,default=16,value=dot.phantom_singularity.remains\nactions.aoe+=/variable,name=min_ps1,op=set,value=(variable.min_vt*talent.vile_taint)=25)\nactions.aoe+=/phantom_singularity,if=(cooldown.soul_rot.remains<=execute_time||cooldown.soul_rot.remains>=25)&dot.agony.remains\nactions.aoe+=/unstable_affliction,if=(active_dot.unstable_affliction=0||ticking)&remains<5\nactions.aoe+=/agony,cycle_targets=1,if=active_dot.agony<8&(remains0)\nactions.aoe+=/corruption,cycle_targets=1,if=remains<5&!talent.seed_of_corruption\nactions.aoe+=/wither,cycle_targets=1,if=remains<5&!talent.seed_of_corruption\nactions.aoe+=/summon_darkglare,if=variable.ps_up&variable.vt_up&variable.sr_up\nactions.aoe+=/malefic_rapture,if=(cooldown.summon_darkglare.remains>15||soul_shard>3||(talent.demonic_soul&soul_shard>2))&buff.tormented_crescendo.up\nactions.aoe+=/malefic_rapture,if=soul_shard>4||(talent.tormented_crescendo&buff.tormented_crescendo.stack=1&soul_shard>3)\nactions.aoe+=/malefic_rapture,if=talent.demonic_soul&(soul_shard>2||(talent.tormented_crescendo&buff.tormented_crescendo.stack=1&soul_shard))\nactions.aoe+=/malefic_rapture,if=talent.tormented_crescendo&buff.tormented_crescendo.up\nactions.aoe+=/malefic_rapture,if=talent.tormented_crescendo&buff.tormented_crescendo.stack=2\nactions.aoe+=/malefic_rapture,if=(variable.cd_dots_up||variable.vt_ps_up)&(soul_shard>2||cooldown.oblivion.remains>10||!talent.oblivion)\nactions.aoe+=/malefic_rapture,if=talent.tormented_crescendo&talent.nightfall&buff.tormented_crescendo.up&buff.nightfall.up\nactions.aoe+=/drain_soul,interrupt_if=cooldown.vile_taint.ready,if=talent.drain_soul&buff.nightfall.up&talent.shadow_embrace&(debuff.shadow_embrace.stack<4||debuff.shadow_embrace.remains<3)\nactions.aoe+=/drain_soul,interrupt_if=cooldown.vile_taint.ready,interrupt_global=1,if=talent.drain_soul&(talent.shadow_embrace&(debuff.shadow_embrace.stack<4||debuff.shadow_embrace.remains<3))||!talent.shadow_embrace\nactions.aoe+=/shadow_bolt,if=buff.nightfall.up&talent.shadow_embrace&(debuff.shadow_embrace.stack<2||debuff.shadow_embrace.remains<3)\n\nactions.cleave+=/call_action_list,name=end_of_fight,strict=1,if=boss\nactions.cleave+=/agony,cycle_targets=1,if=refreshable&(remainsremains+5\nactions.cleave+=/wither,cycle_targets=1,if=refreshable&remains<5&!(action.seed_of_corruption.in_flight||dot.seed_of_corruption.remains>0)&fight_remains>remains+5\nactions.cleave+=/haunt,if=talent.demonic_soul&buff.nightfall.stack<2-prev_gcd.1.drain_soul&(!talent.vile_taint||cooldown.vile_taint.remains)||debuff.haunt.remains<3\nactions.cleave+=/unstable_affliction,if=(remains<5||talent.demonic_soul&remainsremains+5\nactions.cleave+=/corruption,cycle_targets=1,if=refreshable&remains<5&!(action.seed_of_corruption.in_flight||dot.seed_of_corruption.remains>0)&fight_remains>remains+5\nactions.cleave+=/call_action_list,name=cleave_se_maintenance,if=talent.wither\nactions.cleave+=/vile_taint,if=!talent.soul_rot||(variable.min_agony<1.5||cooldown.soul_rot.remains<=execute_time+gcd.max)||cooldown.soul_rot.remains>=20\nactions.cleave+=/phantom_singularity,if=(!talent.soul_rot||cooldown.soul_rot.remains<4||fight_remains4&(talent.demonic_soul&buff.nightfall.stack<2||!talent.demonic_soul)||buff.tormented_crescendo.stack>1\nactions.cleave+=/drain_soul,if=talent.demonic_soul&buff.nightfall.up&buff.tormented_crescendo.stack<2&target.health.pct<20\nactions.cleave+=/malefic_rapture,if=talent.demonic_soul&(soul_shard>1||buff.tormented_crescendo.up&cooldown.soul_rot.remains>buff.tormented_crescendo.remains*gcd.max)&(!talent.vile_taint||soul_shard>1&cooldown.vile_taint.remains>10)&(!talent.oblivion||cooldown.oblivion.remains>10||soul_shard>2&cooldown.oblivion.remains<10)\nactions.cleave+=/malefic_rapture,if=talent.tormented_crescendo&buff.tormented_crescendo.up&(buff.tormented_crescendo.remains1)&(!talent.oblivion||cooldown.oblivion.remains>10||soul_shard>2&cooldown.oblivion.remains<10)\nactions.cleave+=/malefic_rapture,if=talent.tormented_crescendo&talent.nightfall&buff.tormented_crescendo.up&buff.nightfall.up||talent.demonic_soul&!buff.nightfall.up&(!talent.vile_taint||cooldown.vile_taint.remains>10||soul_shard>1&cooldown.vile_taint.remains<10)\nactions.cleave+=/malefic_rapture,if=!talent.demonic_soul&buff.tormented_crescendo.up\nactions.cleave+=/agony,if=refreshable||cooldown.soul_rot.remains<5&remains<8\nactions.cleave+=/unstable_affliction,if=refreshable||cooldown.soul_rot.remains<5&remains<8\nactions.cleave+=/drain_soul,if=buff.nightfall.up\nactions.cleave+=/shadow_bolt,if=buff.nightfall.up\nactions.cleave+=/wither,if=refreshable\nactions.cleave+=/corruption,if=refreshable\nactions.cleave+=/drain_soul,chain=1,early_chain_if=buff.nightfall.up,interrupt_if=tick_time>0.5\nactions.cleave+=/shadow_bolt\n\nactions.end_of_fight+=/drain_soul,if=talent.demonic_soul&(boss&fight_remains<5&buff.nightfall.up||prev_gcd.1.haunt&buff.nightfall.stack=2&!buff.tormented_crescendo.up)\nactions.end_of_fight+=/oblivion,if=soul_shard>1&boss&fight_remains<(soul_shard+buff.tormented_crescendo.up)*gcd.max+execute_time\nactions.end_of_fight+=/malefic_rapture,if=boss&fight_remains<4&(!talent.demonic_soul||talent.demonic_soul&buff.nightfall.stack<1)\n\nactions.se_maintenance+=/drain_soul,interrupt=1,if=talent.shadow_embrace&talent.drain_soul&(debuff.shadow_embrace.stack15,interrupt_if=debuff.shadow_embrace.stack=debuff.shadow_embrace.max_stack\nactions.se_maintenance+=/shadow_bolt,if=talent.shadow_embrace&((debuff.shadow_embrace.stack+(action.shadow_bolt.time_since<1))15\n\nactions.opener_cleave_se+=/drain_soul,if=talent.shadow_embrace&talent.drain_soul&buff.nightfall.up&(debuff.shadow_embrace.stack15||time<20),interrupt_if=debuff.shadow_embrace.stack=debuff.shadow_embrace.max_stack\n\nactions.cleave_se_maintenance+=/drain_soul,cycle_targets=1,if=talent.shadow_embrace&talent.drain_soul&(talent.wither||talent.demonic_soul&buff.nightfall.up)&(debuff.shadow_embrace.stack15,interrupt_if=debuff.shadow_embrace.stack>3\nactions.cleave_se_maintenance+=/shadow_bolt,cycle_targets=1,if=talent.shadow_embrace&!talent.drain_soul&((debuff.shadow_embrace.stack+action.shadow_bolt.in_flight_to_target_count)15\n\nactions.items+=/use_item,name=aberrant_spellforge,use_off_gcd=1,if=gcd.remains>gcd.max*0.8\nactions.items+=/use_item,name=spymasters_web,if=variable.cd_dots_up&(buff.spymasters_report.stack>=38||boss&fight_remains<=80||talent.drain_soul&target.health.pct<20)||boss&fight_remains<20\nactions.items+=/use_item,slot=trinket1,if=(variable.cds_active)&(variable.trinket_priority=1||variable.trinket_2_exclude||!trinket.2.has_cooldown||(trinket.2.cooldown.remains||variable.trinket_priority=2&cooldown.summon_darkglare.remains>20&!pet.darkglare.active&trinket.2.cooldown.remains=fight_remains)\nactions.items+=/use_item,slot=trinket2,if=(variable.cds_active)&(variable.trinket_priority=2||variable.trinket_1_exclude||!trinket.1.has_cooldown||(trinket.1.cooldown.remains||variable.trinket_priority=1&cooldown.summon_darkglare.remains>20&!pet.darkglare.active&trinket.1.cooldown.remains=fight_remains)\nactions.items+=/use_item,name=time_thiefs_gambit,if=variable.cds_active||boss&fight_remains<15||((trinket.1.cooldown.duration1&havoc_active)\nactions.items+=/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)||talent.summon_darkglare&cooldown.summon_darkglare.remains_expected>20||!talent.summon_darkglare)\nactions.items+=/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)||talent.summon_darkglare&cooldown.summon_darkglare.remains_expected>20||!talent.summon_darkglare)\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,if=!equipped.neural_synapse_enhancer\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(prev_gcd.1.soul_rot||boss&fight_remains<=15)&!variable.trinket_1_buffs&!variable.trinket_2_buffs\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(prev_gcd.1.soul_rot||boss&fight_remains<=15||cooldown.soul_rot.remains>=45)&trinket.2.cooldown.remains&variable.trinket_2_buffs\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(prev_gcd.1.soul_rot||boss&fight_remains<=15||cooldown.soul_rot.remains>=45)&trinket.1.cooldown.remains&variable.trinket_1_buffs\n\nactions.ogcd+=/potion,if=variable.cds_active||fight_remains<32||prev_gcd.1.soul_rot&time<20\nactions.ogcd+=/berserking,if=variable.cds_active||fight_remains<14||prev_gcd.1.soul_rot&time<20\nactions.ogcd+=/blood_fury,if=variable.cds_active||fight_remains<17||prev_gcd.1.soul_rot&time<20\n## actions.ogcd+=/invoke_external_buff,name=power_infusion,if=variable.cds_active\nactions.ogcd+=/fireblood,if=variable.cds_active||fight_remains<10||prev_gcd.1.soul_rot&time<20\nactions.ogcd+=/ancestral_call,if=variable.cds_active||fight_remains<17||prev_gcd.1.soul_rot&time<20\n\nactions.variables+=/variable,name=ps_up,op=set,value=!talent.phantom_singularity||dot.phantom_singularity.up\nactions.variables+=/variable,name=vt_up,op=set,value=!talent.vile_taint||dot.vile_taint_dot.up\nactions.variables+=/variable,name=vt_ps_up,op=set,value=(!talent.vile_taint&!talent.phantom_singularity)||dot.vile_taint_dot.up||dot.phantom_singularity.up\nactions.variables+=/variable,name=sr_up,op=set,value=!talent.soul_rot||dot.soul_rot.up\nactions.variables+=/variable,name=cd_dots_up,op=set,value=variable.ps_up&variable.vt_up&variable.sr_up\nactions.variables+=/variable,name=has_cds,op=set,value=talent.phantom_singularity||talent.vile_taint||talent.soul_rot||talent.summon_darkglare\nactions.variables+=/variable,name=cds_active,op=set,value=!variable.has_cds||(variable.cd_dots_up&(!talent.summon_darkglare||cooldown.summon_darkglare.remains>20||pet.darkglare.remains))\nactions.variables+=/variable,name=min_vt,op=reset,if=variable.min_vt\nactions.variables+=/variable,name=min_ps,op=reset,if=variable.min_ps", ["version"] = 20250303, ["warnings"] = "The import for 'cleave' required some automated changes.\nLine 2: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 2: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 4: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 4: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 5: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 7: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 9: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 13: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 14: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 15: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 15: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 16: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 17: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 17: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 17: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 18: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 19: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 19: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 19: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 19: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 20: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 20: Converted 'talent.nightfall' to 'talent.nightfall.enabled' (1x).\nLine 20: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 20: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 21: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'variables' required some automated changes.\nLine 1: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 2: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 3: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 3: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 4: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 6: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 6: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 6: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 6: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 7: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\n\nThe import for 'se_maintenance' required some automated changes.\nLine 1: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 1: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 2: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\n\nThe import for 'items' required some automated changes.\nLine 2: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 3: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Unsupported use_item action [ time_thiefs_gambit]; entry disabled.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 6: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 7: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\n\nThe import for 'opener_cleave_se' required some automated changes.\nLine 1: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 1: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 8: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 8: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 8: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 9: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 9: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 10: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 10: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 10: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 11: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 11: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 11: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 12: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 12: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 12: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 14: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 15: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 16: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 17: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 18: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 22: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 23: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 23: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 24: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 25: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 25: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 25: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 27: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 28: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 28: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 28: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 28: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 29: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 29: Converted 'talent.nightfall' to 'talent.nightfall.enabled' (1x).\nLine 29: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 29: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 30: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%trinket.t1.cooldown.duration=0)'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%trinket.t2.cooldown.duration=0)'.\nLine 8: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 8: Converted 'trinket.1.is.aberrant_spellforge' to 'trinket.t1.is.aberrant_spellforge' (1x).\nLine 9: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 9: Converted 'trinket.2.is.aberrant_spellforge' to 'trinket.t2.is.aberrant_spellforge' (1x).\nLine 10: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 11: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 12: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 13: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 14: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 16: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 4: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 4: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 9: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 9: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 9: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 12: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 12: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 13: Converted 'talent.seed_of_corruption' to 'talent.seed_of_corruption.enabled' (1x).\nLine 14: Converted 'talent.seed_of_corruption' to 'talent.seed_of_corruption.enabled' (1x).\nLine 16: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 17: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 18: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 18: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 19: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 20: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 21: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 22: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 22: Converted 'talent.nightfall' to 'talent.nightfall.enabled' (1x).\nLine 23: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 23: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 24: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 24: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 24: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 25: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\n\nThe import for 'end_of_fight' required some automated changes.\nLine 1: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 3: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 3: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'cleave_se_maintenance' required some automated changes.\nLine 1: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 1: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 1: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 1: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 2: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 2: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\n\nImported 11 action lists.\n", ["author"] = "SimC", ["lists"] = { ["cleave"] = { { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "boss", ["list_name"] = "end_of_fight", }, { ["enabled"] = true, ["criteria"] = "refreshable & ( remains < cooldown.vile_taint.remains + action.vile_taint.cast_time || ! talent.vile_taint.enabled ) & ( remains < gcd.max * 2 || talent.demonic_soul.enabled & remains < cooldown.soul_rot.remains + 8 & cooldown.soul_rot.remains < 5 ) & fight_remains > remains + 5", ["action"] = "agony", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "refreshable & remains < 5 & ! ( action.seed_of_corruption.in_flight || dot.seed_of_corruption.remains > 0 ) & fight_remains > remains + 5", ["action"] = "wither", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "talent.demonic_soul.enabled & buff.nightfall.stack < 2 - prev_gcd.1.drain_soul & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains ) || debuff.haunt.remains < 3", ["action"] = "haunt", }, { ["enabled"] = true, ["criteria"] = "( remains < 5 || talent.demonic_soul.enabled & remains < cooldown.soul_rot.remains + 8 & cooldown.soul_rot.remains < 5 ) & fight_remains > remains + 5", ["action"] = "unstable_affliction", }, { ["enabled"] = true, ["criteria"] = "refreshable & remains < 5 & ! ( action.seed_of_corruption.in_flight || dot.seed_of_corruption.remains > 0 ) & fight_remains > remains + 5", ["action"] = "corruption", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "talent.wither.enabled", ["list_name"] = "cleave_se_maintenance", }, { ["enabled"] = true, ["criteria"] = "! talent.soul_rot.enabled || ( variable.min_agony < 1.5 || cooldown.soul_rot.remains <= execute_time + gcd.max ) || cooldown.soul_rot.remains >= 20", ["action"] = "vile_taint", }, { ["enabled"] = true, ["criteria"] = "( ! talent.soul_rot.enabled || cooldown.soul_rot.remains < 4 || fight_remains < cooldown.soul_rot.remains ) & active_dot.agony = 2", ["action"] = "phantom_singularity", }, { ["enabled"] = true, ["criteria"] = "variable.vt_ps_up", ["action"] = "malevolence", }, { ["enabled"] = true, ["criteria"] = "( variable.vt_ps_up ) & active_dot.agony = 2", ["action"] = "soul_rot", }, { ["enabled"] = true, ["criteria"] = "variable.cd_dots_up", ["action"] = "summon_darkglare", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "talent.demonic_soul.enabled", ["list_name"] = "opener_cleave_se", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "talent.demonic_soul.enabled", ["list_name"] = "cleave_se_maintenance", }, { ["enabled"] = true, ["criteria"] = "soul_shard > 4 & ( talent.demonic_soul.enabled & buff.nightfall.stack < 2 || ! talent.demonic_soul.enabled ) || buff.tormented_crescendo.stack > 1", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "talent.demonic_soul.enabled & buff.nightfall.up & buff.tormented_crescendo.stack < 2 & target.health.pct < 20", ["action"] = "drain_soul", }, { ["enabled"] = true, ["criteria"] = "talent.demonic_soul.enabled & ( soul_shard > 1 || buff.tormented_crescendo.up & cooldown.soul_rot.remains > buff.tormented_crescendo.remains * gcd.max ) & ( ! talent.vile_taint.enabled || soul_shard > 1 & cooldown.vile_taint.remains > 10 ) & ( ! talent.oblivion.enabled || cooldown.oblivion.remains > 10 || soul_shard > 2 & cooldown.oblivion.remains < 10 )", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "talent.tormented_crescendo.enabled & buff.tormented_crescendo.up & ( buff.tormented_crescendo.remains < gcd.max * 2 || buff.tormented_crescendo.stack = 2 )", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "( variable.cd_dots_up || ( talent.demonic_soul.enabled || talent.phantom_singularity.enabled ) & variable.vt_ps_up || talent.wither.enabled & variable.vt_ps_up & ! dot.soul_rot.remains & soul_shard > 1 ) & ( ! talent.oblivion.enabled || cooldown.oblivion.remains > 10 || soul_shard > 2 & cooldown.oblivion.remains < 10 )", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "talent.tormented_crescendo.enabled & talent.nightfall.enabled & buff.tormented_crescendo.up & buff.nightfall.up || talent.demonic_soul.enabled & ! buff.nightfall.up & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains > 10 || soul_shard > 1 & cooldown.vile_taint.remains < 10 )", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "! talent.demonic_soul.enabled & buff.tormented_crescendo.up", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "refreshable || cooldown.soul_rot.remains < 5 & remains < 8", ["action"] = "agony", }, { ["enabled"] = true, ["criteria"] = "refreshable || cooldown.soul_rot.remains < 5 & remains < 8", ["action"] = "unstable_affliction", }, { ["enabled"] = true, ["criteria"] = "buff.nightfall.up", ["action"] = "drain_soul", }, { ["enabled"] = true, ["criteria"] = "buff.nightfall.up", ["action"] = "shadow_bolt", }, { ["enabled"] = true, ["criteria"] = "refreshable", ["action"] = "wither", }, { ["enabled"] = true, ["criteria"] = "refreshable", ["action"] = "corruption", }, { ["enabled"] = true, ["action"] = "drain_soul", ["interrupt_if"] = "tick_time>0.5", ["early_chain_if"] = "buff.nightfall.up", ["chain"] = "1", }, { ["action"] = "shadow_bolt", ["enabled"] = true, }, }, ["precombat"] = { { ["enabled"] = true, ["criteria"] = "time > 0 & ! pet.alive", ["action"] = "fel_domination", }, { ["action"] = "summon_pet", ["enabled"] = true, }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "toggle.funnel", ["var_name"] = "cleave_apl", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.has_use_buff", ["var_name"] = "trinket_1_buffs", ["description"] = "Used to set Trinket in slot 1 as Buff Trinkets for the automatic logic", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.has_use_buff", ["var_name"] = "trinket_2_buffs", ["description"] = "Used to set Trinkets in slot 2 as Buff Trinkets for the automatic logic", }, { ["enabled"] = true, ["op"] = "setif", ["description"] = "Automatic Logic for Buff Trinkets in Trinket Slot 1", ["value"] = "1", ["var_name"] = "trinket_1_sync", ["action"] = "variable", ["value_else"] = "0.5", ["criteria"] = "variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % cooldown.soul_rot.duration = 0 || cooldown.soul_rot.duration % trinket.t1.cooldown.duration = 0 )", }, { ["enabled"] = true, ["op"] = "setif", ["description"] = "Automatic Logic for Buff Trinkets in Trinket Slot 2", ["value"] = "1", ["var_name"] = "trinket_2_sync", ["action"] = "variable", ["value_else"] = "0.5", ["criteria"] = "variable.trinket_2_buffs & ( trinket.t2.cooldown.duration % cooldown.soul_rot.duration = 0 || cooldown.soul_rot.duration % trinket.t2.cooldown.duration = 0 )", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.spymasters_web || trinket.t1.is.aberrant_spellforge", ["var_name"] = "trinket_1_manual", ["description"] = " Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.spymasters_web || trinket.t2.is.aberrant_spellforge", ["var_name"] = "trinket_2_manual", ["description"] = " Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.ruby_whelp_shell", ["var_name"] = "trinket_1_exclude", ["description"] = "For On Use Trinkets on slot 1 with on use effects you dont want to use in combat", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.ruby_whelp_shell", ["var_name"] = "trinket_2_exclude", ["description"] = "For On Use Trinkets on Slot 2 with on use effects you don't want to use in combat", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.buff_duration + ( trinket.t1.is.mirror_of_fractured_tomorrows * 20 )", ["var_name"] = "trinket_1_buff_duration", ["description"] = " Sets the duration of Trinket 1 in the automatic logic", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.buff_duration + ( trinket.t2.is.mirror_of_fractured_tomorrows * 20 )", ["var_name"] = "trinket_2_buff_duration", ["description"] = " Sets the duration of Trinket 2 in the automatic logic", }, { ["enabled"] = true, ["op"] = "setif", ["description"] = "Automatic Logic in case of 2 On Use Buff Trinkets", ["value"] = "2", ["var_name"] = "trinket_priority", ["action"] = "variable", ["value_else"] = "1", ["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / variable.trinket_2_buff_duration ) * ( 1 + 0.5 * trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / variable.trinket_1_buff_duration ) * ( 1 + 0.5 * trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )", }, { ["enabled"] = true, ["criteria"] = "talent.grimoire_of_sacrifice.enabled", ["action"] = "grimoire_of_sacrifice", }, { ["enabled"] = true, ["criteria"] = "spell_targets.seed_of_corruption_aoe > 2 || spell_targets.seed_of_corruption_aoe > 1 & talent.demonic_soul.enabled", ["action"] = "seed_of_corruption", }, { ["action"] = "haunt", ["enabled"] = true, }, }, ["se_maintenance"] = { { ["enabled"] = true, ["criteria"] = "talent.shadow_embrace.enabled & talent.drain_soul.enabled & ( debuff.shadow_embrace.stack < debuff.shadow_embrace.max_stack || debuff.shadow_embrace.remains < 3 ) & active_enemies <= 4 & target.time_to_die > 15", ["interrupt_if"] = "debuff.shadow_embrace.stack=debuff.shadow_embrace.max_stack", ["interrupt"] = "1", ["action"] = "drain_soul", }, { ["enabled"] = true, ["criteria"] = "talent.shadow_embrace.enabled & ( ( debuff.shadow_embrace.stack + ( action.shadow_bolt.time_since < 1 ) ) < debuff.shadow_embrace.max_stack || debuff.shadow_embrace.remains < 3 & ! action.shadow_bolt.in_flight_to_target ) & active_enemies <= 4 & target.time_to_die > 15", ["action"] = "shadow_bolt", }, }, ["items"] = { { ["enabled"] = true, ["action"] = "aberrant_spellforge", ["use_off_gcd"] = 1, ["criteria"] = "gcd.remains > gcd.max * 0.8", ["name"] = "aberrant_spellforge", }, { ["enabled"] = true, ["name"] = "spymasters_web", ["action"] = "spymasters_web", ["criteria"] = "variable.cd_dots_up & ( buff.spymasters_report.stack >= 38 || boss & fight_remains <= 80 || talent.drain_soul.enabled & target.health.pct < 20 ) || boss & fight_remains < 20", }, { ["enabled"] = true, ["criteria"] = "( variable.cds_active ) & ( variable.trinket_priority = 1 || variable.trinket_2_exclude || ! trinket.t2.has_cooldown || ( trinket.t2.cooldown.remains || variable.trinket_priority = 2 & cooldown.summon_darkglare.remains > 20 & ! pet.darkglare.active & trinket.t2.cooldown.remains < cooldown.summon_darkglare.remains ) ) & variable.trinket_1_buffs & ! variable.trinket_1_manual || ( variable.trinket_1_buff_duration + 1 >= fight_remains )", ["action"] = "trinket1", ["slot"] = "trinket1", }, { ["enabled"] = true, ["criteria"] = "( variable.cds_active ) & ( variable.trinket_priority = 2 || variable.trinket_1_exclude || ! trinket.t1.has_cooldown || ( trinket.t1.cooldown.remains || variable.trinket_priority = 1 & cooldown.summon_darkglare.remains > 20 & ! pet.darkglare.active & trinket.t1.cooldown.remains < cooldown.summon_darkglare.remains ) ) & variable.trinket_2_buffs & ! variable.trinket_2_manual || ( variable.trinket_2_buff_duration + 1 >= fight_remains )", ["action"] = "trinket2", ["slot"] = "trinket2", }, { ["enabled"] = false, ["criteria"] = "variable.cds_active || boss & fight_remains < 15 || ( ( trinket.t1.cooldown.duration < cooldown.summon_darkglare.remains_expected + 5 ) & active_enemies = 1 ) || ( active_enemies > 1 & havoc_active )", ["name"] = "time_thiefs_gambit", }, { ["enabled"] = true, ["action"] = "trinket1", ["slot"] = "trinket1", ["use_off_gcd"] = 1, ["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || talent.summon_darkglare.enabled & cooldown.summon_darkglare.remains_expected > 20 || ! talent.summon_darkglare.enabled )", }, { ["enabled"] = true, ["action"] = "trinket2", ["slot"] = "trinket2", ["use_off_gcd"] = 1, ["criteria"] = "! variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) || talent.summon_darkglare.enabled & cooldown.summon_darkglare.remains_expected > 20 || ! talent.summon_darkglare.enabled )", }, { ["enabled"] = true, ["action"] = "main_hand", ["slot"] = "main_hand", ["use_off_gcd"] = 1, ["criteria"] = "! equipped.neural_synapse_enhancer", }, { ["enabled"] = true, ["action"] = "neural_synapse_enhancer", ["slot"] = "main_hand", ["use_off_gcd"] = 1, ["criteria"] = "( prev_gcd.1.soul_rot || boss & fight_remains <= 15 ) & ! variable.trinket_1_buffs & ! variable.trinket_2_buffs", ["name"] = "neural_synapse_enhancer", }, { ["enabled"] = true, ["action"] = "neural_synapse_enhancer", ["slot"] = "main_hand", ["use_off_gcd"] = 1, ["criteria"] = "( prev_gcd.1.soul_rot || boss & fight_remains <= 15 || cooldown.soul_rot.remains >= 45 ) & trinket.t2.cooldown.remains & variable.trinket_2_buffs", ["name"] = "neural_synapse_enhancer", }, { ["enabled"] = true, ["action"] = "neural_synapse_enhancer", ["slot"] = "main_hand", ["use_off_gcd"] = 1, ["criteria"] = "( prev_gcd.1.soul_rot || boss & fight_remains <= 15 || cooldown.soul_rot.remains >= 45 ) & trinket.t1.cooldown.remains & variable.trinket_1_buffs", ["name"] = "neural_synapse_enhancer", }, }, ["aoe"] = { { ["enabled"] = true, ["op"] = "min", ["action"] = "variable", ["value"] = "dot.agony.remains", ["var_name"] = "min_agony", ["default"] = "0", }, { ["enabled"] = true, ["op"] = "min", ["action"] = "variable", ["value"] = "dot.vile_taint.remains", ["var_name"] = "min_vt", ["default"] = "10", }, { ["enabled"] = true, ["op"] = "min", ["action"] = "variable", ["value"] = "dot.phantom_singularity.remains", ["var_name"] = "min_ps", ["default"] = "16", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( variable.min_vt * talent.vile_taint.enabled ) = 25 )", ["action"] = "vile_taint", }, { ["enabled"] = true, ["criteria"] = "( cooldown.soul_rot.remains <= execute_time || cooldown.soul_rot.remains >= 25 ) & dot.agony.remains", ["action"] = "phantom_singularity", }, { ["enabled"] = true, ["criteria"] = "( active_dot.unstable_affliction = 0 || ticking ) & remains < 5", ["action"] = "unstable_affliction", }, { ["enabled"] = true, ["criteria"] = "active_dot.agony < 8 & ( remains < cooldown.vile_taint.remains + action.vile_taint.cast_time || ! talent.vile_taint.enabled ) & gcd.max + action.soul_rot.cast_time + gcd.max < ( ( variable.min_vt * talent.vile_taint.enabled ) 0 )", ["action"] = "seed_of_corruption", }, { ["enabled"] = true, ["criteria"] = "remains < 5 & ! talent.seed_of_corruption.enabled", ["action"] = "corruption", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "remains < 5 & ! talent.seed_of_corruption.enabled", ["action"] = "wither", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "variable.ps_up & variable.vt_up & variable.sr_up", ["action"] = "summon_darkglare", }, { ["enabled"] = true, ["criteria"] = "( cooldown.summon_darkglare.remains > 15 || soul_shard > 3 || ( talent.demonic_soul.enabled & soul_shard > 2 ) ) & buff.tormented_crescendo.up", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "soul_shard > 4 || ( talent.tormented_crescendo.enabled & buff.tormented_crescendo.stack = 1 & soul_shard > 3 )", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "talent.demonic_soul.enabled & ( soul_shard > 2 || ( talent.tormented_crescendo.enabled & buff.tormented_crescendo.stack = 1 & soul_shard ) )", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "talent.tormented_crescendo.enabled & buff.tormented_crescendo.up", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "talent.tormented_crescendo.enabled & buff.tormented_crescendo.stack = 2", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "( variable.cd_dots_up || variable.vt_ps_up ) & ( soul_shard > 2 || cooldown.oblivion.remains > 10 || ! talent.oblivion.enabled )", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "talent.tormented_crescendo.enabled & talent.nightfall.enabled & buff.tormented_crescendo.up & buff.nightfall.up", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["interrupt_if"] = "cooldown.vile_taint.ready", ["criteria"] = "talent.drain_soul.enabled & buff.nightfall.up & talent.shadow_embrace.enabled & ( debuff.shadow_embrace.stack < 4 || debuff.shadow_embrace.remains < 3 )", ["action"] = "drain_soul", }, { ["enabled"] = true, ["action"] = "drain_soul", ["interrupt_if"] = "cooldown.vile_taint.ready", ["criteria"] = "talent.drain_soul.enabled & ( talent.shadow_embrace.enabled & ( debuff.shadow_embrace.stack < 4 || debuff.shadow_embrace.remains < 3 ) ) || ! talent.shadow_embrace.enabled", ["interrupt_global"] = "1", }, { ["enabled"] = true, ["criteria"] = "buff.nightfall.up & talent.shadow_embrace.enabled & ( debuff.shadow_embrace.stack < 2 || debuff.shadow_embrace.remains < 3 )", ["action"] = "shadow_bolt", }, }, ["default"] = { { ["action"] = "spell_lock", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "variables", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "ogcd", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "items", }, { ["enabled"] = true, ["action"] = "call_action_list", ["description"] = "This entry is manually translated and will differ from SIMC, but maintains the same functionality.", ["criteria"] = "active_enemies = 2 || active_enemies > 2 & variable.cleave_apl", ["list_name"] = "cleave", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "active_enemies > 2", ["list_name"] = "aoe", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "end_of_fight", }, { ["enabled"] = true, ["criteria"] = "( ! talent.vile_taint.enabled || remains < cooldown.vile_taint.remains + action.vile_taint.cast_time ) & ( talent.absolute_corruption.enabled & remains < 3 || ! talent.absolute_corruption.enabled & remains < 5 || cooldown.soul_rot.remains < 5 & remains < 8 ) & fight_remains > dot.agony.remains + 5", ["action"] = "agony", }, { ["enabled"] = true, ["criteria"] = "talent.demonic_soul.enabled & buff.nightfall.stack < 2 - prev_gcd.1.drain_soul & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains )", ["action"] = "haunt", }, { ["enabled"] = true, ["criteria"] = "( active_dot.unstable_affliction = 0 || ticking ) & ( talent.absolute_corruption.enabled & remains < 3 || ! talent.absolute_corruption.enabled & remains < 5 || cooldown.soul_rot.remains < 5 & remains < 8 ) & ( ! talent.demonic_soul.enabled || buff.nightfall.stack < 2 || prev_gcd.1.haunt & buff.nightfall.stack < 2 ) & fight_remains > dot.unstable_affliction.remains + 5", ["action"] = "unstable_affliction", }, { ["enabled"] = true, ["criteria"] = "( talent.absolute_corruption.enabled & debuff.haunt.remains < 3 || ! talent.absolute_corruption.enabled & debuff.haunt.remains < 5 || cooldown.soul_rot.remains < 5 & debuff.haunt.remains < 8 ) & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains ) & fight_remains > debuff.haunt.remains + 5", ["action"] = "haunt", }, { ["enabled"] = true, ["criteria"] = "talent.wither.enabled & ! ( action.seed_of_corruption.in_flight || active_dot.seed_of_corruption > 0 ) & ( talent.absolute_corruption.enabled & remains < 3 || ! talent.absolute_corruption.enabled & remains < 5 ) & fight_remains > dot.wither.remains + 5", ["action"] = "wither", }, { ["enabled"] = true, ["criteria"] = "! ( action.seed_of_corruption.in_flight || active_dot.seed_of_corruption > 0 ) & refreshable & fight_remains > dot.corruption.remains + 5", ["action"] = "corruption", }, { ["enabled"] = true, ["criteria"] = "buff.nightfall.up & ( buff.nightfall.stack > 1 || buff.nightfall.remains < execute_time * 2 ) & ! buff.tormented_crescendo.up & cooldown.soul_rot.remains & soul_shard < 5 - buff.tormented_crescendo.up & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains )", ["action"] = "drain_soul", }, { ["enabled"] = true, ["criteria"] = "buff.nightfall.up & ( buff.nightfall.stack > 1 || buff.nightfall.remains < execute_time * 2 ) & buff.tormented_crescendo.stack < 2 & cooldown.soul_rot.remains & soul_shard < 5 - buff.tormented_crescendo.up & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains )", ["action"] = "shadow_bolt", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "talent.wither.enabled", ["list_name"] = "se_maintenance", }, { ["enabled"] = true, ["criteria"] = "( ! talent.soul_rot.enabled || cooldown.soul_rot.remains > 20 || cooldown.soul_rot.remains <= execute_time + gcd.max || boss & fight_remains < cooldown.soul_rot.remains ) & dot.agony.remains & ( dot.corruption.remains || dot.wither.remains ) & dot.unstable_affliction.remains", ["action"] = "vile_taint", }, { ["enabled"] = true, ["criteria"] = "( ! talent.soul_rot.enabled || cooldown.soul_rot.remains < 4 || boss & fight_remains < cooldown.soul_rot.remains ) & dot.agony.remains & ( dot.corruption.remains || dot.wither.remains ) & dot.unstable_affliction.remains", ["action"] = "phantom_singularity", }, { ["enabled"] = true, ["criteria"] = "variable.vt_ps_up", ["action"] = "malevolence", }, { ["enabled"] = true, ["criteria"] = "variable.vt_ps_up", ["action"] = "soul_rot", }, { ["enabled"] = true, ["criteria"] = "variable.cd_dots_up & ( debuff.shadow_embrace.stack = debuff.shadow_embrace.max_stack )", ["action"] = "summon_darkglare", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "talent.demonic_soul.enabled", ["list_name"] = "se_maintenance", }, { ["enabled"] = true, ["criteria"] = "soul_shard > 4 & ( talent.demonic_soul.enabled & buff.nightfall.stack < 2 || ! talent.demonic_soul.enabled ) || buff.tormented_crescendo.stack > 1", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "talent.demonic_soul.enabled & buff.nightfall.up & buff.tormented_crescendo.stack < 2 & target.health.pct < 20", ["action"] = "drain_soul", }, { ["enabled"] = true, ["criteria"] = "talent.demonic_soul.enabled & ( soul_shard > 1 || buff.tormented_crescendo.up & cooldown.soul_rot.remains > buff.tormented_crescendo.remains * gcd.max ) & ( ! talent.vile_taint.enabled || soul_shard > 1 & cooldown.vile_taint.remains > 10 ) & ( ! talent.oblivion.enabled || cooldown.oblivion.remains > 10 || soul_shard > 2 & cooldown.oblivion.remains < 10 )", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "dot.agony.remains & ( dot.corruption.remains || dot.wither.remains ) & dot.unstable_affliction.remains & debuff.haunt.remains > 5", ["action"] = "oblivion", }, { ["enabled"] = true, ["criteria"] = "talent.tormented_crescendo.enabled & buff.tormented_crescendo.up & ( buff.tormented_crescendo.remains < gcd.max * 2 || buff.tormented_crescendo.stack = 2 )", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "( variable.cd_dots_up || ( talent.demonic_soul.enabled || talent.phantom_singularity.enabled ) & variable.vt_ps_up || talent.wither.enabled & variable.vt_ps_up & ! dot.soul_rot.remains & soul_shard > 2 ) & ( ! talent.oblivion.enabled || cooldown.oblivion.remains > 10 || soul_shard > 2 & cooldown.oblivion.remains < 10 )", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "talent.tormented_crescendo.enabled & talent.nightfall.enabled & buff.tormented_crescendo.up & buff.nightfall.up || talent.demonic_soul.enabled & ! buff.nightfall.up & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains > 10 || soul_shard > 1 & cooldown.vile_taint.remains < 10 )", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "! talent.demonic_soul.enabled & buff.tormented_crescendo.up", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "buff.nightfall.up", ["action"] = "drain_soul", }, { ["enabled"] = true, ["criteria"] = "buff.nightfall.up", ["action"] = "shadow_bolt", }, { ["enabled"] = true, ["criteria"] = "refreshable", ["action"] = "agony", }, { ["enabled"] = true, ["criteria"] = "( active_dot.unstable_affliction = 0 || ticking ) & refreshable", ["action"] = "unstable_affliction", }, { ["enabled"] = true, ["action"] = "drain_soul", ["interrupt_if"] = "tick_time>0.5", ["early_chain_if"] = "buff.nightfall.up", ["chain"] = "1", }, { ["action"] = "shadow_bolt", ["enabled"] = true, }, }, ["cleave_se_maintenance"] = { { ["enabled"] = true, ["action"] = "drain_soul", ["cycle_targets"] = 1, ["interrupt_if"] = "debuff.shadow_embrace.stack>3", ["criteria"] = "talent.shadow_embrace.enabled & talent.drain_soul.enabled & ( talent.wither.enabled || talent.demonic_soul.enabled & buff.nightfall.up ) & ( debuff.shadow_embrace.stack < debuff.shadow_embrace.max_stack || debuff.shadow_embrace.remains < 3 ) & fight_remains > 15", }, { ["enabled"] = true, ["criteria"] = "talent.shadow_embrace.enabled & ! talent.drain_soul.enabled & ( ( debuff.shadow_embrace.stack + action.shadow_bolt.in_flight_to_target_count ) < debuff.shadow_embrace.max_stack || debuff.shadow_embrace.remains < 3 & ! action.shadow_bolt.in_flight_to_target ) & fight_remains > 15", ["action"] = "shadow_bolt", ["cycle_targets"] = 1, }, }, ["opener_cleave_se"] = { { ["enabled"] = true, ["interrupt_if"] = "debuff.shadow_embrace.stack=debuff.shadow_embrace.max_stack", ["action"] = "drain_soul", ["criteria"] = "talent.shadow_embrace.enabled & talent.drain_soul.enabled & buff.nightfall.up & ( debuff.shadow_embrace.stack < debuff.shadow_embrace.max_stack || debuff.shadow_embrace.remains < 3 ) & ( target.time_to_die > 15 || time < 20 )", }, }, ["end_of_fight"] = { { ["enabled"] = true, ["criteria"] = "talent.demonic_soul.enabled & ( boss & fight_remains < 5 & buff.nightfall.up || prev_gcd.1.haunt & buff.nightfall.stack = 2 & ! buff.tormented_crescendo.up )", ["action"] = "drain_soul", }, { ["enabled"] = true, ["criteria"] = "soul_shard > 1 & boss & fight_remains < ( soul_shard + buff.tormented_crescendo.up ) * gcd.max + execute_time", ["action"] = "oblivion", }, { ["enabled"] = true, ["criteria"] = "boss & fight_remains < 4 & ( ! talent.demonic_soul.enabled || talent.demonic_soul.enabled & buff.nightfall.stack < 1 )", ["action"] = "malefic_rapture", }, }, ["variables"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "! talent.phantom_singularity.enabled || dot.phantom_singularity.up", ["var_name"] = "ps_up", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "! talent.vile_taint.enabled || dot.vile_taint_dot.up", ["var_name"] = "vt_up", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( ! talent.vile_taint.enabled & ! talent.phantom_singularity.enabled ) || dot.vile_taint_dot.up || dot.phantom_singularity.up", ["var_name"] = "vt_ps_up", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "! talent.soul_rot.enabled || dot.soul_rot.up", ["var_name"] = "sr_up", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "variable.ps_up & variable.vt_up & variable.sr_up", ["var_name"] = "cd_dots_up", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "talent.phantom_singularity.enabled || talent.vile_taint.enabled || talent.soul_rot.enabled || talent.summon_darkglare.enabled", ["var_name"] = "has_cds", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "! variable.has_cds || ( variable.cd_dots_up & ( ! talent.summon_darkglare.enabled || cooldown.summon_darkglare.remains > 20 || pet.darkglare.remains ) )", ["var_name"] = "cds_active", }, { ["enabled"] = true, ["op"] = "reset", ["action"] = "variable", ["var_name"] = "min_vt", ["criteria"] = "variable.min_vt", }, { ["enabled"] = true, ["op"] = "reset", ["action"] = "variable", ["var_name"] = "min_ps", ["criteria"] = "variable.min_ps", }, }, ["ogcd"] = { { ["enabled"] = true, ["criteria"] = "variable.cds_active || fight_remains < 32 || prev_gcd.1.soul_rot & time < 20", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "variable.cds_active || fight_remains < 14 || prev_gcd.1.soul_rot & time < 20", ["action"] = "berserking", }, { ["enabled"] = true, ["criteria"] = "variable.cds_active || fight_remains < 17 || prev_gcd.1.soul_rot & time < 20", ["action"] = "blood_fury", }, { ["enabled"] = true, ["criteria"] = "variable.cds_active || fight_remains < 10 || prev_gcd.1.soul_rot & time < 20", ["action"] = "fireblood", }, { ["enabled"] = true, ["criteria"] = "variable.cds_active || fight_remains < 17 || prev_gcd.1.soul_rot & time < 20", ["action"] = "ancestral_call", }, }, }, }, }, }, ["Quillstrum - Deathwing"] = { ["runOnce"] = { ["autoconvertDisplayToggle_20190621_1"] = true, ["removeOldThrottles_20241115"] = true, ["forceReloadClassDefaultOptions_20220306_71"] = true, ["resetAllPotions_20201209"] = true, ["enableAllOfTheThings_20180820"] = true, ["resetGlobalCooldownSync_20210403"] = true, ["forceReloadAllDefaultPriorities_20220228"] = true, ["forceEnableAllClassesOnceDueToBug_20220225"] = true, ["updateMaxRefreshToNewSpecOptions_20220222"] = true, ["forceSpellFlashBrightness_20221030"] = true, ["resetPotionsToDefaults_20190717"] = true, ["forceReloadClassDefaultOptions_20220306_73"] = true, ["autoconvertGlowsForCustomGlow_20190326"] = true, ["resetRogueMfDOption_20200226"] = true, ["forceReloadClassDefaultOptions_20220306_72"] = true, ["fixHavocPriorityVersion_20240805"] = true, ["forceEnableEnhancedRecheckBoomkin_20210712"] = true, ["autoconvertDelaySweepToExtend_20190729"] = true, ["resetAberrantPackageDates_20190728_1"] = true, }, ["specs"] = { [73] = { ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["settings"] = { ["spell_block_amount"] = 25, ["rallying_cry_health"] = 50, ["spell_reflection_filter"] = true, ["stack_shield_block"] = false, ["stance_weaving"] = false, ["last_stand_amount"] = 50, ["rallying_cry_condition"] = false, ["free_revenge"] = true, ["shield_wall_amount"] = 50, ["rallying_cry_amount"] = 50, ["spell_block_health"] = 75, ["shockwave_interrupt"] = true, ["shield_wall_health"] = 50, ["heroic_charge"] = false, ["reserve_rage"] = 35, ["last_stand_offensively"] = false, ["last_stand_condition"] = false, ["shield_wall_condition"] = false, ["last_stand_health"] = 50, ["victory_rush_health"] = 75, ["overlap_ignore_pain"] = false, }, }, [71] = { ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["settings"] = { ["shockwave_interrupt"] = true, ["spell_reflection_filter"] = true, ["heroic_charge"] = false, }, }, [72] = { ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["settings"] = { ["check_ww_range"] = false, ["charge_min_range"] = 10, ["t30_bloodthirst_crit"] = 95, ["shockwave_interrupt"] = true, ["spell_reflection_filter"] = true, ["heroic_charge"] = false, }, }, [102] = { ["enhancedRecheck"] = true, }, }, ["displays"] = { ["AOE"] = { ["rel"] = "CENTER", ["x"] = 118.3330764770508, ["y"] = -397.4996643066406, }, ["Primary"] = { ["rel"] = "CENTER", ["x"] = -49.99994277954102, ["y"] = -397.4990844726563, }, ["Defensives"] = { ["rel"] = "CENTER", ["y"] = -224.9999847412109, }, ["Interrupts"] = { ["rel"] = "CENTER", ["y"] = -224.9999847412109, }, }, ["packs"] = { ["Arms"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20250308, ["author"] = "SimulationCraft", ["desc"] = "2025-03-08: TWW Season 2 update\n\n2025-02-26: Sync with SimC", ["lists"] = { ["slayer_st"] = { { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= gcd.max", ["action"] = "rend", }, { ["action"] = "thunderous_roar", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "cooldown.colossus_smash.remains <= 5 || debuff.colossus_smash.up", ["action"] = "avatar", }, { ["enabled"] = true, ["criteria"] = "debuff.colossus_smash.up || buff.avatar.up", ["action"] = "champions_spear", }, { ["enabled"] = true, ["criteria"] = "cooldown.colossus_smash.remains <= gcd.max", ["action"] = "ravager", }, { ["action"] = "colossus_smash", ["enabled"] = true, }, { ["action"] = "warbreaker", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.juggernaut.remains <= gcd.max * 2 & talent.juggernaut.enabled || buff.sudden_death.stack = 2 || buff.sudden_death.remains <= gcd.max * 3 || debuff.marked_for_execution.stack = 3", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "buff.opportunist.up", ["action"] = "overpower", }, { ["action"] = "mortal_strike", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( cooldown.colossus_smash.remains >= gcd.max * 4 || cooldown.warbreaker.remains >= gcd.max * 4 ) || debuff.colossus_smash.remains >= gcd.max * 4", ["action"] = "bladestorm", }, { ["action"] = "skullsplitter", ["enabled"] = true, }, { ["action"] = "overpower", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= 8", ["action"] = "rend", }, { ["enabled"] = true, ["criteria"] = "! talent.juggernaut.enabled", ["action"] = "execute", }, { ["action"] = "cleave", ["enabled"] = true, }, { ["action"] = "slam", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.bladestorm.up", ["action"] = "storm_bolt", }, }, ["colossus_st"] = { { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= gcd.max", ["action"] = "rend", }, { ["action"] = "thunderous_roar", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "cooldown.colossus_smash.remains <= gcd.max", ["action"] = "ravager", }, { ["action"] = "champions_spear", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 15", ["action"] = "avatar", }, { ["action"] = "colossus_smash", ["enabled"] = true, }, { ["action"] = "warbreaker", ["enabled"] = true, }, { ["action"] = "mortal_strike", ["enabled"] = true, }, { ["action"] = "demolish", ["enabled"] = true, }, { ["action"] = "skullsplitter", ["enabled"] = true, }, { ["action"] = "execute", ["enabled"] = true, }, { ["action"] = "overpower", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= gcd.max * 5", ["action"] = "rend", }, { ["action"] = "slam", ["enabled"] = true, }, }, ["colossus_aoe"] = { { ["enabled"] = true, ["criteria"] = "! dot.deep_wounds.remains", ["action"] = "cleave", }, { ["enabled"] = true, ["criteria"] = "! dot.rend.remains", ["action"] = "thunder_clap", }, { ["action"] = "thunderous_roar", ["enabled"] = true, }, { ["action"] = "avatar", ["enabled"] = true, }, { ["action"] = "sweeping_strikes", ["enabled"] = true, }, { ["action"] = "ravager", ["enabled"] = true, }, { ["action"] = "warbreaker", ["enabled"] = true, }, { ["action"] = "champions_spear", ["enabled"] = true, }, { ["action"] = "colossus_smash", ["enabled"] = true, }, { ["action"] = "cleave", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.unhinged.enabled || talent.merciless_bonegrinder.enabled", ["action"] = "bladestorm", }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains < 5", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "buff.colossal_might.stack = 10 & ( debuff.colossus_smash.remains >= 2 || cooldown.colossus_smash.remains >= 7 )", ["action"] = "demolish", }, { ["enabled"] = true, ["criteria"] = "talent.dreadnaught.enabled", ["action"] = "overpower", }, { ["action"] = "mortal_strike", ["enabled"] = true, }, { ["action"] = "overpower", ["enabled"] = true, }, { ["action"] = "thunder_clap", ["enabled"] = true, }, { ["action"] = "skullsplitter", ["enabled"] = true, }, { ["action"] = "execute", ["enabled"] = true, }, { ["action"] = "bladestorm", ["enabled"] = true, }, { ["action"] = "whirlwind", ["enabled"] = true, }, }, ["slayer_aoe"] = { { ["enabled"] = true, ["criteria"] = "! dot.rend.remains", ["action"] = "thunder_clap", }, { ["action"] = "thunderous_roar", ["enabled"] = true, }, { ["action"] = "avatar", ["enabled"] = true, }, { ["action"] = "champions_spear", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "cooldown.colossus_smash.remains <= gcd.max", ["action"] = "ravager", }, { ["action"] = "warbreaker", ["enabled"] = true, }, { ["action"] = "colossus_smash", ["enabled"] = true, }, { ["action"] = "cleave", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.sudden_death.up & buff.imminent_demise.stack < 3 || buff.juggernaut.remains < 3 & talent.juggernaut.enabled", ["action"] = "execute", }, { ["action"] = "bladestorm", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.sweeping_strikes.up & ( buff.opportunist.up || talent.dreadnaught.enabled & ! talent.juggernaut.enabled )", ["action"] = "overpower", }, { ["enabled"] = true, ["criteria"] = "buff.sweeping_strikes.up", ["action"] = "mortal_strike", }, { ["enabled"] = true, ["criteria"] = "buff.sweeping_strikes.up & debuff.executioners_precision.stack < 2 & talent.executioners_precision.enabled || debuff.marked_for_execution.up", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "buff.sweeping_strikes.up", ["action"] = "skullsplitter", }, { ["enabled"] = true, ["criteria"] = "buff.opportunist.up || talent.dreadnaught.enabled", ["action"] = "overpower", }, { ["action"] = "mortal_strike", ["enabled"] = true, }, { ["action"] = "overpower", ["enabled"] = true, }, { ["action"] = "thunder_clap", ["enabled"] = true, }, { ["action"] = "execute", ["enabled"] = true, }, { ["action"] = "whirlwind", ["enabled"] = true, }, { ["action"] = "skullsplitter", ["enabled"] = true, }, { ["action"] = "slam", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.bladestorm.up", ["action"] = "storm_bolt", }, }, ["colossus_execute"] = { { ["enabled"] = true, ["criteria"] = "active_enemies = 2", ["action"] = "sweeping_strikes", }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= gcd.max & ! talent.bloodletting.enabled", ["action"] = "rend", }, { ["action"] = "thunderous_roar", ["enabled"] = true, }, { ["action"] = "champions_spear", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "cooldown.colossus_smash.remains <= gcd.max", ["action"] = "ravager", }, { ["action"] = "avatar", ["enabled"] = true, }, { ["action"] = "colossus_smash", ["enabled"] = true, }, { ["action"] = "warbreaker", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.juggernaut.remains <= gcd.max & talent.juggernaut.enabled", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "rage < 40", ["action"] = "skullsplitter", }, { ["enabled"] = true, ["criteria"] = "debuff.colossus_smash.up", ["action"] = "demolish", }, { ["enabled"] = true, ["criteria"] = "debuff.executioners_precision.stack = 2 & ! dot.ravager.remains || ! talent.executioners_precision.enabled || talent.battlelord.enabled & debuff.executioners_precision.stack > 0", ["action"] = "mortal_strike", }, { ["enabled"] = true, ["criteria"] = "rage < 90", ["action"] = "overpower", }, { ["enabled"] = true, ["criteria"] = "rage >= 40 & talent.executioners_precision.enabled", ["action"] = "execute", }, { ["action"] = "overpower", ["enabled"] = true, }, { ["action"] = "bladestorm", ["enabled"] = true, }, { ["action"] = "execute", ["enabled"] = true, }, }, ["slayer_execute"] = { { ["enabled"] = true, ["criteria"] = "active_enemies = 2", ["action"] = "sweeping_strikes", }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= gcd.max & ! talent.bloodletting.enabled", ["action"] = "rend", }, { ["action"] = "thunderous_roar", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "cooldown.colossus_smash.remains <= 5 || debuff.colossus_smash.up", ["action"] = "avatar", }, { ["enabled"] = true, ["criteria"] = "debuff.colossus_smash.up || buff.avatar.up", ["action"] = "champions_spear", }, { ["enabled"] = true, ["criteria"] = "cooldown.colossus_smash.remains <= gcd.max", ["action"] = "ravager", }, { ["action"] = "warbreaker", ["enabled"] = true, }, { ["action"] = "colossus_smash", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.juggernaut.remains <= gcd.max * 2 & talent.juggernaut.enabled", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "( debuff.executioners_precision.stack = 2 & ( debuff.colossus_smash.remains > 4 || cooldown.colossus_smash.remains > 15 ) ) || ! talent.executioners_precision.enabled", ["action"] = "bladestorm", }, { ["enabled"] = true, ["criteria"] = "rage <= 40", ["action"] = "skullsplitter", }, { ["enabled"] = true, ["criteria"] = "buff.martial_prowess.stack < 2 & buff.opportunist.up & talent.opportunist.enabled & ( talent.bladestorm.enabled || talent.ravager.enabled & rage < 85 )", ["action"] = "overpower", }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains < 2 || debuff.executioners_precision.stack = 2 & ! dot.ravager.remains", ["action"] = "mortal_strike", }, { ["enabled"] = true, ["criteria"] = "rage <= 40 & buff.martial_prowess.stack < 2 & talent.fierce_followthrough.enabled", ["action"] = "overpower", }, { ["action"] = "execute", ["enabled"] = true, }, { ["action"] = "overpower", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.bladestorm.up", ["action"] = "storm_bolt", }, }, ["default"] = { { ["enabled"] = true, ["criteria"] = "time <= 0.5 || movement.distance > 8", ["action"] = "charge", }, { ["enabled"] = true, ["criteria"] = "gcd.remains = 0 & debuff.colossus_smash.remains > 8 || boss & fight_remains < 25", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "target.debuff.casting.react", ["action"] = "pummel", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "variables", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "trinkets", }, { ["enabled"] = true, ["criteria"] = "cooldown.mortal_strike.remains > 1.5 & rage < 50", ["action"] = "arcane_torrent", }, { ["enabled"] = true, ["criteria"] = "debuff.colossus_smash.down & cooldown.mortal_strike.remains", ["action"] = "lights_judgment", }, { ["enabled"] = true, ["criteria"] = "debuff.colossus_smash.down & cooldown.mortal_strike.remains", ["action"] = "bag_of_tricks", }, { ["enabled"] = true, ["criteria"] = "fight_remains > 180 & buff.avatar.up || boss & target.time_to_die < 180 & variable.execute_phase & buff.avatar.up || boss & fight_remains < 20", ["action"] = "berserking", }, { ["enabled"] = true, ["criteria"] = "debuff.colossus_smash.up", ["action"] = "blood_fury", }, { ["enabled"] = true, ["criteria"] = "debuff.colossus_smash.up", ["action"] = "fireblood", }, { ["enabled"] = true, ["criteria"] = "debuff.colossus_smash.up", ["action"] = "ancestral_call", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "talent.demolish.enabled & active_enemies > 2", ["list_name"] = "colossus_aoe", }, { ["enabled"] = true, ["action"] = "run_action_list", ["cycle_targets"] = 1, ["strict"] = 1, ["criteria"] = "talent.demolish.enabled & variable.execute_phase", ["list_name"] = "colossus_execute", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "talent.demolish.enabled & active_enemies = 2 & ! variable.execute_phase", ["list_name"] = "colossus_sweep", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "talent.demolish.enabled", ["list_name"] = "colossus_st", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "! talent.demolish.enabled & active_enemies > 2", ["list_name"] = "slayer_aoe", }, { ["enabled"] = true, ["action"] = "run_action_list", ["cycle_targets"] = 1, ["strict"] = 1, ["criteria"] = "! talent.demolish.enabled & variable.execute_phase", ["list_name"] = "slayer_execute", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "! talent.demolish.enabled & active_enemies = 2 & ! variable.execute_phase", ["list_name"] = "slayer_sweep", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "! talent.demolish.enabled", ["list_name"] = "slayer_st", }, }, ["precombat"] = { { ["action"] = "battle_shout", ["enabled"] = true, }, { ["toggle"] = "on", ["action"] = "battle_stance", ["enabled"] = true, }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.treacherous_transmitter", ["var_name"] = "trinket_1_exclude", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.treacherous_transmitter", ["var_name"] = "trinket_2_exclude", }, { ["enabled"] = true, ["op"] = "setif", ["description"] = "Evaluates a trinkets cooldown, divided by avatar. If it's value has no remainder return 1, else return 0.5.", ["criteria"] = "trinket.t1.has_use_buff & ( trinket.t1.cooldown.duration % cooldown.avatar.duration = 0 )", ["var_name"] = "trinket_1_sync", ["action"] = "variable", ["value_else"] = "0.5", ["value"] = "1", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "trinket_2_sync", ["criteria"] = "trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration % cooldown.avatar.duration = 0 )", ["value_else"] = "0.5", ["value"] = "1", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_stat.any_dps & ! variable.trinket_1_exclude )", ["var_name"] = "trinket_1_buffs", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_stat.any_dps & ! variable.trinket_2_exclude )", ["var_name"] = "trinket_2_buffs", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "trinket_priority", ["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / trinket.t2.buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )", ["value_else"] = "1", ["value"] = "2", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.algethar_puzzle_box", ["var_name"] = "trinket_1_manual", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.algethar_puzzle_box", ["var_name"] = "trinket_2_manual", }, }, ["variables"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "active_enemies = 1", ["description"] = "Variables", ["var_name"] = "st_planning", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "active_enemies > 1", ["var_name"] = "adds_remain", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( talent.massacre.enabled & target.health.pct < 35 ) || target.health.pct < 20", ["var_name"] = "execute_phase", }, }, ["slayer_sweep"] = { { ["enabled"] = true, ["criteria"] = "! dot.rend.remains & ! buff.sweeping_strikes.up", ["action"] = "thunder_clap", }, { ["action"] = "thunderous_roar", ["enabled"] = true, }, { ["action"] = "sweeping_strikes", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= gcd.max", ["action"] = "rend", }, { ["action"] = "champions_spear", ["enabled"] = true, }, { ["action"] = "avatar", ["enabled"] = true, }, { ["action"] = "colossus_smash", ["enabled"] = true, }, { ["action"] = "warbreaker", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.sweeping_strikes.up", ["action"] = "skullsplitter", }, { ["enabled"] = true, ["criteria"] = "buff.juggernaut.remains <= gcd.max * 2 || debuff.marked_for_execution.stack = 3 || buff.sudden_death.stack = 2 || buff.sudden_death.remains <= gcd.max * 3", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "( cooldown.colossus_smash.remains >= gcd.max * 4 || cooldown.warbreaker.remains >= gcd.max * 4 ) || debuff.colossus_smash.remains >= gcd.max * 4", ["action"] = "bladestorm", }, { ["enabled"] = true, ["criteria"] = "buff.opportunist.up", ["action"] = "overpower", }, { ["action"] = "mortal_strike", ["enabled"] = true, }, { ["action"] = "overpower", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= 8 & buff.sweeping_strikes.down", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= 5", ["action"] = "rend", }, { ["enabled"] = true, ["criteria"] = "talent.fervor_of_battle.enabled & ! buff.martial_prowess.up", ["action"] = "cleave", }, { ["enabled"] = true, ["criteria"] = "talent.fervor_of_battle.enabled", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "! talent.juggernaut.enabled", ["action"] = "execute", }, { ["action"] = "slam", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.bladestorm.up", ["action"] = "storm_bolt", }, }, ["trinkets"] = { { ["enabled"] = true, ["name"] = "treacherous_transmitter", ["description"] = "Trinkets", ["criteria"] = "( variable.adds_remain || variable.st_planning ) & cooldown.avatar.remains < 3", ["action"] = "treacherous_transmitter", }, { ["enabled"] = true, ["action"] = "trinket1", ["slot"] = "trinket1", ["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! buff.avatar.up & trinket.t1.cast_time > 0 || ! trinket.t1.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || trinket.t1.buff_duration >= fight_remains & boss", ["description"] = "Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.", }, { ["enabled"] = true, ["action"] = "trinket2", ["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! buff.avatar.up & trinket.t2.cast_time > 0 || ! trinket.t2.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || trinket.t2.buff_duration >= fight_remains & boss", ["slot"] = "trinket2", }, { ["enabled"] = true, ["action"] = "trinket1", ["slot"] = "trinket1", ["criteria"] = "! variable.trinket_1_buffs & ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )", ["description"] = "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.", }, { ["enabled"] = true, ["action"] = "trinket2", ["criteria"] = "! variable.trinket_2_buffs & ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) & ! variable.trinket_2_manual & ( ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) || ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )", ["slot"] = "trinket2", }, { ["enabled"] = true, ["action"] = "main_hand", ["criteria"] = "! equipped.fyralath_the_dreamrender & ! equipped.bestinslots & ( ! variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( ! variable.trinket_2_buffs || trinket.t2.cooldown.remains )", ["slot"] = "main_hand", }, { ["enabled"] = true, ["action"] = "bestinslots", ["criteria"] = "cooldown.avatar.remains > 20 || ( buff.avatar.up & ( ! trinket.t1.has_cooldown & ! trinket.t2.has_cooldown ) )", ["name"] = "bestinslots", }, }, ["colossus_sweep"] = { { ["enabled"] = true, ["criteria"] = "! dot.rend.remains & ! buff.sweeping_strikes.up", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= gcd.max & buff.sweeping_strikes.up", ["action"] = "rend", }, { ["action"] = "thunderous_roar", ["enabled"] = true, }, { ["action"] = "sweeping_strikes", ["enabled"] = true, }, { ["action"] = "champions_spear", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "cooldown.colossus_smash.ready", ["action"] = "ravager", }, { ["action"] = "avatar", ["enabled"] = true, }, { ["action"] = "colossus_smash", ["enabled"] = true, }, { ["action"] = "warbreaker", ["enabled"] = true, }, { ["action"] = "mortal_strike", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "debuff.colossus_smash.up", ["action"] = "demolish", }, { ["action"] = "overpower", ["enabled"] = true, }, { ["action"] = "execute", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.fervor_of_battle.enabled", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "talent.fervor_of_battle.enabled", ["action"] = "cleave", }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= 8 & buff.sweeping_strikes.down", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= 5", ["action"] = "rend", }, { ["action"] = "slam", ["enabled"] = true, }, }, }, ["version"] = 20250308, ["warnings"] = "The import for 'slayer_st' required some automated changes.\nLine 8: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 15: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\n\nThe import for 'colossus_aoe' required some automated changes.\nLine 11: Converted 'talent.unhinged' to 'talent.unhinged.enabled' (1x).\nLine 11: Converted 'talent.merciless_bonegrinder' to 'talent.merciless_bonegrinder.enabled' (1x).\nLine 14: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\n\nThe import for 'slayer_aoe' required some automated changes.\nLine 9: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 11: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\nLine 11: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 13: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\nLine 15: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\n\nThe import for 'colossus_execute' required some automated changes.\nLine 2: Converted 'talent.bloodletting' to 'talent.bloodletting.enabled' (1x).\nLine 9: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 12: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\nLine 12: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 14: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\n\nThe import for 'slayer_execute' required some automated changes.\nLine 2: Converted 'talent.bloodletting' to 'talent.bloodletting.enabled' (1x).\nLine 9: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 10: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\nLine 12: Converted 'talent.opportunist' to 'talent.opportunist.enabled' (1x).\nLine 12: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 12: Converted 'talent.ravager' to 'talent.ravager.enabled' (1x).\nLine 14: Converted 'talent.fierce_followthrough' to 'talent.fierce_followthrough.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 13: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 14: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 15: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 16: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 17: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 18: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 19: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 20: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 3: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 4: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted operations in 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%%cooldown.avatar.duration=0)' to 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%cooldown.avatar.duration=0)'.\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted operations in 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%%cooldown.avatar.duration=0)' to 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%cooldown.avatar.duration=0)'.\nLine 7: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 7: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 8: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 8: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 9: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 9: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 9: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 9: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 9: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 9: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 9: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 9: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 9: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 10: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 11: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\n\nThe import for 'slayer_sweep' required some automated changes.\nLine 17: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 18: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 19: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 2: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 3: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 7: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\n\nThe import for 'colossus_sweep' required some automated changes.\nLine 14: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 15: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\n\nImported 12 action lists.\n", ["profile"] = "actions.precombat+=/battle_shout\nactions.precombat+=/battle_stance,toggle=on\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.treacherous_transmitter\n# Evaluates a trinkets cooldown, divided by avatar. If it's value has no remainder return 1, else return 0.5.\nactions.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)\nactions.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)\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_stat.any_dps&!variable.trinket_1_exclude)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_stat.any_dps&!variable.trinket_2_exclude)\nactions.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))\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.algethar_puzzle_box\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.algethar_puzzle_box\n\nactions+=/charge,if=time<=0.5||movement.distance>8\nactions+=/potion,if=gcd.remains=0&debuff.colossus_smash.remains>8||boss&fight_remains<25\nactions+=/pummel,if=target.debuff.casting.react\nactions+=/call_action_list,name=variables\nactions+=/call_action_list,name=trinkets\nactions+=/arcane_torrent,if=cooldown.mortal_strike.remains>1.5&rage<50\nactions+=/lights_judgment,if=debuff.colossus_smash.down&cooldown.mortal_strike.remains\nactions+=/bag_of_tricks,if=debuff.colossus_smash.down&cooldown.mortal_strike.remains\nactions+=/berserking,if=fight_remains>180&buff.avatar.up||boss&target.time_to_die<180&variable.execute_phase&buff.avatar.up||boss&fight_remains<20\nactions+=/blood_fury,if=debuff.colossus_smash.up\nactions+=/fireblood,if=debuff.colossus_smash.up\nactions+=/ancestral_call,if=debuff.colossus_smash.up\n## actions+=/invoke_external_buff,name=power_infusion,if=debuff.colossus_smash.up&fight_remains>=135||variable.execute_phase&buff.avatar.up||fight_remains<=25\nactions+=/run_action_list,name=colossus_aoe,strict=1,if=talent.demolish&active_enemies>2\nactions+=/run_action_list,name=colossus_execute,cycle_targets=1,strict=1,if=talent.demolish&variable.execute_phase\nactions+=/run_action_list,name=colossus_sweep,strict=1,if=talent.demolish&active_enemies=2&!variable.execute_phase\nactions+=/run_action_list,name=colossus_st,strict=1,if=talent.demolish\nactions+=/run_action_list,name=slayer_aoe,strict=1,if=!talent.demolish&active_enemies>2\nactions+=/run_action_list,name=slayer_execute,cycle_targets=1,strict=1,if=!talent.demolish&variable.execute_phase\nactions+=/run_action_list,name=slayer_sweep,strict=1,if=!talent.demolish&active_enemies=2&!variable.execute_phase\nactions+=/run_action_list,name=slayer_st,strict=1,if=!talent.demolish\n\nactions.colossus_aoe+=/cleave,if=!dot.deep_wounds.remains\nactions.colossus_aoe+=/thunder_clap,if=!dot.rend.remains\nactions.colossus_aoe+=/thunderous_roar\nactions.colossus_aoe+=/avatar\nactions.colossus_aoe+=/sweeping_strikes\nactions.colossus_aoe+=/ravager\nactions.colossus_aoe+=/warbreaker\nactions.colossus_aoe+=/champions_spear\nactions.colossus_aoe+=/colossus_smash\nactions.colossus_aoe+=/cleave\nactions.colossus_aoe+=/bladestorm,if=talent.unhinged||talent.merciless_bonegrinder\nactions.colossus_aoe+=/thunder_clap,if=dot.rend.remains<5\nactions.colossus_aoe+=/demolish,if=buff.colossal_might.stack=10&(debuff.colossus_smash.remains>=2||cooldown.colossus_smash.remains>=7)\nactions.colossus_aoe+=/overpower,if=talent.dreadnaught\nactions.colossus_aoe+=/mortal_strike\nactions.colossus_aoe+=/overpower\nactions.colossus_aoe+=/thunder_clap\nactions.colossus_aoe+=/skullsplitter\nactions.colossus_aoe+=/execute\nactions.colossus_aoe+=/bladestorm\nactions.colossus_aoe+=/whirlwind\n\nactions.colossus_execute+=/sweeping_strikes,if=active_enemies=2\nactions.colossus_execute+=/rend,if=dot.rend.remains<=gcd&!talent.bloodletting\nactions.colossus_execute+=/thunderous_roar\nactions.colossus_execute+=/champions_spear\nactions.colossus_execute+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.colossus_execute+=/avatar\nactions.colossus_execute+=/colossus_smash\nactions.colossus_execute+=/warbreaker\nactions.colossus_execute+=/execute,if=buff.juggernaut.remains<=gcd&talent.juggernaut\nactions.colossus_execute+=/skullsplitter,if=rage<40\nactions.colossus_execute+=/demolish,if=debuff.colossus_smash.up\nactions.colossus_execute+=/mortal_strike,if=debuff.executioners_precision.stack=2&!dot.ravager.remains||!talent.executioners_precision||talent.battlelord&debuff.executioners_precision.stack>0\nactions.colossus_execute+=/overpower,if=rage<90\nactions.colossus_execute+=/execute,if=rage>=40&talent.executioners_precision\nactions.colossus_execute+=/overpower\nactions.colossus_execute+=/bladestorm\nactions.colossus_execute+=/execute\n\nactions.colossus_st+=/rend,if=dot.rend.remains<=gcd\nactions.colossus_st+=/thunderous_roar\nactions.colossus_st+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.colossus_st+=/champions_spear\nactions.colossus_st+=/avatar,if=raid_event.adds.in>15\nactions.colossus_st+=/colossus_smash\nactions.colossus_st+=/warbreaker\nactions.colossus_st+=/mortal_strike\nactions.colossus_st+=/demolish\nactions.colossus_st+=/skullsplitter\nactions.colossus_st+=/execute\nactions.colossus_st+=/overpower\nactions.colossus_st+=/rend,if=dot.rend.remains<=gcd*5\nactions.colossus_st+=/slam\n\nactions.colossus_sweep+=/thunder_clap,if=!dot.rend.remains&!buff.sweeping_strikes.up\nactions.colossus_sweep+=/rend,if=dot.rend.remains<=gcd&buff.sweeping_strikes.up\nactions.colossus_sweep+=/thunderous_roar\nactions.colossus_sweep+=/sweeping_strikes\nactions.colossus_sweep+=/champions_spear\nactions.colossus_sweep+=/ravager,if=cooldown.colossus_smash.ready\nactions.colossus_sweep+=/avatar\nactions.colossus_sweep+=/colossus_smash\nactions.colossus_sweep+=/warbreaker\nactions.colossus_sweep+=/mortal_strike\nactions.colossus_sweep+=/demolish,if=debuff.colossus_smash.up\nactions.colossus_sweep+=/overpower\nactions.colossus_sweep+=/execute\nactions.colossus_sweep+=/whirlwind,if=talent.fervor_of_battle\nactions.colossus_sweep+=/cleave,if=talent.fervor_of_battle\nactions.colossus_sweep+=/thunder_clap,if=dot.rend.remains<=8&buff.sweeping_strikes.down\nactions.colossus_sweep+=/rend,if=dot.rend.remains<=5\nactions.colossus_sweep+=/slam\n\nactions.slayer_aoe+=/thunder_clap,if=!dot.rend.remains\nactions.slayer_aoe+=/thunderous_roar\nactions.slayer_aoe+=/avatar\nactions.slayer_aoe+=/champions_spear\nactions.slayer_aoe+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.slayer_aoe+=/warbreaker\nactions.slayer_aoe+=/colossus_smash\nactions.slayer_aoe+=/cleave\nactions.slayer_aoe+=/execute,if=buff.sudden_death.up&buff.imminent_demise.stack<3||buff.juggernaut.remains<3&talent.juggernaut\nactions.slayer_aoe+=/bladestorm\nactions.slayer_aoe+=/overpower,if=buff.sweeping_strikes.up&(buff.opportunist.up||talent.dreadnaught&!talent.juggernaut)\nactions.slayer_aoe+=/mortal_strike,if=buff.sweeping_strikes.up\nactions.slayer_aoe+=/execute,if=buff.sweeping_strikes.up&debuff.executioners_precision.stack<2&talent.executioners_precision||debuff.marked_for_execution.up\nactions.slayer_aoe+=/skullsplitter,if=buff.sweeping_strikes.up\nactions.slayer_aoe+=/overpower,if=buff.opportunist.up||talent.dreadnaught\nactions.slayer_aoe+=/mortal_strike\nactions.slayer_aoe+=/overpower\nactions.slayer_aoe+=/thunder_clap\nactions.slayer_aoe+=/execute\nactions.slayer_aoe+=/whirlwind\nactions.slayer_aoe+=/skullsplitter\nactions.slayer_aoe+=/slam\nactions.slayer_aoe+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_execute+=/sweeping_strikes,if=active_enemies=2\nactions.slayer_execute+=/rend,if=dot.rend.remains<=gcd&!talent.bloodletting\nactions.slayer_execute+=/thunderous_roar\nactions.slayer_execute+=/avatar,if=cooldown.colossus_smash.remains<=5||debuff.colossus_smash.up\nactions.slayer_execute+=/champions_spear,if=debuff.colossus_smash.up||buff.avatar.up\nactions.slayer_execute+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.slayer_execute+=/warbreaker\nactions.slayer_execute+=/colossus_smash\nactions.slayer_execute+=/execute,if=buff.juggernaut.remains<=gcd*2&talent.juggernaut\nactions.slayer_execute+=/bladestorm,if=(debuff.executioners_precision.stack=2&(debuff.colossus_smash.remains>4||cooldown.colossus_smash.remains>15))||!talent.executioners_precision\nactions.slayer_execute+=/skullsplitter,if=rage<=40\nactions.slayer_execute+=/overpower,if=buff.martial_prowess.stack<2&buff.opportunist.up&talent.opportunist&(talent.bladestorm||talent.ravager&rage<85)\nactions.slayer_execute+=/mortal_strike,if=dot.rend.remains<2||debuff.executioners_precision.stack=2&!dot.ravager.remains\nactions.slayer_execute+=/overpower,if=rage<=40&buff.martial_prowess.stack<2&talent.fierce_followthrough\nactions.slayer_execute+=/execute\nactions.slayer_execute+=/overpower\nactions.slayer_execute+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_st+=/rend,if=dot.rend.remains<=gcd\nactions.slayer_st+=/thunderous_roar\nactions.slayer_st+=/avatar,if=cooldown.colossus_smash.remains<=5||debuff.colossus_smash.up\nactions.slayer_st+=/champions_spear,if=debuff.colossus_smash.up||buff.avatar.up\nactions.slayer_st+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.slayer_st+=/colossus_smash\nactions.slayer_st+=/warbreaker\nactions.slayer_st+=/execute,if=buff.juggernaut.remains<=gcd*2&talent.juggernaut||buff.sudden_death.stack=2||buff.sudden_death.remains<=gcd*3||debuff.marked_for_execution.stack=3\nactions.slayer_st+=/overpower,if=buff.opportunist.up\nactions.slayer_st+=/mortal_strike\nactions.slayer_st+=/bladestorm,if=(cooldown.colossus_smash.remains>=gcd*4||cooldown.warbreaker.remains>=gcd*4)||debuff.colossus_smash.remains>=gcd*4\nactions.slayer_st+=/skullsplitter\nactions.slayer_st+=/overpower\nactions.slayer_st+=/rend,if=dot.rend.remains<=8\nactions.slayer_st+=/execute,if=!talent.juggernaut\nactions.slayer_st+=/cleave\nactions.slayer_st+=/slam\nactions.slayer_st+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_sweep+=/thunder_clap,if=!dot.rend.remains&!buff.sweeping_strikes.up\nactions.slayer_sweep+=/thunderous_roar\nactions.slayer_sweep+=/sweeping_strikes\nactions.slayer_sweep+=/rend,if=dot.rend.remains<=gcd\nactions.slayer_sweep+=/champions_spear\nactions.slayer_sweep+=/avatar\nactions.slayer_sweep+=/colossus_smash\nactions.slayer_sweep+=/warbreaker\nactions.slayer_sweep+=/skullsplitter,if=buff.sweeping_strikes.up\nactions.slayer_sweep+=/execute,if=buff.juggernaut.remains<=gcd*2||debuff.marked_for_execution.stack=3||buff.sudden_death.stack=2||buff.sudden_death.remains<=gcd*3\nactions.slayer_sweep+=/bladestorm,if=(cooldown.colossus_smash.remains>=gcd*4||cooldown.warbreaker.remains>=gcd*4)||debuff.colossus_smash.remains>=gcd*4\nactions.slayer_sweep+=/overpower,if=buff.opportunist.up\nactions.slayer_sweep+=/mortal_strike\nactions.slayer_sweep+=/overpower\nactions.slayer_sweep+=/thunder_clap,if=dot.rend.remains<=8&buff.sweeping_strikes.down\nactions.slayer_sweep+=/rend,if=dot.rend.remains<=5\nactions.slayer_sweep+=/cleave,if=talent.fervor_of_battle&!buff.martial_prowess.up\nactions.slayer_sweep+=/whirlwind,if=talent.fervor_of_battle\nactions.slayer_sweep+=/execute,if=!talent.juggernaut\nactions.slayer_sweep+=/slam\nactions.slayer_sweep+=/storm_bolt,if=buff.bladestorm.up\n\n# Trinkets\n## actions.trinkets+=/do_treacherous_transmitter_task\nactions.trinkets+=/use_item,name=treacherous_transmitter,if=(variable.adds_remain||variable.st_planning)&cooldown.avatar.remains<3\n# Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.\nactions.trinkets+=/use_item,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\nactions.trinkets+=/use_item,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\n# 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.\nactions.trinkets+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)&!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)\nactions.trinkets+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)&!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)\nactions.trinkets+=/use_item,slot=main_hand,if=!equipped.fyralath_the_dreamrender&!equipped.bestinslots&(!variable.trinket_1_buffs||trinket.1.cooldown.remains)&(!variable.trinket_2_buffs||trinket.2.cooldown.remains)\nactions.trinkets+=/use_item,name=bestinslots,if=cooldown.avatar.remains>20||(buff.avatar.up&(!trinket.1.has_cooldown&!trinket.2.has_cooldown))\n\n# Variables\nactions.variables+=/variable,name=st_planning,value=active_enemies=1\nactions.variables+=/variable,name=adds_remain,value=active_enemies>1\nactions.variables+=/variable,name=execute_phase,value=(talent.massacre.enabled&target.health.pct<35)||target.health.pct<20", ["spec"] = 71, }, ["Protection Warrior"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20240926, ["spec"] = 73, ["desc"] = "2024-09-26: Spell Block added\n\n2024-09-24: Mitigations and Impeding Victory Fixed\n\n2024-08-15, 09-09: SimC priority updates\n\n2024-07-24: The War Within", ["profile"] = "actions.precombat+=/battle_stance,toggle=on\nactions.precombat+=/battle_shout\n\nactions+=/pummel\nactions+=/charge,if=time=0||movement.distance>8\nactions+=/use_items\nactions+=/avatar,if=buff.thunder_blast.down||buff.thunder_blast.stack<=2\nactions+=/spell_block,use_off_gcd=1,if=tanking&incoming_magic_damage_5s>spell_block_damage_taken&health.pct<=spell_block_health_pct&!(buff.spell_reflection_defense.up)\nactions+=/shield_wall,use_off_gcd=1,if=tanking&incoming_damage_5s>shield_wall_damage_taken&health.pct<=shield_wall_health_pct&!(buff.shield_wall.up||buff.last_stand.up||buff.rallying_cry.up||buff.potion.up)\nactions+=/blood_fury\nactions+=/berserking\nactions+=/arcane_torrent\nactions+=/lights_judgment\nactions+=/fireblood\nactions+=/ancestral_call\nactions+=/bag_of_tricks\nactions+=/potion,if=buff.avatar.up||buff.avatar.up&target.health.pct<=20\nactions+=/ignore_pain,if=target.health.pct>=20&(rage.deficit<=15&cooldown.shield_slam.ready||rage.deficit<=40&cooldown.shield_charge.ready&talent.champions_bulwark.enabled||rage.deficit<=20&cooldown.shield_charge.ready||rage.deficit<=30&cooldown.demoralizing_shout.ready&talent.booming_voice.enabled||rage.deficit<=20&cooldown.avatar.ready||rage.deficit<=45&cooldown.demoralizing_shout.ready&talent.booming_voice.enabled&buff.last_stand.up&talent.unnerving_focus.enabled||rage.deficit<=30&cooldown.avatar.ready&buff.last_stand.up&talent.unnerving_focus.enabled||rage.deficit<=20||rage.deficit<=40&cooldown.shield_slam.ready&buff.violent_outburst.up&talent.heavy_repercussions.enabled&talent.impenetrable_wall.enabled||rage.deficit<=55&cooldown.shield_slam.ready&buff.violent_outburst.up&buff.last_stand.up&talent.unnerving_focus.enabled&talent.heavy_repercussions.enabled&talent.impenetrable_wall.enabled||rage.deficit<=17&cooldown.shield_slam.ready&talent.heavy_repercussions.enabled||rage.deficit<=18&cooldown.shield_slam.ready&talent.impenetrable_wall.enabled)||(rage>=70||buff.seeing_red.stack=7&rage>=35)&cooldown.shield_slam.remains<=1&buff.shield_block.remains>=4&set_bonus.tier31_2pc,use_off_gcd=1\nactions+=/last_stand,use_off_gcd=1,if=tanking&incoming_damage_5s>last_stand_damage_taken&health.pct<=last_stand_health_pct&!(buff.shield_wall.up||buff.last_stand.up||buff.rallying_cry.up||buff.potion.up)\nactions+=/rallying_cry,if=tanking&incoming_damage_5s>rallying_cry_damage_taken&health.pct<=rallying_cry_health_pct&!(buff.shield_wall.up||buff.last_stand.up||buff.rallying_cry.up||buff.potion.up)\nactions+=/victory_rush,if=health.pct=2&buff.thunder_blast.stack=2\nactions+=/demolish,if=buff.colossal_might.stack>=3\nactions+=/thunderous_roar\nactions+=/shield_charge\nactions+=/shield_block,if=buff.shield_block.remains<=10\nactions+=/run_action_list,name=aoe,strict=1,if=spell_targets.thunder_clap>=3\nactions+=/call_action_list,name=generic\n\nactions.aoe+=/thunder_blast,if=dot.rend.remains<=1\nactions.aoe+=/thunder_clap,if=dot.rend.remains<=1\nactions.aoe+=/thunder_blast,if=buff.violent_outburst.up&spell_targets.thunderclap>=2&buff.avatar.up&talent.unstoppable_force.enabled\nactions.aoe+=/thunder_clap,if=buff.violent_outburst.up&spell_targets.thunderclap>=4&buff.avatar.up&talent.unstoppable_force.enabled&talent.crashing_thunder.enabled||buff.violent_outburst.up&spell_targets.thunderclap>6&buff.avatar.up&talent.unstoppable_force.enabled\nactions.aoe+=/revenge,if=rage>=70&talent.seismic_reverberation.enabled&spell_targets.revenge>=3\nactions.aoe+=/shield_slam,if=rage<=60||buff.violent_outburst.up&spell_targets.thunderclap<=4&talent.crashing_thunder.enabled\nactions.aoe+=/thunder_blast\nactions.aoe+=/thunder_clap\nactions.aoe+=/revenge,if=rage>=30||rage>=40&talent.barbaric_training.enabled\n\nactions.generic+=/thunder_blast,if=(buff.thunder_blast.stack=2&buff.burst_of_power.stack<=1&buff.avatar.up&talent.unstoppable_force.enabled)\nactions.generic+=/shield_slam,if=(buff.burst_of_power.stack=2&buff.thunder_blast.stack<=1||buff.violent_outburst.up)||rage<=70&talent.demolish.enabled\nactions.generic+=/execute,if=rage>=70||(rage>=40&cooldown.shield_slam.remains&talent.demolish.enabled||rage>=50&cooldown.shield_slam.remains)||buff.sudden_death.up&talent.sudden_death.enabled\nactions.generic+=/shield_slam\nactions.generic+=/thunder_blast,if=dot.rend.remains<=2&buff.violent_outburst.down\nactions.generic+=/thunder_clap,if=dot.rend.remains<=2&buff.violent_outburst.down\nactions.generic+=/thunder_blast,if=(spell_targets.thunder_clap>1||cooldown.shield_slam.remains&!buff.violent_outburst.up)\nactions.generic+=/thunder_clap,if=(spell_targets.thunder_clap>1||cooldown.shield_slam.remains&!buff.violent_outburst.up)\nactions.generic+=/revenge,if=(rage>=80&target.health.pct>20||buff.revenge.up&target.health.pct<=20&rage<=18&cooldown.shield_slam.remains||buff.revenge.up&target.health.pct>20)||(rage>=80&target.health.pct>35||buff.revenge.up&target.health.pct<=35&rage<=18&cooldown.shield_slam.remains||buff.revenge.up&target.health.pct>35)&talent.massacre.enabled\nactions.generic+=/execute\nactions.generic+=/revenge\nactions.generic+=/thunder_blast,if=(spell_targets.thunder_clap>=1||cooldown.shield_slam.remains&buff.violent_outburst.up)\nactions.generic+=/thunder_clap,if=(spell_targets.thunder_clap>=1||cooldown.shield_slam.remains&buff.violent_outburst.up)\nactions.generic+=/devastate", ["version"] = 20240926, ["warnings"] = "Imported 4 action lists.\n", ["lists"] = { ["aoe"] = { { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= 1", ["action"] = "thunder_blast", }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= 1", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "buff.violent_outburst.up & spell_targets.thunderclap >= 2 & buff.avatar.up & talent.unstoppable_force.enabled", ["action"] = "thunder_blast", }, { ["enabled"] = true, ["criteria"] = "buff.violent_outburst.up & spell_targets.thunderclap >= 4 & buff.avatar.up & talent.unstoppable_force.enabled & talent.crashing_thunder.enabled || buff.violent_outburst.up & spell_targets.thunderclap > 6 & buff.avatar.up & talent.unstoppable_force.enabled", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "rage >= 70 & talent.seismic_reverberation.enabled & spell_targets.revenge >= 3", ["action"] = "revenge", }, { ["enabled"] = true, ["criteria"] = "rage <= 60 || buff.violent_outburst.up & spell_targets.thunderclap <= 4 & talent.crashing_thunder.enabled", ["action"] = "shield_slam", }, { ["action"] = "thunder_blast", ["enabled"] = true, }, { ["action"] = "thunder_clap", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "rage >= 30 || rage >= 40 & talent.barbaric_training.enabled", ["action"] = "revenge", }, }, ["generic"] = { { ["enabled"] = true, ["criteria"] = "( buff.thunder_blast.stack = 2 & buff.burst_of_power.stack <= 1 & buff.avatar.up & talent.unstoppable_force.enabled )", ["action"] = "thunder_blast", }, { ["enabled"] = true, ["criteria"] = "( buff.burst_of_power.stack = 2 & buff.thunder_blast.stack <= 1 || buff.violent_outburst.up ) || rage <= 70 & talent.demolish.enabled", ["action"] = "shield_slam", }, { ["enabled"] = true, ["criteria"] = "rage >= 70 || ( rage >= 40 & cooldown.shield_slam.remains & talent.demolish.enabled || rage >= 50 & cooldown.shield_slam.remains ) || buff.sudden_death.up & talent.sudden_death.enabled", ["action"] = "execute", }, { ["action"] = "shield_slam", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= 2 & buff.violent_outburst.down", ["action"] = "thunder_blast", }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= 2 & buff.violent_outburst.down", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "( spell_targets.thunder_clap > 1 || cooldown.shield_slam.remains & ! buff.violent_outburst.up )", ["action"] = "thunder_blast", }, { ["enabled"] = true, ["criteria"] = "( spell_targets.thunder_clap > 1 || cooldown.shield_slam.remains & ! buff.violent_outburst.up )", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "( rage >= 80 & target.health.pct > 20 || buff.revenge.up & target.health.pct <= 20 & rage <= 18 & cooldown.shield_slam.remains || buff.revenge.up & target.health.pct > 20 ) || ( rage >= 80 & target.health.pct > 35 || buff.revenge.up & target.health.pct <= 35 & rage <= 18 & cooldown.shield_slam.remains || buff.revenge.up & target.health.pct > 35 ) & talent.massacre.enabled", ["action"] = "revenge", }, { ["action"] = "execute", ["enabled"] = true, }, { ["action"] = "revenge", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( spell_targets.thunder_clap >= 1 || cooldown.shield_slam.remains & buff.violent_outburst.up )", ["action"] = "thunder_blast", }, { ["enabled"] = true, ["criteria"] = "( spell_targets.thunder_clap >= 1 || cooldown.shield_slam.remains & buff.violent_outburst.up )", ["action"] = "thunder_clap", }, { ["action"] = "devastate", ["enabled"] = true, }, }, ["default"] = { { ["action"] = "pummel", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "time = 0 || movement.distance > 8", ["action"] = "charge", }, { ["action"] = "use_items", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.thunder_blast.down || buff.thunder_blast.stack <= 2", ["action"] = "avatar", }, { ["enabled"] = true, ["use_off_gcd"] = 1, ["criteria"] = "tanking & incoming_magic_damage_5s > spell_block_damage_taken & health.pct <= spell_block_health_pct & ! ( buff.spell_reflection_defense.up )", ["action"] = "spell_block", }, { ["enabled"] = true, ["use_off_gcd"] = 1, ["criteria"] = "tanking & incoming_damage_5s > shield_wall_damage_taken & health.pct <= shield_wall_health_pct & ! ( buff.shield_wall.up || buff.last_stand.up || buff.rallying_cry.up || buff.potion.up )", ["action"] = "shield_wall", }, { ["action"] = "blood_fury", ["enabled"] = true, }, { ["action"] = "berserking", ["enabled"] = true, }, { ["action"] = "arcane_torrent", ["enabled"] = true, }, { ["action"] = "lights_judgment", ["enabled"] = true, }, { ["action"] = "fireblood", ["enabled"] = true, }, { ["action"] = "ancestral_call", ["enabled"] = true, }, { ["action"] = "bag_of_tricks", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.avatar.up || buff.avatar.up & target.health.pct <= 20", ["action"] = "potion", }, { ["enabled"] = true, ["use_off_gcd"] = 1, ["action"] = "ignore_pain", ["criteria"] = "target.health.pct >= 20 & ( rage.deficit <= 15 & cooldown.shield_slam.ready || rage.deficit <= 40 & cooldown.shield_charge.ready & talent.champions_bulwark.enabled || rage.deficit <= 20 & cooldown.shield_charge.ready || rage.deficit <= 30 & cooldown.demoralizing_shout.ready & talent.booming_voice.enabled || rage.deficit <= 20 & cooldown.avatar.ready || rage.deficit <= 45 & cooldown.demoralizing_shout.ready & talent.booming_voice.enabled & buff.last_stand.up & talent.unnerving_focus.enabled || rage.deficit <= 30 & cooldown.avatar.ready & buff.last_stand.up & talent.unnerving_focus.enabled || rage.deficit <= 20 || rage.deficit <= 40 & cooldown.shield_slam.ready & buff.violent_outburst.up & talent.heavy_repercussions.enabled & talent.impenetrable_wall.enabled || rage.deficit <= 55 & cooldown.shield_slam.ready & buff.violent_outburst.up & buff.last_stand.up & talent.unnerving_focus.enabled & talent.heavy_repercussions.enabled & talent.impenetrable_wall.enabled || rage.deficit <= 17 & cooldown.shield_slam.ready & talent.heavy_repercussions.enabled || rage.deficit <= 18 & cooldown.shield_slam.ready & talent.impenetrable_wall.enabled ) || ( rage >= 70 || buff.seeing_red.stack = 7 & rage >= 35 ) & cooldown.shield_slam.remains <= 1 & buff.shield_block.remains >= 4 & set_bonus.tier31_2pc", }, { ["enabled"] = true, ["use_off_gcd"] = 1, ["criteria"] = "tanking & incoming_damage_5s > last_stand_damage_taken & health.pct <= last_stand_health_pct & ! ( buff.shield_wall.up || buff.last_stand.up || buff.rallying_cry.up || buff.potion.up )", ["action"] = "last_stand", }, { ["enabled"] = true, ["criteria"] = "tanking & incoming_damage_5s > rallying_cry_damage_taken & health.pct <= rallying_cry_health_pct & ! ( buff.shield_wall.up || buff.last_stand.up || buff.rallying_cry.up || buff.potion.up )", ["action"] = "rallying_cry", }, { ["enabled"] = true, ["criteria"] = "health.pct < victory_rush_health_pct & talent.impending_victory.disabled", ["action"] = "victory_rush", }, { ["enabled"] = true, ["criteria"] = "health.pct < victory_rush_health_pct & talent.impending_victory.enabled", ["action"] = "impending_victory", }, { ["action"] = "ravager", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.booming_voice.enabled", ["action"] = "demoralizing_shout", }, { ["action"] = "champions_spear", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "spell_targets.thunder_blast >= 2 & buff.thunder_blast.stack = 2", ["action"] = "thunder_blast", }, { ["enabled"] = true, ["criteria"] = "buff.colossal_might.stack >= 3", ["action"] = "demolish", }, { ["action"] = "thunderous_roar", ["enabled"] = true, }, { ["action"] = "shield_charge", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.shield_block.remains <= 10", ["action"] = "shield_block", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "spell_targets.thunder_clap >= 3", ["list_name"] = "aoe", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "generic", }, }, ["precombat"] = { { ["toggle"] = "on", ["action"] = "battle_stance", ["enabled"] = true, }, { ["action"] = "battle_shout", ["enabled"] = true, }, }, }, ["basedOn"] = "Protection Warrior", ["author"] = "SimulationCraft", }, ["Fury"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20250308, ["author"] = "SimC", ["desc"] = "2025-03-08: Sync with SimC\n\n2025-02-28: Additional SimC changes\n\n2025-02-26: Sync with SimC", ["profile"] = "actions.precombat+=/battle_shout\nactions.precombat+=/berserker_stance,toggle=on\nactions.precombat+=/variable,name=treacherous_transmitter_precombat_cast,value=2\nactions.precombat+=/use_item,name=treacherous_transmitter\nactions.precombat+=/recklessness,if=!equipped.fyralath_the_dreamrender\nactions.precombat+=/avatar\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.treacherous_transmitter\n# Evaluates a trinkets cooldown, divided by avatar or odyns fur. If it's value has no remainder return 1, else return 0.5.\nactions.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||trinket.1.cooldown.duration%%cooldown.odyns_fury.duration=0)\nactions.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||trinket.2.cooldown.duration%%cooldown.odyns_fury.duration=0)\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_stat.any_dps&!variable.trinket_1_exclude)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_stat.any_dps&!variable.trinket_2_exclude)\nactions.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))\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.algethar_puzzle_box\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.algethar_puzzle_box\nactions.precombat+=/variable,name=execute_phase,value=(talent.massacre.enabled&target.health.pct<35)||target.health.pct<20\nactions.precombat+=/variable,name=on_gcd_racials,value=buff.recklessness.down&buff.avatar.down&rage<80&buff.sudden_death.down&!cooldown.bladestorm.ready&(!cooldown.execute.ready||!variable.execute_phase)\n\nactions+=/pummel,if=target.debuff.casting.react\nactions+=/charge,if=time<=0.5||movement.distance>5\nactions+=/heroic_leap,if=movement.distance>25\nactions+=/potion,if=boss&(fight_remains>300||boss&fight_remains<35&buff.recklessness.up||boss&fight_remains<25)\nactions+=/use_item,name=treacherous_transmitter\n\n## Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.\nactions+=/use_item,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\nactions+=/use_item,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\n## 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.\nactions+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)&!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)\nactions+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)&!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)\nactions+=/use_item,slot=main_hand,if=!equipped.fyralath_the_dreamrender&!equipped.bestinslots&(!variable.trinket_1_buffs||trinket.1.cooldown.remains)&(!variable.trinket_2_buffs||trinket.2.cooldown.remains)\nactions+=/use_item,name=bestinslots,if=target.time_to_die>120&(cooldown.avatar.remains>20&(trinket.1.cooldown.remains||trinket.2.cooldown.remains)||cooldown.avatar.remains>20&(!trinket.1.has_cooldown||!trinket.2.has_cooldown))||target.time_to_die<=120&target.health.pct<35&cooldown.avatar.remains>85||boss&target.time_to_die<15\nactions+=/lights_judgment,if=buff.recklessness.down&buff.avatar.down&rage<80&buff.sudden_death.down&!cooldown.bladestorm.ready&(!cooldown.execute.ready||!variable.execute_phase)\nactions+=/bag_of_tricks,if=buff.recklessness.down&buff.avatar.down&rage<80&buff.sudden_death.down&!cooldown.bladestorm.ready&(!cooldown.execute.ready||!variable.execute_phase)\nactions+=/berserking,if=buff.recklessness.up\nactions+=/blood_fury\nactions+=/fireblood\nactions+=/ancestral_call\n## actions+=/invoke_external_buff,name=power_infusion,if=buff.avatar.remains>15&fight_remains>=135||variable.execute_phase&buff.avatar.up||fight_remains<=25\nactions+=/run_action_list,name=slayer,strict=1,if=!talent.lightning_strikes\nactions+=/run_action_list,name=thane,strict=1,if=talent.lightning_strikes\n\nactions.slayer+=/recklessness\nactions.slayer+=/avatar,if=cooldown.recklessness.remains\nactions.slayer+=/execute,if=buff.ashen_juggernaut.up&buff.ashen_juggernaut.remains<=gcd\nactions.slayer+=/champions_spear,if=buff.enrage.up&(cooldown.bladestorm.remains>=2||cooldown.bladestorm.remains>=16&debuff.marked_for_execution.stack=3)\nactions.slayer+=/bladestorm,if=buff.enrage.up&(talent.reckless_abandon&cooldown.avatar.remains>=24||talent.anger_management&cooldown.recklessness.remains>=24)\nactions.slayer+=/odyns_fury,if=(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.slayer+=/whirlwind,if=active_enemies>=2&talent.meat_cleaver&buff.meat_cleaver.down\nactions.slayer+=/execute,if=buff.sudden_death.stack=2&buff.sudden_death.remains<7\nactions.slayer+=/execute,if=buff.sudden_death.up&buff.sudden_death.remains<2\nactions.slayer+=/execute,if=buff.sudden_death.up&buff.imminent_demise.stack<3&cooldown.bladestorm.remains<25\nactions.slayer+=/execute,if=debuff.marked_for_execution.up&buff.brutal_finish.up&debuff.overwhelmed.stack<10\nactions.slayer+=/onslaught,if=talent.tenderize&buff.brutal_finish.up\nactions.slayer+=/rampage,if=!buff.enrage.up||buff.slaughtering_strikes.stack>=4\nactions.slayer+=/crushing_blow,if=action.raging_blow.charges=2||buff.brutal_finish.up&(!debuff.champions_might.up||debuff.champions_might.up&debuff.champions_might.remains>gcd)\nactions.slayer+=/thunderous_roar,if=buff.enrage.up&!buff.brutal_finish.up\nactions.slayer+=/execute,if=buff.ashen_juggernaut.up&buff.ashen_juggernaut.remains<3\nactions.slayer+=/execute,if=debuff.marked_for_execution.stack=3\nactions.slayer+=/bloodbath,if=buff.bloodcraze.stack>=1||(talent.uproar&dot.bloodbath_dot.remains<40&talent.bloodborne)||buff.enrage.up&buff.enrage.remainsgcd)\nactions.slayer+=/rampage,if=action.raging_blow.charges<=1&rage>=100&talent.anger_management&buff.recklessness.down\nactions.slayer+=/bloodthirst,if=target.health.pct<35&talent.vicious_contempt&buff.brutal_finish.up&buff.enrage.up&buff.bloodcraze.stack>=2||active_enemies>=5\nactions.slayer+=/rampage,if=rage>=130\nactions.slayer+=/rampage,if=rage>=115&talent.reckless_abandon&buff.recklessness.up&buff.slaughtering_strikes.stack>=3\nactions.slayer+=/bloodbath,if=(buff.bloodcraze.stack>=4||crit_pct_current>=85)\nactions.slayer+=/crushing_blow\nactions.slayer+=/bloodbath,if=target.health.pct<35&talent.vicious_contempt\nactions.slayer+=/bloodbath\nactions.slayer+=/raging_blow,if=buff.opportunist.up\nactions.slayer+=/bloodthirst,if=target.health.pct<35&talent.vicious_contempt&buff.bloodcraze.stack>=2\nactions.slayer+=/rampage,if=rage>=100&talent.anger_management&buff.recklessness.up\nactions.slayer+=/bloodthirst,if=buff.bloodcraze.stack>=4||crit_pct_current>=85\nactions.slayer+=/raging_blow\nactions.slayer+=/bloodthirst\nactions.slayer+=/execute,if=target.health.pct<35&talent.massacre||target.health.pct<20\nactions.slayer+=/rampage,if=talent.unbridled_ferocity\nactions.slayer+=/rampage\nactions.slayer+=/execute\nactions.slayer+=/onslaught,if=talent.tenderize\nactions.slayer+=/whirlwind,if=talent.improved_whirlwind\nactions.slayer+=/storm_bolt,if=buff.bladestorm.up\n\nactions.thane+=/recklessness\nactions.thane+=/avatar\nactions.thane+=/ravager\nactions.thane+=/thunder_blast,if=buff.enrage.up&talent.meat_cleaver\nactions.thane+=/thunder_clap,if=buff.meat_cleaver.down&talent.meat_cleaver&active_enemies>=2\nactions.thane+=/thunderous_roar,if=buff.enrage.up\nactions.thane+=/champions_spear,if=buff.enrage.up\nactions.thane+=/odyns_fury,if=(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.thane+=/rampage,if=buff.enrage.down\nactions.thane+=/execute,if=talent.ashen_juggernaut&buff.ashen_juggernaut.remains<=gcd&buff.enrage.up\nactions.thane+=/rampage,if=talent.bladestorm&cooldown.bladestorm.remains<=gcd&!debuff.champions_might.up\nactions.thane+=/bladestorm,if=buff.enrage.up&talent.unhinged\nactions.thane+=/bloodbath,if=buff.bloodcraze.stack>=2\nactions.thane+=/rampage,if=rage>=115&talent.reckless_abandon&buff.recklessness.up&buff.slaughtering_strikes.stack>=3\nactions.thane+=/crushing_blow\nactions.thane+=/bloodbath\nactions.thane+=/onslaught,if=talent.tenderize\nactions.thane+=/rampage\nactions.thane+=/bloodthirst,if=talent.vicious_contempt&target.health.pct<35&buff.bloodcraze.stack>=2||!dot.ravager.remains&buff.bloodcraze.stack>=3||active_enemies>=6\nactions.thane+=/raging_blow\nactions.thane+=/execute,if=talent.ashen_juggernaut\nactions.thane+=/thunder_blast\nactions.thane+=/bloodthirst\nactions.thane+=/execute\nactions.thane+=/thunder_clap", ["version"] = 20250308, ["warnings"] = "The import for 'thane' required some automated changes.\nLine 4: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\nLine 5: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\nLine 8: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 10: Converted 'talent.ashen_juggernaut' to 'talent.ashen_juggernaut.enabled' (1x).\nLine 11: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 12: Converted 'talent.unhinged' to 'talent.unhinged.enabled' (1x).\nLine 14: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 17: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 19: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 21: Converted 'talent.ashen_juggernaut' to 'talent.ashen_juggernaut.enabled' (1x).\n\nThe import for 'slayer' required some automated changes.\nLine 5: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 5: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 6: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 7: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\nLine 12: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 18: Converted 'talent.uproar' to 'talent.uproar.enabled' (1x).\nLine 18: Converted 'talent.bloodborne' to 'talent.bloodborne.enabled' (1x).\nLine 20: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 21: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 23: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 26: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 29: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 30: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 34: Converted 'talent.massacre' to 'talent.massacre.enabled' (1x).\nLine 35: Converted 'talent.unbridled_ferocity' to 'talent.unbridled_ferocity.enabled' (1x).\nLine 38: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 39: Converted 'talent.improved_whirlwind' to 'talent.improved_whirlwind.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 6: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 6: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 6: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 7: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 7: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 7: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 7: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 8: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 8: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 8: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 8: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 9: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 9: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 9: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 9: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 10: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 10: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 11: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 11: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 18: Converted 'talent.lightning_strikes' to 'talent.lightning_strikes.enabled' (1x).\nLine 19: Converted 'talent.lightning_strikes' to 'talent.lightning_strikes.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 7: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 8: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 9: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 9: Converted operations in 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%%cooldown.avatar.duration=0||trinket.t1.cooldown.duration%%cooldown.odyns_fury.duration=0)' to 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%cooldown.avatar.duration=0||trinket.t1.cooldown.duration%cooldown.odyns_fury.duration=0)'.\nLine 10: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 10: Converted operations in 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%%cooldown.avatar.duration=0||trinket.t2.cooldown.duration%%cooldown.odyns_fury.duration=0)' to 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%cooldown.avatar.duration=0||trinket.t2.cooldown.duration%cooldown.odyns_fury.duration=0)'.\nLine 11: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 11: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 12: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 12: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 13: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 13: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 13: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 13: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 13: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 13: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 13: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 13: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 13: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 13: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 14: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 15: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\n\nImported 4 action lists.\n", ["spec"] = 72, ["lists"] = { ["precombat"] = { { ["action"] = "battle_shout", ["enabled"] = true, }, { ["toggle"] = "on", ["action"] = "berserker_stance", ["enabled"] = true, }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "2", ["var_name"] = "treacherous_transmitter_precombat_cast", }, { ["enabled"] = true, ["name"] = "treacherous_transmitter", ["action"] = "treacherous_transmitter", }, { ["enabled"] = true, ["criteria"] = "! equipped.fyralath_the_dreamrender", ["action"] = "recklessness", }, { ["action"] = "avatar", ["enabled"] = true, }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.treacherous_transmitter", ["var_name"] = "trinket_1_exclude", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.treacherous_transmitter", ["var_name"] = "trinket_2_exclude", }, { ["enabled"] = true, ["op"] = "setif", ["description"] = "Evaluates a trinkets cooldown, divided by avatar or odyns fur. If it's value has no remainder return 1, else return 0.5.", ["criteria"] = "trinket.t1.has_use_buff & ( trinket.t1.cooldown.duration % cooldown.avatar.duration = 0 || trinket.t1.cooldown.duration % cooldown.odyns_fury.duration = 0 )", ["var_name"] = "trinket_1_sync", ["action"] = "variable", ["value_else"] = "0.5", ["value"] = "1", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "trinket_2_sync", ["criteria"] = "trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration % cooldown.avatar.duration = 0 || trinket.t2.cooldown.duration % cooldown.odyns_fury.duration = 0 )", ["value_else"] = "0.5", ["value"] = "1", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_stat.any_dps & ! variable.trinket_1_exclude )", ["var_name"] = "trinket_1_buffs", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_stat.any_dps & ! variable.trinket_2_exclude )", ["var_name"] = "trinket_2_buffs", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "trinket_priority", ["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / trinket.t2.buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )", ["value_else"] = "1", ["value"] = "2", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.algethar_puzzle_box", ["var_name"] = "trinket_1_manual", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.algethar_puzzle_box", ["var_name"] = "trinket_2_manual", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( talent.massacre.enabled & target.health.pct < 35 ) || target.health.pct < 20", ["var_name"] = "execute_phase", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "buff.recklessness.down & buff.avatar.down & rage < 80 & buff.sudden_death.down & ! cooldown.bladestorm.ready & ( ! cooldown.execute.ready || ! variable.execute_phase )", ["var_name"] = "on_gcd_racials", }, }, ["default"] = { { ["enabled"] = true, ["criteria"] = "target.debuff.casting.react", ["action"] = "pummel", }, { ["enabled"] = true, ["criteria"] = "time <= 0.5 || movement.distance > 5", ["action"] = "charge", }, { ["enabled"] = true, ["criteria"] = "movement.distance > 25", ["action"] = "heroic_leap", }, { ["enabled"] = true, ["criteria"] = "boss & ( fight_remains > 300 || boss & fight_remains < 35 & buff.recklessness.up || boss & fight_remains < 25 )", ["action"] = "potion", }, { ["enabled"] = true, ["name"] = "treacherous_transmitter", ["action"] = "treacherous_transmitter", }, { ["enabled"] = true, ["action"] = "trinket1", ["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! buff.avatar.up & trinket.t1.cast_time > 0 || ! trinket.t1.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || trinket.t1.buff_duration >= fight_remains", ["slot"] = "trinket1", }, { ["enabled"] = true, ["action"] = "trinket2", ["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! buff.avatar.up & trinket.t2.cast_time > 0 || ! trinket.t2.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || trinket.t2.buff_duration >= fight_remains", ["slot"] = "trinket2", }, { ["enabled"] = true, ["action"] = "trinket1", ["criteria"] = "! variable.trinket_1_buffs & ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )", ["slot"] = "trinket1", }, { ["enabled"] = true, ["action"] = "trinket2", ["criteria"] = "! variable.trinket_2_buffs & ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) & ! variable.trinket_2_manual & ( ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) || ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )", ["slot"] = "trinket2", }, { ["enabled"] = true, ["action"] = "main_hand", ["criteria"] = "! equipped.fyralath_the_dreamrender & ! equipped.bestinslots & ( ! variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( ! variable.trinket_2_buffs || trinket.t2.cooldown.remains )", ["slot"] = "main_hand", }, { ["enabled"] = true, ["action"] = "bestinslots", ["criteria"] = "target.time_to_die > 120 & ( cooldown.avatar.remains > 20 & ( trinket.t1.cooldown.remains || trinket.t2.cooldown.remains ) || cooldown.avatar.remains > 20 & ( ! trinket.t1.has_cooldown || ! trinket.t2.has_cooldown ) ) || target.time_to_die <= 120 & target.health.pct < 35 & cooldown.avatar.remains > 85 || boss & target.time_to_die < 15", ["name"] = "bestinslots", }, { ["enabled"] = true, ["criteria"] = "buff.recklessness.down & buff.avatar.down & rage < 80 & buff.sudden_death.down & ! cooldown.bladestorm.ready & ( ! cooldown.execute.ready || ! variable.execute_phase )", ["action"] = "lights_judgment", }, { ["enabled"] = true, ["criteria"] = "buff.recklessness.down & buff.avatar.down & rage < 80 & buff.sudden_death.down & ! cooldown.bladestorm.ready & ( ! cooldown.execute.ready || ! variable.execute_phase )", ["action"] = "bag_of_tricks", }, { ["enabled"] = true, ["criteria"] = "buff.recklessness.up", ["action"] = "berserking", }, { ["action"] = "blood_fury", ["enabled"] = true, }, { ["action"] = "fireblood", ["enabled"] = true, }, { ["action"] = "ancestral_call", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "! talent.lightning_strikes.enabled", ["list_name"] = "slayer", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "talent.lightning_strikes.enabled", ["list_name"] = "thane", }, }, ["slayer"] = { { ["action"] = "recklessness", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "cooldown.recklessness.remains", ["action"] = "avatar", }, { ["enabled"] = true, ["criteria"] = "buff.ashen_juggernaut.up & buff.ashen_juggernaut.remains <= gcd.max", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & ( cooldown.bladestorm.remains >= 2 || cooldown.bladestorm.remains >= 16 & debuff.marked_for_execution.stack = 3 )", ["action"] = "champions_spear", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & ( talent.reckless_abandon.enabled & cooldown.avatar.remains >= 24 || talent.anger_management.enabled & cooldown.recklessness.remains >= 24 )", ["action"] = "bladestorm", }, { ["enabled"] = true, ["criteria"] = "( buff.enrage.up || talent.titanic_rage.enabled ) & cooldown.avatar.remains", ["action"] = "odyns_fury", }, { ["enabled"] = true, ["criteria"] = "active_enemies >= 2 & talent.meat_cleaver.enabled & buff.meat_cleaver.down", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "buff.sudden_death.stack = 2 & buff.sudden_death.remains < 7", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "buff.sudden_death.up & buff.sudden_death.remains < 2", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "buff.sudden_death.up & buff.imminent_demise.stack < 3 & cooldown.bladestorm.remains < 25", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "debuff.marked_for_execution.up & buff.brutal_finish.up & debuff.overwhelmed.stack < 10", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "talent.tenderize.enabled & buff.brutal_finish.up", ["action"] = "onslaught", }, { ["enabled"] = true, ["criteria"] = "! buff.enrage.up || buff.slaughtering_strikes.stack >= 4", ["action"] = "rampage", }, { ["enabled"] = true, ["criteria"] = "action.raging_blow.charges = 2 || buff.brutal_finish.up & ( ! debuff.champions_might.up || debuff.champions_might.up & debuff.champions_might.remains > gcd.max )", ["action"] = "crushing_blow", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & ! buff.brutal_finish.up", ["action"] = "thunderous_roar", }, { ["enabled"] = true, ["criteria"] = "buff.ashen_juggernaut.up & buff.ashen_juggernaut.remains < 3", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "debuff.marked_for_execution.stack = 3", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "buff.bloodcraze.stack >= 1 || ( talent.uproar.enabled & dot.bloodbath_dot.remains < 40 & talent.bloodborne.enabled ) || buff.enrage.up & buff.enrage.remains < gcd.max", ["action"] = "bloodbath", }, { ["enabled"] = true, ["criteria"] = "buff.brutal_finish.up & buff.slaughtering_strikes.stack < 5 & ( ! debuff.champions_might.up || debuff.champions_might.up & debuff.champions_might.remains > gcd.max )", ["action"] = "raging_blow", }, { ["enabled"] = true, ["criteria"] = "action.raging_blow.charges <= 1 & rage >= 100 & talent.anger_management.enabled & buff.recklessness.down", ["action"] = "rampage", }, { ["enabled"] = true, ["criteria"] = "target.health.pct < 35 & talent.vicious_contempt.enabled & buff.brutal_finish.up & buff.enrage.up & buff.bloodcraze.stack >= 2 || active_enemies >= 5", ["action"] = "bloodthirst", }, { ["enabled"] = true, ["criteria"] = "rage >= 130", ["action"] = "rampage", }, { ["enabled"] = true, ["criteria"] = "rage >= 115 & talent.reckless_abandon.enabled & buff.recklessness.up & buff.slaughtering_strikes.stack >= 3", ["action"] = "rampage", }, { ["enabled"] = true, ["criteria"] = "( buff.bloodcraze.stack >= 4 || crit_pct_current >= 85 )", ["action"] = "bloodbath", }, { ["action"] = "crushing_blow", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "target.health.pct < 35 & talent.vicious_contempt.enabled", ["action"] = "bloodbath", }, { ["action"] = "bloodbath", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.opportunist.up", ["action"] = "raging_blow", }, { ["enabled"] = true, ["criteria"] = "target.health.pct < 35 & talent.vicious_contempt.enabled & buff.bloodcraze.stack >= 2", ["action"] = "bloodthirst", }, { ["enabled"] = true, ["criteria"] = "rage >= 100 & talent.anger_management.enabled & buff.recklessness.up", ["action"] = "rampage", }, { ["enabled"] = true, ["criteria"] = "buff.bloodcraze.stack >= 4 || crit_pct_current >= 85", ["action"] = "bloodthirst", }, { ["action"] = "raging_blow", ["enabled"] = true, }, { ["action"] = "bloodthirst", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "target.health.pct < 35 & talent.massacre.enabled || target.health.pct < 20", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "talent.unbridled_ferocity.enabled", ["action"] = "rampage", }, { ["action"] = "rampage", ["enabled"] = true, }, { ["action"] = "execute", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.tenderize.enabled", ["action"] = "onslaught", }, { ["enabled"] = true, ["criteria"] = "talent.improved_whirlwind.enabled", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "buff.bladestorm.up", ["action"] = "storm_bolt", }, }, ["thane"] = { { ["action"] = "recklessness", ["enabled"] = true, }, { ["action"] = "avatar", ["enabled"] = true, }, { ["action"] = "ravager", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & talent.meat_cleaver.enabled", ["action"] = "thunder_blast", }, { ["enabled"] = true, ["criteria"] = "buff.meat_cleaver.down & talent.meat_cleaver.enabled & active_enemies >= 2", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up", ["action"] = "thunderous_roar", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up", ["action"] = "champions_spear", }, { ["enabled"] = true, ["criteria"] = "( buff.enrage.up || talent.titanic_rage.enabled ) & cooldown.avatar.remains", ["action"] = "odyns_fury", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.down", ["action"] = "rampage", }, { ["enabled"] = true, ["criteria"] = "talent.ashen_juggernaut.enabled & buff.ashen_juggernaut.remains <= gcd.max & buff.enrage.up", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "talent.bladestorm.enabled & cooldown.bladestorm.remains <= gcd.max & ! debuff.champions_might.up", ["action"] = "rampage", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & talent.unhinged.enabled", ["action"] = "bladestorm", }, { ["enabled"] = true, ["criteria"] = "buff.bloodcraze.stack >= 2", ["action"] = "bloodbath", }, { ["enabled"] = true, ["criteria"] = "rage >= 115 & talent.reckless_abandon.enabled & buff.recklessness.up & buff.slaughtering_strikes.stack >= 3", ["action"] = "rampage", }, { ["action"] = "crushing_blow", ["enabled"] = true, }, { ["action"] = "bloodbath", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.tenderize.enabled", ["action"] = "onslaught", }, { ["action"] = "rampage", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.vicious_contempt.enabled & target.health.pct < 35 & buff.bloodcraze.stack >= 2 || ! dot.ravager.remains & buff.bloodcraze.stack >= 3 || active_enemies >= 6", ["action"] = "bloodthirst", }, { ["action"] = "raging_blow", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.ashen_juggernaut.enabled", ["action"] = "execute", }, { ["action"] = "thunder_blast", ["enabled"] = true, }, { ["action"] = "bloodthirst", ["enabled"] = true, }, { ["action"] = "execute", ["enabled"] = true, }, { ["action"] = "thunder_clap", ["enabled"] = true, }, }, }, }, }, }, ["Quillmog - Deathwing"] = { ["runOnce"] = { ["autoconvertDisplayToggle_20190621_1"] = true, ["resetPotionsToDefaults_20190717"] = true, ["enableAllOfTheThings_20180820"] = true, ["autoconvertDelaySweepToExtend_20190729"] = true, ["autoconvertGlowsForCustomGlow_20190326"] = true, ["resetRogueMfDOption_20200226"] = true, ["resetAberrantPackageDates_20190728_1"] = true, }, ["specs"] = { [255] = { ["maxRefresh"] = 10, ["custom2Name"] = "Custom 2", ["throttleRefresh"] = false, ["settings"] = { ["use_harpoon"] = true, ["ca_vop_overlap"] = false, }, ["aoe"] = 2, ["gcdSync"] = true, ["damageDots"] = false, ["damage"] = true, ["enabled"] = true, ["debuffPadding"] = 0, ["maxTime"] = 33, ["custom1Name"] = "Custom 1", ["package"] = "Survival", ["throttleTime"] = false, ["cycle"] = false, ["cycle_min"] = 6, ["nameplateRange"] = 8, ["potion"] = "unbridled_fury", ["potionsReset"] = 20180919.1, ["nameplates"] = true, ["damageExpiration"] = 8, ["buffPadding"] = 0, ["damageRange"] = 0, }, [254] = { ["maxRefresh"] = 10, ["custom2Name"] = "Custom 2", ["throttleRefresh"] = false, ["settings"] = { ["trueshot_vop_overlap"] = false, }, ["aoe"] = 3, ["gcdSync"] = true, ["damageDots"] = false, ["damage"] = true, ["enabled"] = true, ["debuffPadding"] = 0, ["maxTime"] = 33, ["custom1Name"] = "Custom 1", ["package"] = "Marksmanship", ["throttleTime"] = false, ["cycle"] = false, ["cycle_min"] = 6, ["nameplateRange"] = 8, ["potion"] = "unbridled_fury", ["potionsReset"] = 20180919.1, ["nameplates"] = false, ["damageExpiration"] = 6, ["buffPadding"] = 0, ["damageRange"] = 0, }, [253] = { ["maxRefresh"] = 10, ["custom2Name"] = "Custom 2", ["throttleRefresh"] = false, ["settings"] = { ["aspect_vop_overlap"] = false, ["barbed_shot_grace_period"] = 0.5, }, ["aoe"] = 3, ["gcdSync"] = true, ["damageDots"] = false, ["buffPadding"] = 0, ["enabled"] = true, ["debuffPadding"] = 0, ["maxTime"] = 33, ["custom1Name"] = "Custom 1", ["package"] = "Beast Mastery", ["throttleTime"] = false, ["cycle"] = false, ["cycle_min"] = 6, ["nameplateRange"] = 8, ["potion"] = "unbridled_fury", ["potionsReset"] = 20180919.1, ["nameplates"] = false, ["damageExpiration"] = 3, ["damage"] = true, ["damageRange"] = 0, }, }, ["displays"] = { ["Interrupts"] = { }, }, ["packs"] = { ["Marksmanship"] = { ["source"] = "# https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20200401, ["author"] = "SimC", ["desc"] = "# Marksmanship Hunter\n# https://github.com/simulationcraft/simc/\n# March 30, 2020\n\n# Changes:\n# - Add utility priority to APL.\n# - Use time_to_die rather than target.time_to_die to anticipate end of combat.", ["lists"] = { ["trickshots"] = { { ["action"] = "barrage", ["enabled"] = true, }, { ["action"] = "explosive_shot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.trick_shots.up & ca_execute & buff.double_tap.up", ["action"] = "aimed_shot", }, { ["enabled"] = true, ["criteria"] = "buff.trick_shots.up & ( azerite.focused_fire.enabled || azerite.in_the_rhythm.rank > 1 || azerite.surging_shots.enabled || talent.streamline.enabled )", ["action"] = "rapid_fire", }, { ["enabled"] = true, ["criteria"] = "buff.trick_shots.up & ( buff.precise_shots.down || cooldown.aimed_shot.full_recharge_time < action.aimed_shot.cast_time || buff.trueshot.up )", ["action"] = "aimed_shot", }, { ["enabled"] = true, ["criteria"] = "buff.trick_shots.up", ["action"] = "rapid_fire", }, { ["enabled"] = true, ["criteria"] = "buff.trick_shots.down || buff.precise_shots.up & ! buff.trueshot.up || focus > 70", ["action"] = "multishot", }, { ["action"] = "focused_azerite_beam", ["enabled"] = true, }, { ["action"] = "purifying_blast", ["enabled"] = true, }, { ["action"] = "concentrated_flame", ["enabled"] = true, }, { ["action"] = "blood_of_the_enemy", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.reckless_force.up || buff.reckless_force_counter.stack < 10", ["action"] = "the_unbound_force", }, { ["action"] = "piercing_shot", ["enabled"] = true, }, { ["action"] = "a_murder_of_crows", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "refreshable & ! action.serpent_sting.in_flight", ["action"] = "serpent_sting", }, { ["action"] = "steady_shot", ["enabled"] = true, }, }, ["default"] = { { ["enabled"] = true, ["criteria"] = "debuff.casting.up || buff.dispellable_magic.up || buff.dispellable_enrage.up", ["action"] = "call_action_list", ["list_name"] = "utility", }, { ["enabled"] = true, ["criteria"] = "cooldown.trueshot.remains_guess < 15 || time_to_die < 30", ["name"] = "lurkers_insidious_gift", ["action"] = "lurkers_insidious_gift", }, { ["enabled"] = true, ["criteria"] = "( time_to_die > action_cooldown + 34 || target.health.pct < 20 || target.time_to_pct_20 < 15 ) & cooldown.trueshot.remains_guess < 15 || time_to_die < 35", ["name"] = "azsharas_font_of_power", ["action"] = "azsharas_font_of_power", }, { ["enabled"] = true, ["criteria"] = "cooldown.trueshot.remains_guess < 5 || time_to_die < 20", ["name"] = "lustrous_golden_plumage", ["action"] = "lustrous_golden_plumage", }, { ["enabled"] = true, ["criteria"] = "prev_gcd.1.trueshot || ! talent.calling_the_shots.enabled || time_to_die < 10", ["name"] = "galecallers_boon", ["action"] = "galecallers_boon", }, { ["enabled"] = true, ["criteria"] = "prev_gcd.1.trueshot & ( buff.guardian_of_azeroth.up || ! essence.condensed_lifeforce.major & ca_execute ) || debuff.razor_coral_debuff.down || time_to_die < 20", ["name"] = "ashvanes_razor_coral", ["action"] = "ashvanes_razor_coral", }, { ["enabled"] = true, ["criteria"] = "! buff.trueshot.up & ! essence.blood_of_the_enemy.major || debuff.blood_of_the_enemy.up || time_to_die < 5", ["name"] = "pocketsized_computation_device", ["action"] = "pocketsized_computation_device", }, { ["enabled"] = true, ["criteria"] = "prev_gcd.1.trueshot || ! talent.calling_the_shots.enabled || time_to_die < 20", ["action"] = "use_items", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cds", }, { ["enabled"] = true, ["criteria"] = "active_enemies < 3", ["action"] = "call_action_list", ["list_name"] = "st", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 2", ["action"] = "call_action_list", ["list_name"] = "trickshots", }, }, ["precombat"] = { { ["action"] = "hunters_mark", ["enabled"] = true, }, { ["enabled"] = true, ["precast_time"] = "10", ["action"] = "double_tap", }, { ["enabled"] = true, ["name"] = "azsharas_font_of_power", ["action"] = "azsharas_font_of_power", }, { ["action"] = "worldvein_resonance", ["enabled"] = true, }, { ["action"] = "guardian_of_azeroth", ["enabled"] = true, }, { ["action"] = "memory_of_lucid_dreams", ["enabled"] = true, }, { ["enabled"] = true, ["precast_time"] = "1.5", ["action"] = "trueshot", ["criteria"] = "active_enemies > 2", }, { ["action"] = "potion", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "active_enemies < 3", ["action"] = "aimed_shot", }, }, ["cds"] = { { ["enabled"] = true, ["criteria"] = "debuff.hunters_mark.down & ! buff.trueshot.up", ["action"] = "hunters_mark", }, { ["enabled"] = true, ["criteria"] = "cooldown.rapid_fire.remains < gcd || cooldown.rapid_fire.remains < cooldown.aimed_shot.remains || time_to_die < 20", ["action"] = "double_tap", }, { ["enabled"] = true, ["criteria"] = "prev_gcd.1.trueshot & ( target.time_to_die > cooldown.berserking.duration + duration || ( target.health.pct < 20 || ! talent.careful_aim.enabled ) ) || time_to_die < 13", ["action"] = "berserking", }, { ["enabled"] = true, ["criteria"] = "prev_gcd.1.trueshot & ( target.time_to_die > cooldown.blood_fury.duration + duration || ( target.health.pct < 20 || ! talent.careful_aim.enabled ) ) || time_to_die < 16", ["action"] = "blood_fury", }, { ["enabled"] = true, ["criteria"] = "prev_gcd.1.trueshot & ( target.time_to_die > cooldown.ancestral_call.duration + duration || ( target.health.pct < 20 || ! talent.careful_aim.enabled ) ) || time_to_die < 16", ["action"] = "ancestral_call", }, { ["enabled"] = true, ["criteria"] = "prev_gcd.1.trueshot & ( target.time_to_die > cooldown.fireblood.duration + duration || ( target.health.pct < 20 || ! talent.careful_aim.enabled ) ) || time_to_die < 9", ["action"] = "fireblood", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.down", ["action"] = "lights_judgment", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.down", ["action"] = "bag_of_tricks", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.down & ( target.health.pct > 80 || target.health.pct <= 20 || target.time_to_pct_20 > 30 )", ["action"] = "reaping_flames", }, { ["enabled"] = true, ["criteria"] = "( cooldown.azsharas_font_of_power.remains > 20 || ! equipped.azsharas_font_of_power || time_to_die < cooldown.azsharas_font_of_power.duration + 34 & target.health.pct > 20 ) & ( cooldown.trueshot.remains_guess < 3 || ( essence.vision_of_perfection.minor & time_to_die > action_cooldown + buff.worldvein_resonance.duration ) ) || time_to_die < 20", ["action"] = "worldvein_resonance", }, { ["enabled"] = true, ["criteria"] = "( ca_execute || target.time_to_die > action_cooldown + 30 ) & ( buff.trueshot.up || cooldown.trueshot.remains < 16 ) || time_to_die < 31", ["action"] = "guardian_of_azeroth", }, { ["enabled"] = true, ["criteria"] = "cooldown.trueshot.remains < 7", ["action"] = "ripple_in_space", }, { ["enabled"] = true, ["criteria"] = "! buff.trueshot.up", ["action"] = "memory_of_lucid_dreams", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.react & buff.bloodlust.react || prev_gcd.1.trueshot & target.health.pct < 20 || ( ( consumable.potion_of_unbridled_fury || consumable.unbridled_fury ) & target.time_to_die < 61 || time_to_die < 26 )", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.down & cooldown.rapid_fire.remains || time_to_die < 15", ["action"] = "trueshot", }, }, ["st"] = { { ["action"] = "explosive_shot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1", ["action"] = "barrage", }, { ["action"] = "a_murder_of_crows", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "refreshable & ! action.serpent_sting.in_flight", ["action"] = "serpent_sting", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.down || focus < 35 || focus < 60 & ! talent.lethal_shots.enabled || buff.in_the_rhythm.remains < execute_time", ["action"] = "rapid_fire", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.up & ( buff.unerring_vision.stack > 4 || ! azerite.unerring_vision.enabled ) || time_to_die < 11", ["action"] = "blood_of_the_enemy", }, { ["enabled"] = true, ["criteria"] = "! buff.trueshot.up || time_to_die < 5", ["action"] = "focused_azerite_beam", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.up & buff.master_marksman.up & ! buff.memory_of_lucid_dreams.up", ["action"] = "arcane_shot", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.up || ( buff.double_tap.down || ca_execute ) & buff.precise_shots.down || full_recharge_time < cast_time & cooldown.trueshot.remains", ["action"] = "aimed_shot", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.up & buff.master_marksman.up & buff.memory_of_lucid_dreams.up", ["action"] = "arcane_shot", }, { ["action"] = "piercing_shot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! buff.trueshot.up || time_to_die < 8", ["action"] = "purifying_blast", }, { ["enabled"] = true, ["criteria"] = "focus + focus.regen * gcd < focus.max & buff.trueshot.down & ( ! dot.concentrated_flame_burn.remains & ! action.concentrated_flame.in_flight ) || full_recharge_time < gcd || target.time_to_die < 5", ["action"] = "concentrated_flame", }, { ["enabled"] = true, ["criteria"] = "buff.reckless_force.up || buff.reckless_force_counter.stack < 10 || time_to_die < 5", ["action"] = "the_unbound_force", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.down & ( buff.precise_shots.up & ( focus > 55 || buff.master_marksman.up ) || focus > 75 || time_to_die < 5 )", ["action"] = "arcane_shot", }, { ["action"] = "steady_shot", ["enabled"] = true, }, }, ["utility"] = { { ["action"] = "counter_shot", ["enabled"] = true, }, { ["action"] = "serenity_dust", ["enabled"] = true, }, { ["action"] = "spore_cloud", ["enabled"] = true, }, { ["action"] = "soothing_water", ["enabled"] = true, }, { ["action"] = "sonic_blast", ["enabled"] = true, }, { ["action"] = "nether_shock", ["enabled"] = true, }, { ["action"] = "chijis_tranquility", ["enabled"] = true, }, { ["action"] = "spirit_shock", ["enabled"] = true, }, { ["action"] = "natures_grace", ["enabled"] = true, }, }, }, ["version"] = 20200401, ["warnings"] = "Imported 6 action lists.\n", ["spec"] = 254, ["profile"] = "# Marksmanship Hunter\n# https://github.com/simulationcraft/simc/\n# March 30, 2020\n\n# Changes:\n# - Add utility priority to APL.\n# - Use time_to_die rather than target.time_to_die to anticipate end of combat.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/augmentation\n# actions.precombat+=/food\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/hunters_mark\n# Precast this as early as possible to potentially gain another cast during the fight.\nactions.precombat+=/double_tap,precast_time=10\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/worldvein_resonance\nactions.precombat+=/guardian_of_azeroth\nactions.precombat+=/memory_of_lucid_dreams\nactions.precombat+=/trueshot,precast_time=1.5,if=active_enemies>2\nactions.precombat+=/potion\nactions.precombat+=/aimed_shot,if=active_enemies<3\n\nactions.utility=counter_shot\nactions.utility+=/serenity_dust\nactions.utility+=/spore_cloud\nactions.utility+=/soothing_water\nactions.utility+=/sonic_blast\nactions.utility+=/nether_shock\nactions.utility+=/chijis_tranquility\nactions.utility+=/spirit_shock\nactions.utility+=/natures_grace\n\n# Executed every time the actor is available.\nactions=call_action_list,name=utility,if=debuff.casting.up||buff.dispellable_magic.up||buff.dispellable_enrage.up\nactions+=/use_item,name=lurkers_insidious_gift,if=cooldown.trueshot.remains_guess<15||time_to_die<30\nactions+=/use_item,name=azsharas_font_of_power,if=(time_to_die>cooldown+34||target.health.pct<20||target.time_to_pct_20<15)&cooldown.trueshot.remains_guess<15||time_to_die<35\nactions+=/use_item,name=lustrous_golden_plumage,if=cooldown.trueshot.remains_guess<5||time_to_die<20\nactions+=/use_item,name=galecallers_boon,if=prev_gcd.1.trueshot||!talent.calling_the_shots.enabled||time_to_die<10\nactions+=/use_item,name=ashvanes_razor_coral,if=prev_gcd.1.trueshot&(buff.guardian_of_azeroth.up||!essence.condensed_lifeforce.major&ca_execute)||debuff.razor_coral_debuff.down||time_to_die<20\nactions+=/use_item,name=pocketsized_computation_device,if=!buff.trueshot.up&!essence.blood_of_the_enemy.major||debuff.blood_of_the_enemy.up||time_to_die<5\n# Try to line up activated trinkets with Trueshot\nactions+=/use_items,if=prev_gcd.1.trueshot||!talent.calling_the_shots.enabled||time_to_die<20\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=st,if=active_enemies<3\nactions+=/call_action_list,name=trickshots,if=active_enemies>2\n\nactions.cds=hunters_mark,if=debuff.hunters_mark.down&!buff.trueshot.up\nactions.cds+=/double_tap,if=cooldown.rapid_fire.remainscooldown.berserking.duration+duration||(target.health.pct<20||!talent.careful_aim.enabled))||time_to_die<13\nactions.cds+=/blood_fury,if=prev_gcd.1.trueshot&(target.time_to_die>cooldown.blood_fury.duration+duration||(target.health.pct<20||!talent.careful_aim.enabled))||time_to_die<16\nactions.cds+=/ancestral_call,if=prev_gcd.1.trueshot&(target.time_to_die>cooldown.ancestral_call.duration+duration||(target.health.pct<20||!talent.careful_aim.enabled))||time_to_die<16\nactions.cds+=/fireblood,if=prev_gcd.1.trueshot&(target.time_to_die>cooldown.fireblood.duration+duration||(target.health.pct<20||!talent.careful_aim.enabled))||time_to_die<9\nactions.cds+=/lights_judgment,if=buff.trueshot.down\nactions.cds+=/bag_of_tricks,if=buff.trueshot.down\nactions.cds+=/reaping_flames,if=buff.trueshot.down&(target.health.pct>80||target.health.pct<=20||target.time_to_pct_20>30)\nactions.cds+=/worldvein_resonance,if=(cooldown.azsharas_font_of_power.remains>20||!equipped.azsharas_font_of_power||time_to_die20)&(cooldown.trueshot.remains_guess<3||(essence.vision_of_perfection.minor&time_to_die>cooldown+buff.worldvein_resonance.duration))||time_to_die<20\nactions.cds+=/guardian_of_azeroth,if=(ca_execute||target.time_to_die>cooldown+30)&(buff.trueshot.up||cooldown.trueshot.remains<16)||time_to_die<31\nactions.cds+=/ripple_in_space,if=cooldown.trueshot.remains<7\nactions.cds+=/memory_of_lucid_dreams,if=!buff.trueshot.up\nactions.cds+=/potion,if=buff.trueshot.react&buff.bloodlust.react||prev_gcd.1.trueshot&target.health.pct<20||((consumable.potion_of_unbridled_fury||consumable.unbridled_fury)&target.time_to_die<61||time_to_die<26)\nactions.cds+=/trueshot,if=buff.trueshot.down&cooldown.rapid_fire.remains||time_to_die<15\n\nactions.st=explosive_shot\nactions.st+=/barrage,if=active_enemies>1\nactions.st+=/a_murder_of_crows\nactions.st+=/serpent_sting,if=refreshable&!action.serpent_sting.in_flight\nactions.st+=/rapid_fire,if=buff.trueshot.down||focus<35||focus<60&!talent.lethal_shots.enabled||buff.in_the_rhythm.remains4||!azerite.unerring_vision.enabled)||target.time_to_die<11\nactions.st+=/blood_of_the_enemy,if=buff.trueshot.up&(buff.unerring_vision.stack>4||!azerite.unerring_vision.enabled)||time_to_die<11\nactions.st+=/focused_azerite_beam,if=!buff.trueshot.up||time_to_die<5\nactions.st+=/arcane_shot,if=buff.trueshot.up&buff.master_marksman.up&!buff.memory_of_lucid_dreams.up\nactions.st+=/aimed_shot,if=buff.trueshot.up||(buff.double_tap.down||ca_execute)&buff.precise_shots.down||full_recharge_time55||buff.master_marksman.up)||focus>75||time_to_die<5)\nactions.st+=/steady_shot\n\nactions.trickshots=barrage\nactions.trickshots+=/explosive_shot\nactions.trickshots+=/aimed_shot,if=buff.trick_shots.up&ca_execute&buff.double_tap.up\nactions.trickshots+=/rapid_fire,if=buff.trick_shots.up&(azerite.focused_fire.enabled||azerite.in_the_rhythm.rank>1||azerite.surging_shots.enabled||talent.streamline.enabled)\nactions.trickshots+=/aimed_shot,if=buff.trick_shots.up&(buff.precise_shots.down||cooldown.aimed_shot.full_recharge_time70\nactions.trickshots+=/focused_azerite_beam\nactions.trickshots+=/purifying_blast\nactions.trickshots+=/concentrated_flame\nactions.trickshots+=/blood_of_the_enemy\nactions.trickshots+=/the_unbound_force,if=buff.reckless_force.up||buff.reckless_force_counter.stack<10\nactions.trickshots+=/piercing_shot\nactions.trickshots+=/a_murder_of_crows\nactions.trickshots+=/serpent_sting,if=refreshable&!action.serpent_sting.in_flight\nactions.trickshots+=/steady_shot", }, ["Beast Mastery"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20200614, ["author"] = "SimC", ["desc"] = "# Beast Mastery Hunter\n# https://github.com/simulationcraft/simc/\n# June 14, 2020\n\n# Changes:\n# - Added Counter Shot to default action list.\n# - Use time_to_die (vs. target.time_to_die) to anticipate end of encounter.\n# - Add dispels/purges via utility action list.\n# - trinket.X.has_cooldown is unsupported.\n# - Check for crit_pct_current.", ["lists"] = { ["default"] = { { ["enabled"] = true, ["criteria"] = "debuff.casting.up || buff.dispellable_magic.up || buff.dispellable_enrage.up", ["action"] = "call_action_list", ["list_name"] = "utility", }, { ["enabled"] = true, ["criteria"] = "prev_gcd.1.aspect_of_the_wild || time_to_die < 20", ["action"] = "use_items", }, { ["enabled"] = true, ["criteria"] = "cooldown.aspect_of_the_wild.remains_guess < 15 & time_to_die > 10", ["name"] = "azsharas_font_of_power", ["action"] = "azsharas_font_of_power", }, { ["enabled"] = true, ["criteria"] = "debuff.razor_coral_debuff.up & ( ! equipped.azsharas_font_of_power || cooldown.azsharas_font_of_power.remains > 86 || essence.blood_of_the_enemy.major ) & ( prev_gcd.1.aspect_of_the_wild || ! equipped.cyclotronic_blast & buff.aspect_of_the_wild.remains > 9 ) & ( ! essence.condensed_lifeforce.major || buff.guardian_of_azeroth.up ) & ( target.health.pct < 35 || ! essence.condensed_lifeforce.major || ! talent.killer_instinct.enabled ) || ( debuff.razor_coral_debuff.down || time_to_die < 26 ) & time_to_die > ( 24 * ( cooldown.cyclotronic_blast.remains + 4 < time_to_die ) )", ["name"] = "ashvanes_razor_coral", ["action"] = "ashvanes_razor_coral", }, { ["enabled"] = true, ["criteria"] = "buff.aspect_of_the_wild.remains > 10 || cooldown.aspect_of_the_wild.remains > 45 || time_to_die < 11", ["name"] = "galecallers_boon", ["action"] = "galecallers_boon", }, { ["enabled"] = true, ["action"] = "cyclotronic_blast", ["criteria"] = "buff.bestial_wrath.down || time_to_die < 5", ["effect_name"] = "cyclotronic_blast", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cds", }, { ["enabled"] = true, ["criteria"] = "active_enemies < 2", ["action"] = "call_action_list", ["list_name"] = "st", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1", ["action"] = "call_action_list", ["list_name"] = "cleave", }, }, ["precombat"] = { { ["action"] = "summon_pet", ["enabled"] = true, }, { ["enabled"] = true, ["name"] = "azsharas_font_of_power", ["action"] = "azsharas_font_of_power", }, { ["action"] = "worldvein_resonance", ["enabled"] = true, }, { ["action"] = "guardian_of_azeroth", ["enabled"] = true, }, { ["action"] = "memory_of_lucid_dreams", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "cyclotronic_blast", ["criteria"] = "! raid_event.invulnerable.exists & ( equipped.variable_intensity_gigavolt_oscillating_reactor )", ["effect_name"] = "cyclotronic_blast", }, { ["enabled"] = true, ["action"] = "cyclotronic_blast", ["criteria"] = "! raid_event.invulnerable.exists & ( trinket.1.has_cooldown + trinket.2.has_cooldown < 2 || equipped.variable_intensity_gigavolt_oscillating_reactor )", ["effect_name"] = "cyclotronic_blast", }, { ["enabled"] = true, ["criteria"] = "! raid_event.invulnerable.exists", ["action"] = "focused_azerite_beam", }, { ["enabled"] = true, ["precast_time"] = "1.3", ["action"] = "aspect_of_the_wild", ["criteria"] = "! azerite.primal_instincts.enabled & ! essence.essence_of_the_focusing_iris.major & ( equipped.azsharas_font_of_power || ! equipped.cyclotronic_blast )", }, { ["enabled"] = true, ["precast_time"] = "1.5", ["action"] = "bestial_wrath", ["criteria"] = "azerite.primal_instincts.enabled & ! essence.essence_of_the_focusing_iris.major & ( equipped.azsharas_font_of_power || ! equipped.cyclotronic_blast )", }, { ["action"] = "potion", ["enabled"] = true, }, }, ["cleave"] = { { ["enabled"] = true, ["action"] = "barbed_shot", ["criteria"] = "buff.frenzy.up & buff.frenzy.remains <= gcd.max + barbed_shot_grace_period", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "gcd.max - buff.beast_cleave.remains > 0.25", ["action"] = "multishot", }, { ["enabled"] = true, ["action"] = "barbed_shot", ["criteria"] = "full_recharge_time < gcd.max & cooldown.bestial_wrath.remains", ["cycle_targets"] = 1, }, { ["action"] = "aspect_of_the_wild", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.aspect_of_the_wild.up & buff.bestial_wrath.up || time_to_die < 15", ["action"] = "stampede", }, { ["enabled"] = true, ["criteria"] = "cooldown.aspect_of_the_wild.remains_guess > 20 || talent.one_with_the_pack.enabled || time_to_die < 15", ["action"] = "bestial_wrath", }, { ["action"] = "chimaera_shot", ["enabled"] = true, }, { ["action"] = "a_murder_of_crows", ["enabled"] = true, }, { ["action"] = "barrage", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "active_enemies < 4 || ! azerite.rapid_reload.enabled", ["action"] = "kill_command", }, { ["action"] = "dire_beast", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "barbed_shot", ["criteria"] = "buff.frenzy.down & ( charges_fractional > 1.8 || buff.bestial_wrath.up ) || cooldown.aspect_of_the_wild.remains < buff.frenzy.duration - gcd & azerite.primal_instincts.enabled || charges_fractional > 1.4 || time_to_die < 9", ["cycle_targets"] = 1, }, { ["action"] = "focused_azerite_beam", ["enabled"] = true, }, { ["action"] = "purifying_blast", ["enabled"] = true, }, { ["action"] = "concentrated_flame", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.reckless_force.up || buff.reckless_force_counter.stack < 10", ["action"] = "the_unbound_force", }, { ["enabled"] = true, ["criteria"] = "azerite.rapid_reload.enabled & active_enemies > 2", ["action"] = "multishot", }, { ["enabled"] = true, ["criteria"] = "cooldown.kill_command.remains > focus.time_to_max & ( active_enemies < 3 || ! azerite.rapid_reload.enabled )", ["action"] = "cobra_shot", }, { ["action"] = "spitting_cobra", ["enabled"] = true, }, }, ["cds"] = { { ["enabled"] = true, ["criteria"] = "cooldown.bestial_wrath.remains > 30", ["action"] = "ancestral_call", }, { ["enabled"] = true, ["criteria"] = "cooldown.bestial_wrath.remains > 30", ["action"] = "fireblood", }, { ["enabled"] = true, ["criteria"] = "focus < focus.max & ( raid_event.adds.remains > 90 || ! raid_event.adds.exists || active_enemies > 1 )", ["action"] = "blood_of_the_enemy", }, { ["enabled"] = true, ["criteria"] = "buff.aspect_of_the_wild.up & ( time_to_die > cooldown.berserking.duration + duration || ( target.health.pct < 35 || ! talent.killer_instinct.enabled ) ) || time_to_die < 13", ["action"] = "berserking", }, { ["enabled"] = true, ["criteria"] = "buff.aspect_of_the_wild.up & ( time_to_die > cooldown.blood_fury.duration + duration || ( target.health.pct < 35 || ! talent.killer_instinct.enabled ) ) || time_to_die < 16", ["action"] = "blood_fury", }, { ["enabled"] = true, ["criteria"] = "buff.frenzy.up & buff.frenzy.remains > gcd.max || ! buff.frenzy.up", ["action"] = "lights_judgment", }, { ["enabled"] = true, ["criteria"] = "buff.bestial_wrath.up & buff.aspect_of_the_wild.up & target.health.pct < 35 || ( ( consumable.potion_of_unbridled_fury || consumable.unbridled_fury ) & time_to_die < 61 || time_to_die < 26 )", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "( prev_gcd.1.aspect_of_the_wild || cooldown.aspect_of_the_wild.remains < gcd || target.time_to_die < 20 ) || ! essence.vision_of_perfection.minor", ["action"] = "worldvein_resonance", }, { ["enabled"] = true, ["criteria"] = "cooldown.aspect_of_the_wild.remains < 10 || time_to_die > action.guardian_of_azeroth.cooldown + 30 || time_to_die < 30", ["action"] = "guardian_of_azeroth", }, { ["action"] = "ripple_in_space", ["enabled"] = true, }, { ["action"] = "memory_of_lucid_dreams", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "target.health.pct > 80 || target.health.pct <= 20 || target.time_to_pct_20 > 30", ["action"] = "reaping_flames", }, }, ["st"] = { { ["enabled"] = true, ["criteria"] = "buff.frenzy.up & buff.frenzy.remains < gcd + barbed_shot_grace_period || cooldown.bestial_wrath.remains & ( full_recharge_time < gcd || azerite.primal_instincts.enabled & cooldown.aspect_of_the_wild.remains < gcd )", ["action"] = "barbed_shot", }, { ["enabled"] = true, ["criteria"] = "focus + focus.regen * gcd < focus.max & buff.bestial_wrath.down & ( ! dot.concentrated_flame_burn.remains & ! action.concentrated_flame.in_flight ) || full_recharge_time < gcd || time_to_die < 5", ["action"] = "concentrated_flame", }, { ["enabled"] = true, ["criteria"] = "buff.aspect_of_the_wild.down & ( cooldown.barbed_shot.charges < 1 || ! azerite.primal_instincts.enabled )", ["action"] = "aspect_of_the_wild", }, { ["enabled"] = true, ["criteria"] = "buff.aspect_of_the_wild.up & buff.bestial_wrath.up || time_to_die < 15", ["action"] = "stampede", }, { ["action"] = "a_murder_of_crows", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.bestial_wrath.down || time_to_die < 5", ["action"] = "focused_azerite_beam", }, { ["enabled"] = true, ["criteria"] = "buff.reckless_force.up || buff.reckless_force_counter.stack < 10 || time_to_die < 5", ["action"] = "the_unbound_force", }, { ["enabled"] = true, ["criteria"] = "talent.one_with_the_pack.enabled & buff.bestial_wrath.remains < gcd || buff.bestial_wrath.down & cooldown.aspect_of_the_wild.remains > 15 || time_to_die < 15 + gcd", ["action"] = "bestial_wrath", }, { ["enabled"] = true, ["criteria"] = "azerite.dance_of_death.rank > 1 & buff.dance_of_death.remains < gcd", ["action"] = "barbed_shot", }, { ["action"] = "kill_command", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5", ["action"] = "bag_of_tricks", }, { ["action"] = "chimaera_shot", ["enabled"] = true, }, { ["action"] = "dire_beast", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.one_with_the_pack.enabled & charges_fractional > 1.5 || charges_fractional > 1.8 || cooldown.aspect_of_the_wild.remains < buff.frenzy.duration - gcd & azerite.primal_instincts.enabled || time_to_die < 9", ["action"] = "barbed_shot", }, { ["enabled"] = true, ["criteria"] = "buff.bestial_wrath.down || time_to_die < 8", ["action"] = "purifying_blast", }, { ["action"] = "blood_of_the_enemy", ["enabled"] = true, }, { ["action"] = "barrage", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( focus - cost + focus.regen * ( cooldown.kill_command.remains - 1 ) > action.kill_command.cost || cooldown.kill_command.remains > 1 + gcd & cooldown.bestial_wrath.remains_guess > focus.time_to_max || buff.memory_of_lucid_dreams.up ) & cooldown.kill_command.remains > 1 || time_to_die < 3", ["action"] = "cobra_shot", }, { ["action"] = "spitting_cobra", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.frenzy.duration - gcd > full_recharge_time", ["action"] = "barbed_shot", }, }, ["utility"] = { { ["action"] = "counter_shot", ["enabled"] = true, }, { ["action"] = "serenity_dust", ["enabled"] = true, }, { ["action"] = "spore_cloud", ["enabled"] = true, }, { ["action"] = "soothing_water", ["enabled"] = true, }, { ["action"] = "sonic_blast", ["enabled"] = true, }, { ["action"] = "nether_shock", ["enabled"] = true, }, { ["action"] = "chijis_tranquility", ["enabled"] = true, }, { ["action"] = "spirit_shock", ["enabled"] = true, }, { ["action"] = "natures_grace", ["enabled"] = true, }, }, }, ["version"] = 20200614, ["warnings"] = "WARNING: The import for 'default' required some automated changes.\nLine 4: Converted 'trinket.X.cooldown' to 'cooldown.X' (1x).\n\nWARNING: The import for 'cleave' required some automated changes.\nLine 1: Converted 'pet.X.Y...' to 'Y...' (2x).\nLine 2: Converted 'pet.X.Y...' to 'Y...' (1x).\nLine 12: Converted 'pet.X.Y...' to 'Y...' (2x).\n\nWARNING: The import for 'cds' required some automated changes.\nLine 6: Converted 'pet.X.Y...' to 'Y...' (3x).\n\nWARNING: The import for 'st' required some automated changes.\nLine 1: Converted 'pet.X.Y...' to 'Y...' (2x).\nLine 14: Converted 'pet.X.Y...' to 'Y...' (1x).\nLine 20: Converted 'pet.X.Y...' to 'Y...' (1x).\n\nImported 6 action lists.\n", ["profile"] = "# Beast Mastery Hunter\n# https://github.com/simulationcraft/simc/\n# June 14, 2020\n\n# Changes:\n# - Added Counter Shot to default action list.\n# - Use time_to_die (vs. target.time_to_die) to anticipate end of encounter.\n# - Add dispels/purges via utility action list.\n# - trinket.X.has_cooldown is unsupported.\n# - Check for crit_pct_current.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/augmentation\n# actions.precombat+=/food\nactions.precombat+=/summon_pet\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/worldvein_resonance\nactions.precombat+=/guardian_of_azeroth\nactions.precombat+=/memory_of_lucid_dreams\nactions.precombat+=/use_item,effect_name=cyclotronic_blast,if=!raid_event.invulnerable.exists&(equipped.variable_intensity_gigavolt_oscillating_reactor)\nactions.precombat+=/use_item,effect_name=cyclotronic_blast,if=!raid_event.invulnerable.exists&(trinket.1.has_cooldown+trinket.2.has_cooldown<2||equipped.variable_intensity_gigavolt_oscillating_reactor)\nactions.precombat+=/focused_azerite_beam,if=!raid_event.invulnerable.exists\n# Adjusts the duration and cooldown of Aspect of the Wild and Primal Instincts by the duration of an unhasted GCD when they're used precombat. Because Aspect of the Wild reduces GCD by 200ms, this is 1.3 seconds. \nactions.precombat+=/aspect_of_the_wild,precast_time=1.3,if=!azerite.primal_instincts.enabled&!essence.essence_of_the_focusing_iris.major&(equipped.azsharas_font_of_power||!equipped.cyclotronic_blast)\n# Adjusts the duration and cooldown of Bestial Wrath and Haze of Rage by the duration of an unhasted GCD when they're used precombat.\nactions.precombat+=/bestial_wrath,precast_time=1.5,if=azerite.primal_instincts.enabled&!essence.essence_of_the_focusing_iris.major&(equipped.azsharas_font_of_power||!equipped.cyclotronic_blast)\nactions.precombat+=/potion\n\nactions.utility=counter_shot\nactions.utility+=/serenity_dust\nactions.utility+=/spore_cloud\nactions.utility+=/soothing_water\nactions.utility+=/sonic_blast\nactions.utility+=/nether_shock\nactions.utility+=/chijis_tranquility\nactions.utility+=/spirit_shock\nactions.utility+=/natures_grace\n\n# Executed every time the actor is available.\nactions=call_action_list,name=utility,if=debuff.casting.up||buff.dispellable_magic.up||buff.dispellable_enrage.up\nactions+=/use_items,if=prev_gcd.1.aspect_of_the_wild||time_to_die<20\nactions+=/use_item,name=azsharas_font_of_power,if=cooldown.aspect_of_the_wild.remains_guess<15&time_to_die>10\nactions+=/use_item,name=ashvanes_razor_coral,if=debuff.razor_coral_debuff.up&(!equipped.azsharas_font_of_power||trinket.azsharas_font_of_power.cooldown.remains>86||essence.blood_of_the_enemy.major)&(prev_gcd.1.aspect_of_the_wild||!equipped.cyclotronic_blast&buff.aspect_of_the_wild.remains>9)&(!essence.condensed_lifeforce.major||buff.guardian_of_azeroth.up)&(target.health.pct<35||!essence.condensed_lifeforce.major||!talent.killer_instinct.enabled)||(debuff.razor_coral_debuff.down||time_to_die<26)&time_to_die>(24*(cooldown.cyclotronic_blast.remains+410||cooldown.aspect_of_the_wild.remains>45||time_to_die<11\nactions+=/use_item,effect_name=cyclotronic_blast,if=buff.bestial_wrath.down||time_to_die<5\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=st,if=active_enemies<2\nactions+=/call_action_list,name=cleave,if=active_enemies>1\n\nactions.cds=ancestral_call,if=cooldown.bestial_wrath.remains>30\nactions.cds+=/fireblood,if=cooldown.bestial_wrath.remains>30\nactions.cds+=/blood_of_the_enemy,if=focus90||!raid_event.adds.exists||active_enemies>1)\nactions.cds+=/berserking,if=buff.aspect_of_the_wild.up&(time_to_die>cooldown.berserking.duration+duration||(target.health.pct<35||!talent.killer_instinct.enabled))||time_to_die<13\nactions.cds+=/blood_fury,if=buff.aspect_of_the_wild.up&(time_to_die>cooldown.blood_fury.duration+duration||(target.health.pct<35||!talent.killer_instinct.enabled))||time_to_die<16\nactions.cds+=/lights_judgment,if=pet.cat.buff.frenzy.up&pet.cat.buff.frenzy.remains>gcd.max||!pet.cat.buff.frenzy.up\nactions.cds+=/potion,if=buff.bestial_wrath.up&buff.aspect_of_the_wild.up&target.health.pct<35||((consumable.potion_of_unbridled_fury||consumable.unbridled_fury)&time_to_die<61||time_to_die<26)\nactions.cds+=/worldvein_resonance,if=(prev_gcd.1.aspect_of_the_wild||cooldown.aspect_of_the_wild.remainsaction.guardian_of_azeroth.cooldown+30||time_to_die<30\nactions.cds+=/ripple_in_space\nactions.cds+=/memory_of_lucid_dreams\n# actions.cds+=/bag_of_tricks\nactions.cds+=/reaping_flames,if=target.health.pct>80||target.health.pct<=20||target.time_to_pct_20>30\n\nactions.cleave=barbed_shot,cycle_targets=1,if=pet.cat.buff.frenzy.up&pet.cat.buff.frenzy.remains<=gcd.max+barbed_shot_grace_period\nactions.cleave+=/multishot,if=gcd.max-pet.cat.buff.beast_cleave.remains>0.25\nactions.cleave+=/barbed_shot,cycle_targets=1,if=full_recharge_time20||talent.one_with_the_pack.enabled||time_to_die<15\nactions.cleave+=/chimaera_shot\nactions.cleave+=/a_murder_of_crows\nactions.cleave+=/barrage\nactions.cleave+=/kill_command,if=active_enemies<4||!azerite.rapid_reload.enabled\nactions.cleave+=/dire_beast\nactions.cleave+=/barbed_shot,cycle_targets=1,if=pet.cat.buff.frenzy.down&(charges_fractional>1.8||buff.bestial_wrath.up)||cooldown.aspect_of_the_wild.remains1.4||time_to_die<9\nactions.cleave+=/focused_azerite_beam\nactions.cleave+=/purifying_blast\nactions.cleave+=/concentrated_flame\nactions.cleave+=/the_unbound_force,if=buff.reckless_force.up||buff.reckless_force_counter.stack<10\nactions.cleave+=/multishot,if=azerite.rapid_reload.enabled&active_enemies>2\nactions.cleave+=/cobra_shot,if=cooldown.kill_command.remains>focus.time_to_max&(active_enemies<3||!azerite.rapid_reload.enabled)\nactions.cleave+=/spitting_cobra\n\nactions.st=barbed_shot,if=pet.cat.buff.frenzy.up&pet.cat.buff.frenzy.remains15||time_to_die<15+gcd\nactions.st+=/barbed_shot,if=azerite.dance_of_death.rank>1&buff.dance_of_death.remains1.5||charges_fractional>1.8||cooldown.aspect_of_the_wild.remainsaction.kill_command.cost||cooldown.kill_command.remains>1+gcd&cooldown.bestial_wrath.remains_guess>focus.time_to_max||buff.memory_of_lucid_dreams.up)&cooldown.kill_command.remains>1||time_to_die<3\nactions.st+=/spitting_cobra\nactions.st+=/barbed_shot,if=pet.cat.buff.frenzy.duration-gcd>full_recharge_time", ["spec"] = 253, }, ["Survival"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20200525, ["author"] = "SimulationCraft", ["desc"] = "# Survival Hunter\n# https://github.com/simulationcraft/simc/\n# May 25, 2020\n\n# Changes:\n# - Added Muzzle to default action list.\n# - Changed target_if expressions to cycle_targets.\n# - Modified carve_cdr to work more easily with the addon's implementation of variable.\n# - Added utility APL.", ["lists"] = { ["apst"] = { { ["enabled"] = true, ["criteria"] = "buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd )", ["action"] = "mongoose_bite", }, { ["enabled"] = true, ["criteria"] = "buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd )", ["action"] = "raptor_strike", }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max", ["action"] = "flanking_strike", }, { ["enabled"] = true, ["action"] = "kill_command", ["criteria"] = "full_recharge_time < 1.5 * gcd & focus + cast_regen < focus.max", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max", ["action"] = "steel_trap", }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max & ! ticking & ! buff.memory_of_lucid_dreams.up & ( full_recharge_time < 1.5 * gcd || ! dot.wildfire_bomb.ticking & ! buff.coordinated_assault.up || ! dot.wildfire_bomb.ticking & buff.mongoose_fury.stack < 1 ) || time_to_die < 18 & ! dot.wildfire_bomb.ticking", ["action"] = "wildfire_bomb", }, { ["enabled"] = true, ["criteria"] = "! dot.serpent_sting.ticking & ! buff.coordinated_assault.up", ["action"] = "serpent_sting", }, { ["enabled"] = true, ["action"] = "kill_command", ["criteria"] = "focus + cast_regen < focus.max & ( buff.mongoose_fury.stack < 5 || focus < action.mongoose_bite.cost )", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "refreshable & ! buff.coordinated_assault.up & buff.mongoose_fury.stack < 5", ["action"] = "serpent_sting", }, { ["enabled"] = true, ["criteria"] = "! buff.coordinated_assault.up", ["action"] = "a_murder_of_crows", }, { ["enabled"] = true, ["criteria"] = "! buff.coordinated_assault.up", ["action"] = "coordinated_assault", }, { ["enabled"] = true, ["criteria"] = "buff.mongoose_fury.up || focus + cast_regen > focus.max - 10 || buff.coordinated_assault.up", ["action"] = "mongoose_bite", }, { ["action"] = "raptor_strike", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! ticking", ["action"] = "wildfire_bomb", }, }, ["cleave"] = { { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "carve_cdr", ["criteria"] = "active_enemies < 5", ["value_else"] = "5", ["value"] = "active_enemies", }, { ["enabled"] = true, ["criteria"] = "azerite.blur_of_talons.rank > 0 & ( buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd || buff.coordinated_assault.remains & ! buff.blur_of_talons.remains ) )", ["action"] = "mongoose_bite", }, { ["enabled"] = true, ["action"] = "mongoose_bite", ["criteria"] = "debuff.latent_poison.stack > ( active_enemies || 9 ) & target.time_to_die < active_enemies * gcd", ["target_if"] = "", }, { ["action"] = "a_murder_of_crows", ["enabled"] = true, }, { ["action"] = "coordinated_assault", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "dot.shrapnel_bomb.ticking & ! talent.hydras_bite.enabled || dot.shrapnel_bomb.ticking & active_enemies > 5", ["action"] = "carve", }, { ["enabled"] = true, ["criteria"] = "! talent.guerrilla_tactics.enabled || full_recharge_time < gcd || raid_event.adds.remains < 6 & raid_event.adds.exists", ["action"] = "wildfire_bomb", }, { ["enabled"] = true, ["criteria"] = "charges_fractional > 2.5 || dot.shrapnel_bomb.ticking || cooldown.wildfire_bomb.remains > active_enemies - gcd || debuff.blood_of_the_enemy.remains || raid_event.adds.remains < 5 & raid_event.adds.exists", ["action"] = "butchery", }, { ["enabled"] = true, ["action"] = "mongoose_bite", ["criteria"] = "debuff.latent_poison.stack > 8", ["target_if"] = "", }, { ["action"] = "chakrams", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "kill_command", ["criteria"] = "focus + cast_regen < focus.max", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "talent.terms_of_engagement.enabled", ["action"] = "harpoon", }, { ["enabled"] = true, ["criteria"] = "talent.guerrilla_tactics.enabled", ["action"] = "carve", }, { ["enabled"] = true, ["criteria"] = "cooldown.wildfire_bomb.remains > ( active_enemies || 5 )", ["action"] = "butchery", }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max", ["action"] = "flanking_strike", }, { ["enabled"] = true, ["criteria"] = "dot.wildfire_bomb.refreshable || talent.wildfire_infusion.enabled", ["action"] = "wildfire_bomb", }, { ["enabled"] = true, ["action"] = "serpent_sting", ["criteria"] = "buff.vipers_venom.react", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "cooldown.wildfire_bomb.remains > variable.carve_cdr % 2", ["action"] = "carve", }, { ["action"] = "steel_trap", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "serpent_sting", ["criteria"] = "refreshable & buff.tip_of_the_spear.stack < 3 & next_wi_bomb.volatile || refreshable & azerite.latent_poison.rank > 0", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "mongoose_bite", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "raptor_strike", ["cycle_targets"] = 1, }, }, ["st"] = { { ["enabled"] = true, ["criteria"] = "talent.terms_of_engagement.enabled", ["action"] = "harpoon", }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max", ["action"] = "flanking_strike", }, { ["enabled"] = true, ["criteria"] = "buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd )", ["action"] = "raptor_strike", }, { ["enabled"] = true, ["criteria"] = "buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd )", ["action"] = "mongoose_bite", }, { ["enabled"] = true, ["action"] = "kill_command", ["criteria"] = "focus + cast_regen < focus.max", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.vipers_venom.up & buff.vipers_venom.remains < 1 * gcd", ["action"] = "serpent_sting", }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max", ["action"] = "steel_trap", }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max & refreshable & full_recharge_time < gcd & ! buff.memory_of_lucid_dreams.up || focus + cast_regen < focus.max & ( ! dot.wildfire_bomb.ticking & ( ! buff.coordinated_assault.up || buff.mongoose_fury.stack < 1 || time_to_die < 18 || ! dot.wildfire_bomb.ticking & azerite.wilderness_survival.rank > 0 ) ) & ! buff.memory_of_lucid_dreams.up", ["action"] = "wildfire_bomb", }, { ["enabled"] = true, ["criteria"] = "buff.vipers_venom.up & dot.serpent_sting.remains < 4 * gcd || dot.serpent_sting.refreshable & ! buff.coordinated_assault.up", ["action"] = "serpent_sting", }, { ["enabled"] = true, ["criteria"] = "! buff.coordinated_assault.up", ["action"] = "a_murder_of_crows", }, { ["enabled"] = true, ["criteria"] = "! buff.coordinated_assault.up", ["action"] = "coordinated_assault", }, { ["enabled"] = true, ["criteria"] = "buff.mongoose_fury.up || focus + cast_regen > focus.max - 20 & talent.vipers_venom.enabled || focus + cast_regen > focus.max - 1 & talent.terms_of_engagement.enabled || buff.coordinated_assault.up", ["action"] = "mongoose_bite", }, { ["action"] = "raptor_strike", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "dot.wildfire_bomb.refreshable", ["action"] = "wildfire_bomb", }, { ["enabled"] = true, ["criteria"] = "buff.vipers_venom.up", ["action"] = "serpent_sting", }, }, ["wfi"] = { { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max & talent.terms_of_engagement.enabled", ["action"] = "harpoon", }, { ["enabled"] = true, ["criteria"] = "buff.blur_of_talons.up & buff.blur_of_talons.remains < gcd", ["action"] = "mongoose_bite", }, { ["enabled"] = true, ["criteria"] = "buff.blur_of_talons.up & buff.blur_of_talons.remains < gcd", ["action"] = "raptor_strike", }, { ["enabled"] = true, ["criteria"] = "buff.vipers_venom.up & buff.vipers_venom.remains < 1.5 * gcd || ! dot.serpent_sting.ticking", ["action"] = "serpent_sting", }, { ["enabled"] = true, ["criteria"] = "full_recharge_time < 1.5 * gcd & focus + cast_regen < focus.max || ( next_wi_bomb.volatile & dot.serpent_sting.ticking & dot.serpent_sting.refreshable || next_wi_bomb.pheromone & ! buff.mongoose_fury.up & focus + cast_regen < focus.max - action.kill_command.cast_regen * 3 )", ["action"] = "wildfire_bomb", }, { ["enabled"] = true, ["action"] = "kill_command", ["criteria"] = "focus + cast_regen < focus.max - focus.regen", ["cycle_targets"] = 1, }, { ["action"] = "a_murder_of_crows", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max", ["action"] = "steel_trap", }, { ["enabled"] = true, ["criteria"] = "full_recharge_time < 1.5 * gcd", ["action"] = "wildfire_bomb", }, { ["action"] = "coordinated_assault", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.vipers_venom.up & dot.serpent_sting.remains < 4 * gcd", ["action"] = "serpent_sting", }, { ["enabled"] = true, ["criteria"] = "dot.shrapnel_bomb.ticking || buff.mongoose_fury.stack = 5", ["action"] = "mongoose_bite", }, { ["enabled"] = true, ["criteria"] = "next_wi_bomb.shrapnel & dot.serpent_sting.remains > 5 * gcd", ["action"] = "wildfire_bomb", }, { ["enabled"] = true, ["criteria"] = "refreshable", ["action"] = "serpent_sting", }, { ["enabled"] = true, ["criteria"] = "! buff.mongoose_fury.remains", ["action"] = "chakrams", }, { ["action"] = "mongoose_bite", ["enabled"] = true, }, { ["action"] = "raptor_strike", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.vipers_venom.up", ["action"] = "serpent_sting", }, { ["enabled"] = true, ["criteria"] = "next_wi_bomb.volatile & dot.serpent_sting.ticking || next_wi_bomb.pheromone || next_wi_bomb.shrapnel", ["action"] = "wildfire_bomb", }, }, ["default"] = { { ["enabled"] = true, ["criteria"] = "debuff.casting.up || buff.dispellable_magic.up || buff.dispellable_enrage.up", ["action"] = "call_action_list", ["list_name"] = "utility", }, { ["action"] = "use_items", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cds", }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1 & target.time_to_die < focus % ( action.mongoose_bite.cost - cast_regen ) * gcd", ["action"] = "mongoose_bite", }, { ["enabled"] = true, ["criteria"] = "active_enemies < 3 & talent.chakrams.enabled & talent.alpha_predator.enabled", ["action"] = "call_action_list", ["list_name"] = "apwfi", }, { ["enabled"] = true, ["criteria"] = "active_enemies < 3 & talent.chakrams.enabled", ["action"] = "call_action_list", ["list_name"] = "wfi", }, { ["enabled"] = true, ["criteria"] = "active_enemies < 3 & ! talent.alpha_predator.enabled & ! talent.wildfire_infusion.enabled", ["action"] = "call_action_list", ["list_name"] = "st", }, { ["enabled"] = true, ["criteria"] = "active_enemies < 3 & talent.alpha_predator.enabled & ! talent.wildfire_infusion.enabled", ["action"] = "call_action_list", ["list_name"] = "apst", }, { ["enabled"] = true, ["criteria"] = "active_enemies < 3 & talent.alpha_predator.enabled & talent.wildfire_infusion.enabled", ["action"] = "call_action_list", ["list_name"] = "apwfi", }, { ["enabled"] = true, ["criteria"] = "active_enemies < 3 & ! talent.alpha_predator.enabled & talent.wildfire_infusion.enabled", ["action"] = "call_action_list", ["list_name"] = "wfi", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1 & ! talent.birds_of_prey.enabled || active_enemies > 2", ["action"] = "call_action_list", ["list_name"] = "cleave", }, { ["action"] = "concentrated_flame", ["enabled"] = true, }, { ["action"] = "arcane_torrent", ["enabled"] = true, }, { ["action"] = "bag_of_tricks", ["enabled"] = true, }, }, ["precombat"] = { { ["action"] = "summon_pet", ["enabled"] = true, }, { ["enabled"] = true, ["name"] = "azsharas_font_of_power", ["action"] = "azsharas_font_of_power", }, { ["enabled"] = true, ["action"] = "cyclotronic_blast", ["criteria"] = "! raid_event.invulnerable.exists", ["effect_name"] = "cyclotronic_blast", }, { ["action"] = "guardian_of_azeroth", ["enabled"] = true, }, { ["action"] = "coordinated_assault", ["enabled"] = true, }, { ["action"] = "worldvein_resonance", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "potion", ["dynamic_prepot"] = "1", }, { ["action"] = "steel_trap", ["enabled"] = true, }, { ["action"] = "harpoon", ["enabled"] = true, }, }, ["cds"] = { { ["enabled"] = true, ["criteria"] = "cooldown.coordinated_assault.remains > 30", ["action"] = "blood_fury", }, { ["enabled"] = true, ["criteria"] = "cooldown.coordinated_assault.remains > 30", ["action"] = "ancestral_call", }, { ["enabled"] = true, ["criteria"] = "cooldown.coordinated_assault.remains > 30", ["action"] = "fireblood", }, { ["action"] = "lights_judgment", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "cooldown.coordinated_assault.remains > 60 || time_to_die < 13", ["action"] = "berserking", }, { ["enabled"] = true, ["criteria"] = "buff.guardian_of_azeroth.up & ( buff.berserking.up || buff.blood_fury.up || ! race.troll ) || ( consumable.potion_of_unbridled_fury & time_to_die < 61 || time_to_die < 26 ) || ! essence.condensed_lifeforce.major & buff.coordinated_assault.up", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "target.distance >= 6", ["action"] = "aspect_of_the_eagle", }, { ["enabled"] = true, ["criteria"] = "buff.memory_of_lucid_dreams.up & target.time_to_die < cooldown.memory_of_lucid_dreams.remains + 15 || buff.guardian_of_azeroth.stack = 5 & target.time_to_die < cooldown.guardian_of_azeroth.remains + 20 || debuff.razor_coral_debuff.down || target.time_to_die < 21 || buff.worldvein_resonance.remains & target.time_to_die < cooldown.worldvein_resonance.remains + 18 || ! talent.birds_of_prey.enabled & target.time_to_die < cooldown.coordinated_assault.remains + 20 & buff.coordinated_assault.remains", ["name"] = "ashvanes_razor_coral", ["action"] = "ashvanes_razor_coral", }, { ["enabled"] = true, ["criteria"] = "cooldown.memory_of_lucid_dreams.remains || talent.wildfire_infusion.enabled & cooldown.coordinated_assault.remains || ! essence.memory_of_lucid_dreams.major & cooldown.coordinated_assault.remains", ["name"] = "galecallers_boon", ["action"] = "galecallers_boon", }, { ["enabled"] = true, ["name"] = "azsharas_font_of_power", ["action"] = "azsharas_font_of_power", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 90 & focus < focus.max - 25 || ( active_enemies > 1 & ! talent.birds_of_prey.enabled || active_enemies > 2 ) & ( buff.blur_of_talons.up & buff.blur_of_talons.remains > 3 * gcd || ! buff.blur_of_talons.up )", ["action"] = "focused_azerite_beam", }, { ["enabled"] = true, ["criteria"] = "( ( raid_event.adds.remains > 90 || ! raid_event.adds.exists ) || ( active_enemies > 1 & ! talent.birds_of_prey.enabled || active_enemies > 2 ) ) & focus < focus.max", ["action"] = "blood_of_the_enemy", }, { ["enabled"] = true, ["criteria"] = "( ( raid_event.adds.remains > 60 || ! raid_event.adds.exists ) || ( active_enemies > 1 & ! talent.birds_of_prey.enabled || active_enemies > 2 ) ) & focus < focus.max", ["action"] = "purifying_blast", }, { ["action"] = "guardian_of_azeroth", ["enabled"] = true, }, { ["action"] = "ripple_in_space", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "full_recharge_time < 1 * gcd", ["action"] = "concentrated_flame", }, { ["enabled"] = true, ["criteria"] = "buff.reckless_force.up", ["action"] = "the_unbound_force", }, { ["action"] = "worldvein_resonance", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "target.health.pct > 80 || target.health.pct <= 20 || target.time_to_pct_20 > 30", ["action"] = "reaping_flames", }, { ["enabled"] = true, ["criteria"] = "essence.memory_of_lucid_dreams.major & refreshable & buff.vipers_venom.up & ! cooldown.memory_of_lucid_dreams.remains", ["action"] = "serpent_sting", }, { ["enabled"] = true, ["criteria"] = "essence.memory_of_lucid_dreams.major & ! cooldown.memory_of_lucid_dreams.remains", ["action"] = "mongoose_bite", }, { ["enabled"] = true, ["criteria"] = "essence.memory_of_lucid_dreams.major & full_recharge_time < 1.5 * gcd & focus < action.mongoose_bite.cost & ! cooldown.memory_of_lucid_dreams.remains", ["action"] = "wildfire_bomb", }, { ["enabled"] = true, ["criteria"] = "focus < action.mongoose_bite.cost & buff.coordinated_assault.up", ["action"] = "memory_of_lucid_dreams", }, }, ["apwfi"] = { { ["enabled"] = true, ["criteria"] = "buff.blur_of_talons.up & buff.blur_of_talons.remains < gcd", ["action"] = "mongoose_bite", }, { ["enabled"] = true, ["criteria"] = "buff.blur_of_talons.up & buff.blur_of_talons.remains < gcd", ["action"] = "raptor_strike", }, { ["enabled"] = true, ["criteria"] = "! dot.serpent_sting.ticking", ["action"] = "serpent_sting", }, { ["action"] = "a_murder_of_crows", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "full_recharge_time < 1.5 * gcd || focus + cast_regen < focus.max & ( next_wi_bomb.volatile & dot.serpent_sting.ticking & dot.serpent_sting.refreshable || next_wi_bomb.pheromone & ! buff.mongoose_fury.up & focus + cast_regen < focus.max - action.kill_command.cast_regen * 3 )", ["action"] = "wildfire_bomb", }, { ["action"] = "coordinated_assault", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.mongoose_fury.remains & next_wi_bomb.pheromone", ["action"] = "mongoose_bite", }, { ["enabled"] = true, ["action"] = "kill_command", ["criteria"] = "full_recharge_time < 1.5 * gcd & focus + cast_regen < focus.max - 20", ["target_if"] = "", }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max", ["action"] = "steel_trap", }, { ["enabled"] = true, ["criteria"] = "buff.tip_of_the_spear.stack = 3 || dot.shrapnel_bomb.ticking", ["action"] = "raptor_strike", }, { ["enabled"] = true, ["criteria"] = "dot.shrapnel_bomb.ticking", ["action"] = "mongoose_bite", }, { ["enabled"] = true, ["criteria"] = "next_wi_bomb.shrapnel & focus > 30 & dot.serpent_sting.remains > 5 * gcd", ["action"] = "wildfire_bomb", }, { ["enabled"] = true, ["criteria"] = "! buff.mongoose_fury.remains", ["action"] = "chakrams", }, { ["enabled"] = true, ["criteria"] = "refreshable", ["action"] = "serpent_sting", }, { ["enabled"] = true, ["action"] = "kill_command", ["criteria"] = "focus + cast_regen < focus.max & ( buff.mongoose_fury.stack < 5 || focus < action.mongoose_bite.cost )", ["target_if"] = "", }, { ["action"] = "raptor_strike", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.mongoose_fury.up || focus > 40 || dot.shrapnel_bomb.ticking", ["action"] = "mongoose_bite", }, { ["enabled"] = true, ["criteria"] = "next_wi_bomb.volatile & dot.serpent_sting.ticking || next_wi_bomb.pheromone || next_wi_bomb.shrapnel & focus > 50", ["action"] = "wildfire_bomb", }, }, ["utility"] = { { ["action"] = "muzzle", ["enabled"] = true, }, { ["action"] = "serenity_dust", ["enabled"] = true, }, { ["action"] = "spore_cloud", ["enabled"] = true, }, { ["action"] = "soothing_water", ["enabled"] = true, }, { ["action"] = "sonic_blast", ["enabled"] = true, }, { ["action"] = "nether_shock", ["enabled"] = true, }, { ["action"] = "chijis_tranquility", ["enabled"] = true, }, { ["action"] = "spirit_shock", ["enabled"] = true, }, { ["action"] = "natures_grace", ["enabled"] = true, }, }, }, ["version"] = 20200525, ["warnings"] = "WARNING: The import for 'cleave' required some automated changes.\nLine 3: Removed min:X check (not available in emulation) (1x).\nLine 9: Removed max:X check (not available in emulation) (1x).\n\nWARNING: The import for 'apwfi' required some automated changes.\nLine 8: Removed min:X check (not available in emulation) (1x).\nLine 15: Removed min:X check (not available in emulation) (1x).\n\nImported 9 action lists.\n", ["profile"] = "# Survival Hunter\n# https://github.com/simulationcraft/simc/\n# May 25, 2020\n\n# Changes:\n# - Added Muzzle to default action list.\n# - Changed target_if expressions to cycle_targets.\n# - Modified carve_cdr to work more easily with the addon's implementation of variable.\n# - Added utility APL.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/augmentation\n# actions.precombat+=/food\nactions.precombat+=/summon_pet\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/use_item,effect_name=cyclotronic_blast,if=!raid_event.invulnerable.exists\nactions.precombat+=/guardian_of_azeroth\nactions.precombat+=/coordinated_assault\nactions.precombat+=/worldvein_resonance\nactions.precombat+=/potion,dynamic_prepot=1\nactions.precombat+=/steel_trap\nactions.precombat+=/harpoon\n\nactions.utility=muzzle\nactions.utility+=/serenity_dust\nactions.utility+=/spore_cloud\nactions.utility+=/soothing_water\nactions.utility+=/sonic_blast\nactions.utility+=/nether_shock\nactions.utility+=/chijis_tranquility\nactions.utility+=/spirit_shock\nactions.utility+=/natures_grace\n\n# Executed every time the actor is available.\nactions=call_action_list,name=utility,if=debuff.casting.up||buff.dispellable_magic.up||buff.dispellable_enrage.up\nactions+=/use_items\nactions+=/call_action_list,name=cds\nactions+=/mongoose_bite,if=active_enemies=1&target.time_to_die1&!talent.birds_of_prey.enabled||active_enemies>2\nactions+=/concentrated_flame\nactions+=/arcane_torrent\nactions+=/bag_of_tricks\n\nactions.apst=mongoose_bite,if=buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd)\nactions.apst+=/raptor_strike,if=buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd)\nactions.apst+=/flanking_strike,if=focus+cast_regenfocus.max-10||buff.coordinated_assault.up\nactions.apst+=/raptor_strike\nactions.apst+=/wildfire_bomb,if=!ticking\n\nactions.apwfi=mongoose_bite,if=buff.blur_of_talons.up&buff.blur_of_talons.remains30&dot.serpent_sting.remains>5*gcd\nactions.apwfi+=/chakrams,if=!buff.mongoose_fury.remains\nactions.apwfi+=/serpent_sting,if=refreshable\nactions.apwfi+=/kill_command,target_if=min:bloodseeker.remains,if=focus+cast_regen40||dot.shrapnel_bomb.ticking\nactions.apwfi+=/wildfire_bomb,if=next_wi_bomb.volatile&dot.serpent_sting.ticking||next_wi_bomb.pheromone||next_wi_bomb.shrapnel&focus>50\n\nactions.cds=blood_fury,if=cooldown.coordinated_assault.remains>30\nactions.cds+=/ancestral_call,if=cooldown.coordinated_assault.remains>30\nactions.cds+=/fireblood,if=cooldown.coordinated_assault.remains>30\nactions.cds+=/lights_judgment\nactions.cds+=/berserking,if=cooldown.coordinated_assault.remains>60||time_to_die<13\nactions.cds+=/potion,if=buff.guardian_of_azeroth.up&(buff.berserking.up||buff.blood_fury.up||!race.troll)||(consumable.potion_of_unbridled_fury&time_to_die<61||time_to_die<26)||!essence.condensed_lifeforce.major&buff.coordinated_assault.up\nactions.cds+=/aspect_of_the_eagle,if=target.distance>=6\nactions.cds+=/use_item,name=ashvanes_razor_coral,if=buff.memory_of_lucid_dreams.up&target.time_to_die90&focus1&!talent.birds_of_prey.enabled||active_enemies>2)&(buff.blur_of_talons.up&buff.blur_of_talons.remains>3*gcd||!buff.blur_of_talons.up)\nactions.cds+=/blood_of_the_enemy,if=((raid_event.adds.remains>90||!raid_event.adds.exists)||(active_enemies>1&!talent.birds_of_prey.enabled||active_enemies>2))&focus60||!raid_event.adds.exists)||(active_enemies>1&!talent.birds_of_prey.enabled||active_enemies>2))&focus80||target.health.pct<=20||target.time_to_pct_20>30\nactions.cds+=/serpent_sting,if=essence.memory_of_lucid_dreams.major&refreshable&buff.vipers_venom.up&!cooldown.memory_of_lucid_dreams.remains\nactions.cds+=/mongoose_bite,if=essence.memory_of_lucid_dreams.major&!cooldown.memory_of_lucid_dreams.remains\nactions.cds+=/wildfire_bomb,if=essence.memory_of_lucid_dreams.major&full_recharge_time<1.5*gcd&focus0&(buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd||buff.coordinated_assault.remains&!buff.blur_of_talons.remains))\nactions.cleave+=/mongoose_bite,target_if=min:time_to_die,if=debuff.latent_poison.stack>(active_enemies||9)&target.time_to_die5\nactions.cleave+=/wildfire_bomb,if=!talent.guerrilla_tactics.enabled||full_recharge_time2.5||dot.shrapnel_bomb.ticking||cooldown.wildfire_bomb.remains>active_enemies-gcd||debuff.blood_of_the_enemy.remains||raid_event.adds.remains<5&raid_event.adds.exists\nactions.cleave+=/mongoose_bite,target_if=max:debuff.latent_poison.stack,if=debuff.latent_poison.stack>8\nactions.cleave+=/chakrams\nactions.cleave+=/kill_command,cycle_targets=1,if=focus+cast_regen(active_enemies||5)\nactions.cleave+=/flanking_strike,if=focus+cast_regenvariable.carve_cdr%2\nactions.cleave+=/steel_trap\nactions.cleave+=/serpent_sting,cycle_targets=1,if=refreshable&buff.tip_of_the_spear.stack<3&next_wi_bomb.volatile||refreshable&azerite.latent_poison.rank>0\n# To simulate usage for Mongoose Bite or Raptor Strike during Aspect of the Eagle, copy each occurrence of the action and append _eagle to the action name.\nactions.cleave+=/mongoose_bite,cycle_targets=1\nactions.cleave+=/raptor_strike,cycle_targets=1\n\nactions.st=harpoon,if=talent.terms_of_engagement.enabled\nactions.st+=/flanking_strike,if=focus+cast_regen0))&!buff.memory_of_lucid_dreams.up\nactions.st+=/serpent_sting,if=buff.vipers_venom.up&dot.serpent_sting.remains<4*gcd||dot.serpent_sting.refreshable&!buff.coordinated_assault.up\nactions.st+=/a_murder_of_crows,if=!buff.coordinated_assault.up\nactions.st+=/coordinated_assault,if=!buff.coordinated_assault.up\nactions.st+=/mongoose_bite,if=buff.mongoose_fury.up||focus+cast_regen>focus.max-20&talent.vipers_venom.enabled||focus+cast_regen>focus.max-1&talent.terms_of_engagement.enabled||buff.coordinated_assault.up\nactions.st+=/raptor_strike\nactions.st+=/wildfire_bomb,if=dot.wildfire_bomb.refreshable\nactions.st+=/serpent_sting,if=buff.vipers_venom.up\n\nactions.wfi=harpoon,if=focus+cast_regen5*gcd\nactions.wfi+=/serpent_sting,if=refreshable\nactions.wfi+=/chakrams,if=!buff.mongoose_fury.remains\nactions.wfi+=/mongoose_bite\nactions.wfi+=/raptor_strike\nactions.wfi+=/serpent_sting,if=buff.vipers_venom.up\nactions.wfi+=/wildfire_bomb,if=next_wi_bomb.volatile&dot.serpent_sting.ticking||next_wi_bomb.pheromone||next_wi_bomb.shrapnel", ["spec"] = 255, }, }, }, ["Quilago - Thunderhorn"] = { ["runOnce"] = { ["forceReloadClassDefaultOptions_20220306_102"] = true, ["forceReloadClassDefaultOptions_20220306_103"] = true, ["resetPotionsToDefaults_20190717"] = true, ["forceReloadAllDefaultPriorities_20220228"] = true, ["forceReloadClassDefaultOptions_20220306_105"] = true, ["forceEnableAllClassesOnceDueToBug_20220225"] = true, ["autoconvertDelaySweepToExtend_20190729"] = true, ["updateMaxRefreshToNewSpecOptions_20220222"] = true, ["forceSpellFlashBrightness_20221030"] = true, ["autoconvertDisplayToggle_20190621_1"] = true, ["resetRogueMfDOption_20200226"] = true, ["enableAllOfTheThings_20180820"] = true, ["fixHavocPriorityVersion_20240805"] = true, ["forceReloadClassDefaultOptions_20220306_104"] = true, ["autoconvertGlowsForCustomGlow_20190326"] = true, ["resetAberrantPackageDates_20190728_1"] = true, }, ["specs"] = { [103] = { ["debuffPadding"] = 0, ["nameplateRange"] = 8, ["settings"] = { ["rip_duration"] = 9, ["solo_prowl"] = false, ["brutal_charges"] = 2, ["regrowth"] = true, ["lazy_swipe"] = false, ["frenzy_cp"] = 2, ["vigil_damage"] = 50, ["allow_crit_prediction"] = true, }, ["maxTime"] = 33, ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["potion"] = "focused_resolve", ["buffPadding"] = 0, }, [104] = { ["debuffPadding"] = 0, ["settings"] = { ["vigil_damage"] = 50, ["catweave_bear"] = false, ["maul_anyway"] = true, ["ironfur_damage_threshold"] = 5, ["maul_rage"] = 20, ["max_ironfur"] = 1, }, ["potion"] = "focused_resolve", ["potionsReset"] = 20180919.1, ["maxTime"] = 33, ["maxRefresh"] = 10, ["buffPadding"] = 0, }, [102] = { ["debuffPadding"] = 0, ["nameplateRange"] = 8, ["settings"] = { ["starlord_cancel"] = false, ["vigil_damage"] = 50, }, ["maxTime"] = 33, ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["potion"] = "unbridled_fury", ["buffPadding"] = 0, }, }, ["packs"] = { ["Feral"] = { ["builtIn"] = true, ["date"] = 20241022, ["spec"] = 103, ["desc"] = "2024-10-22: 11.0.5\n\n2024-09-21: SimC update\n\n2024-09-10: Fix Ferocious Bite max_energy\n\n2024-09-04, 09-08: SimC update\n\n2024-09-03: Tweak targeting\n\n2024-08-24: SimC priority update\n\n2024-08-15: Adjust Ferocious Bite for Wildstalker\n\n2024-08-11: Mark of the Wild, priority update\n\n2024-08-08: Interrupt and Soothe\n\n2024-07-24: The War Within", ["profile"] = "actions.precombat+=/mark_of_the_wild\nactions.precombat+=/prowl,if=!buff.prowl.up\nactions.precombat+=/cat_form,if=!buff.cat_form.up\n# check if trinket slot contains a stat on use (variable is just kept in case of things like mirror not working with has_use_buff)\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff&!trinket.1.is.imperfect_ascendancy_serum&!trinket.1.is.ovinaxs_mercurial_egg&!trinket.1.is.concoction_kiss_of_death\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff&!trinket.2.is.imperfect_ascendancy_serum&!trinket.2.is.ovinaxs_mercurial_egg&!trinket.2.is.concoction_kiss_of_death\n# if we are playing 2 minute convoke, we prefer 2 minute on-use over 3 minute on-use even without berserk: heart of the lion\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=talent.convoke_the_spirits&!talent.ashamanes_guidance&variable.trinket_1_buffs&(trinket.1.cooldown.duration%%120=0||120%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=talent.convoke_the_spirits&!talent.ashamanes_guidance&variable.trinket_2_buffs&(trinket.1.cooldown.duration%%120=0||120%%trinket.1.cooldown.duration=0)\n# if we aren't playing 2 minute convoke, then we can sync 3 minute cds with berserk sans hotl\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=!(talent.convoke_the_spirits&!talent.ashamanes_guidance)&variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%%trinket.1.cooldown.duration=0||trinket.1.cooldown.duration%%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=!(talent.convoke_the_spirits&!talent.ashamanes_guidance)&variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%%trinket.2.cooldown.duration=0||trinket.2.cooldown.duration%%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%%trinket.2.cooldown.duration=0)\n# prioritize trinkets that line-up with cds->main-stat on uses->longer cd trinkets->shorter duration trinkets\nactions.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.agility)*(1.2+trinket.2.has_buff.mastery)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.agility)*(1.2+trinket.1.has_buff.mastery)*(variable.trinket_1_sync))\n\nactions+=/prowl,if=buff.bs_inc.down&!buff.prowl.up\nactions+=/cat_form,if=!buff.cat_form.up&!talent.fluid_form\nactions+=/skull_bash\nactions+=/soothe\n## Line up Power Infusion with Berserk.\n## actions+=/invoke_external_buff,name=power_infusion,if=buff.bs_inc.up||!talent.berserk_heart_of_the_lion\nactions+=/call_action_list,name=variable\n## actions+=/stop_moving,if=gcd.remains=0&equipped.ovinaxs_mercurial_egg\nactions+=/tigers_fury,if=(energy.deficit>35||combo_points=5||combo_points>=3&dot.rip.refreshable&buff.bloodtalons.up)&(boss&fight_remains<=15||(cooldown.bs_inc.remains>20&fight_remains>5)||(cooldown.bs_inc.ready&fight_remains>12||boss))\nactions+=/rake,cycle_targets=1,if=buff.shadowmeld.up||buff.prowl.up\nactions+=/natures_vigil,if=variable.regrowth&health.percent<70&(buff.bs_inc.up||buff.tigers_fury.up)\nactions+=/renewal,if=variable.regrowth&health.percent<70\nactions+=/adaptive_swarm,cycle_targets=1,if=dot.adaptive_swarm_damage.stack<3&(!dot.adaptive_swarm_damage.ticking||dot.adaptive_swarm_damage.remains<2)&!action.adaptive_swarm.in_flight&(spell_targets=1||!talent.unbridled_swarm)&(dot.rip.ticking||hero_tree.druid_of_the_claw)\nactions+=/adaptive_swarm,cycle_targets=1,if=buff.cat_form.up&dot.adaptive_swarm_damage.stack<3&talent.unbridled_swarm.enabled&spell_targets.swipe_cat>1&dot.rip.ticking\nactions+=/ferocious_bite,if=buff.apex_predators_craving.up&!(variable.need_bt&active_bt_triggers=2)\nactions+=/call_action_list,name=cooldown,strict=1,if=dot.rip.ticking\n# with wildstalker and not both raging fury + veinripper, low cp rips for snapshot reasons is worth\nactions+=/rip,if=spell_targets=1&hero_tree.wildstalker&!(talent.raging_fury&talent.veinripper)&(buff.bloodtalons.up||!talent.bloodtalons)&(dot.rip.remains<5&buff.tigers_fury.remains>10&combo_points>=3||((buff.tigers_fury.remains<3&combo_points=5)||buff.tigers_fury.remains<=1)&buff.tigers_fury.up&combo_points>=3&remains=2&combo_points<5&(variable.time_to_pool<=0||!variable.need_bt||variable.proccing_bt)\nactions+=/regrowth,if=buff.predatory_swiftness.up&variable.regrowth&selection_time>gcd.max\n\nactions.aoe_builder+=/variable,name=proccing_bt,op=set,value=variable.need_bt\n# maintain thrash highest prio\nactions.aoe_builder+=/thrash_cat,if=refreshable&!talent.thrashing_claws&!(variable.need_bt&buff.bt_thrash.up)\n# avoid capping brs charges. Also send brutal slashes/ws swipe in aoe, even if we need to proc bloodtalons, during berserk.\nactions.aoe_builder+=/brutal_slash,cycle_targets=1,if=(cooldown.brutal_slash.full_recharge_time<4||time_to_die<4||raid_event.adds.remains<4||(buff.bs_inc.up&spell_targets>=3-hero_tree.druid_of_the_claw))&!(variable.need_bt&buff.bt_swipe.up&(buff.bs_inc.down||spell_targets<3-hero_tree.druid_of_the_claw))\nactions.aoe_builder+=/swipe_cat,if=talent.wild_slashes&(time_to_die<4||raid_event.adds.remains<4||buff.bs_inc.up&spell_targets>=3-hero_tree.druid_of_the_claw)&!(variable.need_bt&buff.bt_swipe.up&(buff.bs_inc.down||spell_targets<3-hero_tree.druid_of_the_claw))\n# with wild slashes we swipe at 5+ targets over raking/moonfire\nactions.aoe_builder+=/swipe_cat,if=time_to_die<4||(talent.wild_slashes&spell_targets.swipe_cat>4&!(variable.need_bt&buff.bt_swipe.up))\nactions.aoe_builder+=/prowl,if=dot.rake.refreshable||dot.rake.pmultiplier<1.4&!(variable.need_bt&buff.bt_rake.up)&action.rake.ready&gcd.remains=0&!buff.sudden_ambush.up&!variable.cc_capped\nactions.aoe_builder+=/shadowmeld,if=dot.rake.refreshable||dot.rake.pmultiplier<1.4&!(variable.need_bt&buff.bt_rake.up)&action.rake.ready&!buff.sudden_ambush.up&!buff.prowl.up&!variable.cc_capped\n# dcr rake > moonfire\nactions.aoe_builder+=/rake,cycle_targets=1,if=refreshable&talent.doubleclawed_rake&!(variable.need_bt&buff.bt_rake.up)&!variable.cc_capped\n# at 3t with wild slashes, swipe is better than moonfiring/st rake\nactions.aoe_builder+=/swipe_cat,if=talent.wild_slashes&spell_targets.swipe_cat>2&!(variable.need_bt&buff.bt_swipe.up)\n# li moonfire is better than non-dcr rake in aoe\nactions.aoe_builder+=/moonfire_cat,cycle_targets=1,if=refreshable&!(variable.need_bt&buff.bt_moonfire.up)&!variable.cc_capped\nactions.aoe_builder+=/rake,cycle_targets=1,if=refreshable&!(variable.need_bt&buff.bt_rake.up)&!variable.cc_capped\n# fillers\nactions.aoe_builder+=/brutal_slash,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.aoe_builder+=/swipe_cat,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.aoe_builder+=/shred,if=!buff.sudden_ambush.up&!variable.easy_swipe&!(variable.need_bt&buff.bt_shred.up)\nactions.aoe_builder+=/thrash_cat,if=!talent.thrashing_claws&!(variable.need_bt&buff.bt_thrash.up)\n# fallback bt actions\nactions.aoe_builder+=/rake,cycle_targets=1,if=talent.doubleclawed_rake&buff.sudden_ambush.up&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/moonfire_cat,cycle_targets=1,if=variable.need_bt&buff.bt_moonfire.down\nactions.aoe_builder+=/rake,cycle_targets=1,if=buff.sudden_ambush.up&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/shred,if=variable.need_bt&buff.bt_shred.down&!variable.easy_swipe\nactions.aoe_builder+=/rake,cycle_targets=1,if=dot.rake.pmultiplier<1.6&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/thrash_cat,if=variable.need_bt&buff.bt_shred.down\n\nactions.builder+=/prowl,if=gcd.remains=0&energy>=35&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)*!(variable.need_bt&buff.bt_rake.up)&buff.tigers_fury.up&!buff.shadowmeld.up\nactions.builder+=/shadowmeld,if=gcd.remains=0&energy>=35&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)*!(variable.need_bt&buff.bt_rake.up)&buff.tigers_fury.up&!buff.prowl.up\n# upgrade to stealth rakes, otherwise refresh in pandemic. Delay rake as long as possible if it would downgrade\nactions.builder+=/rake,if=((refreshable&persistent_multiplier>=dot.rake.pmultiplier||dot.rake.remains<3.5)||buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier)&!(variable.need_bt&buff.bt_rake.up)\nactions.builder+=/brutal_slash,if=cooldown.brutal_slash.full_recharge_time<4&!(variable.need_bt&buff.bt_swipe.up)\nactions.builder+=/moonfire_cat,if=refreshable\nactions.builder+=/thrash_cat,if=refreshable&!talent.thrashing_claws\nactions.builder+=/shred,if=buff.clearcasting.up&!(variable.need_bt&buff.bt_shred.up)\n# pool energy if we need to refresh dot in the next 1.5s [Hekili] TODO: Sim character to see how frequently this fires, determine if `wait` value should be adjusted.\nactions.builder+=/pool_resource,wait=0.2,if=variable.dot_refresh_soon&energy.deficit>70&!variable.need_bt&!buff.bs_inc.up&cooldown.tigers_fury.remains>3\nactions.builder+=/brutal_slash,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.builder+=/shred,if=!(variable.need_bt&buff.bt_shred.up)\nactions.builder+=/swipe_cat,if=variable.need_bt&buff.bt_swipe.down\n# clip rake for bt if it wont downgrade its snapshot\nactions.builder+=/rake,if=variable.need_bt&buff.bt_rake.down&persistent_multiplier>=dot.rake.pmultiplier\nactions.builder+=/moonfire_cat,if=variable.need_bt&buff.bt_moonfire.down\nactions.builder+=/thrash_cat,if=variable.need_bt&buff.bt_thrash.down\n\nactions.cooldown+=/incarnation,if=fight_remains>17||boss\n# non-stat on use trinkets get used on cooldown, so long as it wont interfere with a stat on-use trinket\nactions.cooldown+=/use_item,slot=trinket1,if=trinket.1.has_use_damage&(trinket.2.cooldown.remains>20||!variable.trinket_2_buffs)\nactions.cooldown+=/use_item,slot=trinket2,if=trinket.2.has_use_damage&(trinket.1.cooldown.remains>20||!variable.trinket_1_buffs)\n# berserk with tigers fury\nactions.cooldown+=/berserk,if=buff.tigers_fury.up&(fight_remains>12||boss)\nactions.cooldown+=/berserking,if=buff.bs_inc.up\n# todo make last set of cds line up again now that we know potions.remains is the syntax\nactions.cooldown+=/potion,if=buff.bs_inc.up||boss&fight_remains<32||(!variable.lastzerk&variable.lastconvoke&cooldown.convoke_the_spirits.remains<10)\n# non 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.\nactions.cooldown+=/use_items\n# stat on-use trinkets, prefers trinket with higher priority.\nactions.cooldown+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&(buff.bs_inc.up||((buff.tigers_fury.up&cooldown.tigers_fury.remains>25)&(cooldown.convoke_the_spirits.remains<6||(variable.trinket_2_buffs&cooldown.convoke_the_spirits.remains-trinket.2.cooldown.remains>0)||!talent.convoke_the_spirits&cooldown.bs_inc.remains-trinket.2.cooldown.remains>0)))&(!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains&boss\nactions.cooldown+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&(buff.bs_inc.up||((buff.tigers_fury.up&cooldown.tigers_fury.remains>25)&(cooldown.convoke_the_spirits.remains<6||(variable.trinket_1_buffs&cooldown.convoke_the_spirits.remains-trinket.1.cooldown.remains>0)||!talent.convoke_the_spirits&cooldown.bs_inc.remains-trinket.1.cooldown.remains>0)))&(!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains&boss\n## actions.cooldown+=/do_treacherous_transmitter_task,if=buff.tigers_fury.up||fight_remains<22\nactions.cooldown+=/feral_frenzy,if=combo_points<=1||buff.bs_inc.up&combo_points<=2\n# always line up convoke with berserk if you can\nactions.cooldown+=/convoke_the_spirits,if=boss&fight_remains<5||(cooldown.bs_inc.remains>45||buff.bs_inc.up||!talent.berserk_heart_of_the_lion)&(buff.tigers_fury.up&(combo_points<=4||buff.bs_inc.up&combo_points<=3)&(target.time_to_die>5-talent.ashamanes_guidance.enabled||boss))\n\n# maintain/upgrade pws, if we have 6.5+s left on pw, we will instead bite if we have rampant ferocity talented. Without rampant, we will bite a vined target with 6 or fewer targets. If we have Ravage, we use specifically Ravage at 7 or fewer targets.\nactions.finisher+=/primal_wrath,if=spell_targets.primal_wrath>1&((dot.primal_wrath.remains<6.5&!buff.bs_inc.up||dot.primal_wrath.refreshable)||(!talent.rampant_ferocity.enabled&(spell_targets.primal_wrath>1&!dot.bloodseeker_vines.ticking&!buff.ravage.up||spell_targets.primal_wrath>6+talent.ravage)))\n# rip if single target or pw isnt up. Rip with bloodtalons if talented. If tigers fury will be up before rip falls off, then delay refresh\nactions.finisher+=/rip,cycle_targets=1,if=refreshable&(!talent.primal_wrath||spell_targets=1)&(buff.bloodtalons.up||!talent.bloodtalons)&(buff.tigers_fury.up||dot.rip.remainsfight_remains&cooldown.convoke_the_spirits.remainsfight_remains&cooldown.convoke_the_spirits.remainsfight_remains&cooldown.potions.remains+15=0.8&((variable.rg_enhance_cleave&buff.rending_strike.up&buff.glaive_flurry.up)||(!variable.rg_enhance_cleave&!buff.glaive_flurry.up))\nactions.rg_sequence_filler+=/sigil_of_flame\nactions.rg_sequence_filler+=/sigil_of_spite\nactions.rg_sequence_filler+=/soul_carver\nactions.rg_sequence_filler+=/fel_devastation\nactions.rg_sequence_filler+=/throw_glaive", ["version"] = 20250303, ["warnings"] = "The import for 'rg_prep' required some automated changes.\nLine 2: Converted 'talent.unhindered_assault' to 'talent.unhindered_assault.enabled' (1x).\n\nThe import for 'fs' required some automated changes.\nLine 1: Converted 'talent.aura_of_pain' to 'talent.aura_of_pain.enabled' (1x).\nLine 1: Converted operations in '(action.sigil_of_flame.crit_pct+(talent.aura_of_pain.enabled*6))%100' to '(action.sigil_of_flame.crit_pct+(talent.aura_of_pain.enabled*6))/100'.\nLine 1: Converted 'talent.volatile_flameblood' to 'talent.volatile_flameblood.enabled' (1x).\nLine 3: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 8: Converted 'talent.flames_of_fury' to 'talent.flames_of_fury.enabled' (1x).\nLine 11: Converted 'talent.volatile_flameblood' to 'talent.volatile_flameblood.enabled' (1x).\nLine 13: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 14: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 15: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 16: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 17: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 18: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 19: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 20: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 22: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 25: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\nLine 26: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 27: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 28: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 28: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 29: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 29: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 30: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 30: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 31: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 31: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 31: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 31: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 32: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 32: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 32: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 32: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 34: Converted 'talent.fallout' to 'talent.fallout.enabled' (1x).\nLine 34: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 35: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 37: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 37: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\nLine 45: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 45: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 45: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 45: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 46: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 46: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 47: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 48: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\n\nThe import for 'fel_dev' required some automated changes.\nLine 3: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\n\nThe import for 'rg_overflow' required some automated changes.\nLine 3: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 4: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\n\nThe import for 'metamorphosis' required some automated changes.\nLine 4: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 4: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 6: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 6: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 6: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 6: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 7: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 7: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 8: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 11: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 12: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 17: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 18: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 19: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 4: Converted 'talent.soul_sigils' to 'talent.soul_sigils.enabled' (1x).\nLine 5: Converted 'talent.fracture' to 'talent.fracture.enabled' (1x).\nLine 6: Converted 'talent.fracture' to 'talent.fracture.enabled' (1x).\nLine 7: Converted 'talent.soul_carver' to 'talent.soul_carver.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.agility' to 'trinket.t1.has_buff.agility' (1x).\nLine 4: Converted 'trinket.1.has_buff.agility' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 4: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 4: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 4: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 4: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.agility' to 'trinket.t2.has_buff.agility' (1x).\nLine 5: Converted 'trinket.2.has_buff.agility' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 5: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 5: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 5: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 5: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\nLine 7: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'meta_prep' required some automated changes.\nLine 2: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 2: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\n\nThe import for 'ar' required some automated changes.\nLine 1: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 2: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 3: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 4: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 11: Converted 'talent.soul_sigils' to 'talent.soul_sigils.enabled' (1x).\nLine 11: Converted 'talent.soul_sigils' to 'talent.soul_sigils.enabled' (1x).\nLine 20: Converted 'talent.fallout' to 'talent.fallout.enabled' (1x).\nLine 22: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 22: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 28: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 29: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 30: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 30: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\nLine 30: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 34: Converted 'talent.unhindered_assault' to 'talent.unhindered_assault.enabled' (1x).\nLine 39: Converted 'talent.unhindered_assault' to 'talent.unhindered_assault.enabled' (1x).\n\nThe import for 'fel_dev_prep' required some automated changes.\nLine 3: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 5: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 6: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\n\nThe import for 'ar_execute' required some automated changes.\nLine 2: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 3: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\n\nImported 14 action lists.\n", ["lists"] = { ["rg_prep"] = { { ["action"] = "felblade", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "vengeful_retreat", ["criteria"] = "! cooldown.felblade.up & talent.unhindered_assault.enabled", ["use_off_gcd"] = 1, }, { ["action"] = "sigil_of_flame", ["enabled"] = true, }, { ["action"] = "immolation_aura", ["enabled"] = true, }, { ["action"] = "fracture", ["enabled"] = true, }, }, ["fs"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( action.sigil_of_flame.crit_pct + ( talent.aura_of_pain.enabled * 6 ) ) / 100", ["criteria"] = "active_dot.sigil_of_flame > 0 & talent.volatile_flameblood.enabled", ["var_name"] = "crit_pct", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "2 + ( 2 * gcd.max )", ["var_name"] = "fel_dev_sequence_time", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "gcd.max", ["criteria"] = "talent.fiery_demise.enabled & cooldown.fiery_brand.up", ["var_name"] = "fel_dev_sequence_time", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "gcd.max", ["criteria"] = "cooldown.sigil_of_flame.up || cooldown.sigil_of_flame.remains < variable.fel_dev_sequence_time", ["var_name"] = "fel_dev_sequence_time", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "gcd.max", ["criteria"] = "cooldown.immolation_aura.up || cooldown.immolation_aura.remains < variable.fel_dev_sequence_time", ["var_name"] = "fel_dev_sequence_time", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "0", ["var_name"] = "fel_dev_passive_fury_gen", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "2.5 * floor ( ( buff.student_of_suffering.remains >? variable.fel_dev_sequence_time ) )", ["criteria"] = "talent.student_of_suffering.enabled & ( buff.student_of_suffering.remains > 1 || prev_gcd.1.sigil_of_flame )", ["var_name"] = "fel_dev_passive_fury_gen", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "30 + ( 2 * talent.flames_of_fury.enabled * spell_targets.sigil_of_flame )", ["criteria"] = "( cooldown.sigil_of_flame.remains < variable.fel_dev_sequence_time )", ["var_name"] = "fel_dev_passive_fury_gen", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "8", ["criteria"] = "cooldown.immolation_aura.remains < variable.fel_dev_sequence_time", ["var_name"] = "fel_dev_passive_fury_gen", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "2 * floor ( ( buff.immolation_aura.remains >? variable.fel_dev_sequence_time ) )", ["criteria"] = "buff.immolation_aura.remains > 1", ["var_name"] = "fel_dev_passive_fury_gen", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "7.5 * variable.crit_pct * floor ( ( buff.immolation_aura.remains >? variable.fel_dev_sequence_time ) )", ["criteria"] = "talent.volatile_flameblood.enabled & buff.immolation_aura.remains > 1", ["var_name"] = "fel_dev_passive_fury_gen", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "22", ["criteria"] = "talent.darkglare_boon.enabled", ["var_name"] = "fel_dev_passive_fury_gen", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "spbomb_threshold", ["criteria"] = "talent.fiery_demise.enabled & dot.fiery_brand.ticking", ["value_else"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )", ["value"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spbomb", ["criteria"] = "talent.spirit_bomb.enabled", ["value_else"] = "0", ["value"] = "soul_fragments >= variable.spbomb_threshold", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spbomb_soon", ["criteria"] = "talent.spirit_bomb.enabled", ["value_else"] = "0", ["value"] = "soul_fragments >= variable.spbomb_threshold", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spbomb_one_gcd", ["criteria"] = "talent.spirit_bomb.enabled", ["value_else"] = "0", ["value"] = "( soul_fragments + variable.num_spawnable_souls ) >= variable.spbomb_threshold", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "spburst_threshold", ["criteria"] = "talent.fiery_demise.enabled & dot.fiery_brand.ticking", ["value_else"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )", ["value"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spburst", ["criteria"] = "talent.spirit_bomb.enabled", ["value_else"] = "0", ["value"] = "soul_fragments >= variable.spburst_threshold", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spburst_soon", ["criteria"] = "talent.spirit_bomb.enabled", ["value_else"] = "0", ["value"] = "soul_fragments >= variable.spburst_threshold", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spburst_one_gcd", ["criteria"] = "talent.spirit_bomb.enabled", ["value_else"] = "0", ["value"] = "( soul_fragments + variable.num_spawnable_souls ) >= variable.spburst_threshold", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "0", ["var_name"] = "meta_prep_time", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "action.fiery_brand.execute_time", ["criteria"] = "talent.fiery_demise.enabled & cooldown.fiery_brand.up", ["var_name"] = "meta_prep_time", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "action.sigil_of_flame.execute_time * action.sigil_of_flame.charges", ["var_name"] = "meta_prep_time", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "dont_soul_cleave", ["criteria"] = "buff.metamorphosis.up & buff.demonsurge_hardcast.up", ["value_else"] = "( cooldown.fel_devastation.remains < ( gcd.max * 3 ) & ( ( fury + variable.fel_dev_passive_fury_gen ) < 120 ) || ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) ) )", ["value"] = "buff.demonsurge_spirit_burst.up || ( buff.metamorphosis.remains < ( gcd.max * 2 ) & ( ( fury + variable.fel_dev_passive_fury_gen ) < 120 || ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) ) )", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "fiery_brand_back_before_meta", ["criteria"] = "talent.down_in_flames.enabled", ["value_else"] = "( cooldown.fiery_brand.duration <= cooldown.metamorphosis.remains )", ["value"] = "charges >= max_charges || ( charges_fractional >= 1 & cooldown.fiery_brand.full_recharge_time <= gcd.remains + execute_time ) || ( charges_fractional >= 1 & ( ( 1 - ( charges_fractional - 1 ) ) * cooldown.fiery_brand.duration ) <= cooldown.metamorphosis.remains )", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "hold_sof_for_meta", ["criteria"] = "talent.illuminated_sigils.enabled", ["value_else"] = "cooldown.sigil_of_flame.duration > cooldown.metamorphosis.remains", ["value"] = "( charges_fractional >= 1 & ( ( 1 - ( charges_fractional - 1 ) ) * cooldown.sigil_of_flame.duration ) > cooldown.metamorphosis.remains )", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "hold_sof_for_fel_dev", ["criteria"] = "talent.illuminated_sigils.enabled", ["value_else"] = "cooldown.sigil_of_flame.duration > cooldown.fel_devastation.remains", ["value"] = "( charges_fractional >= 1 & ( ( 1 - ( charges_fractional - 1 ) ) * cooldown.sigil_of_flame.duration ) > cooldown.fel_devastation.remains )", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "hold_sof_for_student", ["criteria"] = "talent.student_of_suffering.enabled", ["value_else"] = "0", ["value"] = "prev_gcd.1.sigil_of_flame || ( buff.student_of_suffering.remains > ( 4 - talent.quickened_sigils.enabled ) )", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "hold_sof_for_dot", ["criteria"] = "talent.ascending_flame.enabled", ["value_else"] = "prev_gcd.1.sigil_of_flame || ( dot.sigil_of_flame.remains > ( 4 - talent.quickened_sigils.enabled ) )", ["value"] = "0", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( talent.illuminated_sigils.enabled & time < ( 2 - talent.quickened_sigils.enabled ) )", ["var_name"] = "hold_sof_for_precombat", }, { ["enabled"] = true, ["action"] = "trinket1", ["criteria"] = "! variable.trinket_1_buffs || ( variable.trinket_1_buffs & ( ( buff.metamorphosis.up & buff.demonsurge_hardcast.up ) || ( buff.metamorphosis.up & ! buff.demonsurge_hardcast.up & cooldown.metamorphosis.remains < 10 ) || ( cooldown.metamorphosis.remains > trinket.t1.cooldown.duration ) || ( variable.trinket_2_buffs & trinket.t2.cooldown.remains < cooldown.metamorphosis.remains ) ) )", ["slot"] = "trinket1", }, { ["enabled"] = true, ["action"] = "trinket2", ["criteria"] = "! variable.trinket_2_buffs || ( variable.trinket_2_buffs & ( ( buff.metamorphosis.up & buff.demonsurge_hardcast.up ) || ( buff.metamorphosis.up & ! buff.demonsurge_hardcast.up & cooldown.metamorphosis.remains < 10 ) || ( cooldown.metamorphosis.remains > trinket.t2.cooldown.duration ) || ( variable.trinket_1_buffs & trinket.t1.cooldown.remains < cooldown.metamorphosis.remains ) ) )", ["slot"] = "trinket2", }, { ["enabled"] = true, ["criteria"] = "time < 4", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "! ( cooldown.metamorphosis.up & prev_gcd.1.sigil_of_flame ) & ! ( talent.fallout.enabled & talent.spirit_bomb.enabled & spell_targets.spirit_bomb >= 3 & ( ( buff.metamorphosis.up & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( ! buff.metamorphosis.up & ( variable.can_spbomb || variable.can_spbomb_soon ) ) ) ) & ! ( buff.metamorphosis.up & buff.demonsurge_hardcast.up )", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "! talent.student_of_suffering.enabled & ! variable.hold_sof_for_dot & ! variable.hold_sof_for_precombat", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["criteria"] = "! variable.hold_sof_for_precombat & ( charges = max_charges || ( ! variable.hold_sof_for_student & ! variable.hold_sof_for_dot & ! variable.hold_sof_for_meta & ! variable.hold_sof_for_fel_dev ) )", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["criteria"] = "active_dot.fiery_brand = 0 & ( ! talent.fiery_demise.enabled || ( ( talent.down_in_flames.enabled & charges >= max_charges ) || variable.fiery_brand_back_before_meta ) )", ["action"] = "fiery_brand", }, { ["enabled"] = true, ["criteria"] = "fight_remains < 20", ["action"] = "call_action_list", ["list_name"] = "fs_execute", }, { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.up & ! buff.demonsurge_hardcast.up & ( buff.demonsurge_soul_sunder.up || buff.demonsurge_spirit_burst.up )", ["action"] = "run_action_list", ["list_name"] = "fel_dev", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "buff.metamorphosis.up & buff.demonsurge_hardcast.up", ["list_name"] = "metamorphosis", }, { ["enabled"] = true, ["criteria"] = "! buff.demonsurge_hardcast.up & ( cooldown.fel_devastation.up || ( cooldown.fel_devastation.remains <= ( gcd.max * 3 ) ) )", ["action"] = "run_action_list", ["list_name"] = "fel_dev_prep", }, { ["enabled"] = true, ["criteria"] = "( cooldown.metamorphosis.remains <= variable.meta_prep_time ) & ! cooldown.fel_devastation.up & ! cooldown.fel_devastation.remains < 10 & ! buff.demonsurge_soul_sunder.up & ! buff.demonsurge_spirit_burst.up", ["action"] = "run_action_list", ["list_name"] = "meta_prep", }, { ["action"] = "the_hunt", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( ( cooldown.sigil_of_spite.remains < execute_time || cooldown.soul_carver.remains < execute_time ) & cooldown.fel_devastation.remains < ( execute_time + gcd.max ) & fury < 50 )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "( ! talent.fiery_demise.enabled || talent.fiery_demise.enabled & dot.fiery_brand.ticking ) & ( ( ! talent.spirit_bomb.enabled || variable.single_target ) || ( talent.spirit_bomb.enabled & ! prev_gcd.1.sigil_of_spite & ( ( soul_fragments + 3 <= 5 & fury >= 40 ) || ( soul_fragments = 0 & fury >= 15 ) ) ) )", ["action"] = "soul_carver", }, { ["enabled"] = true, ["criteria"] = "( ! talent.cycle_of_binding.enabled || ( cooldown.sigil_of_spite.duration < ( cooldown.metamorphosis.remains + 18 ) ) ) & ( ! talent.spirit_bomb.enabled || ( fury >= 80 & ( variable.can_spbomb || variable.can_spbomb_soon ) ) || ( soul_fragments <= ( 2 - talent.soul_sigils.rank ) ) )", ["action"] = "sigil_of_spite", }, { ["enabled"] = true, ["criteria"] = "variable.can_spburst & talent.fiery_demise.enabled & dot.fiery_brand.ticking & cooldown.fel_devastation.remains >= ( gcd.max * 3 )", ["action"] = "spirit_burst", }, { ["enabled"] = true, ["criteria"] = "variable.can_spbomb & talent.fiery_demise.enabled & dot.fiery_brand.ticking & cooldown.fel_devastation.remains >= ( gcd.max * 3 )", ["action"] = "spirit_bomb", }, { ["enabled"] = true, ["criteria"] = "variable.single_target & ! variable.dont_soul_cleave", ["action"] = "soul_sunder", }, { ["enabled"] = true, ["criteria"] = "variable.single_target & ! variable.dont_soul_cleave", ["action"] = "soul_cleave", }, { ["enabled"] = true, ["criteria"] = "variable.can_spburst & cooldown.fel_devastation.remains >= ( gcd.max * 3 )", ["action"] = "spirit_burst", }, { ["enabled"] = true, ["criteria"] = "variable.can_spbomb & cooldown.fel_devastation.remains >= ( gcd.max * 3 )", ["action"] = "spirit_bomb", }, { ["enabled"] = true, ["criteria"] = "( ( fury < 40 & ( ( buff.metamorphosis.up & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( ! buff.metamorphosis.up & ( variable.can_spbomb || variable.can_spbomb_soon ) ) ) ) )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "( ( fury < 40 & ( ( buff.metamorphosis.up & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( ! buff.metamorphosis.up & ( variable.can_spbomb || variable.can_spbomb_soon ) ) ) ) || ( buff.metamorphosis.up & variable.can_spburst_one_gcd ) || ( ! buff.metamorphosis.up & variable.can_spbomb_one_gcd ) )", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "fury.deficit >= 40", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "! variable.dont_soul_cleave", ["action"] = "soul_sunder", }, { ["enabled"] = true, ["criteria"] = "! variable.dont_soul_cleave", ["action"] = "soul_cleave", }, { ["action"] = "fracture", ["enabled"] = true, }, { ["action"] = "throw_glaive", ["enabled"] = true, }, }, ["ar_execute"] = { { ["use_off_gcd"] = 1, ["action"] = "metamorphosis", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) >= 30 & ! ( buff.rending_strike.up || buff.glaive_flurry.up )", ["action"] = "reavers_glaive", }, { ["enabled"] = true, ["criteria"] = "buff.reavers_glaive.up & ( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) < 30", ["action"] = "call_action_list", ["list_name"] = "rg_prep", }, { ["enabled"] = true, ["criteria"] = "! buff.reavers_glaive.up", ["action"] = "the_hunt", }, { ["enabled"] = true, ["criteria"] = "spell_targets >= 3 & buff.art_of_the_glaive.stack >= 20", ["action"] = "bulk_extraction", }, { ["action"] = "sigil_of_flame", ["enabled"] = true, }, { ["action"] = "fiery_brand", ["enabled"] = true, }, { ["action"] = "sigil_of_spite", ["enabled"] = true, }, { ["action"] = "soul_carver", ["enabled"] = true, }, { ["action"] = "fel_devastation", ["enabled"] = true, }, }, ["fel_dev"] = { { ["enabled"] = true, ["criteria"] = "buff.demonsurge_spirit_burst.up & ( variable.can_spburst || soul_fragments >= 4 || ( buff.metamorphosis.remains < ( gcd.max * 2 ) ) )", ["action"] = "spirit_burst", }, { ["enabled"] = true, ["criteria"] = "buff.demonsurge_soul_sunder.up & ( ! buff.demonsurge_spirit_burst.up || ( buff.metamorphosis.remains < ( gcd.max * 2 ) ) )", ["action"] = "soul_sunder", }, { ["enabled"] = true, ["criteria"] = "( ! talent.cycle_of_binding.enabled || ( cooldown.sigil_of_spite.duration < ( cooldown.metamorphosis.remains + 18 ) ) ) & ( soul_fragments <= 2 & buff.demonsurge_spirit_burst.up )", ["action"] = "sigil_of_spite", }, { ["enabled"] = true, ["criteria"] = "soul_fragments <= 2 & ! prev_gcd.1.sigil_of_spite & buff.demonsurge_spirit_burst.up", ["action"] = "soul_carver", }, { ["enabled"] = true, ["criteria"] = "soul_fragments <= 2 & buff.demonsurge_spirit_burst.up", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "buff.demonsurge_spirit_burst.up || buff.demonsurge_soul_sunder.up", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "buff.demonsurge_spirit_burst.up || buff.demonsurge_soul_sunder.up", ["action"] = "fracture", }, }, ["fel_dev_prep"] = { { ["enabled"] = true, ["action"] = "potion", ["criteria"] = "prev_gcd.1.fiery_brand", ["use_off_gcd"] = 1, }, { ["enabled"] = true, ["criteria"] = "! variable.hold_sof_for_precombat & ! variable.hold_sof_for_student & ! variable.hold_sof_for_dot", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["criteria"] = "talent.fiery_demise.enabled & ( ( fury + variable.fel_dev_passive_fury_gen ) >= 120 ) & ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) & active_dot.fiery_brand = 0 & ( ( cooldown.metamorphosis.remains < ( execute_time + action.fel_devastation.execute_time + ( gcd.max * 2 ) ) ) || variable.fiery_brand_back_before_meta )", ["action"] = "fiery_brand", }, { ["enabled"] = true, ["criteria"] = "( ( fury + variable.fel_dev_passive_fury_gen ) >= 120 ) & ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 )", ["action"] = "fel_devastation", }, { ["enabled"] = true, ["criteria"] = "( ! talent.cycle_of_binding.enabled || ( cooldown.sigil_of_spite.duration < ( cooldown.metamorphosis.remains + 18 ) ) ) & ( soul_fragments <= 1 || ( ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) & action.fracture.charges_fractional < 1 ) )", ["action"] = "sigil_of_spite", }, { ["enabled"] = true, ["criteria"] = "( ! talent.cycle_of_binding.enabled || cooldown.metamorphosis.remains > 20 ) & ( soul_fragments <= 1 || ( ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) & action.fracture.charges_fractional < 1 ) ) & ! prev_gcd.1.sigil_of_spite & ! prev_gcd.2.sigil_of_spite", ["action"] = "soul_carver", }, { ["enabled"] = true, ["criteria"] = "( fury + variable.fel_dev_passive_fury_gen ) < 120 & ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) || ( fury + variable.fel_dev_passive_fury_gen ) < 120", ["action"] = "fracture", }, { ["action"] = "felblade", ["enabled"] = true, }, { ["action"] = "fracture", ["enabled"] = true, }, { ["action"] = "fel_devastation", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( ( fury + variable.fel_dev_passive_fury_gen ) >= 150 )", ["action"] = "soul_cleave", }, { ["action"] = "throw_glaive", ["enabled"] = true, }, }, ["fs_execute"] = { { ["use_off_gcd"] = 1, ["action"] = "metamorphosis", ["enabled"] = true, }, { ["action"] = "the_hunt", ["enabled"] = true, }, { ["action"] = "sigil_of_flame", ["enabled"] = true, }, { ["action"] = "fiery_brand", ["enabled"] = true, }, { ["action"] = "sigil_of_spite", ["enabled"] = true, }, { ["action"] = "soul_carver", ["enabled"] = true, }, { ["action"] = "fel_devastation", ["enabled"] = true, }, }, ["ar"] = { { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "spb_threshold", ["criteria"] = "talent.fiery_demise.enabled & dot.fiery_brand.ticking", ["value_else"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )", ["value"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spb", ["criteria"] = "talent.spirit_bomb.enabled", ["value_else"] = "0", ["value"] = "soul_fragments >= variable.spb_threshold", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spb_soon", ["criteria"] = "talent.spirit_bomb.enabled", ["value_else"] = "0", ["value"] = "soul_fragments >= variable.spb_threshold", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "can_spb_one_gcd", ["criteria"] = "talent.spirit_bomb.enabled", ["value_else"] = "0", ["value"] = "( soul_fragments + variable.num_spawnable_souls ) >= variable.spb_threshold", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "time + action.fracture.execute_time + 20", ["criteria"] = "! buff.glaive_flurry.up & buff.rending_strike.up", ["var_name"] = "double_rm_expires", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "double_rm_remains", ["criteria"] = "( variable.double_rm_expires - time ) > 0", ["value_else"] = "0", ["value"] = "variable.double_rm_expires - time", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "0", ["criteria"] = "! buff.glaive_flurry.up & ! buff.rending_strike.up & ! prev_gcd.1.reavers_glaive", ["var_name"] = "trigger_overflow", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "rg_enhance_cleave", ["criteria"] = "variable.trigger_overflow || ( spell_targets.spirit_bomb >= 4 ) || ( fight_remains < 10 || target.time_to_die < 10 )", ["value_else"] = "0", ["value"] = "1", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "soul_fragments + buff.art_of_the_glaive.stack", ["var_name"] = "souls_before_next_rg_sequence", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "( 1.1 * ( 1 + stat.haste ) ) * ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) )", ["var_name"] = "souls_before_next_rg_sequence", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "3 + talent.soul_sigils.enabled", ["criteria"] = "cooldown.sigil_of_spite.remains < ( variable.double_rm_remains - gcd.max - ( 2 - talent.soul_sigils.enabled ) )", ["var_name"] = "souls_before_next_rg_sequence", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "3", ["criteria"] = "cooldown.soul_carver.remains < ( variable.double_rm_remains - gcd.max )", ["var_name"] = "souls_before_next_rg_sequence", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "3", ["criteria"] = "cooldown.soul_carver.remains < ( variable.double_rm_remains - gcd.max - 3 )", ["var_name"] = "souls_before_next_rg_sequence", }, { ["enabled"] = true, ["action"] = "trinket1", ["criteria"] = "! variable.trinket_1_buffs || ( variable.trinket_1_buffs & ( ( buff.rending_strike.up & buff.glaive_flurry.up ) || ( prev_gcd.1.reavers_glaive ) || ( buff.thrill_of_the_fight_damage.remains > 8 ) || ( buff.reavers_glaive.up & cooldown.the_hunt.remains < 5 ) ) )", ["slot"] = "trinket1", }, { ["enabled"] = true, ["action"] = "trinket2", ["criteria"] = "! variable.trinket_2_buffs || ( variable.trinket_2_buffs & ( ( buff.rending_strike.up & buff.glaive_flurry.up ) || ( prev_gcd.1.reavers_glaive ) || ( buff.thrill_of_the_fight_damage.remains > 8 ) || ( buff.reavers_glaive.up & cooldown.the_hunt.remains < 5 ) ) )", ["slot"] = "trinket2", }, { ["enabled"] = true, ["action"] = "potion", ["criteria"] = "( buff.rending_strike.up & buff.glaive_flurry.up ) || prev_gcd.1.reavers_glaive", ["use_off_gcd"] = 1, }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "buff.glaive_flurry.up || buff.rending_strike.up || prev_gcd.1.reavers_glaive", ["list_name"] = "rg_sequence", }, { ["enabled"] = true, ["action"] = "metamorphosis", ["criteria"] = "time < 5 || cooldown.fel_devastation.remains >= 20", ["use_off_gcd"] = 1, }, { ["enabled"] = true, ["criteria"] = "! buff.reavers_glaive.up & ( buff.art_of_the_glaive.stack + soul_fragments ) < 20", ["action"] = "the_hunt", }, { ["enabled"] = true, ["criteria"] = "variable.can_spb & ( soul_fragments > 2 || prev_gcd.1.sigil_of_spite || prev_gcd.1.soul_carver || ( spell_targets.spirit_bomb >= 4 & talent.fallout.enabled & cooldown.immolation_aura.remains < gcd.max ) )", ["action"] = "spirit_bomb", }, { ["enabled"] = true, ["criteria"] = "( spell_targets.spirit_bomb >= 4 ) || ( ! buff.reavers_glaive.up || ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + gcd.max ) ) )", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "( talent.ascending_flame.enabled || ( ! prev_gcd.1.sigil_of_flame & dot.sigil_of_flame.remains < ( 4 - talent.quickened_sigils.enabled ) ) ) & ( ! buff.reavers_glaive.up || ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + gcd.max ) ) )", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["criteria"] = "buff.reavers_glaive.up & spell_targets.spirit_bomb < 4 & debuff.reavers_mark.up & ( variable.double_rm_remains > ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) & ( ! buff.thrill_of_the_fight_damage.up || ( buff.thrill_of_the_fight_damage.remains < ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) > ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) & ( ( variable.souls_before_next_rg_sequence >= 20 ) || ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + cooldown.the_hunt.remains + action.the_hunt.execute_time ) ) )", ["action"] = "run_action_list", ["list_name"] = "rg_overflow", }, { ["enabled"] = true, ["criteria"] = "boss & ( fight_remains < 10 || target.time_to_die < 10 )", ["action"] = "call_action_list", ["list_name"] = "ar_execute", }, { ["enabled"] = true, ["criteria"] = "! buff.reavers_glaive.up & ( variable.double_rm_remains <= ( execute_time + ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( soul_fragments < 3 & ( ( buff.art_of_the_glaive.stack + soul_fragments ) >= 20 ) )", ["action"] = "soul_cleave", }, { ["enabled"] = true, ["criteria"] = "! buff.reavers_glaive.up & ( variable.double_rm_remains <= ( execute_time + ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( ( buff.art_of_the_glaive.stack + soul_fragments ) >= 20 )", ["action"] = "spirit_bomb", }, { ["enabled"] = true, ["criteria"] = "! buff.reavers_glaive.up & ( variable.double_rm_remains <= ( execute_time + ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( ( buff.art_of_the_glaive.stack + ( spell_targets >? 5 ) ) >= 20 )", ["action"] = "bulk_extraction", }, { ["enabled"] = true, ["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) >= 30 & ( ( ! buff.thrill_of_the_fight_attack_speed.up || ( variable.double_rm_remains <= ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) || ( spell_targets.spirit_bomb >= 4 ) ) & ! ( buff.rending_strike.up || buff.glaive_flurry.up )", ["action"] = "reavers_glaive", }, { ["enabled"] = true, ["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) < 30 & ( ( ! buff.thrill_of_the_fight_attack_speed.up || ( variable.double_rm_remains <= ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) || ( spell_targets.spirit_bomb >= 4 ) )", ["action"] = "call_action_list", ["list_name"] = "rg_prep", }, { ["enabled"] = true, ["criteria"] = "( ! talent.fiery_demise.enabled & active_dot.fiery_brand = 0 ) || ( talent.down_in_flames.enabled & ( full_recharge_time < gcd.max ) ) || ( talent.fiery_demise.enabled & active_dot.fiery_brand = 0 & ( buff.reavers_glaive.up || cooldown.the_hunt.remains < 5 || buff.art_of_the_glaive.stack >= 15 || buff.thrill_of_the_fight_damage.remains > 5 ) )", ["action"] = "fiery_brand", }, { ["enabled"] = true, ["criteria"] = "buff.thrill_of_the_fight_damage.up || ( fury >= 80 & ( variable.can_spb || variable.can_spb_soon ) ) || ( ( soul_fragments + buff.art_of_the_glaive.stack + ( ( 1.1 * ( 1 + raw_haste_pct ) ) * ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) ) < 20 )", ["action"] = "sigil_of_spite", }, { ["enabled"] = true, ["criteria"] = "variable.can_spb", ["action"] = "spirit_bomb", }, { ["enabled"] = true, ["criteria"] = "( variable.can_spb || variable.can_spb_soon ) & fury < 40", ["action"] = "felblade", }, { ["enabled"] = true, ["action"] = "vengeful_retreat", ["criteria"] = "( variable.can_spb || variable.can_spb_soon ) & fury < 40 & ! cooldown.felblade.up & talent.unhindered_assault.enabled", ["use_off_gcd"] = 1, }, { ["enabled"] = true, ["criteria"] = "( variable.can_spb || variable.can_spb_soon || variable.can_spb_one_gcd ) & fury < 40", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "buff.thrill_of_the_fight_damage.up || ( ( soul_fragments + buff.art_of_the_glaive.stack + ( ( 1.1 * ( 1 + raw_haste_pct ) ) * ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) ) < 20 )", ["action"] = "soul_carver", }, { ["enabled"] = true, ["criteria"] = "! buff.metamorphosis.up & ( ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + 2 ) ) || ( spell_targets.spirit_bomb >= 4 ) ) & ( ( action.fracture.full_recharge_time < ( 2 + gcd.max ) ) || ( ! variable.single_target & buff.thrill_of_the_fight_damage.up ) )", ["action"] = "fel_devastation", }, { ["enabled"] = true, ["criteria"] = "cooldown.fel_devastation.remains < gcd.max & fury < 50", ["action"] = "felblade", }, { ["enabled"] = true, ["action"] = "vengeful_retreat", ["criteria"] = "cooldown.fel_devastation.remains < gcd.max & fury < 50 & ! cooldown.felblade.up & talent.unhindered_assault.enabled", ["use_off_gcd"] = 1, }, { ["enabled"] = true, ["criteria"] = "cooldown.fel_devastation.remains < gcd.max & fury < 50", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "( full_recharge_time < gcd.max ) || buff.metamorphosis.up || variable.can_spb || variable.can_spb_soon || buff.warblades_hunger.stack >= 5", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "soul_fragments >= 1", ["action"] = "soul_cleave", }, { ["enabled"] = true, ["criteria"] = "spell_targets >= 3", ["action"] = "bulk_extraction", }, { ["action"] = "fracture", ["enabled"] = true, }, { ["action"] = "soul_cleave", ["enabled"] = true, }, { ["action"] = "shear", ["enabled"] = true, }, { ["action"] = "felblade", ["enabled"] = true, }, { ["action"] = "throw_glaive", ["enabled"] = true, }, }, ["metamorphosis"] = { { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.remains < ( gcd.max * 3 )", ["action"] = "fel_desolation", }, { ["enabled"] = true, ["criteria"] = "fury < 50 & ( buff.metamorphosis.remains < ( gcd.max * 3 ) ) & cooldown.fel_desolation.up", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "fury < 50 & ! cooldown.felblade.up & ( buff.metamorphosis.remains < ( gcd.max * 3 ) ) & cooldown.fel_desolation.up", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "talent.illuminated_sigils.enabled & talent.cycle_of_binding.enabled & charges = max_charges", ["action"] = "sigil_of_doom", }, { ["action"] = "immolation_aura", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! talent.student_of_suffering.enabled & ( talent.ascending_flame.enabled || ( ! talent.ascending_flame.enabled & ! prev_gcd.1.sigil_of_doom & ( dot.sigil_of_doom.remains < ( 4 - talent.quickened_sigils.enabled ) ) ) )", ["action"] = "sigil_of_doom", }, { ["enabled"] = true, ["criteria"] = "talent.student_of_suffering.enabled & ! prev_gcd.1.sigil_of_flame & ! prev_gcd.1.sigil_of_doom & ( buff.student_of_suffering.remains < ( 4 - talent.quickened_sigils.enabled ) )", ["action"] = "sigil_of_doom", }, { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.remains < ( ( 2 - talent.quickened_sigils.enabled ) + ( charges * gcd.max ) )", ["action"] = "sigil_of_doom", }, { ["enabled"] = true, ["criteria"] = "soul_fragments <= 3 & ( soul_fragments >= 2 || prev_gcd.1.sigil_of_spite )", ["action"] = "fel_desolation", }, { ["enabled"] = true, ["criteria"] = "( ( cooldown.sigil_of_spite.remains < execute_time || cooldown.soul_carver.remains < execute_time ) & cooldown.fel_desolation.remains < ( execute_time + gcd.max ) & fury < 50 )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "( ! talent.spirit_bomb.enabled || ( variable.single_target & ! buff.demonsurge_spirit_burst.up ) ) || ( ( ( soul_fragments + 3 ) <= 6 ) & fury >= 40 & ! prev_gcd.1.sigil_of_spite )", ["action"] = "soul_carver", }, { ["enabled"] = true, ["criteria"] = "! talent.spirit_bomb.enabled || ( fury >= 80 & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( soul_fragments <= ( 2 - talent.soul_sigils.rank ) )", ["action"] = "sigil_of_spite", }, { ["enabled"] = true, ["criteria"] = "variable.can_spburst & buff.demonsurge_spirit_burst.up", ["action"] = "spirit_burst", }, { ["action"] = "fel_desolation", ["enabled"] = true, }, { ["action"] = "the_hunt", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.demonsurge_soul_sunder.up & ! buff.demonsurge_spirit_burst.up & ! variable.can_spburst_one_gcd", ["action"] = "soul_sunder", }, { ["enabled"] = true, ["criteria"] = "variable.can_spburst & ( talent.fiery_demise.enabled & dot.fiery_brand.ticking || variable.big_aoe ) & buff.metamorphosis.remains > ( gcd.max * 2 )", ["action"] = "spirit_burst", }, { ["enabled"] = true, ["criteria"] = "fury < 40 & ( variable.can_spburst || variable.can_spburst_soon ) & ( buff.demonsurge_spirit_burst.up || talent.fiery_demise.enabled & dot.fiery_brand.ticking || variable.big_aoe )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "fury < 40 & ( variable.can_spburst || variable.can_spburst_soon || variable.can_spburst_one_gcd ) & ( buff.demonsurge_spirit_burst.up || talent.fiery_demise.enabled & dot.fiery_brand.ticking || variable.big_aoe )", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "variable.can_spburst_one_gcd & ( buff.demonsurge_spirit_burst.up || variable.big_aoe ) & ! prev_gcd.1.fracture", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "variable.single_target & ! variable.dont_soul_cleave", ["action"] = "soul_sunder", }, { ["enabled"] = true, ["criteria"] = "variable.can_spburst & buff.metamorphosis.remains > ( gcd.max * 2 )", ["action"] = "spirit_burst", }, { ["enabled"] = true, ["criteria"] = "fury.deficit >= 40", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "! variable.dont_soul_cleave & ! ( variable.big_aoe & ( variable.can_spburst || variable.can_spburst_soon ) )", ["action"] = "soul_sunder", }, { ["action"] = "felblade", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! prev_gcd.1.fracture", ["action"] = "fracture", }, }, ["default"] = { { ["action"] = "disrupt", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "demon_spikes", ["criteria"] = "! buff.demon_spikes.up & ( tanking || time < 5 )", ["use_off_gcd"] = 1, }, { ["enabled"] = true, ["op"] = "reset", ["action"] = "variable", ["var_name"] = "num_spawnable_souls", ["default"] = "0", }, { ["enabled"] = true, ["op"] = "max", ["action"] = "variable", ["value"] = "1", ["criteria"] = "talent.soul_sigils.enabled & cooldown.sigil_of_flame.up", ["var_name"] = "num_spawnable_souls", }, { ["enabled"] = true, ["op"] = "max", ["action"] = "variable", ["value"] = "2", ["criteria"] = "talent.fracture.enabled & cooldown.fracture.charges_fractional >= 1 & ! buff.metamorphosis.up", ["var_name"] = "num_spawnable_souls", }, { ["enabled"] = true, ["op"] = "max", ["action"] = "variable", ["value"] = "3", ["criteria"] = "talent.fracture.enabled & cooldown.fracture.charges_fractional >= 1 & buff.metamorphosis.up", ["var_name"] = "num_spawnable_souls", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "1", ["criteria"] = "talent.soul_carver.enabled & ( cooldown.soul_carver.remains > ( cooldown.soul_carver.duration - 3 ) )", ["var_name"] = "num_spawnable_souls", }, { ["use_off_gcd"] = 1, ["action"] = "infernal_strike", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "! hero_tree.felscarred", ["list_name"] = "ar", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "hero_tree.felscarred", ["list_name"] = "fs", }, }, ["precombat"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "spell_targets.spirit_bomb = 1", ["var_name"] = "single_target", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "spell_targets.spirit_bomb >= 2 & spell_targets.spirit_bomb <= 5", ["var_name"] = "small_aoe", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "spell_targets.spirit_bomb >= 6", ["var_name"] = "big_aoe", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff )", ["var_name"] = "trinket_1_buffs", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff )", ["var_name"] = "trinket_2_buffs", }, { ["action"] = "arcane_torrent", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "hero_tree.aldrachi_reaver || ( hero_tree.felscarred & talent.student_of_suffering.enabled )", ["action"] = "sigil_of_flame", }, { ["action"] = "immolation_aura", ["enabled"] = true, }, }, ["rg_sequence_filler"] = { { ["action"] = "felblade", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! buff.rending_strike.up", ["action"] = "fracture", }, { ["action"] = "sigil_of_flame", ["enabled"] = true, }, { ["action"] = "sigil_of_spite", ["enabled"] = true, }, { ["action"] = "soul_carver", ["enabled"] = true, }, { ["action"] = "fel_devastation", ["enabled"] = true, }, { ["action"] = "throw_glaive", ["enabled"] = true, }, }, ["rg_sequence"] = { { ["enabled"] = true, ["criteria"] = "( fury < 30 & ( ( ! variable.rg_enhance_cleave & buff.glaive_flurry.up & buff.rending_strike.up ) || ( variable.rg_enhance_cleave & ! buff.rending_strike.up ) ) ) || ( action.fracture.charges_fractional < 1 & ( ( variable.rg_enhance_cleave & buff.rending_strike.up & buff.glaive_flurry.up ) || ( ! variable.rg_enhance_cleave & ! buff.glaive_flurry.up ) ) )", ["action"] = "call_action_list", ["list_name"] = "rg_sequence_filler", }, { ["enabled"] = true, ["criteria"] = "( ( variable.rg_enhance_cleave & buff.rending_strike.up & buff.glaive_flurry.up ) || ( ! variable.rg_enhance_cleave & ! buff.glaive_flurry.up ) )", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "( ( variable.rg_enhance_cleave & buff.rending_strike.up & buff.glaive_flurry.up ) || ( ! variable.rg_enhance_cleave & ! buff.glaive_flurry.up ) )", ["action"] = "shear", }, { ["enabled"] = true, ["criteria"] = "( ( ! variable.rg_enhance_cleave & buff.glaive_flurry.up & buff.rending_strike.up ) || ( variable.rg_enhance_cleave & ! buff.rending_strike.up ) )", ["action"] = "soul_cleave", }, { ["enabled"] = true, ["criteria"] = "buff.rending_strike.up & ! buff.glaive_flurry.up", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "buff.rending_strike.up & ! buff.glaive_flurry.up", ["action"] = "shear", }, { ["enabled"] = true, ["criteria"] = "! buff.rending_strike.up & buff.glaive_flurry.up", ["action"] = "soul_cleave", }, }, ["meta_prep"] = { { ["enabled"] = true, ["action"] = "metamorphosis", ["criteria"] = "cooldown.sigil_of_flame.charges < 1", ["use_off_gcd"] = 1, }, { ["enabled"] = true, ["criteria"] = "talent.fiery_demise.enabled & ( ( talent.down_in_flames.enabled & charges >= max_charges ) || active_dot.fiery_brand = 0 )", ["action"] = "fiery_brand", }, { ["use_off_gcd"] = 1, ["action"] = "potion", ["enabled"] = true, }, { ["action"] = "sigil_of_flame", ["enabled"] = true, }, }, ["rg_overflow"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "1", ["var_name"] = "trigger_overflow", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "1", ["var_name"] = "rg_enhance_cleave", }, { ["enabled"] = true, ["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) >= 30 & ! buff.rending_strike.up & ! buff.glaive_flurry.up", ["action"] = "reavers_glaive", }, { ["enabled"] = true, ["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) < 30", ["action"] = "call_action_list", ["list_name"] = "rg_prep", }, }, }, ["author"] = "SimC", }, ["Feral"] = { ["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/druid_feral.simc", ["builtIn"] = true, ["date"] = 20250425.1, ["spec"] = 103, ["desc"] = "2025-04-25: SimC Update; fix 'wait'\n\n2025-03-13: Generators at 5 combo point workaround\n\n2025-02-28: TWW Season 2 update\n\n2024-10-22: 11.0.5", ["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/druid_feral.simc\n## Up to date with SimC: April 12 2025 - d935a4a\n\nactions.precombat+=/mark_of_the_wild\nactions.precombat+=/prowl,if=!buff.prowl.up\nactions.precombat+=/cat_form,if=!buff.cat_form.up\n# check if trinket slot contains a stat on use (variable is just kept in case of things like mirror not working with has_use_buff)\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff&!trinket.1.is.imperfect_ascendancy_serum&!trinket.1.is.ovinaxs_mercurial_egg&!trinket.1.is.concoction_kiss_of_death\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff&!trinket.2.is.imperfect_ascendancy_serum&!trinket.2.is.ovinaxs_mercurial_egg&!trinket.2.is.concoction_kiss_of_death\n# if we are playing 2 minute convoke, we prefer 2 minute on-use over 3 minute on-use even without berserk: heart of the lion\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=talent.convoke_the_spirits&!talent.ashamanes_guidance&variable.trinket_1_buffs&(trinket.1.cooldown.duration%%120=0||120%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=talent.convoke_the_spirits&!talent.ashamanes_guidance&variable.trinket_2_buffs&(trinket.1.cooldown.duration%%120=0||120%%trinket.1.cooldown.duration=0)\n# if we aren't playing 2 minute convoke, then we can sync 3 minute cds with berserk sans hotl\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=!(talent.convoke_the_spirits&!talent.ashamanes_guidance)&variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%%trinket.1.cooldown.duration=0||trinket.1.cooldown.duration%%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=!(talent.convoke_the_spirits&!talent.ashamanes_guidance)&variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%%trinket.2.cooldown.duration=0||trinket.2.cooldown.duration%%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%%trinket.2.cooldown.duration=0)\n# prioritize trinkets that line-up with cds->main-stat on uses->longer cd trinkets->shorter duration trinkets\nactions.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.agility)*(1.2+trinket.2.has_buff.mastery)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.agility)*(1.2+trinket.1.has_buff.mastery)*(variable.trinket_1_sync))\n\nactions+=/prowl,if=buff.bs_inc.down&!buff.prowl.up\nactions+=/cat_form,if=!buff.cat_form.up&!talent.fluid_form\nactions+=/skull_bash\nactions+=/soothe\n## Line up Power Infusion with Berserk.\n## actions+=/invoke_external_buff,name=power_infusion,if=buff.bs_inc.up||!talent.berserk_heart_of_the_lion\nactions+=/call_action_list,name=variable\n## actions+=/stop_moving,if=gcd.remains=0&equipped.ovinaxs_mercurial_egg\nactions+=/tigers_fury,if=(energy.deficit>35||combo_points=5||combo_points>=3&dot.rip.refreshable&buff.bloodtalons.up&hero_tree.wildstalker)&(boss&fight_remains<=15||(cooldown.bs_inc.remains>20&fight_remains>5)||(cooldown.bs_inc.ready&fight_remains>12||boss))\nactions+=/rake,cycle_targets=1,if=buff.shadowmeld.up||buff.prowl.up\nactions+=/natures_vigil,if=variable.regrowth&health.percent<70&(buff.bs_inc.up||buff.tigers_fury.up)\nactions+=/renewal,if=variable.regrowth&health.percent<70\nactions+=/adaptive_swarm,cycle_targets=1,if=dot.adaptive_swarm_damage.stack<3&(!dot.adaptive_swarm_damage.ticking||dot.adaptive_swarm_damage.remains<2)&!action.adaptive_swarm.in_flight&(spell_targets=1||!talent.unbridled_swarm)&(dot.rip.ticking||hero_tree.druid_of_the_claw)\nactions+=/adaptive_swarm,cycle_targets=1,if=buff.cat_form.up&dot.adaptive_swarm_damage.stack<3&talent.unbridled_swarm.enabled&spell_targets.swipe_cat>1&dot.rip.ticking\nactions+=/ferocious_bite,if=buff.apex_predators_craving.up&!(variable.need_bt&active_bt_triggers=2)\nactions+=/call_action_list,name=cooldown,strict=1,if=dot.rip.ticking\n# keep using this archaic 'nonsense' for veinripper because its better idk ill fix soon tm\nactions+=/rip,if=talent.veinripper&spell_targets=1&hero_tree.wildstalker&!(talent.raging_fury&talent.veinripper)&(buff.bloodtalons.up||!talent.bloodtalons)&(dot.rip.remains<5&buff.tigers_fury.remains>10&combo_points>=3||((buff.tigers_fury.remains<3&combo_points=5)||buff.tigers_fury.remains<=1)&buff.tigers_fury.up&combo_points>=3&remains=3&refreshable&cooldown.tigers_fury.remains>25||buff.tigers_fury.remains<5&variable.rip_duration>cooldown.tigers_fury.remains&cooldown.tigers_fury.remains>=dot.rip.remains)\nactions+=/call_action_list,name=builder,if=(buff.bs_inc.up&!buff.ravage.up&!buff.coiled_to_spring.up&hero_tree.druid_of_the_claw&talent.coiled_to_spring&spell_targets<=2)||buff.bloodtalons.stack=0&active_bt_triggers=2\nactions+=/wait,sec=cooldown.tigers_fury.remains,if=combo_points=5&cooldown.tigers_fury.remains<3&spell_targets=1\nactions+=/call_action_list,name=finisher,if=combo_points=5\n## [Syrif] - combo_points<5 added to stop from sending generators inappropriately\nactions+=/call_action_list,name=builder,if=spell_targets.swipe_cat=1&combo_points<5\nactions+=/call_action_list,name=aoe_builder,if=spell_targets.swipe_cat>=2&combo_points<5\nactions+=/regrowth,if=buff.predatory_swiftness.up&variable.regrowth&selection_time>gcd.max\n\n# maintain thrash highest prio\nactions.aoe_builder+=/thrash_cat,if=refreshable&!talent.thrashing_claws&!(variable.need_bt&buff.bt_thrash.up)\n# avoid capping brs charges. Also send brutal slashes/ws swipe in aoe, even if we need to proc bloodtalons, during berserk.\nactions.aoe_builder+=/brutal_slash,cycle_targets=1,if=(cooldown.brutal_slash.full_recharge_time<4||time_to_die<4||raid_event.adds.remains<4||(buff.bs_inc.up&spell_targets>=3-hero_tree.druid_of_the_claw))&!(variable.need_bt&buff.bt_swipe.up&(buff.bs_inc.down||spell_targets<3-hero_tree.druid_of_the_claw))\nactions.aoe_builder+=/swipe_cat,if=talent.wild_slashes&(time_to_die<4||raid_event.adds.remains<4||buff.bs_inc.up&spell_targets>=3-hero_tree.druid_of_the_claw)&!(variable.need_bt&buff.bt_swipe.up&(buff.bs_inc.down||spell_targets<3-hero_tree.druid_of_the_claw))\n# with wild slashes we swipe at 5+ targets over raking/moonfire\nactions.aoe_builder+=/swipe_cat,if=time_to_die<4||(talent.wild_slashes&spell_targets.swipe_cat>4&!(variable.need_bt&buff.bt_swipe.up))\nactions.aoe_builder+=/prowl,if=dot.rake.refreshable||dot.rake.pmultiplier<1.4&!(variable.need_bt&buff.bt_rake.up)&action.rake.ready&gcd.remains=0&!buff.sudden_ambush.up&!variable.cc_capped\nactions.aoe_builder+=/shadowmeld,if=dot.rake.refreshable||dot.rake.pmultiplier<1.4&!(variable.need_bt&buff.bt_rake.up)&action.rake.ready&!buff.sudden_ambush.up&!buff.prowl.up&!variable.cc_capped\n# dcr rake > moonfire\nactions.aoe_builder+=/rake,cycle_targets=1,if=refreshable&talent.doubleclawed_rake&!(variable.need_bt&buff.bt_rake.up)&!variable.cc_capped\n# at 3t with wild slashes, swipe is better than moonfiring/st rake\nactions.aoe_builder+=/swipe_cat,if=talent.wild_slashes&spell_targets.swipe_cat>2&!(variable.need_bt&buff.bt_swipe.up)\n# if wildstalker make sure you have at least one rake up\nactions.aoe_builder+=/rake,cycle_targets=1,if=!dot.rake.ticking&hero_tree.wildstalker\n# li moonfire is better than non-dcr rake in aoe if we already have 1 rake\nactions.aoe_builder+=/moonfire_cat,cycle_targets=1,if=refreshable&!(variable.need_bt&buff.bt_moonfire.up)&!variable.cc_capped\nactions.aoe_builder+=/rake,cycle_targets=1,if=refreshable&!(variable.need_bt&buff.bt_rake.up)&!variable.cc_capped\n# fillers\nactions.aoe_builder+=/brutal_slash,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.aoe_builder+=/swipe_cat,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.aoe_builder+=/shred,if=!buff.sudden_ambush.up&!variable.easy_swipe&!(variable.need_bt&buff.bt_shred.up)\nactions.aoe_builder+=/thrash_cat,if=!talent.thrashing_claws&!(variable.need_bt&buff.bt_thrash.up)\n# fallback bt actions\nactions.aoe_builder+=/rake,cycle_targets=1,if=talent.doubleclawed_rake&buff.sudden_ambush.up&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/moonfire_cat,cycle_targets=1,if=variable.need_bt&buff.bt_moonfire.down\nactions.aoe_builder+=/rake,cycle_targets=1,if=buff.sudden_ambush.up&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/shred,if=variable.need_bt&buff.bt_shred.down&!variable.easy_swipe\nactions.aoe_builder+=/rake,cycle_targets=1,if=dot.rake.pmultiplier<1.6&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/thrash_cat,if=variable.need_bt&buff.bt_shred.down\n\nactions.builder+=/prowl,if=gcd.remains=0&energy>=35&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)*!(variable.need_bt&buff.bt_rake.up)&buff.tigers_fury.up&!buff.shadowmeld.up\nactions.builder+=/shadowmeld,if=gcd.remains=0&energy>=35&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)*!(variable.need_bt&buff.bt_rake.up)&buff.tigers_fury.up&!buff.prowl.up\n# upgrade to stealth rakes, otherwise refresh in pandemic. Delay rake as long as possible if it would downgrade\nactions.builder+=/rake,if=((refreshable&persistent_multiplier>=dot.rake.pmultiplier||dot.rake.remains<3.5)||buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier)&!(variable.need_bt&buff.bt_rake.up)&(hero_tree.wildstalker||!buff.bs_inc.up)\n# bt check is due to the overcap line, comes up with convoke/apex bites\nactions.builder+=/shred,if=buff.sudden_ambush.up&buff.bs_inc.up&!(variable.need_bt&buff.bt_shred.up&active_bt_triggers=2)\nactions.builder+=/brutal_slash,if=cooldown.brutal_slash.full_recharge_time<4&!(variable.need_bt&buff.bt_swipe.up)\nactions.builder+=/moonfire_cat,if=refreshable\nactions.builder+=/thrash_cat,if=refreshable&!talent.thrashing_claws&!buff.bs_inc.up\nactions.builder+=/shred,if=buff.clearcasting.up&!(variable.need_bt&buff.bt_shred.up)\n# pool energy if we need to refresh dot in the next 1.5s [Hekili] TODO: Sim character to see how frequently this fires, determine if `wait` value should be adjusted.\nactions.builder+=/pool_resource,if=variable.dot_refresh_soon&energy.deficit>70&!variable.need_bt&!buff.bs_inc.up&cooldown.tigers_fury.remains>3\nactions.builder+=/brutal_slash,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.builder+=/shred,if=!(variable.need_bt&buff.bt_shred.up)\nactions.builder+=/rake,if=refreshable\nactions.builder+=/thrash_cat,if=refreshable&!talent.thrashing_claws\nactions.builder+=/swipe_cat,if=variable.need_bt&buff.bt_swipe.down\n# clip rake for bt if it wont downgrade its snapshot\nactions.builder+=/rake,if=variable.need_bt&buff.bt_rake.down&persistent_multiplier>=dot.rake.pmultiplier\nactions.builder+=/moonfire_cat,if=variable.need_bt&buff.bt_moonfire.down\nactions.builder+=/thrash_cat,if=variable.need_bt&buff.bt_thrash.down\n\nactions.cooldown+=/incarnation,if=fight_remains>17||boss\n# non-stat on use trinkets get used on cooldown, so long as it wont interfere with a stat on-use trinket\nactions.cooldown+=/use_item,slot=trinket1,if=trinket.1.has_use_damage&(trinket.2.cooldown.remains>20&(!trinket.1.is.junkmaestros_mega_magnet||cooldown.bestinslots.remains>20||!equipped.bestinslots)||!trinket.2.has_use_buff&(cooldown.bestinslots.remains>20||!equipped.bestinslots)||cooldown.tigers_fury.remains<25&cooldown.tigers_fury.remains>20)||boss&fight_remains<5\nactions.cooldown+=/use_item,slot=trinket2,if=trinket.2.has_use_damage&(trinket.1.cooldown.remains>20&(!trinket.2.is.junkmaestros_mega_magnet||cooldown.bestinslots.remains>20||!equipped.bestinslots)||!trinket.1.has_use_buff&(cooldown.bestinslots.remains>20||!equipped.bestinslots)||cooldown.tigers_fury.remains<25&cooldown.tigers_fury.remains>20)||boss&fight_remains<5\n# berserk with tigers fury\nactions.cooldown+=/berserk,if=buff.tigers_fury.up&(fight_remains>12||boss)\nactions.cooldown+=/berserking,if=buff.bs_inc.up\n# todo make last set of cds line up again now that we know potions.remains is the syntax\nactions.cooldown+=/potion,if=buff.bs_inc.up||boss&fight_remains<32||(!variable.lastzerk&variable.lastconvoke&cooldown.convoke_the_spirits.remains<10)\n# non 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.\nactions.cooldown+=/use_items\n# stat on-use trinkets, prefers trinket with higher priority.\nactions.cooldown+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&(buff.bs_inc.up||((buff.tigers_fury.up&cooldown.tigers_fury.remains>25)&(cooldown.convoke_the_spirits.remains<6||(variable.trinket_2_buffs&cooldown.convoke_the_spirits.remains-trinket.2.cooldown.remains>0)||!talent.convoke_the_spirits&cooldown.bs_inc.remains-trinket.2.cooldown.remains>0)))&(!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains&boss\nactions.cooldown+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&(buff.bs_inc.up||((buff.tigers_fury.up&cooldown.tigers_fury.remains>25)&(cooldown.convoke_the_spirits.remains<6||(variable.trinket_1_buffs&cooldown.convoke_the_spirits.remains-trinket.1.cooldown.remains>0)||!talent.convoke_the_spirits&cooldown.bs_inc.remains-trinket.1.cooldown.remains>0)))&(!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains&boss\n## actions.cooldown+=/do_treacherous_transmitter_task,if=buff.tigers_fury.up||fight_remains<22\nactions.cooldown+=/feral_frenzy,if=combo_points<=1+buff.bs_inc.up&(buff.tigers_fury.up||!talent.savage_fury||!hero_tree.wildstalker||boss&fight_remains45||buff.bs_inc.up||!talent.berserk_heart_of_the_lion)&(buff.tigers_fury.up&(combo_points<=4||buff.bs_inc.up&combo_points<=3)&(target.time_to_die>5-talent.ashamanes_guidance.enabled||boss))\n\n# maintain/upgrade pws, if we have 6.5+s left on pw, we will instead bite if we have rampant ferocity talented. Without rampant, we will bite a vined target with 6 or fewer targets. If we have Ravage, we use specifically Ravage at 7 or fewer targets.\nactions.finisher+=/primal_wrath,if=spell_targets.primal_wrath>1&((dot.primal_wrath.remains<6.5&!buff.bs_inc.up||dot.primal_wrath.refreshable)||(!talent.rampant_ferocity.enabled&(spell_targets.primal_wrath>1&!dot.bloodseeker_vines.ticking&!buff.ravage.up||spell_targets.primal_wrath>6+talent.ravage)))\n# rip if single target or pw isnt up. Rip with bloodtalons if talented. If tigers fury will be up before rip falls off, then delay refresh\nactions.finisher+=/rip,cycle_targets=1,if=refreshable&(!talent.primal_wrath||spell_targets=1)&(buff.bloodtalons.up||!talent.bloodtalons)&(buff.tigers_fury.up||dot.rip.remains?dot.rip.remains)\nactions.variable+=/variable,name=rip_max_pandemic_duration,value=((4+(4*combo_points))*(1-(0.2*talent.circle_of_life_and_death))*(1+(0.25*talent.veinripper)))*0.3\n# this returns true if we have a dot nearing pandemic range\nactions.variable+=/variable,name=dot_refresh_soon,value=(!talent.thrashing_claws&(dot.thrash_cat.remains-dot.thrash_cat.duration*0.3<=2))||(talent.lunar_inspiration&(dot.moonfire_cat.remains-dot.moonfire_cat.duration*0.3<=2))||((dot.rake.pmultiplier<1.6||buff.sudden_ambush.up)&(dot.rake.remains-dot.rake.duration*0.3<=2))\n# try to proc bt if we have 1 or 0 sacks of bloodtalons\nactions.variable+=/variable,name=need_bt,value=talent.bloodtalons&buff.bloodtalons.stack<=1\n# capped on clearcasting stacks\nactions.variable+=/variable,name=cc_capped,value=buff.clearcasting.stack=(1+talent.moment_of_clarity)\n# checks if theres exactly 1 convoke remaining in sim\nactions.variable+=/variable,name=lastconvoke,value=(cooldown.convoke_the_spirits.remains+cooldown.convoke_the_spirits.duration)>fight_remains&cooldown.convoke_the_spirits.remainsfight_remains&cooldown.convoke_the_spirits.remainsfight_remains&cooldown.potions.remains+151&(buff.tigers_fury.up&(buff.bloodtalons.up||!talent.bloodtalons.enabled)&(!talent.lunar_inspiration.enabled||dot.moonfire_cat.ticking)&!ticking)\nactions.opener+=/rip,if=active_enemies=1&(buff.tigers_fury.up&(buff.bloodtalons.up||!talent.bloodtalons.enabled)&dot.rake.ticking&(!talent.lunar_inspiration.enabled||dot.moonfire_cat.ticking)&!ticking)\n\nactions.balance=sunfire,if=refreshable||(active_enemies>1&(dot.sunfire.refreshable||active_dot.sunfire4||(active_enemies>1&buff.lunar_empowerment.up)\nactions.balance+=/solar_wrath,if=active_enemies>2&buff.solar_empowerment.up\nactions.balance+=/starsurge\nactions.balance+=/solar_wrath,if=buff.solar_empowerment.up\nactions.balance+=/lunar_strike,if=buff.lunar_empowerment.up\nactions.balance+=/solar_wrath", ["version"] = 20200222, ["warnings"] = "Imported 8 action lists.\n", ["lists"] = { ["opener"] = { { ["action"] = "tigers_fury", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! ticking || buff.prowl.up", ["action"] = "rake", }, { ["enabled"] = true, ["criteria"] = "! ticking", ["action"] = "moonfire_cat", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1 & ( buff.tigers_fury.up & ( buff.bloodtalons.up || ! talent.bloodtalons.enabled ) & ( ! talent.lunar_inspiration.enabled || dot.moonfire_cat.ticking ) & ! ticking )", ["action"] = "primal_wrath", }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1 & ( buff.tigers_fury.up & ( buff.bloodtalons.up || ! talent.bloodtalons.enabled ) & dot.rake.ticking & ( ! talent.lunar_inspiration.enabled || dot.moonfire_cat.ticking ) & ! ticking )", ["action"] = "rip", }, }, ["generators_aoe"] = { { ["enabled"] = true, ["for_next"] = 1, ["action"] = "pool_resource", }, { ["enabled"] = true, ["criteria"] = "( refreshable || active_dot.thrash_cat < active_enemies % 2 ) & spell_targets.thrash_cat > 2 || talent.scent_of_blood.enabled & buff.scent_of_blood.down & spell_targets.thrash_cat > 3 || ! ticking & azerite.wild_fleshrending.enabled", ["action"] = "thrash_cat", }, { ["enabled"] = true, ["for_next"] = 1, ["action"] = "pool_resource", }, { ["enabled"] = true, ["criteria"] = "spell_targets.brutal_slash > desired_targets", ["action"] = "brutal_slash", }, { ["enabled"] = true, ["for_next"] = 1, ["action"] = "pool_resource", }, { ["enabled"] = true, ["criteria"] = "buff.scent_of_blood.up", ["action"] = "swipe_cat", }, }, ["default"] = { { ["enabled"] = true, ["criteria"] = "! buff.prowl.up & ! buff.shadowmeld.up", ["action"] = "skull_bash", }, { ["enabled"] = true, ["action"] = "run_action_list", ["criteria"] = "talent.balance_affinity.enabled & buff.moonkin_form.up", ["list_name"] = "balance", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "! opener_done & talent.sabertooth.enabled & ( buff.berserk.up || buff.incarnation.up )", ["list_name"] = "opener", }, { ["enabled"] = true, ["criteria"] = "! buff.cat_form.up", ["action"] = "cat_form", }, { ["enabled"] = true, ["criteria"] = "buff.prowl.up || buff.shadowmeld.up", ["action"] = "rake", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cooldowns", }, { ["enabled"] = true, ["criteria"] = "dot.rip.ticking & dot.rip.remains < 3 & target.time_to_die > 10 & ( talent.sabertooth.enabled )", ["action"] = "ferocious_bite", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "talent.sabertooth.enabled & combo_points > spell_targets.thrash_cat & dot.rip.ticking & dot.rip.remains < 3 & target.time_to_die > dot.rip.remains + variable.rip_ticks * action.rip.tick_time", ["action"] = "ferocious_bite", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "run_action_list", ["criteria"] = "combo_points > 4", ["list_name"] = "finishers", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "spell_targets.thrash_cat > 1", ["list_name"] = "generators_aoe", }, { ["enabled"] = true, ["action"] = "run_action_list", ["list_name"] = "generators", }, }, ["precombat"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "0", ["var_name"] = "use_thrash", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "2", ["var_name"] = "use_thrash", ["criteria"] = "azerite.wild_fleshrending.enabled", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "8", ["var_name"] = "rip_ticks", }, { ["enabled"] = true, ["criteria"] = "buff.moonkin_form.down & talent.bloodtalons.enabled", ["action"] = "regrowth", }, { ["enabled"] = true, ["name"] = "azsharas_font_of_power", ["action"] = "azsharas_font_of_power", }, { ["enabled"] = true, ["criteria"] = "buff.moonkin_form.down", ["action"] = "prowl", }, { ["action"] = "potion", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.moonkin_form.down", ["action"] = "berserk", }, { ["enabled"] = true, ["criteria"] = "buff.moonkin_form.down & buff.tigers_fury.down", ["action"] = "tigers_fury", }, { ["enabled"] = true, ["criteria"] = "buff.moonkin_form.down", ["action"] = "cat_form", }, }, ["generators"] = { { ["enabled"] = true, ["criteria"] = "talent.bloodtalons.enabled & buff.predatory_swiftness.up & buff.bloodtalons.down & combo_points = 4 & dot.rake.remains < 4", ["action"] = "regrowth", }, { ["enabled"] = true, ["criteria"] = "talent.bloodtalons.enabled & buff.bloodtalons.down & buff.predatory_swiftness.up & talent.lunar_inspiration.enabled & dot.rake.remains < 1", ["action"] = "regrowth", }, { ["enabled"] = true, ["criteria"] = "spell_targets.brutal_slash > desired_targets & ( ! azerite.wild_fleshrending.enabled || dot.thrash_cat.ticking )", ["action"] = "brutal_slash", }, { ["enabled"] = true, ["for_next"] = 1, ["action"] = "pool_resource", }, { ["enabled"] = true, ["criteria"] = "( refreshable & spell_targets.thrash_cat > 2 )", ["action"] = "thrash_cat", }, { ["enabled"] = true, ["for_next"] = 1, ["action"] = "pool_resource", }, { ["enabled"] = true, ["criteria"] = "( talent.scent_of_blood.enabled & buff.scent_of_blood.down ) & spell_targets.thrash_cat > 3", ["action"] = "thrash_cat", }, { ["enabled"] = true, ["for_next"] = 1, ["action"] = "pool_resource", }, { ["enabled"] = true, ["criteria"] = "buff.scent_of_blood.up || ( action.swipe_cat.damage * spell_targets.swipe_cat > ( action.rake.damage + ( action.rake_bleed.tick_damage * 5 ) ) )", ["action"] = "swipe_cat", }, { ["enabled"] = true, ["for_next"] = 1, ["action"] = "pool_resource", }, { ["enabled"] = true, ["criteria"] = "! ticking || ( ! talent.bloodtalons.enabled & remains < duration * 0.3 ) & target.time_to_die > 4", ["action"] = "rake", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["for_next"] = 1, ["action"] = "pool_resource", }, { ["enabled"] = true, ["criteria"] = "talent.bloodtalons.enabled & buff.bloodtalons.up & ( ( remains <= 7 ) & persistent_multiplier > dot.rake.pmultiplier * 0.85 ) & target.time_to_die > 4", ["action"] = "rake", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.bloodtalons.up & buff.predatory_swiftness.down & combo_points < 5", ["action"] = "moonfire_cat", }, { ["enabled"] = true, ["criteria"] = "refreshable", ["action"] = "moonfire_cat", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "( ! azerite.wild_fleshrending.enabled || dot.thrash_cat.ticking ) & buff.tigers_fury.up & ( raid_event.adds.in > ( 1 + max_charges - charges_fractional ) * recharge_time )", ["action"] = "brutal_slash", }, { ["enabled"] = true, ["for_next"] = 1, ["action"] = "pool_resource", }, { ["enabled"] = true, ["criteria"] = "refreshable & ( ( variable.use_thrash = 2 & ( ! buff.incarnation.up || azerite.wild_fleshrending.enabled ) ) || spell_targets.thrash_cat > 1 )", ["action"] = "thrash_cat", }, { ["enabled"] = true, ["for_next"] = 1, ["action"] = "pool_resource", }, { ["enabled"] = true, ["criteria"] = "spell_targets.swipe_cat > 1", ["action"] = "swipe_cat", }, { ["enabled"] = true, ["criteria"] = "dot.rake.remains > ( action.shred.cost + action.rake.cost - energy ) % energy.regen || buff.clearcasting.react", ["action"] = "shred", }, }, ["finishers"] = { { ["enabled"] = true, ["criteria"] = "buff.predatory_swiftness.up & talent.bloodtalons.enabled & buff.bloodtalons.stack < 2", ["action"] = "regrowth", }, { ["enabled"] = true, ["for_next"] = 1, ["action"] = "pool_resource", }, { ["enabled"] = true, ["criteria"] = "buff.savage_roar.down", ["action"] = "savage_roar", }, { ["enabled"] = true, ["for_next"] = 1, ["action"] = "pool_resource", }, { ["enabled"] = true, ["criteria"] = "spell_targets.primal_wrath > 1 & dot.rip.remains < 4", ["action"] = "primal_wrath", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["for_next"] = 1, ["action"] = "pool_resource", }, { ["enabled"] = true, ["criteria"] = "spell_targets.primal_wrath >= 2", ["action"] = "primal_wrath", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["for_next"] = 1, ["action"] = "pool_resource", }, { ["enabled"] = true, ["criteria"] = "! talent.sabertooth.enabled & refreshable & target.time_to_die > dot.rip.remains + variable.rip_ticks * action.rip.tick_time", ["action"] = "rip", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["for_next"] = 1, ["action"] = "pool_resource", }, { ["enabled"] = true, ["criteria"] = "talent.sabertooth.enabled & ( ! ticking || remains <= duration * 0.3 & persistent_multiplier > dot.rip.pmultiplier ) & target.time_to_die > dot.rip.remains + variable.rip_ticks * ( 1 + dot.rip.ticking * 3 ) * action.rip.tick_time", ["action"] = "rip", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["for_next"] = 1, ["action"] = "pool_resource", }, { ["enabled"] = true, ["criteria"] = "buff.savage_roar.remains < 12", ["action"] = "savage_roar", }, { ["enabled"] = true, ["for_next"] = 1, ["action"] = "pool_resource", }, { ["enabled"] = true, ["criteria"] = "buff.iron_jaws.up", ["action"] = "maim", }, { ["max_energy"] = "1", ["enabled"] = true, ["action"] = "ferocious_bite", ["cycle_targets"] = 1, }, }, ["balance"] = { { ["enabled"] = true, ["criteria"] = "refreshable || ( active_enemies > 1 & ( dot.sunfire.refreshable || active_dot.sunfire < active_enemies ) )", ["action"] = "sunfire", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 4 || ( active_enemies > 1 & buff.lunar_empowerment.up )", ["action"] = "lunar_strike", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 2 & buff.solar_empowerment.up", ["action"] = "solar_wrath", }, { ["action"] = "starsurge", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.solar_empowerment.up", ["action"] = "solar_wrath", }, { ["enabled"] = true, ["criteria"] = "buff.lunar_empowerment.up", ["action"] = "lunar_strike", }, { ["action"] = "solar_wrath", ["enabled"] = true, }, }, ["cooldowns"] = { { ["enabled"] = true, ["criteria"] = "energy >= 30 & ( cooldown.tigers_fury.remains > 5 || buff.tigers_fury.up )", ["action"] = "berserk", }, { ["enabled"] = true, ["criteria"] = "energy.deficit >= 60 || buff.tigers_fury.down", ["action"] = "tigers_fury", }, { ["action"] = "berserking", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "active_enemies > desired_targets || raid_event.adds.in > 45", ["action"] = "thorns", }, { ["enabled"] = true, ["criteria"] = "buff.reckless_force.up || buff.tigers_fury.up", ["action"] = "the_unbound_force", }, { ["enabled"] = true, ["criteria"] = "buff.tigers_fury.up & buff.berserk.down", ["action"] = "memory_of_lucid_dreams", }, { ["enabled"] = true, ["criteria"] = "buff.tigers_fury.up", ["action"] = "blood_of_the_enemy", }, { ["enabled"] = true, ["criteria"] = "combo_points = 0", ["action"] = "feral_frenzy", }, { ["enabled"] = true, ["criteria"] = "active_enemies > desired_targets || ( raid_event.adds.in > 90 & energy.deficit >= 50 )", ["action"] = "focused_azerite_beam", }, { ["enabled"] = true, ["criteria"] = "active_enemies > desired_targets || raid_event.adds.in > 60", ["action"] = "purifying_blast", }, { ["enabled"] = true, ["criteria"] = "buff.tigers_fury.up", ["action"] = "guardian_of_azeroth", }, { ["enabled"] = true, ["criteria"] = "buff.tigers_fury.up", ["action"] = "concentrated_flame", }, { ["enabled"] = true, ["criteria"] = "buff.tigers_fury.up", ["action"] = "ripple_in_space", }, { ["enabled"] = true, ["criteria"] = "buff.tigers_fury.up", ["action"] = "worldvein_resonance", }, { ["enabled"] = true, ["criteria"] = "target.time_to_die < 1.5 || ( ( target.health.pct > 80 || target.health.pct <= 20 ) & target.time_to_die > 29 ) || ( target.time_to_pct_20 > 30 & target.time_to_die > 44 )", ["action"] = "reaping_flames", }, { ["enabled"] = true, ["criteria"] = "energy >= 30 & ( cooldown.tigers_fury.remains > 15 || buff.tigers_fury.up )", ["action"] = "incarnation", }, { ["enabled"] = true, ["criteria"] = "target.time_to_die < 65 || ( time_to_die < 180 & ( buff.berserk.up || buff.incarnation.up ) )", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "combo_points < 5 & energy >= action.rake.cost & dot.rake.pmultiplier < 2.1 & buff.tigers_fury.up & ( buff.bloodtalons.up || ! talent.bloodtalons.enabled ) & ( ! talent.incarnation.enabled || cooldown.incarnation.remains > 18 ) & ! buff.incarnation.up", ["action"] = "shadowmeld", }, { ["enabled"] = true, ["criteria"] = "debuff.razor_coral_debuff.down || debuff.conductive_ink_debuff.up & target.time_to_pct_30 < 1.5 || ! debuff.conductive_ink_debuff.up & ( debuff.razor_coral_debuff.stack >= 25 - 10 * debuff.blood_of_the_enemy.up || time_to_die < 40 ) & buff.tigers_fury.remains > 10", ["name"] = "ashvanes_razor_coral", ["action"] = "ashvanes_razor_coral", }, { ["enabled"] = true, ["criteria"] = "( energy.deficit >= energy.regen * 3 ) & buff.tigers_fury.down & ! azerite.jungle_fury.enabled", ["action"] = "cyclotronic_blast", ["effect_name"] = "cyclotronic_blast", }, { ["enabled"] = true, ["criteria"] = "buff.tigers_fury.up & azerite.jungle_fury.enabled", ["action"] = "cyclotronic_blast", ["effect_name"] = "cyclotronic_blast", }, { ["enabled"] = true, ["criteria"] = "energy.deficit >= 50", ["action"] = "azsharas_font_of_power", ["effect_name"] = "azsharas_font_of_power", }, { ["enabled"] = true, ["criteria"] = "buff.tigers_fury.up || time_to_die < 20", ["action"] = "use_items", }, }, }, ["author"] = "SimC", }, ["Balance"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20190920, ["author"] = "SimC", ["desc"] = "# Balance Druid\n# https://github.com/simulationcraft/simc/\n# September 20, 2019\n\n# Changes:\n# - Added Solar Beam.\n# - Changed target_if cases to cycle_targets.\n# - Simplify Azerite trait lookups (don't use unnecessary variable syntax).\n# - Removed Lively Spirit condition for Celestial Alignment; you'll have it or you won't since Innervate is higher priority.", ["lists"] = { ["default"] = { { ["action"] = "solar_beam", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.ca_inc.up", ["action"] = "berserking", }, { ["enabled"] = true, ["criteria"] = "! buff.ca_inc.up & dot.moonfire.ticking & dot.sunfire.ticking & ( ! talent.stellar_flare.enabled || dot.stellar_flare.ticking )", ["name"] = "azsharas_font_of_power", ["action"] = "azsharas_font_of_power", }, { ["enabled"] = true, ["criteria"] = "( ! talent.starlord.enabled || buff.starlord.up ) & ! buff.ca_inc.up & dot.moonfire.ticking & dot.sunfire.ticking & ( ! talent.stellar_flare.enabled || dot.stellar_flare.ticking )", ["action"] = "guardian_of_azeroth", }, { ["enabled"] = true, ["criteria"] = "! buff.ca_inc.up & dot.moonfire.ticking & dot.sunfire.ticking & ( ! talent.stellar_flare.enabled || dot.stellar_flare.ticking )", ["action"] = "cyclotronic_blast", ["effect_name"] = "cyclotronic_blast", }, { ["enabled"] = true, ["name"] = "shiver_venom_relic", ["action"] = "shiver_venom_relic", ["criteria"] = "! buff.ca_inc.up & ! buff.bloodlust.up", ["target_if"] = "dot.shiver_venom.stack >= 5", }, { ["enabled"] = true, ["criteria"] = "cooldown.ca_inc.remains > 30", ["action"] = "blood_of_the_enemy", }, { ["enabled"] = true, ["criteria"] = "! buff.ca_inc.up & ( astral_power < 25 || cooldown.ca_inc.remains > 30 ) & dot.sunfire.remains > 10 & dot.moonfire.remains > 10 & ( ! talent.stellar_flare.enabled || dot.stellar_flare.remains > 10 )", ["action"] = "memory_of_lucid_dreams", }, { ["action"] = "purifying_blast", ["enabled"] = true, }, { ["action"] = "ripple_in_space", ["enabled"] = true, }, { ["action"] = "concentrated_flame", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.reckless_force.up & dot.moonfire.ticking & dot.sunfire.ticking & ( ! talent.stellar_flare.enabled || dot.stellar_flare.ticking )", ["action"] = "the_unbound_force", }, { ["action"] = "worldvein_resonance", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( ! variable.az_ss || ! buff.ca_inc.up ) & dot.moonfire.ticking & dot.sunfire.ticking & ( ! talent.stellar_flare.enabled || dot.stellar_flare.ticking )", ["action"] = "focused_azerite_beam", }, { ["action"] = "thorns", ["enabled"] = true, }, { ["action"] = "use_items", ["enabled"] = true, }, { ["action"] = "warrior_of_elune", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! buff.ca_inc.up & ( buff.memory_of_lucid_dreams.up || ( ( cooldown.memory_of_lucid_dreams.remains > 20 || ! essence.memory_of_lucid_dreams.major ) & ap_check ) ) & ( buff.memory_of_lucid_dreams.up || ap_check ) & dot.sunfire.remains > 8 & dot.moonfire.remains > 12 & ( dot.stellar_flare.remains > 6 || ! talent.stellar_flare.enabled )", ["action"] = "incarnation", }, { ["enabled"] = true, ["criteria"] = "! buff.ca_inc.up & ( buff.memory_of_lucid_dreams.up || ( ( cooldown.memory_of_lucid_dreams.remains > 20 || ! essence.memory_of_lucid_dreams.major ) & ap_check ) ) & ( dot.sunfire.remains > 2 & dot.moonfire.ticking & ( dot.stellar_flare.ticking || ! talent.stellar_flare.enabled ) )", ["action"] = "celestial_alignment", }, { ["enabled"] = true, ["criteria"] = "( buff.ca_inc.up || cooldown.ca_inc.remains > 30 ) & solar_wrath.ap_check", ["action"] = "fury_of_elune", }, { ["enabled"] = true, ["criteria"] = "( buff.ca_inc.up || cooldown.ca_inc.remains > 30 ) & ap_check", ["action"] = "force_of_nature", }, { ["enabled"] = true, ["buff_name"] = "starlord", ["criteria"] = "buff.starlord.remains < 3 & ! solar_wrath.ap_check", ["action"] = "cancel_buff", }, { ["enabled"] = true, ["criteria"] = "( buff.starlord.stack < 3 || buff.starlord.remains >= 8 ) & spell_targets >= variable.sf_targets & ( target.time_to_die + 1 ) * spell_targets > cost % 2.5", ["action"] = "starfall", }, { ["enabled"] = true, ["criteria"] = "( talent.starlord.enabled & ( buff.starlord.stack < 3 || buff.starlord.remains >= 5 & buff.arcanic_pulsar.stack < 8 ) || ! talent.starlord.enabled & ( buff.arcanic_pulsar.stack < 8 || buff.ca_inc.up ) ) & spell_targets.starfall < variable.sf_targets & buff.lunar_empowerment.stack + buff.solar_empowerment.stack < 4 & buff.solar_empowerment.stack < 3 & buff.lunar_empowerment.stack < 3 & ( ! azerite.streaking_stars.rank || ! buff.ca_inc.up || ! prev.starsurge ) || target.time_to_die <= execute_time * astral_power % 40 || ! solar_wrath.ap_check", ["action"] = "starsurge", }, { ["enabled"] = true, ["criteria"] = "buff.ca_inc.up & buff.ca_inc.remains < gcd.max & azerite.streaking_stars.rank & dot.moonfire.remains > remains", ["action"] = "sunfire", }, { ["enabled"] = true, ["criteria"] = "buff.ca_inc.up & buff.ca_inc.remains < gcd.max & azerite.streaking_stars.rank", ["action"] = "moonfire", }, { ["enabled"] = true, ["criteria"] = "refreshable & ap_check & floor ( target.time_to_die % ( 2 * spell_haste ) ) * spell_targets >= ceil ( floor ( 2 % spell_targets ) * 1.5 ) + 2 * spell_targets & ( spell_targets > 1 + talent.twin_moons.enabled || dot.moonfire.ticking ) & ( ! azerite.streaking_stars.rank || ! buff.ca_inc.up || ! prev.sunfire ) & ( buff.ca_inc.remains > remains || ! buff.ca_inc.up )", ["action"] = "sunfire", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "refreshable & ap_check & floor ( target.time_to_die % ( 2 * spell_haste ) ) * spell_targets >= 6 & ( ! azerite.streaking_stars.rank || ! buff.ca_inc.up || ! prev.moonfire ) & ( buff.ca_inc.remains > remains || ! buff.ca_inc.up )", ["action"] = "moonfire", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "refreshable & ap_check & floor ( target.time_to_die % ( 2 * spell_haste ) ) >= 5 & ( ! azerite.streaking_stars.rank || ! buff.ca_inc.up || ! prev.stellar_flare )", ["action"] = "stellar_flare", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "ap_check", ["action"] = "new_moon", }, { ["enabled"] = true, ["criteria"] = "ap_check", ["action"] = "half_moon", }, { ["enabled"] = true, ["criteria"] = "ap_check", ["action"] = "full_moon", }, { ["enabled"] = true, ["criteria"] = "buff.solar_empowerment.stack < 3 & ( ap_check || buff.lunar_empowerment.stack = 3 ) & ( ( buff.warrior_of_elune.up || buff.lunar_empowerment.up || spell_targets >= 2 & ! buff.solar_empowerment.up ) & ( ! azerite.streaking_stars.rank || ! buff.ca_inc.up ) || azerite.streaking_stars.rank & buff.ca_inc.up & prev.solar_wrath )", ["action"] = "lunar_strike", }, { ["enabled"] = true, ["criteria"] = "azerite.streaking_stars.rank < 3 || ! buff.ca_inc.up || ! prev.solar_wrath", ["action"] = "solar_wrath", }, { ["action"] = "sunfire", ["enabled"] = true, }, }, ["precombat"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "4", ["var_name"] = "sf_targets", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "1", ["var_name"] = "sf_targets", ["criteria"] = "azerite.arcanic_pulsar.enabled", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "1", ["var_name"] = "sf_targets", ["criteria"] = "talent.starlord.enabled", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "1", ["var_name"] = "sf_targets", ["criteria"] = "azerite.streaking_stars.rank > 2 & azerite.arcanic_pulsar.enabled", }, { ["enabled"] = true, ["op"] = "sub", ["action"] = "variable", ["value"] = "1", ["var_name"] = "sf_targets", ["criteria"] = "! talent.twin_moons.enabled", }, { ["action"] = "moonkin_form", ["enabled"] = true, }, { ["enabled"] = true, ["name"] = "azsharas_font_of_power", ["action"] = "azsharas_font_of_power", }, { ["enabled"] = true, ["action"] = "potion", ["dynamic_prepot"] = "1", }, { ["action"] = "solar_wrath", ["enabled"] = true, }, { ["action"] = "starsurge", ["enabled"] = true, }, }, }, ["version"] = 20190920, ["warnings"] = "Imported 2 action lists.\n", ["spec"] = 102, ["profile"] = "# Balance Druid\n# https://github.com/simulationcraft/simc/\n# September 20, 2019\n\n# Changes:\n# - Added Solar Beam.\n# - Changed target_if cases to cycle_targets.\n# - Simplify Azerite trait lookups (don't use unnecessary variable syntax).\n# - Removed Lively Spirit condition for Celestial Alignment; you'll have it or you won't since Innervate is higher priority.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/food\n# actions.precombat+=/augmentation\n\n# Azerite variables\n# actions.precombat+=/variable,name=az_ss,value=azerite.streaking_stars.rank\n# actions.precombat+=/variable,name=az_ap,value=azerite.arcanic_pulsar.rank\n\n# Starfall v Starsurge target cutoff\nactions.precombat=variable,name=sf_targets,value=4\nactions.precombat+=/variable,name=sf_targets,op=add,value=1,if=azerite.arcanic_pulsar.enabled\nactions.precombat+=/variable,name=sf_targets,op=add,value=1,if=talent.starlord.enabled\nactions.precombat+=/variable,name=sf_targets,op=add,value=1,if=azerite.streaking_stars.rank>2&azerite.arcanic_pulsar.enabled\nactions.precombat+=/variable,name=sf_targets,op=sub,value=1,if=!talent.twin_moons.enabled\nactions.precombat+=/moonkin_form\n\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/potion,dynamic_prepot=1\nactions.precombat+=/solar_wrath\nactions.precombat+=/starsurge\n\n# Executed every time the actor is available.\nactions=solar_beam\n# CDs\nactions+=/berserking,if=buff.ca_inc.up\nactions+=/use_item,name=azsharas_font_of_power,if=!buff.ca_inc.up&dot.moonfire.ticking&dot.sunfire.ticking&(!talent.stellar_flare.enabled||dot.stellar_flare.ticking)\nactions+=/guardian_of_azeroth,if=(!talent.starlord.enabled||buff.starlord.up)&!buff.ca_inc.up&dot.moonfire.ticking&dot.sunfire.ticking&(!talent.stellar_flare.enabled||dot.stellar_flare.ticking)\nactions+=/use_item,effect_name=cyclotronic_blast,if=!buff.ca_inc.up&dot.moonfire.ticking&dot.sunfire.ticking&(!talent.stellar_flare.enabled||dot.stellar_flare.ticking)\nactions+=/use_item,name=shiver_venom_relic,if=!buff.ca_inc.up&!buff.bloodlust.up,target_if=dot.shiver_venom.stack>=5\nactions+=/blood_of_the_enemy,if=cooldown.ca_inc.remains>30\nactions+=/memory_of_lucid_dreams,if=!buff.ca_inc.up&(astral_power<25||cooldown.ca_inc.remains>30)&dot.sunfire.remains>10&dot.moonfire.remains>10&(!talent.stellar_flare.enabled||dot.stellar_flare.remains>10)\nactions+=/purifying_blast\nactions+=/ripple_in_space\nactions+=/concentrated_flame\nactions+=/the_unbound_force,if=buff.reckless_force.up&dot.moonfire.ticking&dot.sunfire.ticking&(!talent.stellar_flare.enabled||dot.stellar_flare.ticking)\nactions+=/worldvein_resonance\nactions+=/focused_azerite_beam,if=(!variable.az_ss||!buff.ca_inc.up)&dot.moonfire.ticking&dot.sunfire.ticking&(!talent.stellar_flare.enabled||dot.stellar_flare.ticking)\nactions+=/thorns\nactions+=/use_items\nactions+=/warrior_of_elune\n# actions+=/innervate,if=azerite.lively_spirit.enabled&(cooldown.incarnation.remains<2||cooldown.celestial_alignment.remains<12)\nactions+=/incarnation,if=!buff.ca_inc.up&(buff.memory_of_lucid_dreams.up||((cooldown.memory_of_lucid_dreams.remains>20||!essence.memory_of_lucid_dreams.major)&ap_check))&(buff.memory_of_lucid_dreams.up||ap_check)&dot.sunfire.remains>8&dot.moonfire.remains>12&(dot.stellar_flare.remains>6||!talent.stellar_flare.enabled)\nactions+=/celestial_alignment,if=!buff.ca_inc.up&(buff.memory_of_lucid_dreams.up||((cooldown.memory_of_lucid_dreams.remains>20||!essence.memory_of_lucid_dreams.major)&ap_check))&(dot.sunfire.remains>2&dot.moonfire.ticking&(dot.stellar_flare.ticking||!talent.stellar_flare.enabled))\nactions+=/fury_of_elune,if=(buff.ca_inc.up||cooldown.ca_inc.remains>30)&solar_wrath.ap_check\nactions+=/force_of_nature,if=(buff.ca_inc.up||cooldown.ca_inc.remains>30)&ap_check\n\n# Spenders\nactions+=/cancel_buff,name=starlord,if=buff.starlord.remains<3&!solar_wrath.ap_check\nactions+=/starfall,if=(buff.starlord.stack<3||buff.starlord.remains>=8)&spell_targets>=variable.sf_targets&(target.time_to_die+1)*spell_targets>cost%2.5\nactions+=/starsurge,if=(talent.starlord.enabled&(buff.starlord.stack<3||buff.starlord.remains>=5&buff.arcanic_pulsar.stack<8)||!talent.starlord.enabled&(buff.arcanic_pulsar.stack<8||buff.ca_inc.up))&spell_targets.starfallremains\nactions+=/moonfire,if=buff.ca_inc.up&buff.ca_inc.remains=ceil(floor(2%spell_targets)*1.5)+2*spell_targets&(spell_targets>1+talent.twin_moons.enabled||dot.moonfire.ticking)&(!azerite.streaking_stars.rank||!buff.ca_inc.up||!prev.sunfire)&(buff.ca_inc.remains>remains||!buff.ca_inc.up)\nactions+=/moonfire,cycle_targets=1,if=refreshable&ap_check&floor(target.time_to_die%(2*spell_haste))*spell_targets>=6&(!azerite.streaking_stars.rank||!buff.ca_inc.up||!prev.moonfire)&(buff.ca_inc.remains>remains||!buff.ca_inc.up)\nactions+=/stellar_flare,cycle_targets=1,if=refreshable&ap_check&floor(target.time_to_die%(2*spell_haste))>=5&(!azerite.streaking_stars.rank||!buff.ca_inc.up||!prev.stellar_flare)\n\n# Generators\nactions+=/new_moon,if=ap_check\nactions+=/half_moon,if=ap_check\nactions+=/full_moon,if=ap_check\nactions+=/lunar_strike,if=buff.solar_empowerment.stack<3&(ap_check||buff.lunar_empowerment.stack=3)&((buff.warrior_of_elune.up||buff.lunar_empowerment.up||spell_targets>=2&!buff.solar_empowerment.up)&(!azerite.streaking_stars.rank||!buff.ca_inc.up)||azerite.streaking_stars.rank&buff.ca_inc.up&prev.solar_wrath)\nactions+=/solar_wrath,if=azerite.streaking_stars.rank<3||!buff.ca_inc.up||!prev.solar_wrath\n\n# Fallthru for movement\nactions+=/sunfire", }, ["Guardian"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20190818, ["author"] = "SimC", ["desc"] = "# Guardian Druid\n# https://github.com/simulationcraft/simc/\n# August 18, 2019 - 14:00\n\n# Changes:\n# - Added Mitigation abilities.\n# - Added Skull Bash.\n# - Added ironfur_damage_threshold option.", ["lists"] = { ["mitigation"] = { { ["enabled"] = true, ["criteria"] = "incoming_damage_5s > ironfur_damage_threshold & buff.ironfur.remains < gcd * 2", ["action"] = "ironfur", }, { ["enabled"] = true, ["criteria"] = "health.current < 0.75 * health.max", ["action"] = "frenzied_regeneration", }, { ["enabled"] = true, ["criteria"] = "toggle.defensives & health.pct < 80", ["action"] = "anima_of_death", }, { ["enabled"] = true, ["criteria"] = "health.pct < 75 & incoming_damage_5s > 0.25 * health.max", ["action"] = "barkskin", }, { ["enabled"] = true, ["criteria"] = "buff.survival_instincts.down & buff.barkskin.down & health.pct < 60 & incoming_damage_5s > 0.25 * health.max", ["action"] = "survival_instincts", }, }, ["cooldowns"] = { { ["action"] = "potion", ["enabled"] = true, }, { ["action"] = "blood_fury", ["enabled"] = true, }, { ["action"] = "berserking", ["enabled"] = true, }, { ["action"] = "arcane_torrent", ["enabled"] = true, }, { ["action"] = "lights_judgment", ["enabled"] = true, }, { ["action"] = "fireblood", ["enabled"] = true, }, { ["action"] = "ancestral_call", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.bear_form.up", ["action"] = "lunar_beam", }, { ["enabled"] = true, ["criteria"] = "buff.bear_form.up", ["action"] = "bristling_fur", }, { ["enabled"] = true, ["criteria"] = "( dot.moonfire.ticking || active_enemies > 1 ) & dot.thrash_bear.ticking", ["action"] = "incarnation", }, { ["enabled"] = true, ["action"] = "cyclotronic_blast", ["effect_name"] = "cyclotronic_blast", }, { ["enabled"] = true, ["criteria"] = "toggle.cooldowns & ( time_to_die < action_cooldown % 2 || active_enemies > 1 )", ["action"] = "anima_of_death", }, { ["action"] = "memory_of_lucid_dreams", ["enabled"] = true, }, { ["action"] = "use_items", ["enabled"] = true, }, }, ["default"] = { { ["action"] = "skull_bash", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "mitigation", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cooldowns", }, { ["enabled"] = true, ["criteria"] = "rage.deficit < 20 & active_enemies < 4", ["action"] = "maul", }, { ["enabled"] = true, ["criteria"] = "rage.deficit < 20 & essence.conflict_and_strife.major & ! buff.sharpened_claws.up", ["action"] = "maul", }, { ["enabled"] = true, ["criteria"] = "cost = 0 || ( rage > cost & azerite.layered_mane.enabled & active_enemies > 2 )", ["action"] = "ironfur", }, { ["enabled"] = true, ["criteria"] = "dot.thrash_bear.stack = dot.thrash_bear.max_stacks", ["action"] = "pulverize", }, { ["enabled"] = true, ["criteria"] = "dot.moonfire.refreshable & active_enemies < 2", ["action"] = "moonfire", }, { ["enabled"] = true, ["criteria"] = "( buff.incarnation.down & active_enemies > 1 ) || ( buff.incarnation.up & active_enemies > 4 )", ["action"] = "thrash_bear", }, { ["enabled"] = true, ["criteria"] = "buff.incarnation.down & active_enemies > 4", ["action"] = "swipe_bear", }, { ["enabled"] = true, ["criteria"] = "dot.thrash_bear.ticking", ["action"] = "mangle", }, { ["enabled"] = true, ["criteria"] = "buff.galactic_guardian.up & active_enemies < 2", ["action"] = "moonfire", }, { ["action"] = "thrash_bear", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "azerite.power_of_the_moon.rank > 1 & active_enemies = 1", ["action"] = "moonfire", }, { ["action"] = "swipe_bear", ["enabled"] = true, }, }, ["precombat"] = { { ["action"] = "bear_form", ["enabled"] = true, }, { ["action"] = "memory_of_lucid_dreams", ["enabled"] = true, }, { ["action"] = "potion", ["enabled"] = true, }, }, }, ["version"] = 20190818, ["warnings"] = "Imported 4 action lists.\n", ["profile"] = "# Guardian Druid\n# https://github.com/simulationcraft/simc/\n# August 18, 2019 - 14:00\n\n# Changes:\n# - Added Mitigation abilities.\n# - Added Skull Bash.\n# - Added ironfur_damage_threshold option.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/food\n# actions.precombat+=/augmentation\nactions.precombat+=/bear_form\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/memory_of_lucid_dreams\nactions.precombat+=/potion\n\n# Executed every time the actor is available.\nactions=skull_bash\nactions+=/call_action_list,name=mitigation\nactions+=/call_action_list,name=cooldowns\nactions+=/maul,if=rage.deficit<20&active_enemies<4\nactions+=/maul,if=rage.deficit<20&essence.conflict_and_strife.major&!buff.sharpened_claws.up\nactions+=/ironfur,if=cost=0||(rage>cost&azerite.layered_mane.enabled&active_enemies>2)\nactions+=/pulverize,target_if=dot.thrash_bear.stack=dot.thrash_bear.max_stacks\nactions+=/moonfire,target_if=dot.moonfire.refreshable&active_enemies<2\nactions+=/thrash,if=(buff.incarnation.down&active_enemies>1)||(buff.incarnation.up&active_enemies>4)\nactions+=/swipe,if=buff.incarnation.down&active_enemies>4\nactions+=/mangle,if=dot.thrash_bear.ticking\nactions+=/moonfire,target_if=buff.galactic_guardian.up&active_enemies<2\nactions+=/thrash\n# Fill with Moonfire with PotMx2\nactions+=/moonfire,if=azerite.power_of_the_moon.rank>1&active_enemies=1\nactions+=/swipe\n\nactions.mitigation=ironfur,if=incoming_damage_5s>ironfur_damage_threshold&buff.ironfur.remains0.25*health.max\nactions.mitigation+=/survival_instincts,if=buff.survival_instincts.down&buff.barkskin.down&health.pct<60&incoming_damage_5s>0.25*health.max\n\nactions.cooldowns=potion\n# actions.cooldowns+=/heart_essence\nactions.cooldowns+=/blood_fury\nactions.cooldowns+=/berserking\nactions.cooldowns+=/arcane_torrent\nactions.cooldowns+=/lights_judgment\nactions.cooldowns+=/fireblood\nactions.cooldowns+=/ancestral_call\nactions.cooldowns+=/lunar_beam,if=buff.bear_form.up\nactions.cooldowns+=/bristling_fur,if=buff.bear_form.up\nactions.cooldowns+=/incarnation,if=(dot.moonfire.ticking||active_enemies>1)&dot.thrash_bear.ticking\nactions.cooldowns+=/use_item,effect_name=cyclotronic_blast\nactions.cooldowns+=/anima_of_death,if=toggle.cooldowns&(time_to_die1)\nactions.cooldowns+=/memory_of_lucid_dreams\nactions.cooldowns+=/use_items", ["spec"] = 104, }, }, }, ["Quilenko - Thunderhorn"] = { ["runOnce"] = { ["forceReloadAllDefaultPriorities_20220228"] = true, ["forceEnableAllClassesOnceDueToBug_20220225"] = true, ["forceReloadClassDefaultOptions_20220306_258"] = true, ["updateMaxRefreshToNewSpecOptions_20220222"] = true, ["resetAberrantPackageDates_20190728_1"] = true, ["autoconvertDelaySweepToExtend_20190729"] = true, ["autoconvertGlowsForCustomGlow_20190326"] = true, ["autoconvertDisplayToggle_20190621_1"] = true, ["forceReloadClassDefaultOptions_20220306_257"] = true, ["resetRogueMfDOption_20200226"] = true, ["enableAllOfTheThings_20180820"] = true, ["fixHavocPriorityVersion_20240805"] = true, ["resetPotionsToDefaults_20190717"] = true, ["forceReloadClassDefaultOptions_20220306_256"] = true, ["forceSpellFlashBrightness_20221030"] = true, }, ["specs"] = { [257] = { ["settings"] = { ["sw_death_protection"] = 50, }, }, [258] = { ["nameplateRange"] = 8, ["debuffPadding"] = 0, ["settings"] = { ["pad_void_bolt"] = true, ["sw_death_protection"] = 50, ["pad_ascended_blast"] = true, }, ["potion"] = "unbridled_fury", ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["maxTime"] = 33, ["buffPadding"] = 0, }, [256] = { ["settings"] = { ["sw_death_protection"] = 50, }, ["potionsReset"] = 20180919.1, }, }, ["packs"] = { ["Shadow"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20241102, ["author"] = "SimC", ["desc"] = "2024-11-02: Unfurling Darkness adjustments\n\n2024-10-29: SimC update\n\n2024-10-27: Work on VT/Shadow Crash\n\n2024-10-22: 11.0.5 update\n\n2024-10-21: SimC update\n\n2024-10-06: PI; Don't VT with Shadow Crash in flight (Whispering Shadows)\n\n2024-09-08, 10-06: SimC update\n\n2024-09-06: Modified to enable DP/VT with CDs toggled off\n\n2024-09-05: SimC update\n\n2024-08-22: Trinket update\n\n2024-08-11: Buff Power Word: Fortitude\n\n2024-08-01: Add SW:Death entry from sim update; another sim update\n\n2024-07-29: Tweak target swap logic\n\n2024-07-28: The War Within", ["lists"] = { ["filler"] = { { ["enabled"] = true, ["action"] = "call_action_list", ["description"] = "Consume empowered fillers", ["strict"] = 1, ["criteria"] = "( buff.mind_spike_insanity.up || buff.mind_flay_insanity.up ) & dot.devouring_plague.remains > action.mind_spike.cast_time || ! talent.mind_spike.enabled", ["list_name"] = "empowered_filler", }, { ["enabled"] = true, ["action"] = "vampiric_touch", ["cycle_targets"] = 1, ["criteria"] = "talent.unfurling_darkness.enabled & buff.unfurling_darkness_cd.remains < ( execute_time - 0.2 ) & talent.inner_quietus.enabled", ["description"] = "Cast Vampiric Touch to proc Unfurling Darkness", }, { ["enabled"] = true, ["action"] = "shadow_word_death", ["criteria"] = "target.health.pct < 20 || ( buff.deathspeaker.up || set_bonus.tier31_2pc ) & dot.devouring_plague.ticking", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "shadow_word_death", ["criteria"] = "talent.inescapable_torment.enabled & pet.fiend.active", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "talent.empowered_surges.enabled & buff.surge_of_insanity.up || buff.voidform.up & talent.void_eruption.enabled", ["action"] = "devouring_plague", }, { ["enabled"] = true, ["action"] = "vampiric_touch", ["criteria"] = "talent.unfurling_darkness.enabled & buff.unfurling_darkness_cd.remains < ( execute_time - 0.2 )", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "spell_targets > 1", ["action"] = "halo", ["description"] = "Save up to 20s if adds are coming soon.", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "buff.mind_spike_insanity.up || buff.mind_flay_insanity.up", ["list_name"] = "empowered_filler", }, { ["enabled"] = true, ["action"] = "mind_spike", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "mind_flay", ["cycle_targets"] = 1, ["interrupt_if"] = "ticks>=2", ["interrupt_immediate"] = "1", ["chain"] = "1", ["interrupt_global"] = "1", }, { ["action"] = "divine_star", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! set_bonus.tier31_4pc", ["action"] = "shadow_crash", ["description"] = "Use Shadow Crash while moving as a low-priority action when adds will not come in 20 seconds.", }, { ["enabled"] = true, ["action"] = "shadow_word_death", ["cycle_targets"] = 1, ["criteria"] = "target.health.pct < 20", ["description"] = "Use Shadow Word: Death while moving as a low-priority action in execute", }, { ["enabled"] = true, ["action"] = "shadow_word_death", ["description"] = "Use Shadow Word: Death while moving as a low-priority action", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "shadow_word_pain", ["cycle_targets"] = 1, ["criteria"] = "set_bonus.tier31_4pc", ["description"] = "Use Shadow Word: Pain while moving as a low-priority action with T31 4pc", }, { ["enabled"] = true, ["action"] = "shadow_word_pain", ["cycle_targets"] = 1, ["criteria"] = "! set_bonus.tier31_4pc", ["description"] = "Use Shadow Word: Pain while moving as a low-priority action without T31 4pc", }, }, ["aoe_variables"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "spell_targets.vampiric_touch >? 12", ["default"] = "12", ["var_name"] = "max_vts", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "0", ["default"] = "1", ["var_name"] = "is_vt_possible", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "1", ["criteria"] = "target.time_to_die >= 18 & dot.vampiric_touch.refreshable", ["var_name"] = "is_vt_possible", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( active_dot.vampiric_touch + 8 * ( action.shadow_crash.in_flight & talent.whispering_shadows.enabled ) ) >= variable.max_vts || ! variable.is_vt_possible", ["description"] = "TODO: Revamp to fix undesired behaviour with unstacked fights", ["var_name"] = "dots_up", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( variable.max_vts - active_dot.vampiric_touch ) < 4", ["criteria"] = "variable.holding_crash & talent.whispering_shadows.enabled & active_enemies > 1", ["var_name"] = "holding_crash", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( active_dot.vampiric_touch + 8 * ! variable.holding_crash ) >= variable.max_vts || ! variable.is_vt_possible", ["var_name"] = "manual_vts_applied", }, }, ["empowered_filler"] = { { ["enabled"] = true, ["action"] = "mind_spike_insanity", ["criteria"] = "buff.mind_spike_insanity.up", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "mind_flay", ["criteria"] = "buff.mind_flay_insanity.up", ["cycle_targets"] = 1, }, }, ["default"] = { { ["action"] = "silence", ["enabled"] = true, }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "false", ["var_name"] = "holding_crash", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( cooldown.void_eruption.remains <= gcd.max * 3 & talent.void_eruption.enabled || cooldown.dark_ascension.up & talent.dark_ascension.enabled ) || talent.void_torrent.enabled & talent.psychic_link.enabled & cooldown.void_torrent.remains <= 4 & ! variable.holding_crash & ! buff.voidform.up", ["var_name"] = "pool_for_cds", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "active_enemies > 2", ["list_name"] = "aoe", }, { ["enabled"] = true, ["action"] = "run_action_list", ["list_name"] = "main", }, }, ["precombat"] = { { ["action"] = "power_word_fortitude", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! buff.shadowform.up", ["action"] = "shadowform", }, { ["enabled"] = true, ["op"] = "reset", ["action"] = "variable", ["var_name"] = "dr_force_prio", ["default"] = "0", }, { ["enabled"] = true, ["op"] = "reset", ["action"] = "variable", ["var_name"] = "me_force_prio", ["default"] = "1", }, { ["enabled"] = true, ["op"] = "reset", ["action"] = "variable", ["var_name"] = "max_vts", ["default"] = "12", }, { ["enabled"] = true, ["op"] = "reset", ["action"] = "variable", ["var_name"] = "is_vt_possible", ["default"] = "0", }, { ["enabled"] = true, ["op"] = "reset", ["action"] = "variable", ["var_name"] = "pooling_mindblasts", ["default"] = "0", }, { ["action"] = "arcane_torrent", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "boss & active_enemies <= 4 & ( fight_remains >= 120 || active_enemies <= 2 )", ["action"] = "halo", }, { ["enabled"] = true, ["criteria"] = "spell_targets.shadow_crash <= 8 & ( ! set_bonus.tier31_4pc || spell_targets.shadow_crash > 1 )", ["action"] = "shadow_crash", }, { ["enabled"] = true, ["criteria"] = "( ! talent.whispering_shadows.enabled || ! action.shadow_crash.in_flight ) & ( ! talent.shadow_crash.enabled || spell_targets.shadow_crash > 8 || ! boss || set_bonus.tier31_4pc & spell_targets.shadow_crash = 1 )", ["action"] = "vampiric_touch", }, }, ["aoe"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "spell_targets.vampiric_touch >? 12", ["default"] = "12", ["var_name"] = "max_vts", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "0", ["default"] = "1", ["var_name"] = "is_vt_possible", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "1", ["criteria"] = "target.time_to_die >= 18 & dot.vampiric_touch.refreshable", ["var_name"] = "is_vt_possible", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( active_dot.vampiric_touch + 8 * ( action.shadow_crash.in_flight & talent.whispering_shadows.enabled ) ) >= variable.max_vts || ! variable.is_vt_possible", ["description"] = "TODO: Revamp to fix undesired behaviour with unstacked fights", ["var_name"] = "dots_up", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( variable.max_vts - active_dot.vampiric_touch ) < 4", ["criteria"] = "variable.holding_crash & talent.whispering_shadows.enabled & active_enemies > 1", ["var_name"] = "holding_crash", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( active_dot.vampiric_touch + 8 * ! variable.holding_crash ) >= variable.max_vts || ! variable.is_vt_possible", ["var_name"] = "manual_vts_applied", }, { ["enabled"] = true, ["action"] = "vampiric_touch", ["cycle_targets"] = 1, ["criteria"] = "( buff.unfurling_darkness.up || buff.unfurling_darkness_cd.down || buff.unfurling_darkness_cd.remains > 2 * gcd.max ) & ( target.time_to_die >= 18 & ( dot.vampiric_touch.ticking || ! variable.dots_up ) ) & ( ( variable.max_vts > 0 & ! variable.manual_vts_applied & ! action.shadow_crash.in_flight || ! talent.whispering_shadows.enabled ) & ! buff.entropic_rift.up )", ["description"] = "High Priority action to put out Vampiric Touch on enemies that will live at least 18 seconds, up to 12 targets manually while prepping AoE", }, { ["enabled"] = true, ["action"] = "shadow_crash", ["cycle_targets"] = 1, ["criteria"] = "! variable.holding_crash & ( dot.vampiric_touch.refreshable || dot.vampiric_touch.remains <= target.time_to_die & ! buff.voidform.up )", ["description"] = "Use Shadow Crash to apply Vampiric Touch to as many adds as possible while being efficient with Vampiric Touch refresh windows", }, }, ["cds"] = { { ["enabled"] = true, ["criteria"] = "( buff.voidform.up || buff.power_infusion.up || buff.dark_ascension.up & ( boss & fight_remains <= cooldown.power_infusion.remains + 15 ) ) & ( fight_remains >= 320 || buff.bloodlust.react ) || boss & fight_remains <= 30", ["action"] = "potion", ["description"] = "TODO: Check VE/DA enter conditions based on dots", }, { ["enabled"] = true, ["criteria"] = "buff.power_infusion.up || boss & fight_remains <= 8", ["action"] = "fireblood", }, { ["enabled"] = true, ["criteria"] = "buff.power_infusion.up || boss & fight_remains <= 12", ["action"] = "berserking", }, { ["enabled"] = true, ["criteria"] = "buff.power_infusion.up || boss & fight_remains <= 15", ["action"] = "blood_fury", }, { ["enabled"] = true, ["criteria"] = "buff.power_infusion.up || boss & fight_remains <= 15", ["action"] = "ancestral_call", }, { ["enabled"] = true, ["criteria"] = "buff.voidform.up || buff.dark_ascension.up", ["action"] = "power_infusion", ["description"] = "Sync Power Infusion with Voidform or Dark Ascension", }, { ["enabled"] = true, ["criteria"] = "talent.power_surge.enabled & ( pet.fiend.active & cooldown.fiend.remains >= 4 & talent.mindbender.enabled || ! talent.mindbender.enabled & ! cooldown.fiend.up || active_enemies > 2 & ! talent.inescapable_torment.enabled || ! talent.dark_ascension.enabled ) & ( cooldown.mind_blast.charges = 0 || ! talent.void_eruption.enabled || cooldown.void_eruption.remains >= gcd.max * 4 )", ["action"] = "halo", ["description"] = "Make sure Mindbender is active before popping Dark Ascension unless you have insignificant talent points or too many targets", }, { ["enabled"] = true, ["criteria"] = "( pet.fiend.active & cooldown.fiend.remains >= 4 || ! talent.mindbender.enabled & ! cooldown.fiend.up || active_enemies > 2 & ! talent.inescapable_torment.enabled ) & ( cooldown.mind_blast.charges = 0 || time > 15 )", ["action"] = "void_eruption", ["description"] = "Make sure Mindbender is active before popping Void Eruption and dump charges of Mind Blast before casting", }, { ["enabled"] = true, ["criteria"] = "( pet.fiend.active & cooldown.fiend.remains >= 4 || ! talent.mindbender.enabled & ! cooldown.fiend.up || active_enemies > 2 & ! talent.inescapable_torment.enabled ) & ( active_dot.devouring_plague >= 1 || insanity >= ( 15 + 5 * ! talent.minds_eye.enabled + 5 * talent.distorted_reality.enabled - pet.fiend.active * 6 ) )", ["action"] = "dark_ascension", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "trinkets", }, { ["enabled"] = true, ["criteria"] = "health.pct <= 75", ["action"] = "desperate_prayer", ["description"] = "Use Desperate Prayer to heal up should Shadow Word: Death or other damage bring you below 75%", }, }, ["trinkets"] = { { ["enabled"] = true, ["name"] = "aberrant_spellforge", ["use_off_gcd"] = 1, ["action"] = "aberrant_spellforge", ["criteria"] = "gcd.remains > 0 & buff.aberrant_spellforge.stack <= 4", }, { ["enabled"] = true, ["name"] = "spymasters_web", ["action"] = "spymasters_web", ["criteria"] = "( buff.power_infusion.up & buff.spymasters_report.stack >= 40 & fight_remains > 240 ) || ( buff.power_infusion.up & buff.bloodlust.up & buff.spymasters_report.stack >= 10 ) || buff.power_infusion.up & ( fight_remains < 120 ) || ( fight_remains <= 20 || buff.dark_ascension.up & fight_remains <= 60 || buff.entropic_rift.up & talent.entropic_rift.enabled & fight_remains <= 30 ) & ! buff.spymasters_web.up", }, { ["enabled"] = true, ["criteria"] = "( buff.voidform.up || buff.power_infusion.up || buff.dark_ascension.up || ( cooldown.void_eruption.remains > 10 & trinket.cooldown.duration <= 60 ) ) || boss & fight_remains < 20", ["action"] = "use_items", }, }, ["main"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "active_dot.vampiric_touch >= cycle_enemies || action.shadow_crash.in_flight & talent.whispering_shadows.enabled", ["criteria"] = "active_enemies < 3", ["var_name"] = "dots_up", }, { ["enabled"] = true, ["op"] = "setif", ["description"] = "Are we pooling mindblasts? Currently only used for Voidweaver, [Hekili] modified to still allow us to build Insanity when CDs are toggled off.", ["criteria"] = "talent.void_blast.enabled & cooldown.void_torrent.remains <= gcd.max * ( 1 + talent.mind_melt.enabled ) & insanity > action.devouring_plague.cost", ["var_name"] = "pooling_mindblasts", ["action"] = "variable", ["value_else"] = "0", ["value"] = "1", }, { ["enabled"] = true, ["criteria"] = "boss & fight_remains < 30 || target.time_to_die > 15 & ( ! variable.holding_crash || active_enemies > 2 )", ["action"] = "call_action_list", ["list_name"] = "cds", }, { ["enabled"] = true, ["action"] = "vampiric_touch", ["cycle_targets"] = 1, ["criteria"] = "buff.unfurling_darkness.up & talent.mind_melt.enabled & talent.void_blast.enabled & buff.mind_melt.stack < 2 & cooldown.mindbender.up & cooldown.dark_ascension.up & time <= 4", ["description"] = "High priority action to consume Unfurling Darkness during the opener with Voidweaver", }, { ["enabled"] = true, ["criteria"] = "talent.mind_melt.enabled & talent.void_blast.enabled & ( buff.mind_melt.stack < ( 1 * talent.distorted_reality.enabled + 1 - talent.unfurling_darkness.enabled - talent.minds_eye.enabled * 1 ) & talent.halo.enabled || ! talent.halo.enabled & buff.mind_melt.stack < 2 ) & cooldown.mindbender.up & cooldown.dark_ascension.up & time <= 4 & insanity <= 20", ["action"] = "mind_spike", ["description"] = "High priority action to Mind Spike to get to enough Insanity during the opener with Voidweaver", }, { ["enabled"] = true, ["criteria"] = "( dot.shadow_word_pain.ticking & variable.dots_up || action.shadow_crash.in_flight & talent.whispering_shadows.enabled ) & ( boss & fight_remains < 30 || target.time_to_die > 15 ) & ( ! talent.dark_ascension.enabled || cooldown.dark_ascension.remains < gcd.max || boss & fight_remains < 15 )", ["action"] = "mindbender", ["description"] = "Use Shadowfiend and Mindbender on cooldown as long as Vampiric Touch and Shadow Word: Pain are active and sync with Dark Ascension", }, { ["enabled"] = true, ["action"] = "shadow_word_death", ["cycle_targets"] = 1, ["criteria"] = "priest.force_devour_matter & talent.devour_matter.enabled", ["description"] = "High Priority Shadow Word: Death when you are forcing the bonus from Devour Matter", }, { ["enabled"] = true, ["action"] = "void_blast", ["cycle_targets"] = 1, ["criteria"] = "( dot.devouring_plague.remains >= execute_time || buff.entropic_rift.remains <= gcd.max || action.void_torrent.channeling & talent.void_empowerment.enabled ) & ( insanity.deficit >= 16 || cooldown.mind_blast.full_recharge_time <= gcd.max || buff.entropic_rift.remains <= gcd.max ) & ( ! talent.mind_devourer.enabled || ! buff.mind_devourer.up || buff.entropic_rift.remains <= gcd.max )", ["description"] = "Blast more burst :wicked:", }, { ["enabled"] = true, ["action"] = "devouring_plague", ["cycle_targets"] = 1, ["criteria"] = "( dot.devouring_plague.remains <= gcd.max || variable.dr_force_prio || ! talent.distorted_reality.enabled & variable.me_force_prio ) & buff.voidform.up & talent.perfected_form.enabled & buff.voidform.remains <= gcd.max & talent.void_eruption.enabled", ["description"] = "Do not let Voidform Expire if you can avoid it.", }, { ["enabled"] = true, ["sec"] = "cooldown.mind_blast.recharge_time", ["action"] = "wait", ["criteria"] = "cooldown.mind_blast.recharge_time < buff.entropic_rift.remains & buff.entropic_rift.up & buff.entropic_rift.remains < gcd.max & cooldown.mind_blast.charges < 1", }, { ["enabled"] = true, ["action"] = "mind_blast", ["cycle_targets"] = 1, ["criteria"] = "talent.void_eruption.enabled & buff.voidform.up & full_recharge_time <= gcd.max & ( ! talent.insidious_ire.enabled || dot.devouring_plague.remains >= execute_time ) & ( cooldown.void_bolt.remains / gcd.max - cooldown.void_bolt.remains % gcd.max ) * gcd.max <= 0.25 & ( cooldown.void_bolt.remains / gcd.max - cooldown.void_bolt.remains % gcd.max ) >= 0.01", ["description"] = "Complicated do not overcap mindblast and use it to protect against void bolt cd desync", }, { ["enabled"] = true, ["action"] = "void_bolt", ["cycle_targets"] = 1, ["criteria"] = "insanity.deficit > 16 & cooldown.void_bolt.remains <= 0.1", ["description"] = "Use Voidbolt on the enemy with the largest time to die. We do no care about dots because Voidbolt is only accessible inside voidform which guarantees maximum effect", }, { ["enabled"] = true, ["action"] = "devouring_plague", ["cycle_targets"] = 1, ["criteria"] = "active_dot.devouring_plague <= 1 & dot.devouring_plague.remains <= gcd.max & ( ! talent.void_eruption.enabled || cooldown.void_eruption.remains >= gcd.max * 3 ) || insanity.deficit <= 16", ["description"] = "Do not overcap on insanity", }, { ["enabled"] = true, ["action"] = "void_torrent", ["cycle_targets"] = 1, ["criteria"] = "( dot.devouring_plague.ticking || talent.void_eruption.enabled & cooldown.void_eruption.up ) & talent.entropic_rift.enabled & ! variable.holding_crash", ["description"] = "Cast Void Torrent at very high priority if Voidweaver", }, { ["enabled"] = true, ["action"] = "shadow_word_death", ["cycle_targets"] = 1, ["criteria"] = "talent.depth_of_shadows.enabled & ( target.health.pct <= 20 || buff.deathspeaker.up & talent.deathspeaker.enabled ) & talent.inescapable_torment.enabled", ["description"] = "Snipe SWDs with Depth of Shadows to spawn pets. Prefer targets with Devouring Plague on them.", }, { ["enabled"] = true, ["action"] = "mind_blast", ["cycle_targets"] = 1, ["criteria"] = "( cooldown.mind_blast.full_recharge_time <= gcd.max + execute_time || pet.fiend.remains <= execute_time + gcd.max ) & pet.fiend.active & talent.inescapable_torment.enabled & pet.fiend.remains >= execute_time & active_enemies <= 7 & ( ! buff.mind_devourer.up || ! talent.mind_devourer.enabled ) & dot.devouring_plague.remains > execute_time & ! variable.pooling_mindblasts", ["description"] = "Use Mind Blasts if using Inescapable Torment and you are capping charges or it will expire soon. Do not use if pooling Mindblast.", }, { ["enabled"] = true, ["action"] = "shadow_word_death", ["cycle_targets"] = 1, ["criteria"] = "pet.fiend.remains <= ( gcd.max + 1 ) & pet.fiend.active & talent.inescapable_torment.enabled & active_enemies <= 7", ["description"] = "High Priority Shadow Word: Death is Mindbender is expiring in less than a gcd plus wiggle room", }, { ["enabled"] = true, ["action"] = "void_bolt", ["cycle_targets"] = 1, ["criteria"] = "cooldown.void_bolt.remains <= 0.1", ["description"] = "Use Voidbolt on the enemy with the largest time to die. Force a cooldown check here to make sure SimC doesn't wait too long (i.e. weird MF:I desync with GCD)", }, { ["enabled"] = true, ["action"] = "vampiric_touch", ["cycle_targets"] = 1, ["criteria"] = "buff.unfurling_darkness.up & active_dot.vampiric_touch <= 5", ["description"] = "Spend UFD as a high priority action", }, { ["enabled"] = true, ["action"] = "call_action_list", ["description"] = "Do not overcap MSI or MFI during Empowered Surges (Archon).", ["strict"] = 1, ["criteria"] = "( buff.mind_spike_insanity.stack > 2 & talent.mind_spike.enabled || buff.mind_flay_insanity.stack > 2 & ! talent.mind_spike.enabled ) & talent.empowered_surges.enabled & ! cooldown.void_eruption.up", ["list_name"] = "empowered_filler", }, { ["enabled"] = true, ["criteria"] = "boss & fight_remains <= duration + 4", ["action"] = "devouring_plague", ["description"] = "Spend your Insanity on Devouring Plague at will if the fight will end in less than 10s", }, { ["enabled"] = true, ["action"] = "devouring_plague", ["cycle_targets"] = 1, ["criteria"] = "( dot.devouring_plague.remains <= gcd.max || variable.dr_force_prio || ! talent.distorted_reality.enabled & variable.me_force_prio ) & ( insanity.deficit <= 35 & talent.distorted_reality.enabled || buff.mind_devourer.up & cooldown.mind_blast.up & ( cooldown.void_eruption.remains >= 3 * gcd.max || ! talent.void_eruption.enabled ) & talent.mind_devourer.enabled || buff.entropic_rift.up || buff.voidform.up & talent.perfected_form.enabled & talent.void_eruption.enabled )", ["description"] = "Use Devouring Plague to maximize uptime. Short circuit if you are capping on Insanity within 35 With Distorted Reality can maintain more than one at a time in multi-target.", }, { ["enabled"] = true, ["action"] = "void_torrent", ["cycle_targets"] = 1, ["criteria"] = "! variable.holding_crash & ! talent.entropic_rift.enabled & dot.devouring_plague.remains >= 2.5", ["description"] = "Use Void Torrent if it will get near full Mastery Value and you have Cthun and Void Eruption. Prune this action for Entropic Rift Builds.", }, { ["enabled"] = true, ["action"] = "shadow_crash", ["cycle_targets"] = 1, ["criteria"] = "dot.vampiric_touch.refreshable & ! variable.holding_crash", ["description"] = "Use Shadow Crash as long as you are not holding for adds and Vampiric Touch is within pandemic range", }, { ["enabled"] = true, ["action"] = "vampiric_touch", ["cycle_targets"] = 1, ["criteria"] = "refreshable & buff.unfurling_darkness_cd.remains < ( execute_time - 0.2 ) & talent.unfurling_darkness.enabled & ! buff.dark_ascension.up & talent.inner_quietus.enabled & active_dot.vampiric_touch <= 5", ["description"] = "Acquire UFD", }, { ["enabled"] = true, ["action"] = "vampiric_touch", ["cycle_targets"] = 1, ["criteria"] = "refreshable & target.time_to_die > 12 & ( dot.vampiric_touch.ticking || ! variable.dots_up ) & ( variable.max_vts > 0 || active_enemies = 1 ) & ( cooldown.shadow_crash.remains >= dot.vampiric_touch.remains || variable.holding_crash || ! talent.whispering_shadows.enabled ) & ( ! action.shadow_crash.in_flight || ! talent.whispering_shadows.enabled )", ["description"] = "Put out Vampiric Touch on enemies that will live at least 12s and Shadow Crash is not available soon", }, { ["enabled"] = true, ["action"] = "shadow_word_death", ["cycle_targets"] = 1, ["criteria"] = "variable.dots_up & buff.deathspeaker.up", ["description"] = "Spend Deathspeaker Procs", }, { ["enabled"] = true, ["action"] = "mind_blast", ["cycle_targets"] = 1, ["criteria"] = "( ! buff.mind_devourer.up || ! talent.mind_devourer.enabled || cooldown.void_eruption.up & talent.void_eruption.enabled ) & ! variable.pooling_mindblasts", ["description"] = "Use all charges of Mind Blast if Vampiric Touch and Shadow Word: Pain are active and Mind Devourer is not active or you are prepping Void Eruption", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "filler", }, }, }, ["version"] = 20241102, ["warnings"] = "The import for 'filler' required some automated changes.\nLine 1: Converted 'talent.mind_spike' to 'talent.mind_spike.enabled' (1x).\nLine 2: Converted 'talent.unfurling_darkness' to 'talent.unfurling_darkness.enabled' (1x).\nLine 2: Converted 'talent.inner_quietus' to 'talent.inner_quietus.enabled' (1x).\nLine 4: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 5: Converted 'talent.empowered_surges' to 'talent.empowered_surges.enabled' (1x).\nLine 5: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 6: Converted 'talent.unfurling_darkness' to 'talent.unfurling_darkness.enabled' (1x).\n\nThe import for 'aoe_variables' required some automated changes.\nLine 4: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 5: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\n\nThe import for 'main' required some automated changes.\nLine 1: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 2: Converted 'talent.void_blast' to 'talent.void_blast.enabled' (1x).\nLine 2: Converted 'talent.mind_melt' to 'talent.mind_melt.enabled' (1x).\nLine 4: Converted 'talent.mind_melt' to 'talent.mind_melt.enabled' (1x).\nLine 4: Converted 'talent.void_blast' to 'talent.void_blast.enabled' (1x).\nLine 5: Converted 'talent.mind_melt' to 'talent.mind_melt.enabled' (1x).\nLine 5: Converted 'talent.void_blast' to 'talent.void_blast.enabled' (1x).\nLine 5: Converted 'talent.distorted_reality' to 'talent.distorted_reality.enabled' (1x).\nLine 5: Converted 'talent.unfurling_darkness' to 'talent.unfurling_darkness.enabled' (1x).\nLine 5: Converted 'talent.minds_eye' to 'talent.minds_eye.enabled' (1x).\nLine 5: Converted 'talent.halo' to 'talent.halo.enabled' (1x).\nLine 5: Converted 'talent.halo' to 'talent.halo.enabled' (1x).\nLine 6: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 6: Converted 'talent.dark_ascension' to 'talent.dark_ascension.enabled' (1x).\nLine 7: Converted 'talent.devour_matter' to 'talent.devour_matter.enabled' (1x).\nLine 8: Converted 'talent.void_empowerment' to 'talent.void_empowerment.enabled' (1x).\nLine 8: Converted 'talent.mind_devourer' to 'talent.mind_devourer.enabled' (1x).\nLine 9: Converted 'talent.distorted_reality' to 'talent.distorted_reality.enabled' (1x).\nLine 9: Converted 'talent.perfected_form' to 'talent.perfected_form.enabled' (1x).\nLine 9: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 11: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 11: Converted 'talent.insidious_ire' to 'talent.insidious_ire.enabled' (1x).\nLine 11: Converted operations in 'talent.void_eruption.enabled&buff.voidform.up&full_recharge_time<=gcd.max&(!talent.insidious_ire.enabled||dot.devouring_plague.remains>=execute_time)&(cooldown.void_bolt.remains%gcd.max-cooldown.void_bolt.remains%%gcd.max)*gcd.max<=0.25&(cooldown.void_bolt.remains%gcd.max-cooldown.void_bolt.remains%%gcd.max)>=0.01' to 'talent.void_eruption.enabled&buff.voidform.up&full_recharge_time<=gcd.max&(!talent.insidious_ire.enabled||dot.devouring_plague.remains>=execute_time)&(cooldown.void_bolt.remains/gcd.max-cooldown.void_bolt.remains%gcd.max)*gcd.max<=0.25&(cooldown.void_bolt.remains/gcd.max-cooldown.void_bolt.remains%gcd.max)>=0.01'.\nLine 13: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 14: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 14: Converted 'talent.entropic_rift' to 'talent.entropic_rift.enabled' (1x).\nLine 15: Converted 'talent.depth_of_shadows' to 'talent.depth_of_shadows.enabled' (1x).\nLine 15: Converted 'talent.deathspeaker' to 'talent.deathspeaker.enabled' (1x).\nLine 15: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 16: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 16: Converted 'talent.mind_devourer' to 'talent.mind_devourer.enabled' (1x).\nLine 17: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 20: Converted 'talent.mind_spike' to 'talent.mind_spike.enabled' (1x).\nLine 20: Converted 'talent.mind_spike' to 'talent.mind_spike.enabled' (1x).\nLine 20: Converted 'talent.empowered_surges' to 'talent.empowered_surges.enabled' (1x).\nLine 22: Converted 'talent.distorted_reality' to 'talent.distorted_reality.enabled' (1x).\nLine 22: Converted 'talent.distorted_reality' to 'talent.distorted_reality.enabled' (1x).\nLine 22: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 22: Converted 'talent.mind_devourer' to 'talent.mind_devourer.enabled' (1x).\nLine 22: Converted 'talent.perfected_form' to 'talent.perfected_form.enabled' (1x).\nLine 22: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 23: Converted 'talent.entropic_rift' to 'talent.entropic_rift.enabled' (1x).\nLine 25: Converted 'talent.unfurling_darkness' to 'talent.unfurling_darkness.enabled' (1x).\nLine 25: Converted 'talent.inner_quietus' to 'talent.inner_quietus.enabled' (1x).\nLine 26: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 26: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 28: Converted 'talent.mind_devourer' to 'talent.mind_devourer.enabled' (1x).\nLine 28: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 11: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 4: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 5: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 7: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\n\nThe import for 'cds' required some automated changes.\nLine 7: Converted 'talent.power_surge' to 'talent.power_surge.enabled' (1x).\nLine 7: Converted 'talent.mindbender' to 'talent.mindbender.enabled' (1x).\nLine 7: Converted 'talent.mindbender' to 'talent.mindbender.enabled' (1x).\nLine 7: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 7: Converted 'talent.dark_ascension' to 'talent.dark_ascension.enabled' (1x).\nLine 7: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 8: Converted 'talent.mindbender' to 'talent.mindbender.enabled' (1x).\nLine 8: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 9: Converted 'talent.mindbender' to 'talent.mindbender.enabled' (1x).\nLine 9: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 9: Converted 'talent.minds_eye' to 'talent.minds_eye.enabled' (1x).\nLine 9: Converted 'talent.distorted_reality' to 'talent.distorted_reality.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 2: Converted 'talent.entropic_rift' to 'talent.entropic_rift.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 3: Converted 'talent.dark_ascension' to 'talent.dark_ascension.enabled' (1x).\nLine 3: Converted 'talent.void_torrent' to 'talent.void_torrent.enabled' (1x).\nLine 3: Converted 'talent.psychic_link' to 'talent.psychic_link.enabled' (1x).\n\nImported 9 action lists.\n", ["profile"] = "actions.precombat+=/power_word_fortitude\nactions.precombat+=/shadowform,if=!buff.shadowform.up\nactions.precombat+=/variable,name=dr_force_prio,default=0,op=reset\nactions.precombat+=/variable,name=me_force_prio,default=1,op=reset\nactions.precombat+=/variable,name=max_vts,default=12,op=reset\nactions.precombat+=/variable,name=is_vt_possible,default=0,op=reset\nactions.precombat+=/variable,name=pooling_mindblasts,default=0,op=reset\nactions.precombat+=/arcane_torrent\n## actions.precombat+=/use_item,name=aberrant_spellforge\nactions.precombat+=/halo,if=boss&active_enemies<=4&(fight_remains>=120||active_enemies<=2)\nactions.precombat+=/shadow_crash,if=spell_targets.shadow_crash<=8&(!set_bonus.tier31_4pc||spell_targets.shadow_crash>1)\nactions.precombat+=/vampiric_touch,if=(!talent.whispering_shadows||!action.shadow_crash.in_flight)&(!talent.shadow_crash.enabled||spell_targets.shadow_crash>8||!boss||set_bonus.tier31_4pc&spell_targets.shadow_crash=1)\n\nactions+=/silence\nactions+=/variable,name=holding_crash,op=set,value=false\nactions+=/variable,name=pool_for_cds,op=set,value=(cooldown.void_eruption.remains<=gcd.max*3&talent.void_eruption||cooldown.dark_ascension.up&talent.dark_ascension)||talent.void_torrent&talent.psychic_link&cooldown.void_torrent.remains<=4&!variable.holding_crash&!buff.voidform.up\nactions+=/call_action_list,name=aoe,strict=1,if=active_enemies>2\nactions+=/run_action_list,name=main\n\nactions.aoe+=/variable,name=max_vts,op=set,default=12,value=spell_targets.vampiric_touch>?12\nactions.aoe+=/variable,name=is_vt_possible,op=set,value=0,default=1\nactions.aoe+=/variable,name=is_vt_possible,op=set,value=1,if=target.time_to_die>=18&dot.vampiric_touch.refreshable\n# TODO: Revamp to fix undesired behaviour with unstacked fights\nactions.aoe+=/variable,name=dots_up,op=set,value=(active_dot.vampiric_touch+8*(action.shadow_crash.in_flight&talent.whispering_shadows))>=variable.max_vts||!variable.is_vt_possible\nactions.aoe+=/variable,name=holding_crash,op=set,value=(variable.max_vts-active_dot.vampiric_touch)<4,if=variable.holding_crash&talent.whispering_shadows&active_enemies>1\nactions.aoe+=/variable,name=manual_vts_applied,op=set,value=(active_dot.vampiric_touch+8*!variable.holding_crash)>=variable.max_vts||!variable.is_vt_possible\n# High Priority action to put out Vampiric Touch on enemies that will live at least 18 seconds, up to 12 targets manually while prepping AoE\nactions.aoe+=/vampiric_touch,cycle_targets=1,if=(buff.unfurling_darkness.up||buff.unfurling_darkness_cd.down||buff.unfurling_darkness_cd.remains>2*gcd)&(target.time_to_die>=18&(dot.vampiric_touch.ticking||!variable.dots_up))&((variable.max_vts>0&!variable.manual_vts_applied&!action.shadow_crash.in_flight||!talent.whispering_shadows)&!buff.entropic_rift.up)\n# Use Shadow Crash to apply Vampiric Touch to as many adds as possible while being efficient with Vampiric Touch refresh windows\nactions.aoe+=/shadow_crash,cycle_targets=1,if=!variable.holding_crash&(dot.vampiric_touch.refreshable||dot.vampiric_touch.remains<=target.time_to_die&!buff.voidform.up)\n\nactions.main+=/variable,name=dots_up,op=set,value=active_dot.vampiric_touch>=cycle_enemies||action.shadow_crash.in_flight&talent.whispering_shadows,if=active_enemies<3\n# Are we pooling mindblasts? Currently only used for Voidweaver; [Hekili] modified to still allow us to build Insanity when CDs are toggled off.\nactions.main+=/variable,name=pooling_mindblasts,op=setif,value=1,value_else=0,condition=talent.void_blast&cooldown.void_torrent.remains<=gcd.max*(1+talent.mind_melt)&insanity>action.devouring_plague.cost\nactions.main+=/call_action_list,name=cds,if=boss&fight_remains<30||target.time_to_die>15&(!variable.holding_crash||active_enemies>2)\n# High priority action to consume Unfurling Darkness during the opener with Voidweaver\nactions.main+=/vampiric_touch,cycle_targets=1,if=buff.unfurling_darkness.up&talent.mind_melt&talent.void_blast&buff.mind_melt.stack<2&cooldown.mindbender.up&cooldown.dark_ascension.up&time<=4\n# High priority action to Mind Spike to get to enough Insanity during the opener with Voidweaver\nactions.main+=/mind_spike,if=talent.mind_melt&talent.void_blast&(buff.mind_melt.stack<(1*talent.distorted_reality+1-talent.unfurling_darkness-talent.minds_eye*1)&talent.halo||!talent.halo&buff.mind_melt.stack<2)&cooldown.mindbender.up&cooldown.dark_ascension.up&time<=4&insanity<=20\n# Use Shadowfiend and Mindbender on cooldown as long as Vampiric Touch and Shadow Word: Pain are active and sync with Dark Ascension\nactions.main+=/mindbender,if=(dot.shadow_word_pain.ticking&variable.dots_up||action.shadow_crash.in_flight&talent.whispering_shadows)&(boss&fight_remains<30||target.time_to_die>15)&(!talent.dark_ascension||cooldown.dark_ascension.remains=execute_time||buff.entropic_rift.remains<=gcd.max||action.void_torrent.channeling&talent.void_empowerment)&(insanity.deficit>=16||cooldown.mind_blast.full_recharge_time<=gcd.max||buff.entropic_rift.remains<=gcd.max)&(!talent.mind_devourer||!buff.mind_devourer.up||buff.entropic_rift.remains<=gcd.max)\n# Do not let Voidform Expire if you can avoid it.\nactions.main+=/devouring_plague,cycle_targets=1,if=(dot.devouring_plague.remains<=gcd.max||variable.dr_force_prio||!talent.distorted_reality&variable.me_force_prio)&buff.voidform.up&talent.perfected_form&buff.voidform.remains<=gcd.max&talent.void_eruption\nactions.main+=/wait,sec=cooldown.mind_blast.recharge_time,if=cooldown.mind_blast.recharge_time=execute_time)&(cooldown.void_bolt.remains%gcd.max-cooldown.void_bolt.remains%%gcd.max)*gcd.max<=0.25&(cooldown.void_bolt.remains%gcd.max-cooldown.void_bolt.remains%%gcd.max)>=0.01\n# Use Voidbolt on the enemy with the largest time to die. We do no care about dots because Voidbolt is only accessible inside voidform which guarantees maximum effect\nactions.main+=/void_bolt,cycle_targets=1,if=insanity.deficit>16&cooldown.void_bolt.remains<=0.1\n# Do not overcap on insanity\nactions.main+=/devouring_plague,cycle_targets=1,if=active_dot.devouring_plague<=1&dot.devouring_plague.remains<=gcd.max&(!talent.void_eruption||cooldown.void_eruption.remains>=gcd.max*3)||insanity.deficit<=16\n# Cast Void Torrent at very high priority if Voidweaver\nactions.main+=/void_torrent,cycle_targets=1,if=(dot.devouring_plague.ticking||talent.void_eruption&cooldown.void_eruption.up)&talent.entropic_rift&!variable.holding_crash\n# Snipe SWDs with Depth of Shadows to spawn pets. Prefer targets with Devouring Plague on them.\nactions.main+=/shadow_word_death,cycle_targets=1,if=talent.depth_of_shadows&(target.health.pct<=20||buff.deathspeaker.up&talent.deathspeaker)&talent.inescapable_torment\n# Use Mind Blasts if using Inescapable Torment and you are capping charges or it will expire soon. Do not use if pooling Mindblast.\nactions.main+=/mind_blast,cycle_targets=1,if=(cooldown.mind_blast.full_recharge_time<=gcd.max+execute_time||pet.fiend.remains<=execute_time+gcd.max)&pet.fiend.active&talent.inescapable_torment&pet.fiend.remains>=execute_time&active_enemies<=7&(!buff.mind_devourer.up||!talent.mind_devourer)&dot.devouring_plague.remains>execute_time&!variable.pooling_mindblasts\n# High Priority Shadow Word: Death is Mindbender is expiring in less than a gcd plus wiggle room\nactions.main+=/shadow_word_death,cycle_targets=1,if=pet.fiend.remains<=(gcd.max+1)&pet.fiend.active&talent.inescapable_torment&active_enemies<=7\n# Use Voidbolt on the enemy with the largest time to die. Force a cooldown check here to make sure SimC doesn't wait too long (i.e. weird MF:I desync with GCD)\nactions.main+=/void_bolt,cycle_targets=1,if=cooldown.void_bolt.remains<=0.1\n# Spend UFD as a high priority action\nactions.main+=/vampiric_touch,cycle_targets=1,if=buff.unfurling_darkness.up&active_dot.vampiric_touch<=5\n# Do not overcap MSI or MFI during Empowered Surges (Archon).\nactions.main+=/call_action_list,name=empowered_filler,strict=1,if=(buff.mind_spike_insanity.stack>2&talent.mind_spike||buff.mind_flay_insanity.stack>2&!talent.mind_spike)&talent.empowered_surges&!cooldown.void_eruption.up\n### Hyper cringe optimisations that fish for TOF using heals. Set priest.twist_of_fate_heal_rppm= to make this be used.\n## actions.main+=/call_action_list,name=heal_for_tof,if=!buff.twist_of_fate.up&buff.twist_of_fate_can_trigger_on_ally_heal.up&(talent.rhapsody||talent.divine_star||talent.halo)\n# Spend your Insanity on Devouring Plague at will if the fight will end in less than 10s\nactions.main+=/devouring_plague,if=boss&fight_remains<=duration+4\n# Use Devouring Plague to maximize uptime. Short circuit if you are capping on Insanity within 35 With Distorted Reality can maintain more than one at a time in multi-target.\nactions.main+=/devouring_plague,cycle_targets=1,if=(dot.devouring_plague.remains<=gcd.max||variable.dr_force_prio||!talent.distorted_reality&variable.me_force_prio)&(insanity.deficit<=35&talent.distorted_reality||buff.mind_devourer.up&cooldown.mind_blast.up&(cooldown.void_eruption.remains>=3*gcd.max||!talent.void_eruption)&talent.mind_devourer||buff.entropic_rift.up||buff.voidform.up&talent.perfected_form&talent.void_eruption)\n# Use Void Torrent if it will get near full Mastery Value and you have Cthun and Void Eruption. Prune this action for Entropic Rift Builds.\nactions.main+=/void_torrent,cycle_targets=1,if=!variable.holding_crash&!talent.entropic_rift&dot.devouring_plague.remains>=2.5\n# Use Shadow Crash as long as you are not holding for adds and Vampiric Touch is within pandemic range\nactions.main+=/shadow_crash,cycle_targets=1,if=dot.vampiric_touch.refreshable&!variable.holding_crash\n# Acquire UFD\nactions.main+=/vampiric_touch,cycle_targets=1,if=refreshable&buff.unfurling_darkness_cd.remains<(execute_time-0.2)&talent.unfurling_darkness&!buff.dark_ascension.up&talent.inner_quietus&active_dot.vampiric_touch<=5\n# Put out Vampiric Touch on enemies that will live at least 12s and Shadow Crash is not available soon\nactions.main+=/vampiric_touch,cycle_targets=1,if=refreshable&target.time_to_die>12&(dot.vampiric_touch.ticking||!variable.dots_up)&(variable.max_vts>0||active_enemies=1)&(cooldown.shadow_crash.remains>=dot.vampiric_touch.remains||variable.holding_crash||!talent.whispering_shadows)&(!action.shadow_crash.in_flight||!talent.whispering_shadows)\n# Spend Deathspeaker Procs\nactions.main+=/shadow_word_death,cycle_targets=1,if=variable.dots_up&buff.deathspeaker.up\n# Use all charges of Mind Blast if Vampiric Touch and Shadow Word: Pain are active and Mind Devourer is not active or you are prepping Void Eruption\nactions.main+=/mind_blast,cycle_targets=1,if=(!buff.mind_devourer.up||!talent.mind_devourer||cooldown.void_eruption.up&talent.void_eruption)&!variable.pooling_mindblasts\nactions.main+=/call_action_list,name=filler\n\nactions.aoe_variables+=/variable,name=max_vts,op=set,default=12,value=spell_targets.vampiric_touch>?12\nactions.aoe_variables+=/variable,name=is_vt_possible,op=set,value=0,default=1\nactions.aoe_variables+=/variable,name=is_vt_possible,op=set,value=1,if=target.time_to_die>=18&dot.vampiric_touch.refreshable\n# TODO: Revamp to fix undesired behaviour with unstacked fights\nactions.aoe_variables+=/variable,name=dots_up,op=set,value=(active_dot.vampiric_touch+8*(action.shadow_crash.in_flight&talent.whispering_shadows))>=variable.max_vts||!variable.is_vt_possible\nactions.aoe_variables+=/variable,name=holding_crash,op=set,value=(variable.max_vts-active_dot.vampiric_touch)<4,if=variable.holding_crash&talent.whispering_shadows&active_enemies>1\nactions.aoe_variables+=/variable,name=manual_vts_applied,op=set,value=(active_dot.vampiric_touch+8*!variable.holding_crash)>=variable.max_vts||!variable.is_vt_possible\n\n# TODO: Check VE/DA enter conditions based on dots\nactions.cds+=/potion,if=(buff.voidform.up||buff.power_infusion.up||buff.dark_ascension.up&(boss&fight_remains<=cooldown.power_infusion.remains+15))&(fight_remains>=320||buff.bloodlust.react)||boss&fight_remains<=30\nactions.cds+=/fireblood,if=buff.power_infusion.up||boss&fight_remains<=8\nactions.cds+=/berserking,if=buff.power_infusion.up||boss&fight_remains<=12\nactions.cds+=/blood_fury,if=buff.power_infusion.up||boss&fight_remains<=15\nactions.cds+=/ancestral_call,if=buff.power_infusion.up||boss&fight_remains<=15\n# Sync Power Infusion with Voidform or Dark Ascension\nactions.cds+=/power_infusion,if=buff.voidform.up||buff.dark_ascension.up\n## Use Power Infusion while Voidform or Dark Ascension is active. Chain directly after your own Power Infusion.\n## actions.cds+=/invoke_external_buff,name=power_infusion,if=(buff.voidform.up||buff.dark_ascension.up)&!buff.power_infusion.up\n## actions.cds+=/invoke_external_buff,name=bloodlust,if=buff.power_infusion.up&fight_remains<120||fight_remains<=40\n# Make sure Mindbender is active before popping Dark Ascension unless you have insignificant talent points or too many targets\nactions.cds+=/halo,if=talent.power_surge&(pet.fiend.active&cooldown.fiend.remains>=4&talent.mindbender||!talent.mindbender&!cooldown.fiend.up||active_enemies>2&!talent.inescapable_torment||!talent.dark_ascension)&(cooldown.mind_blast.charges=0||!talent.void_eruption||cooldown.void_eruption.remains>=gcd.max*4)\n# Make sure Mindbender is active before popping Void Eruption and dump charges of Mind Blast before casting\nactions.cds+=/void_eruption,if=(pet.fiend.active&cooldown.fiend.remains>=4||!talent.mindbender&!cooldown.fiend.up||active_enemies>2&!talent.inescapable_torment)&(cooldown.mind_blast.charges=0||time>15)\nactions.cds+=/dark_ascension,if=(pet.fiend.active&cooldown.fiend.remains>=4||!talent.mindbender&!cooldown.fiend.up||active_enemies>2&!talent.inescapable_torment)&(active_dot.devouring_plague>=1||insanity>=(15+5*!talent.minds_eye+5*talent.distorted_reality-pet.fiend.active*6))\nactions.cds+=/call_action_list,name=trinkets\n# Use Desperate Prayer to heal up should Shadow Word: Death or other damage bring you below 75%\nactions.cds+=/desperate_prayer,if=health.pct<=75\n\n### Healing spell action list for proccing Twist of Fate\n## actions.filler+=/call_action_list,name=heal_for_tof,if=!buff.twist_of_fate.up&buff.twist_of_fate_can_trigger_on_ally_heal.up&(talent.rhapsody||talent.divine_star||talent.halo)\n## Use PWS with CR talented to trigger TOF if there are no better alternatives available to do this as we still get insanity for a PWS cast.\n## actions.filler+=/power_word_shield,if=!buff.twist_of_fate.up&buff.twist_of_fate_can_trigger_on_ally_heal.up&talent.crystalline_reflection\n# Consume empowered fillers\nactions.filler+=/call_action_list,name=empowered_filler,strict=1,if=(buff.mind_spike_insanity.up||buff.mind_flay_insanity.up)&dot.devouring_plague.remains>action.mind_spike.cast_time||!talent.mind_spike\n# Cast Vampiric Touch to proc Unfurling Darkness\nactions.filler+=/vampiric_touch,cycle_targets=1,if=talent.unfurling_darkness&buff.unfurling_darkness_cd.remains<(execute_time-0.2)&talent.inner_quietus\nactions.filler+=/shadow_word_death,cycle_targets=1,if=target.health.pct<20||(buff.deathspeaker.up||set_bonus.tier31_2pc)&dot.devouring_plague.ticking\nactions.filler+=/shadow_word_death,cycle_targets=1,if=talent.inescapable_torment&pet.fiend.active\nactions.filler+=/devouring_plague,if=talent.empowered_surges&buff.surge_of_insanity.up||buff.voidform.up&talent.void_eruption\nactions.filler+=/vampiric_touch,cycle_targets=1,if=talent.unfurling_darkness&buff.unfurling_darkness_cd.remains<(execute_time-0.2)\n# Save up to 20s if adds are coming soon.\nactions.filler+=/halo,if=spell_targets>1\n## Using a heal with no damage kickbacks for TOF is damage neutral, so we will do it.\n## actions.filler+=/power_word_life,if=!buff.twist_of_fate.up&buff.twist_of_fate_can_trigger_on_ally_heal.up\nactions.filler+=/call_action_list,name=empowered_filler,strict=1,if=buff.mind_spike_insanity.up||buff.mind_flay_insanity.up\n## actions.filler+=/call_action_list,name=heal_for_tof,if=equipped.rashoks_molten_heart&(active_allies-(10-buff.molten_radiance.value))>=10&buff.molten_radiance.up,line_cd=5\nactions.filler+=/mind_spike,cycle_targets=1\nactions.filler+=/mind_flay,cycle_targets=1,chain=1,interrupt_immediate=1,interrupt_if=ticks>=2,interrupt_global=1\nactions.filler+=/divine_star\n# Use Shadow Crash while moving as a low-priority action when adds will not come in 20 seconds.\nactions.filler+=/shadow_crash,if=!set_bonus.tier31_4pc\n# Use Shadow Word: Death while moving as a low-priority action in execute\nactions.filler+=/shadow_word_death,cycle_targets=1,if=target.health.pct<20\n# Use Shadow Word: Death while moving as a low-priority action\nactions.filler+=/shadow_word_death,cycle_targets=1\n# Use Shadow Word: Pain while moving as a low-priority action with T31 4pc\nactions.filler+=/shadow_word_pain,cycle_targets=1,if=set_bonus.tier31_4pc\n# Use Shadow Word: Pain while moving as a low-priority action without T31 4pc\nactions.filler+=/shadow_word_pain,cycle_targets=1,if=!set_bonus.tier31_4pc\n\nactions.empowered_filler+=/mind_spike_insanity,cycle_targets=1,if=buff.mind_spike_insanity.up\nactions.empowered_filler+=/mind_flay_insanity,cycle_targets=1,if=buff.mind_flay_insanity.up\n\n## Use Halo to acquire Twist of Fate if an ally can be healed for it and it is not currently up.\n## actions.heal_for_tof+=/halo\n## Use Divine Star to acquire Twist of Fate if an ally can be healed for it and it is not currently up.\n## actions.heal_for_tof+=/divine_star\n## Use Holy Nova when Rhapsody is fully stacked to acquire Twist of Fate if an ally can be healed for it and it is not currently up.\n## actions.heal_for_tof+=/holy_nova,if=buff.rhapsody.stack=20&talent.rhapsody\n\nactions.trinkets+=/use_item,use_off_gcd=1,name=aberrant_spellforge,if=gcd.remains>0&buff.aberrant_spellforge.stack<=4\nactions.trinkets+=/use_item,name=spymasters_web,if=(buff.power_infusion.up&buff.spymasters_report.stack>=40&fight_remains>240)||(buff.power_infusion.up&buff.bloodlust.up&buff.spymasters_report.stack>=10)||buff.power_infusion.up&(fight_remains<120)||(fight_remains<=20||buff.dark_ascension.up&fight_remains<=60||buff.entropic_rift.up&talent.entropic_rift&fight_remains<=30)&!buff.spymasters_web.up\nactions.trinkets+=/use_items,if=(buff.voidform.up||buff.power_infusion.up||buff.dark_ascension.up||(cooldown.void_eruption.remains>10&trinket.cooldown.duration<=60))||boss&fight_remains<20", ["spec"] = 258, }, ["Holy Priest"] = { ["builtIn"] = true, ["date"] = 20240828, ["spec"] = 257, ["desc"] = "Healer priorities are DPS-focused only\n\n2024-08-28: Use cooldowns action list\n\n2024-07-30: The War Within", ["profile"] = "actions.precombat+=/power_word_fortitude\n\nactions+=/call_action_list,name=cooldowns\n# Always use HF if we have empyreal blaze (dot extension) or harmonious apparatus (cd reduction) or if it's not currently ticking. Otherwise, only use when refreshable to be sure we get the longest duration possible. It's worth it to cast even when the target will die soon based on just the initial hit damage. We also don't want to cast immediately once empyreal blaze is up when we are prepping divine word\nactions+=/holy_fire,cycle_targets=1,if=(talent.empyreal_blaze||talent.harmonious_apparatus||!ticking||refreshable)&!(buff.empyreal_blaze.up&(cooldown.divine_word.up||buff.divine_word.up)&cooldown.holy_word_chastise.up)\n# Don't cast SW:P during apotheosis or divine favor: chastise. We also don't cycle targets because it isn't worth the GCDs, since Smite deals slightly more damage than a full SW:P.\nactions+=/shadow_word_pain,if=(refreshable||!ticking)&(target.time_to_die>=dot.shadow_word_pain.duration)&!buff.divine_favor_chastise.up&!buff.apotheosis.up\n# Prepare to enter divine favor: chastise\nactions+=/call_action_list,name=divine_favor_chastise_prep,if=talent.divine_word&talent.holy_word_chastise&buff.divine_favor_chastise.down\n# Enter Divine Favor rotation with divine favor: chastise buff up\nactions+=/run_action_list,name=divine_favor_chastise_active,strict=1,if=buff.divine_favor_chastise.up\n# Run divine favor fillers rotation with buff down\nactions+=/run_action_list,name=divine_favor_filler,if=talent.divine_word&talent.holy_word_chastise&buff.divine_favor_chastise.down\n# Run divine image rotation with divine image talented\nactions+=/run_action_list,name=divine_image,strict=1,if=talent.divine_image\n# Otherwise generic rotation\nactions+=/run_action_list,name=generic\n\nactions.divine_favor_chastise_prep+=/variable,name=empyreal_exec_time,op=set,value=0\n# apotheosis_exec_time: Store how long Apotheosis will take to execute\nactions.divine_favor_chastise_prep+=/variable,name=apotheosis_exec_time,op=setif,condition=talent.apotheosis,value=action.apotheosis.execute_time,value_else=0\n# Use apotheosis to get Chastise back if its on cooldown and Divine Word will be up soon. We can use Apotheosis (2min CD) to reset Chastise for every other Divine Word (1min CD).\nactions.divine_favor_chastise_prep+=/apotheosis,if=(cooldown.holy_word_chastise.remains>cooldown.divine_word.remains)&(cooldown.divine_word.remains<=(variable.empyreal_exec_time+variable.apotheosis_exec_time))\n# Divine Word only if we can sync with Chastise and (if talented) Empyreal Blaze\nactions.divine_favor_chastise_prep+=/divine_word,if=cooldown.holy_word_chastise.up&(!talent.empyreal_blaze||buff.empyreal_blaze.up)\n# Holy word chastise to trigger divine favor: chastise\nactions.divine_favor_chastise_prep+=/holy_word_chastise,if=!talent.empyreal_blaze&buff.divine_word.up||talent.empyreal_blaze&buff.empyreal_blaze.down\n\nactions.divine_favor_chastise_active+=/halo,if=spell_targets.halo>=2\nactions.divine_favor_chastise_active+=/divine_star,if=spell_targets.divine_star>=2\n# There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do\nactions.divine_favor_chastise_active+=/holy_nova,if=(spell_targets.holy_nova>=2&buff.rhapsody.stack>=18)||(spell_targets.holy_nova>=3&buff.rhapsody.stack>=9)||(spell_targets.holy_nova>=4&buff.rhapsody.stack>=4)||spell_targets.holy_nova>=5\nactions.divine_favor_chastise_active+=/mindgames\nactions.divine_favor_chastise_active+=/shadow_word_death,if=target.health.pct<20\nactions.divine_favor_chastise_active+=/holy_word_chastise\n# We want to cycle smite to different targets to spread holy fire dots in AOE situations, this will buff holy nova's damage\nactions.divine_favor_chastise_active+=/smite,cycle_targets=1,if=spell_targets.holy_nova>=2\nactions.divine_favor_chastise_active+=/smite\n\nactions.divine_favor_filler+=/halo,if=spell_targets.halo>=2\nactions.divine_favor_filler+=/divine_star,if=spell_targets.divine_star>=2\n# There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do\nactions.divine_favor_filler+=/holy_nova,if=(spell_targets.holy_nova>=2&buff.rhapsody.stack>=18)||(spell_targets.holy_nova>=3&buff.rhapsody.stack>=9)||(spell_targets.holy_nova>=4&buff.rhapsody.stack>=4)||spell_targets.holy_nova>=5\nactions.divine_favor_filler+=/mindgames\nactions.divine_favor_filler+=/shadow_word_death,if=target.health.pct<20\n# We can use chastise for damage as long as we will have apotheosis available before the next divine word, otherwise only use it when it will be back up at the same time as divine word\nactions.divine_favor_filler+=/holy_word_chastise,if=(cooldown.apotheosis.remains=2\nactions.divine_image+=/divine_star,if=spell_targets.divine_star>=2\n# There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do\nactions.divine_image+=/holy_nova,if=(spell_targets.holy_nova>=2&buff.rhapsody.stack>=18)||(spell_targets.holy_nova>=3&buff.rhapsody.stack>=9)||(spell_targets.holy_nova>=4&buff.rhapsody.stack>=4)||spell_targets.holy_nova>=5\nactions.divine_image+=/mindgames\nactions.divine_image+=/shadow_word_death,if=target.health.pct<20\nactions.divine_image+=/smite\n\nactions.generic+=/holy_word_chastise\n# Hold Apotheosis if chastise will be up soon\nactions.generic+=/apotheosis,if=cooldown.holy_word_chastise.remains>(gcd.max*3)\nactions.generic+=/halo,if=spell_targets.halo>=2\nactions.generic+=/divine_star,if=spell_targets.divine_star>=2\n# There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do\nactions.generic+=/holy_nova,if=(spell_targets.holy_nova>=2&buff.rhapsody.stack>=18)||(spell_targets.holy_nova>=3&buff.rhapsody.stack>=9)||(spell_targets.holy_nova>=4&buff.rhapsody.stack>=4)||spell_targets.holy_nova>=5\nactions.generic+=/mindgames\nactions.generic+=/shadow_word_death,if=target.health.pct<20\nactions.generic+=/smite\n\nactions.cooldowns+=/shadowfiend\n# Sync PI with divine favor: chastise if we took divine word\nactions.cooldowns+=/power_infusion,if=(!talent.divine_word||(cooldown.divine_word.up&cooldown.holy_word_chastise.up))\n# Only potion in sync with power infusion\nactions.cooldowns+=/potion,if=buff.power_infusion.up\n# hold trinkets to use with PI\nactions.cooldowns+=/use_items,if=buff.power_infusion.up", ["version"] = 20240828, ["warnings"] = "The import for 'cooldowns' required some automated changes.\nLine 2: Converted 'talent.divine_word' to 'talent.divine_word.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 2: Converted 'talent.empyreal_blaze' to 'talent.empyreal_blaze.enabled' (1x).\nLine 2: Converted 'talent.harmonious_apparatus' to 'talent.harmonious_apparatus.enabled' (1x).\nLine 4: Converted 'talent.divine_word' to 'talent.divine_word.enabled' (1x).\nLine 4: Converted 'talent.holy_word_chastise' to 'talent.holy_word_chastise.enabled' (1x).\nLine 6: Converted 'talent.divine_word' to 'talent.divine_word.enabled' (1x).\nLine 6: Converted 'talent.holy_word_chastise' to 'talent.holy_word_chastise.enabled' (1x).\nLine 7: Converted 'talent.divine_image' to 'talent.divine_image.enabled' (1x).\n\nThe import for 'divine_favor_chastise_prep' required some automated changes.\nLine 2: Converted 'talent.apotheosis' to 'talent.apotheosis.enabled' (1x).\nLine 4: Converted 'talent.empyreal_blaze' to 'talent.empyreal_blaze.enabled' (1x).\nLine 5: Converted 'talent.empyreal_blaze' to 'talent.empyreal_blaze.enabled' (1x).\nLine 5: Converted 'talent.empyreal_blaze' to 'talent.empyreal_blaze.enabled' (1x).\n\nImported 8 action lists.\n", ["lists"] = { ["divine_favor_filler"] = { { ["enabled"] = true, ["criteria"] = "spell_targets.halo >= 2", ["action"] = "halo", }, { ["enabled"] = true, ["criteria"] = "spell_targets.divine_star >= 2", ["action"] = "divine_star", }, { ["enabled"] = true, ["criteria"] = "( spell_targets.holy_nova >= 2 & buff.rhapsody.stack >= 18 ) || ( spell_targets.holy_nova >= 3 & buff.rhapsody.stack >= 9 ) || ( spell_targets.holy_nova >= 4 & buff.rhapsody.stack >= 4 ) || spell_targets.holy_nova >= 5", ["action"] = "holy_nova", ["description"] = "There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do", }, { ["action"] = "mindgames", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "target.health.pct < 20", ["action"] = "shadow_word_death", }, { ["enabled"] = true, ["criteria"] = "( cooldown.apotheosis.remains < cooldown.divine_word.remains ) || ( cooldown.holy_word_chastise.duration_expected <= cooldown.divine_word.remains )", ["action"] = "holy_word_chastise", ["description"] = "We can use chastise for damage as long as we will have apotheosis available before the next divine word, otherwise only use it when it will be back up at the same time as divine word", }, { ["action"] = "smite", ["enabled"] = true, }, }, ["divine_image"] = { { ["enabled"] = true, ["criteria"] = "buff.answered_prayers.down & ! ( cooldown.holy_word_sanctify.up || cooldown.holy_word_serenity.up || cooldown.holy_word_chastise.up )", ["action"] = "apotheosis", }, { ["enabled"] = true, ["action"] = "holy_word_sanctify", ["description"] = "line_cd prevents re-casting sanctify and serenity right away, wasting GCDs that could be used to proc divine image damage. In testing, the sweet spot balance between adding more divine images, triggering apotheosis, and casting damage CDs was to let the image from each healing holy word expire before re-casting", ["line_cd"] = "9", }, { ["enabled"] = true, ["action"] = "holy_word_serenity", ["line_cd"] = "9", }, { ["action"] = "holy_word_chastise", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "spell_targets.halo >= 2", ["action"] = "halo", }, { ["enabled"] = true, ["criteria"] = "spell_targets.divine_star >= 2", ["action"] = "divine_star", }, { ["enabled"] = true, ["criteria"] = "( spell_targets.holy_nova >= 2 & buff.rhapsody.stack >= 18 ) || ( spell_targets.holy_nova >= 3 & buff.rhapsody.stack >= 9 ) || ( spell_targets.holy_nova >= 4 & buff.rhapsody.stack >= 4 ) || spell_targets.holy_nova >= 5", ["action"] = "holy_nova", ["description"] = "There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do", }, { ["action"] = "mindgames", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "target.health.pct < 20", ["action"] = "shadow_word_death", }, { ["action"] = "smite", ["enabled"] = true, }, }, ["default"] = { { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cooldowns", }, { ["enabled"] = true, ["action"] = "holy_fire", ["cycle_targets"] = 1, ["criteria"] = "( talent.empyreal_blaze.enabled || talent.harmonious_apparatus.enabled || ! ticking || refreshable ) & ! ( buff.empyreal_blaze.up & ( cooldown.divine_word.up || buff.divine_word.up ) & cooldown.holy_word_chastise.up )", ["description"] = "Always use HF if we have empyreal blaze (dot extension) or harmonious apparatus (cd reduction) or if it's not currently ticking. Otherwise, only use when refreshable to be sure we get the longest duration possible. It's worth it to cast even when the target will die soon based on just the initial hit damage. We also don't want to cast immediately once empyreal blaze is up when we are prepping divine word", }, { ["enabled"] = true, ["criteria"] = "( refreshable || ! ticking ) & ( target.time_to_die >= dot.shadow_word_pain.duration ) & ! buff.divine_favor_chastise.up & ! buff.apotheosis.up", ["action"] = "shadow_word_pain", ["description"] = "Don't cast SW:P during apotheosis or divine favor: chastise. We also don't cycle targets because it isn't worth the GCDs, since Smite deals slightly more damage than a full SW:P.", }, { ["enabled"] = true, ["action"] = "call_action_list", ["description"] = "Prepare to enter divine favor: chastise", ["criteria"] = "talent.divine_word.enabled & talent.holy_word_chastise.enabled & buff.divine_favor_chastise.down", ["list_name"] = "divine_favor_chastise_prep", }, { ["enabled"] = true, ["action"] = "run_action_list", ["description"] = "Enter Divine Favor rotation with divine favor: chastise buff up", ["strict"] = 1, ["criteria"] = "buff.divine_favor_chastise.up", ["list_name"] = "divine_favor_chastise_active", }, { ["enabled"] = true, ["action"] = "run_action_list", ["description"] = "Run divine favor fillers rotation with buff down", ["criteria"] = "talent.divine_word.enabled & talent.holy_word_chastise.enabled & buff.divine_favor_chastise.down", ["list_name"] = "divine_favor_filler", }, { ["enabled"] = true, ["action"] = "run_action_list", ["description"] = "Run divine image rotation with divine image talented", ["strict"] = 1, ["criteria"] = "talent.divine_image.enabled", ["list_name"] = "divine_image", }, { ["enabled"] = true, ["description"] = "Otherwise generic rotation", ["action"] = "run_action_list", ["list_name"] = "generic", }, }, ["precombat"] = { { ["action"] = "power_word_fortitude", ["enabled"] = true, }, }, ["divine_favor_chastise_prep"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "0", ["var_name"] = "empyreal_exec_time", }, { ["enabled"] = true, ["op"] = "setif", ["description"] = "apotheosis_exec_time: Store how long Apotheosis will take to execute", ["criteria"] = "talent.apotheosis.enabled", ["var_name"] = "apotheosis_exec_time", ["action"] = "variable", ["value_else"] = "0", ["value"] = "action.apotheosis.execute_time", }, { ["enabled"] = true, ["criteria"] = "( cooldown.holy_word_chastise.remains > cooldown.divine_word.remains ) & ( cooldown.divine_word.remains <= ( variable.empyreal_exec_time + variable.apotheosis_exec_time ) )", ["action"] = "apotheosis", ["description"] = "Use apotheosis to get Chastise back if its on cooldown and Divine Word will be up soon. We can use Apotheosis (2min CD) to reset Chastise for every other Divine Word (1min CD).", }, { ["enabled"] = true, ["criteria"] = "cooldown.holy_word_chastise.up & ( ! talent.empyreal_blaze.enabled || buff.empyreal_blaze.up )", ["action"] = "divine_word", ["description"] = "Divine Word only if we can sync with Chastise and (if talented) Empyreal Blaze", }, { ["enabled"] = true, ["criteria"] = "! talent.empyreal_blaze.enabled & buff.divine_word.up || talent.empyreal_blaze.enabled & buff.empyreal_blaze.down", ["action"] = "holy_word_chastise", ["description"] = "Holy word chastise to trigger divine favor: chastise", }, }, ["generic"] = { { ["action"] = "holy_word_chastise", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "cooldown.holy_word_chastise.remains > ( gcd.max * 3 )", ["action"] = "apotheosis", ["description"] = "Hold Apotheosis if chastise will be up soon", }, { ["enabled"] = true, ["criteria"] = "spell_targets.halo >= 2", ["action"] = "halo", }, { ["enabled"] = true, ["criteria"] = "spell_targets.divine_star >= 2", ["action"] = "divine_star", }, { ["enabled"] = true, ["criteria"] = "( spell_targets.holy_nova >= 2 & buff.rhapsody.stack >= 18 ) || ( spell_targets.holy_nova >= 3 & buff.rhapsody.stack >= 9 ) || ( spell_targets.holy_nova >= 4 & buff.rhapsody.stack >= 4 ) || spell_targets.holy_nova >= 5", ["action"] = "holy_nova", ["description"] = "There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do", }, { ["action"] = "mindgames", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "target.health.pct < 20", ["action"] = "shadow_word_death", }, { ["action"] = "smite", ["enabled"] = true, }, }, ["cooldowns"] = { { ["action"] = "mindbender", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( ! talent.divine_word.enabled || ( cooldown.divine_word.up & cooldown.holy_word_chastise.up ) )", ["action"] = "power_infusion", ["description"] = "Sync PI with divine favor: chastise if we took divine word", }, { ["enabled"] = true, ["criteria"] = "buff.power_infusion.up", ["action"] = "potion", ["description"] = "Only potion in sync with power infusion", }, { ["enabled"] = true, ["criteria"] = "buff.power_infusion.up", ["action"] = "use_items", ["description"] = "hold trinkets to use with PI", }, }, ["divine_favor_chastise_active"] = { { ["enabled"] = true, ["criteria"] = "spell_targets.halo >= 2", ["action"] = "halo", }, { ["enabled"] = true, ["criteria"] = "spell_targets.divine_star >= 2", ["action"] = "divine_star", }, { ["enabled"] = true, ["criteria"] = "( spell_targets.holy_nova >= 2 & buff.rhapsody.stack >= 18 ) || ( spell_targets.holy_nova >= 3 & buff.rhapsody.stack >= 9 ) || ( spell_targets.holy_nova >= 4 & buff.rhapsody.stack >= 4 ) || spell_targets.holy_nova >= 5", ["action"] = "holy_nova", ["description"] = "There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do", }, { ["action"] = "mindgames", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "target.health.pct < 20", ["action"] = "shadow_word_death", }, { ["action"] = "holy_word_chastise", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "smite", ["cycle_targets"] = 1, ["criteria"] = "spell_targets.holy_nova >= 2", ["description"] = "We want to cycle smite to different targets to spread holy fire dots in AOE situations, this will buff holy nova's damage", }, { ["action"] = "smite", ["enabled"] = true, }, }, }, ["author"] = "Kapulani", }, ["Discipline"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20240811, ["author"] = "SimC", ["desc"] = "Healer priorities are DPS-focused only\n\n2024-07-30: The War Within", ["lists"] = { ["default"] = { { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cooldowns", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "! buff.twilight_equilibrium_holy_amp.up & ! buff.twilight_equilibrium_shadow_amp.up", ["var_name"] = "te_none", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "buff.twilight_equilibrium_shadow_amp.up || variable.te_none", ["var_name"] = "te_shadow", ["description"] = "Twilight Equilibrium is buffing shadow damage", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "buff.twilight_equilibrium_holy_amp.up || variable.te_none", ["var_name"] = "te_holy", ["description"] = "Twilight Equilibrium is buffing holy damage", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "talent.shadow_covenant.enabled", ["var_name"] = "long_scov", ["description"] = "Long Shadow covenant is enabled", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "cooldown.shadowfiend.up || buff.shadow_covenant.up", ["var_name"] = "can_enter_scov", ["description"] = "Ready to start shadow covenant phase", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "0", ["var_name"] = "shadow_spells_duration_max", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "2", ["var_name"] = "shadow_spells_duration_max", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "action.mind_blast.execute_time", ["var_name"] = "shadow_spells_duration_max", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "shadow_spells_duration_max", ["value"] = "action.mind_blast.execute_time", ["description"] = "penance", ["criteria"] = "talent.dark_indulgence.enabled", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "action.shadow_word_death.execute_time", ["var_name"] = "shadow_spells_duration_max", ["criteria"] = "talent.shadow_word_death.enabled", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "action.shadow_word_death.execute_time", ["var_name"] = "shadow_spells_duration_max", ["criteria"] = "talent.shadow_word_death.enabled & talent.death_and_madness.enabled & target.health.pct < 20", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "action.mindgames.execute_time", ["var_name"] = "shadow_spells_duration_max", ["criteria"] = "talent.mindgames.enabled", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "action.divine_star.execute_time", ["var_name"] = "shadow_spells_duration_max", ["criteria"] = "talent.divine_star.enabled", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "action.halo.execute_time", ["var_name"] = "shadow_spells_duration_max", ["criteria"] = "talent.halo.enabled", }, { ["enabled"] = true, ["op"] = "floor", ["action"] = "variable", ["value"] = "( buff.shadow_covenant.duration - variable.shadow_spells_duration_max ) / gcd.max", ["var_name"] = "max_te_holy", ["description"] = "(scov duration - shadow spells duration) / GCD time = estimate of holy spells we should need to use during the next scov window Long scov example: (15 - 12) / 1.5 = 2 GCDs to spend on holy spells Short scov example: (7 - 12) / 1.5 = -3.3 GCDs to spend on holy spells (none)", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "0", ["var_name"] = "remaining_te_holy", ["description"] = "Counting variable, the number of non-fractional remaining holy casts available", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "variable.max_te_holy", ["var_name"] = "remaining_te_holy", }, { ["enabled"] = true, ["op"] = "setif", ["criteria"] = "talent.train_of_thought.enabled", ["var_name"] = "expected_penance_reduction", ["value"] = "2", ["action"] = "variable", ["value_else"] = "0", ["description"] = "TODO: duration_expected is buggy on penance/dark reprimand, using a static reduction as a stand-in for now", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "0", ["var_name"] = "shadow_spells_duration", ["description"] = "Calculate how much cast time worth of shadow spells we have currently available. We use shadow_spells_duration to determine if we have time to weave in any holy spells to proc twilight equilibrium.", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "shadow_spells_duration", ["value"] = "2", ["description"] = "Penance", ["criteria"] = "cooldown.penance.up || ( ( cooldown.penance.remains - variable.expected_penance_reduction ) < buff.shadow_covenant.remains )", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "shadow_spells_duration", ["value"] = "action.mindgames.execute_time", ["description"] = "Mindgames", ["criteria"] = "cooldown.mindgames.up || ( cooldown.mindgames.remains_expected < buff.shadow_covenant.remains )", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "shadow_spells_duration", ["value"] = "action.shadow_word_death.execute_time", ["description"] = "We always get the first SW:D", ["criteria"] = "cooldown.shadow_word_death.up || ( cooldown.shadow_word_death.remains < buff.shadow_covenant.remains )", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "shadow_spells_duration", ["value"] = "action.shadow_word_death.execute_time", ["description"] = "Second SW:D only when talented and target health in execute range", ["criteria"] = "( cooldown.shadow_word_death.up || ( cooldown.shadow_word_death.remains < buff.shadow_covenant.remains ) ) & ( target.health.pct < 20 || target.time_to_pct_20 < cooldown.shadow_word_death.remains ) & talent.death_and_madness.enabled", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "shadow_spells_duration", ["value"] = "action.mind_blast.charges * action.mind_blast.execute_time", ["description"] = "Add any whole charges of mind blast", ["criteria"] = "action.mind_blast.charges >= 1", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "shadow_spells_duration", ["value"] = "action.mind_blast.execute_time", ["description"] = "Add any fractional charges of mindblast that will recharge in time", ["criteria"] = "( ( action.mind_blast.charges_fractional >= 1 & action.mind_blast.charges_fractional < 2 ) & ( ( ( 1 - ( action.mind_blast.charges_fractional - 1 ) ) * action.mind_blast.recharge_time ) < buff.shadow_covenant.remains ) ) || ( ( action.mind_blast.charges_fractional < 1 ) & ( ( ( 1 - action.mind_blast.charges_fractional ) * action.mind_blast.recharge_time ) < buff.shadow_covenant.remains ) )", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "shadow_spells_duration", ["value"] = "action.divine_star.execute_time", ["description"] = "Divine Star", ["criteria"] = "cooldown.divine_star.up || ( cooldown.divine_star.remains < buff.shadow_covenant.remains )", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "shadow_spells_duration", ["value"] = "action.halo.execute_time", ["description"] = "Halo", ["criteria"] = "cooldown.halo.up || ( cooldown.halo.remains < buff.shadow_covenant.remains )", }, { ["enabled"] = true, ["op"] = "setif", ["criteria"] = "talent.twilight_equilibrium.enabled", ["var_name"] = "should_te", ["value"] = "( buff.shadow_covenant.remains - variable.shadow_spells_duration ) > action.smite.execute_time", ["action"] = "variable", ["value_else"] = "0", ["description"] = "Determine if we have enough scov time remaining to weave in a twilight equilibrium activation. If we don't have TE talented, always false. Using smite's execution time to represent a worst-case scenario.", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "cooldown.shadowfiend.remains + action.shadowfiend.execute_time", ["var_name"] = "next_penance_time", ["description"] = "First casts should always be HD prep->covenant->schism->HD dark reprimand", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_penance_time", ["value"] = "gcd.max", ["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium", ["criteria"] = "variable.remaining_te_holy > 0", }, { ["enabled"] = true, ["op"] = "sub", ["action"] = "variable", ["value"] = "1", ["var_name"] = "remaining_te_holy", ["description"] = "Reduce our counting variable", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( cooldown.penance.duration - variable.expected_penance_reduction ) < variable.next_penance_time", ["var_name"] = "can_penance", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "variable.next_penance_time + 2", ["var_name"] = "next_swd_time", ["description"] = "Shadow Word: Death SW:D is better than other spells if we are in execute phase.", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_swd_time", ["value"] = "gcd.max", ["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium", ["criteria"] = "variable.remaining_te_holy > 0", }, { ["enabled"] = true, ["op"] = "sub", ["action"] = "variable", ["value"] = "1", ["var_name"] = "remaining_te_holy", ["description"] = "Reduce our counting variable", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_swd_time", ["value"] = "action.mindgames.execute_time", ["description"] = "indgame ette ha W: ren' xecut has n av hattere erception on' av xpiatio", ["criteria"] = "( ( talent.mindgames.enabled & talent.shattered_perceptions.enabled ) || ( talent.mindgames.enabled & ! talent.expiation.enabled ) ) & target.health.pct >= 20", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_swd_time", ["value"] = "action.mind_blast.execute_time", ["description"] = "Mind blast is better than SW:D if we aren't in execute", ["criteria"] = "target.health.pct >= 20", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_swd_time", ["value"] = "action.mind_blast.execute_time", ["description"] = "Second mindblast when talented", ["criteria"] = "target.health.pct >= 20 & talent.dark_indulgence.enabled", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_swd_time", ["value"] = "action.divine_star.execute_time", ["description"] = "Divine Star and halo are better than SW:D if we aren't in execute and don't have expiation", ["criteria"] = "talent.divine_star.enabled & target.health.pct >= 20 & ! talent.expiation.enabled", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["value"] = "action.halo.execute_time", ["var_name"] = "next_swd_time", ["criteria"] = "talent.halo.enabled & target.health.pct >= 20 & ! talent.expiation.enabled", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "cooldown.shadow_word_death.duration_expected < variable.next_swd_time", ["var_name"] = "can_swd", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "variable.next_penance_time + 2", ["var_name"] = "next_mind_blast_time", ["description"] = "Mindblast Mindblast is better than other spells if we aren't in execute phase", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_mind_blast_time", ["value"] = "gcd.max", ["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium", ["criteria"] = "variable.remaining_te_holy > 0", }, { ["enabled"] = true, ["op"] = "sub", ["action"] = "variable", ["value"] = "1", ["var_name"] = "remaining_te_holy", ["description"] = "Reduce our counting variable", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_mind_blast_time", ["value"] = "action.shadow_word_death.execute_time", ["description"] = "Add SW:D if we're in execute phase", ["criteria"] = "target.health.pct < 20", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_mind_blast_time", ["value"] = "action.shadow_word_death.execute_time", ["description"] = "Add a second SW:D if we have death and madness", ["criteria"] = "talent.death_and_madness.enabled & target.health.pct < 20", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_mind_blast_time", ["value"] = "action.mindgames.execute_time", ["description"] = "Add mindgames if we have it talented and don't have expiation", ["criteria"] = "talent.mindgames.enabled & ! talent.expiation.enabled", }, { ["enabled"] = true, ["op"] = "setif", ["criteria"] = "action.mind_blast.charges_fractional >= 1", ["var_name"] = "can_mind_blast", ["value"] = "( ( action.mind_blast.max_charges - ( action.mind_blast.charges_fractional - 1 ) ) * action.mind_blast.recharge_time ) < variable.next_mind_blast_time", ["action"] = "variable", ["value_else"] = "0", ["description"] = "TODO: This is a little bit simplistic, requiring both charges of mindblast to be available at the moment the first charge needs to be used. Slight optimization should be possible.", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "variable.next_penance_time + 2", ["var_name"] = "next_mindgames_time", ["description"] = "Mindgames Mindgames is a better option than other spells if we aren't in execute and don't have expiation", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_mindgames_time", ["value"] = "gcd.max", ["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium", ["criteria"] = "variable.remaining_te_holy > 0", }, { ["enabled"] = true, ["op"] = "sub", ["action"] = "variable", ["value"] = "1", ["var_name"] = "remaining_te_holy", ["description"] = "Reduce our counting variable", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_mindgames_time", ["value"] = "action.shadow_word_death.execute_time", ["description"] = "SW:D is better than mindgames in execute phase, or outside of execute phase if we don't have shattered perceptions but do have expiation", ["criteria"] = "target.health.pct < 20 || ( talent.expiation.enabled & ! talent.shattered_perceptions.enabled )", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_mindgames_time", ["value"] = "action.shadow_word_death.execute_time", ["description"] = "Add a second SW:D if we have death and madness", ["criteria"] = "target.health.pct < 20 & talent.death_and_madness.enabled", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_mindgames_time", ["value"] = "action.mind_blast.execute_time", ["description"] = "Mind blast is better than mindgames if we have expiation", ["criteria"] = "talent.expiation.enabled", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_mindgames_time", ["value"] = "action.mind_blast.execute_time", ["description"] = "Second mindblast when talented", ["criteria"] = "talent.expiation.enabled & talent.dark_indulgence.enabled", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "cooldown.mindgames.duration_expected < variable.next_mindgames_time", ["var_name"] = "can_mindgames", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "variable.next_penance_time + 2", ["var_name"] = "next_divine_star_time", ["description"] = "Divine Star", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_divine_star_time", ["value"] = "gcd.max", ["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium", ["criteria"] = "variable.remaining_te_holy > 0", }, { ["enabled"] = true, ["op"] = "sub", ["action"] = "variable", ["value"] = "1", ["var_name"] = "remaining_te_holy", ["description"] = "Reduce our counting variable", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_divine_star_time", ["value"] = "action.shadow_word_death.execute_time", ["description"] = "SW:D is better unless outside of execute phase when expiation is untalented", ["criteria"] = "target.health.pct < 20 || talent.expiation.enabled", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_divine_star_time", ["value"] = "action.shadow_word_death.execute_time", ["description"] = "Add a second SW:D if we have death and madness", ["criteria"] = "target.health.pct < 20 & talent.death_and_madness.enabled", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_divine_star_time", ["value"] = "action.mind_blast.execute_time", ["description"] = "Mind blast is always better", ["criteria"] = "talent.expiation.enabled", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_divine_star_time", ["value"] = "action.mind_blast.execute_time", ["description"] = "Second mindblast when talented", ["criteria"] = "talent.dark_indulgence.enabled", }, { ["enabled"] = true, ["op"] = "add", ["action"] = "variable", ["var_name"] = "next_divine_star_time", ["value"] = "action.mindgames.execute_time", ["description"] = "Mindgames is always better", ["criteria"] = "talent.mindgames.enabled", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "cooldown.divine_star.duration < variable.next_divine_star_time", ["var_name"] = "can_divine_star", }, { ["enabled"] = true, ["action"] = "run_action_list", ["criteria"] = "talent.shadow_covenant.enabled & cooldown.mindbender.up", ["list_name"] = "scov_prep", }, { ["enabled"] = true, ["action"] = "run_action_list", ["criteria"] = "variable.long_scov & variable.can_enter_scov", ["list_name"] = "long_scov", }, { ["enabled"] = true, ["criteria"] = "talent.purge_the_wicked.enabled & ( target.time_to_die > ( 0.3 * dot.purge_the_wicked.duration ) ) & ( ! ticking || ( refreshable & ( ! talent.painful_punishment.enabled || ( talent.painful_punishment.enabled & ( dot.purge_the_wicked.remains < ( cooldown.penance.remains - variable.expected_penance_reduction ) ) ) ) ) )", ["action"] = "purge_the_wicked", }, { ["enabled"] = true, ["criteria"] = "! talent.purge_the_wicked.enabled & ( target.time_to_die > ( 0.3 * dot.shadow_word_pain.duration ) ) & ( ! ticking || ( refreshable & ( ! talent.painful_punishment.enabled || ( talent.painful_punishment.enabled & ( dot.shadow_word_pain.remains < ( cooldown.penance.remains - variable.expected_penance_reduction ) ) ) ) ) )", ["action"] = "shadow_word_pain", }, { ["enabled"] = true, ["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_swd ) & target.health.pct < 20", ["action"] = "shadow_word_death", }, { ["enabled"] = true, ["criteria"] = "talent.dark_indulgence.enabled & buff.power_of_the_dark_side.down & cooldown.penance.remains < gcd.max", ["action"] = "mind_blast", }, { ["enabled"] = true, ["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_penance )", ["action"] = "penance", }, { ["enabled"] = true, ["criteria"] = "! talent.shadow_covenant.enabled || variable.can_mind_blast", ["action"] = "mind_blast", }, { ["enabled"] = true, ["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_mindgames ) & talent.shattered_perceptions.enabled", ["action"] = "mindgames", }, { ["enabled"] = true, ["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_swd ) & talent.expiation.enabled & ( target.time_to_pct_20 > ( 0.5 * cooldown.shadow_word_death.duration ) )", ["action"] = "shadow_word_death", }, { ["enabled"] = true, ["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_mindgames ) & ! talent.shattered_perceptions.enabled", ["action"] = "mindgames", }, { ["enabled"] = true, ["criteria"] = "! talent.shadow_covenant.enabled", ["action"] = "halo", }, { ["enabled"] = true, ["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_divine_star )", ["action"] = "divine_star", }, { ["enabled"] = true, ["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_swd ) & ( target.time_to_pct_20 > ( 0.5 * cooldown.shadow_word_death.duration ) )", ["action"] = "shadow_word_death", }, { ["action"] = "smite", ["enabled"] = true, }, }, ["precombat"] = { { ["action"] = "power_word_fortitude", ["enabled"] = true, }, }, ["cooldowns"] = { { ["enabled"] = true, ["criteria"] = "! talent.mindbender.enabled & ! buff.shadow_covenant.up", ["action"] = "mindbender", ["description"] = "Don't use pets during shadow covenant windows, wasting GCDs", }, { ["enabled"] = true, ["criteria"] = "talent.mindbender.enabled & ! buff.shadow_covenant.up", ["action"] = "mindbender", }, { ["enabled"] = true, ["criteria"] = "! talent.shadow_covenant.enabled || ( talent.shadow_covenant.enabled & ( cooldown.shadowfiend.up || buff.shadow_covenant.up ) )", ["action"] = "power_infusion", ["description"] = "hold PI to use with shadow covenant if we have it", }, { ["enabled"] = true, ["criteria"] = "buff.power_infusion.up", ["action"] = "potion", ["description"] = "sync potion with PI", }, { ["enabled"] = true, ["criteria"] = "buff.power_infusion.up || cooldown.power_infusion.remains >= action_cooldown", ["action"] = "use_items", ["description"] = "sync trinkets with PI", }, }, ["scov_prep"] = { { ["enabled"] = true, ["criteria"] = "! ticking & ( target.time_to_die > ( 0.3 * dot.purge_the_wicked.duration ) )", ["action"] = "purge_the_wicked", ["description"] = "Prepare to enter shadow covenant", }, { ["enabled"] = true, ["criteria"] = "cooldown.shadowfiend.remains < cast_time", ["action"] = "power_word_radiance", }, { ["enabled"] = true, ["criteria"] = "( target.time_to_die > ( 0.3 * dot.purge_the_wicked.duration ) )", ["action"] = "purge_the_wicked", }, }, ["long_scov"] = { { ["enabled"] = true, ["description"] = "Long Shadow Covenant", ["action"] = "mindbender", }, { ["enabled"] = true, ["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.halo >= 3", ["action"] = "halo", }, { ["enabled"] = true, ["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.divine_star >= 3", ["action"] = "divine_star", }, { ["enabled"] = true, ["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_holy ) ) & ( ! ticking || refreshable ) & ( target.time_to_die > ( 0.3 * dot.purge_the_wicked.duration ) )", ["action"] = "purge_the_wicked", }, { ["enabled"] = true, ["criteria"] = "target.health.pct < 20 & talent.expiation.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )", ["action"] = "shadow_word_death", }, { ["enabled"] = true, ["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )", ["action"] = "penance", }, { ["enabled"] = true, ["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.halo >= 2", ["action"] = "halo", }, { ["enabled"] = true, ["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.divine_star >= 2", ["action"] = "divine_star", }, { ["enabled"] = true, ["criteria"] = "target.health.pct < 20 & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )", ["action"] = "shadow_word_death", }, { ["enabled"] = true, ["criteria"] = "talent.expiation.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )", ["action"] = "mind_blast", }, { ["enabled"] = true, ["criteria"] = "talent.shattered_perceptions.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )", ["action"] = "mindgames", }, { ["enabled"] = true, ["criteria"] = "talent.expiation.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & ( target.time_to_pct_20 > buff.shadow_covenant.remains )", ["action"] = "shadow_word_death", }, { ["enabled"] = true, ["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )", ["action"] = "mindgames", }, { ["enabled"] = true, ["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )", ["action"] = "mind_blast", }, { ["enabled"] = true, ["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )", ["action"] = "halo", }, { ["enabled"] = true, ["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )", ["action"] = "divine_star", }, { ["enabled"] = true, ["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & ( target.time_to_pct_20 > buff.shadow_covenant.remains )", ["action"] = "shadow_word_death", }, { ["enabled"] = true, ["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_holy ) )", ["action"] = "smite", }, { ["enabled"] = true, ["description"] = "just in case we run out of shadow spells with the above conditions", ["action"] = "penance", }, { ["action"] = "mindgames", ["enabled"] = true, }, { ["action"] = "mind_blast", ["enabled"] = true, }, { ["action"] = "shadow_word_death", ["enabled"] = true, }, { ["action"] = "divine_star", ["enabled"] = true, }, { ["action"] = "halo", ["enabled"] = true, }, { ["action"] = "smite", ["enabled"] = true, }, }, }, ["version"] = 20240811, ["warnings"] = "The import for 'default' required some automated changes.\nLine 5: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 10: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 11: Converted 'talent.shadow_word_death' to 'talent.shadow_word_death.enabled' (1x).\nLine 12: Converted 'talent.shadow_word_death' to 'talent.shadow_word_death.enabled' (1x).\nLine 12: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 13: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 14: Converted 'talent.divine_star' to 'talent.divine_star.enabled' (1x).\nLine 15: Converted 'talent.halo' to 'talent.halo.enabled' (1x).\nLine 16: Converted operations in '(buff.shadow_covenant.duration-variable.shadow_spells_duration_max)%gcd.max' to '(buff.shadow_covenant.duration-variable.shadow_spells_duration_max)/gcd.max'.\nLine 19: Converted 'talent.train_of_thought' to 'talent.train_of_thought.enabled' (1x).\nLine 24: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 29: Converted 'talent.twilight_equilibrium' to 'talent.twilight_equilibrium.enabled' (1x).\nLine 37: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 37: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 37: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 37: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 39: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 40: Converted 'talent.divine_star' to 'talent.divine_star.enabled' (1x).\nLine 40: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 41: Converted 'talent.halo' to 'talent.halo.enabled' (1x).\nLine 41: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 47: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 48: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 48: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 53: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 53: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 54: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 55: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 56: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 56: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 61: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 62: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 63: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 64: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 65: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 67: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 69: Converted 'talent.purge_the_wicked' to 'talent.purge_the_wicked.enabled' (1x).\nLine 69: Converted 'talent.painful_punishment' to 'talent.painful_punishment.enabled' (1x).\nLine 69: Converted 'talent.painful_punishment' to 'talent.painful_punishment.enabled' (1x).\nLine 70: Converted 'talent.purge_the_wicked' to 'talent.purge_the_wicked.enabled' (1x).\nLine 70: Converted 'talent.painful_punishment' to 'talent.painful_punishment.enabled' (1x).\nLine 70: Converted 'talent.painful_punishment' to 'talent.painful_punishment.enabled' (1x).\nLine 71: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 72: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 73: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 74: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 75: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 75: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 76: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 76: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 77: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 77: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 78: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 79: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 80: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\n\nThe import for 'long_scov' required some automated changes.\nLine 5: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 10: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 11: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 12: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\n\nImported 5 action lists.\n", ["profile"] = "actions.precombat+=/power_word_fortitude\n\nactions+=/call_action_list,name=cooldowns\nactions+=/variable,name=te_none,op=set,value=!buff.twilight_equilibrium_holy_amp.up&!buff.twilight_equilibrium_shadow_amp.up\n# Twilight Equilibrium is buffing shadow damage\nactions+=/variable,name=te_shadow,op=set,value=buff.twilight_equilibrium_shadow_amp.up||variable.te_none\n# Twilight Equilibrium is buffing holy damage\nactions+=/variable,name=te_holy,op=set,value=buff.twilight_equilibrium_holy_amp.up||variable.te_none\n# Long Shadow covenant is enabled\nactions+=/variable,name=long_scov,op=set,value=talent.shadow_covenant\n# Ready to start shadow covenant phase\nactions+=/variable,name=can_enter_scov,op=set,value=cooldown.shadowfiend.up||buff.shadow_covenant.up\nactions+=/variable,name=shadow_spells_duration_max,op=set,value=0\n## actions+=/variable,name=shadow_spells_duration_max,op=add,value=action.schism.execute_time,if=talent.schism\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=2\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.mind_blast.execute_time\n# penance\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.mind_blast.execute_time,if=talent.dark_indulgence\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.shadow_word_death.execute_time,if=talent.shadow_word_death\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.shadow_word_death.execute_time,if=talent.shadow_word_death&talent.death_and_madness&target.health.pct<20\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.mindgames.execute_time,if=talent.mindgames\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.divine_star.execute_time,if=talent.divine_star\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.halo.execute_time,if=talent.halo\n# (scov duration - shadow spells duration) / GCD time = estimate of holy spells we should need to use during the next scov window Long scov example: (15 - 12) / 1.5 = 2 GCDs to spend on holy spells Short scov example: (7 - 12) / 1.5 = -3.3 GCDs to spend on holy spells (none)\nactions+=/variable,name=max_te_holy,op=floor,value=(buff.shadow_covenant.duration-variable.shadow_spells_duration_max)%gcd.max\n# Counting variable, the number of non-fractional remaining holy casts available\nactions+=/variable,name=remaining_te_holy,op=set,value=0\nactions+=/variable,name=remaining_te_holy,op=add,value=variable.max_te_holy\n# TODO: duration_expected is buggy on penance/dark reprimand, using a static reduction as a stand-in for now\nactions+=/variable,name=expected_penance_reduction,op=setif,condition=talent.train_of_thought,value=2,value_else=0\n# Calculate how much cast time worth of shadow spells we have currently available. We use shadow_spells_duration to determine if we have time to weave in any holy spells to proc twilight equilibrium.\nactions+=/variable,name=shadow_spells_duration,op=set,value=0\n# Schism\n## actions+=/variable,name=shadow_spells_duration,op=add,value=action.schism.execute_time,if=cooldown.schism.up||(cooldown.schism.remains=1\n# Add any fractional charges of mindblast that will recharge in time\nactions+=/variable,name=shadow_spells_duration,op=add,value=action.mind_blast.execute_time,if=((action.mind_blast.charges_fractional>=1&action.mind_blast.charges_fractional<2)&(((1-(action.mind_blast.charges_fractional-1))*action.mind_blast.recharge_time)action.smite.execute_time,value_else=0\n\n# First casts should always be HD prep->covenant->schism->HD dark reprimand\nactions+=/variable,name=next_penance_time,op=set,value=cooldown.shadowfiend.remains+action.shadowfiend.execute_time\n# If we have enough scov duration, add a holy cast to proc twilight equilibrium\nactions+=/variable,name=next_penance_time,op=add,value=gcd.max,if=variable.remaining_te_holy>0\n# Reduce our counting variable\nactions+=/variable,name=remaining_te_holy,op=sub,value=1\nactions+=/variable,name=can_penance,op=set,value=(cooldown.penance.duration-variable.expected_penance_reduction)0\n# Reduce our counting variable\nactions+=/variable,name=remaining_te_holy,op=sub,value=1\n# indgame ette ha W: ren' xecut has n av hattere erception on' av xpiatio\nactions+=/variable,name=next_swd_time,op=add,value=action.mindgames.execute_time,if=((talent.mindgames&talent.shattered_perceptions)||(talent.mindgames&!talent.expiation))&target.health.pct>=20\n# Mind blast is better than SW:D if we aren't in execute\nactions+=/variable,name=next_swd_time,op=add,value=action.mind_blast.execute_time,if=target.health.pct>=20\n# Second mindblast when talented\nactions+=/variable,name=next_swd_time,op=add,value=action.mind_blast.execute_time,if=target.health.pct>=20&talent.dark_indulgence\n# Divine Star and halo are better than SW:D if we aren't in execute and don't have expiation\nactions+=/variable,name=next_swd_time,op=add,value=action.divine_star.execute_time,if=talent.divine_star&target.health.pct>=20&!talent.expiation\nactions+=/variable,name=next_swd_time,op=add,value=action.halo.execute_time,if=talent.halo&target.health.pct>=20&!talent.expiation\nactions+=/variable,name=can_swd,op=set,value=cooldown.shadow_word_death.duration_expected0\n# Reduce our counting variable\nactions+=/variable,name=remaining_te_holy,op=sub,value=1\n# Add SW:D if we're in execute phase\nactions+=/variable,name=next_mind_blast_time,op=add,value=action.shadow_word_death.execute_time,if=target.health.pct<20\n# Add a second SW:D if we have death and madness\nactions+=/variable,name=next_mind_blast_time,op=add,value=action.shadow_word_death.execute_time,if=talent.death_and_madness&target.health.pct<20\n# Add mindgames if we have it talented and don't have expiation\nactions+=/variable,name=next_mind_blast_time,op=add,value=action.mindgames.execute_time,if=talent.mindgames&!talent.expiation\n# TODO: This is a little bit simplistic, requiring both charges of mindblast to be available at the moment the first charge needs to be used. Slight optimization should be possible.\nactions+=/variable,name=can_mind_blast,op=setif,condition=action.mind_blast.charges_fractional>=1,value=((action.mind_blast.max_charges-(action.mind_blast.charges_fractional-1))*action.mind_blast.recharge_time)0\n# Reduce our counting variable\nactions+=/variable,name=remaining_te_holy,op=sub,value=1\n# SW:D is better than mindgames in execute phase, or outside of execute phase if we don't have shattered perceptions but do have expiation\nactions+=/variable,name=next_mindgames_time,op=add,value=action.shadow_word_death.execute_time,if=target.health.pct<20||(talent.expiation&!talent.shattered_perceptions)\n# Add a second SW:D if we have death and madness\nactions+=/variable,name=next_mindgames_time,op=add,value=action.shadow_word_death.execute_time,if=target.health.pct<20&talent.death_and_madness\n# Mind blast is better than mindgames if we have expiation\nactions+=/variable,name=next_mindgames_time,op=add,value=action.mind_blast.execute_time,if=talent.expiation\n# Second mindblast when talented\nactions+=/variable,name=next_mindgames_time,op=add,value=action.mind_blast.execute_time,if=talent.expiation&talent.dark_indulgence\nactions+=/variable,name=can_mindgames,op=set,value=cooldown.mindgames.duration_expected0\n# Reduce our counting variable\nactions+=/variable,name=remaining_te_holy,op=sub,value=1\n# SW:D is better unless outside of execute phase when expiation is untalented\nactions+=/variable,name=next_divine_star_time,op=add,value=action.shadow_word_death.execute_time,if=target.health.pct<20||talent.expiation\n# Add a second SW:D if we have death and madness\nactions+=/variable,name=next_divine_star_time,op=add,value=action.shadow_word_death.execute_time,if=target.health.pct<20&talent.death_and_madness\n# Mind blast is always better\nactions+=/variable,name=next_divine_star_time,op=add,value=action.mind_blast.execute_time,if=talent.expiation\n# Second mindblast when talented\nactions+=/variable,name=next_divine_star_time,op=add,value=action.mind_blast.execute_time,if=talent.dark_indulgence\n# Mindgames is always better\nactions+=/variable,name=next_divine_star_time,op=add,value=action.mindgames.execute_time,if=talent.mindgames\nactions+=/variable,name=can_divine_star,op=set,value=cooldown.divine_star.duration(0.3*dot.purge_the_wicked.duration))&(!ticking||(refreshable&(!talent.painful_punishment||(talent.painful_punishment&(dot.purge_the_wicked.remains<(cooldown.penance.remains-variable.expected_penance_reduction))))))\nactions+=/shadow_word_pain,if=!talent.purge_the_wicked&(target.time_to_die>(0.3*dot.shadow_word_pain.duration))&(!ticking||(refreshable&(!talent.painful_punishment||(talent.painful_punishment&(dot.shadow_word_pain.remains<(cooldown.penance.remains-variable.expected_penance_reduction))))))\n## actions+=/schism,if=!talent.shadow_covenant\nactions+=/shadow_word_death,if=(!talent.shadow_covenant||variable.can_swd)&target.health.pct<20\nactions+=/mind_blast,if=talent.dark_indulgence&buff.power_of_the_dark_side.down&cooldown.penance.remains(0.5*cooldown.shadow_word_death.duration))\nactions+=/mindgames,if=(!talent.shadow_covenant||variable.can_mindgames)&!talent.shattered_perceptions\nactions+=/halo,if=!talent.shadow_covenant\nactions+=/divine_star,if=(!talent.shadow_covenant||variable.can_divine_star)\n## actions+=/power_word_solace\nactions+=/shadow_word_death,if=(!talent.shadow_covenant||variable.can_swd)&(target.time_to_pct_20>(0.5*cooldown.shadow_word_death.duration))\nactions+=/smite\n\n# Prepare to enter shadow covenant\nactions.scov_prep+=/purge_the_wicked,if=!ticking&(target.time_to_die>(0.3*dot.purge_the_wicked.duration))\nactions.scov_prep+=/power_word_radiance,if=cooldown.shadowfiend.remains(0.3*dot.purge_the_wicked.duration))\n\n# Long Shadow Covenant\nactions.long_scov+=/mindbender\n## actions.long_scov+=/schism\nactions.long_scov+=/halo,if=(!variable.should_te||(variable.should_te&variable.te_shadow))&spell_targets.halo>=3\nactions.long_scov+=/divine_star,if=(!variable.should_te||(variable.should_te&variable.te_shadow))&spell_targets.divine_star>=3\nactions.long_scov+=/purge_the_wicked,if=(!variable.should_te||(variable.should_te&variable.te_holy))&(!ticking||refreshable)&(target.time_to_die>(0.3*dot.purge_the_wicked.duration))\nactions.long_scov+=/shadow_word_death,if=target.health.pct<20&talent.expiation&(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/penance,if=(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/halo,if=(!variable.should_te||(variable.should_te&variable.te_shadow))&spell_targets.halo>=2\nactions.long_scov+=/divine_star,if=(!variable.should_te||(variable.should_te&variable.te_shadow))&spell_targets.divine_star>=2\nactions.long_scov+=/shadow_word_death,if=target.health.pct<20&(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/mind_blast,if=talent.expiation&(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/mindgames,if=talent.shattered_perceptions&(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/shadow_word_death,if=talent.expiation&(!variable.should_te||(variable.should_te&variable.te_shadow))&(target.time_to_pct_20>buff.shadow_covenant.remains)\nactions.long_scov+=/mindgames,if=(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/mind_blast,if=(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/halo,if=(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/divine_star,if=(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/shadow_word_death,if=(!variable.should_te||(variable.should_te&variable.te_shadow))&(target.time_to_pct_20>buff.shadow_covenant.remains)\n## actions.long_scov+=/lights_wrath,if=(!variable.should_te||(variable.should_te&variable.te_holy))\nactions.long_scov+=/smite,if=(!variable.should_te||(variable.should_te&variable.te_holy))\n# just in case we run out of shadow spells with the above conditions\nactions.long_scov+=/penance\nactions.long_scov+=/mindgames\nactions.long_scov+=/mind_blast\nactions.long_scov+=/shadow_word_death\nactions.long_scov+=/divine_star\nactions.long_scov+=/halo\nactions.long_scov+=/smite\n\n## Cooldowns\n# Don't use pets during shadow covenant windows, wasting GCDs\nactions.cooldowns+=/shadowfiend,if=!talent.mindbender.enabled&!buff.shadow_covenant.up\nactions.cooldowns+=/mindbender,if=talent.mindbender.enabled&!buff.shadow_covenant.up\n# hold PI to use with shadow covenant if we have it\nactions.cooldowns+=/power_infusion,if=!talent.shadow_covenant.enabled||(talent.shadow_covenant.enabled&(cooldown.shadowfiend.up||buff.shadow_covenant.up))\n# sync potion with PI\nactions.cooldowns+=/potion,if=buff.power_infusion.up\n# sync trinkets with PI\nactions.cooldowns+=/use_items,if=buff.power_infusion.up||cooldown.power_infusion.remains>=cooldown", ["spec"] = 256, }, }, }, ["Quilbee - Thunderhorn"] = { ["runOnce"] = { ["resetPotionsToDefaults_20190717"] = true, ["forceReloadClassDefaultOptions_20220306_70"] = true, ["forceReloadClassDefaultOptions_20220306_65"] = true, ["resetAllPotions_20201209"] = true, ["enableAllOfTheThings_20180820"] = true, ["forceEnableEnhancedRecheckBoomkin_20210712"] = true, ["forceReloadAllDefaultPriorities_20220228"] = true, ["forceEnableAllClassesOnceDueToBug_20220225"] = true, ["autoconvertDelaySweepToExtend_20190729"] = true, ["forceReloadClassDefaultOptions_20220306_66"] = true, ["forceSpellFlashBrightness_20221030"] = true, ["removeOldThrottles_20241115"] = true, ["updateMaxRefreshToNewSpecOptions_20220222"] = true, ["resetRogueMfDOption_20200226"] = true, ["autoconvertDisplayToggle_20190621_1"] = true, ["fixHavocPriorityVersion_20240805"] = true, ["autoconvertGlowsForCustomGlow_20190326"] = true, ["resetGlobalCooldownSync_20210403"] = true, ["resetAberrantPackageDates_20190728_1"] = true, }, ["specs"] = { [70] = { ["maxRefresh"] = 10, ["settings"] = { ["sov_damage"] = 20, ["check_wake_range"] = false, }, ["potionsReset"] = 20180919.1, ["debuffPadding"] = 0, ["buffPadding"] = 0, }, [66] = { ["maxRefresh"] = 10, ["settings"] = { ["bosp_filter"] = false, ["wog_health"] = 40, ["loh_health"] = 30, ["goak_damage"] = 40, ["sentinel_def"] = false, ["ds_damage"] = 60, ["ad_damage"] = 40, }, ["potionsReset"] = 20180919.1, ["debuffPadding"] = 0, ["buffPadding"] = 0, }, [102] = { ["enhancedRecheck"] = true, }, }, ["packs"] = { ["Protection Paladin"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20250425, ["author"] = "SimC", ["desc"] = "2025-04-25: Fix BoSP filter\n\n2025-04-05: SimC Sync\n\n2025-02-02: Ardent Defender updated\n\n2024-10-11, 10-21, 11-22, 11-25: Update from SimC\n\n2024-09-08: Restore mitigation action list\n\n2024-09-02, 09-04, 09-08: SimC update\n\n2024-08-11, 22: Update from SimC\n\n2024-07-23: The War Within", ["lists"] = { ["default"] = { { ["action"] = "rebuke", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "mitigation", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cooldowns", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "trinkets", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "standard", }, }, ["precombat"] = { { ["action"] = "devotion_aura", ["enabled"] = true, }, { ["action"] = "lights_judgment", ["enabled"] = true, }, { ["action"] = "arcane_torrent", ["enabled"] = true, }, { ["action"] = "consecration", ["enabled"] = true, }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "1", ["var_name"] = "trinket_sync_slot", ["criteria"] = "trinket.t1.has_cooldown & trinket.t1.has_stat.any_dps & ( ! trinket.t2.has_stat.any_dps || trinket.t1.cooldown.duration >= trinket.t2.cooldown.duration ) || ! trinket.t2.has_cooldown", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "2", ["var_name"] = "trinket_sync_slot", ["criteria"] = "trinket.t2.has_cooldown & trinket.t2.has_stat.any_dps & ( ! trinket.t1.has_stat.any_dps || trinket.t2.cooldown.duration > trinket.t1.cooldown.duration ) || ! trinket.t1.has_cooldown", }, }, ["cooldowns"] = { { ["enabled"] = true, ["criteria"] = "spell_targets.lights_judgment >= 2 || ! raid_event.adds.exists || raid_event.adds.in > 75 || raid_event.adds.up", ["action"] = "lights_judgment", }, { ["action"] = "avenging_wrath", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.avenging_wrath.up", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "( buff.avenging_wrath.remains < 15 || ( time > 10 ) )", ["action"] = "moment_of_glory", }, { ["enabled"] = true, ["criteria"] = "spell_targets.shield_of_the_righteous >= 3", ["action"] = "divine_toll", }, { ["enabled"] = true, ["criteria"] = "buff.avenging_wrath.up || cooldown.avenging_wrath.remains <= 30", ["action"] = "bastion_of_light", }, { ["enabled"] = true, ["criteria"] = "buff.avenging_wrath.remains > 8", ["action"] = "fireblood", }, }, ["trinkets"] = { { ["enabled"] = true, ["action"] = "tome_of_lights_devotion", ["criteria"] = "buff.inner_resilience.up", ["name"] = "tome_of_lights_devotion", }, { ["enabled"] = true, ["action"] = "trinket1", ["criteria"] = "( variable.trinket_sync_slot = 1 & ( buff.avenging_wrath.up || fight_remains <= 40 ) || ( variable.trinket_sync_slot = 2 & ( ! trinket.t2.cooldown.ready || ! buff.avenging_wrath.up ) ) || ! variable.trinket_sync_slot )", ["slots"] = "trinket1", }, { ["enabled"] = true, ["action"] = "trinket2", ["criteria"] = "( variable.trinket_sync_slot = 2 & ( buff.avenging_wrath.up || fight_remains <= 40 ) || ( variable.trinket_sync_slot = 1 & ( ! trinket.t1.cooldown.ready || ! buff.avenging_wrath.up ) ) || ! variable.trinket_sync_slot )", ["slots"] = "trinket2", }, }, ["mitigation"] = { { ["enabled"] = true, ["criteria"] = "tanking & buff.shield_of_the_righteous.down & ( holy_power.deficit = 0 || buff.divine_purpose.up )", ["action"] = "shield_of_the_righteous", }, { ["enabled"] = true, ["action"] = "blessing_of_spellwarding", ["description"] = "[Hekili] Recommend BoSP if the filter is enabled in spec options. Custom priorities can use BoSP with or without this feature.", ["criteria"] = "settings.bosp_filter", }, { ["enabled"] = true, ["criteria"] = "health.pct < wog_health & ( holy_power.deficit = 0 || buff.divine_purpose.up || buff.shining_light_free.up )", ["action"] = "word_of_glory", }, { ["enabled"] = true, ["criteria"] = "talent.final_stand.enabled & tanking & incoming_damage_5s > ds_damage & ! ( buff.ardent_defender.up || buff.guardian_of_ancient_kings.up || buff.divine_shield.up || buff.potion.up )", ["action"] = "divine_shield", }, { ["enabled"] = true, ["criteria"] = "tanking & incoming_damage_5s > goak_damage & ! ( buff.ardent_defender.up || buff.guardian_of_ancient_kings.up || buff.divine_shield.up || buff.potion.up )", ["action"] = "guardian_of_ancient_kings", }, { ["enabled"] = true, ["criteria"] = "defensive_sentinel & tanking & incoming_damage_5s > goak_damage & ! ( buff.ardent_defender.up || buff.guardian_of_ancient_kings.up || buff.divine_shield.up || buff.potion.up )", ["action"] = "sentinel", }, { ["enabled"] = true, ["criteria"] = "tanking & incoming_damage_5s > ad_damage & ! ( buff.ardent_defender.up || buff.guardian_of_ancient_kings.up || buff.divine_shield.up || buff.potion.up )", ["action"] = "ardent_defender", }, { ["enabled"] = true, ["criteria"] = "health.pct < loh_health", ["action"] = "lay_on_hands", }, }, ["standard"] = { { ["enabled"] = true, ["criteria"] = "charges >= 2 || full_recharge_time <= gcd.max", ["action"] = "judgment", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.hammer_of_light_free.remains < 2 || buff.shake_the_heavens.remains < 1 || ! buff.shake_the_heavens.up || cooldown.eye_of_tyr.remains < 1.5 || fight_remains < 2", ["action"] = "hammer_of_light", }, { ["enabled"] = true, ["criteria"] = "( hpg_to_2dawn = 5 || ! talent.of_dusk_and_dawn.enabled ) & talent.lights_guidance.enabled", ["action"] = "eye_of_tyr", }, { ["enabled"] = true, ["criteria"] = "( hpg_to_2dawn = 1 || buff.blessing_of_dawn.stack > 0 ) & talent.lights_guidance.enabled", ["action"] = "eye_of_tyr", }, { ["enabled"] = true, ["criteria"] = "( ! talent.righteous_protector.enabled || cooldown.righteous_protector_icd.remains = 0 ) & ! buff.hammer_of_light_ready.up", ["action"] = "shield_of_the_righteous", }, { ["enabled"] = true, ["action"] = "shield_of_the_righteous", ["description"] = "during luck of the draw(TWW2 4P)spam sotr as much as possible without wasting icd where possible", ["criteria"] = "! buff.hammer_of_light_ready.up & ( buff.luck_of_the_draw.up & ( ( holy_power + judgment_holy_power >= 5 ) || ( ! talent.righteous_protector.enabled || cooldown.righteous_protector_icd.remains = 0 ) ) )", }, { ["enabled"] = true, ["action"] = "shield_of_the_righteous", ["description"] = "outside of luck of the draw, pool holy power as much as possible to be able to enter luck of the draw windows with more holy power", ["criteria"] = "! buff.hammer_of_light_ready.up & set_bonus.thewarwithin_season_2_4pc & ( ( holy_power + judgment_holy_power > 5 ) || ( holy_power + judgment_holy_power >= 5 & cooldown.righteous_protector_icd.remains = 0 ) )", }, { ["enabled"] = true, ["criteria"] = "! set_bonus.thewarwithin_season_2_4pc & ( ! talent.righteous_protector.enabled || cooldown.righteous_protector_icd.remains = 0 ) & ! buff.hammer_of_light_ready.up", ["action"] = "shield_of_the_righteous", }, { ["enabled"] = true, ["criteria"] = "spell_targets.shield_of_the_righteous > 3 & buff.bulwark_of_righteous_fury.stack >= 3 & holy_power < 3", ["action"] = "judgment", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "! buff.bulwark_of_righteous_fury.up & talent.bulwark_of_righteous_fury.enabled & spell_targets.shield_of_the_righteous >= 3", ["action"] = "avengers_shield", }, { ["enabled"] = true, ["criteria"] = "buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 3 & ! buff.avenging_wrath.up", ["action"] = "hammer_of_the_righteous", }, { ["enabled"] = true, ["criteria"] = "buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 3 & ! buff.avenging_wrath.up", ["action"] = "blessed_hammer", }, { ["enabled"] = true, ["criteria"] = "buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 2 & ! buff.avenging_wrath.up", ["action"] = "crusader_strike", }, { ["enabled"] = true, ["criteria"] = "buff.divine_guidance.stack = 5", ["action"] = "consecration", }, { ["enabled"] = true, ["criteria"] = "next_armament = sacred_weapon & ( ! buff.sacred_weapon.up || ( buff.sacred_weapon.remains < 6 & ! buff.avenging_wrath.up & cooldown.avenging_wrath.remains <= 30 ) )", ["action"] = "holy_armaments", }, { ["action"] = "hammer_of_wrath", ["enabled"] = true, }, { ["action"] = "divine_toll", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.refining_fire.enabled", ["action"] = "avengers_shield", }, { ["enabled"] = true, ["criteria"] = "buff.avenging_wrath.up & talent.hammer_and_anvil.enabled", ["action"] = "judgment", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "next_armament = holy_bulwark & charges = 2", ["action"] = "holy_armaments", }, { ["enabled"] = true, ["action"] = "judgment", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "! buff.shake_the_heavens.up & talent.shake_the_heavens.enabled", ["action"] = "avengers_shield", }, { ["enabled"] = true, ["criteria"] = "( buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 3 ) || buff.shake_the_heavens.up", ["action"] = "hammer_of_the_righteous", }, { ["enabled"] = true, ["criteria"] = "( buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 3 ) || buff.shake_the_heavens.up", ["action"] = "blessed_hammer", }, { ["enabled"] = true, ["criteria"] = "( buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 2 ) || buff.shake_the_heavens.up", ["action"] = "crusader_strike", }, { ["enabled"] = true, ["criteria"] = "! talent.lights_guidance.enabled", ["action"] = "avengers_shield", }, { ["enabled"] = true, ["criteria"] = "! consecration.up", ["action"] = "consecration", }, { ["enabled"] = true, ["criteria"] = "( talent.inmost_light.enabled & raid_event.adds.in >= 45 || spell_targets.shield_of_the_righteous >= 3 ) & ! talent.lights_deliverance.enabled", ["action"] = "eye_of_tyr", }, { ["enabled"] = true, ["criteria"] = "next_armament = holy_bulwark", ["action"] = "holy_armaments", }, { ["action"] = "blessed_hammer", ["enabled"] = true, }, { ["action"] = "hammer_of_the_righteous", ["enabled"] = true, }, { ["action"] = "crusader_strike", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.shining_light_free.up & ( talent.blessed_assurance.enabled || ( talent.lights_guidance.enabled & cooldown.hammerfall_icd.remains = 0 ) )", ["action"] = "word_of_glory", }, { ["action"] = "avengers_shield", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! talent.lights_deliverance.enabled", ["action"] = "eye_of_tyr", }, { ["enabled"] = true, ["criteria"] = "buff.shining_light_free.up", ["action"] = "word_of_glory", }, { ["enabled"] = true, ["criteria"] = "holy_power < 5", ["action"] = "arcane_torrent", }, { ["action"] = "consecration", ["enabled"] = true, }, }, }, ["version"] = 20250425, ["warnings"] = "The import for 'precombat' required some automated changes.\nLine 5: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 5: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 5: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 6: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 6: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 6: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 2: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 2: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 3: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 3: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\n\nImported 6 action lists.\n", ["spec"] = 66, ["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/paladin_protection.simc\n## Up to date with SimC: March 13 2025 - a8d374d\n\n## actions.precombat+=/rite_of_sanctification\n## actions.precombat+=/rite_of_adjuration\nactions.precombat+=/devotion_aura\nactions.precombat+=/lights_judgment\nactions.precombat+=/arcane_torrent\nactions.precombat+=/consecration\nactions.precombat+=/variable,name=trinket_sync_slot,value=1,if=trinket.1.has_cooldown&trinket.1.has_stat.any_dps&(!trinket.2.has_stat.any_dps||trinket.1.cooldown.duration>=trinket.2.cooldown.duration)||!trinket.2.has_cooldown\nactions.precombat+=/variable,name=trinket_sync_slot,value=2,if=trinket.2.has_cooldown&trinket.2.has_stat.any_dps&(!trinket.1.has_stat.any_dps||trinket.2.cooldown.duration>trinket.1.cooldown.duration)||!trinket.1.has_cooldown\n\nactions+=/rebuke\nactions+=/call_action_list,name=mitigation\nactions+=/call_action_list,name=cooldowns\nactions+=/call_action_list,name=trinkets\nactions+=/call_action_list,name=standard\n\nactions.cooldowns+=/lights_judgment,if=spell_targets.lights_judgment>=2||!raid_event.adds.exists||raid_event.adds.in>75||raid_event.adds.up\nactions.cooldowns+=/avenging_wrath\nactions.cooldowns+=/potion,if=buff.avenging_wrath.up\nactions.cooldowns+=/moment_of_glory,if=(buff.avenging_wrath.remains<15||(time>10))\nactions.cooldowns+=/divine_toll,if=spell_targets.shield_of_the_righteous>=3\nactions.cooldowns+=/bastion_of_light,if=buff.avenging_wrath.up||cooldown.avenging_wrath.remains<=30\n## actions.cooldowns+=/invoke_external_buff,name=power_infusion,if=buff.avenging_wrath.up\nactions.cooldowns+=/fireblood,if=buff.avenging_wrath.remains>8\n\nactions.mitigation+=/shield_of_the_righteous,if=tanking&buff.shield_of_the_righteous.down&(holy_power.deficit=0||buff.divine_purpose.up)\n# [Hekili] Recommend BoSP if the filter is enabled in spec options. Custom priorities can use BoSP with or without this feature.\nactions.mitigation+=/blessing_of_spellwarding,if=settings.bosp_filter\nactions.mitigation+=/word_of_glory,if=health.pctds_damage&!(buff.ardent_defender.up||buff.guardian_of_ancient_kings.up||buff.divine_shield.up||buff.potion.up)\nactions.mitigation+=/guardian_of_ancient_kings,if=tanking&incoming_damage_5s>goak_damage&!(buff.ardent_defender.up||buff.guardian_of_ancient_kings.up||buff.divine_shield.up||buff.potion.up)\nactions.mitigation+=/sentinel,if=defensive_sentinel&tanking&incoming_damage_5s>goak_damage&!(buff.ardent_defender.up||buff.guardian_of_ancient_kings.up||buff.divine_shield.up||buff.potion.up)\nactions.mitigation+=/ardent_defender,if=tanking&incoming_damage_5s>ad_damage&!(buff.ardent_defender.up||buff.guardian_of_ancient_kings.up||buff.divine_shield.up||buff.potion.up)\nactions.mitigation+=/lay_on_hands,if=health.pct=2||full_recharge_time<=gcd.max\nactions.standard+=/hammer_of_light,if=buff.hammer_of_light_free.remains<2||buff.shake_the_heavens.remains<1||!buff.shake_the_heavens.up||cooldown.eye_of_tyr.remains<1.5||fight_remains<2\nactions.standard+=/eye_of_tyr,if=(hpg_to_2dawn=5||!talent.of_dusk_and_dawn.enabled)&talent.lights_guidance.enabled\nactions.standard+=/eye_of_tyr,if=(hpg_to_2dawn=1||buff.blessing_of_dawn.stack>0)&talent.lights_guidance.enabled\nactions.standard+=/shield_of_the_righteous,if=(!talent.righteous_protector.enabled||cooldown.righteous_protector_icd.remains=0)&!buff.hammer_of_light_ready.up\n# during luck of the draw(TWW2 4P)spam sotr as much as possible without wasting icd where possible\nactions.standard+=/shield_of_the_righteous,if=!buff.hammer_of_light_ready.up&(buff.luck_of_the_draw.up&((holy_power+judgment_holy_power>=5)||(!talent.righteous_protector.enabled||cooldown.righteous_protector_icd.remains=0)))\n# outside of luck of the draw, pool holy power as much as possible to be able to enter luck of the draw windows with more holy power\nactions.standard+=/shield_of_the_righteous,if=!buff.hammer_of_light_ready.up&set_bonus.thewarwithin_season_2_4pc&((holy_power+judgment_holy_power>5)||(holy_power+judgment_holy_power>=5&cooldown.righteous_protector_icd.remains=0))\nactions.standard+=/shield_of_the_righteous,if=!set_bonus.thewarwithin_season_2_4pc&(!talent.righteous_protector.enabled||cooldown.righteous_protector_icd.remains=0)&!buff.hammer_of_light_ready.up\nactions.standard+=/judgment,cycle_targets=1,if=spell_targets.shield_of_the_righteous>3&buff.bulwark_of_righteous_fury.stack>=3&holy_power<3\nactions.standard+=/avengers_shield,if=!buff.bulwark_of_righteous_fury.up&talent.bulwark_of_righteous_fury.enabled&spell_targets.shield_of_the_righteous>=3\nactions.standard+=/hammer_of_the_righteous,if=buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<3&!buff.avenging_wrath.up\nactions.standard+=/blessed_hammer,if=buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<3&!buff.avenging_wrath.up\nactions.standard+=/crusader_strike,if=buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<2&!buff.avenging_wrath.up\n## redundant line: actions.standard+=/judgment,cycle_targets=1,if=charges>=2||full_recharge_time<=gcd.max\nactions.standard+=/consecration,if=buff.divine_guidance.stack=5\nactions.standard+=/holy_armaments,if=next_armament=sacred_weapon&(!buff.sacred_weapon.up||(buff.sacred_weapon.remains<6&!buff.avenging_wrath.up&cooldown.avenging_wrath.remains<=30))\nactions.standard+=/hammer_of_wrath\nactions.standard+=/divine_toll\nactions.standard+=/avengers_shield,if=talent.refining_fire.enabled\nactions.standard+=/judgment,cycle_targets=1,if=buff.avenging_wrath.up&talent.hammer_and_anvil.enabled\nactions.standard+=/holy_armaments,if=next_armament=holy_bulwark&charges=2\nactions.standard+=/judgment,cycle_targets=1\nactions.standard+=/avengers_shield,if=!buff.shake_the_heavens.up&talent.shake_the_heavens.enabled\nactions.standard+=/hammer_of_the_righteous,if=(buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<3)||buff.shake_the_heavens.up\nactions.standard+=/blessed_hammer,if=(buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<3)||buff.shake_the_heavens.up\nactions.standard+=/crusader_strike,if=(buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<2)||buff.shake_the_heavens.up\nactions.standard+=/avengers_shield,if=!talent.lights_guidance.enabled\nactions.standard+=/consecration,if=!consecration.up\nactions.standard+=/eye_of_tyr,if=(talent.inmost_light.enabled&raid_event.adds.in>=45||spell_targets.shield_of_the_righteous>=3)&!talent.lights_deliverance.enabled\nactions.standard+=/holy_armaments,if=next_armament=holy_bulwark\nactions.standard+=/blessed_hammer\nactions.standard+=/hammer_of_the_righteous\nactions.standard+=/crusader_strike\nactions.standard+=/word_of_glory,if=buff.shining_light_free.up&(talent.blessed_assurance.enabled||(talent.lights_guidance.enabled&cooldown.hammerfall_icd.remains=0))\nactions.standard+=/avengers_shield\nactions.standard+=/eye_of_tyr,if=!talent.lights_deliverance.enabled\nactions.standard+=/word_of_glory,if=buff.shining_light_free.up\nactions.standard+=/arcane_torrent,if=holy_power<5\nactions.standard+=/consecration\n\nactions.trinkets+=/use_item,name=tome_of_lights_devotion,if=buff.inner_resilience.up\nactions.trinkets+=/use_items,slots=trinket1,if=(variable.trinket_sync_slot=1&(buff.avenging_wrath.up||fight_remains<=40)||(variable.trinket_sync_slot=2&(!trinket.2.cooldown.ready||!buff.avenging_wrath.up))||!variable.trinket_sync_slot)\nactions.trinkets+=/use_items,slots=trinket2,if=(variable.trinket_sync_slot=2&(buff.avenging_wrath.up||fight_remains<=40)||(variable.trinket_sync_slot=1&(!trinket.1.cooldown.ready||!buff.avenging_wrath.up))||!variable.trinket_sync_slot)", }, ["Holy Paladin"] = { ["builtIn"] = true, ["date"] = 20240908, ["spec"] = 65, ["desc"] = "Healer priorities are DPS-focused only\n\n2024-07-30, 09-08: The War Within", ["lists"] = { ["spenders"] = { { ["enabled"] = true, ["criteria"] = "solo & ( health.pct < 70 || ! equipped.shield ) & buff.shining_righteousness_ready.up || buff.empyrean_legacy.up", ["action"] = "word_of_glory", }, { ["enabled"] = true, ["criteria"] = "group & buff.shining_righteousness_ready.up", ["action"] = "light_of_dawn", }, { ["action"] = "shield_of_the_righteous", ["enabled"] = true, }, }, ["default"] = { { ["action"] = "rebuke", ["enabled"] = true, }, { ["action"] = "avenging_wrath", ["enabled"] = true, }, { ["action"] = "avenging_crusader", ["enabled"] = true, }, { ["action"] = "holy_armaments", ["enabled"] = true, }, { ["action"] = "blessing_of_summer", ["enabled"] = true, }, { ["action"] = "blessing_of_autumn", ["enabled"] = true, }, { ["action"] = "blessing_of_winter", ["enabled"] = true, }, { ["action"] = "blessing_of_spring", ["enabled"] = true, }, { ["action"] = "lights_judgment", ["enabled"] = true, }, { ["action"] = "potion", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.bloodlust.up || buff.avenging_wrath.up || buff.avenging_crusader.up", ["action"] = "fireblood", }, { ["action"] = "use_items", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "! talent.avenging_crusader.enabled || cooldown.avenging_crusader.remains > gcd.max || holy_power.deficit = 0", ["list_name"] = "spenders", }, { ["action"] = "divine_toll", ["enabled"] = true, }, { ["action"] = "holy_prism", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "group", ["action"] = "beacon_of_virtue", }, { ["enabled"] = true, ["criteria"] = "talent.avenging_crusader.enabled & full_recharge_time < gcd.max", ["action"] = "crusader_strike", }, { ["enabled"] = true, ["criteria"] = "talent.avenging_crusader.enabled & full_recharge_time < gcd.max", ["action"] = "judgment", }, { ["enabled"] = true, ["criteria"] = "! consecration.up & action.crusader_strike.in_range", ["action"] = "consecration", }, { ["action"] = "hammer_of_wrath", ["enabled"] = true, }, { ["action"] = "judgment", ["enabled"] = true, }, { ["action"] = "holy_shock", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "cooldown.holy_shock.remains > gcd.max", ["action"] = "crusader_strike", }, { ["action"] = "arcane_torrent", ["enabled"] = true, }, }, ["precombat"] = { { ["enabled"] = true, ["criteria"] = "buff.paladin_aura.down", ["action"] = "devotion_aura", }, { ["enabled"] = true, ["criteria"] = "active_dot.beacon_of_light = 0", ["action"] = "beacon_of_light", }, { ["enabled"] = true, ["criteria"] = "group & active_dot.beacon_of_faith = 0", ["action"] = "beacon_of_faith", }, }, }, ["version"] = 20240908, ["warnings"] = "The import for 'default' required some automated changes.\nLine 13: Converted 'talent.avenging_crusader' to 'talent.avenging_crusader.enabled' (1x).\nLine 17: Converted 'talent.avenging_crusader' to 'talent.avenging_crusader.enabled' (1x).\nLine 18: Converted 'talent.avenging_crusader' to 'talent.avenging_crusader.enabled' (1x).\n\nImported 3 action lists.\n", ["author"] = "Kaleokalani", ["profile"] = "actions.precombat+=/devotion_aura,if=buff.paladin_aura.down\nactions.precombat+=/beacon_of_light,if=active_dot.beacon_of_light=0\nactions.precombat+=/beacon_of_faith,if=group&active_dot.beacon_of_faith=0\n\nactions+=/rebuke\nactions+=/avenging_wrath\nactions+=/avenging_crusader\nactions+=/holy_armaments\nactions+=/blessing_of_summer\nactions+=/blessing_of_autumn\nactions+=/blessing_of_winter\nactions+=/blessing_of_spring\nactions+=/lights_judgment\nactions+=/potion\nactions+=/fireblood,if=buff.bloodlust.up||buff.avenging_wrath.up||buff.avenging_crusader.up\nactions+=/use_items\nactions+=/call_action_list,name=spenders,strict=1,if=!talent.avenging_crusader||cooldown.avenging_crusader.remains>gcd.max||holy_power.deficit=0\nactions+=/divine_toll\nactions+=/holy_prism\nactions+=/beacon_of_virtue,if=group\nactions+=/crusader_strike,if=talent.avenging_crusader&full_recharge_timegcd.max\nactions+=/arcane_torrent\n\nactions.spenders+=/word_of_glory,if=solo&(health.pct<70||!equipped.shield)&buff.shining_righteousness_ready.up||buff.empyrean_legacy.up\nactions.spenders+=/light_of_dawn,if=group&buff.shining_righteousness_ready.up\nactions.spenders+=/shield_of_the_righteous", }, ["Retribution"] = { ["builtIn"] = true, ["date"] = 20250310, ["spec"] = 70, ["desc"] = "2025-03-10: SimC Update\n\n2025-02-28: TWW Season 2 update\n\n2024-10-29: Efficiency of Finishers (fixed)\n\n2024-09-28: SimC update; HoL fix?\n\n2024-09-10, 09-22: SimC update\n\n2024-08-28: Fix HoL and update from SimC\n\n2024-08-24: Fix Hammer of Light\n\n2024-07-23: The War Within", ["profile"] = "actions.precombat+=/shield_of_vengeance\nactions.precombat+=/variable,name=trinket_1_buffs,value=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\nactions.precombat+=/variable,name=trinket_2_buffs,value=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\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.crusade.duration=0||cooldown.crusade.duration%%trinket.1.cooldown.duration=0||trinket.1.cooldown.duration%%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.crusade.duration=0||cooldown.crusade.duration%%trinket.2.cooldown.duration=0||trinket.2.cooldown.duration%%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%%trinket.2.cooldown.duration=0)\nactions.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))\n\nactions+=/rebuke\nactions+=/call_action_list,name=cooldowns\nactions+=/call_action_list,name=generators\n\nactions.cooldowns+=/potion,if=buff.avenging_wrath.up||buff.crusade.up||debuff.execution_sentence.up||boss&fight_remains<30\n## actions.cooldowns+=/invoke_external_buff,name=power_infusion,if=buff.avenging_wrath.up||buff.crusade.up||debuff.execution_sentence.up\nactions.cooldowns+=/lights_judgment,if=spell_targets.lights_judgment>=2||!raid_event.adds.exists||raid_event.adds.in>75||raid_event.adds.up\nactions.cooldowns+=/fireblood,if=buff.avenging_wrath.up||buff.crusade.up&buff.crusade.stack=10||debuff.execution_sentence.up\nactions.cooldowns+=/use_item,slot=trinket1,if=((buff.avenging_wrath.up&cooldown.avenging_wrath.remains>40||buff.crusade.up&buff.crusade.stack=10)&!talent.radiant_glory||talent.radiant_glory&(!talent.execution_sentence&cooldown.wake_of_ashes.remains=0||debuff.execution_sentence.up))&(!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains&boss\nactions.cooldowns+=/use_item,slot=trinket2,if=((buff.avenging_wrath.up&cooldown.avenging_wrath.remains>40||buff.crusade.up&buff.crusade.stack=10)&!talent.radiant_glory||talent.radiant_glory&(!talent.execution_sentence&cooldown.wake_of_ashes.remains=0||debuff.execution_sentence.up))&(!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains&boss\nactions.cooldowns+=/use_item,name=bestinslots,if=((buff.avenging_wrath.up&cooldown.avenging_wrath.remains>40||buff.crusade.up&buff.crusade.stack=10)&!talent.radiant_glory||talent.radiant_glory&(!talent.execution_sentence&cooldown.wake_of_ashes.remains=0||debuff.execution_sentence.up))\nactions.cooldowns+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs||!buff.crusade.up&cooldown.crusade.remains>20||!buff.avenging_wrath.up&cooldown.avenging_wrath.remains>20)\nactions.cooldowns+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs||!buff.crusade.up&cooldown.crusade.remains>20||!buff.avenging_wrath.up&cooldown.avenging_wrath.remains>20)\nactions.cooldowns+=/shield_of_vengeance,if=fight_remains>15&(!talent.execution_sentence||!debuff.execution_sentence.up)&!buff.divine_hammer.up\nactions.cooldowns+=/execution_sentence,if=(!buff.crusade.up&cooldown.crusade.remains>15||buff.crusade.stack=10||cooldown.avenging_wrath.remains<0.75||cooldown.avenging_wrath.remains>15||talent.radiant_glory)&(holy_power>=4&time<5||holy_power>=3&time>5||(holy_power>=2||time<5)&(talent.divine_auxiliary||talent.radiant_glory))&(cooldown.divine_hammer.remains>5||buff.divine_hammer.up||!talent.divine_hammer)&(target.time_to_die>8&!talent.executioners_will||target.time_to_die>12)&cooldown.wake_of_ashes.remains=4&time<5||holy_power>=3&time>5||holy_power>=2&talent.divine_auxiliary&(cooldown.execution_sentence.remains=0||cooldown.final_reckoning.remains=0))&(!raid_event.adds.up||target.time_to_die>10)\nactions.cooldowns+=/crusade,if=holy_power>=5&time<5||holy_power>=3&time>5\nactions.cooldowns+=/final_reckoning,if=(holy_power>=4&time<8||holy_power>=3&time>=8||holy_power>=2&(talent.divine_auxiliary||talent.radiant_glory))&(cooldown.avenging_wrath.remains>10||cooldown.crusade.remains&(!buff.crusade.up||buff.crusade.stack>=10)||talent.radiant_glory&(buff.avenging_wrath.up||talent.crusade&cooldown.wake_of_ashes.remains40)\n\nactions.finishers+=/variable,name=ds_castable,value=(spell_targets.divine_storm>=2||buff.empyrean_power.up||!talent.final_verdict&talent.tempest_of_the_lightbringer)&!buff.empyrean_legacy.up&!(buff.divine_arbiter.up&buff.divine_arbiter.stack>24)\nactions.finishers+=/hammer_of_light,if=buff.hammer_of_light_ready.up||!talent.divine_hammer||buff.divine_hammer.up||cooldown.divine_hammer.remains>10\nactions.finishers+=/divine_hammer,if=!buff.divine_hammer.up\nactions.finishers+=/divine_storm,if=variable.ds_castable&!buff.hammer_of_light_ready.up&(cooldown.divine_hammer.remains||buff.divine_hammer.up||!talent.divine_hammer)&(!talent.crusade||cooldown.crusade.remains>gcd*3||buff.crusade.up&buff.crusade.stack<10||talent.radiant_glory)\nactions.finishers+=/justicars_vengeance,if=(!talent.crusade||cooldown.crusade.remains>gcd*3||buff.crusade.up&buff.crusade.stack<10||talent.radiant_glory)&!buff.hammer_of_light_ready.up&(cooldown.divine_hammer.remains||buff.divine_hammer.up||!talent.divine_hammer)\nactions.finishers+=/templars_verdict,if=(!talent.crusade||cooldown.crusade.remains>gcd*3||buff.crusade.up&buff.crusade.stack<10||talent.radiant_glory)&!buff.hammer_of_light_ready.up&(cooldown.divine_hammer.remains||buff.divine_hammer.up||!talent.divine_hammer)\nactions.finishers+=/variable,name=finished,op=set,value=true\n\nactions.generators+=/variable,name=finished,op=set,value=false\nactions.generators+=/call_action_list,name=finishers,strict=1,if=(holy_power=5||holy_power=4&buff.divine_resonance.up||buff.all_in.up)&cooldown.wake_of_ashes.remains\nactions.generators+=/templar_slash,if=buff.templar_strikes.remains=2&talent.lights_guidance)&(cooldown.avenging_wrath.remains>6||cooldown.crusade.remains>6||talent.radiant_glory)&(!talent.execution_sentence||cooldown.execution_sentence.remains>4||target.time_to_die<8)&(!raid_event.adds.exists||raid_event.adds.in>10||raid_event.adds.up)\nactions.generators+=/divine_toll,if=holy_power<=2&(!raid_event.adds.exists||raid_event.adds.in>10||raid_event.adds.up)&(cooldown.avenging_wrath.remains>15||cooldown.crusade.remains>15||talent.radiant_glory||fight_remains<8)\nactions.generators+=/call_action_list,name=finishers,strict=1,if=!variable.finished\nactions.generators+=/templar_slash,if=buff.templar_strikes.remains=2\nactions.generators+=/blade_of_justice,if=spell_targets.divine_storm>=2&talent.blade_of_vengeance\nactions.generators+=/hammer_of_wrath,if=(spell_targets.divine_storm<2||!talent.blessed_champion)&buff.blessing_of_anshe.up\nactions.generators+=/templar_strike\nactions.generators+=/judgment\nactions.generators+=/blade_of_justice\nactions.generators+=/hammer_of_wrath,if=(spell_targets.divine_storm<2||!talent.blessed_champion)\nactions.generators+=/templar_slash\nactions.generators+=/crusader_strike\nactions.generators+=/hammer_of_wrath\nactions.generators+=/arcane_torrent", ["version"] = 20250310, ["warnings"] = "The import for 'precombat' required some automated changes.\nLine 2: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 2: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 2: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 2: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 2: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 2: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 3: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 3: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 3: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 3: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 3: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.crusade.duration=0||cooldown.crusade.duration%%trinket.t1.cooldown.duration=0||trinket.t1.cooldown.duration%%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.crusade.duration=0||cooldown.crusade.duration%trinket.t1.cooldown.duration=0||trinket.t1.cooldown.duration%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%trinket.t1.cooldown.duration=0)'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.crusade.duration=0||cooldown.crusade.duration%%trinket.t2.cooldown.duration=0||trinket.t2.cooldown.duration%%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.crusade.duration=0||cooldown.crusade.duration%trinket.t2.cooldown.duration=0||trinket.t2.cooldown.duration%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%trinket.t2.cooldown.duration=0)'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 6: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 6: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 6: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 6: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 6: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 6: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'cooldowns' required some automated changes.\nLine 4: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 4: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 4: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 4: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 4: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 5: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 5: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 5: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 6: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 6: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 6: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 8: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 8: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 9: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 10: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 10: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 10: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 10: Converted 'talent.divine_hammer' to 'talent.divine_hammer.enabled' (1x).\nLine 10: Converted 'talent.executioners_will' to 'talent.executioners_will.enabled' (1x).\nLine 11: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 13: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 13: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 13: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 13: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\n\nThe import for 'finishers' required some automated changes.\nLine 1: Converted 'talent.final_verdict' to 'talent.final_verdict.enabled' (1x).\nLine 1: Converted 'talent.tempest_of_the_lightbringer' to 'talent.tempest_of_the_lightbringer.enabled' (1x).\nLine 2: Converted 'talent.divine_hammer' to 'talent.divine_hammer.enabled' (1x).\nLine 4: Converted 'talent.divine_hammer' to 'talent.divine_hammer.enabled' (1x).\nLine 4: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 4: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 5: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.divine_hammer' to 'talent.divine_hammer.enabled' (1x).\nLine 6: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 6: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 6: Converted 'talent.divine_hammer' to 'talent.divine_hammer.enabled' (1x).\n\nThe import for 'generators' required some automated changes.\nLine 4: Converted 'talent.holy_flames' to 'talent.holy_flames.enabled' (1x).\nLine 5: Converted 'talent.lights_guidance' to 'talent.lights_guidance.enabled' (1x).\nLine 5: Converted 'talent.lights_guidance' to 'talent.lights_guidance.enabled' (1x).\nLine 5: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 6: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 9: Converted 'talent.blade_of_vengeance' to 'talent.blade_of_vengeance.enabled' (1x).\nLine 10: Converted 'talent.blessed_champion' to 'talent.blessed_champion.enabled' (1x).\nLine 14: Converted 'talent.blessed_champion' to 'talent.blessed_champion.enabled' (1x).\n\nImported 5 action lists.\n", ["author"] = "SimC", ["lists"] = { ["default"] = { { ["action"] = "rebuke", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cooldowns", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "generators", }, }, ["precombat"] = { { ["action"] = "shield_of_vengeance", ["enabled"] = true, }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff", ["var_name"] = "trinket_1_buffs", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff", ["var_name"] = "trinket_2_buffs", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "trinket_1_sync", ["value"] = "1", ["value_else"] = "0.5", ["criteria"] = "variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % cooldown.crusade.duration = 0 || cooldown.crusade.duration % trinket.t1.cooldown.duration = 0 || trinket.t1.cooldown.duration % cooldown.avenging_wrath.duration = 0 || cooldown.avenging_wrath.duration % trinket.t1.cooldown.duration = 0 )", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "trinket_2_sync", ["value"] = "1", ["value_else"] = "0.5", ["criteria"] = "variable.trinket_2_buffs & ( trinket.t2.cooldown.duration % cooldown.crusade.duration = 0 || cooldown.crusade.duration % trinket.t2.cooldown.duration = 0 || trinket.t2.cooldown.duration % cooldown.avenging_wrath.duration = 0 || cooldown.avenging_wrath.duration % trinket.t2.cooldown.duration = 0 )", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "trinket_priority", ["value"] = "2", ["value_else"] = "1", ["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / trinket.t2.buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )", }, }, ["generators"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "false", ["var_name"] = "finished", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "( holy_power = 5 || holy_power = 4 & buff.divine_resonance.up || buff.all_in.up ) & cooldown.wake_of_ashes.remains", ["list_name"] = "finishers", }, { ["enabled"] = true, ["criteria"] = "buff.templar_strikes.remains < gcd.max * 2", ["action"] = "templar_slash", }, { ["enabled"] = true, ["criteria"] = "! dot.expurgation.ticking & talent.holy_flames.enabled & cooldown.divine_toll.remains", ["action"] = "blade_of_justice", }, { ["enabled"] = true, ["criteria"] = "( ! talent.lights_guidance.enabled || holy_power >= 2 & talent.lights_guidance.enabled ) & ( cooldown.avenging_wrath.remains > 6 || cooldown.crusade.remains > 6 || talent.radiant_glory.enabled ) & ( ! talent.execution_sentence.enabled || cooldown.execution_sentence.remains > 4 || target.time_to_die < 8 ) & ( ! raid_event.adds.exists || raid_event.adds.in > 10 || raid_event.adds.up )", ["action"] = "wake_of_ashes", }, { ["enabled"] = true, ["criteria"] = "holy_power <= 2 & ( ! raid_event.adds.exists || raid_event.adds.in > 10 || raid_event.adds.up ) & ( cooldown.avenging_wrath.remains > 15 || cooldown.crusade.remains > 15 || talent.radiant_glory.enabled || fight_remains < 8 )", ["action"] = "divine_toll", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "! variable.finished", ["list_name"] = "finishers", }, { ["enabled"] = true, ["criteria"] = "buff.templar_strikes.remains < gcd.max & spell_targets.divine_storm >= 2", ["action"] = "templar_slash", }, { ["enabled"] = true, ["criteria"] = "spell_targets.divine_storm >= 2 & talent.blade_of_vengeance.enabled", ["action"] = "blade_of_justice", }, { ["enabled"] = true, ["criteria"] = "( spell_targets.divine_storm < 2 || ! talent.blessed_champion.enabled ) & buff.blessing_of_anshe.up", ["action"] = "hammer_of_wrath", }, { ["action"] = "templar_strike", ["enabled"] = true, }, { ["action"] = "judgment", ["enabled"] = true, }, { ["action"] = "blade_of_justice", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( spell_targets.divine_storm < 2 || ! talent.blessed_champion.enabled )", ["action"] = "hammer_of_wrath", }, { ["action"] = "templar_slash", ["enabled"] = true, }, { ["action"] = "crusader_strike", ["enabled"] = true, }, { ["action"] = "hammer_of_wrath", ["enabled"] = true, }, { ["action"] = "arcane_torrent", ["enabled"] = true, }, }, ["finishers"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( spell_targets.divine_storm >= 2 || buff.empyrean_power.up || ! talent.final_verdict.enabled & talent.tempest_of_the_lightbringer.enabled ) & ! buff.empyrean_legacy.up & ! ( buff.divine_arbiter.up & buff.divine_arbiter.stack > 24 )", ["var_name"] = "ds_castable", }, { ["enabled"] = true, ["criteria"] = "buff.hammer_of_light_ready.up || ! talent.divine_hammer.enabled || buff.divine_hammer.up || cooldown.divine_hammer.remains > 10", ["action"] = "hammer_of_light", }, { ["enabled"] = true, ["criteria"] = "! buff.divine_hammer.up", ["action"] = "divine_hammer", }, { ["enabled"] = true, ["criteria"] = "variable.ds_castable & ! buff.hammer_of_light_ready.up & ( cooldown.divine_hammer.remains || buff.divine_hammer.up || ! talent.divine_hammer.enabled ) & ( ! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 || buff.crusade.up & buff.crusade.stack < 10 || talent.radiant_glory.enabled )", ["action"] = "divine_storm", }, { ["enabled"] = true, ["criteria"] = "( ! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 || buff.crusade.up & buff.crusade.stack < 10 || talent.radiant_glory.enabled ) & ! buff.hammer_of_light_ready.up & ( cooldown.divine_hammer.remains || buff.divine_hammer.up || ! talent.divine_hammer.enabled )", ["action"] = "justicars_vengeance", }, { ["enabled"] = true, ["criteria"] = "( ! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 || buff.crusade.up & buff.crusade.stack < 10 || talent.radiant_glory.enabled ) & ! buff.hammer_of_light_ready.up & ( cooldown.divine_hammer.remains || buff.divine_hammer.up || ! talent.divine_hammer.enabled )", ["action"] = "templars_verdict", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "true", ["var_name"] = "finished", }, }, ["cooldowns"] = { { ["enabled"] = true, ["criteria"] = "buff.avenging_wrath.up || buff.crusade.up || debuff.execution_sentence.up || boss & fight_remains < 30", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "spell_targets.lights_judgment >= 2 || ! raid_event.adds.exists || raid_event.adds.in > 75 || raid_event.adds.up", ["action"] = "lights_judgment", }, { ["enabled"] = true, ["criteria"] = "buff.avenging_wrath.up || buff.crusade.up & buff.crusade.stack = 10 || debuff.execution_sentence.up", ["action"] = "fireblood", }, { ["enabled"] = true, ["criteria"] = "( ( buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 40 || buff.crusade.up & buff.crusade.stack = 10 ) & ! talent.radiant_glory.enabled || talent.radiant_glory.enabled & ( ! talent.execution_sentence.enabled & cooldown.wake_of_ashes.remains = 0 || debuff.execution_sentence.up ) ) & ( ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || trinket.t1.buff_duration >= fight_remains & boss", ["action"] = "trinket1", ["slot"] = "trinket1", }, { ["enabled"] = true, ["criteria"] = "( ( buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 40 || buff.crusade.up & buff.crusade.stack = 10 ) & ! talent.radiant_glory.enabled || talent.radiant_glory.enabled & ( ! talent.execution_sentence.enabled & cooldown.wake_of_ashes.remains = 0 || debuff.execution_sentence.up ) ) & ( ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || trinket.t2.buff_duration >= fight_remains & boss", ["action"] = "trinket2", ["slot"] = "trinket2", }, { ["enabled"] = true, ["action"] = "bestinslots", ["criteria"] = "( ( buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 40 || buff.crusade.up & buff.crusade.stack = 10 ) & ! talent.radiant_glory.enabled || talent.radiant_glory.enabled & ( ! talent.execution_sentence.enabled & cooldown.wake_of_ashes.remains = 0 || debuff.execution_sentence.up ) )", ["name"] = "bestinslots", }, { ["enabled"] = true, ["criteria"] = "! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs || ! buff.crusade.up & cooldown.crusade.remains > 20 || ! buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 20 )", ["action"] = "trinket1", ["slot"] = "trinket1", }, { ["enabled"] = true, ["criteria"] = "! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs || ! buff.crusade.up & cooldown.crusade.remains > 20 || ! buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 20 )", ["action"] = "trinket2", ["slot"] = "trinket2", }, { ["enabled"] = true, ["criteria"] = "fight_remains > 15 & ( ! talent.execution_sentence.enabled || ! debuff.execution_sentence.up ) & ! buff.divine_hammer.up", ["action"] = "shield_of_vengeance", }, { ["enabled"] = true, ["criteria"] = "( ! buff.crusade.up & cooldown.crusade.remains > 15 || buff.crusade.stack = 10 || cooldown.avenging_wrath.remains < 0.75 || cooldown.avenging_wrath.remains > 15 || talent.radiant_glory.enabled ) & ( holy_power >= 4 & time < 5 || holy_power >= 3 & time > 5 || ( holy_power >= 2 || time < 5 ) & ( talent.divine_auxiliary.enabled || talent.radiant_glory.enabled ) ) & ( cooldown.divine_hammer.remains > 5 || buff.divine_hammer.up || ! talent.divine_hammer.enabled ) & ( target.time_to_die > 8 & ! talent.executioners_will.enabled || target.time_to_die > 12 ) & cooldown.wake_of_ashes.remains < gcd.max", ["action"] = "execution_sentence", }, { ["enabled"] = true, ["criteria"] = "( holy_power >= 4 & time < 5 || holy_power >= 3 & time > 5 || holy_power >= 2 & talent.divine_auxiliary.enabled & ( cooldown.execution_sentence.remains = 0 || cooldown.final_reckoning.remains = 0 ) ) & ( ! raid_event.adds.up || target.time_to_die > 10 )", ["action"] = "avenging_wrath", }, { ["enabled"] = true, ["criteria"] = "holy_power >= 5 & time < 5 || holy_power >= 3 & time > 5", ["action"] = "crusade", }, { ["enabled"] = true, ["criteria"] = "( holy_power >= 4 & time < 8 || holy_power >= 3 & time >= 8 || holy_power >= 2 & ( talent.divine_auxiliary.enabled || talent.radiant_glory.enabled ) ) & ( cooldown.avenging_wrath.remains > 10 || cooldown.crusade.remains & ( ! buff.crusade.up || buff.crusade.stack >= 10 ) || talent.radiant_glory.enabled & ( buff.avenging_wrath.up || talent.crusade.enabled & cooldown.wake_of_ashes.remains < gcd.max ) ) & ( ! raid_event.adds.exists || raid_event.adds.up || raid_event.adds.in > 40 )", ["action"] = "final_reckoning", }, }, }, }, }, }, ["Quillika - Deathwing"] = { ["runOnce"] = { ["autoconvertGlowsForCustomGlow_20190326"] = true, ["removeOldThrottles_20241115"] = true, ["forceReloadClassDefaultOptions_20220306_254"] = true, ["resetAllPotions_20201209"] = true, ["enableAllOfTheThings_20180820"] = true, ["resetGlobalCooldownSync_20210403"] = true, ["forceReloadClassDefaultOptions_20220306_255"] = true, ["forceReloadAllDefaultPriorities_20220228"] = true, ["forceEnableAllClassesOnceDueToBug_20220225"] = true, ["autoconvertDelaySweepToExtend_20190729"] = true, ["forceSpellFlashBrightness_20221030"] = true, ["forceEnableEnhancedRecheckBoomkin_20210712"] = true, ["resetPotionsToDefaults_20190717"] = true, ["resetRogueMfDOption_20200226"] = true, ["updateMaxRefreshToNewSpecOptions_20220222"] = true, ["fixHavocPriorityVersion_20240805"] = true, ["forceReloadClassDefaultOptions_20220306_253"] = true, ["autoconvertDisplayToggle_20190621_1"] = true, ["resetAberrantPackageDates_20190728_1"] = true, }, ["specs"] = { [255] = { ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["settings"] = { ["ca_vop_overlap"] = false, ["allow_focus_overcap"] = false, ["mark_any"] = false, ["use_harpoon"] = true, ["pet_healing"] = 0, ["lunar_toggle"] = "none", ["manual_kill_shot"] = false, }, }, [254] = { ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["settings"] = { ["prevent_hardcasts"] = true, ["eagletalon_swap"] = false, ["trueshot_rapid_fire"] = true, ["mark_any"] = false, ["pet_healing"] = 0, ["lunar_toggle"] = "none", ["trueshot_vop_overlap"] = false, }, }, [253] = { ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["settings"] = { ["check_pet_range"] = true, ["barbed_shot_grace_period"] = 0.5, ["barbed_shot_opener"] = true, ["avoid_bw_overlap"] = false, ["pet_healing"] = 0, ["aspect_vop_overlap"] = false, ["mark_any"] = false, }, }, [102] = { ["enhancedRecheck"] = true, }, }, ["displays"] = { ["Interrupts"] = { ["rel"] = "CENTER", ["x"] = -267.07861328125, ["y"] = -107.68505859375, }, ["Cooldowns"] = { ["rel"] = "CENTER", ["x"] = -319.9996337890625, ["y"] = -107.4996337890625, }, ["Primary"] = { ["rel"] = "CENTER", ["elvuiCooldown"] = true, ["x"] = -40.0003662109375, ["y"] = -294.9996337890625, ["zoom"] = 25, ["queue"] = { ["spacing"] = 0, }, }, ["AOE"] = { ["rel"] = "CENTER", ["zoom"] = 25, ["x"] = -39.16705322265625, ["y"] = -293.3329772949219, ["queue"] = { ["spacing"] = 0, }, }, ["Defensives"] = { ["rel"] = "CENTER", ["x"] = -373.0845642089844, ["y"] = -106.971435546875, }, }, ["packs"] = { ["Marksmanship"] = { ["source"] = "# https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20250330, ["author"] = "SimC", ["desc"] = "2025-03-30: SimC Update\n2025-03-21: SimC Update\n2025-03-10: SimC Update\n2025-03-02: Delete Salvo\n2025-02-28: TWW Season 2 update\n2025-02-17: Preliminary 11.1 APL\n2024-10-29: SimC update\n2024-10-23: 11.0.5\n2024-09-10, 09-15: SimC update\n2024-08-15, 22: SimC update\n2024-08-11: Steady Focus only if talented\n2024-08-09: Updates from SimC\n2024-08-01: Use Hunter's Mark setting\n2024-07-27: Minor sim update; use Hunter's Mark\n2024-07-23: The War Within", ["lists"] = { ["trickshots"] = { { ["enabled"] = true, ["criteria"] = "! talent.double_tap.enabled", ["action"] = "volley", }, { ["enabled"] = true, ["criteria"] = "variable.trueshot_ready", ["action"] = "trueshot", }, { ["enabled"] = true, ["action"] = "multishot", ["cycle_Targets"] = "1", ["criteria"] = "buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down ) || buff.trick_shots.down", ["description"] = "Swap targets to spend Precise Shots from No Scope after applying Spotter's Mark already to the primary target.", }, { ["enabled"] = true, ["description"] = "For Double Tap, lower Volley in priority until Trueshot has already triggered Double Tap.", ["criteria"] = "talent.double_tap.enabled & buff.double_tap.down", ["action"] = "volley", }, { ["enabled"] = true, ["description"] = "Always cast Black Arrow with Trick Shots up for Bleak Powder.", ["criteria"] = "buff.trick_shots.up", ["action"] = "black_arrow", }, { ["enabled"] = true, ["description"] = "Prioritize Aimed Shot a bit higher than Rapid Fire if it's close to charge capping and Bulletstorm is up.", ["criteria"] = "( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & buff.trick_shots.up & buff.bulletstorm.up & full_recharge_time < gcd.max", ["action"] = "aimed_shot", }, { ["enabled"] = true, ["description"] = "With Sentinel, hold Rapid Fire for up to 1/3 of its cooldown to trigger Lunar Storm as soon as possible.", ["criteria"] = "buff.trick_shots.up & ( ! hero_tree.sentinel || buff.lunar_storm_cooldown.remains > action_cooldown / 3 || buff.lunar_storm_cooldown.down )", ["action"] = "rapid_fire", }, { ["enabled"] = true, ["description"] = "With Precision Detonation, wait until a follow up Aimed Shot would not waste Precise Shots to cast. Require Lock and Load active if using the 4pc.", ["criteria"] = "talent.precision_detonation.enabled & ( buff.lock_and_load.up || ! set_bonus.thewarwithin_season_2_4pc ) & ( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up )", ["action"] = "explosive_shot", }, { ["enabled"] = true, ["description"] = "Aimed Shot if we've spent Precise Shots to trigger Spotter's Mark and Moving Target. With No Scope this means Precise Shots could be up when Aimed Shot is cast.", ["criteria"] = "( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & buff.trick_shots.up", ["action"] = "aimed_shot", }, { ["action"] = "explosive_shot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max", ["action"] = "steady_shot", }, { ["action"] = "multishot", ["enabled"] = true, }, }, ["default"] = { { ["action"] = "counter_shot", ["enabled"] = true, }, { ["action"] = "tranquilizing_shot", ["enabled"] = true, }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "cooldown.trueshot.ready & ( ( ! raid_event.adds.exists || raid_event.adds.count = 1 ) & ( ! talent.bullseye.enabled || fight_remains > cooldown.trueshot.duration_guess + buff.trueshot.duration / 2 || buff.bullseye.stack = buff.bullseye.max_stack ) & ( ! trinket.t1.has_use_buff || trinket.t1.cooldown.remains > 30 || trinket.t1.cooldown.ready ) & ( ! trinket.t2.has_use_buff || trinket.t2.cooldown.remains > 30 || trinket.t2.cooldown.ready ) || raid_event.adds.exists & ( ! raid_event.adds.up & ( raid_event.adds.duration + raid_event.adds.in < 25 || raid_event.adds.in > 60 ) || raid_event.adds.up & raid_event.adds.remains > 10 ) || boss & fight_remains < 25 )", ["var_name"] = "trueshot_ready", ["description"] = "Determine if it is a good time to use Trueshot. Raid event optimization takes priority so usage is saved for multiple targets as long as it won't delay over half its duration. Otherwise allow for small delays to line up buff effect trinkets, and when using Bullseye, delay the last usage of the fight for max stacks.", }, { ["enabled"] = true, ["criteria"] = "pet.health_pct < pet_healing", ["action"] = "mend_pet", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cds", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "trinkets", }, { ["enabled"] = true, ["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20", ["action"] = "hunters_mark", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "active_enemies < 3 || ! talent.trick_shots.enabled", ["list_name"] = "st", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "active_enemies > 2", ["list_name"] = "trickshots", }, }, ["precombat"] = { { ["enabled"] = true, ["criteria"] = "talent.unbreakable_bond.enabled", ["action"] = "summon_pet", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "! trinket.t2.has_cooldown || trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff || ! trinket.t1.is.mirror_of_fractured_tomorrows & ( trinket.t2.is.mirror_of_fractured_tomorrows || trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) ) || ! trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) )", ["var_name"] = "trinket_1_stronger", ["description"] = "Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "! variable.trinket_1_stronger", ["var_name"] = "trinket_2_stronger", }, { ["enabled"] = true, ["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20", ["action"] = "hunters_mark", }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1 || active_enemies = 2 & ! talent.volley.enabled", ["action"] = "aimed_shot", }, { ["action"] = "steady_shot", ["enabled"] = true, }, }, ["trinkets"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "variable.trueshot_ready", ["var_name"] = "sync_ready", ["description"] = "True if effects that are desirable to sync a trinket buff with are ready.", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "buff.trueshot.up", ["var_name"] = "sync_active", ["description"] = "True if effecs that are desirable to sync a trinket buff with are active.", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "cooldown.trueshot.remains_guess", ["var_name"] = "sync_remains", ["description"] = "Time until the effects that are desirable to sync a trinket buff with will be ready.", }, { ["enabled"] = true, ["action"] = "trinket1", ["slot"] = "trinket1", ["use_off_gcd"] = 1, ["description"] = "Uses buff effect trinkets with cooldowns and is willing to delay usage up to half the trinket cooldown if it won't lose a usage in the fight. Fills in downtime with weaker buff effects if they won't also be saved for later cooldowns (happens if it won't delay over half the trinket cooldown and a stronger trinket won't be up in time) or damage effects if they won't inferfere with any buff effect usage. Intended to be slot-agnostic so that any order of the same trinket pair should result in the same usage.", ["criteria"] = "trinket.t1.has_use_buff & ( variable.sync_ready & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) || ! variable.sync_ready & ( variable.trinket_1_stronger & ( variable.sync_remains > trinket.t1.cooldown.duration / 3 & fight_remains > trinket.t1.cooldown.duration + 20 || trinket.t2.has_use_buff & trinket.t2.cooldown.remains > variable.sync_remains - 15 & trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 45 > fight_remains ) || variable.trinket_2_stronger & ( trinket.t2.cooldown.remains & ( trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains >= 20 || trinket.t2.cooldown.remains - 5 >= variable.sync_remains & ( variable.sync_remains > trinket.t1.cooldown.duration / 3 || trinket.t1.cooldown.duration < fight_remains & ( variable.sync_remains + trinket.t1.cooldown.duration > fight_remains ) ) ) || trinket.t2.cooldown.ready & variable.sync_remains > 20 & variable.sync_remains < trinket.t2.cooldown.duration / 3 ) ) ) || ! trinket.t1.has_use_buff & ( trinket.t1.cast_time = 0 || ! variable.sync_active ) & ( ! trinket.t2.has_use_buff & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) || trinket.t2.has_use_buff & ( variable.sync_remains > 20 || trinket.t2.cooldown.remains > 20 ) ) || boss & fight_remains < 25 & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains )", }, { ["enabled"] = true, ["action"] = "trinket2", ["slot"] = "trinket2", ["use_off_gcd"] = 1, ["criteria"] = "trinket.t2.has_use_buff & ( variable.sync_ready & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) || ! variable.sync_ready & ( variable.trinket_2_stronger & ( variable.sync_remains > trinket.t2.cooldown.duration / 3 & fight_remains > trinket.t2.cooldown.duration + 20 || trinket.t1.has_use_buff & trinket.t1.cooldown.remains > variable.sync_remains - 15 & trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 45 > fight_remains ) || variable.trinket_1_stronger & ( trinket.t1.cooldown.remains & ( trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains >= 20 || trinket.t1.cooldown.remains - 5 >= variable.sync_remains & ( variable.sync_remains > trinket.t2.cooldown.duration / 3 || trinket.t2.cooldown.duration < fight_remains & ( variable.sync_remains + trinket.t2.cooldown.duration > fight_remains ) ) ) || trinket.t1.cooldown.ready & variable.sync_remains > 20 & variable.sync_remains < trinket.t1.cooldown.duration / 3 ) ) ) || ! trinket.t2.has_use_buff & ( trinket.t2.cast_time = 0 || ! variable.sync_active ) & ( ! trinket.t1.has_use_buff & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) || trinket.t1.has_use_buff & ( variable.sync_remains > 20 || trinket.t1.cooldown.remains > 20 ) ) || boss & fight_remains < 25 & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains )", }, }, ["st"] = { { ["enabled"] = true, ["description"] = "Hold Volley for up to its whole cooldown for multiple target situations, also make sure Rapid Fire will be available to stack extra Bullestorm stacks during it without Aspect of the Hydra.", ["criteria"] = "! talent.double_tap.enabled & ( talent.aspect_of_the_hydra.enabled || active_enemies = 1 || buff.precise_shots.down & ( cooldown.rapid_fire.remains + action.rapid_fire.execute_time < 6 || ! talent.bulletstorm.enabled ) ) & ( ! raid_event.adds.exists || raid_event.adds.in > action_cooldown || active_enemies > 1 )", ["action"] = "volley", }, { ["enabled"] = true, ["description"] = "Prioritize Rapid Fire to trigger Lunar Storm or to stack extra Bulletstorm when Volley Trick Shots is up without Aspect of the Hydra.", ["criteria"] = "hero_tree.sentinel & buff.lunar_storm_cooldown.down || ! talent.aspect_of_the_hydra.enabled & talent.bulletstorm.enabled & active_enemies > 1 & buff.trick_shots.up & ( buff.precise_shots.down || ! talent.no_scope.enabled )", ["action"] = "rapid_fire", }, { ["enabled"] = true, ["criteria"] = "variable.trueshot_ready", ["action"] = "trueshot", }, { ["enabled"] = true, ["description"] = "Prioritize 4pc double bonus by casting Explosive Shot and following up with Aimed Shot when Lock and Load is up, as long as Precise Shots would not be wasted.", ["criteria"] = "talent.precision_detonation.enabled & set_bonus.thewarwithin_season_2_4pc & ( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & buff.lock_and_load.up", ["action"] = "explosive_shot", }, { ["enabled"] = true, ["criteria"] = "talent.precision_detonation.enabled & set_bonus.thewarwithin_season_2_4pc & ( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & buff.lock_and_load.up", ["action"] = "aimed_shot", }, { ["enabled"] = true, ["description"] = "For Double Tap, lower Volley in priority until Trueshot has already triggered Double Tap.", ["criteria"] = "talent.double_tap.enabled & buff.double_tap.down", ["action"] = "volley", }, { ["enabled"] = true, ["action"] = "black_arrow", ["cycle_Targets"] = "1", ["criteria"] = "talent.headshot.enabled & buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down ) || ! talent.headshot.enabled & buff.razor_fragments.up", ["description"] = "Kill Shot/Black Arrow become the primary Precise Shot spenders for Headshot builds. For all Precise Shot spenders, skip to Aimed Shot if both Spotter's Mark and Moving Target are already up.", }, { ["enabled"] = true, ["cycle_Targets"] = "1", ["action"] = "kill_shot", ["criteria"] = "talent.headshot.enabled & buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down ) || ! talent.headshot.enabled & buff.razor_fragments.up", }, { ["enabled"] = true, ["action"] = "multishot", ["cycle_Targets"] = "1", ["criteria"] = "buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down ) & active_enemies > 1 & ! talent.aspect_of_the_hydra.enabled & ( talent.symphonic_arsenal.enabled || talent.small_game_hunter.enabled )", ["description"] = "With either Symphonic Arsenal or Small Game Hunter, Multi-Shot can be used as the Precise Shots spender on 2 targets without Aspect of the Hydra.", }, { ["enabled"] = true, ["cycle_Targets"] = "1", ["action"] = "arcane_shot", ["criteria"] = "buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down )", }, { ["enabled"] = true, ["action"] = "aimed_shot", ["cycle_Targets"] = "1", ["criteria"] = "( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & full_recharge_time < action.rapid_fire.execute_time + cast_time & ( ! talent.bulletstorm.enabled || buff.bulletstorm.up ) & talent.windrunner_quiver.enabled", ["description"] = "Prioritize Aimed Shot a bit higher than Rapid Fire if it's close to charge capping and Bulletstorm is up.", }, { ["enabled"] = true, ["description"] = "With Sentinel, hold Rapid Fire for up to 1/3 of its cooldown to trigger Lunar Storm as soon as possible. Don't reset Bulletstorm if it's been stacked over 10 unless it can be re-stacked over 10.", ["criteria"] = "( ! hero_tree.sentinel || buff.lunar_storm_cooldown.remains > action_cooldown / 3 ) & ( ! talent.bulletstorm.enabled || buff.bulletstorm.stack <= 10 || talent.aspect_of_the_hydra.enabled & active_enemies > 1 )", ["action"] = "rapid_fire", }, { ["enabled"] = true, ["action"] = "aimed_shot", ["cycle_Targets"] = "1", ["criteria"] = "buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up", ["description"] = "Aimed Shot if we've spent Precise Shots to trigger Spotter's Mark and Moving Target. With No Scope this means Precise Shots could be up when Aimed Shot is cast.", }, { ["enabled"] = true, ["criteria"] = "! set_bonus.thewarwithin_season_2_4pc || ! talent.precision_detonation.enabled", ["action"] = "explosive_shot", }, { ["enabled"] = true, ["criteria"] = "! talent.headshot.enabled", ["action"] = "black_arrow", }, { ["enabled"] = true, ["description"] = "Steady Shot is our only true filler due to the Aimed Shot cdr.", ["action"] = "steady_shot", }, }, ["cds"] = { { ["enabled"] = true, ["criteria"] = "buff.trueshot.up || boss & fight_remains < 13", ["action"] = "berserking", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 16", ["action"] = "blood_fury", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 16", ["action"] = "ancestral_call", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 9", ["action"] = "fireblood", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.down", ["action"] = "lights_judgment", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.up & ( buff.bloodlust.up || target.health.pct < 20 ) || boss & fight_remains < 31", ["action"] = "potion", }, }, }, ["version"] = 20250330, ["warnings"] = "The import for 'trickshots' required some automated changes.\nLine 1: Converted 'talent.double_tap' to 'talent.double_tap.enabled' (1x).\nLine 4: Converted 'talent.double_tap' to 'talent.double_tap.enabled' (1x).\nLine 7: Converted operations in 'buff.trick_shots.up&(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>action_cooldown%3||buff.lunar_storm_cooldown.down)' to 'buff.trick_shots.up&(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>action_cooldown/3||buff.lunar_storm_cooldown.down)'.\nLine 8: Converted 'talent.precision_detonation' to 'talent.precision_detonation.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'talent.bullseye' to 'talent.bullseye.enabled' (1x).\nLine 3: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 3: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 3: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 3: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 3: Converted operations in 'cooldown.trueshot.ready&((!raid_event.adds.exists||raid_event.adds.count=1)&(!talent.bullseye.enabled||fight_remains>cooldown.trueshot.duration_guess+buff.trueshot.duration%2||buff.bullseye.stack=buff.bullseye.max_stack)&(!trinket.t1.has_use_buff||trinket.t1.cooldown.remains>30||trinket.t1.cooldown.ready)&(!trinket.t2.has_use_buff||trinket.t2.cooldown.remains>30||trinket.t2.cooldown.ready)||raid_event.adds.exists&(!raid_event.adds.up&(raid_event.adds.duration+raid_event.adds.in<25||raid_event.adds.in>60)||raid_event.adds.up&raid_event.adds.remains>10)||boss&fight_remains<25)' to 'cooldown.trueshot.ready&((!raid_event.adds.exists||raid_event.adds.count=1)&(!talent.bullseye.enabled||fight_remains>cooldown.trueshot.duration_guess+buff.trueshot.duration/2||buff.bullseye.stack=buff.bullseye.max_stack)&(!trinket.t1.has_use_buff||trinket.t1.cooldown.remains>30||trinket.t1.cooldown.ready)&(!trinket.t2.has_use_buff||trinket.t2.cooldown.remains>30||trinket.t2.cooldown.ready)||raid_event.adds.exists&(!raid_event.adds.up&(raid_event.adds.duration+raid_event.adds.in<25||raid_event.adds.in>60)||raid_event.adds.up&raid_event.adds.remains>10)||boss&fight_remains<25)'.\nLine 8: Converted 'talent.trick_shots' to 'talent.trick_shots.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 1: Converted 'talent.unbreakable_bond' to 'talent.unbreakable_bond.enabled' (1x).\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'talent.volley' to 'talent.volley.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 1: Converted 'talent.double_tap' to 'talent.double_tap.enabled' (1x).\nLine 1: Converted 'talent.aspect_of_the_hydra' to 'talent.aspect_of_the_hydra.enabled' (1x).\nLine 1: Converted 'talent.bulletstorm' to 'talent.bulletstorm.enabled' (1x).\nLine 2: Converted 'talent.aspect_of_the_hydra' to 'talent.aspect_of_the_hydra.enabled' (1x).\nLine 2: Converted 'talent.bulletstorm' to 'talent.bulletstorm.enabled' (1x).\nLine 2: Converted 'talent.no_scope' to 'talent.no_scope.enabled' (1x).\nLine 4: Converted 'talent.precision_detonation' to 'talent.precision_detonation.enabled' (1x).\nLine 5: Converted 'talent.precision_detonation' to 'talent.precision_detonation.enabled' (1x).\nLine 6: Converted 'talent.double_tap' to 'talent.double_tap.enabled' (1x).\nLine 7: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\nLine 7: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\nLine 8: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\nLine 8: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\nLine 9: Converted 'talent.aspect_of_the_hydra' to 'talent.aspect_of_the_hydra.enabled' (1x).\nLine 9: Converted 'talent.symphonic_arsenal' to 'talent.symphonic_arsenal.enabled' (1x).\nLine 9: Converted 'talent.small_game_hunter' to 'talent.small_game_hunter.enabled' (1x).\nLine 11: Converted 'talent.bulletstorm' to 'talent.bulletstorm.enabled' (1x).\nLine 11: Converted 'talent.windrunner_quiver' to 'talent.windrunner_quiver.enabled' (1x).\nLine 12: Converted 'talent.bulletstorm' to 'talent.bulletstorm.enabled' (1x).\nLine 12: Converted 'talent.aspect_of_the_hydra' to 'talent.aspect_of_the_hydra.enabled' (1x).\nLine 12: Converted operations in '(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>action_cooldown%3)&(!talent.bulletstorm.enabled||buff.bulletstorm.stack<=10||talent.aspect_of_the_hydra.enabled&active_enemies>1)' to '(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>action_cooldown/3)&(!talent.bulletstorm.enabled||buff.bulletstorm.stack<=10||talent.aspect_of_the_hydra.enabled&active_enemies>1)'.\nLine 14: Converted 'talent.precision_detonation' to 'talent.precision_detonation.enabled' (1x).\nLine 15: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted operations in 'trinket.t1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.t1.cooldown.duration%3&fight_remains>trinket.t1.cooldown.duration+20||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-5fight_remains)||variable.trinket_2_stronger&(trinket.t2.cooldown.remains&(trinket.t2.cooldown.remains-5=20||trinket.t2.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.t1.cooldown.duration%3||trinket.t1.cooldown.durationfight_remains)))||trinket.t2.cooldown.ready&variable.sync_remains>20&variable.sync_remains20||trinket.t2.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)' to 'trinket.t1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.t1.cooldown.duration/3&fight_remains>trinket.t1.cooldown.duration+20||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-5fight_remains)||variable.trinket_2_stronger&(trinket.t2.cooldown.remains&(trinket.t2.cooldown.remains-5=20||trinket.t2.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.t1.cooldown.duration/3||trinket.t1.cooldown.durationfight_remains)))||trinket.t2.cooldown.ready&variable.sync_remains>20&variable.sync_remains20||trinket.t2.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)'.\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 5: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted operations in 'trinket.t2.has_use_buff&(variable.sync_ready&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)||!variable.sync_ready&(variable.trinket_2_stronger&(variable.sync_remains>trinket.t2.cooldown.duration%3&fight_remains>trinket.t2.cooldown.duration+20||trinket.t1.has_use_buff&trinket.t1.cooldown.remains>variable.sync_remains-15&trinket.t1.cooldown.remains-5fight_remains)||variable.trinket_1_stronger&(trinket.t1.cooldown.remains&(trinket.t1.cooldown.remains-5=20||trinket.t1.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.t2.cooldown.duration%3||trinket.t2.cooldown.durationfight_remains)))||trinket.t1.cooldown.ready&variable.sync_remains>20&variable.sync_remains20||trinket.t1.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)' to 'trinket.t2.has_use_buff&(variable.sync_ready&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)||!variable.sync_ready&(variable.trinket_2_stronger&(variable.sync_remains>trinket.t2.cooldown.duration/3&fight_remains>trinket.t2.cooldown.duration+20||trinket.t1.has_use_buff&trinket.t1.cooldown.remains>variable.sync_remains-15&trinket.t1.cooldown.remains-5fight_remains)||variable.trinket_1_stronger&(trinket.t1.cooldown.remains&(trinket.t1.cooldown.remains-5=20||trinket.t1.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.t2.cooldown.duration/3||trinket.t2.cooldown.durationfight_remains)))||trinket.t1.cooldown.ready&variable.sync_remains>20&variable.sync_remains20||trinket.t1.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)'.\n\nImported 6 action lists.\n", ["spec"] = 254, ["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/hunter_marksmanship.simc\n## Up to date with SimC: March 28 2025 - 9b7cf47\n\nactions.precombat+=/summon_pet,if=talent.unbreakable_bond\n# Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.\nactions.precombat+=/variable,name=trinket_1_stronger,value=!trinket.2.has_cooldown||trinket.1.has_use_buff&(!trinket.2.has_use_buff||!trinket.1.is.mirror_of_fractured_tomorrows&(trinket.2.is.mirror_of_fractured_tomorrows||trinket.2.cooldown.duration20\nactions.precombat+=/aimed_shot,if=active_enemies=1||active_enemies=2&!talent.volley\nactions.precombat+=/steady_shot\n\nactions+=/counter_shot\nactions+=/tranquilizing_shot\n# Determine if it is a good time to use Trueshot. Raid event optimization takes priority so usage is saved for multiple targets as long as it won't delay over half its duration. Otherwise allow for small delays to line up buff effect trinkets, and when using Bullseye, delay the last usage of the fight for max stacks.\nactions+=/variable,name=trueshot_ready,value=cooldown.trueshot.ready&((!raid_event.adds.exists||raid_event.adds.count=1)&(!talent.bullseye||fight_remains>cooldown.trueshot.duration_guess+buff.trueshot.duration%2||buff.bullseye.stack=buff.bullseye.max_stack)&(!trinket.1.has_use_buff||trinket.1.cooldown.remains>30||trinket.1.cooldown.ready)&(!trinket.2.has_use_buff||trinket.2.cooldown.remains>30||trinket.2.cooldown.ready)||raid_event.adds.exists&(!raid_event.adds.up&(raid_event.adds.duration+raid_event.adds.in<25||raid_event.adds.in>60)||raid_event.adds.up&raid_event.adds.remains>10)||boss&fight_remains<25)\nactions+=/mend_pet,if=pet.health_pct20\nactions+=/call_action_list,name=st,strict=1,if=active_enemies<3||!talent.trick_shots\nactions+=/call_action_list,name=trickshots,strict=1,if=active_enemies>2\n\n## Call for Power Infusion when Trueshot is up.\n## actions.cds+=/invoke_external_buff,name=power_infusion,if=buff.trueshot.remains>12||fight_remains<13\nactions.cds+=/berserking,if=buff.trueshot.up||boss&fight_remains<13\nactions.cds+=/blood_fury,if=buff.trueshot.up||cooldown.trueshot.remains>30||boss&fight_remains<16\nactions.cds+=/ancestral_call,if=buff.trueshot.up||cooldown.trueshot.remains>30||boss&fight_remains<16\nactions.cds+=/fireblood,if=buff.trueshot.up||cooldown.trueshot.remains>30||boss&fight_remains<9\nactions.cds+=/lights_judgment,if=buff.trueshot.down\nactions.cds+=/potion,if=buff.trueshot.up&(buff.bloodlust.up||target.health.pct<20)||boss&fight_remains<31\n\n# Hold Volley for up to its whole cooldown for multiple target situations, also make sure Rapid Fire will be available to stack extra Bullestorm stacks during it without Aspect of the Hydra.\nactions.st+=/volley,if=!talent.double_tap&(talent.aspect_of_the_hydra||active_enemies=1||buff.precise_shots.down&(cooldown.rapid_fire.remains+action.rapid_fire.execute_time<6||!talent.bulletstorm))&(!raid_event.adds.exists||raid_event.adds.in>cooldown||active_enemies>1)\n## [Syrif] - Using lunar_storm_cooldown.down is better for us than lunar_storm_ready.up, prediction-wise\n# Prioritize Rapid Fire to trigger Lunar Storm or to stack extra Bulletstorm when Volley Trick Shots is up without Aspect of the Hydra.\nactions.st+=/rapid_fire,if=hero_tree.sentinel&buff.lunar_storm_cooldown.down||!talent.aspect_of_the_hydra&talent.bulletstorm&active_enemies>1&buff.trick_shots.up&(buff.precise_shots.down||!talent.no_scope)\nactions.st+=/trueshot,if=variable.trueshot_ready\n# Prioritize 4pc double bonus by casting Explosive Shot and following up with Aimed Shot when Lock and Load is up, as long as Precise Shots would not be wasted.\nactions.st+=/explosive_shot,if=talent.precision_detonation&set_bonus.thewarwithin_season_2_4pc&(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&buff.lock_and_load.up\nactions.st+=/aimed_shot,if=talent.precision_detonation&set_bonus.thewarwithin_season_2_4pc&(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&buff.lock_and_load.up\n# For Double Tap, lower Volley in priority until Trueshot has already triggered Double Tap.\nactions.st+=/volley,if=talent.double_tap&buff.double_tap.down\n# Kill Shot/Black Arrow become the primary Precise Shot spenders for Headshot builds. For all Precise Shot spenders, skip to Aimed Shot if both Spotter's Mark and Moving Target are already up.\nactions.st+=/black_arrow,cycle_Targets=1,if=talent.headshot&buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)||!talent.headshot&buff.razor_fragments.up\nactions.st+=/kill_shot,cycle_Targets=1,if=talent.headshot&buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)||!talent.headshot&buff.razor_fragments.up\n# With either Symphonic Arsenal or Small Game Hunter, Multi-Shot can be used as the Precise Shots spender on 2 targets without Aspect of the Hydra.\nactions.st+=/multishot,cycle_Targets=1,if=buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)&active_enemies>1&!talent.aspect_of_the_hydra&(talent.symphonic_arsenal||talent.small_game_hunter)\nactions.st+=/arcane_shot,cycle_Targets=1,if=buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)\n# Prioritize Aimed Shot a bit higher than Rapid Fire if it's close to charge capping and Bulletstorm is up.\nactions.st+=/aimed_shot,cycle_Targets=1,if=(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&full_recharge_timecooldown%3)&(!talent.bulletstorm||buff.bulletstorm.stack<=10||talent.aspect_of_the_hydra&active_enemies>1)\n# Aimed Shot if we've spent Precise Shots to trigger Spotter's Mark and Moving Target. With No Scope this means Precise Shots could be up when Aimed Shot is cast.\nactions.st+=/aimed_shot,cycle_Targets=1,if=buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up\nactions.st+=/explosive_shot,if=!set_bonus.thewarwithin_season_2_4pc||!talent.precision_detonation\nactions.st+=/black_arrow,if=!talent.headshot\n# Steady Shot is our only true filler due to the Aimed Shot cdr.\nactions.st+=/steady_shot\n\nactions.trickshots+=/volley,if=!talent.double_tap\nactions.trickshots+=/trueshot,if=variable.trueshot_ready\n# Swap targets to spend Precise Shots from No Scope after applying Spotter's Mark already to the primary target.\nactions.trickshots+=/multishot,cycle_Targets=1,if=buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)||buff.trick_shots.down\n# For Double Tap, lower Volley in priority until Trueshot has already triggered Double Tap.\nactions.trickshots+=/volley,if=talent.double_tap&buff.double_tap.down\n# Always cast Black Arrow with Trick Shots up for Bleak Powder.\nactions.trickshots+=/black_arrow,if=buff.trick_shots.up\n# Prioritize Aimed Shot a bit higher than Rapid Fire if it's close to charge capping and Bulletstorm is up.\nactions.trickshots+=/aimed_shot,if=(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&buff.trick_shots.up&buff.bulletstorm.up&full_recharge_timecooldown%3||buff.lunar_storm_cooldown.down)\n# With Precision Detonation, wait until a follow up Aimed Shot would not waste Precise Shots to cast. Require Lock and Load active if using the 4pc.\nactions.trickshots+=/explosive_shot,if=talent.precision_detonation&(buff.lock_and_load.up||!set_bonus.thewarwithin_season_2_4pc)&(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)\n# Aimed Shot if we've spent Precise Shots to trigger Spotter's Mark and Moving Target. With No Scope this means Precise Shots could be up when Aimed Shot is cast.\nactions.trickshots+=/aimed_shot,if=(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&buff.trick_shots.up\nactions.trickshots+=/explosive_shot\nactions.trickshots+=/steady_shot,if=focus+cast_regentrinket.1.cooldown.duration%3&fight_remains>trinket.1.cooldown.duration+20||trinket.2.has_use_buff&trinket.2.cooldown.remains>variable.sync_remains-15&trinket.2.cooldown.remains-5fight_remains)||variable.trinket_2_stronger&(trinket.2.cooldown.remains&(trinket.2.cooldown.remains-5=20||trinket.2.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.1.cooldown.duration%3||trinket.1.cooldown.durationfight_remains)))||trinket.2.cooldown.ready&variable.sync_remains>20&variable.sync_remains20||trinket.2.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_1_stronger||trinket.2.cooldown.remains)\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=trinket.2.has_use_buff&(variable.sync_ready&(variable.trinket_2_stronger||trinket.1.cooldown.remains)||!variable.sync_ready&(variable.trinket_2_stronger&(variable.sync_remains>trinket.2.cooldown.duration%3&fight_remains>trinket.2.cooldown.duration+20||trinket.1.has_use_buff&trinket.1.cooldown.remains>variable.sync_remains-15&trinket.1.cooldown.remains-5fight_remains)||variable.trinket_1_stronger&(trinket.1.cooldown.remains&(trinket.1.cooldown.remains-5=20||trinket.1.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.2.cooldown.duration%3||trinket.2.cooldown.durationfight_remains)))||trinket.1.cooldown.ready&variable.sync_remains>20&variable.sync_remains20||trinket.1.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_2_stronger||trinket.1.cooldown.remains)", }, ["Beast Mastery"] = { ["source"] = "# https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20250319, ["author"] = "SimC", ["desc"] = "2025-03-19: SimC Update c8cb5fc\n\n2025-03-14: Add missing change from previous SimC update\n\n2025-03-10: SimC update, add barb shot opener option\n\n2025-02-28: TWW Season 2 update\n\n2025-02-17: Preliminary 11.1 APL\n\n2024-11-03: SimC updates\n\n2024-10-26: SimC updates\n\n2024-10-23: 11.0.5\n\n2024-09-22: SimC update\n\n2024-08-22: SimC update\n\n2024-08-01: Respect Hunter's Mark setting\n\n2024-07-27: Add Call of the Wild talent checks; use Counter Shot; use Hunter's Mark\n\n2024-07-23: The War Within", ["lists"] = { ["default"] = { { ["action"] = "counter_shot", ["enabled"] = true, }, { ["action"] = "tranquilizing_shot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "pet.health_pct < pet_healing", ["action"] = "mend_pet", }, { ["enabled"] = true, ["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20", ["action"] = "hunters_mark", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cds", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "trinkets", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "active_enemies < 2 || ! talent.beast_cleave.enabled & active_enemies < 3", ["list_name"] = "st", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "active_enemies > 2 || talent.beast_cleave.enabled & active_enemies > 1", ["list_name"] = "cleave", }, }, ["precombat"] = { { ["action"] = "summon_pet", ["enabled"] = true, }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "! trinket.t2.has_cooldown || trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff || ! trinket.t1.is.mirror_of_fractured_tomorrows & ( trinket.t2.is.mirror_of_fractured_tomorrows || trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) ) || ! trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) )", ["var_name"] = "trinket_1_stronger", ["description"] = "Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "! variable.trinket_1_stronger", ["var_name"] = "trinket_2_stronger", }, { ["enabled"] = true, ["description"] = "[Syrif] - Lets users choose whether to follow guide behaviour or sim behaviour", ["criteria"] = "settings.barbed_shot_opener", ["action"] = "barbed_shot", }, }, ["cleave"] = { { ["action"] = "bestial_wrath", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.huntmasters_call.enabled & buff.huntmasters_call.stack = 2", ["action"] = "dire_beast", }, { ["enabled"] = true, ["criteria"] = "buff.beast_cleave.remains & buff.withering_fire.up", ["action"] = "black_arrow", }, { ["enabled"] = true, ["criteria"] = "full_recharge_time < gcd.max || charges_fractional >= cooldown.kill_command.charges_fractional || talent.call_of_the_wild.enabled & cooldown.call_of_the_wild.ready || howl_summon.ready & full_recharge_time < 8", ["action"] = "barbed_shot", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.beast_cleave.down & ( ! talent.bloody_frenzy.enabled || cooldown.call_of_the_wild.remains )", ["action"] = "multishot", }, { ["enabled"] = true, ["criteria"] = "buff.beast_cleave.up", ["action"] = "black_arrow", }, { ["action"] = "call_of_the_wild", ["enabled"] = true, }, { ["action"] = "bloodshed", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.shadow_hounds.enabled || talent.dire_cleave.enabled", ["action"] = "dire_beast", }, { ["enabled"] = true, ["criteria"] = "talent.thundering_hooves.enabled", ["action"] = "explosive_shot", }, { ["enabled"] = true, ["action"] = "kill_command", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.call_of_the_wild.up || talent.black_arrow.enabled & ( talent.barbed_scales.enabled || talent.savagery.enabled ) || set_bonus.tww2 >= 2 || boss & fight_remains < 9", ["action"] = "barbed_shot", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5", ["action"] = "lights_judgment", }, { ["enabled"] = true, ["criteria"] = "focus.time_to_max < gcd.max * 2 || buff.hogstrider.stack > 3", ["action"] = "cobra_shot", }, { ["action"] = "dire_beast", ["enabled"] = true, }, { ["action"] = "explosive_shot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5", ["action"] = "bag_of_tricks", }, { ["enabled"] = true, ["criteria"] = "( focus + focus.regen + 30 ) < focus.max", ["action"] = "arcane_torrent", }, }, ["cds"] = { { ["enabled"] = true, ["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 13", ["action"] = "berserking", }, { ["enabled"] = true, ["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 16", ["action"] = "blood_fury", }, { ["enabled"] = true, ["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 16", ["action"] = "ancestral_call", }, { ["enabled"] = true, ["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 9", ["action"] = "fireblood", }, { ["enabled"] = true, ["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & ! talent.bloodshed.enabled & buff.bestial_wrath.up || boss & fight_remains < 31", ["action"] = "potion", }, }, ["st"] = { { ["enabled"] = true, ["criteria"] = "talent.huntmasters_call.enabled", ["action"] = "dire_beast", }, { ["action"] = "bestial_wrath", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.withering_fire.up", ["action"] = "black_arrow", }, { ["enabled"] = true, ["criteria"] = "full_recharge_time < gcd.max || charges_fractional >= cooldown.kill_command.charges_fractional || talent.call_of_the_wild.enabled & cooldown.call_of_the_wild.ready || howl_summon.ready & full_recharge_time < 8", ["action"] = "barbed_shot", ["cycle_targets"] = 1, }, { ["action"] = "call_of_the_wild", ["enabled"] = true, }, { ["action"] = "bloodshed", ["enabled"] = true, }, { ["action"] = "kill_command", ["enabled"] = true, }, { ["action"] = "black_arrow", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.thundering_hooves.enabled", ["action"] = "explosive_shot", }, { ["enabled"] = true, ["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5", ["action"] = "lights_judgment", }, { ["action"] = "cobra_shot", ["enabled"] = true, }, { ["action"] = "dire_beast", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5", ["action"] = "bag_of_tricks", }, { ["enabled"] = true, ["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5", ["action"] = "arcane_pulse", }, { ["enabled"] = true, ["criteria"] = "( focus + focus.regen + 15 ) < focus.max", ["action"] = "arcane_torrent", }, }, ["trinkets"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "talent.call_of_the_wild.enabled & ( prev_gcd.1.call_of_the_wild ) || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ( ! talent.call_of_the_wild.enabled & ! talent.bloodshed.enabled ) & ( buff.bestial_wrath.up || cooldown.bestial_wrath.remains_guess < 5 )", ["var_name"] = "sync_ready", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "talent.call_of_the_wild.enabled & buff.call_of_the_wild.up || talent.bloodshed.enabled & prev_gcd.1.bloodshed || ( ! talent.call_of_the_wild.enabled & ! talent.bloodshed.enabled ) & buff.bestial_wrath.up", ["var_name"] = "sync_active", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "sync_remains", ["value"] = "cooldown.bestial_wrath.remains_guess", ["value_else"] = "cooldown.call_of_the_wild.remains || cooldown.bloodshed.remains", ["criteria"] = "! talent.call_of_the_wild.enabled & ! talent.bloodshed.enabled", }, { ["enabled"] = true, ["action"] = "trinket1", ["slot"] = "trinket1", ["use_off_gcd"] = 1, ["criteria"] = "trinket.t1.has_use_buff & ( variable.sync_ready & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) || ! variable.sync_ready & ( variable.trinket_1_stronger & ( variable.sync_remains > trinket.t1.cooldown.duration / 3 & boss & fight_remains > trinket.t1.cooldown.duration + 20 || trinket.t2.has_use_buff & trinket.t2.cooldown.remains > variable.sync_remains - 15 & trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 45 > fight_remains & boss ) || variable.trinket_2_stronger & ( trinket.t2.cooldown.remains & ( trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains >= 20 || trinket.t2.cooldown.remains - 5 >= variable.sync_remains & ( variable.sync_remains > trinket.t1.cooldown.duration / 3 || trinket.t1.cooldown.duration < fight_remains & boss & ( variable.sync_remains + trinket.t1.cooldown.duration > fight_remains ) ) ) || trinket.t2.cooldown.ready & variable.sync_remains > 20 & variable.sync_remains < trinket.t2.cooldown.duration / 3 ) ) ) || ! trinket.t1.has_use_buff & ( trinket.t1.cast_time = 0 || ! variable.sync_active ) & ( ! trinket.t2.has_use_buff & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) || trinket.t2.has_use_buff & ( ! variable.sync_active & variable.sync_remains > 20 || trinket.t2.cooldown.remains > 20 ) ) || boss & fight_remains < 25 & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains )", }, { ["enabled"] = true, ["action"] = "trinket2", ["slot"] = "trinket2", ["use_off_gcd"] = 1, ["criteria"] = "trinket.t2.has_use_buff & ( variable.sync_ready & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) || ! variable.sync_ready & ( variable.trinket_2_stronger & ( variable.sync_remains > trinket.t2.cooldown.duration / 3 & boss & fight_remains > trinket.t2.cooldown.duration + 20 || trinket.t1.has_use_buff & trinket.t1.cooldown.remains > variable.sync_remains - 15 & trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 45 > fight_remains & boss ) || variable.trinket_1_stronger & ( trinket.t1.cooldown.remains & ( trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains >= 20 || trinket.t1.cooldown.remains - 5 >= variable.sync_remains & ( variable.sync_remains > trinket.t2.cooldown.duration / 3 || trinket.t2.cooldown.duration < fight_remains & boss & ( variable.sync_remains + trinket.t2.cooldown.duration > fight_remains ) ) ) || trinket.t1.cooldown.ready & variable.sync_remains > 20 & variable.sync_remains < trinket.t1.cooldown.duration / 3 ) ) ) || ! trinket.t2.has_use_buff & ( trinket.t2.cast_time = 0 || ! variable.sync_active ) & ( ! trinket.t1.has_use_buff & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) || trinket.t1.has_use_buff & ( ! variable.sync_active & variable.sync_remains > 20 || trinket.t1.cooldown.remains > 20 ) ) || boss & fight_remains < 25 & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains )", }, }, }, ["version"] = 20250319, ["warnings"] = "The import for 'default' required some automated changes.\nLine 7: Converted 'talent.beast_cleave' to 'talent.beast_cleave.enabled' (1x).\nLine 8: Converted 'talent.beast_cleave' to 'talent.beast_cleave.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\n\nThe import for 'trinkets' required some automated changes.\nLine 1: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 1: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 1: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 1: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 2: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 2: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 2: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 2: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 3: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 3: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted operations in 'trinket.t1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.t1.cooldown.duration%3&boss&fight_remains>trinket.t1.cooldown.duration+20||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-5fight_remains&boss)||variable.trinket_2_stronger&(trinket.t2.cooldown.remains&(trinket.t2.cooldown.remains-5=20||trinket.t2.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.t1.cooldown.duration%3||trinket.t1.cooldown.durationfight_remains)))||trinket.t2.cooldown.ready&variable.sync_remains>20&variable.sync_remains20||trinket.t2.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)' to 'trinket.t1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.t1.cooldown.duration/3&boss&fight_remains>trinket.t1.cooldown.duration+20||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-5fight_remains&boss)||variable.trinket_2_stronger&(trinket.t2.cooldown.remains&(trinket.t2.cooldown.remains-5=20||trinket.t2.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.t1.cooldown.duration/3||trinket.t1.cooldown.durationfight_remains)))||trinket.t2.cooldown.ready&variable.sync_remains>20&variable.sync_remains20||trinket.t2.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)'.\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 5: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted operations in 'trinket.t2.has_use_buff&(variable.sync_ready&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)||!variable.sync_ready&(variable.trinket_2_stronger&(variable.sync_remains>trinket.t2.cooldown.duration%3&boss&fight_remains>trinket.t2.cooldown.duration+20||trinket.t1.has_use_buff&trinket.t1.cooldown.remains>variable.sync_remains-15&trinket.t1.cooldown.remains-5fight_remains&boss)||variable.trinket_1_stronger&(trinket.t1.cooldown.remains&(trinket.t1.cooldown.remains-5=20||trinket.t1.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.t2.cooldown.duration%3||trinket.t2.cooldown.durationfight_remains)))||trinket.t1.cooldown.ready&variable.sync_remains>20&variable.sync_remains20||trinket.t1.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)' to 'trinket.t2.has_use_buff&(variable.sync_ready&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)||!variable.sync_ready&(variable.trinket_2_stronger&(variable.sync_remains>trinket.t2.cooldown.duration/3&boss&fight_remains>trinket.t2.cooldown.duration+20||trinket.t1.has_use_buff&trinket.t1.cooldown.remains>variable.sync_remains-15&trinket.t1.cooldown.remains-5fight_remains&boss)||variable.trinket_1_stronger&(trinket.t1.cooldown.remains&(trinket.t1.cooldown.remains-5=20||trinket.t1.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.t2.cooldown.duration/3||trinket.t2.cooldown.durationfight_remains)))||trinket.t1.cooldown.ready&variable.sync_remains>20&variable.sync_remains20||trinket.t1.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)'.\n\nThe import for 'cds' required some automated changes.\nLine 1: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 1: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 2: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 2: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 3: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 3: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 4: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 4: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 5: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 5: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 5: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 1: Converted 'talent.huntmasters_call' to 'talent.huntmasters_call.enabled' (1x).\nLine 4: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 9: Converted 'talent.thundering_hooves' to 'talent.thundering_hooves.enabled' (1x).\n\nThe import for 'cleave' required some automated changes.\nLine 2: Converted 'talent.huntmasters_call' to 'talent.huntmasters_call.enabled' (1x).\nLine 4: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 5: Converted 'talent.bloody_frenzy' to 'talent.bloody_frenzy.enabled' (1x).\nLine 9: Converted 'talent.shadow_hounds' to 'talent.shadow_hounds.enabled' (1x).\nLine 9: Converted 'talent.dire_cleave' to 'talent.dire_cleave.enabled' (1x).\nLine 10: Converted 'talent.thundering_hooves' to 'talent.thundering_hooves.enabled' (1x).\nLine 12: Converted 'talent.black_arrow' to 'talent.black_arrow.enabled' (1x).\nLine 12: Converted 'talent.barbed_scales' to 'talent.barbed_scales.enabled' (1x).\nLine 12: Converted 'talent.savagery' to 'talent.savagery.enabled' (1x).\n\nImported 6 action lists.\n", ["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/hunter_beast_mastery.simc\n## Up to date with SimC: March 18 2025 - c8cb5fc\n\nactions.precombat+=/summon_pet\n# Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.\nactions.precombat+=/variable,name=trinket_1_stronger,value=!trinket.2.has_cooldown||trinket.1.has_use_buff&(!trinket.2.has_use_buff||!trinket.1.is.mirror_of_fractured_tomorrows&(trinket.2.is.mirror_of_fractured_tomorrows||trinket.2.cooldown.duration20\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=trinkets\nactions+=/call_action_list,name=st,if=active_enemies<2||!talent.beast_cleave&active_enemies<3\nactions+=/call_action_list,name=cleave,if=active_enemies>2||talent.beast_cleave&active_enemies>1\n\n## actions.cds+=/invoke_external_buff,name=power_infusion,if=buff.call_of_the_wild.up||talent.bloodshed&(prev_gcd.1.bloodshed)||!talent.call_of_the_wild&(buff.bestial_wrath.up||cooldown.bestial_wrath.remains<30)||fight_remains<16\nactions.cds+=/berserking,if=buff.call_of_the_wild.up||talent.bloodshed&(prev_gcd.1.bloodshed)||!talent.call_of_the_wild&buff.bestial_wrath.up||boss&fight_remains<13\nactions.cds+=/blood_fury,if=buff.call_of_the_wild.up||talent.bloodshed&(prev_gcd.1.bloodshed)||!talent.call_of_the_wild&buff.bestial_wrath.up||boss&fight_remains<16\nactions.cds+=/ancestral_call,if=buff.call_of_the_wild.up||talent.bloodshed&(prev_gcd.1.bloodshed)||!talent.call_of_the_wild&buff.bestial_wrath.up||boss&fight_remains<16\nactions.cds+=/fireblood,if=buff.call_of_the_wild.up||talent.bloodshed&(prev_gcd.1.bloodshed)||!talent.call_of_the_wild&buff.bestial_wrath.up||boss&fight_remains<9\nactions.cds+=/potion,if=buff.call_of_the_wild.up||talent.bloodshed&(prev_gcd.1.bloodshed)||!talent.call_of_the_wild&!talent.bloodshed&buff.bestial_wrath.up||boss&fight_remains<31\n\nactions.cleave+=/bestial_wrath\nactions.cleave+=/dire_beast,if=talent.huntmasters_call&buff.huntmasters_call.stack=2\nactions.cleave+=/black_arrow,if=buff.beast_cleave.remains&buff.withering_fire.up\nactions.cleave+=/barbed_shot,cycle_targets=1,if=full_recharge_time=cooldown.kill_command.charges_fractional||talent.call_of_the_wild&cooldown.call_of_the_wild.ready||howl_summon.ready&full_recharge_time<8\nactions.cleave+=/multishot,if=buff.beast_cleave.down&(!talent.bloody_frenzy||cooldown.call_of_the_wild.remains)\nactions.cleave+=/black_arrow,if=buff.beast_cleave.up\nactions.cleave+=/call_of_the_wild\nactions.cleave+=/bloodshed\nactions.cleave+=/dire_beast,if=talent.shadow_hounds||talent.dire_cleave\nactions.cleave+=/explosive_shot,if=talent.thundering_hooves\nactions.cleave+=/kill_command,cycle_targets=1\nactions.cleave+=/barbed_shot,cycle_targets=1,if=buff.call_of_the_wild.up||talent.black_arrow&(talent.barbed_scales||talent.savagery)||set_bonus.tww2>=2||boss&fight_remains<9\nactions.cleave+=/lights_judgment,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.cleave+=/cobra_shot,if=focus.time_to_max3\nactions.cleave+=/dire_beast\nactions.cleave+=/explosive_shot\nactions.cleave+=/bag_of_tricks,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.cleave+=/arcane_torrent,if=(focus+focus.regen+30)=cooldown.kill_command.charges_fractional||talent.call_of_the_wild&cooldown.call_of_the_wild.ready||howl_summon.ready&full_recharge_time<8\nactions.st+=/call_of_the_wild\nactions.st+=/bloodshed\nactions.st+=/kill_command\nactions.st+=/black_arrow\nactions.st+=/explosive_shot,if=talent.thundering_hooves\nactions.st+=/lights_judgment,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/cobra_shot\nactions.st+=/dire_beast\nactions.st+=/bag_of_tricks,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/arcane_pulse,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/arcane_torrent,if=(focus+focus.regen+15)trinket.1.cooldown.duration%3&boss&fight_remains>trinket.1.cooldown.duration+20||trinket.2.has_use_buff&trinket.2.cooldown.remains>variable.sync_remains-15&trinket.2.cooldown.remains-5fight_remains&boss)||variable.trinket_2_stronger&(trinket.2.cooldown.remains&(trinket.2.cooldown.remains-5=20||trinket.2.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.1.cooldown.duration%3||trinket.1.cooldown.durationfight_remains)))||trinket.2.cooldown.ready&variable.sync_remains>20&variable.sync_remains20||trinket.2.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_1_stronger||trinket.2.cooldown.remains)\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=trinket.2.has_use_buff&(variable.sync_ready&(variable.trinket_2_stronger||trinket.1.cooldown.remains)||!variable.sync_ready&(variable.trinket_2_stronger&(variable.sync_remains>trinket.2.cooldown.duration%3&boss&fight_remains>trinket.2.cooldown.duration+20||trinket.1.has_use_buff&trinket.1.cooldown.remains>variable.sync_remains-15&trinket.1.cooldown.remains-5fight_remains&boss)||variable.trinket_1_stronger&(trinket.1.cooldown.remains&(trinket.1.cooldown.remains-5=20||trinket.1.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.2.cooldown.duration%3||trinket.2.cooldown.durationfight_remains)))||trinket.1.cooldown.ready&variable.sync_remains>20&variable.sync_remains20||trinket.1.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_2_stronger||trinket.1.cooldown.remains)", ["spec"] = 253, }, ["Survival"] = { ["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/hunter_survival.simc", ["builtIn"] = true, ["date"] = 20250505, ["author"] = "SimC", ["desc"] = "2025-05-05: SimC Update\n2025-04-13: Support pet revive, captions, calling specific pets.\n2025-04-06: SimC Update + boar_charge\n2025-03-21: Simc Update (howl_summon_ready --> howl_summon.ready)\n2025-03-10: SimC Update (howl_summon_ready)\n2025-02-28: TWW Season 2 update\n2025-02-17: Preliminary 11.1 APL\n2024-09-22, 10-21: SimC update\n2024-08-24, 09-08: SimC priority update\n2024-08-12: Fix Kill Command usage in AOE with maxed Focus\n2024-08-01: Respect Hunter's Mark setting\n2024-07-27: Minor sim update; use Hunter's Mark\n2024-07-23: The War Within", ["lists"] = { ["sentst"] = { { ["enabled"] = true, ["criteria"] = "! buff.lunar_storm_cooldown.remains", ["action"] = "wildfire_bomb", }, { ["enabled"] = true, ["criteria"] = "( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 )", ["action"] = "kill_command", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "cooldown.coordinated_assault.remains", ["action"] = "spearhead", }, { ["enabled"] = true, ["criteria"] = "buff.tip_of_the_spear.stack > 0", ["action"] = "flanking_strike", }, { ["enabled"] = true, ["criteria"] = "buff.strike_it_rich.remains & buff.tip_of_the_spear.stack < 1", ["action"] = "kill_command", }, { ["enabled"] = true, ["criteria"] = "buff.strike_it_rich.remains & buff.coordinated_assault.up", ["action"] = "mongoose_bite", }, { ["enabled"] = true, ["criteria"] = "( buff.lunar_storm_cooldown.remains > full_recharge_time - gcd.max ) & ( buff.tip_of_the_spear.stack > 0 & cooldown.wildfire_bomb.charges_fractional > 1.7 || cooldown.wildfire_bomb.charges_fractional > 1.9 ) || ( talent.bombardier.enabled & cooldown.coordinated_assault.remains < 2 * gcd.max )", ["action"] = "wildfire_bomb", }, { ["action"] = "butchery", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! talent.bombardier.enabled || talent.bombardier.enabled & cooldown.wildfire_bomb.charges_fractional < 1", ["action"] = "coordinated_assault", }, { ["enabled"] = true, ["criteria"] = "buff.tip_of_the_spear.stack > 0", ["action"] = "fury_of_the_eagle", }, { ["enabled"] = true, ["criteria"] = "buff.tip_of_the_spear.stack < 1 & cooldown.flanking_strike.remains < gcd.max", ["action"] = "kill_command", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max & ( ! buff.relentless_primal_ferocity.up || ( buff.relentless_primal_ferocity.up & ( buff.tip_of_the_spear.stack < 2 || focus < 30 ) ) )", ["action"] = "kill_command", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.mongoose_fury.remains < gcd.max & buff.mongoose_fury.stack > 0", ["action"] = "mongoose_bite", }, { ["enabled"] = true, ["criteria"] = "buff.tip_of_the_spear.stack > 0 & buff.lunar_storm_cooldown.remains > full_recharge_time & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.in > 15 )", ["action"] = "wildfire_bomb", }, { ["enabled"] = true, ["criteria"] = "buff.mongoose_fury.remains", ["action"] = "mongoose_bite", }, { ["action"] = "explosive_shot", ["enabled"] = true, }, { ["action"] = "kill_shot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! talent.contagious_reagents.enabled", ["action"] = "raptor_bite", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "raptor_bite", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["description"] = "SENTINEL || DEFAULT SINGLE TARGET ACTIONLIST.", ["criteria"] = "! buff.lunar_storm_cooldown.remains", ["action"] = "wildfire_bomb", }, { ["enabled"] = true, ["criteria"] = "( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 )", ["action"] = "kill_command", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "cooldown.coordinated_assault.remains", ["action"] = "spearhead", }, { ["enabled"] = true, ["criteria"] = "buff.tip_of_the_spear.stack > 0", ["action"] = "flanking_strike", }, { ["enabled"] = true, ["criteria"] = "buff.strike_it_rich.remains & buff.tip_of_the_spear.stack < 1", ["action"] = "kill_command", }, { ["enabled"] = true, ["criteria"] = "buff.strike_it_rich.remains & buff.coordinated_assault.up", ["action"] = "mongoose_bite", }, { ["enabled"] = true, ["criteria"] = "( buff.lunar_storm_cooldown.remains > full_recharge_time - gcd.max ) & ( buff.tip_of_the_spear.stack > 0 & cooldown.wildfire_bomb.charges_fractional > 1.7 || cooldown.wildfire_bomb.charges_fractional > 1.9 ) || ( talent.bombardier.enabled & cooldown.coordinated_assault.remains < 2 * gcd.max )", ["action"] = "wildfire_bomb", }, { ["action"] = "butchery", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! talent.bombardier.enabled || talent.bombardier.enabled & cooldown.wildfire_bomb.charges_fractional < 1", ["action"] = "coordinated_assault", }, { ["enabled"] = true, ["criteria"] = "buff.tip_of_the_spear.stack > 0", ["action"] = "fury_of_the_eagle", }, { ["enabled"] = true, ["criteria"] = "buff.tip_of_the_spear.stack < 1 & cooldown.flanking_strike.remains < gcd.max", ["action"] = "kill_command", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max & ( ! buff.relentless_primal_ferocity.up || ( buff.relentless_primal_ferocity.up & ( buff.tip_of_the_spear.stack < 2 || focus < 30 ) ) )", ["action"] = "kill_command", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.mongoose_fury.remains < gcd.max & buff.mongoose_fury.stack > 0", ["action"] = "mongoose_bite", }, { ["enabled"] = true, ["criteria"] = "buff.tip_of_the_spear.stack > 0 & buff.lunar_storm_cooldown.remains > full_recharge_time & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.in > 15 )", ["action"] = "wildfire_bomb", }, { ["enabled"] = true, ["criteria"] = "buff.mongoose_fury.remains", ["action"] = "mongoose_bite", }, { ["action"] = "explosive_shot", ["enabled"] = true, }, { ["action"] = "kill_shot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! talent.contagious_reagents.enabled", ["action"] = "raptor_bite", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "raptor_bite", ["cycle_targets"] = 1, }, }, ["default"] = { { ["action"] = "muzzle", ["enabled"] = true, }, { ["action"] = "tranquilizing_shot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20", ["action"] = "hunters_mark", }, { ["enabled"] = true, ["criteria"] = "pet.health_pct < pet_healing", ["action"] = "mend_pet", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cds", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "active_enemies < 3 & talent.howl_of_the_pack_leader.enabled", ["list_name"] = "plst", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "active_enemies > 2 & talent.howl_of_the_pack_leader.enabled", ["list_name"] = "plcleave", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "active_enemies < 3 & ! talent.howl_of_the_pack_leader.enabled", ["list_name"] = "sentst", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "active_enemies > 2 & ! talent.howl_of_the_pack_leader.enabled", ["list_name"] = "sentcleave", }, { ["enabled"] = true, ["description"] = "Use Kill Command if there's nothing else to press", ["action"] = "kill_command", ["cycle_targets"] = 1, }, { ["action"] = "arcane_torrent", ["enabled"] = true, }, { ["action"] = "bag_of_tricks", ["enabled"] = true, }, { ["action"] = "lights_judgment", ["enabled"] = true, }, }, ["precombat"] = { { ["action"] = "summon_pet", ["enabled"] = true, }, { ["enabled"] = true, ["name"] = "imperfect_ascendancy_serum", ["action"] = "imperfect_ascendancy_serum", }, { ["enabled"] = true, ["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20", ["action"] = "hunters_mark", }, { ["enabled"] = true, ["name"] = "algethar_puzzle_box", ["action"] = "algethar_puzzle_box", }, }, ["plcleave"] = { { ["enabled"] = true, ["criteria"] = "cooldown.coordinated_assault.remains", ["action"] = "spearhead", }, { ["enabled"] = true, ["criteria"] = "buff.strike_it_rich.up & buff.strike_it_rich.remains < gcd.max || buff.hogstrider.remains & boar_charge.remains > 0 || buff.hogstrider.remains < gcd.max & buff.hogstrider.up || buff.hogstrider.remains & buff.strike_it_rich.remains", ["action"] = "raptor_bite", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1", ["action"] = "kill_command", ["cycle_targets"] = 1, }, { ["action"] = "wildfire_bomb", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( buff.howl_of_the_pack_leader_wyvern.remains || buff.howl_of_the_pack_leader_boar.remains || buff.howl_of_the_pack_leader_bear.remains )", ["action"] = "kill_command", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.tip_of_the_spear.stack = 2 || buff.tip_of_the_spear.stack = 1", ["action"] = "flanking_strike", }, { ["action"] = "butchery", ["enabled"] = true, }, { ["action"] = "coordinated_assault", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.tip_of_the_spear.stack > 0", ["action"] = "fury_of_the_eagle", }, { ["action"] = "explosive_shot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max || charges_fractional > 1.5", ["action"] = "kill_command", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.deathblow.remains & talent.sic_em.enabled", ["action"] = "kill_shot", }, { ["enabled"] = true, ["action"] = "raptor_bite", ["cycle_targets"] = 1, }, }, ["cds"] = { { ["enabled"] = true, ["description"] = "COOLDOWNS ACTIONLIST", ["criteria"] = "settings.use_harpoon & prev.kill_command", ["action"] = "harpoon", }, { ["enabled"] = true, ["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled", ["action"] = "blood_fury", }, { ["enabled"] = true, ["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled", ["action"] = "ancestral_call", }, { ["enabled"] = true, ["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled", ["action"] = "fireblood", }, { ["enabled"] = true, ["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled || time_to_die < 13", ["action"] = "berserking", }, { ["enabled"] = true, ["criteria"] = "boss & fight_remains < 25 || buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled", ["action"] = "potion", }, { ["enabled"] = true, ["action"] = "imperfect_ascendancy_serum", ["use_off_gcd"] = 1, ["criteria"] = "gcd.remains > gcd.max - 0.1", ["name"] = "imperfect_ascendancy_serum", }, { ["enabled"] = true, ["criteria"] = "cooldown.coordinated_assault.remains || cooldown.spearhead.remains", ["action"] = "use_items", }, { ["enabled"] = true, ["criteria"] = "target.distance >= 6", ["action"] = "aspect_of_the_eagle", }, }, ["plst"] = { { ["enabled"] = true, ["action"] = "kill_command", ["cycle_targets"] = 1, ["description"] = "PACK LEADER || SINGLE TARGET ACTIONLIST.", ["criteria"] = "( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 ) || ( buff.howl_of_the_pack_leader_wyvern.remains || buff.howl_of_the_pack_leader_boar.remains || buff.howl_of_the_pack_leader_bear.remains )", }, { ["enabled"] = true, ["criteria"] = "cooldown.coordinated_assault.remains & cooldown.coordinated_assault.remains < gcd.max", ["action"] = "explosive_shot", }, { ["enabled"] = true, ["criteria"] = "cooldown.coordinated_assault.remains", ["action"] = "spearhead", }, { ["enabled"] = true, ["criteria"] = "buff.tip_of_the_spear.stack > 0", ["action"] = "flanking_strike", }, { ["enabled"] = true, ["criteria"] = "! dot.serpent_sting.ticking & target.time_to_die > 12 & ( ! talent.contagious_reagents.enabled || active_dot.serpent_sting = 0 )", ["action"] = "raptor_bite", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "talent.contagious_reagents.enabled & active_dot.serpent_sting < active_enemies & dot.serpent_sting.remains", ["action"] = "raptor_bite", ["cycle_targets"] = 1, }, { ["action"] = "butchery", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.strike_it_rich.remains & buff.tip_of_the_spear.stack < 1", ["action"] = "kill_command", }, { ["enabled"] = true, ["criteria"] = "buff.strike_it_rich.remains & buff.tip_of_the_spear.stack > 0", ["action"] = "raptor_bite", }, { ["enabled"] = true, ["criteria"] = "buff.tip_of_the_spear.stack > 0 & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.in > 40 )", ["action"] = "fury_of_the_eagle", }, { ["action"] = "coordinated_assault", ["enabled"] = true, }, { ["action"] = "wildfire_bomb", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max & ( ! buff.relentless_primal_ferocity.up || ( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 || focus < 30 ) )", ["action"] = "kill_command", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "active_enemies = 2", ["action"] = "explosive_shot", }, { ["enabled"] = true, ["criteria"] = "! talent.contagious_reagents.enabled", ["action"] = "raptor_bite", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "raptor_bite", ["cycle_targets"] = 1, }, { ["action"] = "kill_shot", ["enabled"] = true, }, { ["action"] = "explosive_shot", ["enabled"] = true, }, }, ["sentcleave"] = { { ["enabled"] = true, ["description"] = "SENTINEL || DEFAULT AOE ACTIONLIST", ["criteria"] = "! buff.lunar_storm_cooldown.remains", ["action"] = "wildfire_bomb", }, { ["enabled"] = true, ["criteria"] = "buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1", ["action"] = "kill_command", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.tip_of_the_spear.stack > 0 & cooldown.wildfire_bomb.charges_fractional > 1.7 || cooldown.wildfire_bomb.charges_fractional > 1.9 || ( talent.bombardier.enabled & cooldown.coordinated_assault.remains < 2 * gcd.max ) || talent.butchery.enabled & cooldown.butchery.remains < gcd.max", ["action"] = "wildfire_bomb", }, { ["enabled"] = true, ["criteria"] = "buff.strike_it_rich.up & buff.strike_it_rich.remains < gcd.max", ["action"] = "raptor_bite", ["cycle_targets"] = 1, }, { ["action"] = "butchery", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! talent.bombardier.enabled || talent.bombardier.enabled & cooldown.wildfire_bomb.charges_fractional < 1", ["action"] = "coordinated_assault", }, { ["enabled"] = true, ["criteria"] = "buff.tip_of_the_spear.stack > 0", ["action"] = "fury_of_the_eagle", }, { ["enabled"] = true, ["criteria"] = "( buff.tip_of_the_spear.stack = 2 || buff.tip_of_the_spear.stack = 1 )", ["action"] = "flanking_strike", }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max", ["action"] = "kill_command", ["cycle_targets"] = 1, }, { ["action"] = "explosive_shot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.tip_of_the_spear.stack > 0", ["action"] = "wildfire_bomb", }, { ["enabled"] = true, ["criteria"] = "buff.deathblow.remains & talent.sic_em.enabled", ["action"] = "kill_shot", }, { ["enabled"] = true, ["criteria"] = "! talent.contagious_reagents.enabled", ["action"] = "raptor_bite", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "raptor_bite", ["cycle_targets"] = 1, }, }, }, ["version"] = 20250505, ["warnings"] = "Imported 7 action lists.\n", ["spec"] = 255, ["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/hunter_survival.simc\n## Up to date with SimC: April 26 2025 - 739316d\n\nactions.precombat+=/summon_pet\nactions.precombat+=/use_item,name=imperfect_ascendancy_serum\nactions.precombat+=/hunters_mark,if=(settings.mark_any||target.is_boss)&active_dot.hunters_mark=0&target.time_to_pct_80>20\nactions.precombat+=/use_item,name=algethar_puzzle_box\n\nactions+=/muzzle\nactions+=/tranquilizing_shot\nactions+=/hunters_mark,if=(settings.mark_any||target.is_boss)&active_dot.hunters_mark=0&target.time_to_pct_80>20\nactions+=/mend_pet,if=pet.health_pct2&talent.howl_of_the_pack_leader\nactions+=/call_action_list,name=sentst,strict=1,if=active_enemies<3&!talent.howl_of_the_pack_leader\nactions+=/call_action_list,name=sentcleave,strict=1,if=active_enemies>2&!talent.howl_of_the_pack_leader\n# Use Kill Command if there's nothing else to press\nactions+=/kill_command,cycle_targets=1\nactions+=/arcane_torrent\nactions+=/bag_of_tricks\nactions+=/lights_judgment\n\n# COOLDOWNS ACTIONLIST\nactions.cds+=/harpoon,if=settings.use_harpoon&prev.kill_command\nactions.cds+=/blood_fury,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\n## actions.cds+=/invoke_external_buff,name=power_infusion,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/ancestral_call,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/fireblood,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/berserking,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault||time_to_die<13\nactions.cds+=/potion,if=boss&fight_remains<25||buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/use_item,name=imperfect_ascendancy_serum,use_off_gcd=1,if=gcd.remains>gcd.max-0.1\nactions.cds+=/use_items,if=cooldown.coordinated_assault.remains||cooldown.spearhead.remains\nactions.cds+=/aspect_of_the_eagle,if=target.distance>=6\n\n#PACK LEADER || AOE ACTIONLIST\nactions.plcleave+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.plcleave+=/raptor_bite,cycle_targets=1,if=buff.strike_it_rich.up&buff.strike_it_rich.remains0||buff.hogstrider.remains0\nactions.plcleave+=/explosive_shot\nactions.plcleave+=/kill_command,cycle_targets=1,if=focus+cast_regen1.5\nactions.plcleave+=/kill_shot,if=buff.deathblow.remains&talent.sic_em\nactions.plcleave+=/raptor_bite,cycle_targets=1\n\n# PACK LEADER || SINGLE TARGET ACTIONLIST.\nactions.plst+=/kill_command,cycle_targets=1,if=(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1)||(buff.howl_of_the_pack_leader_wyvern.remains||buff.howl_of_the_pack_leader_boar.remains||buff.howl_of_the_pack_leader_bear.remains)\nactions.plst+=/explosive_shot,if=cooldown.coordinated_assault.remains&cooldown.coordinated_assault.remains0\nactions.plst+=/raptor_bite,cycle_targets=1,if=!dot.serpent_sting.ticking&target.time_to_die>12&(!talent.contagious_reagents||active_dot.serpent_sting=0)\nactions.plst+=/raptor_bite,cycle_targets=1,if=talent.contagious_reagents&active_dot.serpent_sting0\nactions.plst+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.in>40)\nactions.plst+=/coordinated_assault\nactions.plst+=/wildfire_bomb\nactions.plst+=/kill_command,cycle_targets=1,if=focus+cast_regen0&cooldown.wildfire_bomb.charges_fractional>1.7||cooldown.wildfire_bomb.charges_fractional>1.9||(talent.bombardier&cooldown.coordinated_assault.remains<2*gcd)||talent.butchery&cooldown.butchery.remains0\nactions.sentcleave+=/flanking_strike,if=(buff.tip_of_the_spear.stack=2||buff.tip_of_the_spear.stack=1)\nactions.sentcleave+=/kill_command,cycle_targets=1,if=focus+cast_regen0\nactions.sentcleave+=/kill_shot,if=buff.deathblow.remains&talent.sic_em\nactions.sentcleave+=/raptor_bite,cycle_targets=1,if=!talent.contagious_reagents\nactions.sentcleave+=/raptor_bite,cycle_targets=1\n\n#SENTINEL || DEFAULT SINGLE TARGET ACTIONLIST.\nactions.sentst=wildfire_bomb,if=!buff.lunar_storm_cooldown.remains\nactions.sentst+=/kill_command,cycle_targets=1,if=(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1)\nactions.sentst+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.sentst+=/flanking_strike,if=buff.tip_of_the_spear.stack>0\nactions.sentst+=/kill_command,if=buff.strike_it_rich.remains&buff.tip_of_the_spear.stack<1\nactions.sentst+=/mongoose_bite,if=buff.strike_it_rich.remains&buff.coordinated_assault.up\nactions.sentst+=/wildfire_bomb,if=(buff.lunar_storm_cooldown.remains>full_recharge_time-gcd)&(buff.tip_of_the_spear.stack>0&cooldown.wildfire_bomb.charges_fractional>1.7||cooldown.wildfire_bomb.charges_fractional>1.9)||(talent.bombardier&cooldown.coordinated_assault.remains<2*gcd)\nactions.sentst+=/butchery\nactions.sentst+=/coordinated_assault,if=!talent.bombardier||talent.bombardier&cooldown.wildfire_bomb.charges_fractional<1\nactions.sentst+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0\nactions.sentst+=/kill_command,cycle_targets=1,if=buff.tip_of_the_spear.stack<1&cooldown.flanking_strike.remains0\nactions.sentst+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0&buff.lunar_storm_cooldown.remains>full_recharge_time&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.in>15)\nactions.sentst+=/mongoose_bite,if=buff.mongoose_fury.remains\nactions.sentst+=/explosive_shot\nactions.sentst+=/kill_shot\nactions.sentst+=/raptor_bite,cycle_targets=1,if=!talent.contagious_reagents\nactions.sentst+=/raptor_bite,cycle_targets=1\n\n# SENTINEL || DEFAULT SINGLE TARGET ACTIONLIST.\nactions.sentst+=/wildfire_bomb,if=!buff.lunar_storm_cooldown.remains\nactions.sentst+=/kill_command,cycle_targets=1,if=(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1)\nactions.sentst+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.sentst+=/flanking_strike,if=buff.tip_of_the_spear.stack>0\nactions.sentst+=/kill_command,if=buff.strike_it_rich.remains&buff.tip_of_the_spear.stack<1\nactions.sentst+=/mongoose_bite,if=buff.strike_it_rich.remains&buff.coordinated_assault.up\nactions.sentst+=/wildfire_bomb,if=(buff.lunar_storm_cooldown.remains>full_recharge_time-gcd)&(buff.tip_of_the_spear.stack>0&cooldown.wildfire_bomb.charges_fractional>1.7||cooldown.wildfire_bomb.charges_fractional>1.9)||(talent.bombardier&cooldown.coordinated_assault.remains<2*gcd)\nactions.sentst+=/butchery\nactions.sentst+=/coordinated_assault,if=!talent.bombardier||talent.bombardier&cooldown.wildfire_bomb.charges_fractional<1\nactions.sentst+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0\nactions.sentst+=/kill_command,cycle_targets=1,if=buff.tip_of_the_spear.stack<1&cooldown.flanking_strike.remains0\nactions.sentst+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0&buff.lunar_storm_cooldown.remains>full_recharge_time&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.in>15)\nactions.sentst+=/mongoose_bite,if=buff.mongoose_fury.remains\nactions.sentst+=/explosive_shot\nactions.sentst+=/kill_shot\nactions.sentst+=/raptor_bite,cycle_targets=1,if=!talent.contagious_reagents\nactions.sentst+=/raptor_bite,cycle_targets=1", }, }, ["iconStore"] = { ["minimapPos"] = 267.4870703248537, }, ["toggles"] = { ["essences"] = { ["value"] = false, }, }, ["notifications"] = { ["y"] = 479.1666564941406, ["x"] = -25.0001220703125, }, }, }, }