HekiliDB = { ["namespaces"] = { ["LibDualSpec-1.0"] = { }, }, ["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", ["Quillastra - Deathwing"] = "Quillastra - Deathwing", ["Quillika - Thunderhorn"] = "Quillika - Thunderhorn", ["Quillshake - Deathwing"] = "Default", ["Quillika - Deathwing"] = "Quillika - Deathwing", ["Quillord - Deathwing"] = "Default", ["Quillight - Deathwing"] = "Default", ["Quilloria - Deathwing"] = "Default", ["Quillthus - Deathwing"] = "Default", ["Quillessa - Deathwing"] = "Default", ["Quilago - Thunderhorn"] = "Quilago - Thunderhorn", ["Quillphis - Deathwing"] = "Quillphis - Deathwing", ["Quillithor - Deathwing"] = "Default", ["Quillark - Thunderhorn"] = "Default", ["Quillson - Thunderhorn"] = "Quillson - Thunderhorn", ["Quillrata - Deathwing"] = "Default", ["Quilberg - Thunderhorn"] = "Quilberg - Thunderhorn", ["Quilkin - Thunderhorn"] = "Quilkin - Thunderhorn", ["Quildra - Deathwing"] = "Quildra - Deathwing", ["Quillspeth - Thunderhorn"] = "Quillspeth - Thunderhorn", ["Quilldraka - Deathwing"] = "Default", ["Quillzana - Thunderhorn"] = "Quillzana - Thunderhorn", ["Quillandria - Thunderhorn"] = "Quillandria - Thunderhorn", ["Quillum - Deathwing"] = "Quillum - Deathwing", ["Quillshi - Deathwing"] = "Default", ["Quillick - Thunderhorn"] = "Quillick - Thunderhorn", ["Quillidania - Deathwing"] = "Quillidania - Deathwing", ["Quillisium - Deathwing"] = "Quillisium - Deathwing", ["Quillikan - Deathwing"] = "Quillikan - Deathwing", ["Quillichaa - Deathwing"] = "Default", ["Quilenko - Thunderhorn"] = "Quilenko - Thunderhorn", ["Quilbee - Thunderhorn"] = "Quilbee - Thunderhorn", ["Quillvyn - Deathwing"] = "Default", }, ["profiles"] = { ["Quillidania - Deathwing"] = { ["runOnce"] = { ["forceReloadAllDefaultPriorities_20220228"] = true, ["forceEnableAllClassesOnceDueToBug_20220225"] = true, ["updateMaxRefreshToNewSpecOptions_20220222"] = true, ["resetAberrantPackageDates_20190728_1"] = true, ["autoconvertDelaySweepToExtend_20190729"] = true, ["autoconvertDisplayToggle_20190621_1"] = true, ["forceReloadClassDefaultOptions_20220306_577"] = true, ["forceReloadClassDefaultOptions_20220306_581"] = true, ["resetRogueMfDOption_20200226"] = true, ["enableAllOfTheThings_20180820"] = true, ["forceEnableEnhancedRecheckBoomkin_20210712"] = true, ["resetPotionsToDefaults_20190717"] = true, ["autoconvertGlowsForCustomGlow_20190326"] = true, ["forceSpellFlashBrightness_20221030"] = true, }, ["specs"] = { [581] = { ["maxRefresh"] = 10, ["settings"] = { ["frailty_stacks"] = 1, ["brand_charges"] = 0, ["infernal_charges"] = 1, }, ["potionsReset"] = 20180919.1, ["maxTime"] = 33, ["potion"] = "superior_steelskin_potion", }, [577] = { ["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, }, ["potionsReset"] = 20180919.1, ["maxTime"] = 33, ["potion"] = "potion_of_unbridled_fury", }, }, ["displays"] = { ["Interrupts"] = { ["rel"] = "CENTER", ["y"] = -224.9999542236328, }, ["Cooldowns"] = { ["rel"] = "CENTER", ["x"] = -25, }, ["Primary"] = { ["rel"] = "CENTER", ["elvuiCooldown"] = true, ["y"] = -432, ["x"] = -50, }, ["AOE"] = { ["rel"] = "CENTER", ["x"] = -50, ["y"] = -492, }, ["Defensives"] = { ["rel"] = "CENTER", ["x"] = -75, ["y"] = -324.9998779296875, }, }, ["packs"] = { ["Havoc"] = { ["source"] = "SimulationCraft", ["builtIn"] = true, ["date"] = 20240410, ["spec"] = 577, ["desc"] = "2024-04-10: Don't overlap precombat Immolation Auras with A Fire Inside.\n\n2024-01-14: Don't let opener cause a no-recommendation scenario.\n\n2024-01-03: Resync with SimulationCraft.\n\n2023-11-29: Tweak opener & remove desired_targets references.\n\n2023-11-14: More relevant sim updates.\n\n2023-11-13: Sim updates.\n\n2023-11-07: Further 10.2 updates.\n\n2023-11-05: Patch 10.2.\n\n2023-07-18: Removed redundant trinket entries.\n\n2023-07-15: Revamp from SimulationCraft.\n\n2023-07-11: Patch 10.1.5 update.\n\n2023-07-04: Add option to Throw Glaive without Blade Dance on CD.\n\n2023-06-25: Allow generic trinkets to get recommended off-GCD.\n\n2023-06-03: Move trinkets in default priority.\n\n2023-05-12: Trinket updates from SimC.\n\n2023-04-30: Updated from SimC for 10.1.\n\n2023-02-27: If Fel Rush and Vengeful Retreat are disabled (despite Momentum and Tactical Retreat being talented), the priority will allow Essence Break to be recommended.\n\n2023-02-18: Options regarding Fel Rush and Vengeful Retreat were revised. Only the filler/movement recommendations can be turned off using Havoc's specialization settings. The entries associated with Isolated Prey, Momentum, Unbound Chaos, Initiative, and Vengeful Retreat may always be recommended if those talents are selected.", ["profile"] = "actions.precombat+=/variable,name=trinket_sync_slot,value=1,if=trinket.1.has_stat.any_dps&(!trinket.2.has_stat.any_dps||trinket.1.cooldown.duration>=trinket.2.cooldown.duration)\nactions.precombat+=/variable,name=trinket_sync_slot,value=2,if=trinket.2.has_stat.any_dps&(!trinket.1.has_stat.any_dps||trinket.2.cooldown.duration>trinket.1.cooldown.duration)\nactions.precombat+=/arcane_torrent\nactions.precombat+=/immolation_aura,if=buff.immolation_aura.down\n\nactions+=/disrupt\nactions+=/consume_magic\nactions+=/call_action_list,name=cooldown\nactions+=/fel_rush,if=buff.unbound_chaos.up&buff.unbound_chaos.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+=/call_action_list,name=opener,strict=1,if=(cooldown.eye_beam.up||cooldown.metamorphosis.up)&time<15&(raid_event.adds.in>40)\nactions+=/run_action_list,name=fel_barrage,if=variable.fel_barrage&raid_event.adds.up\nactions+=/immolation_aura,if=active_enemies>2&talent.ragefire&buff.unbound_chaos.down&(!talent.fel_barrage||cooldown.fel_barrage.remains>recharge_time)&debuff.essence_break.down\nactions+=/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\nactions+=/fel_rush,if=buff.unbound_chaos.up&active_enemies>2&(!talent.inertia||cooldown.eye_beam.remains+2>buff.unbound_chaos.remains)\nactions+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&(cooldown.eye_beam.remains>15&gcd.remains<0.3||gcd.remains<0.1&cooldown.eye_beam.remains<=gcd.remains&(cooldown.metamorphosis.remains>10||cooldown.blade_dance.remains4\nactions+=/run_action_list,name=fel_barrage,if=variable.fel_barrage||!talent.demon_blades&talent.fel_barrage&(buff.fel_barrage.up||cooldown.fel_barrage.up)&buff.metamorphosis.down\nactions+=/run_action_list,name=meta,strict=1,if=buff.metamorphosis.up\nactions+=/fel_rush,if=buff.unbound_chaos.up&talent.inertia&buff.inertia.down&cooldown.blade_dance.remains<4&cooldown.eye_beam.remains>5&(action.immolation_aura.charges>0||action.immolation_aura.recharge_time+2buff.unbound_chaos.remains-2)\nactions+=/fel_rush,if=talent.momentum&cooldown.eye_beam.remainsfull_recharge_time||active_enemies>desired_targets)\nactions+=/immolation_aura,if=immolation_aura,if=active_enemies>desired_targets&buff.unbound_chaos.down&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>full_recharge_time)\nactions+=/immolation_aura,if=talent.inertia&buff.unbound_chaos.down&cooldown.eye_beam.remains<5&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>full_recharge_time)\nactions+=/immolation_aura,if=talent.inertia&buff.inertia.down&buff.unbound_chaos.down&recharge_time+5=desired_targets+raid_event.adds.count||raid_event.adds.in>full_recharge_time)&charges_fractional>1.00\nactions+=/immolation_aura,if=fight_remains<15&cooldown.blade_dance.remains\nactions+=/eye_beam,if=!talent.essence_break&(!talent.chaotic_transformation||cooldown.metamorphosis.remains<5+3*talent.shattered_destiny||cooldown.metamorphosis.remains>15)&(active_enemies>desired_targets*2||raid_event.adds.in>30-talent.cycle_of_hatred.rank*13)\nactions+=/eye_beam,if=talent.essence_break&(cooldown.essence_break.remains10)&(cooldown.blade_dance.remains<7||raid_event.adds.up)&(!talent.initiative||cooldown.vengeful_retreat.remains>10||raid_event.adds.up)&(active_enemies+3>=desired_targets+raid_event.adds.count||raid_event.adds.in>30-talent.cycle_of_hatred.rank*6)&(!talent.inertia||buff.unbound_chaos.up||action.immolation_aura.charges=0&action.immolation_aura.recharge_time>5)&(!raid_event.adds.up||raid_event.adds.remains>8)||fight_remains<10\nactions+=/blade_dance,if=cooldown.eye_beam.remains>gcd.max||cooldown.eye_beam.up\nactions+=/glaive_tempest,if=active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>10\nactions+=/sigil_of_flame,if=active_enemies>3\nactions+=/chaos_strike,if=debuff.essence_break.up\nactions+=/felblade\nactions+=/throw_glaive,if=full_recharge_time<=cooldown.blade_dance.remains&cooldown.metamorphosis.remains>5&talent.soulscar&set_bonus.tier31_2pc\nactions+=/throw_glaive,if=!set_bonus.tier31_2pc&(active_enemies>1||talent.soulscar)\nactions+=/chaos_strike,if=cooldown.eye_beam.remains>gcd.max*2||fury>80\nactions+=/immolation_aura,if=!talent.inertia&(raid_event.adds.in>full_recharge_time||active_enemies>desired_targets&active_enemies>2)\nactions+=/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+=/demons_bite\nactions+=/fel_rush,if=buff.unbound_chaos.down&recharge_time8||charges_fractional>1.01)\nactions+=/arcane_torrent,if=buff.out_of_range.down&debuff.essence_break.down&fury<100\n\nactions.meta+=/death_sweep,if=buff.metamorphosis.remains20&(cooldown.metamorphosis.remains>10||cooldown.blade_dance.remainsgcd.max+0.5&buff.unbound_chaos.down&talent.inertia&buff.inertia.down&full_recharge_time+35\nactions.meta+=/death_sweep\nactions.meta+=/eye_beam,if=debuff.essence_break.down&buff.inner_demon.down\nactions.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.meta+=/sigil_of_flame,if=active_enemies>2\nactions.meta+=/annihilation,if=cooldown.blade_dance.remains>gcd.max*2||fury>60||buff.metamorphosis.remains<5&cooldown.felblade.up\nactions.meta+=/sigil_of_flame,if=buff.metamorphosis.remains>5\nactions.meta+=/felblade\nactions.meta+=/sigil_of_flame,if=debuff.essence_break.down\nactions.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.meta+=/fel_rush,if=talent.momentum\nactions.meta+=/fel_rush,if=buff.unbound_chaos.down&recharge_time8||charges_fractional>1.01)&buff.out_of_range.down\nactions.meta+=/demons_bite\n\nactions.cooldown+=/metamorphosis,if=(!talent.initiative||cooldown.vengeful_retreat.remains)&((!talent.demonic||prev_gcd.1.death_sweep||prev_gcd.2.death_sweep||prev_gcd.3.death_sweep)&cooldown.eye_beam.remains&(!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||fight_remains<30)\nactions.cooldown+=/potion,if=fight_remains<35||buff.metamorphosis.up\nactions.cooldown+=/use_item,slot=trinket1,use_off_gcd=1,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||fight_remains<25)&(!equipped.witherbarks_branch||trinket.2.cooldown.remains>20)&time>0\nactions.cooldown+=/use_item,slot=trinket2,use_off_gcd=1,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||fight_remains<25)&(!equipped.witherbarks_branch||trinket.1.cooldown.remains>20)&time>0\nactions.cooldown+=/use_item,name=witherbarks_branch,if=(talent.essence_break&cooldown.essence_break.remains=desired_targets+raid_event.adds.count||raid_event.adds.in>105)||fight_remains<25\nactions.cooldown+=/the_hunt,if=debuff.essence_break.down&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>(1+!set_bonus.tier31_2pc)*45)&time>5\nactions.cooldown+=/elysian_decree,if=debuff.essence_break.down\n\nactions.opener+=/use_items\nactions.opener+=/vengeful_retreat,if=prev_gcd.1.death_sweep\nactions.opener+=/metamorphosis,if=prev_gcd.1.death_sweep||(!talent.chaotic_transformation)&(!talent.initiative||cooldown.vengeful_retreat.remains>2)||!talent.demonic\nactions.opener+=/felblade,if=debuff.essence_break.down,line_cd=60\nactions.opener+=/potion\nactions.opener+=/immolation_aura,if=charges=2&buff.unbound_chaos.down&(buff.inertia.down||active_enemies>2)\nactions.opener+=/annihilation,if=buff.inner_demon.up&(!talent.chaotic_transformation||cooldown.metamorphosis.up)\nactions.opener+=/eye_beam,if=debuff.essence_break.down&buff.inner_demon.down&(!buff.metamorphosis.up||cooldown.blade_dance.remains)\nactions.opener+=/fel_rush,if=talent.inertia&(buff.inertia.down||active_enemies>2)&buff.unbound_chaos.up\nactions.opener+=/the_hunt,if=active_enemies>desired_targets||raid_event.adds.in>40+50*!set_bonus.tier31_2pc\nactions.opener+=/essence_break\nactions.opener+=/death_sweep\nactions.opener+=/annihilation\nactions.opener+=/demons_bite\n\nactions.fel_barrage+=/variable,name=generator_up,op=set,value=cooldown.felblade.remains1&raid_event.adds.up||raid_event.adds.in>40)\nactions.fel_barrage+=/essence_break,if=buff.fel_barrage.down&buff.metamorphosis.up\nactions.fel_barrage+=/death_sweep,if=buff.fel_barrage.down\nactions.fel_barrage+=/immolation_aura,if=buff.unbound_chaos.down&(active_enemies>2||buff.fel_barrage.up)\nactions.fel_barrage+=/glaive_tempest,if=buff.fel_barrage.down&active_enemies>1\nactions.fel_barrage+=/blade_dance,if=buff.fel_barrage.down\nactions.fel_barrage+=/fel_barrage,if=fury>100&(raid_event.adds.in>90||raid_event.adds.in4&active_enemies>2)\nactions.fel_barrage+=/fel_rush,if=buff.unbound_chaos.up&fury>20&buff.fel_barrage.up\nactions.fel_barrage+=/sigil_of_flame,if=fury.deficit>40&buff.fel_barrage.up\nactions.fel_barrage+=/felblade,if=buff.fel_barrage.up&fury.deficit>40\nactions.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.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.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.fel_barrage+=/arcane_torrent,if=fury.deficit>40&buff.fel_barrage.up\nactions.fel_barrage+=/fel_rush,if=buff.unbound_chaos.up\nactions.fel_barrage+=/the_hunt,if=fury>40&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>(1+set_bonus.tier31_2pc)*40)\nactions.fel_barrage+=/demons_bite", ["version"] = 20240410, ["warnings"] = "The import for 'opener' required some automated changes.\nLine 3: Converted 'talent.chaotic_transformation' to 'talent.chaotic_transformation.enabled' (1x).\nLine 3: Converted 'talent.initiative' to 'talent.initiative.enabled' (1x).\nLine 3: Converted 'talent.demonic' to 'talent.demonic.enabled' (1x).\nLine 7: Converted 'talent.chaotic_transformation' to 'talent.chaotic_transformation.enabled' (1x).\nLine 9: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 5: Converted 'talent.fel_barrage' to 'talent.fel_barrage.enabled' (1x).\nLine 8: Converted 'talent.ragefire' to 'talent.ragefire.enabled' (1x).\nLine 8: Converted 'talent.fel_barrage' to 'talent.fel_barrage.enabled' (1x).\nLine 9: Converted 'talent.ragefire' to 'talent.ragefire.enabled' (1x).\nLine 10: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 11: Converted 'talent.initiative' to 'talent.initiative.enabled' (1x).\nLine 12: Converted 'talent.demon_blades' to 'talent.demon_blades.enabled' (1x).\nLine 12: Converted 'talent.fel_barrage' to 'talent.fel_barrage.enabled' (1x).\nLine 14: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 15: Converted 'talent.momentum' to 'talent.momentum.enabled' (1x).\nLine 18: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 19: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 21: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 21: Converted 'talent.chaotic_transformation' to 'talent.chaotic_transformation.enabled' (1x).\nLine 21: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 22: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 22: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 22: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 22: Converted 'talent.initiative' to 'talent.initiative.enabled' (1x).\nLine 22: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 28: Converted 'talent.soulscar' to 'talent.soulscar.enabled' (1x).\nLine 29: Converted 'talent.soulscar' to 'talent.soulscar.enabled' (1x).\nLine 31: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 32: Converted 'talent.fel_barrage' to 'talent.fel_barrage.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 1: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 1: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 1: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 1: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 1: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 1: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 2: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (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 'meta' required some automated changes.\nLine 3: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 4: Converted 'talent.momentum' to 'talent.momentum.enabled' (1x).\nLine 6: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 7: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 17: Converted 'talent.momentum' to 'talent.momentum.enabled' (1x).\n\nThe import for 'cooldown' required some automated changes.\nLine 1: Converted 'talent.initiative' to 'talent.initiative.enabled' (1x).\nLine 1: Converted 'talent.demonic' to 'talent.demonic.enabled' (1x).\nLine 1: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 1: Converted 'talent.fel_barrage' to 'talent.fel_barrage.enabled' (1x).\nLine 1: Converted 'talent.chaotic_transformation' to 'talent.chaotic_transformation.enabled' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 3: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 3: Converted 'trinket.1.has_buff.any' to 'trinket.t1.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 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.2.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 4: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (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 5: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 5: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nThe following auras were used in the action list but were not found in the addon database:\n - any\n\nThe import for 'fel_barrage' required some automated changes.\nLine 2: Converted operations in '1%(2.6*attack_haste)*12+buff.immolation_aura.stack*6+buff.tactical_retreat.up*10' to '1/(2.6*attack_haste)*12+buff.immolation_aura.stack*6+buff.tactical_retreat.up*10'.\n\nImported 6 action lists.\n", ["lists"] = { ["opener"] = { { ["action"] = "use_items", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "prev_gcd.1.death_sweep", ["action"] = "vengeful_retreat", }, { ["enabled"] = true, ["criteria"] = "prev_gcd.1.death_sweep || ( ! talent.chaotic_transformation.enabled ) & ( ! talent.initiative.enabled || cooldown.vengeful_retreat.remains > 2 ) || ! talent.demonic.enabled", ["action"] = "metamorphosis", }, { ["enabled"] = true, ["action"] = "felblade", ["criteria"] = "debuff.essence_break.down", ["line_cd"] = "60", }, { ["action"] = "potion", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "charges = 2 & buff.unbound_chaos.down & ( buff.inertia.down || active_enemies > 2 )", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "buff.inner_demon.up & ( ! talent.chaotic_transformation.enabled || cooldown.metamorphosis.up )", ["action"] = "annihilation", }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.down & buff.inner_demon.down & ( ! buff.metamorphosis.up || cooldown.blade_dance.remains )", ["action"] = "eye_beam", }, { ["enabled"] = true, ["criteria"] = "talent.inertia.enabled & ( buff.inertia.down || active_enemies > 2 ) & buff.unbound_chaos.up", ["action"] = "fel_rush", }, { ["enabled"] = true, ["criteria"] = "active_enemies > desired_targets || raid_event.adds.in > 40 + 50 * ! set_bonus.tier31_2pc", ["action"] = "the_hunt", }, { ["action"] = "essence_break", ["enabled"] = true, }, { ["action"] = "death_sweep", ["enabled"] = true, }, { ["action"] = "annihilation", ["enabled"] = true, }, { ["action"] = "demons_bite", ["enabled"] = true, }, }, ["default"] = { { ["action"] = "disrupt", ["enabled"] = true, }, { ["action"] = "consume_magic", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cooldown", }, { ["enabled"] = true, ["criteria"] = "buff.unbound_chaos.up & buff.unbound_chaos.remains < gcd.max * 2", ["action"] = "fel_rush", }, { ["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, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "( cooldown.eye_beam.up || cooldown.metamorphosis.up ) & time < 15 & ( raid_event.adds.in > 40 )", ["list_name"] = "opener", }, { ["enabled"] = true, ["action"] = "run_action_list", ["criteria"] = "variable.fel_barrage & raid_event.adds.up", ["list_name"] = "fel_barrage", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 2 & talent.ragefire.enabled & buff.unbound_chaos.down & ( ! talent.fel_barrage.enabled || cooldown.fel_barrage.remains > recharge_time ) & debuff.essence_break.down", ["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, ["criteria"] = "buff.unbound_chaos.up & active_enemies > 2 & ( ! talent.inertia.enabled || cooldown.eye_beam.remains + 2 > buff.unbound_chaos.remains )", ["action"] = "fel_rush", }, { ["enabled"] = true, ["use_off_gcd"] = 1, ["action"] = "vengeful_retreat", ["criteria"] = "talent.initiative.enabled & ( cooldown.eye_beam.remains > 15 & gcd.remains < 0.3 || gcd.remains < 0.1 & cooldown.eye_beam.remains <= gcd.remains & ( cooldown.metamorphosis.remains > 10 || cooldown.blade_dance.remains < gcd.max * 2 ) ) & time > 4", }, { ["enabled"] = true, ["action"] = "run_action_list", ["criteria"] = "variable.fel_barrage || ! talent.demon_blades.enabled & talent.fel_barrage.enabled & ( buff.fel_barrage.up || cooldown.fel_barrage.up ) & buff.metamorphosis.down", ["list_name"] = "fel_barrage", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "buff.metamorphosis.up", ["list_name"] = "meta", }, { ["enabled"] = true, ["criteria"] = "buff.unbound_chaos.up & talent.inertia.enabled & buff.inertia.down & cooldown.blade_dance.remains < 4 & cooldown.eye_beam.remains > 5 & ( action.immolation_aura.charges > 0 || action.immolation_aura.recharge_time + 2 < cooldown.eye_beam.remains || cooldown.eye_beam.remains > buff.unbound_chaos.remains - 2 )", ["action"] = "fel_rush", }, { ["enabled"] = true, ["criteria"] = "talent.momentum.enabled & cooldown.eye_beam.remains < gcd.max * 2", ["action"] = "fel_rush", }, { ["enabled"] = true, ["criteria"] = "buff.unbound_chaos.down & 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 & buff.unbound_chaos.down & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > full_recharge_time )", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "talent.inertia.enabled & buff.unbound_chaos.down & cooldown.eye_beam.remains < 5 & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > full_recharge_time )", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "talent.inertia.enabled & buff.inertia.down & buff.unbound_chaos.down & recharge_time + 5 < cooldown.eye_beam.remains & cooldown.blade_dance.remains & cooldown.blade_dance.remains < 4 & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > full_recharge_time ) & charges_fractional > 1.00", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "fight_remains < 15 & cooldown.blade_dance.remains", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "! talent.essence_break.enabled & ( ! talent.chaotic_transformation.enabled || cooldown.metamorphosis.remains < 5 + 3 * talent.shattered_destiny.enabled || cooldown.metamorphosis.remains > 15 ) & ( active_enemies > desired_targets * 2 || raid_event.adds.in > 30 - talent.cycle_of_hatred.rank * 13 )", ["action"] = "eye_beam", }, { ["enabled"] = true, ["criteria"] = "talent.essence_break.enabled & ( cooldown.essence_break.remains < gcd.max * 2 + 5 * talent.shattered_destiny.enabled || talent.shattered_destiny.enabled & cooldown.essence_break.remains > 10 ) & ( cooldown.blade_dance.remains < 7 || raid_event.adds.up ) & ( ! talent.initiative.enabled || cooldown.vengeful_retreat.remains > 10 || raid_event.adds.up ) & ( active_enemies + 3 >= desired_targets + raid_event.adds.count || raid_event.adds.in > 30 - talent.cycle_of_hatred.rank * 6 ) & ( ! talent.inertia.enabled || buff.unbound_chaos.up || action.immolation_aura.charges = 0 & action.immolation_aura.recharge_time > 5 ) & ( ! raid_event.adds.up || raid_event.adds.remains > 8 ) || fight_remains < 10", ["action"] = "eye_beam", }, { ["enabled"] = true, ["criteria"] = "cooldown.eye_beam.remains > gcd.max || cooldown.eye_beam.up", ["action"] = "blade_dance", }, { ["enabled"] = true, ["criteria"] = "active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > 10", ["action"] = "glaive_tempest", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 3", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.up", ["action"] = "chaos_strike", }, { ["action"] = "felblade", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "full_recharge_time <= cooldown.blade_dance.remains & cooldown.metamorphosis.remains > 5 & talent.soulscar.enabled & set_bonus.tier31_2pc", ["action"] = "throw_glaive", }, { ["enabled"] = true, ["criteria"] = "! set_bonus.tier31_2pc & ( active_enemies > 1 || talent.soulscar.enabled )", ["action"] = "throw_glaive", }, { ["enabled"] = true, ["criteria"] = "cooldown.eye_beam.remains > gcd.max * 2 || fury > 80", ["action"] = "chaos_strike", }, { ["enabled"] = true, ["criteria"] = "! talent.inertia.enabled & ( 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 )", ["action"] = "fel_rush", }, { ["enabled"] = true, ["criteria"] = "buff.out_of_range.down & debuff.essence_break.down & fury < 100", ["action"] = "arcane_torrent", }, }, ["precombat"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "1", ["var_name"] = "trinket_sync_slot", ["criteria"] = "trinket.t1.has_stat.any_dps & ( ! trinket.t2.has_stat.any_dps || trinket.t1.cooldown.duration >= trinket.t2.cooldown.duration )", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "2", ["var_name"] = "trinket_sync_slot", ["criteria"] = "trinket.t2.has_stat.any_dps & ( ! trinket.t1.has_stat.any_dps || trinket.t2.cooldown.duration > trinket.t1.cooldown.duration )", }, { ["action"] = "arcane_torrent", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.immolation_aura.down", ["action"] = "immolation_aura", }, }, ["meta"] = { { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.remains < gcd.max", ["action"] = "death_sweep", }, { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.remains < gcd.max", ["action"] = "annihilation", }, { ["enabled"] = true, ["criteria"] = "buff.unbound_chaos.up & talent.inertia.enabled", ["action"] = "fel_rush", }, { ["enabled"] = true, ["criteria"] = "talent.momentum.enabled & buff.momentum.remains < gcd.max * 2", ["action"] = "fel_rush", }, { ["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"] = "fury > 20 & ( cooldown.metamorphosis.remains > 10 || cooldown.blade_dance.remains < gcd.max * 2 ) & ( buff.unbound_chaos.down || buff.inertia.up || ! talent.inertia.enabled ) || fight_remains < 10", ["action"] = "essence_break", }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.down & cooldown.blade_dance.remains > gcd.max + 0.5 & buff.unbound_chaos.down & talent.inertia.enabled & buff.inertia.down & full_recharge_time + 3 < cooldown.eye_beam.remains & buff.metamorphosis.remains > 5", ["action"] = "immolation_aura", }, { ["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", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["criteria"] = "cooldown.blade_dance.remains > gcd.max * 2 || fury > 60 || buff.metamorphosis.remains < 5 & cooldown.felblade.up", ["action"] = "annihilation", }, { ["enabled"] = true, ["criteria"] = "buff.metamorphosis.remains > 5", ["action"] = "sigil_of_flame", }, { ["action"] = "felblade", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.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", }, { ["enabled"] = true, ["criteria"] = "talent.momentum.enabled", ["action"] = "fel_rush", }, { ["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", ["action"] = "fel_rush", }, { ["action"] = "demons_bite", ["enabled"] = true, }, }, ["cooldown"] = { { ["enabled"] = true, ["criteria"] = "( ! talent.initiative.enabled || cooldown.vengeful_retreat.remains ) & ( ( ! talent.demonic.enabled || prev_gcd.1.death_sweep || prev_gcd.2.death_sweep || prev_gcd.3.death_sweep ) & cooldown.eye_beam.remains & ( ! 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 || fight_remains < 30 )", ["action"] = "metamorphosis", }, { ["enabled"] = true, ["criteria"] = "fight_remains < 35 || buff.metamorphosis.up", ["action"] = "potion", }, { ["enabled"] = true, ["action"] = "trinket1", ["slot"] = "trinket1", ["use_off_gcd"] = 1, ["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 || fight_remains < 25 ) & ( ! equipped.witherbarks_branch || trinket.t2.cooldown.remains > 20 ) & time > 0", }, { ["enabled"] = true, ["action"] = "trinket2", ["slot"] = "trinket2", ["use_off_gcd"] = 1, ["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 || fight_remains < 25 ) & ( ! equipped.witherbarks_branch || trinket.t1.cooldown.remains > 20 ) & time > 0", }, { ["enabled"] = true, ["action"] = "witherbarks_branch", ["criteria"] = "( talent.essence_break.enabled & cooldown.essence_break.remains < gcd.max || ! talent.essence_break.enabled ) & ( active_enemies + 3 >= desired_targets + raid_event.adds.count || raid_event.adds.in > 105 ) || fight_remains < 25", ["name"] = "witherbarks_branch", }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.down & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > ( 1 + ! set_bonus.tier31_2pc ) * 45 ) & time > 5", ["action"] = "the_hunt", }, { ["enabled"] = true, ["criteria"] = "debuff.essence_break.down", ["action"] = "elysian_decree", }, }, ["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"] = "1 / ( 2.6 * attack_haste ) * 12 + buff.immolation_aura.stack * 6 + buff.tactical_retreat.up * 10", ["var_name"] = "fury_gen", }, { ["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"] = "buff.unbound_chaos.down & ( active_enemies > 2 || buff.fel_barrage.up )", ["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.unbound_chaos.up & fury > 20 & buff.fel_barrage.up", ["action"] = "fel_rush", }, { ["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"] = "buff.unbound_chaos.up", ["action"] = "fel_rush", }, { ["enabled"] = true, ["criteria"] = "fury > 40 & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > ( 1 + set_bonus.tier31_2pc ) * 40 )", ["action"] = "the_hunt", }, { ["action"] = "demons_bite", ["enabled"] = true, }, }, }, ["author"] = "SimC", }, ["Vengeance"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20240121, ["spec"] = 581, ["desc"] = "2024-01-21: Tweaks to Shear, Meta, etc.\n\n2023-11-23: QoL improvements x2.\n\n2023-11-14: More sim updates.\n\n2023-11-13: Sim updates. \n\n2023-11-07: Further 10.2 updates.\n\n2023-11-05: Patch 10.2.\n\n2023-08-26: Update to simplified priority list.\n\n2023-08-07: Beacon/DFB usage adjusted.\n\n2023-07-31: SimC adjusted Meta and Beacon usage.\n\n2023-07-20: Add missing single-target lines and updates.\n\n2023-07-19: Import updates from SimC and flatten priority (don't break out into action lists that don't improve efficiency).\n\n2023-07-16: Implement Vengeance overhaul from SimC.\n\n2023-07-11: Patch 10.1.5 update.\n\n2023-05-20: Added trinkets.", ["profile"] = "actions.precombat+=/sigil_of_flame,line_cd=5\nactions.precombat+=/immolation_aura\n\n# Check if trinkets have buff effects\nactions+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_buff.strength||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit)\nactions+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_buff.strength||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit)\nactions+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell||trinket.1.is.whispering_incarnate_icon\nactions+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell||trinket.2.is.whispering_incarnate_icon\n# Don't spend fury when fel dev soon to maximize fel dev uptime\nactions+=/variable,name=dont_cleave,value=(cooldown.fel_devastation.remains<=(action.soul_cleave.execute_time+gcd.remains))&fury<80\n# Check if fiery demise is active and spread\nactions+=/variable,name=fd_ready,value=talent.fiery_brand&talent.fiery_demise&active_dot.fiery_brand_dot>0\n# Don't spend fury when fel dev soon to maximize fel dev uptime\nactions+=/variable,name=dont_cleave,value=(cooldown.fel_devastation.remains<=(action.soul_cleave.execute_time+gcd.remains))&fury<80\n# When to use Spirit Bomb with Focused Cleave\nactions+=/variable,name=single_target,value=spell_targets.spirit_bomb=1\nactions+=/variable,name=small_aoe,value=spell_targets.spirit_bomb>=2&spell_targets.spirit_bomb<=5\nactions+=/variable,name=big_aoe,value=spell_targets.spirit_bomb>=6\nactions+=/variable,name=can_spb,op=setif,condition=variable.fd_ready,value=(variable.single_target&soul_fragments>=5)||(variable.small_aoe&soul_fragments>=4)||(variable.big_aoe&soul_fragments>=3),value_else=(variable.small_aoe&soul_fragments>=5)||(variable.big_aoe&soul_fragments>=4)\n\nactions+=/disrupt\nactions+=/consume_magic\nactions+=/infernal_strike\nactions+=/demon_spikes,use_off_gcd=1,if=!buff.demon_spikes.up&tanking\nactions+=/metamorphosis,use_off_gcd=1,if=!buff.metamorphosis.up&(!talent.demonic||cooldown.fel_devastation.remains>12)\nactions+=/potion\n## actions+=/call_action_list,name=externals\nactions+=/use_items\nactions+=/call_action_list,name=fiery_demise,strict=1,if=talent.fiery_brand&talent.fiery_demise&active_dot.fiery_brand_dot>0\nactions+=/call_action_list,name=maintenance\nactions+=/run_action_list,name=single_target,strict=1,if=variable.single_target\nactions+=/run_action_list,name=small_aoe,strict=1,if=variable.small_aoe\nactions+=/run_action_list,name=big_aoe,strict=1,if=variable.big_aoe\n\n## actions.externals+=/invoke_external_buff,name=symbol_of_hope\n## actions.externals+=/invoke_external_buff,name=power_infusion\n\n# Fiery demise window\nactions.fiery_demise+=/immolation_aura\nactions.fiery_demise+=/sigil_of_flame,if=talent.ascending_flame&!talent.illuminated_sigils||!sigil_placed&active_dot.sigil_of_flame=0\nactions.fiery_demise+=/felblade,if=(!talent.spirit_bomb||(cooldown.fel_devastation.remains<=(execute_time+gcd.remains)))&fury<50\nactions.fiery_demise+=/fel_devastation\nactions.fiery_demise+=/soul_carver,if=soul_fragments<3\nactions.fiery_demise+=/the_hunt\nactions.fiery_demise+=/elysian_decree,line_cd=1.85,if=fury>=40\nactions.fiery_demise+=/spirit_bomb,if=variable.can_spb\n\nactions.filler+=/sigil_of_chains,if=talent.cycle_of_binding.enabled&talent.sigil_of_chains.enabled\nactions.filler+=/sigil_of_misery,if=talent.cycle_of_binding.enabled&talent.sigil_of_misery.enabled\nactions.filler+=/sigil_of_silence,if=talent.cycle_of_binding.enabled&talent.sigil_of_silence.enabled\nactions.filler+=/throw_glaive\n\n# Maintenance & upkeep\nactions.maintenance+=/fiery_brand,if=talent.fiery_brand&((active_dot.fiery_brand_dot=0&(cooldown.sigil_of_flame.remains<=(execute_time+gcd.remains)||cooldown.soul_carver.remains<=(execute_time+gcd.remains)||cooldown.fel_devastation.remains<=(execute_time+gcd.remains)))||(talent.down_in_flames&full_recharge_time<=(execute_time+gcd.remains)))\nactions.maintenance+=/sigil_of_flame,if=talent.ascending_flame&!talent.illuminated_sigils||!sigil_placed&active_dot.sigil_of_flame=0\nactions.maintenance+=/immolation_aura\nactions.maintenance+=/bulk_extraction,if=((5-soul_fragments)<=spell_targets)&soul_fragments<=2\nactions.maintenance+=/spirit_bomb,if=variable.can_spb\nactions.maintenance+=/felblade,if=((!talent.spirit_bomb||active_enemies=1)&fury.deficit>=40)||((cooldown.fel_devastation.remains<=(execute_time+gcd.remains))&fury<50)\nactions.maintenance+=/fracture,if=(cooldown.fel_devastation.remains<=(execute_time+gcd.remains))&fury<50\nactions.maintenance+=/shear,if=(cooldown.fel_devastation.remains<=(execute_time+gcd.remains))&fury<50\n# Don't overcap fury\nactions.maintenance+=/spirit_bomb,if=fury.deficit<=30&spell_targets>1&soul_fragments>=4\nactions.maintenance+=/soul_cleave,if=fury.deficit<=40\n\n# Single Target\nactions.single_target+=/the_hunt\nactions.single_target+=/soul_carver\nactions.single_target+=/fel_devastation,if=talent.collective_anguish||(talent.stoke_the_flames&talent.burning_blood)\nactions.single_target+=/elysian_decree\nactions.single_target+=/fel_devastation\nactions.single_target+=/soul_cleave,if=!variable.dont_cleave\nactions.single_target+=/fracture\nactions.single_target+=/call_action_list,name=filler\n\n# 2-5 targets\nactions.small_aoe+=/the_hunt\nactions.small_aoe+=/fel_devastation,if=talent.collective_anguish.enabled||(talent.stoke_the_flames.enabled&talent.burning_blood.enabled)\nactions.small_aoe+=/elysian_decree,line_cd=1.85,if=fury>=40&(soul_fragments<=1||soul_fragments>=4)\nactions.small_aoe+=/fel_devastation\nactions.small_aoe+=/soul_carver,if=soul_fragments<3\nactions.small_aoe+=/soul_cleave,if=(soul_fragments<=1||!talent.spirit_bomb)&!variable.dont_cleave\nactions.small_aoe+=/fracture\nactions.small_aoe+=/call_action_list,name=filler\n\n# 6+ targets\nactions.big_aoe+=/fel_devastation,if=talent.collective_anguish||talent.stoke_the_flames\nactions.big_aoe+=/the_hunt\nactions.big_aoe+=/elysian_decree,line_cd=1.85,if=fury>=40&(soul_fragments<=1||soul_fragments>=4)\nactions.big_aoe+=/fel_devastation\nactions.big_aoe+=/soul_carver,if=soul_fragments<3\nactions.big_aoe+=/spirit_bomb,if=soul_fragments>=4\nactions.big_aoe+=/soul_cleave,if=!talent.spirit_bomb&!variable.dont_cleave\nactions.big_aoe+=/fracture\nactions.big_aoe+=/soul_cleave,if=!variable.dont_cleave\nactions.big_aoe+=/call_action_list,name=filler\n\n# Filler\nactions.filler+=/sigil_of_chains,if=talent.cycle_of_binding&talent.sigil_of_chains\nactions.filler+=/sigil_of_misery,if=talent.cycle_of_binding&talent.sigil_of_misery\nactions.filler+=/sigil_of_silence,if=talent.cycle_of_binding&talent.sigil_of_silence\nactions.filler+=/felblade\nactions.filler+=/shear\nactions.filler+=/throw_glaive\n\n## # External buffs\n## actions.externals+=/invoke_external_buff,name=symbol_of_hope\n## actions.externals+=/invoke_external_buff,name=power_infusion", ["version"] = 20240121, ["warnings"] = "The import for 'filler' required some automated changes.\nLine 5: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 5: Converted 'talent.sigil_of_chains' to 'talent.sigil_of_chains.enabled' (1x).\nLine 6: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 6: Converted 'talent.sigil_of_misery' to 'talent.sigil_of_misery.enabled' (1x).\nLine 7: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 7: Converted 'talent.sigil_of_silence' to 'talent.sigil_of_silence.enabled' (1x).\n\nThe import for 'big_aoe' required some automated changes.\nLine 1: Converted 'talent.collective_anguish' to 'talent.collective_anguish.enabled' (1x).\nLine 1: Converted 'talent.stoke_the_flames' to 'talent.stoke_the_flames.enabled' (1x).\nLine 7: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 1: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 1: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 1: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 1: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 1: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 1: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 1: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 1: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 1: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 1: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 1: Converted 'trinket.1.has_buff.crit' 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.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 2: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 2: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 2: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 2: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 2: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 3: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 4: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 4: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (1x).\nLine 6: Converted 'talent.fiery_brand' to 'talent.fiery_brand.enabled' (1x).\nLine 6: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 16: Converted 'talent.demonic' to 'talent.demonic.enabled' (1x).\nLine 19: Converted 'talent.fiery_brand' to 'talent.fiery_brand.enabled' (1x).\nLine 19: Converted 'talent.fiery_demise' to 'talent.fiery_demise.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 'fiery_demise' required some automated changes.\nLine 2: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 2: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 3: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\n\nThe import for 'single_target' required some automated changes.\nLine 3: Converted 'talent.collective_anguish' to 'talent.collective_anguish.enabled' (1x).\nLine 3: Converted 'talent.stoke_the_flames' to 'talent.stoke_the_flames.enabled' (1x).\nLine 3: Converted 'talent.burning_blood' to 'talent.burning_blood.enabled' (1x).\n\nThe import for 'small_aoe' required some automated changes.\nLine 6: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\n\nThe import for 'maintenance' required some automated changes.\nLine 1: Converted 'talent.fiery_brand' to 'talent.fiery_brand.enabled' (1x).\nLine 1: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\nLine 2: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 2: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 6: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\n\nImported 8 action lists.\n", ["author"] = "SimC", ["lists"] = { ["single_target"] = { { ["enabled"] = true, ["description"] = "Single Target", ["action"] = "the_hunt", }, { ["action"] = "soul_carver", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.collective_anguish.enabled || ( talent.stoke_the_flames.enabled & talent.burning_blood.enabled )", ["action"] = "fel_devastation", }, { ["action"] = "elysian_decree", ["enabled"] = true, }, { ["action"] = "fel_devastation", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! variable.dont_cleave", ["action"] = "soul_cleave", }, { ["action"] = "fracture", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "filler", }, }, ["big_aoe"] = { { ["enabled"] = true, ["action"] = "fel_devastation", ["description"] = "6+ targets", ["criteria"] = "talent.collective_anguish.enabled || talent.stoke_the_flames.enabled", }, { ["action"] = "the_hunt", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "elysian_decree", ["criteria"] = "fury >= 40 & ( soul_fragments <= 1 || soul_fragments >= 4 )", ["line_cd"] = "1.85", }, { ["action"] = "fel_devastation", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "soul_fragments < 3", ["action"] = "soul_carver", }, { ["enabled"] = true, ["criteria"] = "soul_fragments >= 4", ["action"] = "spirit_bomb", }, { ["enabled"] = true, ["criteria"] = "! talent.spirit_bomb.enabled & ! variable.dont_cleave", ["action"] = "soul_cleave", }, { ["action"] = "fracture", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! variable.dont_cleave", ["action"] = "soul_cleave", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "filler", }, }, ["maintenance"] = { { ["enabled"] = true, ["action"] = "fiery_brand", ["description"] = "Maintenance & upkeep", ["criteria"] = "talent.fiery_brand.enabled & ( ( active_dot.fiery_brand_dot = 0 & ( cooldown.sigil_of_flame.remains <= ( execute_time + gcd.remains ) || cooldown.soul_carver.remains <= ( execute_time + gcd.remains ) || cooldown.fel_devastation.remains <= ( execute_time + gcd.remains ) ) ) || ( talent.down_in_flames.enabled & full_recharge_time <= ( execute_time + gcd.remains ) ) )", }, { ["enabled"] = true, ["criteria"] = "talent.ascending_flame.enabled & ! talent.illuminated_sigils.enabled || ! sigil_placed & active_dot.sigil_of_flame = 0", ["action"] = "sigil_of_flame", }, { ["action"] = "immolation_aura", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( ( 5 - soul_fragments ) <= spell_targets ) & soul_fragments <= 2", ["action"] = "bulk_extraction", }, { ["enabled"] = true, ["criteria"] = "variable.can_spb", ["action"] = "spirit_bomb", }, { ["enabled"] = true, ["criteria"] = "( ( ! talent.spirit_bomb.enabled || active_enemies = 1 ) & fury.deficit >= 40 ) || ( ( cooldown.fel_devastation.remains <= ( execute_time + gcd.remains ) ) & fury < 50 )", ["action"] = "felblade", }, { ["enabled"] = true, ["criteria"] = "( cooldown.fel_devastation.remains <= ( execute_time + gcd.remains ) ) & fury < 50", ["action"] = "fracture", }, { ["enabled"] = true, ["criteria"] = "( cooldown.fel_devastation.remains <= ( execute_time + gcd.remains ) ) & fury < 50", ["action"] = "shear", }, { ["enabled"] = true, ["action"] = "spirit_bomb", ["description"] = "Don't overcap fury", ["criteria"] = "fury.deficit <= 30 & spell_targets > 1 & soul_fragments >= 4", }, { ["enabled"] = true, ["criteria"] = "fury.deficit <= 40", ["action"] = "soul_cleave", }, }, ["precombat"] = { { ["enabled"] = true, ["action"] = "sigil_of_flame", ["line_cd"] = "5", }, { ["action"] = "immolation_aura", ["enabled"] = true, }, }, ["fiery_demise"] = { { ["enabled"] = true, ["description"] = "Fiery demise window", ["action"] = "immolation_aura", }, { ["enabled"] = true, ["criteria"] = "talent.ascending_flame.enabled & ! talent.illuminated_sigils.enabled || ! sigil_placed & active_dot.sigil_of_flame = 0", ["action"] = "sigil_of_flame", }, { ["enabled"] = true, ["criteria"] = "( ! talent.spirit_bomb.enabled || ( cooldown.fel_devastation.remains <= ( execute_time + gcd.remains ) ) ) & fury < 50", ["action"] = "felblade", }, { ["action"] = "fel_devastation", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "soul_fragments < 3", ["action"] = "soul_carver", }, { ["action"] = "the_hunt", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "elysian_decree", ["criteria"] = "fury >= 40", ["line_cd"] = "1.85", }, { ["enabled"] = true, ["criteria"] = "variable.can_spb", ["action"] = "spirit_bomb", }, }, ["default"] = { { ["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 )", ["description"] = "Check if trinkets have buff effects", ["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", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.ruby_whelp_shell || trinket.t1.is.whispering_incarnate_icon", ["var_name"] = "trinket_1_exclude", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.ruby_whelp_shell || trinket.t2.is.whispering_incarnate_icon", ["var_name"] = "trinket_2_exclude", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( cooldown.fel_devastation.remains <= ( action.soul_cleave.execute_time + gcd.remains ) ) & fury < 80", ["description"] = "Don't spend fury when fel dev soon to maximize fel dev uptime", ["var_name"] = "dont_cleave", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "talent.fiery_brand.enabled & talent.fiery_demise.enabled & active_dot.fiery_brand_dot > 0", ["description"] = "Check if fiery demise is active and spread", ["var_name"] = "fd_ready", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( cooldown.fel_devastation.remains <= ( action.soul_cleave.execute_time + gcd.remains ) ) & fury < 80", ["description"] = "Don't spend fury when fel dev soon to maximize fel dev uptime", ["var_name"] = "dont_cleave", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "spell_targets.spirit_bomb = 1", ["description"] = "When to use Spirit Bomb with Focused Cleave", ["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"] = "setif", ["action"] = "variable", ["var_name"] = "can_spb", ["criteria"] = "variable.fd_ready", ["value_else"] = "( variable.small_aoe & soul_fragments >= 5 ) || ( variable.big_aoe & soul_fragments >= 4 )", ["value"] = "( variable.single_target & soul_fragments >= 5 ) || ( variable.small_aoe & soul_fragments >= 4 ) || ( variable.big_aoe & soul_fragments >= 3 )", }, { ["action"] = "disrupt", ["enabled"] = true, }, { ["action"] = "consume_magic", ["enabled"] = true, }, { ["action"] = "infernal_strike", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! buff.demon_spikes.up & tanking", ["action"] = "demon_spikes", ["use_off_gcd"] = 1, }, { ["enabled"] = true, ["criteria"] = "! buff.metamorphosis.up & ( ! talent.demonic.enabled || cooldown.fel_devastation.remains > 12 )", ["action"] = "metamorphosis", ["use_off_gcd"] = 1, }, { ["action"] = "potion", ["enabled"] = true, }, { ["action"] = "use_items", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "talent.fiery_brand.enabled & talent.fiery_demise.enabled & active_dot.fiery_brand_dot > 0", ["list_name"] = "fiery_demise", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "maintenance", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "variable.single_target", ["list_name"] = "single_target", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "variable.small_aoe", ["list_name"] = "small_aoe", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "variable.big_aoe", ["list_name"] = "big_aoe", }, }, ["small_aoe"] = { { ["enabled"] = true, ["description"] = "2-5 targets", ["action"] = "the_hunt", }, { ["enabled"] = true, ["criteria"] = "talent.collective_anguish.enabled || ( talent.stoke_the_flames.enabled & talent.burning_blood.enabled )", ["action"] = "fel_devastation", }, { ["enabled"] = true, ["action"] = "elysian_decree", ["criteria"] = "fury >= 40 & ( soul_fragments <= 1 || soul_fragments >= 4 )", ["line_cd"] = "1.85", }, { ["action"] = "fel_devastation", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "soul_fragments < 3", ["action"] = "soul_carver", }, { ["enabled"] = true, ["criteria"] = "( soul_fragments <= 1 || ! talent.spirit_bomb.enabled ) & ! variable.dont_cleave", ["action"] = "soul_cleave", }, { ["action"] = "fracture", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "filler", }, }, ["filler"] = { { ["enabled"] = true, ["criteria"] = "talent.cycle_of_binding.enabled & talent.sigil_of_chains.enabled", ["action"] = "sigil_of_chains", }, { ["enabled"] = true, ["criteria"] = "talent.cycle_of_binding.enabled & talent.sigil_of_misery.enabled", ["action"] = "sigil_of_misery", }, { ["enabled"] = true, ["criteria"] = "talent.cycle_of_binding.enabled & talent.sigil_of_silence.enabled", ["action"] = "sigil_of_silence", }, { ["action"] = "throw_glaive", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "sigil_of_chains", ["description"] = "Filler", ["criteria"] = "talent.cycle_of_binding.enabled & talent.sigil_of_chains.enabled", }, { ["enabled"] = true, ["criteria"] = "talent.cycle_of_binding.enabled & talent.sigil_of_misery.enabled", ["action"] = "sigil_of_misery", }, { ["enabled"] = true, ["criteria"] = "talent.cycle_of_binding.enabled & talent.sigil_of_silence.enabled", ["action"] = "sigil_of_silence", }, { ["action"] = "felblade", ["enabled"] = true, }, { ["action"] = "shear", ["enabled"] = true, }, { ["action"] = "throw_glaive", ["enabled"] = true, }, }, }, }, }, ["notifications"] = { ["enabled"] = false, }, }, ["Quillandria - Thunderhorn"] = { ["runOnce"] = { ["autoconvertGlowsForCustomGlow_20190326"] = true, ["autoconvertDelaySweepToExtend_20190729"] = true, ["autoconvertDisplayToggle_20190621_1"] = true, ["resetRogueMfDOption_20200226"] = true, ["resetAllPotions_20201209"] = true, ["enableAllOfTheThings_20180820"] = true, ["resetGlobalCooldownSync_20210403"] = true, ["resetPotionsToDefaults_20190717"] = true, ["forceEnableEnhancedRecheckBoomkin_20210712"] = true, ["resetAberrantPackageDates_20190728_1"] = true, }, ["specs"] = { [266] = { ["maxRefresh"] = 10, ["custom2Name"] = "Custom 2", ["throttleRefresh"] = false, ["damagePets"] = false, ["petbased"] = false, ["enhancedRecheck"] = false, ["gcdSync"] = true, ["damageDots"] = false, ["throttleTime"] = false, ["enabled"] = true, ["debuffPadding"] = 0, ["maxTime"] = 33, ["package"] = "Demonology", ["custom1Name"] = "Custom 1", ["nameplates"] = false, ["damage"] = true, ["nameplateRange"] = 8, ["cycle_min"] = 6, ["cycle"] = true, ["potion"] = "spectral_intellect", ["buffPadding"] = 0, ["potionsReset"] = 20180919.1, ["damageExpiration"] = 6, ["aoe"] = 3, ["damageRange"] = 0, }, [267] = { ["maxRefresh"] = 10, ["custom2Name"] = "Custom 2", ["throttleRefresh"] = false, ["damagePets"] = false, ["petbased"] = false, ["enhancedRecheck"] = false, ["gcdSync"] = true, ["damageDots"] = false, ["throttleTime"] = false, ["enabled"] = true, ["debuffPadding"] = 0, ["maxTime"] = 33, ["package"] = "Destruction", ["custom1Name"] = "Custom 1", ["nameplates"] = false, ["damage"] = true, ["nameplateRange"] = 8, ["cycle_min"] = 6, ["cycle"] = true, ["potion"] = "spectral_intellect", ["buffPadding"] = 0, ["potionsReset"] = 20180919.1, ["damageExpiration"] = 6, ["aoe"] = 3, ["damageRange"] = 0, }, [265] = { ["maxRefresh"] = 10, ["custom2Name"] = "Custom 2", ["throttleRefresh"] = false, ["damagePets"] = false, ["settings"] = { ["manage_ds_ticks"] = false, }, ["petbased"] = false, ["enhancedRecheck"] = false, ["gcdSync"] = true, ["damageDots"] = false, ["throttleTime"] = false, ["enabled"] = true, ["debuffPadding"] = 0, ["maxTime"] = 33, ["package"] = "Affliction", ["custom1Name"] = "Custom 1", ["nameplates"] = false, ["damage"] = true, ["nameplateRange"] = 8, ["cycle_min"] = 6, ["cycle"] = false, ["potion"] = "spectral_intellect", ["buffPadding"] = 0, ["potionsReset"] = 20180919.1, ["damageExpiration"] = 6, ["aoe"] = 3, ["damageRange"] = 0, }, [102] = { ["enhancedRecheck"] = true, }, }, ["packs"] = { ["Demonology"] = { ["source"] = "SimC", ["builtIn"] = true, ["date"] = 20211102, ["spec"] = 266, ["desc"] = "Demonology Warlock\nhttps://github.com/simulationcraft/simc/\nNovember 2, 2021\n\nChanges:\n- Spell Lock.\n- Only recommend Demonbolt pre-combat if it is instant (or hardcast for bosses).\n- Power Siphon allowed pre-combat to proc instant Demonbolt.\n- PvP talent interrupt.\n- Avoid SB->HoG spam when you're not about to summon a Tyrant.\n- Fleshcraft/Volatile Solvent cancel_if changed to interrupt_if.\n- Try to avoid wasting Demonic Core stacks.\n- Try to make opener priority only work if we can actually open with a Tyrant.", ["lists"] = { ["slow_trinkets"] = { { ["enabled"] = true, ["criteria"] = "cooldown.summon_demonic_tyrant.remains_expected < target.distance / 5 & time > variable.first_tyrant_time - ( target.distance / 5 )", ["name"] = "soulletting_ruby", ["action"] = "soulletting_ruby", }, { ["enabled"] = true, ["criteria"] = "cooldown.summon_demonic_tyrant.remains_expected < target.distance / 5 & time > variable.first_tyrant_time - ( target.distance / 5 )", ["name"] = "sunblood_amethyst", ["action"] = "sunblood_amethyst", }, { ["enabled"] = true, ["name"] = "empyreal_ordnance", ["description"] = "Ordnance has a 12 second delay and is therefore skipped for first Tyrant to line up with the rest", ["criteria"] = "cooldown.summon_demonic_tyrant.remains_expected < ( target.distance / 5 ) + 12 & cooldown.summon_demonic_tyrant.remains_expected > ( ( ( target.distance / 5 ) + 12 ) - 15 ) & time > variable.first_tyrant_time - ( ( target.distance / 5 ) + 12 )", ["action"] = "empyreal_ordnance", }, }, ["hp_trinks"] = { { ["enabled"] = true, ["name"] = "sinful_gladiators_emblem", ["action"] = "sinful_gladiators_emblem", }, { ["enabled"] = true, ["name"] = "sinful_aspirants_emblem", ["action"] = "sinful_aspirants_emblem", }, }, ["covenant_ability"] = { { ["enabled"] = true, ["criteria"] = "soulbind.grove_invigoration.enabled & ( cooldown.summon_demonic_tyrant.remains_expected < 20 || cooldown.summon_demonic_tyrant.remains_expected > 30 )", ["action"] = "soul_rot", }, { ["enabled"] = true, ["criteria"] = "soulbind.field_of_blossoms.enabled & pet.demonic_tyrant.active", ["action"] = "soul_rot", }, { ["enabled"] = true, ["criteria"] = "soulbind.wild_hunt_tactics.enabled & ! pet.demonic_tyrant.active & cooldown.summon_demonic_tyrant.remains_expected > 18", ["action"] = "soul_rot", }, { ["enabled"] = true, ["criteria"] = "( soulbind.lead_by_example.enabled || soulbind.kevins_oozeling.enabled ) & ( pet.demonic_tyrant.active & soul_shard < 2 || ! pet.demonic_tyrant.active & cooldown.summon_demonic_tyrant.remains_expected > 40 )", ["action"] = "decimating_bolt", }, { ["enabled"] = true, ["criteria"] = "( soulbind.forgeborne_reveries.enabled || ( soulbind.volatile_solvent.enabled & ! soulbind.kevins_oozeling.enabled ) ) & ! pet.demonic_tyrant.active", ["action"] = "decimating_bolt", }, { ["enabled"] = true, ["criteria"] = "soulbind.volatile_solvent.enabled", ["action"] = "fleshcraft", ["interrupt_if"] = "buff.volatile_solvent.up", }, { ["enabled"] = true, ["criteria"] = "soulbind.combat_meditation.enabled & pet.demonic_tyrant.active", ["action"] = "scouring_tithe", }, { ["enabled"] = true, ["criteria"] = "! soulbind.combat_meditation.enabled", ["action"] = "scouring_tithe", }, { ["enabled"] = true, ["criteria"] = "pet.demonic_tyrant.active & soul_shard = 0", ["action"] = "impending_catastrophe", }, }, ["tyrant_setup"] = { { ["enabled"] = true, ["criteria"] = "cooldown.summon_demonic_tyrant.remains_expected < 15", ["action"] = "nether_portal", }, { ["enabled"] = true, ["criteria"] = "cooldown.summon_demonic_tyrant.remains_expected < 17 - ( action.summon_demonic_tyrant.execute_time + action.shadow_bolt.execute_time ) & ( cooldown.call_dreadstalkers.remains < 17 - ( action.summon_demonic_tyrant.execute_time + action.summon_vilefiend.execute_time + action.shadow_bolt.execute_time ) || pet.dreadstalker.remains > cooldown.summon_demonic_tyrant.remains_expected + action.summon_demonic_tyrant.execute_time )", ["action"] = "grimoire_felguard", }, { ["enabled"] = true, ["criteria"] = "( cooldown.summon_demonic_tyrant.remains_expected < 15 - ( action.summon_demonic_tyrant.execute_time ) & ( cooldown.call_dreadstalkers.remains < 15 - ( action.summon_demonic_tyrant.execute_time + action.summon_vilefiend.execute_time ) || pet.dreadstalker.remains > cooldown.summon_demonic_tyrant.remains_expected + action.summon_demonic_tyrant.execute_time ) ) || ( ! runeforge.wilfreds_sigil_of_superior_summoning.enabled & cooldown.summon_demonic_tyrant.remains_expected > 40 )", ["action"] = "summon_vilefiend", }, { ["enabled"] = true, ["criteria"] = "cooldown.summon_demonic_tyrant.remains_expected < 12 - ( action.summon_demonic_tyrant.execute_time + action.shadow_bolt.execute_time )", ["action"] = "call_dreadstalkers", }, { ["enabled"] = true, ["criteria"] = "time > variable.first_tyrant_time & ( pet.dreadstalker.active & pet.dreadstalker.remains > action.summon_demonic_tyrant.execute_time ) & ( ! talent.summon_vilefiend.enabled || pet.vilefiend.active ) & ( soul_shard = 0 || ( pet.dreadstalker.active & pet.dreadstalker.remains < action.summon_demonic_tyrant.execute_time + action.shadow_bolt.execute_time ) || ( pet.vilefiend.active & pet.vilefiend.remains < action.summon_demonic_tyrant.execute_time + action.shadow_bolt.execute_time ) || ( buff.grimoire_felguard.up & buff.grimoire_felguard.remains < action.summon_demonic_tyrant.execute_time + action.shadow_bolt.execute_time ) )", ["action"] = "summon_demonic_tyrant", }, }, ["default"] = { { ["enabled"] = true, ["description"] = "Executed every time the actor is available.", ["action"] = "spell_lock", }, { ["action"] = "call_felhunter", ["enabled"] = true, }, { ["action"] = "axe_toss", ["enabled"] = true, }, { ["action"] = "devour_magic", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "trinkets", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "toggle.cooldowns & time < variable.first_tyrant_time & cooldown.summon_demonic_tyrant.remains < variable.first_tyrant_time - time", ["list_name"] = "opener", }, { ["enabled"] = true, ["criteria"] = "refreshable", ["action"] = "doom", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "soulbind.grove_invigoration.enabled || soulbind.field_of_blossoms.enabled || soulbind.combat_meditation.enabled || covenant.necrolord", ["list_name"] = "covenant_ability", }, { ["enabled"] = true, ["criteria"] = "( cooldown.summon_demonic_tyrant.remains_expected = 0 & time > variable.first_tyrant_time || soulbind.refined_palate.enabled & cooldown.summon_demonic_tyrant.remains_expected < 38 )", ["action"] = "potion", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "tyrant_setup", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "pet.demonic_tyrant.active", ["list_name"] = "ogcd", }, { ["enabled"] = true, ["criteria"] = "( ! runeforge.wilfreds_sigil_of_superior_summoning.enabled & cooldown.summon_demonic_tyrant.remains_expected > 9 ) || ( pet.demonic_tyrant.active & pet.demonic_tyrant.remains < 6 * gcd.max )", ["action"] = "demonic_strength", }, { ["enabled"] = true, ["criteria"] = "cooldown.summon_demonic_tyrant.remains_expected > 20 - 5 * ! runeforge.wilfreds_sigil_of_superior_summoning.enabled", ["action"] = "call_dreadstalkers", }, { ["enabled"] = true, ["criteria"] = "buff.wild_imps.stack > 1 & buff.demonic_core.stack < 3", ["action"] = "power_siphon", }, { ["enabled"] = true, ["criteria"] = "buff.tyrant.down & cooldown.summon_demonic_tyrant.remains_expected > 5", ["action"] = "bilescourge_bombers", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1 + ( 1 * talent.sacrificed_souls.enabled ) & buff.wild_imps.stack >= 6 & buff.tyrant.down & cooldown.summon_demonic_tyrant.remains_expected > 5", ["action"] = "implosion", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 2 & buff.wild_imps.stack >= 6 & buff.tyrant.down & cooldown.summon_demonic_tyrant.remains_expected > 5 & ! runeforge.implosive_potential.enabled & ( ! talent.from_the_shadows.enabled || buff.from_the_shadows.up )", ["action"] = "implosion", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 2 & buff.wild_imps.stack >= 6 & buff.implosive_potential.remains < 2 & runeforge.implosive_potential.enabled", ["action"] = "implosion", }, { ["enabled"] = true, ["criteria"] = "buff.wild_imps.stack >= 12 & talent.soul_conduit.enabled & talent.from_the_shadows.enabled & runeforge.implosive_potential.enabled & buff.tyrant.down & cooldown.summon_demonic_tyrant.remains_expected > 5", ["action"] = "implosion", }, { ["enabled"] = true, ["criteria"] = "boss & time_to_die < 30", ["action"] = "grimoire_felguard", }, { ["enabled"] = true, ["criteria"] = "boss & time_to_die < 28", ["action"] = "summon_vilefiend", }, { ["enabled"] = true, ["criteria"] = "boss & time_to_die < 15", ["action"] = "summon_demonic_tyrant", }, { ["enabled"] = true, ["criteria"] = "soul_shard = 5", ["action"] = "hand_of_guldan", }, { ["enabled"] = true, ["description"] = "If Dreadstalkers are already active, no need to save shards", ["criteria"] = "soul_shard >= 3 & ( pet.dreadstalker.active || pet.demonic_tyrant.active )", ["action"] = "hand_of_guldan", }, { ["enabled"] = true, ["criteria"] = "soul_shard >= 1 & buff.nether_portal.up & cooldown.call_dreadstalkers.remains > 2 * gcd.max", ["action"] = "hand_of_guldan", }, { ["enabled"] = true, ["criteria"] = "soul_shard >= 1 & cooldown.summon_demonic_tyrant.remains_expected < gcd.max & time > 12 - gcd.max & ( buff.dreadstalkers.up & buff.dreadstalkers.remains > action.hand_of_guldan.execute_time + action.summon_demonic_tyrant.execute_time ) & ( ! talent.summon_vilefiend.enabled || buff.vilefiend.up )", ["action"] = "hand_of_guldan", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "! covenant.venthyr", ["list_name"] = "covenant_ability", }, { ["enabled"] = true, ["description"] = "Without Sacrificed Souls, Soul Strike is stronger than Demonbolt, so it has a higher priority", ["criteria"] = "! talent.sacrificed_souls.enabled", ["action"] = "soul_strike", }, { ["enabled"] = true, ["description"] = "Spend Demonic Cores for Soul Shards until Tyrant cooldown is close to ready", ["criteria"] = "buff.demonic_core.react & soul_shard < 4 & cooldown.summon_demonic_tyrant.remains_expected > 20", ["action"] = "demonbolt", }, { ["enabled"] = true, ["description"] = "During Tyrant setup, spend Demonic Cores for Soul Shards", ["criteria"] = "buff.demonic_core.react & soul_shard < 4 & cooldown.summon_demonic_tyrant.remains_expected < 12", ["action"] = "demonbolt", }, { ["enabled"] = true, ["criteria"] = "buff.demonic_core.react & soul_shard < 4 & ( buff.demonic_core.stack > 2 || talent.sacrificed_souls.enabled )", ["action"] = "demonbolt", }, { ["enabled"] = true, ["criteria"] = "buff.demonic_core.react & soul_shard < 4 & active_enemies > 1", ["action"] = "demonbolt", }, { ["action"] = "soul_strike", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "covenant_ability", }, { ["enabled"] = true, ["description"] = "If you can get back to 5 Soul Shards before Dreadstalkers cooldown is ready, it's okay to spend them now", ["criteria"] = "soul_shard >= 3 & cooldown.summon_demonic_tyrant.remains_expected > 25 & ( talent.demonic_calling.enabled || cooldown.call_dreadstalkers.remains > ( ( 5 - soul_shard ) * action.shadow_bolt.execute_time ) + action.hand_of_guldan.execute_time )", ["action"] = "hand_of_guldan", }, { ["enabled"] = true, ["action"] = "doom", ["criteria"] = "refreshable & time > variable.first_tyrant_time", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["description"] = "Use Demonbolt if you're going to lose Demonic Core stacks, even if it'd waste a soul shard.", ["criteria"] = "buff.demonic_core.react & buff.demonic_core.remains < 1 + gcd.max * buff.demonic_core.stack", ["action"] = "demonbolt", }, { ["action"] = "shadow_bolt", ["enabled"] = true, }, }, ["precombat"] = { { ["enabled"] = true, ["op"] = "set", ["description"] = "Executed before combat begins. Accepts non-harmful actions only.", ["criteria"] = "buff.bloodlust.up", ["value"] = "10", ["action"] = "variable", ["value_else"] = "12", ["var_name"] = "first_tyrant_time", }, { ["enabled"] = true, ["name"] = "shadowed_orb_of_torment", ["action"] = "shadowed_orb_of_torment", }, { ["enabled"] = true, ["criteria"] = "time > 0 & ! pet.alive", ["action"] = "fel_domination", }, { ["action"] = "summon_felguard", ["enabled"] = true, }, { ["enabled"] = true, ["name"] = "tome_of_monstrous_constructions", ["action"] = "tome_of_monstrous_constructions", }, { ["enabled"] = true, ["name"] = "soleahs_secret_technique", ["action"] = "soleahs_secret_technique", }, { ["action"] = "fleshcraft", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.wild_imps.stack > 1 & buff.demonic_core.stack <= 2", ["action"] = "power_siphon", }, { ["enabled"] = true, ["criteria"] = "( boss || action.demonbolt.cast = 0 ) & soul_shards < 4", ["action"] = "demonbolt", }, { ["enabled"] = true, ["criteria"] = "! ( boss || action.demonbolt.cast = 0 ) || soul_shards > 3", ["action"] = "shadow_bolt", }, }, ["opener"] = { { ["enabled"] = true, ["criteria"] = "soulbind.grove_invigoration.enabled", ["action"] = "soul_rot", }, { ["action"] = "nether_portal", ["enabled"] = true, }, { ["action"] = "grimoire_felguard", ["enabled"] = true, }, { ["action"] = "summon_vilefiend", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.demonic_core.react & soul_shard < 4 & cooldown.call_dreadstalkers.up", ["action"] = "demonbolt", }, { ["enabled"] = true, ["criteria"] = "soul_shard < 5 & cooldown.call_dreadstalkers.up", ["action"] = "shadow_bolt", }, { ["action"] = "call_dreadstalkers", ["enabled"] = true, }, }, ["trinkets"] = { { ["enabled"] = true, ["criteria"] = "cooldown.summon_demonic_tyrant.remains_expected < 22", ["name"] = "shadowed_orb_of_torment", ["action"] = "shadowed_orb_of_torment", }, { ["enabled"] = true, ["criteria"] = "talent.demonic_consumption.enabled & cooldown.summon_demonic_tyrant.remains_expected < 20", ["action"] = "call_action_list", ["list_name"] = "hp_trinks", }, { ["enabled"] = true, ["description"] = "Effects that travel slowly to target require additional, separate handling", ["action"] = "call_action_list", ["list_name"] = "slow_trinkets", }, { ["enabled"] = true, ["criteria"] = "pet.demonic_tyrant.active", ["name"] = "overflowing_anima_cage", ["action"] = "overflowing_anima_cage", }, { ["enabled"] = true, ["criteria"] = "trinket.t1.has_use_buff & pet.demonic_tyrant.active", ["action"] = "trinket1", }, { ["enabled"] = true, ["criteria"] = "trinket.t2.has_use_buff & pet.demonic_tyrant.active", ["action"] = "trinket2", }, { ["enabled"] = true, ["criteria"] = "time > variable.first_tyrant_time & cooldown.summon_demonic_tyrant.remains_expected > 20", ["action"] = "call_action_list", ["list_name"] = "pure_damage_trinks", }, }, ["pure_damage_trinks"] = { { ["enabled"] = true, ["name"] = "dreadfire_vessel", ["action"] = "dreadfire_vessel", }, { ["enabled"] = true, ["name"] = "soul_igniter", ["action"] = "soul_igniter", }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1", ["name"] = "glyph_of_assimilation", ["action"] = "glyph_of_assimilation", }, { ["enabled"] = true, ["name"] = "darkmoon_deck_putrescence", ["action"] = "darkmoon_deck_putrescence", }, { ["enabled"] = true, ["name"] = "ebonsoul_vise", ["action"] = "ebonsoul_vise", }, { ["enabled"] = true, ["name"] = "unchained_gladiators_shackles", ["action"] = "unchained_gladiators_shackles", }, }, ["ogcd"] = { { ["action"] = "berserking", ["enabled"] = true, }, { ["action"] = "blood_fury", ["enabled"] = true, }, { ["action"] = "fireblood", ["enabled"] = true, }, { ["action"] = "use_items", ["enabled"] = true, }, }, }, ["version"] = 20211102, ["warnings"] = "WARNING: The import for 'slow_trinkets' required some automated changes.\nLine 1: Converted SimC syntax % to Lua division operator (/) (2x).\nLine 2: Converted SimC syntax % to Lua division operator (/) (2x).\nLine 3: Converted SimC syntax % to Lua division operator (/) (3x).\n\nWARNING: The import for 'covenant_ability' required some automated changes.\nLine 1: Converted 'soulbind.X' to 'soulbind.X.enabled' (1x).\nLine 2: Converted 'soulbind.X' to 'soulbind.X.enabled' (1x).\nLine 3: Converted 'soulbind.X' to 'soulbind.X.enabled' (1x).\nLine 4: Converted 'soulbind.X' to 'soulbind.X.enabled' (2x).\nLine 5: Converted 'soulbind.X' to 'soulbind.X.enabled' (3x).\nLine 6: Converted 'soulbind.X' to 'soulbind.X.enabled' at EOL (1x).\nLine 7: Converted 'soulbind.X' to 'soulbind.X.enabled' (1x).\nLine 8: Converted 'soulbind.X' to 'soulbind.X.enabled' at EOL (1x).\n\nWARNING: The import for 'tyrant_setup' required some automated changes.\nLine 3: Converted 'runeforge.X' to 'runeforge.X.enabled' (1x).\n\nWARNING: The import for 'default' required some automated changes.\nLine 8: Converted 'soulbind.X' to 'soulbind.X.enabled' (3x).\nLine 9: Converted 'soulbind.X' to 'soulbind.X.enabled' (1x).\nLine 12: Converted 'runeforge.X' to 'runeforge.X.enabled' (1x).\nLine 13: Converted 'runeforge.X' to 'runeforge.X.enabled' at EOL (1x).\nLine 17: Converted 'runeforge.X' to 'runeforge.X.enabled' (1x).\nLine 18: Converted 'runeforge.X' to 'runeforge.X.enabled' at EOL (1x).\nLine 19: Converted 'runeforge.X' to 'runeforge.X.enabled' (1x).\n\nWARNING: The import for 'trinkets' required some automated changes.\nLine 5: Converted 'trinket.1.X' to 'trinket.t1.X' (1x).\nLine 6: Converted 'trinket.2.X' to 'trinket.t2.X' (1x).\n\nWARNING: The import for 'opener' required some automated changes.\nLine 1: Converted 'soulbind.X' to 'soulbind.X.enabled' at EOL (1x).\n\nImported 10 action lists.\n", ["author"] = "", ["profile"] = "## Demonology Warlock\n## https://github.com/simulationcraft/simc/\n## November 2, 2021\n\n## Changes:\n## - Spell Lock.\n## - Only recommend Demonbolt pre-combat if it is instant (or hardcast for bosses).\n## - Power Siphon allowed pre-combat to proc instant Demonbolt.\n## - PvP talent interrupt.\n## - Avoid SB->HoG spam when you're not about to summon a Tyrant.\n## - Fleshcraft/Volatile Solvent cancel_if changed to interrupt_if.\n## - Try to avoid wasting Demonic Core stacks.\n## - Try to make opener priority only work if we can actually open with a Tyrant.\n\n# Executed before combat begins. Accepts non-harmful actions only.\nactions.precombat+=/variable,name=first_tyrant_time,op=set,if=buff.bloodlust.up,value=10,value_else=12\nactions.precombat+=/use_item,name=shadowed_orb_of_torment\nactions.precombat+=/fel_domination,if=time>0&!pet.alive\nactions.precombat+=/summon_pet\nactions.precombat+=/use_item,name=tome_of_monstrous_constructions\nactions.precombat+=/use_item,name=soleahs_secret_technique\nactions.precombat+=/fleshcraft\nactions.precombat+=/power_siphon,if=buff.wild_imps.stack>1&buff.demonic_core.stack<=2\nactions.precombat+=/demonbolt,if=(boss||action.demonbolt.cast=0)&soul_shards<4\nactions.precombat+=/shadow_bolt,if=!(boss||action.demonbolt.cast=0)||soul_shards>3\n\n# Executed every time the actor is available.\nactions=spell_lock\nactions+=/call_felhunter\nactions+=/axe_toss\nactions+=/devour_magic\nactions+=/call_action_list,name=trinkets\nactions+=/call_action_list,name=opener,strict=1,if=toggle.cooldowns&timevariable.first_tyrant_time||soulbind.refined_palate&cooldown.summon_demonic_tyrant.remains_expected<38)\nactions+=/call_action_list,name=tyrant_setup\nactions+=/call_action_list,name=ogcd,strict=1,if=pet.demonic_tyrant.active\nactions+=/demonic_strength,if=(!runeforge.wilfreds_sigil_of_superior_summoning&cooldown.summon_demonic_tyrant.remains_expected>9)||(pet.demonic_tyrant.active&pet.demonic_tyrant.remains<6*gcd.max)\nactions+=/call_dreadstalkers,if=cooldown.summon_demonic_tyrant.remains_expected>20-5*!runeforge.wilfreds_sigil_of_superior_summoning\nactions+=/power_siphon,if=buff.wild_imps.stack>1&buff.demonic_core.stack<3\nactions+=/bilescourge_bombers,if=buff.tyrant.down&cooldown.summon_demonic_tyrant.remains_expected>5\nactions+=/implosion,if=active_enemies>1+(1*talent.sacrificed_souls.enabled)&buff.wild_imps.stack>=6&buff.tyrant.down&cooldown.summon_demonic_tyrant.remains_expected>5\nactions+=/implosion,if=active_enemies>2&buff.wild_imps.stack>=6&buff.tyrant.down&cooldown.summon_demonic_tyrant.remains_expected>5&!runeforge.implosive_potential&(!talent.from_the_shadows.enabled||buff.from_the_shadows.up)\nactions+=/implosion,if=active_enemies>2&buff.wild_imps.stack>=6&buff.implosive_potential.remains<2&runeforge.implosive_potential\nactions+=/implosion,if=buff.wild_imps.stack>=12&talent.soul_conduit.enabled&talent.from_the_shadows.enabled&runeforge.implosive_potential&buff.tyrant.down&cooldown.summon_demonic_tyrant.remains_expected>5\nactions+=/grimoire_felguard,if=boss&time_to_die<30\nactions+=/summon_vilefiend,if=boss&time_to_die<28\nactions+=/summon_demonic_tyrant,if=boss&time_to_die<15\nactions+=/hand_of_guldan,if=soul_shard=5\n# If Dreadstalkers are already active, no need to save shards\nactions+=/hand_of_guldan,if=soul_shard>=3&(pet.dreadstalker.active||pet.demonic_tyrant.active)\nactions+=/hand_of_guldan,if=soul_shard>=1&buff.nether_portal.up&cooldown.call_dreadstalkers.remains>2*gcd.max\nactions+=/hand_of_guldan,if=soul_shard>=1&cooldown.summon_demonic_tyrant.remains_expected12-gcd.max&(buff.dreadstalkers.up&buff.dreadstalkers.remains>action.hand_of_guldan.execute_time+action.summon_demonic_tyrant.execute_time)&(!talent.summon_vilefiend.enabled||buff.vilefiend.up)\nactions+=/call_action_list,name=covenant_ability,strict=1,if=!covenant.venthyr\n# Without Sacrificed Souls, Soul Strike is stronger than Demonbolt, so it has a higher priority\nactions+=/soul_strike,if=!talent.sacrificed_souls.enabled\n# Spend Demonic Cores for Soul Shards until Tyrant cooldown is close to ready\nactions+=/demonbolt,if=buff.demonic_core.react&soul_shard<4&cooldown.summon_demonic_tyrant.remains_expected>20\n# During Tyrant setup, spend Demonic Cores for Soul Shards\nactions+=/demonbolt,if=buff.demonic_core.react&soul_shard<4&cooldown.summon_demonic_tyrant.remains_expected<12\nactions+=/demonbolt,if=buff.demonic_core.react&soul_shard<4&(buff.demonic_core.stack>2||talent.sacrificed_souls.enabled)\nactions+=/demonbolt,if=buff.demonic_core.react&soul_shard<4&active_enemies>1\nactions+=/soul_strike\nactions+=/call_action_list,name=covenant_ability\n# If you can get back to 5 Soul Shards before Dreadstalkers cooldown is ready, it's okay to spend them now\nactions+=/hand_of_guldan,if=soul_shard>=3&cooldown.summon_demonic_tyrant.remains_expected>25&(talent.demonic_calling.enabled||cooldown.call_dreadstalkers.remains>((5-soul_shard)*action.shadow_bolt.execute_time)+action.hand_of_guldan.execute_time)\nactions+=/doom,cycle_targets=1,if=refreshable&time>variable.first_tyrant_time\n# Use Demonbolt if you're going to lose Demonic Core stacks, even if it'd waste a soul shard.\nactions+=/demonbolt,if=buff.demonic_core.react&buff.demonic_core.remains<1+gcd.max*buff.demonic_core.stack\nactions+=/shadow_bolt\n\nactions.slow_trinkets=use_item,name=soulletting_ruby,if=cooldown.summon_demonic_tyrant.remains_expectedvariable.first_tyrant_time-(target.distance%5)\nactions.slow_trinkets+=/use_item,name=sunblood_amethyst,if=cooldown.summon_demonic_tyrant.remains_expectedvariable.first_tyrant_time-(target.distance%5)\n# Ordnance has a 12 second delay and is therefore skipped for first Tyrant to line up with the rest\nactions.slow_trinkets+=/use_item,name=empyreal_ordnance,if=cooldown.summon_demonic_tyrant.remains_expected<(target.distance%5)+12&cooldown.summon_demonic_tyrant.remains_expected>(((target.distance%5)+12)-15)&time>variable.first_tyrant_time-((target.distance%5)+12)\n\nactions.covenant_ability=soul_rot,if=soulbind.grove_invigoration&(cooldown.summon_demonic_tyrant.remains_expected<20||cooldown.summon_demonic_tyrant.remains_expected>30)\nactions.covenant_ability+=/soul_rot,if=soulbind.field_of_blossoms&pet.demonic_tyrant.active\nactions.covenant_ability+=/soul_rot,if=soulbind.wild_hunt_tactics&!pet.demonic_tyrant.active&cooldown.summon_demonic_tyrant.remains_expected>18\nactions.covenant_ability+=/decimating_bolt,if=(soulbind.lead_by_example||soulbind.kevins_oozeling)&(pet.demonic_tyrant.active&soul_shard<2||!pet.demonic_tyrant.active&cooldown.summon_demonic_tyrant.remains_expected>40)\nactions.covenant_ability+=/decimating_bolt,if=(soulbind.forgeborne_reveries||(soulbind.volatile_solvent&!soulbind.kevins_oozeling))&!pet.demonic_tyrant.active\nactions.covenant_ability+=/fleshcraft,if=soulbind.volatile_solvent,interrupt_if=buff.volatile_solvent.up\nactions.covenant_ability+=/scouring_tithe,if=soulbind.combat_meditation&pet.demonic_tyrant.active\nactions.covenant_ability+=/scouring_tithe,if=!soulbind.combat_meditation\nactions.covenant_ability+=/impending_catastrophe,if=pet.demonic_tyrant.active&soul_shard=0\n\nactions.hp_trinks=use_item,name=sinful_gladiators_emblem\nactions.hp_trinks+=/use_item,name=sinful_aspirants_emblem\n\nactions.ogcd=berserking\nactions.ogcd+=/blood_fury\nactions.ogcd+=/fireblood\nactions.ogcd+=/use_items\n\nactions.opener=soul_rot,if=soulbind.grove_invigoration\nactions.opener+=/nether_portal\nactions.opener+=/grimoire_felguard\nactions.opener+=/summon_vilefiend\nactions.opener+=/demonbolt,if=buff.demonic_core.react&soul_shard<4&cooldown.call_dreadstalkers.up\nactions.opener+=/shadow_bolt,if=soul_shard<5&cooldown.call_dreadstalkers.up\nactions.opener+=/call_dreadstalkers\n\nactions.pure_damage_trinks=use_item,name=dreadfire_vessel\nactions.pure_damage_trinks+=/use_item,name=soul_igniter\nactions.pure_damage_trinks+=/use_item,name=glyph_of_assimilation,if=active_enemies=1\nactions.pure_damage_trinks+=/use_item,name=darkmoon_deck_putrescence\nactions.pure_damage_trinks+=/use_item,name=ebonsoul_vise\nactions.pure_damage_trinks+=/use_item,name=unchained_gladiators_shackles\n\nactions.trinkets=use_item,name=shadowed_orb_of_torment,if=cooldown.summon_demonic_tyrant.remains_expected<22\nactions.trinkets+=/call_action_list,name=hp_trinks,if=talent.demonic_consumption.enabled&cooldown.summon_demonic_tyrant.remains_expected<20\n# Effects that travel slowly to target require additional, separate handling\nactions.trinkets+=/call_action_list,name=slow_trinkets\nactions.trinkets+=/use_item,name=overflowing_anima_cage,if=pet.demonic_tyrant.active\nactions.trinkets+=/trinket1,if=trinket.1.has_use_buff&pet.demonic_tyrant.active\nactions.trinkets+=/trinket2,if=trinket.2.has_use_buff&pet.demonic_tyrant.active\nactions.trinkets+=/call_action_list,name=pure_damage_trinks,if=time>variable.first_tyrant_time&cooldown.summon_demonic_tyrant.remains_expected>20\n\nactions.tyrant_setup=nether_portal,if=cooldown.summon_demonic_tyrant.remains_expected<15\nactions.tyrant_setup+=/grimoire_felguard,if=cooldown.summon_demonic_tyrant.remains_expected<17-(action.summon_demonic_tyrant.execute_time+action.shadow_bolt.execute_time)&(cooldown.call_dreadstalkers.remains<17-(action.summon_demonic_tyrant.execute_time+action.summon_vilefiend.execute_time+action.shadow_bolt.execute_time)||pet.dreadstalker.remains>cooldown.summon_demonic_tyrant.remains_expected+action.summon_demonic_tyrant.execute_time)\nactions.tyrant_setup+=/summon_vilefiend,if=(cooldown.summon_demonic_tyrant.remains_expected<15-(action.summon_demonic_tyrant.execute_time)&(cooldown.call_dreadstalkers.remains<15-(action.summon_demonic_tyrant.execute_time+action.summon_vilefiend.execute_time)||pet.dreadstalker.remains>cooldown.summon_demonic_tyrant.remains_expected+action.summon_demonic_tyrant.execute_time))||(!runeforge.wilfreds_sigil_of_superior_summoning&cooldown.summon_demonic_tyrant.remains_expected>40)\nactions.tyrant_setup+=/call_dreadstalkers,if=cooldown.summon_demonic_tyrant.remains_expected<12-(action.summon_demonic_tyrant.execute_time+action.shadow_bolt.execute_time)\nactions.tyrant_setup+=/summon_demonic_tyrant,if=time>variable.first_tyrant_time&(pet.dreadstalker.active&pet.dreadstalker.remains>action.summon_demonic_tyrant.execute_time)&(!talent.summon_vilefiend.enabled||pet.vilefiend.active)&(soul_shard=0||(pet.dreadstalker.active&pet.dreadstalker.remains0&!pet.alive&!buff.grimoire_of_sacrifice.up\nactions.precombat+=/summon_pet\nactions.precombat+=/use_item,name=tome_of_monstrous_constructions\nactions.precombat+=/use_item,name=soleahs_secret_technique\nactions.precombat+=/grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice.enabled\nactions.precombat+=/fleshcraft\nactions.precombat+=/variable,name=dots_ready,value=active_dot.corruption>0&active_dot.agony>0&active_dot.unstable_affliction>0&(!talent.siphon_life.enabled||active_dot.siphon_life>0)&(dot.phantom_singularity.ticking||!talent.phantom_singularity.enabled)\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/seed_of_corruption,line_cd=10,if=spell_targets.seed_of_corruption_aoe>=3\nactions.precombat+=/haunt\nactions.precombat+=/unstable_affliction\n\n## Executed every time the actor is available.\nactions=spell_lock\nactions+=/devour_magic\nactions+=/call_action_list,name=aoe,strict=1,if=active_enemies>3\n# Action lists for trinket behavior. Stats are saved for before Soul Rot/Impending Catastrophe/Phantom Singularity, otherwise on cooldown\nactions+=/call_action_list,name=trinket_split_check\nactions+=/call_action_list,name=delayed_trinkets\nactions+=/call_action_list,name=stat_trinkets,strict=1,if=(dot.soul_rot.ticking||dot.impending_catastrophe_dot.ticking||dot.phantom_singularity.ticking)&soul_shard>3||dot.vile_taint.ticking||talent.sow_the_seeds\nactions+=/call_action_list,name=damage_trinkets,if=covenant.night_fae&(!variable.trinket_split||cooldown.soul_rot.remains>20||(variable.trinket_one&cooldown.soul_rot.remains20||(variable.trinket_one&cooldown.impending_catastrophe.remains20||(variable.trinket_one&cooldown.phantom_singularity.remains20||(variable.trinket_one&cooldown.summon_darkglare.remains2||!talent.phantom_singularity))||(covenant.night_fae&dot.soul_rot.ticking&cooldown.summon_darkglare.remains<2&(dot.phantom_singularity.remains>2||!talent.phantom_singularity))||((covenant.necrolord||covenant.kyrian||covenant.none)&dot.phantom_singularity.ticking&dot.phantom_singularity.remains<2)\n# Refresh dots early if going into a shard spending phase\nactions+=/call_action_list,name=dot_prep,if=(covenant.night_fae&!dot.soul_rot.ticking&cooldown.soul_rot.remains<4)||(covenant.venthyr&!dot.impending_catastrophe_dot.ticking&cooldown.impending_catastrophe.remains<4)||((covenant.necrolord||covenant.kyrian||covenant.none)&talent.phantom_singularity&!dot.phantom_singularity.ticking&cooldown.phantom_singularity.remains<4)\n# If Phantom Singularity is ticking, it is safe to use Dark Soul\nactions+=/dark_soul,if=dot.phantom_singularity.ticking\nactions+=/dark_soul,if=!talent.phantom_singularity&(dot.soul_rot.ticking||dot.impending_catastrophe_dot.ticking)\n# Sync Phantom Singularity with Venthyr/Night Fae covenant dot, otherwise use on cooldown. If Empyreal Ordnance buff is incoming, hold until it's ready (18 seconds after use)\nactions+=/phantom_singularity,if=covenant.night_fae&time>5&cooldown.soul_rot.remains<1&(trinket.empyreal_ordnance.cooldown.remains<162||!equipped.empyreal_ordnance)\nactions+=/phantom_singularity,if=covenant.venthyr&time>5&cooldown.impending_catastrophe.remains<1&(trinket.empyreal_ordnance.cooldown.remains<162||!equipped.empyreal_ordnance)\n# Necrolord with Malefic Wrath casts phantom singularity in line with Decimating Bolt\nactions+=/phantom_singularity,if=covenant.necrolord&runeforge.malefic_wrath&time>5&cooldown.decimating_bolt.remains<3&(trinket.empyreal_ordnance.cooldown.remains<162||!equipped.empyreal_ordnance)\n# Other covenants (including non-MW Necro) cast PS on cooldown\nactions+=/phantom_singularity,if=(covenant.kyrian||covenant.none||(covenant.necrolord&!runeforge.malefic_wrath))&(trinket.empyreal_ordnance.cooldown.remains<162||!equipped.empyreal_ordnance)\nactions+=/phantom_singularity,if=boss&fight_remains<16\n# If Phantom Singularity is ticking, it's time to use other major dots\nactions+=/call_action_list,name=covenant,if=dot.phantom_singularity.ticking&(covenant.night_fae||covenant.venthyr)\nactions+=/agony,cycle_targets=1,if=dot.agony.remains<4\nactions+=/haunt\n# Sow the Seeds on 3 targets if it isn't currently in flight or on the target. With Siphon Life it's also better to use Seed over manually applying 3 Corruptions.\nactions+=/seed_of_corruption,if=active_enemies>2&talent.sow_the_seeds&!dot.seed_of_corruption.ticking&!in_flight\nactions+=/seed_of_corruption,if=active_enemies>2&talent.siphon_life&!dot.seed_of_corruption.ticking&!in_flight&dot.corruption.remains<4\nactions+=/vile_taint,if=(soul_shard>1||active_enemies>2)&cooldown.summon_darkglare.remains>12\nactions+=/unstable_affliction,if=active_dot.unstable_affliction=0||ticking&dot.unstable_affliction.remains<4\nactions+=/siphon_life,cycle_targets=1,if=dot.siphon_life.remains<4\nactions+=/call_action_list,name=covenant,strict=1,if=!covenant.necrolord\n# Apply Corruption manually on 1-2 targets, or on 3 with Absolute Corruption\nactions+=/corruption,cycle_targets=1,if=active_enemies<4-(talent.sow_the_seeds||talent.siphon_life)&dot.corruption.remains<2\n# After the opener, spend a shard when at 5 on Malefic Rapture to avoid overcapping\nactions+=/malefic_rapture,if=soul_shard>4&time>21\n# When not syncing Phantom Singularity to Venthyr/Night Fae, Summon Darkglare if all dots are applied\nactions+=/call_action_list,name=darkglare_prep,if=(covenant.venthyr&!talent.phantom_singularity&dot.impending_catastrophe_dot.ticking&cooldown.summon_darkglare.ready)||(covenant.night_fae&!talent.phantom_singularity&dot.soul_rot.ticking&cooldown.summon_darkglare.ready)||((covenant.necrolord||covenant.kyrian||covenant.none)&cooldown.summon_darkglare.ready)\n# Use Dark Soul if Darkglare won't be ready again, or if there will be at least 2 more Darkglare uses\nactions+=/dark_soul,if=boss&cooldown.summon_darkglare.remains>fight_remains&(!talent.phantom_singularity||cooldown.phantom_singularity.remains>fight_remains)\nactions+=/dark_soul,if=boss&!talent.phantom_singularity&cooldown.summon_darkglare.remains+cooldown.summon_darkglare.duration1)\n# Use Malefic Rapture to maintain the malefic wrath buff until shards need to be generated for the next burst window (20 seconds is more than sufficient to generate 3 shards)\nactions+=/malefic_rapture,if=runeforge.malefic_wrath&cooldown.soul_rot.remains>20&buff.malefic_wrath.remains<4\n# Maintain Malefic Wrath at all times for the Necrolord or Kyrian covenant\nactions+=/malefic_rapture,if=runeforge.malefic_wrath&(covenant.necrolord||covenant.kyrian)&buff.malefic_wrath.remains<4\n# Use Malefic Rapture on Phantom Singularity casts, making sure to save a shard to stack Malefic Wrath if using it\nactions+=/malefic_rapture,if=talent.phantom_singularity&(dot.phantom_singularity.ticking||cooldown.phantom_singularity.remains>25||boss&time_to_die1)\nactions+=/malefic_rapture,if=talent.sow_the_seeds\n# Drain Life is only a DPS gain with Inevitable Demise near max stacks. If fight is about to end do not miss spending the stacks\nactions+=/drain_life,if=buff.inevitable_demise.stack>40||buff.inevitable_demise.up&boss&fight_remains<4\nactions+=/call_action_list,name=covenant\nactions+=/agony,cycle_targets=1,if=refreshable\nactions+=/unstable_affliction,if=active_dot.unstable_affliction=0||ticking&refreshable\nactions+=/siphon_life,cycle_targets=1,if=refreshable\nactions+=/corruption,cycle_targets=1,if=refreshable&active_enemies<4-(talent.sow_the_seeds||talent.siphon_life)\nactions+=/fleshcraft,if=soulbind.volatile_solvent,interrupt_if=buff.volatile_solvent.up\nactions+=/drain_soul,interrupt=1\nactions+=/shadow_bolt\n\nactions.aoe=phantom_singularity\nactions.aoe+=/haunt\nactions.aoe+=/call_action_list,name=darkglare_prep,if=covenant.venthyr&dot.impending_catastrophe_dot.ticking&cooldown.summon_darkglare.ready&(dot.phantom_singularity.remains>2||!talent.phantom_singularity)||covenant.night_fae&dot.soul_rot.ticking&cooldown.summon_darkglare.ready&(dot.phantom_singularity.remains>2||!talent.phantom_singularity)||(covenant.necrolord||covenant.kyrian||covenant.none)&dot.phantom_singularity.ticking&dot.phantom_singularity.remains<2\nactions.aoe+=/seed_of_corruption,if=talent.sow_the_seeds&can_seed\nactions.aoe+=/seed_of_corruption,if=!talent.sow_the_seeds&!dot.seed_of_corruption.ticking&!in_flight&dot.corruption.refreshable\nactions.aoe+=/agony,cycle_targets=1,if=active_dot.agony<4&!dot.agony.ticking\nactions.aoe+=/agony,cycle_targets=1,if=active_dot.agony>=4&refreshable&dot.agony.ticking\nactions.aoe+=/unstable_affliction,if=active_dot.unstable_affliction=0||ticking&refreshable\nactions.aoe+=/unstable_affliction,cycle_targets=1,if=!ticking&pvptalent.rampant_afflictions.enabled&active_dot.unstable_affliction<3\nactions.aoe+=/vile_taint,if=soul_shard>1\nactions.aoe+=/call_action_list,name=covenant,strict=1,if=!covenant.necrolord\nactions.aoe+=/call_action_list,name=darkglare_prep,if=(covenant.venthyr&(cooldown.impending_catastrophe.ready||dot.impending_catastrophe_dot.ticking)&cooldown.summon_darkglare.ready&(dot.phantom_singularity.remains>2||!talent.phantom_singularity))&((covenant.necrolord||covenant.kyrian||covenant.none)&cooldown.summon_darkglare.remains<2&(dot.phantom_singularity.remains>2||!talent.phantom_singularity))||(covenant.night_fae&(cooldown.soul_rot.ready||dot.soul_rot.ticking)&cooldown.summon_darkglare.remains<2&(dot.phantom_singularity.remains>2||!talent.phantom_singularity))\nactions.aoe+=/dark_soul,if=boss&cooldown.summon_darkglare.remains>fight_remains&(!talent.phantom_singularity||cooldown.phantom_singularity.remains>fight_remains)\nactions.aoe+=/dark_soul,if=boss&cooldown.summon_darkglare.remains+cooldown.summon_darkglare.duration4\nactions.aoe+=/siphon_life,cycle_targets=1,if=active_dot.siphon_life<=3&refreshable&!dot.siphon_life.ticking\nactions.aoe+=/call_action_list,name=covenant,strict=1,if=covenant.necrolord\nactions.aoe+=/drain_life,if=buff.inevitable_demise.stack>=50||boss&buff.inevitable_demise.up&fight_remains<5||buff.inevitable_demise.stack>=35&dot.soul_rot.ticking\nactions.aoe+=/fleshcraft,if=soulbind.volatile_solvent,interrupt_if=buff.volatile_solvent.up\nactions.aoe+=/drain_soul,interrupt=1\nactions.aoe+=/shadow_bolt\n\nactions.covenant=impending_catastrophe,if=!talent.phantom_singularity&(cooldown.summon_darkglare.remains<10||cooldown.summon_darkglare.remains>50||cooldown.summon_darkglare.remains>25&conduit.corrupting_leer)\nactions.covenant+=/impending_catastrophe,if=talent.phantom_singularity&dot.phantom_singularity.ticking\nactions.covenant+=/decimating_bolt,if=cooldown.summon_darkglare.remains>5&(debuff.haunt.remains>4||!talent.haunt)\nactions.covenant+=/soul_rot,if=!talent.phantom_singularity&(cooldown.summon_darkglare.remains<5||cooldown.summon_darkglare.remains>50||cooldown.summon_darkglare.remains>25&conduit.corrupting_leer)\nactions.covenant+=/soul_rot,if=talent.phantom_singularity&dot.phantom_singularity.ticking\nactions.covenant+=/scouring_tithe\n\nactions.damage_trinkets=use_item,name=soul_igniter\nactions.damage_trinkets+=/use_item,name=dreadfire_vessel\nactions.damage_trinkets+=/use_item,name=glyph_of_assimilation\nactions.damage_trinkets+=/use_item,name=unchained_gladiators_shackles\nactions.damage_trinkets+=/use_item,name=ebonsoul_vice\n\nactions.darkglare_prep=vile_taint\nactions.darkglare_prep+=/dark_soul\nactions.darkglare_prep+=/potion\nactions.darkglare_prep+=/fireblood\nactions.darkglare_prep+=/blood_fury\nactions.darkglare_prep+=/berserking\nactions.darkglare_prep+=/call_action_list,name=covenant,if=!covenant.necrolord\nactions.darkglare_prep+=/summon_darkglare\n\nactions.delayed_trinkets=use_item,name=empyreal_ordnance,if=(covenant.night_fae&cooldown.soul_rot.remains<20)||(covenant.venthyr&cooldown.impending_catastrophe.remains<20)||(covenant.necrolord||covenant.kyrian||covenant.none)\nactions.delayed_trinkets+=/use_item,name=sunblood_amethyst,if=(covenant.night_fae&cooldown.soul_rot.remains<6)||(covenant.venthyr&cooldown.impending_catastrophe.remains<6)||(covenant.necrolord||covenant.kyrian||covenant.none)\nactions.delayed_trinkets+=/use_item,name=soulletting_ruby,if=(covenant.night_fae&cooldown.soul_rot.remains<8)||(covenant.venthyr&cooldown.impending_catastrophe.remains<8)||(covenant.necrolord||covenant.kyrian||covenant.none)\nactions.delayed_trinkets+=/use_item,name=shadowed_orb_of_torment,if=(covenant.night_fae&cooldown.soul_rot.remains<4)||(covenant.venthyr&cooldown.impending_catastrophe.remains<4)||(covenant.necrolord||covenant.kyrian||covenant.none)\n\nactions.dot_prep=agony,if=dot.agony.remains<8&cooldown.summon_darkglare.remains>dot.agony.remains\nactions.dot_prep+=/siphon_life,if=dot.siphon_life.remains<8&cooldown.summon_darkglare.remains>dot.siphon_life.remains\nactions.dot_prep+=/unstable_affliction,if=dot.unstable_affliction.remains<8&cooldown.summon_darkglare.remains>dot.unstable_affliction.remains\nactions.dot_prep+=/corruption,if=dot.corruption.remains<8&cooldown.summon_darkglare.remains>dot.corruption.remains\n\nactions.item=use_items\n\nactions.se=haunt\nactions.se+=/drain_soul,interrupt_global=1,interrupt_if=debuff.shadow_embrace.stack>=3\nactions.se+=/shadow_bolt\n\nactions.stat_trinkets=use_item,name=inscrutable_quantum_device\nactions.stat_trinkets+=/use_item,name=instructors_divine_bell\nactions.stat_trinkets+=/use_item,name=overflowing_anima_cage\nactions.stat_trinkets+=/use_item,name=darkmoon_deck_putrescence\nactions.stat_trinkets+=/use_item,name=macabre_sheet_music\nactions.stat_trinkets+=/use_item,name=flame_of_battle\nactions.stat_trinkets+=/use_item,name=wakeners_frond\nactions.stat_trinkets+=/use_item,name=tablet_of_despair\nactions.stat_trinkets+=/use_item,name=sinful_aspirants_badge_of_ferocity\nactions.stat_trinkets+=/use_item,name=sinful_gladiators_badge_of_ferocity\nactions.stat_trinkets+=/blood_fury\nactions.stat_trinkets+=/fireblood\nactions.stat_trinkets+=/berserking\n\n# We don't support ^ as XOR in Lua, so I've converted this to arithmetic.\nactions.trinket_split_check=variable,name=special_equipped,value=((1*equipped.empyreal_ordnance)+(1*equipped.inscrutable_quantum_device)+(1*equipped.soulletting_ruby)+(1*equipped.sunblood_amethyst))=1\nactions.trinket_split_check+=/variable,name=trinket_one,value=(trinket.1.has_proc&trinket.1.has_cooldown)\nactions.trinket_split_check+=/variable,name=trinket_two,value=(trinket.2.has_proc&trinket.2.has_cooldown)\nactions.trinket_split_check+=/variable,name=damage_trinket,value=(!(trinket.1.has_proc&trinket.1.has_cooldown))||(!(trinket.2.has_proc&trinket.2.has_cooldown))||equipped.glyph_of_assimilation\nactions.trinket_split_check+=/variable,name=trinket_split,value=(variable.trinket_one&variable.damage_trinket)||(variable.trinket_two&variable.damage_trinket)||(1*variable.trinket_one)+(1*variable.special_equipped)=1||(1*variable.trinket_two)+(1*variable.special_equipped)=1", ["version"] = 20210818, ["warnings"] = "WARNING: The import for 'trinket_split_check' required some automated changes.\nLine 2: Converted 'trinket.1.X' to 'trinket.t1.X' (2x).\nLine 3: Converted 'trinket.2.X' to 'trinket.t2.X' (2x).\nLine 4: Converted 'trinket.1.X' to 'trinket.t1.X' (2x).\nLine 4: Converted 'trinket.2.X' to 'trinket.t2.X' (2x).\n\nWARNING: The import for 'covenant' required some automated changes.\nLine 1: Converted 'talent.X' to 'talent.X.enabled' (1x).\nLine 1: Converted 'conduit.X' to 'conduit.X.enabled' (1x).\nLine 2: Converted 'talent.X' to 'talent.X.enabled' (1x).\nLine 3: Converted 'talent.X' to 'talent.X.enabled' (1x).\nLine 4: Converted 'talent.X' to 'talent.X.enabled' (1x).\nLine 4: Converted 'conduit.X' to 'conduit.X.enabled' (1x).\nLine 5: Converted 'talent.X' to 'talent.X.enabled' (1x).\n\nWARNING: The import for 'default' required some automated changes.\nLine 6: Converted 'talent.X' to 'talent.X.enabled' at EOL (1x).\nLine 7: Converted 'trinket.1.X' to 'trinket.t1.X' (4x).\nLine 7: Converted 'trinket.2.X' to 'trinket.t2.X' (4x).\nLine 9: Converted 'talent.X' to 'talent.X.enabled' (2x).\nLine 10: Converted 'talent.X' to 'talent.X.enabled' (1x).\nLine 12: Converted 'talent.X' to 'talent.X.enabled' (1x).\nLine 13: Converted 'trinket.abc.cooldown' to 'cooldown.abc' (1x).\nLine 14: Converted 'trinket.abc.cooldown' to 'cooldown.abc' (1x).\nLine 15: Converted 'runeforge.X' to 'runeforge.X.enabled' (1x).\nLine 15: Converted 'trinket.abc.cooldown' to 'cooldown.abc' (1x).\nLine 16: Converted 'runeforge.X' to 'runeforge.X.enabled' (1x).\nLine 16: Converted 'trinket.abc.cooldown' to 'cooldown.abc' (1x).\nLine 21: Converted 'talent.X' to 'talent.X.enabled' (1x).\nLine 22: Converted 'talent.X' to 'talent.X.enabled' (1x).\nLine 27: Converted 'talent.X' to 'talent.X.enabled' (2x).\nLine 29: Converted 'talent.X' to 'talent.X.enabled' (2x).\nLine 30: Converted 'talent.X' to 'talent.X.enabled' (1x).\nLine 31: Converted 'talent.X' to 'talent.X.enabled' (1x).\nLine 34: Converted 'runeforge.X' to 'runeforge.X.enabled' (1x).\nLine 35: Converted 'runeforge.X' to 'runeforge.X.enabled' (1x).\nLine 36: Converted 'runeforge.X' to 'runeforge.X.enabled' (1x).\nLine 37: Converted 'talent.X' to 'talent.X.enabled' (1x).\nLine 37: Converted 'runeforge.X' to 'runeforge.X.enabled' (1x).\nLine 38: Converted 'talent.X' to 'talent.X.enabled' at EOL (1x).\nLine 44: Converted 'talent.X' to 'talent.X.enabled' (2x).\nLine 45: Converted 'soulbind.X' to 'soulbind.X.enabled' at EOL (1x).\n\nWARNING: The import for 'aoe' required some automated changes.\nLine 3: Converted 'talent.X' to 'talent.X.enabled' (2x).\nLine 4: Converted 'talent.X' to 'talent.X.enabled' (1x).\nLine 5: Converted 'talent.X' to 'talent.X.enabled' (1x).\nLine 12: Converted 'talent.X' to 'talent.X.enabled' (3x).\nLine 13: Converted 'talent.X' to 'talent.X.enabled' (1x).\nLine 18: Converted 'talent.X' to 'talent.X.enabled' at EOL (1x).\nLine 20: Converted 'talent.X' to 'talent.X.enabled' at EOL (1x).\nLine 21: Converted 'talent.X' to 'talent.X.enabled' at EOL (1x).\nLine 26: Converted 'soulbind.X' to 'soulbind.X.enabled' at EOL (1x).\n\nImported 12 action lists.\n", ["lists"] = { ["darkglare_prep"] = { { ["action"] = "vile_taint", ["enabled"] = true, }, { ["action"] = "dark_soul", ["enabled"] = true, }, { ["action"] = "potion", ["enabled"] = true, }, { ["action"] = "fireblood", ["enabled"] = true, }, { ["action"] = "blood_fury", ["enabled"] = true, }, { ["action"] = "berserking", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! covenant.necrolord", ["action"] = "call_action_list", ["list_name"] = "covenant", }, { ["action"] = "summon_darkglare", ["enabled"] = true, }, }, ["trinket_split_check"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( ( 1 * equipped.empyreal_ordnance ) + ( 1 * equipped.inscrutable_quantum_device ) + ( 1 * equipped.soulletting_ruby ) + ( 1 * equipped.sunblood_amethyst ) ) = 1", ["description"] = "We don't support ", ["var_name"] = "special_equipped", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( trinket.t1.has_proc & trinket.t1.has_cooldown )", ["var_name"] = "trinket_one", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( trinket.t2.has_proc & trinket.t2.has_cooldown )", ["var_name"] = "trinket_two", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( ! ( trinket.t1.has_proc & trinket.t1.has_cooldown ) ) || ( ! ( trinket.t2.has_proc & trinket.t2.has_cooldown ) ) || equipped.glyph_of_assimilation", ["var_name"] = "damage_trinket", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( variable.trinket_one & variable.damage_trinket ) || ( variable.trinket_two & variable.damage_trinket ) || ( 1 * variable.trinket_one ) + ( 1 * variable.special_equipped ) = 1 || ( 1 * variable.trinket_two ) + ( 1 * variable.special_equipped ) = 1", ["var_name"] = "trinket_split", }, }, ["damage_trinkets"] = { { ["enabled"] = true, ["name"] = "soul_igniter", ["action"] = "soul_igniter", }, { ["enabled"] = true, ["name"] = "dreadfire_vessel", ["action"] = "dreadfire_vessel", }, { ["enabled"] = true, ["name"] = "glyph_of_assimilation", ["action"] = "glyph_of_assimilation", }, { ["enabled"] = true, ["name"] = "unchained_gladiators_shackles", ["action"] = "unchained_gladiators_shackles", }, { ["enabled"] = true, ["name"] = "ebonsoul_vice", ["action"] = "ebonsoul_vice", }, }, ["delayed_trinkets"] = { { ["enabled"] = true, ["criteria"] = "( covenant.night_fae & cooldown.soul_rot.remains < 20 ) || ( covenant.venthyr & cooldown.impending_catastrophe.remains < 20 ) || ( covenant.necrolord || covenant.kyrian || covenant.none )", ["name"] = "empyreal_ordnance", ["action"] = "empyreal_ordnance", }, { ["enabled"] = true, ["criteria"] = "( covenant.night_fae & cooldown.soul_rot.remains < 6 ) || ( covenant.venthyr & cooldown.impending_catastrophe.remains < 6 ) || ( covenant.necrolord || covenant.kyrian || covenant.none )", ["name"] = "sunblood_amethyst", ["action"] = "sunblood_amethyst", }, { ["enabled"] = true, ["criteria"] = "( covenant.night_fae & cooldown.soul_rot.remains < 8 ) || ( covenant.venthyr & cooldown.impending_catastrophe.remains < 8 ) || ( covenant.necrolord || covenant.kyrian || covenant.none )", ["name"] = "soulletting_ruby", ["action"] = "soulletting_ruby", }, { ["enabled"] = true, ["criteria"] = "( covenant.night_fae & cooldown.soul_rot.remains < 4 ) || ( covenant.venthyr & cooldown.impending_catastrophe.remains < 4 ) || ( covenant.necrolord || covenant.kyrian || covenant.none )", ["name"] = "shadowed_orb_of_torment", ["action"] = "shadowed_orb_of_torment", }, }, ["covenant"] = { { ["enabled"] = true, ["criteria"] = "! talent.phantom_singularity.enabled & ( cooldown.summon_darkglare.remains < 10 || cooldown.summon_darkglare.remains > 50 || cooldown.summon_darkglare.remains > 25 & conduit.corrupting_leer.enabled )", ["action"] = "impending_catastrophe", }, { ["enabled"] = true, ["criteria"] = "talent.phantom_singularity.enabled & dot.phantom_singularity.ticking", ["action"] = "impending_catastrophe", }, { ["enabled"] = true, ["criteria"] = "cooldown.summon_darkglare.remains > 5 & ( debuff.haunt.remains > 4 || ! talent.haunt.enabled )", ["action"] = "decimating_bolt", }, { ["enabled"] = true, ["criteria"] = "! talent.phantom_singularity.enabled & ( cooldown.summon_darkglare.remains < 5 || cooldown.summon_darkglare.remains > 50 || cooldown.summon_darkglare.remains > 25 & conduit.corrupting_leer.enabled )", ["action"] = "soul_rot", }, { ["enabled"] = true, ["criteria"] = "talent.phantom_singularity.enabled & dot.phantom_singularity.ticking", ["action"] = "soul_rot", }, { ["action"] = "scouring_tithe", ["enabled"] = true, }, }, ["dot_prep"] = { { ["enabled"] = true, ["criteria"] = "dot.agony.remains < 8 & cooldown.summon_darkglare.remains > dot.agony.remains", ["action"] = "agony", }, { ["enabled"] = true, ["criteria"] = "dot.siphon_life.remains < 8 & cooldown.summon_darkglare.remains > dot.siphon_life.remains", ["action"] = "siphon_life", }, { ["enabled"] = true, ["criteria"] = "dot.unstable_affliction.remains < 8 & cooldown.summon_darkglare.remains > dot.unstable_affliction.remains", ["action"] = "unstable_affliction", }, { ["enabled"] = true, ["criteria"] = "dot.corruption.remains < 8 & cooldown.summon_darkglare.remains > dot.corruption.remains", ["action"] = "corruption", }, }, ["default"] = { { ["action"] = "spell_lock", ["enabled"] = true, }, { ["action"] = "devour_magic", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "active_enemies > 3", ["list_name"] = "aoe", }, { ["enabled"] = true, ["description"] = "Action lists for trinket behavior. Stats are saved for before Soul Rot/Impending Catastrophe/Phantom Singularity, otherwise on cooldown", ["action"] = "call_action_list", ["list_name"] = "trinket_split_check", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "delayed_trinkets", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "( dot.soul_rot.ticking || dot.impending_catastrophe_dot.ticking || dot.phantom_singularity.ticking ) & soul_shard > 3 || dot.vile_taint.ticking || talent.sow_the_seeds.enabled", ["list_name"] = "stat_trinkets", }, { ["enabled"] = true, ["criteria"] = "covenant.night_fae & ( ! variable.trinket_split || cooldown.soul_rot.remains > 20 || ( variable.trinket_one & cooldown.soul_rot.remains < trinket.t1.cooldown.remains ) || ( variable.trinket_two & cooldown.soul_rot.remains < trinket.t2.cooldown.remains ) ) || covenant.venthyr & ( ! variable.trinket_split || cooldown.impending_catastrophe.remains > 20 || ( variable.trinket_one & cooldown.impending_catastrophe.remains < trinket.t1.cooldown.remains ) || ( variable.trinket_two & cooldown.impending_catastrophe.remains < trinket.t2.cooldown.remains ) ) || ( covenant.necrolord || covenant.kyrian || covenant.none ) & ( ! variable.trinket_split || cooldown.phantom_singularity.remains > 20 || ( variable.trinket_one & cooldown.phantom_singularity.remains < trinket.t1.cooldown.remains ) || ( variable.trinket_two & cooldown.phantom_singularity.remains < trinket.t2.cooldown.remains ) ) || ! talent.phantom_singularity.enabled & ( ! variable.trinket_split || cooldown.summon_darkglare.remains > 20 || ( variable.trinket_one & cooldown.summon_darkglare.remains < trinket.t1.cooldown.remains ) || ( variable.trinket_two & cooldown.summon_darkglare.remains < trinket.t2.cooldown.remains ) )", ["action"] = "call_action_list", ["list_name"] = "damage_trinkets", }, { ["enabled"] = true, ["description"] = "Burn soul shards if fight is almost over", ["criteria"] = "boss & fight_remains < execute_time * soul_shard & dot.unstable_affliction.ticking", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["action"] = "call_action_list", ["description"] = "If covenant dot/Phantom Singularity is running, use Darkglare to extend the current set", ["criteria"] = "( covenant.venthyr & dot.impending_catastrophe_dot.ticking & cooldown.summon_darkglare.remains < 2 & ( dot.phantom_singularity.remains > 2 || ! talent.phantom_singularity.enabled ) ) || ( covenant.night_fae & dot.soul_rot.ticking & cooldown.summon_darkglare.remains < 2 & ( dot.phantom_singularity.remains > 2 || ! talent.phantom_singularity.enabled ) ) || ( ( covenant.necrolord || covenant.kyrian || covenant.none ) & dot.phantom_singularity.ticking & dot.phantom_singularity.remains < 2 )", ["list_name"] = "darkglare_prep", }, { ["enabled"] = true, ["action"] = "call_action_list", ["description"] = "Refresh dots early if going into a shard spending phase", ["criteria"] = "( covenant.night_fae & ! dot.soul_rot.ticking & cooldown.soul_rot.remains < 4 ) || ( covenant.venthyr & ! dot.impending_catastrophe_dot.ticking & cooldown.impending_catastrophe.remains < 4 ) || ( ( covenant.necrolord || covenant.kyrian || covenant.none ) & talent.phantom_singularity.enabled & ! dot.phantom_singularity.ticking & cooldown.phantom_singularity.remains < 4 )", ["list_name"] = "dot_prep", }, { ["enabled"] = true, ["description"] = "If Phantom Singularity is ticking, it is safe to use Dark Soul", ["criteria"] = "dot.phantom_singularity.ticking", ["action"] = "dark_soul", }, { ["enabled"] = true, ["criteria"] = "! talent.phantom_singularity.enabled & ( dot.soul_rot.ticking || dot.impending_catastrophe_dot.ticking )", ["action"] = "dark_soul", }, { ["enabled"] = true, ["description"] = "Sync Phantom Singularity with Venthyr/Night Fae covenant dot, otherwise use on cooldown. If Empyreal Ordnance buff is incoming, hold until it's ready (18 seconds after use)", ["criteria"] = "covenant.night_fae & time > 5 & cooldown.soul_rot.remains < 1 & ( cooldown.empyreal_ordnance.remains < 162 || ! equipped.empyreal_ordnance )", ["action"] = "phantom_singularity", }, { ["enabled"] = true, ["criteria"] = "covenant.venthyr & time > 5 & cooldown.impending_catastrophe.remains < 1 & ( cooldown.empyreal_ordnance.remains < 162 || ! equipped.empyreal_ordnance )", ["action"] = "phantom_singularity", }, { ["enabled"] = true, ["description"] = "Necrolord with Malefic Wrath casts phantom singularity in line with Decimating Bolt", ["criteria"] = "covenant.necrolord & runeforge.malefic_wrath.enabled & time > 5 & cooldown.decimating_bolt.remains < 3 & ( cooldown.empyreal_ordnance.remains < 162 || ! equipped.empyreal_ordnance )", ["action"] = "phantom_singularity", }, { ["enabled"] = true, ["description"] = "Other covenants (including non-MW Necro) cast PS on cooldown", ["criteria"] = "( covenant.kyrian || covenant.none || ( covenant.necrolord & ! runeforge.malefic_wrath.enabled ) ) & ( cooldown.empyreal_ordnance.remains < 162 || ! equipped.empyreal_ordnance )", ["action"] = "phantom_singularity", }, { ["enabled"] = true, ["criteria"] = "boss & fight_remains < 16", ["action"] = "phantom_singularity", }, { ["enabled"] = true, ["action"] = "call_action_list", ["description"] = "If Phantom Singularity is ticking, it's time to use other major dots", ["criteria"] = "dot.phantom_singularity.ticking & ( covenant.night_fae || covenant.venthyr )", ["list_name"] = "covenant", }, { ["enabled"] = true, ["action"] = "agony", ["criteria"] = "dot.agony.remains < 4", ["cycle_targets"] = 1, }, { ["action"] = "haunt", ["enabled"] = true, }, { ["enabled"] = true, ["description"] = "Sow the Seeds on 3 targets if it isn't currently in flight or on the target. With Siphon Life it's also better to use Seed over manually applying 3 Corruptions.", ["criteria"] = "active_enemies > 2 & talent.sow_the_seeds.enabled & ! dot.seed_of_corruption.ticking & ! in_flight", ["action"] = "seed_of_corruption", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 2 & talent.siphon_life.enabled & ! dot.seed_of_corruption.ticking & ! in_flight & dot.corruption.remains < 4", ["action"] = "seed_of_corruption", }, { ["enabled"] = true, ["criteria"] = "( soul_shard > 1 || active_enemies > 2 ) & cooldown.summon_darkglare.remains > 12", ["action"] = "vile_taint", }, { ["enabled"] = true, ["criteria"] = "active_dot.unstable_affliction = 0 || ticking & dot.unstable_affliction.remains < 4", ["action"] = "unstable_affliction", }, { ["enabled"] = true, ["action"] = "siphon_life", ["criteria"] = "dot.siphon_life.remains < 4", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "! covenant.necrolord", ["list_name"] = "covenant", }, { ["enabled"] = true, ["action"] = "corruption", ["cycle_targets"] = 1, ["criteria"] = "active_enemies < 4 - ( talent.sow_the_seeds.enabled || talent.siphon_life.enabled ) & dot.corruption.remains < 2", ["description"] = "Apply Corruption manually on 1-2 targets, or on 3 with Absolute Corruption", }, { ["enabled"] = true, ["description"] = "After the opener, spend a shard when at 5 on Malefic Rapture to avoid overcapping", ["criteria"] = "soul_shard > 4 & time > 21", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["action"] = "call_action_list", ["description"] = "When not syncing Phantom Singularity to Venthyr/Night Fae, Summon Darkglare if all dots are applied", ["criteria"] = "( covenant.venthyr & ! talent.phantom_singularity.enabled & dot.impending_catastrophe_dot.ticking & cooldown.summon_darkglare.ready ) || ( covenant.night_fae & ! talent.phantom_singularity.enabled & dot.soul_rot.ticking & cooldown.summon_darkglare.ready ) || ( ( covenant.necrolord || covenant.kyrian || covenant.none ) & cooldown.summon_darkglare.ready )", ["list_name"] = "darkglare_prep", }, { ["enabled"] = true, ["description"] = "Use Dark Soul if Darkglare won't be ready again, or if there will be at least 2 more Darkglare uses", ["criteria"] = "boss & cooldown.summon_darkglare.remains > fight_remains & ( ! talent.phantom_singularity.enabled || cooldown.phantom_singularity.remains > fight_remains )", ["action"] = "dark_soul", }, { ["enabled"] = true, ["criteria"] = "boss & ! talent.phantom_singularity.enabled & cooldown.summon_darkglare.remains + cooldown.summon_darkglare.duration < fight_remains", ["action"] = "dark_soul", }, { ["enabled"] = true, ["description"] = "Catch-all item usage for anything not specified elsewhere", ["action"] = "call_action_list", ["list_name"] = "item", }, { ["enabled"] = true, ["criteria"] = "talent.shadow_embrace.enabled & ( debuff.shadow_embrace.stack < ( 2 - action.shadow_bolt.in_flight ) || debuff.shadow_embrace.remains < 3 )", ["action"] = "call_action_list", ["list_name"] = "se", }, { ["enabled"] = true, ["description"] = "Use Malefic Rapture when major dots are up, or if there will be significant time until the next Phantom Singularity. If utilizing Malefic Wrath, hold a shard to refresh the buff", ["criteria"] = "( dot.vile_taint.ticking || dot.impending_catastrophe_dot.ticking || dot.soul_rot.ticking ) & ( ! runeforge.malefic_wrath.enabled || buff.malefic_wrath.stack < 3 || soul_shard > 1 )", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["description"] = "Use Malefic Rapture to maintain the malefic wrath buff until shards need to be generated for the next burst window (20 seconds is more than sufficient to generate 3 shards)", ["criteria"] = "runeforge.malefic_wrath.enabled & cooldown.soul_rot.remains > 20 & buff.malefic_wrath.remains < 4", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["description"] = "Maintain Malefic Wrath at all times for the Necrolord or Kyrian covenant", ["criteria"] = "runeforge.malefic_wrath.enabled & ( covenant.necrolord || covenant.kyrian ) & buff.malefic_wrath.remains < 4", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["description"] = "Use Malefic Rapture on Phantom Singularity casts, making sure to save a shard to stack Malefic Wrath if using it", ["criteria"] = "talent.phantom_singularity.enabled & ( dot.phantom_singularity.ticking || cooldown.phantom_singularity.remains > 25 || boss & time_to_die < cooldown.phantom_singularity.remains ) & ( ! runeforge.malefic_wrath.enabled || buff.malefic_wrath.stack < 3 || soul_shard > 1 )", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "talent.sow_the_seeds.enabled", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["description"] = "Drain Life is only a DPS gain with Inevitable Demise near max stacks. If fight is about to end do not miss spending the stacks", ["criteria"] = "buff.inevitable_demise.stack > 40 || buff.inevitable_demise.up & boss & fight_remains < 4", ["action"] = "drain_life", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "covenant", }, { ["enabled"] = true, ["action"] = "agony", ["criteria"] = "refreshable", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "active_dot.unstable_affliction = 0 || ticking & refreshable", ["action"] = "unstable_affliction", }, { ["enabled"] = true, ["action"] = "siphon_life", ["criteria"] = "refreshable", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "corruption", ["criteria"] = "refreshable & active_enemies < 4 - ( talent.sow_the_seeds.enabled || talent.siphon_life.enabled )", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "soulbind.volatile_solvent.enabled", ["action"] = "fleshcraft", ["interrupt_if"] = "buff.volatile_solvent.up", }, { ["interrupt"] = "1", ["action"] = "drain_soul", ["enabled"] = true, }, { ["action"] = "shadow_bolt", ["enabled"] = true, }, }, ["precombat"] = { { ["enabled"] = true, ["criteria"] = "time > 0 & ! pet.alive & ! buff.grimoire_of_sacrifice.up", ["action"] = "fel_domination", }, { ["action"] = "summon_felhunter", ["enabled"] = true, }, { ["enabled"] = true, ["name"] = "tome_of_monstrous_constructions", ["action"] = "tome_of_monstrous_constructions", }, { ["enabled"] = true, ["name"] = "soleahs_secret_technique", ["action"] = "soleahs_secret_technique", }, { ["enabled"] = true, ["criteria"] = "talent.grimoire_of_sacrifice.enabled", ["action"] = "grimoire_of_sacrifice", }, { ["action"] = "fleshcraft", ["enabled"] = true, }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "active_dot.corruption > 0 & active_dot.agony > 0 & active_dot.unstable_affliction > 0 & ( ! talent.siphon_life.enabled || active_dot.siphon_life > 0 ) & ( dot.phantom_singularity.ticking || ! talent.phantom_singularity.enabled )", ["var_name"] = "dots_ready", }, { ["enabled"] = true, ["name"] = "azsharas_font_of_power", ["action"] = "azsharas_font_of_power", }, { ["enabled"] = true, ["action"] = "seed_of_corruption", ["criteria"] = "spell_targets.seed_of_corruption_aoe >= 3", ["line_cd"] = "10", }, { ["action"] = "haunt", ["enabled"] = true, }, { ["action"] = "unstable_affliction", ["enabled"] = true, }, }, ["aoe"] = { { ["action"] = "phantom_singularity", ["enabled"] = true, }, { ["action"] = "haunt", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "covenant.venthyr & dot.impending_catastrophe_dot.ticking & cooldown.summon_darkglare.ready & ( dot.phantom_singularity.remains > 2 || ! talent.phantom_singularity.enabled ) || covenant.night_fae & dot.soul_rot.ticking & cooldown.summon_darkglare.ready & ( dot.phantom_singularity.remains > 2 || ! talent.phantom_singularity.enabled ) || ( covenant.necrolord || covenant.kyrian || covenant.none ) & dot.phantom_singularity.ticking & dot.phantom_singularity.remains < 2", ["action"] = "call_action_list", ["list_name"] = "darkglare_prep", }, { ["enabled"] = true, ["criteria"] = "talent.sow_the_seeds.enabled & can_seed", ["action"] = "seed_of_corruption", }, { ["enabled"] = true, ["criteria"] = "! talent.sow_the_seeds.enabled & ! dot.seed_of_corruption.ticking & ! in_flight & dot.corruption.refreshable", ["action"] = "seed_of_corruption", }, { ["enabled"] = true, ["action"] = "agony", ["criteria"] = "active_dot.agony < 4 & ! dot.agony.ticking", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "agony", ["criteria"] = "active_dot.agony >= 4 & refreshable & dot.agony.ticking", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "active_dot.unstable_affliction = 0 || ticking & refreshable", ["action"] = "unstable_affliction", }, { ["enabled"] = true, ["action"] = "unstable_affliction", ["criteria"] = "! ticking & pvptalent.rampant_afflictions.enabled & active_dot.unstable_affliction < 3", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "soul_shard > 1", ["action"] = "vile_taint", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "! covenant.necrolord", ["list_name"] = "covenant", }, { ["enabled"] = true, ["criteria"] = "( covenant.venthyr & ( cooldown.impending_catastrophe.ready || dot.impending_catastrophe_dot.ticking ) & cooldown.summon_darkglare.ready & ( dot.phantom_singularity.remains > 2 || ! talent.phantom_singularity.enabled ) ) & ( ( covenant.necrolord || covenant.kyrian || covenant.none ) & cooldown.summon_darkglare.remains < 2 & ( dot.phantom_singularity.remains > 2 || ! talent.phantom_singularity.enabled ) ) || ( covenant.night_fae & ( cooldown.soul_rot.ready || dot.soul_rot.ticking ) & cooldown.summon_darkglare.remains < 2 & ( dot.phantom_singularity.remains > 2 || ! talent.phantom_singularity.enabled ) )", ["action"] = "call_action_list", ["list_name"] = "darkglare_prep", }, { ["enabled"] = true, ["criteria"] = "boss & cooldown.summon_darkglare.remains > fight_remains & ( ! talent.phantom_singularity.enabled || cooldown.phantom_singularity.remains > fight_remains )", ["action"] = "dark_soul", }, { ["enabled"] = true, ["criteria"] = "boss & cooldown.summon_darkglare.remains + cooldown.summon_darkglare.duration < fight_remains", ["action"] = "dark_soul", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "item", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "delayed_trinkets", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "damage_trinkets", }, { ["enabled"] = true, ["criteria"] = "dot.phantom_singularity.ticking || ! talent.phantom_singularity.enabled", ["action"] = "call_action_list", ["list_name"] = "stat_trinkets", }, { ["enabled"] = true, ["criteria"] = "dot.vile_taint.ticking", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "dot.soul_rot.ticking & ! talent.sow_the_seeds.enabled", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "! talent.vile_taint.enabled", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["criteria"] = "soul_shard > 4", ["action"] = "malefic_rapture", }, { ["enabled"] = true, ["action"] = "siphon_life", ["criteria"] = "active_dot.siphon_life <= 3 & refreshable & ! dot.siphon_life.ticking", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "covenant.necrolord", ["list_name"] = "covenant", }, { ["enabled"] = true, ["criteria"] = "buff.inevitable_demise.stack >= 50 || boss & buff.inevitable_demise.up & fight_remains < 5 || buff.inevitable_demise.stack >= 35 & dot.soul_rot.ticking", ["action"] = "drain_life", }, { ["enabled"] = true, ["criteria"] = "soulbind.volatile_solvent.enabled", ["action"] = "fleshcraft", ["interrupt_if"] = "buff.volatile_solvent.up", }, { ["interrupt"] = "1", ["action"] = "drain_soul", ["enabled"] = true, }, { ["action"] = "shadow_bolt", ["enabled"] = true, }, }, ["item"] = { { ["action"] = "use_items", ["enabled"] = true, }, }, ["se"] = { { ["action"] = "haunt", ["enabled"] = true, }, { ["interrupt_if"] = "debuff.shadow_embrace.stack>=3", ["enabled"] = true, ["action"] = "drain_soul", ["interrupt_global"] = "1", }, { ["action"] = "shadow_bolt", ["enabled"] = true, }, }, ["stat_trinkets"] = { { ["enabled"] = true, ["name"] = "inscrutable_quantum_device", ["action"] = "inscrutable_quantum_device", }, { ["enabled"] = true, ["name"] = "instructors_divine_bell", ["action"] = "instructors_divine_bell", }, { ["enabled"] = true, ["name"] = "overflowing_anima_cage", ["action"] = "overflowing_anima_cage", }, { ["enabled"] = true, ["name"] = "darkmoon_deck_putrescence", ["action"] = "darkmoon_deck_putrescence", }, { ["enabled"] = true, ["name"] = "macabre_sheet_music", ["action"] = "macabre_sheet_music", }, { ["enabled"] = true, ["name"] = "flame_of_battle", ["action"] = "flame_of_battle", }, { ["enabled"] = true, ["name"] = "wakeners_frond", ["action"] = "wakeners_frond", }, { ["enabled"] = true, ["name"] = "tablet_of_despair", ["action"] = "tablet_of_despair", }, { ["enabled"] = true, ["name"] = "sinful_aspirants_badge_of_ferocity", ["action"] = "sinful_aspirants_badge_of_ferocity", }, { ["enabled"] = true, ["name"] = "sinful_gladiators_badge_of_ferocity", ["action"] = "sinful_gladiators_badge_of_ferocity", }, { ["action"] = "blood_fury", ["enabled"] = true, }, { ["action"] = "fireblood", ["enabled"] = true, }, { ["action"] = "berserking", ["enabled"] = true, }, }, }, ["author"] = "SimC", }, ["Destruction"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20210916, ["author"] = "SimC", ["desc"] = "Destruction Warlock\nSeptember 16, 2021\n\nChanges:\n- Fleshcraft/Volatile Solvent cancel_if changed to interrupt_if.", ["lists"] = { ["essences"] = { { ["action"] = "worldvein_resonance", ["enabled"] = true, }, { ["action"] = "memory_of_lucid_dreams", ["enabled"] = true, }, { ["action"] = "blood_of_the_enemy", ["enabled"] = true, }, { ["action"] = "guardian_of_azeroth", ["enabled"] = true, }, { ["action"] = "ripple_in_space", ["enabled"] = true, }, { ["action"] = "focused_azerite_beam", ["enabled"] = true, }, { ["action"] = "purifying_blast", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "target.health_pct > 80 || target.health_pct < 20 || fight_remains < 20 || target.time_to_pct_20 > 40", ["action"] = "reaping_flames", }, { ["action"] = "concentrated_flame", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.reckless_force.remains", ["action"] = "the_unbound_force", }, }, ["havoc"] = { { ["enabled"] = true, ["criteria"] = "buff.backdraft.down & soul_shard >= 1 & soul_shard <= 4", ["action"] = "conflagrate", }, { ["enabled"] = true, ["criteria"] = "cast_time < havoc_remains", ["action"] = "soul_fire", }, { ["enabled"] = true, ["criteria"] = "cast_time < havoc_remains & soulbind.lead_by_example.enabled", ["action"] = "decimating_bolt", }, { ["enabled"] = true, ["criteria"] = "cast_time < havoc_remains", ["action"] = "scouring_tithe", }, { ["enabled"] = true, ["criteria"] = "talent.internal_combustion.enabled & remains < duration * 0.5 || ! talent.internal_combustion.enabled & refreshable", ["action"] = "immolate", }, { ["enabled"] = true, ["criteria"] = "cast_time < havoc_remains", ["action"] = "chaos_bolt", }, { ["action"] = "shadowburn", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "cast_time < havoc_remains", ["action"] = "incinerate", }, }, ["precombat"] = { { ["enabled"] = true, ["description"] = "Executed before combat begins. Accepts non-harmful actions only.", ["criteria"] = "time > 0 & ! pet.alive", ["action"] = "fel_domination", }, { ["action"] = "summon_imp", ["enabled"] = true, }, { ["enabled"] = true, ["name"] = "tome_of_monstrous_constructions", ["action"] = "tome_of_monstrous_constructions", }, { ["enabled"] = true, ["name"] = "soleahs_secret_technique", ["action"] = "soleahs_secret_technique", }, { ["action"] = "fleshcraft", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.grimoire_of_sacrifice.enabled", ["action"] = "grimoire_of_sacrifice", }, { ["enabled"] = true, ["name"] = "shadowed_orb_of_torment", ["action"] = "shadowed_orb_of_torment", }, { ["action"] = "soul_fire", ["enabled"] = true, }, { ["action"] = "incinerate", ["enabled"] = true, }, }, ["aoe"] = { { ["enabled"] = true, ["criteria"] = "pet.infernal.active & ( ! cooldown.havoc.ready || active_enemies > 3 )", ["action"] = "rain_of_fire", }, { ["action"] = "soul_rot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "dot.immolate.remains > cast_time", ["action"] = "channel_demonfire", }, { ["enabled"] = true, ["action"] = "immolate", ["criteria"] = "remains < 5 & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > remains )", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cds", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "essences", }, { ["enabled"] = true, ["action"] = "havoc", ["criteria"] = "active_enemies < 4", ["cycle_targets"] = 1, }, { ["action"] = "rain_of_fire", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "havoc", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "( soulbind.lead_by_example.enabled || ! talent.fire_and_brimstone.enabled )", ["action"] = "decimating_bolt", }, { ["enabled"] = true, ["criteria"] = "talent.fire_and_brimstone.enabled & buff.backdraft.up & soul_shard < 5 - 0.2 * active_enemies", ["action"] = "incinerate", }, { ["action"] = "soul_fire", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.backdraft.down", ["action"] = "conflagrate", }, { ["enabled"] = true, ["criteria"] = "target.health.pct < 20", ["action"] = "shadowburn", }, { ["enabled"] = true, ["criteria"] = "! ( talent.fire_and_brimstone.enabled || talent.inferno.enabled )", ["action"] = "scouring_tithe", }, { ["enabled"] = true, ["criteria"] = "! ( talent.fire_and_brimstone.enabled || talent.inferno.enabled )", ["action"] = "impending_catastrophe", }, { ["action"] = "incinerate", ["enabled"] = true, }, }, ["cds"] = { { ["enabled"] = true, ["criteria"] = "cooldown.summon_infernal.remains < 3 || target.time_to_die < 42", ["name"] = "shadowed_orb_of_torment", ["action"] = "shadowed_orb_of_torment", }, { ["action"] = "summon_infernal", ["enabled"] = true, }, { ["action"] = "dark_soul_instability", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "pet.infernal.active", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "pet.infernal.active", ["action"] = "berserking", }, { ["enabled"] = true, ["criteria"] = "pet.infernal.active", ["action"] = "blood_fury", }, { ["enabled"] = true, ["criteria"] = "pet.infernal.active", ["action"] = "fireblood", }, { ["enabled"] = true, ["criteria"] = "pet.infernal.active || target.time_to_die < 20", ["action"] = "use_items", }, }, ["default"] = { { ["enabled"] = true, ["description"] = "Executed every time the actor is available.", ["action"] = "spell_lock", }, { ["enabled"] = true, ["criteria"] = "havoc_active & active_enemies > 1 & active_enemies < 5 - talent.inferno.enabled + ( talent.inferno.enabled & talent.internal_combustion.enabled )", ["action"] = "call_action_list", ["list_name"] = "havoc", }, { ["enabled"] = true, ["criteria"] = "soulbind.volatile_solvent.enabled", ["action"] = "fleshcraft", ["interrupt_if"] = "buff.volatile_solvent.up", }, { ["enabled"] = true, ["criteria"] = "talent.roaring_blaze.enabled & debuff.roaring_blaze.remains < 1.5", ["action"] = "conflagrate", }, { ["enabled"] = true, ["criteria"] = "! ( pet.infernal.active & dot.immolate.remains + 1 > pet.infernal.remains ) || spell_targets.cataclysm > 1", ["action"] = "cataclysm", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 2", ["action"] = "call_action_list", ["list_name"] = "aoe", }, { ["enabled"] = true, ["action"] = "soul_fire", ["criteria"] = "refreshable & soul_shard <= 4 & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > remains )", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "immolate", ["criteria"] = "refreshable & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > remains )", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "talent.internal_combustion.enabled & action.chaos_bolt.in_flight & remains < duration * 0.5", ["action"] = "immolate", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cds", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "essences", }, { ["action"] = "channel_demonfire", ["enabled"] = true, }, { ["action"] = "scouring_tithe", ["enabled"] = true, }, { ["action"] = "decimating_bolt", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "havoc", ["criteria"] = "dot.immolate.remains > dot.immolate.duration * 0.5 || ! talent.internal_combustion.enabled", ["cycle_targets"] = 1, }, { ["action"] = "impending_catastrophe", ["enabled"] = true, }, { ["action"] = "soul_rot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "runeforge.odr_shawl_of_the_ymirjar.equipped", ["action"] = "havoc", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "active_enemies > 1 & cooldown.havoc.remains <= 10 || cooldown.summon_infernal.remains <= 15 & talent.dark_soul_instability.enabled & cooldown.dark_soul_instability.remains <= 15 || talent.dark_soul_instability.enabled & cooldown.dark_soul_instability.remains <= 15 & ( cooldown.summon_infernal.remains > target.time_to_die || cooldown.summon_infernal.remains + cooldown.summon_infernal.duration > target.time_to_die )", ["var_name"] = "pool_soul_shards", }, { ["enabled"] = true, ["criteria"] = "buff.backdraft.down & soul_shard >= 1.5 - 0.3 * talent.flashover.enabled & ! variable.pool_soul_shards", ["action"] = "conflagrate", }, { ["enabled"] = true, ["criteria"] = "buff.dark_soul_instability.up", ["action"] = "chaos_bolt", }, { ["enabled"] = true, ["criteria"] = "buff.backdraft.up & ! variable.pool_soul_shards & ! talent.eradication.enabled", ["action"] = "chaos_bolt", }, { ["enabled"] = true, ["criteria"] = "! variable.pool_soul_shards & talent.eradication.enabled & ( debuff.eradication.remains < cast_time || buff.backdraft.up )", ["action"] = "chaos_bolt", }, { ["enabled"] = true, ["criteria"] = "! variable.pool_soul_shards || soul_shard >= 4.5", ["action"] = "shadowburn", }, { ["enabled"] = true, ["criteria"] = "( soul_shard >= 4.5 - 0.2 * active_enemies )", ["action"] = "chaos_bolt", }, { ["enabled"] = true, ["criteria"] = "charges > 1", ["action"] = "conflagrate", }, { ["action"] = "incinerate", ["enabled"] = true, }, }, }, ["version"] = 20210916, ["warnings"] = "WARNING: The import for 'default' required some automated changes.\nLine 3: Converted 'soulbind.X' to 'soulbind.X.enabled' at EOL (1x).\n\nImported 6 action lists.\n", ["profile"] = "## Destruction Warlock\n## September 16, 2021\n\n## Changes:\n## - Fleshcraft/Volatile Solvent cancel_if changed to interrupt_if.\n\n# Executed before combat begins. Accepts non-harmful actions only.\nactions.precombat=fel_domination,if=time>0&!pet.alive\nactions.precombat+=/summon_pet\nactions.precombat+=/use_item,name=tome_of_monstrous_constructions\nactions.precombat+=/use_item,name=soleahs_secret_technique\nactions.precombat+=/fleshcraft\nactions.precombat+=/grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice.enabled\nactions.precombat+=/use_item,name=shadowed_orb_of_torment\nactions.precombat+=/soul_fire\nactions.precombat+=/incinerate\n\n# Executed every time the actor is available.\nactions=spell_lock\nactions=call_action_list,name=havoc,if=havoc_active&active_enemies>1&active_enemies<5-talent.inferno.enabled+(talent.inferno.enabled&talent.internal_combustion.enabled)\nactions+=/fleshcraft,if=soulbind.volatile_solvent,interrupt_if=buff.volatile_solvent.up\nactions+=/conflagrate,if=talent.roaring_blaze.enabled&debuff.roaring_blaze.remains<1.5\nactions+=/cataclysm,if=!(pet.infernal.active&dot.immolate.remains+1>pet.infernal.remains)||spell_targets.cataclysm>1\nactions+=/call_action_list,name=aoe,if=active_enemies>2\nactions+=/soul_fire,cycle_targets=1,if=refreshable&soul_shard<=4&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>remains)\nactions+=/immolate,cycle_targets=1,if=refreshable&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>remains)\nactions+=/immolate,if=talent.internal_combustion.enabled&action.chaos_bolt.in_flight&remainsdot.immolate.duration*0.5||!talent.internal_combustion.enabled\nactions+=/impending_catastrophe\nactions+=/soul_rot\nactions+=/havoc,if=runeforge.odr_shawl_of_the_ymirjar.equipped\nactions+=/variable,name=pool_soul_shards,value=active_enemies>1&cooldown.havoc.remains<=10||cooldown.summon_infernal.remains<=15&talent.dark_soul_instability.enabled&cooldown.dark_soul_instability.remains<=15||talent.dark_soul_instability.enabled&cooldown.dark_soul_instability.remains<=15&(cooldown.summon_infernal.remains>target.time_to_die||cooldown.summon_infernal.remains+cooldown.summon_infernal.duration>target.time_to_die)\nactions+=/conflagrate,if=buff.backdraft.down&soul_shard>=1.5-0.3*talent.flashover.enabled&!variable.pool_soul_shards\nactions+=/chaos_bolt,if=buff.dark_soul_instability.up\nactions+=/chaos_bolt,if=buff.backdraft.up&!variable.pool_soul_shards&!talent.eradication.enabled\nactions+=/chaos_bolt,if=!variable.pool_soul_shards&talent.eradication.enabled&(debuff.eradication.remains=4.5\nactions+=/chaos_bolt,if=(soul_shard>=4.5-0.2*active_enemies)\nactions+=/conflagrate,if=charges>1\nactions+=/incinerate\n\nactions.aoe=rain_of_fire,if=pet.infernal.active&(!cooldown.havoc.ready||active_enemies>3)\nactions.aoe+=/soul_rot\nactions.aoe+=/channel_demonfire,if=dot.immolate.remains>cast_time\nactions.aoe+=/immolate,cycle_targets=1,if=remains<5&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>remains)\nactions.aoe+=/call_action_list,name=cds\nactions.aoe+=/call_action_list,name=essences\nactions.aoe+=/havoc,cycle_targets=1,if=active_enemies<4\nactions.aoe+=/rain_of_fire\nactions.aoe+=/havoc,cycle_targets=1\nactions.aoe+=/decimating_bolt,if=(soulbind.lead_by_example.enabled||!talent.fire_and_brimstone.enabled)\nactions.aoe+=/incinerate,if=talent.fire_and_brimstone.enabled&buff.backdraft.up&soul_shard<5-0.2*active_enemies\nactions.aoe+=/soul_fire\nactions.aoe+=/conflagrate,if=buff.backdraft.down\nactions.aoe+=/shadowburn,if=target.health.pct<20\nactions.aoe+=/scouring_tithe,if=!(talent.fire_and_brimstone.enabled||talent.inferno.enabled)\nactions.aoe+=/impending_catastrophe,if=!(talent.fire_and_brimstone.enabled||talent.inferno.enabled)\nactions.aoe+=/incinerate\n\nactions.cds=use_item,name=shadowed_orb_of_torment,if=cooldown.summon_infernal.remains<3||target.time_to_die<42\nactions.cds+=/summon_infernal\nactions.cds+=/dark_soul_instability\nactions.cds+=/potion,if=pet.infernal.active\nactions.cds+=/berserking,if=pet.infernal.active\nactions.cds+=/blood_fury,if=pet.infernal.active\nactions.cds+=/fireblood,if=pet.infernal.active\nactions.cds+=/use_items,if=pet.infernal.active||target.time_to_die<20\n\nactions.havoc=conflagrate,if=buff.backdraft.down&soul_shard>=1&soul_shard<=4\nactions.havoc+=/soul_fire,if=cast_time80||target.health_pct<20||fight_remains<20||target.time_to_pct_20>40\nactions.essences+=/concentrated_flame\nactions.essences+=/the_unbound_force,if=buff.reckless_force.remains", ["spec"] = 267, }, }, }, ["Quillstrum - Deathwing"] = { ["runOnce"] = { ["autoconvertDisplayToggle_20190621_1"] = 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, ["resetRogueMfDOption_20200226"] = true, ["forceReloadClassDefaultOptions_20220306_72"] = true, ["autoconvertDelaySweepToExtend_20190729"] = true, ["autoconvertGlowsForCustomGlow_20190326"] = true, ["forceEnableEnhancedRecheckBoomkin_20210712"] = true, ["resetAberrantPackageDates_20190728_1"] = true, }, ["specs"] = { [73] = { ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["settings"] = { ["rallying_cry_health"] = 50, ["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, ["shockwave_interrupt"] = true, ["shield_wall_health"] = 50, ["heroic_charge"] = false, ["reserve_rage"] = 35, ["last_stand_offensively"] = false, ["shield_wall_condition"] = false, ["last_stand_health"] = 50, ["last_stand_condition"] = false, ["overlap_ignore_pain"] = false, }, ["maxTime"] = 33, }, [71] = { ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["settings"] = { ["heroic_charge"] = false, ["shockwave_interrupt"] = true, }, ["maxTime"] = 33, }, [72] = { ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["settings"] = { ["check_ww_range"] = false, ["shockwave_interrupt"] = true, ["t30_bloodthirst_crit"] = 95, ["heroic_charge"] = false, }, ["maxTime"] = 33, }, [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"] = 20240203, ["author"] = "SimulationCraft", ["desc"] = "2024-02-03: Minor SimC update.\n\n2023-12-17: Remove raid_event.adds checks in favor of target count.\n\n2023-11-27: Big axe.\n\n2023-11-22: Update to SimC.\n\n2023-11-06: Removed IP from HAC and set HAC to <1 target.\n\n2023-11-05: Patch 10.2.\n\n2023-07-11: Update trinkets for 10.1.5.\n\n2023-05-20: Update trinket/CDs.\n\n2023-05-08: Use Arcane Torrent at pretty low priority in single-target.\n\n2023-05-02: Update for 10.1.\n\n2023-03-26: Include Spell Reflection.", ["lists"] = { ["single_target"] = { { ["enabled"] = true, ["criteria"] = "buff.collateral_damage.up & cooldown.sweeping_strikes.remains < 3", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1", ["action"] = "sweeping_strikes", }, { ["enabled"] = true, ["criteria"] = "( buff.juggernaut.up & buff.juggernaut.remains < gcd.max ) || ( buff.sudden_death.react & dot.deep_wounds.remains & set_bonus.tier31_2pc || buff.sudden_death.react & ! dot.rend.remains & set_bonus.tier31_4pc )", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= gcd.max & talent.blood_and_thunder.enabled & talent.blademasters_torment.enabled", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 15", ["action"] = "thunderous_roar", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 15 || target.time_to_die < 20", ["action"] = "avatar", }, { ["action"] = "colossus_smash", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 22", ["action"] = "warbreaker", }, { ["action"] = "mortal_strike", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= gcd.max & talent.blood_and_thunder.enabled", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "talent.storm_of_swords.enabled & debuff.colossus_smash.up", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "talent.hurricane.enabled & ( buff.test_of_might.up || ! talent.test_of_might.enabled & debuff.colossus_smash.up ) & buff.hurricane.remains < 2 || talent.unhinged.enabled & ( buff.test_of_might.up || ! talent.test_of_might.enabled & debuff.colossus_smash.up )", ["action"] = "bladestorm", }, { ["enabled"] = true, ["criteria"] = "buff.test_of_might.up || debuff.colossus_smash.up", ["action"] = "champions_spear", }, { ["action"] = "skullsplitter", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.sudden_death.react", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "talent.sonic_boom.enabled", ["action"] = "shockwave", }, { ["enabled"] = true, ["criteria"] = "talent.storm_of_swords.enabled & talent.test_of_might.enabled & cooldown.colossus_smash.remains > gcd.max * 7", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "charges = 2 & ! talent.battlelord.enabled || talent.battlelord.enabled", ["action"] = "overpower", }, { ["enabled"] = true, ["criteria"] = "talent.storm_of_swords.enabled", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "talent.crushing_force.enabled", ["action"] = "slam", }, { ["enabled"] = true, ["criteria"] = "buff.merciless_bonegrinder.up", ["action"] = "whirlwind", }, { ["action"] = "thunder_clap", ["enabled"] = true, }, { ["action"] = "slam", ["enabled"] = true, }, { ["action"] = "bladestorm", ["enabled"] = true, }, { ["action"] = "cleave", ["enabled"] = true, }, { ["action"] = "wrecking_throw", ["enabled"] = true, }, }, ["default"] = { { ["enabled"] = true, ["criteria"] = "time <= 0.5 || movement.distance > 5", ["action"] = "charge", }, { ["action"] = "pummel", ["enabled"] = true, }, { ["action"] = "spell_reflection", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "gcd.remains = 0 & debuff.colossus_smash.remains > 8 || target.time_to_die < 25", ["action"] = "potion", }, { ["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"] = "target.time_to_die > 180 & buff.avatar.up || target.time_to_die < 180 & ( target.health.pct < 35 & talent.massacre.enabled || target.health.pct < 20 ) & buff.avatar.up || target.time_to_die < 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"] = "active_enemies > 2 || talent.fervor_of_battle.enabled & ( talent.massacre.enabled & target.health.pct > 35 || target.health.pct > 20 ) & active_enemies > 1", ["list_name"] = "aoe", }, { ["enabled"] = true, ["action"] = "run_action_list", ["cycle_targets"] = 1, ["strict"] = 1, ["criteria"] = "( talent.massacre.enabled & target.health.pct < 35 ) || target.health.pct < 20", ["list_name"] = "execute", }, { ["enabled"] = true, ["action"] = "run_action_list", ["list_name"] = "single_target", }, }, ["precombat"] = { { ["action"] = "battle_stance", ["enabled"] = true, }, { ["action"] = "battle_shout", ["enabled"] = true, }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.ruby_whelp_shell || trinket.t1.is.whispering_incarnate_icon", ["var_name"] = "trinket_1_exclude", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.ruby_whelp_shell || trinket.t2.is.whispering_incarnate_icon", ["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_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff & ! variable.trinket_1_exclude )", ["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 & ! 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, ["name"] = "algethar_puzzle_box", ["action"] = "algethar_puzzle_box", }, }, ["variables"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "active_enemies = 1 & ( raid_event.adds.in > 15 || ! raid_event.adds.exists )", ["description"] = "Variables", ["var_name"] = "st_planning", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "active_enemies >= 2 & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.remains > 5 )", ["var_name"] = "adds_remain", }, }, ["trinkets"] = { { ["enabled"] = true, ["name"] = "fyralath_the_dreamrender", ["description"] = "Trinkets", ["criteria"] = "dot.mark_of_fyralath.ticking & ! talent.blademasters_torment.enabled || dot.mark_of_fyralath.ticking & cooldown.avatar.remains > 3 & cooldown.bladestorm.remains > 3 & ! debuff.colossus_smash.up", ["action"] = "fyralath_the_dreamrender", }, { ["enabled"] = true, ["name"] = "algethar_puzzle_box", ["use_off_gcd"] = 1, ["action"] = "algethar_puzzle_box", ["criteria"] = "cooldown.avatar.remains <= 3", }, { ["enabled"] = true, ["action"] = "trinket1", ["slot"] = "trinket1", ["use_off_gcd"] = 1, ["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", ["description"] = "Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.", }, { ["enabled"] = true, ["action"] = "trinket2", ["slot"] = "trinket2", ["use_off_gcd"] = 1, ["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", }, { ["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 ) || ( 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", ["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 ) || ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )", }, { ["enabled"] = true, ["action"] = "main_hand", ["slot"] = "main_hand", ["use_off_gcd"] = 1, ["criteria"] = "! equipped.fyralath_the_dreamrender & ( ! variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( ! variable.trinket_2_buffs || trinket.t2.cooldown.remains )", }, }, ["execute"] = { { ["enabled"] = true, ["criteria"] = "buff.collateral_damage.up & cooldown.sweeping_strikes.remains < 3", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1", ["action"] = "sweeping_strikes", }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= gcd.max & talent.bloodletting.enabled", ["action"] = "mortal_strike", }, { ["enabled"] = true, ["criteria"] = "remains <= gcd.max & ! talent.bloodletting.enabled & ( ! talent.warbreaker.enabled & cooldown.colossus_smash.remains < 4 || talent.warbreaker.enabled & cooldown.warbreaker.remains < 4 ) & target.time_to_die > 12", ["action"] = "rend", }, { ["enabled"] = true, ["criteria"] = "cooldown.colossus_smash.ready || debuff.colossus_smash.up || target.time_to_die < 20", ["action"] = "avatar", }, { ["enabled"] = true, ["criteria"] = "cooldown.colossus_smash.remains <= gcd.max", ["action"] = "champions_spear", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 22", ["action"] = "warbreaker", }, { ["action"] = "colossus_smash", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.sudden_death.react & dot.deep_wounds.remains", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "( talent.test_of_might.enabled & rage < 40 ) || ( ! talent.test_of_might.enabled & ( buff.avatar.up || debuff.colossus_smash.up ) & rage < 70 )", ["action"] = "thunderous_roar", }, { ["enabled"] = true, ["criteria"] = "spell_targets.whirlwind > 2 & dot.deep_wounds.remains <= gcd.max", ["action"] = "cleave", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 45 & talent.hurricane.enabled & rage < 40", ["action"] = "bladestorm", }, { ["enabled"] = true, ["criteria"] = "debuff.executioners_precision.stack = 2 & debuff.colossus_smash.remains <= gcd.max", ["action"] = "mortal_strike", }, { ["enabled"] = true, ["criteria"] = "rage < 40 & buff.martial_prowess.stack < 2", ["action"] = "overpower", }, { ["enabled"] = true, ["criteria"] = "debuff.executioners_precision.stack = 2 & buff.martial_prowess.stack = 2 || ! talent.executioners_precision.enabled & buff.martial_prowess.stack = 2", ["action"] = "mortal_strike", }, { ["enabled"] = true, ["criteria"] = "rage < 40", ["action"] = "skullsplitter", }, { ["action"] = "execute", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.sonic_boom.enabled", ["action"] = "shockwave", }, { ["action"] = "overpower", ["enabled"] = true, }, { ["action"] = "bladestorm", ["enabled"] = true, }, { ["action"] = "wrecking_throw", ["enabled"] = true, }, }, ["aoe"] = { { ["enabled"] = true, ["criteria"] = "buff.juggernaut.up & buff.juggernaut.remains < gcd.max", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "buff.collateral_damage.up & cooldown.sweeping_strikes.remains < 3", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "talent.thunder_clap.enabled & talent.blood_and_thunder.enabled & talent.rend.enabled & dot.rend.remains <= dot.rend.duration * 0.3", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "cooldown.bladestorm.remains > 15 || talent.improved_sweeping_strikes.enabled & cooldown.bladestorm.remains > 21 || ! talent.bladestorm.enabled || ! talent.bladestorm.enabled & talent.blademasters_torment.enabled & cooldown.avatar.remains > 15 || ! talent.bladestorm.enabled & talent.blademasters_torment.enabled & talent.improved_sweeping_strikes.enabled & cooldown.avatar.remains > 21", ["action"] = "sweeping_strikes", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 15 || talent.blademasters_torment.enabled || target.time_to_die < 20 || buff.hurricane.remains < 3", ["action"] = "avatar", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 22 || active_enemies > 1", ["action"] = "warbreaker", }, { ["enabled"] = true, ["action"] = "colossus_smash", ["criteria"] = "( target.health.pct < 20 || talent.massacre.enabled & target.health.pct < 35 )", ["cycle_targets"] = 1, }, { ["action"] = "colossus_smash", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.sudden_death.react & set_bonus.tier31_4pc", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "buff.martial_prowess.stack = 2", ["action"] = "cleave", }, { ["enabled"] = true, ["criteria"] = "talent.sharpened_blades.enabled & buff.sweeping_strikes.up & buff.martial_prowess.stack = 2 & active_enemies <= 8", ["action"] = "mortal_strike", }, { ["enabled"] = true, ["criteria"] = "buff.test_of_might.up || debuff.colossus_smash.up || dot.deep_wounds.remains", ["action"] = "thunderous_roar", }, { ["enabled"] = true, ["criteria"] = "buff.test_of_might.up || debuff.colossus_smash.up || dot.deep_wounds.remains", ["action"] = "champions_spear", }, { ["enabled"] = true, ["criteria"] = "buff.hurricane.remains < 3 || ! talent.hurricane.enabled", ["action"] = "bladestorm", }, { ["enabled"] = true, ["criteria"] = "talent.storm_of_swords.enabled", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "! talent.fervor_of_battle.enabled || talent.fervor_of_battle.enabled & dot.deep_wounds.remains <= dot.deep_wounds.duration * 0.3", ["action"] = "cleave", }, { ["enabled"] = true, ["criteria"] = "buff.sweeping_strikes.up & talent.dreadnaught.enabled & ! talent.test_of_might.enabled & active_enemies < 3", ["action"] = "overpower", }, { ["enabled"] = true, ["criteria"] = "talent.fervor_of_battle.enabled", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "buff.sweeping_strikes.up & ( talent.dreadnaught.enabled || charges = 2 )", ["action"] = "overpower", }, { ["enabled"] = true, ["action"] = "mortal_strike", ["criteria"] = "debuff.executioners_precision.stack = 2 || dot.deep_wounds.remains <= gcd.max || active_enemies < 3", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "execute", ["criteria"] = "buff.sudden_death.react || ( target.health.pct < 20 || talent.massacre.enabled & target.health.pct < 35 ) || buff.sweeping_strikes.up || active_enemies <= 2", ["cycle_targets"] = 1, }, { ["action"] = "overpower", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "active_enemies > 3", ["action"] = "thunder_clap", }, { ["action"] = "mortal_strike", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! talent.crushing_force.enabled", ["action"] = "thunder_clap", }, { ["action"] = "slam", ["enabled"] = true, }, { ["action"] = "shockwave", ["enabled"] = true, }, { ["action"] = "wrecking_throw", ["enabled"] = true, }, }, }, ["version"] = 20240203, ["warnings"] = "The import for 'single_target' required some automated changes.\nLine 4: Converted 'talent.blood_and_thunder' to 'talent.blood_and_thunder.enabled' (1x).\nLine 4: Converted 'talent.blademasters_torment' to 'talent.blademasters_torment.enabled' (1x).\nLine 10: Converted 'talent.blood_and_thunder' to 'talent.blood_and_thunder.enabled' (1x).\nLine 11: Converted 'talent.storm_of_swords' to 'talent.storm_of_swords.enabled' (1x).\nLine 12: Converted 'talent.hurricane' to 'talent.hurricane.enabled' (1x).\nLine 12: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 12: Converted 'talent.unhinged' to 'talent.unhinged.enabled' (1x).\nLine 12: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 17: Converted 'talent.storm_of_swords' to 'talent.storm_of_swords.enabled' (1x).\nLine 17: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 18: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 18: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 19: Converted 'talent.storm_of_swords' to 'talent.storm_of_swords.enabled' (1x).\nLine 20: Converted 'talent.crushing_force' to 'talent.crushing_force.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 9: Converted 'talent.massacre' to 'talent.massacre.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 3: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 3: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 4: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 4: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (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_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 7: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 7: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 7: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 7: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 7: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 7: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 7: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 7: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 7: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 8: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 8: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 8: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 8: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 8: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 8: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 8: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 8: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 8: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 8: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 8: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (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).\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'aoe' required some automated changes.\nLine 3: Converted 'talent.thunder_clap' to 'talent.thunder_clap.enabled' (1x).\nLine 3: Converted 'talent.blood_and_thunder' to 'talent.blood_and_thunder.enabled' (1x).\nLine 3: Converted 'talent.rend' to 'talent.rend.enabled' (1x).\nLine 4: Converted 'talent.improved_sweeping_strikes' to 'talent.improved_sweeping_strikes.enabled' (1x).\nLine 4: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 4: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 4: Converted 'talent.blademasters_torment' to 'talent.blademasters_torment.enabled' (1x).\nLine 4: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 4: Converted 'talent.blademasters_torment' to 'talent.blademasters_torment.enabled' (1x).\nLine 4: Converted 'talent.improved_sweeping_strikes' to 'talent.improved_sweeping_strikes.enabled' (1x).\nLine 5: Converted 'talent.blademasters_torment' to 'talent.blademasters_torment.enabled' (1x).\nLine 7: Converted 'talent.massacre' to 'talent.massacre.enabled' (1x).\nLine 11: Converted 'talent.sharpened_blades' to 'talent.sharpened_blades.enabled' (1x).\nLine 14: Converted 'talent.hurricane' to 'talent.hurricane.enabled' (1x).\nLine 15: Converted 'talent.storm_of_swords' to 'talent.storm_of_swords.enabled' (1x).\nLine 16: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 16: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 17: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\nLine 17: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 18: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 19: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\nLine 21: Converted 'talent.massacre' to 'talent.massacre.enabled' (1x).\nLine 25: Converted 'talent.crushing_force' to 'talent.crushing_force.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 1: Converted 'talent.blademasters_torment' to 'talent.blademasters_torment.enabled' (1x).\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 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.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 3: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\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 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.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 4: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (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.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 5: Converted 'trinket.1.cast_time' to 'trinket.t1.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.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 6: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (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.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\n\nThe import for 'execute' required some automated changes.\nLine 3: Converted 'talent.bloodletting' to 'talent.bloodletting.enabled' (1x).\nLine 4: Converted 'talent.bloodletting' to 'talent.bloodletting.enabled' (1x).\nLine 4: Converted 'talent.warbreaker' to 'talent.warbreaker.enabled' (1x).\nLine 4: Converted 'talent.warbreaker' to 'talent.warbreaker.enabled' (1x).\nLine 10: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 10: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 12: Converted 'talent.hurricane' to 'talent.hurricane.enabled' (1x).\nLine 15: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\nLine 18: Converted 'talent.sonic_boom' to 'talent.sonic_boom.enabled' (1x).\n\nImported 7 action lists.\n", ["profile"] = "actions.precombat+=/battle_stance\nactions.precombat+=/battle_shout\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell||trinket.1.is.whispering_incarnate_icon\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell||trinket.2.is.whispering_incarnate_icon\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_buff.strength||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit&!variable.trinket_1_exclude)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_buff.strength||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit&!variable.trinket_2_exclude)\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+=/use_item,name=algethar_puzzle_box\n\nactions+=/charge,if=time<=0.5||movement.distance>5\nactions+=/pummel\nactions+=/spell_reflection\nactions+=/potion,if=gcd.remains=0&debuff.colossus_smash.remains>8||target.time_to_die<25\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=target.time_to_die>180&buff.avatar.up||target.time_to_die<180&(target.health.pct<35&talent.massacre||target.health.pct<20)&buff.avatar.up||target.time_to_die<20\nactions+=/blood_fury,if=debuff.colossus_smash.up\nactions+=/fireblood,if=debuff.colossus_smash.up\nactions+=/ancestral_call,if=debuff.colossus_smash.up\nactions+=/run_action_list,name=aoe,strict=1,if=active_enemies>2||talent.fervor_of_battle.enabled&(talent.massacre.enabled&target.health.pct>35||target.health.pct>20)&active_enemies>1\nactions+=/run_action_list,name=execute,cycle_targets=1,strict=1,if=(talent.massacre.enabled&target.health.pct<35)||target.health.pct<20\nactions+=/run_action_list,name=single_target\n\nactions.execute+=/whirlwind,if=buff.collateral_damage.up&cooldown.sweeping_strikes.remains<3\nactions.execute+=/sweeping_strikes,if=active_enemies>1\nactions.execute+=/mortal_strike,if=dot.rend.remains<=gcd&talent.bloodletting\nactions.execute+=/rend,if=remains<=gcd&!talent.bloodletting&(!talent.warbreaker&cooldown.colossus_smash.remains<4||talent.warbreaker&cooldown.warbreaker.remains<4)&target.time_to_die>12\nactions.execute+=/avatar,if=cooldown.colossus_smash.ready||debuff.colossus_smash.up||target.time_to_die<20\nactions.execute+=/champions_spear,if=cooldown.colossus_smash.remains<=gcd\nactions.execute+=/warbreaker,if=raid_event.adds.in>22\nactions.execute+=/colossus_smash\nactions.execute+=/execute,if=buff.sudden_death.react&dot.deep_wounds.remains\nactions.execute+=/thunderous_roar,if=(talent.test_of_might&rage<40)||(!talent.test_of_might&(buff.avatar.up||debuff.colossus_smash.up)&rage<70)\nactions.execute+=/cleave,if=spell_targets.whirlwind>2&dot.deep_wounds.remains<=gcd\nactions.execute+=/bladestorm,if=raid_event.adds.in>45&talent.hurricane&rage<40\nactions.execute+=/mortal_strike,if=debuff.executioners_precision.stack=2&debuff.colossus_smash.remains<=gcd\nactions.execute+=/overpower,if=rage<40&buff.martial_prowess.stack<2\nactions.execute+=/mortal_strike,if=debuff.executioners_precision.stack=2&buff.martial_prowess.stack=2||!talent.executioners_precision&buff.martial_prowess.stack=2\nactions.execute+=/skullsplitter,if=rage<40\nactions.execute+=/execute\nactions.execute+=/shockwave,if=talent.sonic_boom\nactions.execute+=/overpower\nactions.execute+=/bladestorm\nactions.execute+=/wrecking_throw\n\nactions.aoe+=/execute,if=buff.juggernaut.up&buff.juggernaut.remains15||talent.improved_sweeping_strikes&cooldown.bladestorm.remains>21||!talent.bladestorm||!talent.bladestorm&talent.blademasters_torment&cooldown.avatar.remains>15||!talent.bladestorm&talent.blademasters_torment&talent.improved_sweeping_strikes&cooldown.avatar.remains>21\nactions.aoe+=/avatar,if=raid_event.adds.in>15||talent.blademasters_torment||target.time_to_die<20||buff.hurricane.remains<3\nactions.aoe+=/warbreaker,if=raid_event.adds.in>22||active_enemies>1\nactions.aoe+=/colossus_smash,cycle_targets=1,if=(target.health.pct<20||talent.massacre&target.health.pct<35)\nactions.aoe+=/colossus_smash\nactions.aoe+=/execute,if=buff.sudden_death.react&set_bonus.tier31_4pc\nactions.aoe+=/cleave,if=buff.martial_prowess.stack=2\nactions.aoe+=/mortal_strike,if=talent.sharpened_blades&buff.sweeping_strikes.up&buff.martial_prowess.stack=2&active_enemies<=8\nactions.aoe+=/thunderous_roar,if=buff.test_of_might.up||debuff.colossus_smash.up||dot.deep_wounds.remains\nactions.aoe+=/champions_spear,if=buff.test_of_might.up||debuff.colossus_smash.up||dot.deep_wounds.remains\nactions.aoe+=/bladestorm,if=buff.hurricane.remains<3||!talent.hurricane\nactions.aoe+=/whirlwind,if=talent.storm_of_swords\nactions.aoe+=/cleave,if=!talent.fervor_of_battle||talent.fervor_of_battle&dot.deep_wounds.remains<=dot.deep_wounds.duration*0.3\nactions.aoe+=/overpower,if=buff.sweeping_strikes.up&talent.dreadnaught&!talent.test_of_might&active_enemies<3\nactions.aoe+=/whirlwind,if=talent.fervor_of_battle\nactions.aoe+=/overpower,if=buff.sweeping_strikes.up&(talent.dreadnaught||charges=2)\nactions.aoe+=/mortal_strike,cycle_targets=1,if=debuff.executioners_precision.stack=2||dot.deep_wounds.remains<=gcd||active_enemies<3\nactions.aoe+=/execute,cycle_targets=1,if=buff.sudden_death.react||(target.health.pct<20||talent.massacre&target.health.pct<35)||buff.sweeping_strikes.up||active_enemies<=2\nactions.aoe+=/overpower\nactions.aoe+=/thunder_clap,if=active_enemies>3\nactions.aoe+=/mortal_strike\nactions.aoe+=/thunder_clap,if=!talent.crushing_force\nactions.aoe+=/slam\nactions.aoe+=/shockwave\nactions.aoe+=/wrecking_throw\n\nactions.single_target+=/whirlwind,if=buff.collateral_damage.up&cooldown.sweeping_strikes.remains<3\nactions.single_target+=/sweeping_strikes,if=active_enemies>1\nactions.single_target+=/execute,if=(buff.juggernaut.up&buff.juggernaut.remains15\nactions.single_target+=/avatar,if=raid_event.adds.in>15||target.time_to_die<20\nactions.single_target+=/colossus_smash\nactions.single_target+=/warbreaker,if=raid_event.adds.in>22\nactions.single_target+=/mortal_strike\nactions.single_target+=/thunder_clap,if=dot.rend.remains<=gcd&talent.blood_and_thunder\nactions.single_target+=/whirlwind,if=talent.storm_of_swords&debuff.colossus_smash.up\nactions.single_target+=/bladestorm,if=talent.hurricane&(buff.test_of_might.up||!talent.test_of_might&debuff.colossus_smash.up)&buff.hurricane.remains<2||talent.unhinged&(buff.test_of_might.up||!talent.test_of_might&debuff.colossus_smash.up)\nactions.single_target+=/champions_spear,if=buff.test_of_might.up||debuff.colossus_smash.up\nactions.single_target+=/skullsplitter\nactions.single_target+=/execute,if=buff.sudden_death.react\nactions.single_target+=/shockwave,if=talent.sonic_boom.enabled\nactions.single_target+=/whirlwind,if=talent.storm_of_swords&talent.test_of_might&cooldown.colossus_smash.remains>gcd*7\nactions.single_target+=/overpower,if=charges=2&!talent.battlelord||talent.battlelord\nactions.single_target+=/whirlwind,if=talent.storm_of_swords\nactions.single_target+=/slam,if=talent.crushing_force\nactions.single_target+=/whirlwind,if=buff.merciless_bonegrinder.up\nactions.single_target+=/thunder_clap\nactions.single_target+=/slam\nactions.single_target+=/bladestorm\nactions.single_target+=/cleave\nactions.single_target+=/wrecking_throw\n\n# Trinkets\nactions.trinkets+=/use_item,name=fyralath_the_dreamrender,,if=dot.mark_of_fyralath.ticking&!talent.blademasters_torment||dot.mark_of_fyralath.ticking&cooldown.avatar.remains>3&cooldown.bladestorm.remains>3&!debuff.colossus_smash.up\nactions.trinkets+=/use_item,use_off_gcd=1,name=algethar_puzzle_box,if=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,use_off_gcd=1,slot=trinket1,if=variable.trinket_1_buffs&!variable.trinket_1_manual&(!buff.avatar.up&trinket.1.cast_time>0||!trinket.1.cast_time>0)&buff.avatar.up&(variable.trinket_2_exclude||!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&(!buff.avatar.up&trinket.2.cast_time>0||!trinket.2.cast_time>0)&buff.avatar.up&(variable.trinket_1_exclude||!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains\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,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&(!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs)||(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&(!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs)||(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions.trinkets+=/use_item,use_off_gcd=1,slot=main_hand,if=!equipped.fyralath_the_dreamrender&(!variable.trinket_1_buffs||trinket.1.cooldown.remains)&(!variable.trinket_2_buffs||trinket.2.cooldown.remains)\n\n# Variables\nactions.variables+=/variable,name=st_planning,value=active_enemies=1&(raid_event.adds.in>15||!raid_event.adds.exists)\nactions.variables+=/variable,name=adds_remain,value=active_enemies>=2&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.remains>5)", ["spec"] = 71, }, ["Protection Warrior"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20240116, ["spec"] = 73, ["desc"] = "2023-11-05: Patch 10.2.\n\n2023-05-28: Update to Shield Slam usage in AOE.\n\n2023-05-20: Shield Wall minor update.\n\n2023-05-08: Add additional Execute in single-target if Rage is 50+ (still impacted by Reserve Rage for Mitigation option).\n\n2023-04-30: 2nd minor update.\n\n2023-04-26: Minor update from SimulationCraft for 10.1.\n\n2023-03-26: Shift Shield Charge and Charge above Pummel and Spell Reflection.", ["profile"] = "actions.precombat+=/defensive_stance,if=buff.stance.down\nactions.precombat+=/battle_shout\nactions.precombat+=/use_item,name=algethar_puzzle_box\nactions.precombat+=/avatar,if=!talent.titans_torment\nactions.precombat+=/recklessness,if=!talent.reckless_abandon\n\n# Executed every time the actor is available.\nactions+=/shield_charge,if=time=0\nactions+=/charge,if=time=0\nactions+=/pummel\nactions+=/spell_reflection\nactions+=/use_items\nactions+=/avatar\n# Usage of Shield Wall is governed by specialization settings; see /hekili > Protection.\nactions+=/shield_wall,if=talent.immovable_object.enabled&buff.avatar.down\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\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\n# Usage of Last Stand is also governed by specialization settings; see /hekili > Protection.\nactions+=/last_stand,if=talent.unnerving_focus&(target.health.pct>=90||target.health.pct<=20)||talent.bolster&buff.shield_block.down||!talent.bolster&!talent.unnerving_focus||set_bonus.tier30_2pc>0\n# Usage of Rallying Cry is governed by specialization settings; see /hekili > Protection.\nactions+=/rallying_cry\nactions+=/ravager\nactions+=/demoralizing_shout,if=talent.booming_voice.enabled\nactions+=/champions_spear\nactions+=/thunderous_roar\nactions+=/shield_slam,if=buff.fervid.up\nactions+=/shockwave,if=talent.sonic_boom.enabled&buff.avatar.up&talent.unstoppable_force.enabled&!talent.rumbling_earth.enabled||talent.sonic_boom.enabled&talent.rumbling_earth.enabled&spell_targets.shockwave>=3\nactions+=/shield_charge\nactions+=/shield_block,if=buff.shield_block.duration<=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_clap,if=dot.rend.remains<=1&talent.blood_and_thunder&talent.rend\nactions.aoe+=/shield_slam,if=(set_bonus.tier30_2pc||set_bonus.tier30_4pc)&spell_targets.thunder_clap<=7||buff.earthen_tenacity.up\nactions.aoe+=/thunder_clap,if=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<=7\nactions.aoe+=/thunder_clap\nactions.aoe+=/revenge,if=rage>=30||rage>=40&talent.barbaric_training.enabled\n\nactions.generic+=/shield_slam\nactions.generic+=/thunder_clap,if=dot.rend.remains<=2&buff.violent_outburst.down\nactions.generic+=/execute,if=buff.sudden_death.up&talent.sudden_death.enabled\nactions.generic+=/execute\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,if=spell_targets.revenge=1\nactions.generic+=/revenge,if=target.health>20\nactions.generic+=/thunder_clap,if=(spell_targets.thunder_clap>=1||cooldown.shield_slam.remains&buff.violent_outburst.up)\nactions.generic+=/devastate", ["version"] = 20240116, ["warnings"] = "The import for 'aoe' required some automated changes.\nLine 1: Converted 'talent.blood_and_thunder' to 'talent.blood_and_thunder.enabled' (1x).\nLine 1: Converted 'talent.rend' to 'talent.rend.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 17: Converted 'talent.unnerving_focus' to 'talent.unnerving_focus.enabled' (1x).\nLine 17: Converted 'talent.bolster' to 'talent.bolster.enabled' (1x).\nLine 17: Converted 'talent.bolster' to 'talent.bolster.enabled' (1x).\nLine 17: Converted 'talent.unnerving_focus' to 'talent.unnerving_focus.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 5: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\n\nImported 4 action lists.\n", ["author"] = "SimulationCraft", ["lists"] = { ["aoe"] = { { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= 1 & talent.blood_and_thunder.enabled & talent.rend.enabled", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "( set_bonus.tier30_2pc || set_bonus.tier30_4pc ) & spell_targets.thunder_clap <= 7 || buff.earthen_tenacity.up", ["action"] = "shield_slam", }, { ["enabled"] = true, ["criteria"] = "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 <= 7", ["action"] = "shield_slam", }, { ["action"] = "thunder_clap", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "rage >= 30 || rage >= 40 & talent.barbaric_training.enabled", ["action"] = "revenge", }, }, ["generic"] = { { ["action"] = "shield_slam", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= 2 & buff.violent_outburst.down", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "buff.sudden_death.up & talent.sudden_death.enabled", ["action"] = "execute", }, { ["action"] = "execute", ["enabled"] = true, }, { ["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", }, { ["enabled"] = true, ["criteria"] = "spell_targets.revenge = 1", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "target.health > 20", ["action"] = "revenge", }, { ["enabled"] = true, ["criteria"] = "( spell_targets.thunder_clap >= 1 || cooldown.shield_slam.remains & buff.violent_outburst.up )", ["action"] = "thunder_clap", }, { ["action"] = "devastate", ["enabled"] = true, }, }, ["default"] = { { ["enabled"] = true, ["action"] = "shield_charge", ["description"] = "Executed every time the actor is available.", ["criteria"] = "time = 0", }, { ["enabled"] = true, ["criteria"] = "time = 0", ["action"] = "charge", }, { ["action"] = "pummel", ["enabled"] = true, }, { ["action"] = "spell_reflection", ["enabled"] = true, }, { ["action"] = "use_items", ["enabled"] = true, }, { ["action"] = "avatar", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "shield_wall", ["description"] = "Usage of Shield Wall is governed by specialization settings, see /hekili > Protection.", ["criteria"] = "talent.immovable_object.enabled & buff.avatar.down", }, { ["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", ["action"] = "potion", }, { ["enabled"] = true, ["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", ["use_off_gcd"] = 1, }, { ["enabled"] = true, ["action"] = "last_stand", ["description"] = "Usage of Last Stand is also governed by specialization settings, see /hekili > Protection.", ["criteria"] = "talent.unnerving_focus.enabled & ( target.health.pct >= 90 || target.health.pct <= 20 ) || talent.bolster.enabled & buff.shield_block.down || ! talent.bolster.enabled & ! talent.unnerving_focus.enabled || set_bonus.tier30_2pc > 0", }, { ["enabled"] = true, ["description"] = "Usage of Rallying Cry is governed by specialization settings, see /hekili > Protection.", ["action"] = "rallying_cry", }, { ["action"] = "ravager", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.booming_voice.enabled", ["action"] = "demoralizing_shout", }, { ["action"] = "champions_spear", ["enabled"] = true, }, { ["action"] = "thunderous_roar", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.fervid.up", ["action"] = "shield_slam", }, { ["enabled"] = true, ["criteria"] = "talent.sonic_boom.enabled & buff.avatar.up & talent.unstoppable_force.enabled & ! talent.rumbling_earth.enabled || talent.sonic_boom.enabled & talent.rumbling_earth.enabled & spell_targets.shockwave >= 3", ["action"] = "shockwave", }, { ["action"] = "shield_charge", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.shield_block.duration <= 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"] = { { ["enabled"] = true, ["criteria"] = "buff.stance.down", ["action"] = "defensive_stance", }, { ["action"] = "battle_shout", ["enabled"] = true, }, { ["enabled"] = true, ["name"] = "algethar_puzzle_box", ["action"] = "algethar_puzzle_box", }, { ["enabled"] = true, ["criteria"] = "! talent.titans_torment.enabled", ["action"] = "avatar", }, { ["enabled"] = true, ["criteria"] = "! talent.reckless_abandon.enabled", ["action"] = "recklessness", }, }, }, }, ["Fury"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20240317, ["author"] = "SimC", ["desc"] = "2024-03-17: Tweak Thunderous Roar usage.\n\n2024-02-03: Minor SimC update.\n\n2024-01-14: Ensure Avatar is up before Thunderous Roar.\n\n2023-11-27: Big axe.\n\n2023-11-22: Update to SimC.\n\n2023-11-15: Allow Avatar with Titan's Torment but without Odyn's Fury.\n\n2023-11-08: Minor sim updates.\n\n2023-11-05: Patch 10.2.\n\n2023-07-11: Update trinkets for 10.1.5.\n\n2023-05-20: Trinket/CD update.\n\n2023-05-14: Add slider for Tier 30 crit % setting.\n\n2023-05-04: Updates related to Tier 30.\n\n2023-05-02: Update for 10.1.\n\n2023-03-26: Include Spell Reflection; remove Heroic Leap.", ["profile"] = "actions.precombat+=/berserker_stance\nactions.precombat+=/battle_shout\nactions.precombat+=/use_item,name=algethar_puzzle_box\nactions.precombat+=/avatar,if=!talent.titans_torment\nactions.precombat+=/recklessness,if=!talent.reckless_abandon\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell||trinket.1.is.whispering_incarnate_icon\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell||trinket.2.is.whispering_incarnate_icon\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_buff.strength||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit&!variable.trinket_1_exclude)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_buff.strength||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit&!variable.trinket_2_exclude)\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>5\n## actions+=/heroic_leap,if=(raid_event.movement.distance>25&raid_event.movement.in>45)\nactions+=/pummel\nactions+=/spell_reflection\nactions+=/potion\nactions+=/call_action_list,name=trinkets\nactions+=/ravager,if=cooldown.recklessness.remains<3||buff.recklessness.up\nactions+=/lights_judgment,if=buff.recklessness.down\nactions+=/berserking,if=buff.recklessness.up\nactions+=/blood_fury\nactions+=/fireblood\nactions+=/ancestral_call\nactions+=/avatar,if=talent.titans_torment&buff.enrage.up&raid_event.adds.in>15&!buff.avatar.up&(!talent.odyns_fury||cooldown.odyns_fury.remains)||talent.berserkers_torment&buff.enrage.up&!buff.avatar.up&raid_event.adds.in>15||!talent.titans_torment&!talent.berserkers_torment&(buff.recklessness.up||target.time_to_die<20)\nactions+=/recklessness,if=!raid_event.adds.exists&(talent.annihilator&cooldown.champions_spear.remains<1||cooldown.avatar.remains>40||!talent.avatar||target.time_to_die<12)\nactions+=/recklessness,if=!raid_event.adds.exists&!talent.annihilator||target.time_to_die<12\nactions+=/champions_spear,if=buff.enrage.up&((buff.furious_bloodthirst.up&talent.titans_torment)||!talent.titans_torment||target.time_to_die<20||active_enemies>1||!set_bonus.tier31_2pc)&raid_event.adds.in>15\nactions+=/run_action_list,name=multi_target,strict=1,if=active_enemies>=2\nactions+=/run_action_list,name=single_target,strict=1,if=active_enemies=1\n\nactions.multi_target+=/recklessness,if=raid_event.adds.in>15||active_enemies>1||target.time_to_die<12\nactions.multi_target+=/odyns_fury,if=active_enemies>1&talent.titanic_rage&(!buff.meat_cleaver.up||buff.avatar.up||buff.recklessness.up)\nactions.multi_target+=/whirlwind,if=spell_targets.whirlwind>1&talent.improved_whirlwind&!buff.meat_cleaver.up||raid_event.adds.in<2&talent.improved_whirlwind&!buff.meat_cleaver.up\nactions.multi_target+=/execute,if=buff.ashen_juggernaut.up&buff.ashen_juggernaut.remains6)&(!talent.titans_torment||cooldown.odyns_fury.remains>6))&(spell_targets.whirlwind>1||raid_event.adds.in>15)\nactions.multi_target+=/odyns_fury,if=active_enemies>1&buff.enrage.up&raid_event.adds.in>15\nactions.multi_target+=/bloodbath,if=set_bonus.tier30_4pc&action.bloodthirst.crit_pct_current>=95||set_bonus.tier31_4pc\nactions.multi_target+=/bloodthirst,if=(set_bonus.tier30_4pc&action.bloodthirst.crit_pct_current>=95)||(!talent.reckless_abandon&buff.furious_bloodthirst.up&buff.enrage.up)\nactions.multi_target+=/crushing_blow,if=talent.wrath_and_fury&buff.enrage.up\nactions.multi_target+=/execute,if=buff.enrage.up\nactions.multi_target+=/odyns_fury,if=buff.enrage.up&raid_event.adds.in>15\nactions.multi_target+=/rampage,if=buff.recklessness.up||buff.enrage.remains110&talent.overwhelming_rage)||(rage>80&!talent.overwhelming_rage)\nactions.multi_target+=/execute\nactions.multi_target+=/bloodbath,if=buff.enrage.up&talent.reckless_abandon&!talent.wrath_and_fury\nactions.multi_target+=/bloodthirst,if=buff.enrage.down||(talent.annihilator&!buff.recklessness.up)\nactions.multi_target+=/onslaught,if=!talent.annihilator&buff.enrage.up||talent.tenderize\nactions.multi_target+=/raging_blow,if=charges>1&talent.wrath_and_fury\nactions.multi_target+=/crushing_blow,if=charges>1&talent.wrath_and_fury\nactions.multi_target+=/bloodbath,if=buff.enrage.down||!talent.wrath_and_fury\nactions.multi_target+=/crushing_blow,if=buff.enrage.up&talent.reckless_abandon\nactions.multi_target+=/bloodthirst,if=!talent.wrath_and_fury\nactions.multi_target+=/raging_blow,if=charges>=1\nactions.multi_target+=/rampage\nactions.multi_target+=/slam,if=talent.annihilator\nactions.multi_target+=/bloodbath\nactions.multi_target+=/raging_blow\nactions.multi_target+=/crushing_blow\nactions.multi_target+=/whirlwind\n\nactions.single_target+=/whirlwind,if=spell_targets.whirlwind>1&talent.improved_whirlwind&!buff.meat_cleaver.up||raid_event.adds.in<2&talent.improved_whirlwind&!buff.meat_cleaver.up\nactions.single_target+=/execute,if=buff.ashen_juggernaut.up&buff.ashen_juggernaut.remains1||raid_event.adds.in>15)&(talent.dancing_blades&buff.dancing_blades.remains<5||!talent.dancing_blades))\nactions.single_target+=/rampage,if=talent.anger_management&(buff.recklessness.up||buff.enrage.remains85)\nactions.single_target+=/bloodbath,if=set_bonus.tier30_4pc&action.bloodthirst.crit_pct_current>=95\nactions.single_target+=/bloodthirst,if=(set_bonus.tier30_4pc&action.bloodthirst.crit_pct_current>=95)||(!talent.reckless_abandon&buff.furious_bloodthirst.up&buff.enrage.up&(!dot.gushing_wound.remains||buff.champions_might.up))\nactions.single_target+=/bloodbath,if=set_bonus.tier31_2pc\nactions.single_target+=/thunderous_roar,if=buff.enrage.up&(buff.avatar.up||(!talent.avatar||cooldown.avatar.remains>6)&(!talent.titans_torment||cooldown.odyns_fury.remains>6))&(spell_targets.whirlwind>1||raid_event.adds.in>15)\nactions.single_target+=/onslaught,if=buff.enrage.up||talent.tenderize\nactions.single_target+=/crushing_blow,if=talent.wrath_and_fury&buff.enrage.up&!buff.furious_bloodthirst.up\nactions.single_target+=/execute,if=buff.enrage.up&!buff.furious_bloodthirst.up&buff.ashen_juggernaut.up||buff.sudden_death.remains<=gcd&(target.health.pct>35&talent.massacre||target.health.pct>20)\nactions.single_target+=/rampage,if=talent.reckless_abandon&(buff.recklessness.up||buff.enrage.remains85)\nactions.single_target+=/execute,if=buff.enrage.up\nactions.single_target+=/rampage,if=talent.anger_management\nactions.single_target+=/execute\nactions.single_target+=/bloodbath,if=buff.enrage.up&talent.reckless_abandon&!talent.wrath_and_fury\nactions.single_target+=/rampage,if=target.health.pct<35&talent.massacre.enabled\nactions.single_target+=/bloodthirst,if=(buff.enrage.down||(talent.annihilator&!buff.recklessness.up))&!buff.furious_bloodthirst.up\nactions.single_target+=/raging_blow,if=charges>1&talent.wrath_and_fury\nactions.single_target+=/crushing_blow,if=charges>1&talent.wrath_and_fury&!buff.furious_bloodthirst.up\nactions.single_target+=/bloodbath,if=buff.enrage.down||!talent.wrath_and_fury\nactions.single_target+=/crushing_blow,if=buff.enrage.up&talent.reckless_abandon&!buff.furious_bloodthirst.up\nactions.single_target+=/bloodthirst,if=!talent.wrath_and_fury&!buff.furious_bloodthirst.up\nactions.single_target+=/raging_blow,if=charges>1\nactions.single_target+=/rampage\nactions.single_target+=/slam,if=talent.annihilator\nactions.single_target+=/bloodbath\nactions.single_target+=/raging_blow\nactions.single_target+=/crushing_blow,if=!buff.furious_bloodthirst.up\nactions.single_target+=/bloodthirst\nactions.single_target+=/whirlwind\nactions.single_target+=/wrecking_throw\nactions.single_target+=/storm_bolt\n\n# Trinkets\nactions.trinkets+=/use_item,name=fyralath_the_dreamrender,if=dot.mark_of_fyralath.ticking\nactions.trinkets+=/use_item,use_off_gcd=1,name=algethar_puzzle_box,if=cooldown.recklessness.remains<3||(talent.anger_management&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,use_off_gcd=1,slot=trinket1,if=variable.trinket_1_buffs&!variable.trinket_1_manual&(!buff.avatar.up&trinket.1.cast_time>0||!trinket.1.cast_time>0)&(buff.avatar.up)&(variable.trinket_2_exclude||!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&(!buff.avatar.up&trinket.2.cast_time>0||!trinket.2.cast_time>0)&(buff.avatar.up)&(variable.trinket_1_exclude||!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains\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,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&(!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs)||(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&(!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs)||(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions.trinkets+=/use_item,use_off_gcd=1,slot=main_hand,if=!equipped.fyralath_the_dreamrender&(!variable.trinket_1_buffs||trinket.1.cooldown.remains)&(!variable.trinket_2_buffs||trinket.2.cooldown.remains)\n\n# Variables\nactions.variables+=/variable,name=st_planning,value=active_enemies=1&(raid_event.adds.in>15||!raid_event.adds.exists)\nactions.variables+=/variable,name=adds_remain,value=active_enemies>=2&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.remains>5)", ["version"] = 20240317, ["warnings"] = "The import for 'single_target' required some automated changes.\nLine 1: Converted 'talent.improved_whirlwind' to 'talent.improved_whirlwind.enabled' (1x).\nLine 1: Converted 'talent.improved_whirlwind' to 'talent.improved_whirlwind.enabled' (1x).\nLine 3: Converted 'talent.dancing_blades' to 'talent.dancing_blades.enabled' (1x).\nLine 3: Converted 'talent.dancing_blades' to 'talent.dancing_blades.enabled' (1x).\nLine 4: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 6: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 8: Converted 'talent.avatar' to 'talent.avatar.enabled' (1x).\nLine 8: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 9: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 10: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 11: Converted 'talent.massacre' to 'talent.massacre.enabled' (1x).\nLine 12: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 14: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 16: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 16: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 18: Converted 'talent.annihilator' to 'talent.annihilator.enabled' (1x).\nLine 19: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 20: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 21: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 22: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 23: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 26: Converted 'talent.annihilator' to 'talent.annihilator.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 12: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 12: Converted 'talent.odyns_fury' to 'talent.odyns_fury.enabled' (1x).\nLine 12: Converted 'talent.berserkers_torment' to 'talent.berserkers_torment.enabled' (1x).\nLine 12: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 12: Converted 'talent.berserkers_torment' to 'talent.berserkers_torment.enabled' (1x).\nLine 13: Converted 'talent.annihilator' to 'talent.annihilator.enabled' (1x).\nLine 13: Converted 'talent.avatar' to 'talent.avatar.enabled' (1x).\nLine 14: Converted 'talent.annihilator' to 'talent.annihilator.enabled' (1x).\nLine 15: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 15: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 5: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 6: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 6: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 7: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 7: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (1x).\nLine 8: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 8: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 8: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 8: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 8: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 8: 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 9: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (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.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 9: 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 10: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 10: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 10: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 10: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 10: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 10: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 10: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 10: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 10: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 10: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 10: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 11: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 11: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 11: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 11: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 11: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 11: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 11: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 11: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 11: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 11: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 11: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\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.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 12: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 12: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 12: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 12: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 12: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\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.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 12: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 12: 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 13: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 14: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'trinkets' required some automated changes.\nLine 2: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\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 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.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 3: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\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 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.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 4: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (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.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 5: Converted 'trinket.1.cast_time' to 'trinket.t1.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.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 6: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (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.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\n\nThe import for 'multi_target' required some automated changes.\nLine 2: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 3: Converted 'talent.improved_whirlwind' to 'talent.improved_whirlwind.enabled' (1x).\nLine 3: Converted 'talent.improved_whirlwind' to 'talent.improved_whirlwind.enabled' (1x).\nLine 5: Converted 'talent.avatar' to 'talent.avatar.enabled' (1x).\nLine 5: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 8: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 9: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 12: Converted 'talent.overwhelming_rage' to 'talent.overwhelming_rage.enabled' (1x).\nLine 12: Converted 'talent.overwhelming_rage' to 'talent.overwhelming_rage.enabled' (1x).\nLine 14: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 14: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 15: Converted 'talent.annihilator' to 'talent.annihilator.enabled' (1x).\nLine 16: Converted 'talent.annihilator' to 'talent.annihilator.enabled' (1x).\nLine 16: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 17: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 18: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 19: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 20: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 21: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 24: Converted 'talent.annihilator' to 'talent.annihilator.enabled' (1x).\n\nImported 6 action lists.\n", ["lists"] = { ["single_target"] = { { ["enabled"] = true, ["criteria"] = "spell_targets.whirlwind > 1 & talent.improved_whirlwind.enabled & ! buff.meat_cleaver.up || raid_event.adds.in < 2 & talent.improved_whirlwind.enabled & ! buff.meat_cleaver.up", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "buff.ashen_juggernaut.up & buff.ashen_juggernaut.remains < gcd.max", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "( buff.enrage.up & ( spell_targets.whirlwind > 1 || raid_event.adds.in > 15 ) & ( talent.dancing_blades.enabled & buff.dancing_blades.remains < 5 || ! talent.dancing_blades.enabled ) )", ["action"] = "odyns_fury", }, { ["enabled"] = true, ["criteria"] = "talent.anger_management.enabled & ( buff.recklessness.up || buff.enrage.remains < gcd.max || rage.pct > 85 )", ["action"] = "rampage", }, { ["enabled"] = true, ["criteria"] = "set_bonus.tier30_4pc & action.bloodthirst.crit_pct_current >= 95", ["action"] = "bloodbath", }, { ["enabled"] = true, ["criteria"] = "( set_bonus.tier30_4pc & action.bloodthirst.crit_pct_current >= 95 ) || ( ! talent.reckless_abandon.enabled & buff.furious_bloodthirst.up & buff.enrage.up & ( ! dot.gushing_wound.remains || buff.champions_might.up ) )", ["action"] = "bloodthirst", }, { ["enabled"] = true, ["criteria"] = "set_bonus.tier31_2pc", ["action"] = "bloodbath", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & ( buff.avatar.up || ( ! talent.avatar.enabled || cooldown.avatar.remains > 6 ) & ( ! talent.titans_torment.enabled || cooldown.odyns_fury.remains > 6 ) ) & ( spell_targets.whirlwind > 1 || raid_event.adds.in > 15 )", ["action"] = "thunderous_roar", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up || talent.tenderize.enabled", ["action"] = "onslaught", }, { ["enabled"] = true, ["criteria"] = "talent.wrath_and_fury.enabled & buff.enrage.up & ! buff.furious_bloodthirst.up", ["action"] = "crushing_blow", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & ! buff.furious_bloodthirst.up & buff.ashen_juggernaut.up || buff.sudden_death.remains <= gcd.max & ( target.health.pct > 35 & talent.massacre.enabled || target.health.pct > 20 )", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "talent.reckless_abandon.enabled & ( buff.recklessness.up || buff.enrage.remains < gcd.max || rage.pct > 85 )", ["action"] = "rampage", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "talent.anger_management.enabled", ["action"] = "rampage", }, { ["action"] = "execute", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & talent.reckless_abandon.enabled & ! talent.wrath_and_fury.enabled", ["action"] = "bloodbath", }, { ["enabled"] = true, ["criteria"] = "target.health.pct < 35 & talent.massacre.enabled", ["action"] = "rampage", }, { ["enabled"] = true, ["criteria"] = "( buff.enrage.down || ( talent.annihilator.enabled & ! buff.recklessness.up ) ) & ! buff.furious_bloodthirst.up", ["action"] = "bloodthirst", }, { ["enabled"] = true, ["criteria"] = "charges > 1 & talent.wrath_and_fury.enabled", ["action"] = "raging_blow", }, { ["enabled"] = true, ["criteria"] = "charges > 1 & talent.wrath_and_fury.enabled & ! buff.furious_bloodthirst.up", ["action"] = "crushing_blow", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.down || ! talent.wrath_and_fury.enabled", ["action"] = "bloodbath", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & talent.reckless_abandon.enabled & ! buff.furious_bloodthirst.up", ["action"] = "crushing_blow", }, { ["enabled"] = true, ["criteria"] = "! talent.wrath_and_fury.enabled & ! buff.furious_bloodthirst.up", ["action"] = "bloodthirst", }, { ["enabled"] = true, ["criteria"] = "charges > 1", ["action"] = "raging_blow", }, { ["action"] = "rampage", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.annihilator.enabled", ["action"] = "slam", }, { ["action"] = "bloodbath", ["enabled"] = true, }, { ["action"] = "raging_blow", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! buff.furious_bloodthirst.up", ["action"] = "crushing_blow", }, { ["action"] = "bloodthirst", ["enabled"] = true, }, { ["action"] = "whirlwind", ["enabled"] = true, }, { ["action"] = "wrecking_throw", ["enabled"] = true, }, { ["action"] = "storm_bolt", ["enabled"] = true, }, }, ["default"] = { { ["enabled"] = true, ["criteria"] = "time <= 0.5 || movement.distance > 5", ["action"] = "charge", }, { ["action"] = "pummel", ["enabled"] = true, }, { ["action"] = "spell_reflection", ["enabled"] = true, }, { ["action"] = "potion", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "trinkets", }, { ["enabled"] = true, ["criteria"] = "cooldown.recklessness.remains < 3 || buff.recklessness.up", ["action"] = "ravager", }, { ["enabled"] = true, ["criteria"] = "buff.recklessness.down", ["action"] = "lights_judgment", }, { ["enabled"] = true, ["criteria"] = "buff.recklessness.up", ["action"] = "berserking", }, { ["action"] = "blood_fury", ["enabled"] = true, }, { ["action"] = "fireblood", ["enabled"] = true, }, { ["action"] = "ancestral_call", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.titans_torment.enabled & buff.enrage.up & raid_event.adds.in > 15 & ! buff.avatar.up & ( ! talent.odyns_fury.enabled || cooldown.odyns_fury.remains ) || talent.berserkers_torment.enabled & buff.enrage.up & ! buff.avatar.up & raid_event.adds.in > 15 || ! talent.titans_torment.enabled & ! talent.berserkers_torment.enabled & ( buff.recklessness.up || target.time_to_die < 20 )", ["action"] = "avatar", }, { ["enabled"] = true, ["criteria"] = "! raid_event.adds.exists & ( talent.annihilator.enabled & cooldown.champions_spear.remains < 1 || cooldown.avatar.remains > 40 || ! talent.avatar.enabled || target.time_to_die < 12 )", ["action"] = "recklessness", }, { ["enabled"] = true, ["criteria"] = "! raid_event.adds.exists & ! talent.annihilator.enabled || target.time_to_die < 12", ["action"] = "recklessness", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & ( ( buff.furious_bloodthirst.up & talent.titans_torment.enabled ) || ! talent.titans_torment.enabled || target.time_to_die < 20 || active_enemies > 1 || ! set_bonus.tier31_2pc ) & raid_event.adds.in > 15", ["action"] = "champions_spear", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "active_enemies >= 2", ["list_name"] = "multi_target", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "active_enemies = 1", ["list_name"] = "single_target", }, }, ["precombat"] = { { ["action"] = "berserker_stance", ["enabled"] = true, }, { ["action"] = "battle_shout", ["enabled"] = true, }, { ["enabled"] = true, ["name"] = "algethar_puzzle_box", ["action"] = "algethar_puzzle_box", }, { ["enabled"] = true, ["criteria"] = "! talent.titans_torment.enabled", ["action"] = "avatar", }, { ["enabled"] = true, ["criteria"] = "! talent.reckless_abandon.enabled", ["action"] = "recklessness", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.ruby_whelp_shell || trinket.t1.is.whispering_incarnate_icon", ["var_name"] = "trinket_1_exclude", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.ruby_whelp_shell || trinket.t2.is.whispering_incarnate_icon", ["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_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff & ! variable.trinket_1_exclude )", ["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 & ! 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 & ( raid_event.adds.in > 15 || ! raid_event.adds.exists )", ["description"] = "Variables", ["var_name"] = "st_planning", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "active_enemies >= 2 & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.remains > 5 )", ["var_name"] = "adds_remain", }, }, ["trinkets"] = { { ["enabled"] = true, ["name"] = "fyralath_the_dreamrender", ["description"] = "Trinkets", ["criteria"] = "dot.mark_of_fyralath.ticking", ["action"] = "fyralath_the_dreamrender", }, { ["enabled"] = true, ["name"] = "algethar_puzzle_box", ["use_off_gcd"] = 1, ["action"] = "algethar_puzzle_box", ["criteria"] = "cooldown.recklessness.remains < 3 || ( talent.anger_management.enabled & cooldown.avatar.remains < 3 )", }, { ["enabled"] = true, ["action"] = "trinket1", ["slot"] = "trinket1", ["use_off_gcd"] = 1, ["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", ["description"] = "Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.", }, { ["enabled"] = true, ["action"] = "trinket2", ["slot"] = "trinket2", ["use_off_gcd"] = 1, ["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", }, { ["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 ) || ( 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", ["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 ) || ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )", }, { ["enabled"] = true, ["action"] = "main_hand", ["slot"] = "main_hand", ["use_off_gcd"] = 1, ["criteria"] = "! equipped.fyralath_the_dreamrender & ( ! variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( ! variable.trinket_2_buffs || trinket.t2.cooldown.remains )", }, }, ["multi_target"] = { { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 15 || active_enemies > 1 || target.time_to_die < 12", ["action"] = "recklessness", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1 & talent.titanic_rage.enabled & ( ! buff.meat_cleaver.up || buff.avatar.up || buff.recklessness.up )", ["action"] = "odyns_fury", }, { ["enabled"] = true, ["criteria"] = "spell_targets.whirlwind > 1 & talent.improved_whirlwind.enabled & ! buff.meat_cleaver.up || raid_event.adds.in < 2 & talent.improved_whirlwind.enabled & ! buff.meat_cleaver.up", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "buff.ashen_juggernaut.up & buff.ashen_juggernaut.remains < gcd.max", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & ( buff.avatar.up || ( ! talent.avatar.enabled || cooldown.avatar.remains > 6 ) & ( ! talent.titans_torment.enabled || cooldown.odyns_fury.remains > 6 ) ) & ( spell_targets.whirlwind > 1 || raid_event.adds.in > 15 )", ["action"] = "thunderous_roar", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1 & buff.enrage.up & raid_event.adds.in > 15", ["action"] = "odyns_fury", }, { ["enabled"] = true, ["criteria"] = "set_bonus.tier30_4pc & action.bloodthirst.crit_pct_current >= 95 || set_bonus.tier31_4pc", ["action"] = "bloodbath", }, { ["enabled"] = true, ["criteria"] = "( set_bonus.tier30_4pc & action.bloodthirst.crit_pct_current >= 95 ) || ( ! talent.reckless_abandon.enabled & buff.furious_bloodthirst.up & buff.enrage.up )", ["action"] = "bloodthirst", }, { ["enabled"] = true, ["criteria"] = "talent.wrath_and_fury.enabled & buff.enrage.up", ["action"] = "crushing_blow", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & raid_event.adds.in > 15", ["action"] = "odyns_fury", }, { ["enabled"] = true, ["criteria"] = "buff.recklessness.up || buff.enrage.remains < gcd.max || ( rage > 110 & talent.overwhelming_rage.enabled ) || ( rage > 80 & ! talent.overwhelming_rage.enabled )", ["action"] = "rampage", }, { ["action"] = "execute", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & talent.reckless_abandon.enabled & ! talent.wrath_and_fury.enabled", ["action"] = "bloodbath", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.down || ( talent.annihilator.enabled & ! buff.recklessness.up )", ["action"] = "bloodthirst", }, { ["enabled"] = true, ["criteria"] = "! talent.annihilator.enabled & buff.enrage.up || talent.tenderize.enabled", ["action"] = "onslaught", }, { ["enabled"] = true, ["criteria"] = "charges > 1 & talent.wrath_and_fury.enabled", ["action"] = "raging_blow", }, { ["enabled"] = true, ["criteria"] = "charges > 1 & talent.wrath_and_fury.enabled", ["action"] = "crushing_blow", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.down || ! talent.wrath_and_fury.enabled", ["action"] = "bloodbath", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & talent.reckless_abandon.enabled", ["action"] = "crushing_blow", }, { ["enabled"] = true, ["criteria"] = "! talent.wrath_and_fury.enabled", ["action"] = "bloodthirst", }, { ["enabled"] = true, ["criteria"] = "charges >= 1", ["action"] = "raging_blow", }, { ["action"] = "rampage", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.annihilator.enabled", ["action"] = "slam", }, { ["action"] = "bloodbath", ["enabled"] = true, }, { ["action"] = "raging_blow", ["enabled"] = true, }, { ["action"] = "crushing_blow", ["enabled"] = true, }, { ["action"] = "whirlwind", ["enabled"] = true, }, }, }, ["spec"] = 72, }, }, }, ["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, ["action"] = "lurkers_insidious_gift", ["criteria"] = "cooldown.trueshot.remains_guess < 15 || time_to_die < 30", ["name"] = "lurkers_insidious_gift", }, { ["enabled"] = true, ["action"] = "azsharas_font_of_power", ["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", }, { ["enabled"] = true, ["action"] = "lustrous_golden_plumage", ["criteria"] = "cooldown.trueshot.remains_guess < 5 || time_to_die < 20", ["name"] = "lustrous_golden_plumage", }, { ["enabled"] = true, ["action"] = "galecallers_boon", ["criteria"] = "prev_gcd.1.trueshot || ! talent.calling_the_shots.enabled || time_to_die < 10", ["name"] = "galecallers_boon", }, { ["enabled"] = true, ["action"] = "ashvanes_razor_coral", ["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", }, { ["enabled"] = true, ["action"] = "pocketsized_computation_device", ["criteria"] = "! buff.trueshot.up & ! essence.blood_of_the_enemy.major || debuff.blood_of_the_enemy.up || time_to_die < 5", ["name"] = "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, ["action"] = "azsharas_font_of_power", ["criteria"] = "cooldown.aspect_of_the_wild.remains_guess < 15 & time_to_die > 10", ["name"] = "azsharas_font_of_power", }, { ["enabled"] = true, ["action"] = "ashvanes_razor_coral", ["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", }, { ["enabled"] = true, ["action"] = "galecallers_boon", ["criteria"] = "buff.aspect_of_the_wild.remains > 10 || cooldown.aspect_of_the_wild.remains > 45 || time_to_die < 11", ["name"] = "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, ["action"] = "ashvanes_razor_coral", ["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", }, { ["enabled"] = true, ["action"] = "galecallers_boon", ["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", }, { ["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"] = { ["resetPotionsToDefaults_20190717"] = true, ["autoconvertDisplayToggle_20190621_1"] = true, ["enableAllOfTheThings_20180820"] = true, ["autoconvertDelaySweepToExtend_20190729"] = true, ["resetRogueMfDOption_20200226"] = true, ["autoconvertGlowsForCustomGlow_20190326"] = true, ["resetAberrantPackageDates_20190728_1"] = true, }, ["specs"] = { [103] = { ["maxRefresh"] = 10, ["custom2Name"] = "Custom 2", ["throttleRefresh"] = false, ["settings"] = { ["brutal_charges"] = 2, }, ["aoe"] = 3, ["gcdSync"] = true, ["damageDots"] = false, ["damage"] = true, ["enabled"] = true, ["debuffPadding"] = 0, ["maxTime"] = 33, ["custom1Name"] = "Custom 1", ["package"] = "Feral", ["buffPadding"] = 0, ["nameplateRange"] = 8, ["cycle_min"] = 6, ["cycle"] = false, ["potion"] = "focused_resolve", ["nameplates"] = true, ["potionsReset"] = 20180919.1, ["damageExpiration"] = 3, ["throttleTime"] = false, ["damageRange"] = 0, }, [104] = { ["maxRefresh"] = 10, ["custom2Name"] = "Custom 2", ["throttleRefresh"] = false, ["settings"] = { ["ironfur_damage_threshold"] = 5, ["maul_rage"] = 20, }, ["aoe"] = 3, ["gcdSync"] = true, ["damageDots"] = false, ["damage"] = true, ["enabled"] = true, ["debuffPadding"] = 0, ["maxTime"] = 33, ["custom1Name"] = "Custom 1", ["package"] = "Guardian", ["buffPadding"] = 0, ["nameplateRange"] = 8, ["cycle_min"] = 6, ["cycle"] = false, ["potion"] = "focused_resolve", ["nameplates"] = true, ["potionsReset"] = 20180919.1, ["damageExpiration"] = 6, ["throttleTime"] = false, ["damageRange"] = 0, }, [102] = { ["maxRefresh"] = 10, ["custom2Name"] = "Custom 2", ["throttleRefresh"] = false, ["settings"] = { ["starlord_cancel"] = false, }, ["aoe"] = 3, ["gcdSync"] = true, ["damageDots"] = false, ["damage"] = true, ["enabled"] = true, ["debuffPadding"] = 0, ["maxTime"] = 33, ["custom1Name"] = "Custom 1", ["package"] = "Balance", ["buffPadding"] = 0, ["nameplateRange"] = 8, ["cycle_min"] = 6, ["cycle"] = false, ["potion"] = "unbridled_fury", ["nameplates"] = false, ["potionsReset"] = 20180919.1, ["damageExpiration"] = 6, ["throttleTime"] = false, ["damageRange"] = 0, }, }, ["displays"] = { ["Interrupts"] = { }, }, ["packs"] = { ["Feral"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20200222, ["spec"] = 103, ["desc"] = "# Feral Druid\n# https://github.com/simulationcraft/simc/\n# February 22, 2020\n\n# Changes:\n# - Added Skull Bash.\n# - Relaxed Tiger's Fury energy check to apply only when Tiger's Fury is already up.\n# - opener_done is handled internally by the addon; removed these variables. Only bother in boss fights.\n# - Convert target_if conditions to cycle_targets.\n# - Remove 'heart_essence' generic action.\n# - Add Balance Affinity priority.\n# - Reincorporate some of ShmooDude's edits.", ["profile"] = "# Feral Druid\n# https://github.com/simulationcraft/simc/\n# February 22, 2020\n\n# Changes:\n# - Added Skull Bash.\n# - Relaxed Tiger's Fury energy check to apply only when Tiger's Fury is already up.\n# - opener_done is handled internally by the addon; removed these variables. Only bother in boss fights.\n# - Convert target_if conditions to cycle_targets.\n# - Remove 'heart_essence' generic action.\n# - Add Balance Affinity priority.\n# - Reincorporate some of ShmooDude's edits.\n# - Don't use Brutal Slash w/ Wild Fleshrending if Thrash isn't up.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/food\n# actions.precombat+=/augmentation\n# It is worth it for almost everyone to maintain thrash\nactions.precombat+=/variable,name=use_thrash,value=0\nactions.precombat+=/variable,name=use_thrash,value=2,if=azerite.wild_fleshrending.enabled\nactions.precombat+=/variable,name=rip_ticks,value=8\nactions.precombat+=/regrowth,if=buff.moonkin_form.down&talent.bloodtalons.enabled\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/prowl,if=buff.moonkin_form.down\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/potion\nactions.precombat+=/berserk,if=buff.moonkin_form.down\nactions.precombat+=/tigers_fury,if=buff.moonkin_form.down&buff.tigers_fury.down\nactions.precombat+=/cat_form,if=buff.moonkin_form.down\n\n# Executed every time the actor is available.\nactions=skull_bash,if=!buff.prowl.up&!buff.shadowmeld.up\nactions+=/run_action_list,name=balance,if=talent.balance_affinity.enabled&buff.moonkin_form.up\nactions+=/call_action_list,name=opener,if=!opener_done&talent.sabertooth.enabled&(buff.berserk.up||buff.incarnation.up)\nactions+=/cat_form,if=!buff.cat_form.up\nactions+=/rake,if=buff.prowl.up||buff.shadowmeld.up\nactions+=/call_action_list,name=cooldowns\nactions+=/ferocious_bite,cycle_targets=1,if=dot.rip.ticking&dot.rip.remains<3&target.time_to_die>10&(talent.sabertooth.enabled)\nactions+=/ferocious_bite,cycle_targets=1,if=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\n# actions+=/regrowth,if=combo_points=5&buff.predatory_swiftness.up&talent.bloodtalons.enabled&buff.bloodtalons.down\nactions+=/run_action_list,name=finishers,if=combo_points>4\nactions+=/call_action_list,name=generators_aoe,if=spell_targets.thrash_cat>1\nactions+=/run_action_list,name=generators\n\nactions.cooldowns=berserk,if=energy>=30&(cooldown.tigers_fury.remains>5||buff.tigers_fury.up)\nactions.cooldowns+=/tigers_fury,if=energy.deficit>=60||buff.tigers_fury.down\nactions.cooldowns+=/berserking\nactions.cooldowns+=/thorns,if=active_enemies>desired_targets||raid_event.adds.in>45\nactions.cooldowns+=/the_unbound_force,if=buff.reckless_force.up||buff.tigers_fury.up\nactions.cooldowns+=/memory_of_lucid_dreams,if=buff.tigers_fury.up&buff.berserk.down\nactions.cooldowns+=/blood_of_the_enemy,if=buff.tigers_fury.up\nactions.cooldowns+=/feral_frenzy,if=combo_points=0\nactions.cooldowns+=/focused_azerite_beam,if=active_enemies>desired_targets||(raid_event.adds.in>90&energy.deficit>=50)\nactions.cooldowns+=/purifying_blast,if=active_enemies>desired_targets||raid_event.adds.in>60\nactions.cooldowns+=/guardian_of_azeroth,if=buff.tigers_fury.up\nactions.cooldowns+=/concentrated_flame,if=buff.tigers_fury.up\nactions.cooldowns+=/ripple_in_space,if=buff.tigers_fury.up\nactions.cooldowns+=/worldvein_resonance,if=buff.tigers_fury.up\nactions.cooldowns+=/reaping_flames,if=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)\nactions.cooldowns+=/incarnation,if=energy>=30&(cooldown.tigers_fury.remains>15||buff.tigers_fury.up)\nactions.cooldowns+=/potion,if=target.time_to_die<65||(time_to_die<180&(buff.berserk.up||buff.incarnation.up))\nactions.cooldowns+=/shadowmeld,if=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\nactions.cooldowns+=/use_item,name=ashvanes_razor_coral,if=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\nactions.cooldowns+=/use_item,effect_name=cyclotronic_blast,if=(energy.deficit>=energy.regen*3)&buff.tigers_fury.down&!azerite.jungle_fury.enabled\nactions.cooldowns+=/use_item,effect_name=cyclotronic_blast,if=buff.tigers_fury.up&azerite.jungle_fury.enabled\nactions.cooldowns+=/use_item,effect_name=azsharas_font_of_power,if=energy.deficit>=50\nactions.cooldowns+=/use_items,if=buff.tigers_fury.up||time_to_die<20\n\nactions.finishers=regrowth,if=buff.predatory_swiftness.up&talent.bloodtalons.enabled&buff.bloodtalons.stack<2\nactions.finishers+=/pool_resource,for_next=1\nactions.finishers+=/savage_roar,if=buff.savage_roar.down\nactions.finishers+=/pool_resource,for_next=1\nactions.finishers+=/primal_wrath,cycle_targets=1,if=spell_targets.primal_wrath>1&dot.rip.remains<4\nactions.finishers+=/pool_resource,for_next=1\nactions.finishers+=/primal_wrath,cycle_targets=1,if=spell_targets.primal_wrath>=2\nactions.finishers+=/pool_resource,for_next=1\nactions.finishers+=/rip,cycle_targets=1,if=!talent.sabertooth.enabled&refreshable&target.time_to_die>dot.rip.remains+variable.rip_ticks*action.rip.tick_time\nactions.finishers+=/pool_resource,for_next=1\nactions.finishers+=/rip,cycle_targets=1,if=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\nactions.finishers+=/pool_resource,for_next=1\nactions.finishers+=/savage_roar,if=buff.savage_roar.remains<12\nactions.finishers+=/pool_resource,for_next=1\nactions.finishers+=/maim,if=buff.iron_jaws.up\nactions.finishers+=/ferocious_bite,max_energy=1,cycle_targets=1\n\nactions.generators=regrowth,if=talent.bloodtalons.enabled&buff.predatory_swiftness.up&buff.bloodtalons.down&combo_points=4&dot.rake.remains<4\nactions.generators+=/regrowth,if=talent.bloodtalons.enabled&buff.bloodtalons.down&buff.predatory_swiftness.up&talent.lunar_inspiration.enabled&dot.rake.remains<1\nactions.generators+=/brutal_slash,if=spell_targets.brutal_slash>desired_targets&(!azerite.wild_fleshrending.enabled||dot.thrash_cat.ticking)\nactions.generators+=/pool_resource,for_next=1\nactions.generators+=/thrash_cat,if=(refreshable&spell_targets.thrash_cat>2)\nactions.generators+=/pool_resource,for_next=1\nactions.generators+=/thrash_cat,if=(talent.scent_of_blood.enabled&buff.scent_of_blood.down)&spell_targets.thrash_cat>3\nactions.generators+=/pool_resource,for_next=1\nactions.generators+=/swipe_cat,if=buff.scent_of_blood.up||(action.swipe_cat.damage*spell_targets.swipe_cat>(action.rake.damage+(action.rake_bleed.tick_damage*5)))\nactions.generators+=/pool_resource,for_next=1\nactions.generators+=/rake,cycle_targets=1,if=!ticking||(!talent.bloodtalons.enabled&remains4\nactions.generators+=/pool_resource,for_next=1\nactions.generators+=/rake,cycle_targets=1,if=talent.bloodtalons.enabled&buff.bloodtalons.up&((remains<=7)&persistent_multiplier>dot.rake.pmultiplier*0.85)&target.time_to_die>4\n# With LI & BT, we can use moonfire to save BT charges, allowing us to better refresh rake\nactions.generators+=/moonfire_cat,if=buff.bloodtalons.up&buff.predatory_swiftness.down&combo_points<5\nactions.generators+=/moonfire_cat,cycle_targets=1,if=refreshable\nactions.generators+=/brutal_slash,if=(!azerite.wild_fleshrending.enabled||dot.thrash_cat.ticking)&buff.tigers_fury.up&(raid_event.adds.in>(1+max_charges-charges_fractional)*recharge_time)\nactions.generators+=/pool_resource,for_next=1\nactions.generators+=/thrash_cat,if=refreshable&((variable.use_thrash=2&(!buff.incarnation.up||azerite.wild_fleshrending.enabled))||spell_targets.thrash_cat>1)\n# actions.generators+=/thrash_cat,if=refreshable&variable.use_thrash=1&buff.clearcasting.react&(!buff.incarnation.up||azerite.wild_fleshrending.enabled)\nactions.generators+=/pool_resource,for_next=1\nactions.generators+=/swipe_cat,if=spell_targets.swipe_cat>1\nactions.generators+=/shred,if=dot.rake.remains>(action.shred.cost+action.rake.cost-energy)%energy.regen||buff.clearcasting.react\n\nactions.generators_aoe=pool_resource,for_next=1\nactions.generators_aoe+=/thrash_cat,if=(refreshable||active_dot.thrash_cat2||talent.scent_of_blood.enabled&buff.scent_of_blood.down&spell_targets.thrash_cat>3||!ticking&azerite.wild_fleshrending.enabled\nactions.generators_aoe+=/pool_resource,for_next=1\nactions.generators_aoe+=/brutal_slash,if=spell_targets.brutal_slash>desired_targets\nactions.generators_aoe+=/pool_resource,for_next=1\nactions.generators_aoe+=/swipe_cat,if=buff.scent_of_blood.up\n\n# The opener generally follow the logic of the rest of the apl, but is separated out here for logical clarity\n# We will open with TF, you can safely cast this from stealth without breaking it.\nactions.opener=tigers_fury\n# Always open with rake, consuming stealth and one BT charge (if talented)\nactions.opener+=/rake,if=!ticking||buff.prowl.up\n# Lets make sure we end the opener \"sequence\" when our first rip is ticking\n# actions.opener+=/variable,name=opener_done,value=dot.rip.ticking\n# Break out of the action list\n# actions.opener+=/wait,sec=0.001,if=dot.rip.ticking\n# If we have LI, and haven't applied it yet use moonfire.\nactions.opener+=/moonfire_cat,if=!ticking\n# no need to wait for 5 CPs anymore, just rip and we are up and running\nactions.opener+=/primal_wrath,if=active_enemies>1&(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, ["name"] = "ashvanes_razor_coral", ["action"] = "ashvanes_razor_coral", ["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", }, { ["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"] = 20200614, ["author"] = "SimC", ["desc"] = "# Balance Druid\n# https://github.com/simulationcraft/simc/\n# June 14, 2020\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"] = "buff.ca_inc.remains > 10 || buff.ca_inc.remains > 4 & buff.arcanic_pulsar.stack > 6 || fight_remains < 21", ["name"] = "manifesto_of_madness", ["action"] = "manifesto_of_madness", }, { ["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, }, { ["enabled"] = true, ["criteria"] = "buff.ca_inc.up || fight_remains < 20", ["action"] = "use_items", }, { ["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", ["action"] = "cancel_buff", ["criteria"] = "buff.starlord.remains < 3 & ! solar_wrath.ap_check", }, { ["enabled"] = true, ["criteria"] = "( ! solar_wrath.ap_check || ( buff.starlord.stack < 3 || buff.starlord.remains >= 8 ) & ( fight_remains + 1 ) * spell_targets > cost % 2.5 ) & spell_targets >= variable.sf_targets", ["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 ) ) & buff.solar_empowerment.stack < 3 & buff.lunar_empowerment.stack < 3 & buff.reckless_force_counter.stack < 19 || buff.reckless_force.up ) & spell_targets.starfall < variable.sf_targets & ( ! variable.az_ss || ! buff.ca_inc.up || ! prev.starsurge ) || fight_remains <= 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"] = 20200614, ["warnings"] = "Imported 2 action lists.\n", ["profile"] = "# Balance Druid\n# https://github.com/simulationcraft/simc/\n# June 14, 2020\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+=/use_item,name=manifesto_of_madness,if=buff.ca_inc.remains>10||buff.ca_inc.remains>4&buff.arcanic_pulsar.stack>6||fight_remains<21\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,if=buff.ca_inc.up||fight_remains<20\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=(!solar_wrath.ap_check||(buff.starlord.stack<3||buff.starlord.remains>=8)&(fight_remains+1)*spell_targets>cost%2.5)&spell_targets>=variable.sf_targets\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))&buff.solar_empowerment.stack<3&buff.lunar_empowerment.stack<3&buff.reckless_force_counter.stack<19||buff.reckless_force.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", ["spec"] = 102, }, ["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, }, }, }, ["Quillphis - Deathwing"] = { ["runOnce"] = { ["autoconvertDisplayToggle_20190621_1"] = true, ["forceReloadClassDefaultOptions_20220306_252"] = true, ["resetAllPotions_20201209"] = true, ["enableAllOfTheThings_20180820"] = true, ["forceEnableEnhancedRecheckBoomkin_20210712"] = true, ["forceReloadAllDefaultPriorities_20220228"] = true, ["forceEnableAllClassesOnceDueToBug_20220225"] = true, ["autoconvertDelaySweepToExtend_20190729"] = true, ["forceSpellFlashBrightness_20221030"] = true, ["forceReloadClassDefaultOptions_20220306_250"] = true, ["resetPotionsToDefaults_20190717"] = true, ["resetRogueMfDOption_20200226"] = true, ["forceReloadClassDefaultOptions_20220306_251"] = true, ["updateMaxRefreshToNewSpecOptions_20220222"] = true, ["autoconvertGlowsForCustomGlow_20190326"] = true, ["resetGlobalCooldownSync_20210403"] = true, ["resetAberrantPackageDates_20190728_1"] = true, }, ["specs"] = { [252] = { ["maxRefresh"] = 10, ["settings"] = { ["dps_shell"] = false, ["festermight_cycle"] = false, }, ["potionsReset"] = 20180919.1, ["debuffPadding"] = 0, ["maxTime"] = 33, ["buffPadding"] = 0, }, [251] = { ["maxRefresh"] = 10, ["settings"] = { ["bos_rp"] = 50, ["ams_usage"] = "damage", }, ["potionsReset"] = 20180919.1, ["maxTime"] = 33, ["debuffPadding"] = 0, ["buffPadding"] = 0, }, [250] = { ["maxRefresh"] = 10, ["settings"] = { ["rt_damage"] = 30, ["vb_damage"] = 50, ["ibf_damage"] = 40, ["save_blood_shield"] = true, }, ["potionsReset"] = 20180919.1, ["maxTime"] = 33, ["debuffPadding"] = 0, ["buffPadding"] = 0, }, [102] = { ["enhancedRecheck"] = true, }, }, ["packs"] = { ["Unholy"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20230910, ["spec"] = 252, ["desc"] = "2023-09-10: Patch 10.1.7 updates.\n\n2023-07-11: Patch 10.1.5 launch.\n\n2023-06-24: Resync with SimC.\n\n2023-05-20: Add Vial trinket.\n\n2023-05-17: Update trinkets again.\n\n2023-04-30: Update trinket logic from SimC.\n\n2023-04-15: Minor tweak to use Festering Strike in preparation for Apocalypse.\n\n2023-04-04: Unholy update from SimC.\n\n2023-03-20: More updates for 10.0.7.\n\n2023-03-13: Update for 10.0.7.", ["lists"] = { ["aoe_setup"] = { { ["enabled"] = true, ["description"] = "AoE Setup", ["criteria"] = "( ! talent.bursting_sores.enabled || death_knight.fwounded_targets >= cycle_enemies || death_knight.fwounded_targets >= 8 || raid_event.adds.exists & raid_event.adds.remains <= 11 & raid_event.adds.remains > 5 )", ["action"] = "any_dnd", }, { ["enabled"] = true, ["criteria"] = "( debuff.festering_wound.down || death_knight.fwounded_targets < cycle_enemies ) & talent.bursting_sores.enabled", ["action"] = "festering_strike", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "! variable.pooling_runic_power || fight_remains < 10", ["action"] = "epidemic", }, { ["enabled"] = true, ["criteria"] = "( debuff.festering_wound.down || death_knight.fwounded_targets < cycle_enemies )", ["action"] = "festering_strike", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "cooldown.apocalypse.remains < variable.apoc_timing & debuff.festering_wound.stack < 4", ["action"] = "festering_strike", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "! variable.pooling_runic_power & ! talent.epidemic.enabled", ["action"] = "death_coil", }, }, ["aoe_burst"] = { { ["enabled"] = true, ["description"] = "AoE Burst", ["criteria"] = "( ! talent.bursting_sores.enabled || rune < 1 || talent.bursting_sores.enabled & debuff.festering_wound.stack = 0 ) & ! variable.pooling_runic_power & ( active_enemies >= 6 || runic_power.deficit < 30 || buff.festermight.stack = 20 )", ["action"] = "epidemic", }, { ["enabled"] = true, ["criteria"] = "debuff.festering_wound.stack >= 1", ["action"] = "wound_spender", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "! variable.pooling_runic_power || fight_remains < 10", ["action"] = "epidemic", }, { ["enabled"] = true, ["criteria"] = "! variable.pooling_runic_power & ! talent.epidemic.enabled", ["action"] = "death_coil", }, { ["action"] = "wound_spender", ["enabled"] = true, }, }, ["st"] = { { ["enabled"] = true, ["description"] = "Single Target", ["criteria"] = "! variable.epidemic_priority & ( ! variable.pooling_runic_power & variable.spend_rp || boss & fight_remains < 10 )", ["action"] = "death_coil", }, { ["enabled"] = true, ["criteria"] = "variable.epidemic_priority & ( ! variable.pooling_runic_power & variable.spend_rp || boss & fight_remains < 10 )", ["action"] = "epidemic", }, { ["enabled"] = true, ["criteria"] = "! death_and_decay.ticking & ( active_enemies >= 2 || talent.unholy_ground.enabled & ( pet.apoc_ghoul.active & pet.apoc_ghoul.remains >= 13 || pet.gargoyle.active & pet.gargoyle.remains > 8 || pet.army_ghoul.active & pet.army_ghoul.remains > 8 || ! variable.pop_wounds & debuff.festering_wound.stack >= 4 ) || talent.defile.enabled & ( pet.gargoyle.active || pet.apoc_ghoul.active || pet.army_ghoul.active || buff.dark_transformation.up ) ) & ( death_knight.fwounded_targets >= cycle_enemies || active_enemies = 1 )", ["action"] = "any_dnd", }, { ["enabled"] = true, ["criteria"] = "variable.pop_wounds || active_enemies >= 2 & death_and_decay.ticking", ["action"] = "wound_spender", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "! variable.pop_wounds & debuff.festering_wound.stack < 4", ["action"] = "festering_strike", ["cycle_targets"] = 1, }, { ["action"] = "death_coil", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! variable.pop_wounds & debuff.festering_wound.stack >= 4", ["action"] = "wound_spender", ["cycle_targets"] = 1, }, }, ["cooldowns"] = { { ["enabled"] = true, ["description"] = "ST/Cleave Cooldowns", ["criteria"] = "buff.commander_of_the_dead.up || ! talent.commander_of_the_dead.enabled", ["action"] = "summon_gargoyle", }, { ["enabled"] = true, ["criteria"] = "! pet.ghoul.active", ["action"] = "raise_dead", }, { ["enabled"] = true, ["criteria"] = "cooldown.apocalypse.remains < 5", ["action"] = "dark_transformation", }, { ["enabled"] = true, ["criteria"] = "variable.st_planning & debuff.festering_wound.stack >= 4", ["action"] = "apocalypse", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "variable.st_planning & ( pet.gargoyle.active & pet.gargoyle.remains <= 23 || ! talent.summon_gargoyle.enabled & talent.army_of_the_damned.enabled & pet.army_ghoul.active & pet.apoc_ghoul.active || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_damned.enabled & buff.dark_transformation.up || ! talent.summon_gargoyle.enabled & ! talent.summon_gargoyle.enabled & buff.dark_transformation.up ) || boss & fight_remains <= 21", ["action"] = "empower_rune_weapon", }, { ["enabled"] = true, ["criteria"] = "rune < 3 & variable.st_planning", ["action"] = "abomination_limb", }, { ["enabled"] = true, ["criteria"] = "variable.st_planning", ["action"] = "unholy_assault", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1 & target.time_to_pct_35 < 5 & target.time_to_die > 5", ["action"] = "soul_reaper", }, { ["enabled"] = true, ["criteria"] = "target.time_to_pct_35 < 5 & active_enemies >= 2 & target.time_to_die > ( dot.soul_reaper.remains + 5 )", ["action"] = "soul_reaper", ["cycle_targets"] = 1, }, }, ["aoe_cooldowns"] = { { ["enabled"] = true, ["action"] = "vile_contagion", ["cycle_targets"] = 1, ["description"] = "AoE Cooldowns", ["criteria"] = "debuff.festering_wound.stack >= 4 & cooldown.any_dnd.remains < 3", }, { ["action"] = "summon_gargoyle", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "rune < 2 || buff.festermight.stack > 10 || ! talent.festermight.enabled || buff.festermight.up & buff.festermight.remains < 12", ["action"] = "abomination_limb", }, { ["enabled"] = true, ["criteria"] = "talent.bursting_sores.enabled & debuff.festering_wound.up & ( ! death_and_decay.ticking & cooldown.death_and_decay.remains & rune < 3 || death_and_decay.ticking & rune = 0 ) || ! talent.bursting_sores.enabled & debuff.festering_wound.stack >= 4", ["action"] = "apocalypse", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "debuff.festering_wound.stack <= 2 || buff.dark_transformation.up", ["action"] = "unholy_assault", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "! pet.ghoul.active", ["action"] = "raise_dead", }, { ["enabled"] = true, ["criteria"] = "( cooldown.any_dnd.remains < 10 & talent.infected_claws.enabled & ( ( cooldown.vile_contagion.remains || raid_event.adds.exists & raid_event.adds.in > 10 ) & death_knight.fwounded_targets < active_enemies || ! talent.vile_contagion.enabled ) & ( raid_event.adds.remains > 5 || ! raid_event.adds.exists ) || ! talent.infected_claws.enabled )", ["action"] = "dark_transformation", }, { ["enabled"] = true, ["criteria"] = "buff.dark_transformation.up", ["action"] = "empower_rune_weapon", }, { ["enabled"] = true, ["criteria"] = "! buff.dark_transformation.up & cooldown.dark_transformation.remains > 6 || boss & fight_remains < gcd.max", ["action"] = "sacrificial_pact", }, }, ["high_priority"] = { { ["enabled"] = true, ["description"] = "Priority Actions", ["criteria"] = "pet.gargoyle.remains <= 30 || ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 || cooldown.summon_gargoyle.ready ) & ( buff.dark_transformation.up & 30 >= buff.dark_transformation.remains || pet.army_ghoul.active & pet.army_ghoul.remains <= 30 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= 30 ) || boss & fight_remains <= 30", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "talent.summon_gargoyle.enabled & cooldown.summon_gargoyle.remains < 2 || ! talent.summon_gargoyle.enabled || boss & fight_remains < 35", ["action"] = "army_of_the_dead", }, { ["enabled"] = true, ["criteria"] = "( active_enemies <= 3 || ! talent.epidemic.enabled ) & ( pet.gargoyle.active & talent.commander_of_the_dead.enabled & buff.commander_of_the_dead.up & cooldown.apocalypse.remains < 5 & buff.commander_of_the_dead.remains > 27 || debuff.death_rot.up & debuff.death_rot.remains < gcd.max )", ["action"] = "death_coil", }, { ["enabled"] = true, ["criteria"] = "active_enemies >= 4 & ( talent.commander_of_the_dead.enabled & buff.commander_of_the_dead.up & cooldown.apocalypse.remains < 5 || debuff.death_rot.up & debuff.death_rot.remains < gcd.max )", ["action"] = "epidemic", }, { ["enabled"] = true, ["criteria"] = "debuff.festering_wound.up & ( cooldown.apocalypse.remains > variable.apoc_timing + 3 || active_enemies >= 3 ) & talent.plaguebringer.enabled & ( talent.superstrain.enabled || talent.unholy_blight.enabled ) & buff.plaguebringer.remains < gcd.max", ["action"] = "wound_spender", }, { ["enabled"] = true, ["criteria"] = "variable.st_planning & ( ( ! talent.apocalypse.enabled || cooldown.apocalypse.remains ) & talent.morbidity.enabled || ! talent.morbidity.enabled ) || variable.adds_remain || boss & fight_remains < 21", ["action"] = "unholy_blight", }, { ["enabled"] = true, ["criteria"] = "target.time_to_die > dot.virulent_plague.remains & ( dot.virulent_plague.refreshable || talent.superstrain.enabled & ( dot.frost_fever_superstrain.refreshable || dot.blood_plague_superstrain.refreshable ) ) & ( ! talent.unholy_blight.enabled || talent.unholy_blight.enabled & cooldown.unholy_blight.remains > 15 / ( ( talent.superstrain.enabled * 3 ) + ( talent.plaguebringer.enabled * 2 ) + ( talent.ebon_fever.enabled * 2 ) ) )", ["action"] = "outbreak", ["cycle_targets"] = 1, }, }, ["default"] = { { ["action"] = "mind_freeze", ["enabled"] = true, }, { ["action"] = "strangulate", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "runic_power.deficit > 40 & ( pet.gargoyle.active || ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > cooldown.antimagic_shell.duration )", ["action"] = "antimagic_shell", }, { ["enabled"] = true, ["criteria"] = "death_knight.amz_absorb_percent > 0 & runic_power.deficit > 70 & talent.assimilation.enabled & ( pet.gargoyle.active || ! talent.summon_gargoyle.enabled )", ["action"] = "antimagic_zone", }, { ["enabled"] = true, ["op"] = "setif", ["description"] = "Variables", ["value"] = "1", ["var_name"] = "epidemic_priority", ["action"] = "variable", ["value_else"] = "0", ["criteria"] = "talent.improved_death_coil.enabled & ! talent.coil_of_devastation.enabled & active_enemies >= 3 || talent.coil_of_devastation.enabled & active_enemies >= 4 || ! talent.improved_death_coil.enabled & active_enemies >= 2", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "garg_setup_complete", ["value"] = "1", ["value_else"] = "0", ["criteria"] = "active_enemies >= 3 || cooldown.summon_gargoyle.remains > 1 & ( cooldown.apocalypse.remains > 1 || ! talent.apocalypse.enabled ) || ! talent.summon_gargoyle.enabled || time > 20", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "apoc_timing", ["value"] = "7", ["value_else"] = "2", ["criteria"] = "cooldown.apocalypse.remains < 10 & debuff.festering_wound.stack <= 4 & cooldown.unholy_assault.remains > 10", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "festermight_tracker", ["value"] = "debuff.festering_wound.stack >= 1", ["value_else"] = "debuff.festering_wound.stack >= ( 3 - talent.infected_claws.enabled )", ["criteria"] = "! pet.gargoyle.active & talent.festermight.enabled & buff.festermight.up & ( buff.festermight.remains / ( 5 * gcd.max ) ) >= 1", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "pop_wounds", ["value"] = "1", ["value_else"] = "0", ["criteria"] = "( cooldown.apocalypse.remains > variable.apoc_timing || ! talent.apocalypse.enabled ) & ( variable.festermight_tracker || debuff.festering_wound.stack >= 1 & ! talent.apocalypse.enabled || debuff.festering_wound.stack >= 1 & cooldown.unholy_assault.remains < 20 & talent.unholy_assault.enabled & variable.st_planning || debuff.rotten_touch.up & debuff.festering_wound.stack >= 1 || debuff.festering_wound.stack > 4 ) || fight_remains < 5 & debuff.festering_wound.stack >= 1", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "pooling_runic_power", ["value"] = "1", ["value_else"] = "0", ["criteria"] = "talent.vile_contagion.enabled & cooldown.vile_contagion.remains < 3 & runic_power < 60 & ! variable.st_planning", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "st_planning", ["value"] = "1", ["value_else"] = "0", ["criteria"] = "active_enemies = 1 & ( ! raid_event.adds.exists || raid_event.adds.in > 15 )", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "adds_remain", ["value"] = "1", ["value_else"] = "0", ["criteria"] = "active_enemies >= 2 & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.remains > 6 )", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "spend_rp", ["value"] = "1", ["value_else"] = "0", ["criteria"] = "( ! talent.rotten_touch.enabled || talent.rotten_touch.enabled & ! debuff.rotten_touch.up || runic_power.deficit < 15 ) & ( ( talent.improved_death_coil.enabled & ( active_enemies = 2 || talent.coil_of_devastation.enabled ) || rune < 3 || pet.gargoyle.active || buff.sudden_doom.react || cooldown.apocalypse.remains < 10 & debuff.festering_wound.stack > 3 || ! variable.pop_wounds & debuff.festering_wound.stack >= 4 ) )", }, { ["enabled"] = true, ["action"] = "call_action_list", ["description"] = "Call Action Lists", ["list_name"] = "high_priority", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "trinkets", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "variable.garg_setup_complete = 0", ["list_name"] = "garg_setup", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "variable.st_planning", ["list_name"] = "cooldowns", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "variable.adds_remain", ["list_name"] = "aoe_cooldowns", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "racials", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "variable.adds_remain & cooldown.any_dnd.remains < 10 & ! death_and_decay.ticking", ["list_name"] = "aoe_setup", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "active_enemies >= 4 & death_and_decay.ticking", ["list_name"] = "aoe_burst", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "active_enemies >= 4 & ( cooldown.any_dnd.remains > 10 & ! death_and_decay.ticking || ! variable.adds_remain )", ["list_name"] = "aoe", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "active_enemies <= 3", ["list_name"] = "st", }, }, ["precombat"] = { { ["action"] = "raise_dead", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "army_of_the_dead", ["precombat_time"] = "2", }, }, ["racials"] = { { ["enabled"] = true, ["description"] = "Racials", ["criteria"] = "runic_power.deficit > 20 & ( cooldown.summon_gargoyle.remains < gcd.max || ! talent.summon_gargoyle.enabled || pet.gargoyle.active & rune < 2 & debuff.festering_wound.stack < 1 )", ["action"] = "arcane_torrent", }, { ["enabled"] = true, ["criteria"] = "( buff.blood_fury.duration + 3 >= pet.gargoyle.remains & pet.gargoyle.active ) || ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 ) & ( pet.army_ghoul.active & pet.army_ghoul.remains <= buff.blood_fury.duration + 3 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= buff.blood_fury.duration + 3 || active_enemies >= 2 & death_and_decay.ticking ) || boss & fight_remains <= buff.blood_fury.duration + 3", ["action"] = "blood_fury", }, { ["enabled"] = true, ["criteria"] = "( buff.berserking.duration + 3 >= pet.gargoyle.remains & pet.gargoyle.active ) || ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 ) & ( pet.army_ghoul.active & pet.army_ghoul.remains <= buff.berserking.duration + 3 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= buff.berserking.duration + 3 || active_enemies >= 2 & death_and_decay.ticking ) || boss & fight_remains <= buff.berserking.duration + 3", ["action"] = "berserking", }, { ["enabled"] = true, ["criteria"] = "buff.unholy_strength.up & ( ! talent.festermight.enabled || buff.festermight.remains < target.time_to_die || buff.unholy_strength.remains < target.time_to_die )", ["action"] = "lights_judgment", }, { ["enabled"] = true, ["criteria"] = "( 18 >= pet.gargoyle.remains & pet.gargoyle.active ) || ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 ) & ( pet.army_ghoul.active & pet.army_ghoul.remains <= 18 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= 18 || active_enemies >= 2 & death_and_decay.ticking ) || boss & fight_remains <= 18", ["action"] = "ancestral_call", }, { ["enabled"] = true, ["criteria"] = "active_enemies >= 2 || ( rune.deficit >= 5 & runic_power.deficit >= 60 )", ["action"] = "arcane_pulse", }, { ["enabled"] = true, ["criteria"] = "( buff.fireblood.duration + 3 >= pet.gargoyle.remains & pet.gargoyle.active ) || ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 ) & ( pet.army_ghoul.active & pet.army_ghoul.remains <= buff.fireblood.duration + 3 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= buff.fireblood.duration + 3 || active_enemies >= 2 & death_and_decay.ticking ) || boss & fight_remains <= buff.fireblood.duration + 3", ["action"] = "fireblood", }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1 & ( buff.unholy_strength.up || boss & fight_remains < 5 )", ["action"] = "bag_of_tricks", }, }, ["trinkets"] = { { ["enabled"] = true, ["description"] = "Trinkets", ["name"] = "gavel_of_the_first_arbiter", ["action"] = "gavel_of_the_first_arbiter", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.ruby_whelp_shell || trinket.t1.is.whispering_incarnate_icon", ["var_name"] = "trinket_1_exclude", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.ruby_whelp_shell || trinket.t2.is.whispering_incarnate_icon", ["var_name"] = "trinket_2_exclude", }, { ["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 ) & ! variable.trinket_1_exclude", ["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 ) & ! variable.trinket_2_exclude", ["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 % 45 = 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 % 45 = 0 )", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.algethar_puzzle_box || trinket.t1.is.irideus_fragment || trinket.t1.is.vial_of_animated_blood", ["var_name"] = "trinket_1_manual", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.algethar_puzzle_box || trinket.t2.is.irideus_fragment || trinket.t2.is.vial_of_animated_blood", ["var_name"] = "trinket_2_manual", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "trinket_priority", ["value"] = "2", ["value_else"] = "1", ["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs & ( trinket.t2.has_cooldown & ! variable.trinket_2_exclude || ! trinket.t1.has_cooldown ) || 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 ) )", }, { ["enabled"] = true, ["name"] = "algethar_puzzle_box", ["use_off_gcd"] = 1, ["criteria"] = "cooldown.summon_gargoyle.remains < 5 & rune <= 4 || ! talent.summon_gargoyle.enabled & pet.army_ghoul.active || active_enemies > 3 & variable.adds_remain & ( buff.dark_transformation.up || talent.bursting_sores.enabled & cooldown.any_dnd.remains < 10 & ! death_and_decay.ticking )", ["action"] = "algethar_puzzle_box", }, { ["enabled"] = true, ["name"] = "irideus_fragment", ["use_off_gcd"] = 1, ["criteria"] = "( pet.gargoyle.active & pet.gargoyle.remains < 16 || ! talent.summon_gargoyle.enabled & pet.army_ghoul.active & pet.army_ghoul.remains < 16 ) || active_enemies > 3 & variable.adds_remain & ( buff.dark_transformation.up || talent.bursting_sores.enabled & death_and_decay.ticking )", ["action"] = "irideus_fragment", }, { ["enabled"] = true, ["name"] = "vial_of_animated_blood", ["use_off_gcd"] = 1, ["criteria"] = "pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= 18 || ! talent.apocalypse.enabled & buff.dark_transformation.up || active_enemies > 3 & variable.adds_remain & ( buff.dark_transformation.up || talent.bursting_sores.enabled & death_and_decay.ticking )", ["action"] = "vial_of_animated_blood", }, { ["enabled"] = true, ["action"] = "trinket1", ["slot"] = "trinket1", ["use_off_gcd"] = 1, ["criteria"] = "! variable.trinket_1_manual & variable.trinket_1_buffs & ( ( ! talent.summon_gargoyle.enabled & ( ( ! talent.army_of_the_dead.enabled || cooldown.army_of_the_dead.remains_expected > 60 || death_knight.disable_aotd ) & ( pet.apoc_ghoul.active || ( ! talent.apocalypse.enabled || active_enemies >= 2 ) & buff.dark_transformation.up ) || pet.army_ghoul.active ) || talent.summon_gargoyle.enabled & pet.gargoyle.active || cooldown.summon_gargoyle.remains > 80 ) & ( pet.apoc_ghoul.active || ( ! talent.apocalypse.enabled || active_enemies >= 2 ) & buff.dark_transformation.up ) & ( variable.trinket_2_exclude || variable.trinket_priority = 1 || trinket.t2.cooldown.remains || ! trinket.t2.has_cooldown ) ) || boss & trinket.t1.buff_duration >= fight_remains", }, { ["enabled"] = true, ["action"] = "trinket2", ["slot"] = "trinket2", ["use_off_gcd"] = 1, ["criteria"] = "! variable.trinket_2_manual & variable.trinket_2_buffs & ( ( ! talent.summon_gargoyle.enabled & ( ( ! talent.army_of_the_dead.enabled || cooldown.army_of_the_dead.remains_expected > 60 || death_knight.disable_aotd ) & ( pet.apoc_ghoul.active || ( ! talent.apocalypse.enabled || active_enemies >= 2 ) & buff.dark_transformation.up ) || pet.army_ghoul.active ) || talent.summon_gargoyle.enabled & pet.gargoyle.active || cooldown.summon_gargoyle.remains > 80 ) & ( pet.apoc_ghoul.active || ( ! talent.apocalypse.enabled || active_enemies >= 2 ) & buff.dark_transformation.up ) & ( variable.trinket_1_exclude || variable.trinket_priority = 2 || trinket.t1.cooldown.remains || ! trinket.t1.has_cooldown ) ) || boss & trinket.t2.buff_duration >= fight_remains", }, { ["enabled"] = true, ["action"] = "trinket1", ["slot"] = "trinket1", ["use_off_gcd"] = 1, ["criteria"] = "! variable.trinket_1_manual & ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! trinket.t2.has_cooldown || ! variable.trinket_2_buffs || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_dead.enabled || ! talent.summon_gargoyle.enabled & talent.army_of_the_dead.enabled & cooldown.army_of_the_dead.remains_expected > 20 || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_dead.enabled & cooldown.dark_transformation.remains > 20 || cooldown.summon_gargoyle.remains > 20 & ! pet.gargoyle.active ) || boss & fight_remains < 15", }, { ["enabled"] = true, ["action"] = "trinket2", ["slot"] = "trinket2", ["use_off_gcd"] = 1, ["criteria"] = "! variable.trinket_2_manual & ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! trinket.t1.has_cooldown || ! variable.trinket_1_buffs || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_dead.enabled || ! talent.summon_gargoyle.enabled & talent.army_of_the_dead.enabled & cooldown.army_of_the_dead.remains_expected > 20 || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_dead.enabled & cooldown.dark_transformation.remains > 20 || cooldown.summon_gargoyle.remains > 20 & ! pet.gargoyle.active ) || boss & fight_remains < 15", }, { ["enabled"] = true, ["use_off_gcd"] = 1, ["criteria"] = "( ! variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( ! variable.trinket_2_buffs || trinket.t2.cooldown.remains )", ["action"] = "use_items", }, }, ["aoe"] = { { ["enabled"] = true, ["description"] = "Generic AoE", ["criteria"] = "! variable.pooling_runic_power || fight_remains < 10", ["action"] = "epidemic", }, { ["enabled"] = true, ["criteria"] = "variable.pop_wounds", ["action"] = "wound_spender", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "! variable.pop_wounds", ["action"] = "festering_strike", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "! variable.pooling_runic_power & ! talent.epidemic.enabled", ["action"] = "death_coil", }, }, ["garg_setup"] = { { ["enabled"] = true, ["description"] = "Garg Setup", ["criteria"] = "debuff.festering_wound.stack >= 4 & ( buff.commander_of_the_dead.up & pet.gargoyle.remains < 23 || ! talent.commander_of_the_dead.enabled )", ["action"] = "apocalypse", }, { ["enabled"] = true, ["criteria"] = "talent.commander_of_the_dead.enabled & ( cooldown.dark_transformation.remains < 3 || buff.commander_of_the_dead.up ) || ! talent.commander_of_the_dead.enabled & talent.unholy_assault.enabled & cooldown.unholy_assault.remains < 10 || ! talent.unholy_assault.enabled & ! talent.commander_of_the_dead.enabled", ["action"] = "army_of_the_dead", }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1 & target.time_to_pct_35 < 5 & target.time_to_die > 5", ["action"] = "soul_reaper", }, { ["enabled"] = true, ["use_off_gcd"] = 1, ["criteria"] = "buff.commander_of_the_dead.up || ! talent.commander_of_the_dead.enabled & runic_power >= 40", ["action"] = "summon_gargoyle", }, { ["enabled"] = true, ["criteria"] = "pet.gargoyle.active & pet.gargoyle.remains <= 23", ["action"] = "empower_rune_weapon", }, { ["enabled"] = true, ["criteria"] = "pet.gargoyle.active & pet.gargoyle.remains <= 23", ["action"] = "unholy_assault", }, { ["enabled"] = true, ["criteria"] = "( pet.gargoyle.remains < 30 & pet.gargoyle.active ) || ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 || cooldown.summon_gargoyle.ready ) & ( buff.dark_transformation.up & buff.dark_transformation.remains < 30 || pet.army_ghoul.active & pet.army_ghoul.remains <= 30 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= 30 )", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "talent.commander_of_the_dead.enabled & runic_power >= 40 || ! talent.commander_of_the_dead.enabled", ["action"] = "dark_transformation", }, { ["enabled"] = true, ["criteria"] = "! death_and_decay.ticking & debuff.festering_wound.stack > 0", ["action"] = "any_dnd", }, { ["enabled"] = true, ["criteria"] = "debuff.festering_wound.stack = 0 || talent.apocalypse.enabled & cooldown.apocalypse.remains < 3 * gcd.max & debuff.festering_wound.stack < 4 || runic_power < 40 || ! talent.apocalypse.enabled & ! pet.gargoyle.active", ["action"] = "festering_strike", }, { ["enabled"] = true, ["criteria"] = "rune <= 1", ["action"] = "death_coil", }, }, }, ["version"] = 20230910, ["warnings"] = "The import for 'aoe_setup' required some automated changes.\nLine 1: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 2: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 6: Converted 'talent.epidemic' to 'talent.epidemic.enabled' (1x).\n\nThe import for 'garg_setup' required some automated changes.\nLine 1: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 2: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 2: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 2: Converted 'talent.unholy_assault' to 'talent.unholy_assault.enabled' (1x).\nLine 2: Converted 'talent.unholy_assault' to 'talent.unholy_assault.enabled' (1x).\nLine 2: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 4: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 7: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 8: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 8: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 10: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 10: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\n\nThe import for 'aoe_burst' required some automated changes.\nLine 1: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 1: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 4: Converted 'talent.epidemic' to 'talent.epidemic.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 3: Converted 'talent.unholy_ground' to 'talent.unholy_ground.enabled' (1x).\nLine 3: Converted 'talent.defile' to 'talent.defile.enabled' (1x).\n\nThe import for 'racials' required some automated changes.\nLine 2: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 3: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 4: Converted 'talent.festermight' to 'talent.festermight.enabled' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 7: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\n\nThe import for 'high_priority' required some automated changes.\nLine 1: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 2: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 2: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 3: Converted 'talent.epidemic' to 'talent.epidemic.enabled' (1x).\nLine 3: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 4: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 5: Converted 'talent.plaguebringer' to 'talent.plaguebringer.enabled' (1x).\nLine 5: Converted 'talent.superstrain' to 'talent.superstrain.enabled' (1x).\nLine 5: Converted 'talent.unholy_blight' to 'talent.unholy_blight.enabled' (1x).\nLine 6: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 6: Converted 'talent.morbidity' to 'talent.morbidity.enabled' (1x).\nLine 6: Converted 'talent.morbidity' to 'talent.morbidity.enabled' (1x).\nLine 7: Converted 'talent.superstrain' to 'talent.superstrain.enabled' (1x).\nLine 7: Converted 'talent.unholy_blight' to 'talent.unholy_blight.enabled' (1x).\nLine 7: Converted 'talent.unholy_blight' to 'talent.unholy_blight.enabled' (1x).\nLine 7: Converted 'talent.superstrain' to 'talent.superstrain.enabled' (1x).\nLine 7: Converted 'talent.plaguebringer' to 'talent.plaguebringer.enabled' (1x).\nLine 7: Converted 'talent.ebon_fever' to 'talent.ebon_fever.enabled' (1x).\nLine 7: Converted operations in 'target.time_to_die>dot.virulent_plague.remains&(dot.virulent_plague.refreshable||talent.superstrain.enabled&(dot.frost_fever_superstrain.refreshable||dot.blood_plague_superstrain.refreshable))&(!talent.unholy_blight.enabled||talent.unholy_blight.enabled&cooldown.unholy_blight.remains>15%((talent.superstrain.enabled*3)+(talent.plaguebringer.enabled*2)+(talent.ebon_fever.enabled*2)))' to 'target.time_to_die>dot.virulent_plague.remains&(dot.virulent_plague.refreshable||talent.superstrain.enabled&(dot.frost_fever_superstrain.refreshable||dot.blood_plague_superstrain.refreshable))&(!talent.unholy_blight.enabled||talent.unholy_blight.enabled&cooldown.unholy_blight.remains>15/((talent.superstrain.enabled*3)+(talent.plaguebringer.enabled*2)+(talent.ebon_fever.enabled*2)))'.\n\nThe import for 'aoe_cooldowns' required some automated changes.\nLine 3: Converted 'talent.festermight' to 'talent.festermight.enabled' (1x).\nLine 4: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 4: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 7: Converted 'talent.infected_claws' to 'talent.infected_claws.enabled' (1x).\nLine 7: Converted 'talent.vile_contagion' to 'talent.vile_contagion.enabled' (1x).\nLine 7: Converted 'talent.infected_claws' to 'talent.infected_claws.enabled' (1x).\n\nThe import for 'cooldowns' required some automated changes.\nLine 1: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 5: Converted 'talent.army_of_the_damned' to 'talent.army_of_the_damned.enabled' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 5: Converted 'talent.army_of_the_damned' to 'talent.army_of_the_damned.enabled' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 2: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 2: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 3: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 3: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (1x).\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 4: Converted 'trinket.1.has_buff.strength' 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.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 5: Converted 'trinket.2.has_buff.strength' 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 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%%45=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%45=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 operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%45=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%45=0)'.\nLine 8: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 8: Converted 'trinket.1.is.irideus_fragment' to 'trinket.t1.is.irideus_fragment' (1x).\nLine 8: Converted 'trinket.1.is.vial_of_animated_blood' to 'trinket.t1.is.vial_of_animated_blood' (1x).\nLine 9: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\nLine 9: Converted 'trinket.2.is.irideus_fragment' to 'trinket.t2.is.irideus_fragment' (1x).\nLine 9: Converted 'trinket.2.is.vial_of_animated_blood' to 'trinket.t2.is.vial_of_animated_blood' (1x).\nLine 10: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 10: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (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.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 10: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 10: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 10: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 10: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 10: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 10: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 10: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 10: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 10: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 10: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs&(trinket.t2.has_cooldown&!variable.trinket_2_exclude||!trinket.t1.has_cooldown)||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&(trinket.t2.has_cooldown&!variable.trinket_2_exclude||!trinket.t1.has_cooldown)||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 11: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 11: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 12: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 12: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 13: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 13: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 14: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 14: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 14: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 14: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 14: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (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 14: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 14: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 14: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 15: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 15: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 15: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 15: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 15: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (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'.\nLine 15: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 15: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 15: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 16: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 16: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 16: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 16: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 16: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 16: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 16: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 16: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 16: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 17: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 17: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 17: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 17: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 17: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 17: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 17: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 17: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 17: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 18: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 18: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 18: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 18: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 4: Converted 'talent.assimilation' to 'talent.assimilation.enabled' (1x).\nLine 4: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 5: Converted 'talent.improved_death_coil' to 'talent.improved_death_coil.enabled' (1x).\nLine 5: Converted 'talent.coil_of_devastation' to 'talent.coil_of_devastation.enabled' (1x).\nLine 5: Converted 'talent.coil_of_devastation' to 'talent.coil_of_devastation.enabled' (1x).\nLine 5: Converted 'talent.improved_death_coil' to 'talent.improved_death_coil.enabled' (1x).\nLine 6: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 6: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 8: Converted 'talent.infected_claws' to 'talent.infected_claws.enabled' (1x).\nLine 8: Converted 'talent.festermight' to 'talent.festermight.enabled' (1x).\nLine 8: Converted operations in '!pet.gargoyle.active&talent.festermight.enabled&buff.festermight.up&(buff.festermight.remains%(5*gcd.max))>=1' to '!pet.gargoyle.active&talent.festermight.enabled&buff.festermight.up&(buff.festermight.remains/(5*gcd.max))>=1'.\nLine 9: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 9: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 9: Converted 'talent.unholy_assault' to 'talent.unholy_assault.enabled' (1x).\nLine 10: Converted 'talent.vile_contagion' to 'talent.vile_contagion.enabled' (1x).\nLine 13: Converted 'talent.rotten_touch' to 'talent.rotten_touch.enabled' (1x).\nLine 13: Converted 'talent.rotten_touch' to 'talent.rotten_touch.enabled' (1x).\nLine 13: Converted 'talent.improved_death_coil' to 'talent.improved_death_coil.enabled' (1x).\nLine 13: Converted 'talent.coil_of_devastation' to 'talent.coil_of_devastation.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 4: Converted 'talent.epidemic' to 'talent.epidemic.enabled' (1x).\n\nImported 12 action lists.\n", ["author"] = "SimulationCraft", ["profile"] = "actions.precombat+=/raise_dead\nactions.precombat+=/army_of_the_dead,precombat_time=2\n\nactions+=/mind_freeze\nactions+=/strangulate\nactions+=/antimagic_shell,if=runic_power.deficit>40&(pet.gargoyle.active||!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>cooldown.antimagic_shell.duration)\nactions+=/antimagic_zone,if=death_knight.amz_absorb_percent>0&runic_power.deficit>70&talent.assimilation&(pet.gargoyle.active||!talent.summon_gargoyle)\n# Variables\nactions+=/variable,name=epidemic_priority,op=setif,value=1,value_else=0,condition=talent.improved_death_coil&!talent.coil_of_devastation&active_enemies>=3||talent.coil_of_devastation&active_enemies>=4||!talent.improved_death_coil&active_enemies>=2\nactions+=/variable,name=garg_setup_complete,op=setif,value=1,value_else=0,condition=active_enemies>=3||cooldown.summon_gargoyle.remains>1&(cooldown.apocalypse.remains>1||!talent.apocalypse)||!talent.summon_gargoyle||time>20\nactions+=/variable,name=apoc_timing,op=setif,value=7,value_else=2,condition=cooldown.apocalypse.remains<10&debuff.festering_wound.stack<=4&cooldown.unholy_assault.remains>10\nactions+=/variable,name=festermight_tracker,op=setif,value=debuff.festering_wound.stack>=1,value_else=debuff.festering_wound.stack>=(3-talent.infected_claws),condition=!pet.gargoyle.active&talent.festermight&buff.festermight.up&(buff.festermight.remains%(5*gcd.max))>=1\nactions+=/variable,name=pop_wounds,op=setif,value=1,value_else=0,condition=(cooldown.apocalypse.remains>variable.apoc_timing||!talent.apocalypse)&(variable.festermight_tracker||debuff.festering_wound.stack>=1&!talent.apocalypse||debuff.festering_wound.stack>=1&cooldown.unholy_assault.remains<20&talent.unholy_assault&variable.st_planning||debuff.rotten_touch.up&debuff.festering_wound.stack>=1||debuff.festering_wound.stack>4)||fight_remains<5&debuff.festering_wound.stack>=1\nactions+=/variable,name=pooling_runic_power,op=setif,value=1,value_else=0,condition=talent.vile_contagion&cooldown.vile_contagion.remains<3&runic_power<60&!variable.st_planning\nactions+=/variable,name=st_planning,op=setif,value=1,value_else=0,condition=active_enemies=1&(!raid_event.adds.exists||raid_event.adds.in>15)\nactions+=/variable,name=adds_remain,op=setif,value=1,value_else=0,condition=active_enemies>=2&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.remains>6)\nactions+=/variable,name=spend_rp,op=setif,value=1,value_else=0,condition=(!talent.rotten_touch||talent.rotten_touch&!debuff.rotten_touch.up||runic_power.deficit<15)&((talent.improved_death_coil&(active_enemies=2||talent.coil_of_devastation)||rune<3||pet.gargoyle.active||buff.sudden_doom.react||cooldown.apocalypse.remains<10&debuff.festering_wound.stack>3||!variable.pop_wounds&debuff.festering_wound.stack>=4))\n# Call Action Lists\nactions+=/call_action_list,name=high_priority\nactions+=/call_action_list,name=trinkets\nactions+=/run_action_list,name=garg_setup,strict=1,if=variable.garg_setup_complete=0\nactions+=/call_action_list,name=cooldowns,strict=1,if=variable.st_planning\nactions+=/call_action_list,name=aoe_cooldowns,strict=1,if=variable.adds_remain\nactions+=/call_action_list,name=racials\nactions+=/call_action_list,name=aoe_setup,if=variable.adds_remain&cooldown.any_dnd.remains<10&!death_and_decay.ticking\nactions+=/call_action_list,name=aoe_burst,strict=1,if=active_enemies>=4&death_and_decay.ticking\nactions+=/call_action_list,name=aoe,if=active_enemies>=4&(cooldown.any_dnd.remains>10&!death_and_decay.ticking||!variable.adds_remain)\nactions+=/call_action_list,name=st,strict=1,if=active_enemies<=3\n\n# Generic AoE\nactions.aoe+=/epidemic,if=!variable.pooling_runic_power||fight_remains<10\nactions.aoe+=/wound_spender,cycle_targets=1,if=variable.pop_wounds\nactions.aoe+=/festering_strike,cycle_targets=1,if=!variable.pop_wounds\nactions.aoe+=/death_coil,if=!variable.pooling_runic_power&!talent.epidemic\n\n# AoE Burst\nactions.aoe_burst+=/epidemic,if=(!talent.bursting_sores||rune<1||talent.bursting_sores&debuff.festering_wound.stack=0)&!variable.pooling_runic_power&(active_enemies>=6||runic_power.deficit<30||buff.festermight.stack=20)\nactions.aoe_burst+=/wound_spender,cycle_targets=1,if=debuff.festering_wound.stack>=1\nactions.aoe_burst+=/epidemic,if=!variable.pooling_runic_power||fight_remains<10\nactions.aoe_burst+=/death_coil,if=!variable.pooling_runic_power&!talent.epidemic\nactions.aoe_burst+=/wound_spender\n\n# AoE Cooldowns\nactions.aoe_cooldowns+=/vile_contagion,cycle_targets=1,if=debuff.festering_wound.stack>=4&cooldown.any_dnd.remains<3\nactions.aoe_cooldowns+=/summon_gargoyle\nactions.aoe_cooldowns+=/abomination_limb,if=rune<2||buff.festermight.stack>10||!talent.festermight||buff.festermight.up&buff.festermight.remains<12\nactions.aoe_cooldowns+=/apocalypse,cycle_targets=1,if=talent.bursting_sores&debuff.festering_wound.up&(!death_and_decay.ticking&cooldown.death_and_decay.remains&rune<3||death_and_decay.ticking&rune=0)||!talent.bursting_sores&debuff.festering_wound.stack>=4\nactions.aoe_cooldowns+=/unholy_assault,cycle_targets=1,if=debuff.festering_wound.stack<=2||buff.dark_transformation.up\nactions.aoe_cooldowns+=/raise_dead,if=!pet.ghoul.active\nactions.aoe_cooldowns+=/dark_transformation,if=(cooldown.any_dnd.remains<10&talent.infected_claws&((cooldown.vile_contagion.remains||raid_event.adds.exists&raid_event.adds.in>10)&death_knight.fwounded_targets5||!raid_event.adds.exists)||!talent.infected_claws)\nactions.aoe_cooldowns+=/empower_rune_weapon,if=buff.dark_transformation.up\nactions.aoe_cooldowns+=/sacrificial_pact,if=!buff.dark_transformation.up&cooldown.dark_transformation.remains>6||boss&fight_remains=cycle_enemies||death_knight.fwounded_targets>=8||raid_event.adds.exists&raid_event.adds.remains<=11&raid_event.adds.remains>5)\nactions.aoe_setup+=/festering_strike,cycle_targets=1,if=(debuff.festering_wound.down||death_knight.fwounded_targets=4\nactions.cooldowns+=/empower_rune_weapon,if=variable.st_planning&(pet.gargoyle.active&pet.gargoyle.remains<=23||!talent.summon_gargoyle&talent.army_of_the_damned&pet.army_ghoul.active&pet.apoc_ghoul.active||!talent.summon_gargoyle&!talent.army_of_the_damned&buff.dark_transformation.up||!talent.summon_gargoyle&!talent.summon_gargoyle&buff.dark_transformation.up)||boss&fight_remains<=21\nactions.cooldowns+=/abomination_limb,if=rune<3&variable.st_planning\nactions.cooldowns+=/unholy_assault,cycle_targets=1,if=variable.st_planning\nactions.cooldowns+=/soul_reaper,if=active_enemies=1&target.time_to_pct_35<5&target.time_to_die>5\nactions.cooldowns+=/soul_reaper,cycle_targets=1,if=target.time_to_pct_35<5&active_enemies>=2&target.time_to_die>(dot.soul_reaper.remains+5)\n\n# Garg Setup\nactions.garg_setup+=/apocalypse,if=debuff.festering_wound.stack>=4&(buff.commander_of_the_dead.up&pet.gargoyle.remains<23||!talent.commander_of_the_dead)\nactions.garg_setup+=/army_of_the_dead,if=talent.commander_of_the_dead&(cooldown.dark_transformation.remains<3||buff.commander_of_the_dead.up)||!talent.commander_of_the_dead&talent.unholy_assault&cooldown.unholy_assault.remains<10||!talent.unholy_assault&!talent.commander_of_the_dead\nactions.garg_setup+=/soul_reaper,if=active_enemies=1&target.time_to_pct_35<5&target.time_to_die>5\nactions.garg_setup+=/summon_gargoyle,use_off_gcd=1,if=buff.commander_of_the_dead.up||!talent.commander_of_the_dead&runic_power>=40\nactions.garg_setup+=/empower_rune_weapon,if=pet.gargoyle.active&pet.gargoyle.remains<=23\nactions.garg_setup+=/unholy_assault,if=pet.gargoyle.active&pet.gargoyle.remains<=23\nactions.garg_setup+=/potion,if=(pet.gargoyle.remains<30&pet.gargoyle.active)||(!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>60||cooldown.summon_gargoyle.ready)&(buff.dark_transformation.up&buff.dark_transformation.remains<30||pet.army_ghoul.active&pet.army_ghoul.remains<=30||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=30)\nactions.garg_setup+=/dark_transformation,if=talent.commander_of_the_dead&runic_power>=40||!talent.commander_of_the_dead\nactions.garg_setup+=/any_dnd,if=!death_and_decay.ticking&debuff.festering_wound.stack>0\nactions.garg_setup+=/festering_strike,if=debuff.festering_wound.stack=0||talent.apocalypse&cooldown.apocalypse.remains<3*gcd.max&debuff.festering_wound.stack<4||runic_power<40||!talent.apocalypse&!pet.gargoyle.active\nactions.garg_setup+=/death_coil,if=rune<=1\n\n# Priority Actions\nactions.high_priority+=/potion,if=pet.gargoyle.remains<=30||(!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>60||cooldown.summon_gargoyle.ready)&(buff.dark_transformation.up&30>=buff.dark_transformation.remains||pet.army_ghoul.active&pet.army_ghoul.remains<=30||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=30)||boss&fight_remains<=30\nactions.high_priority+=/army_of_the_dead,if=talent.summon_gargoyle&cooldown.summon_gargoyle.remains<2||!talent.summon_gargoyle||boss&fight_remains<35\nactions.high_priority+=/death_coil,if=(active_enemies<=3||!talent.epidemic)&(pet.gargoyle.active&talent.commander_of_the_dead&buff.commander_of_the_dead.up&cooldown.apocalypse.remains<5&buff.commander_of_the_dead.remains>27||debuff.death_rot.up&debuff.death_rot.remains=4&(talent.commander_of_the_dead&buff.commander_of_the_dead.up&cooldown.apocalypse.remains<5||debuff.death_rot.up&debuff.death_rot.remainsvariable.apoc_timing+3||active_enemies>=3)&talent.plaguebringer&(talent.superstrain||talent.unholy_blight)&buff.plaguebringer.remainsdot.virulent_plague.remains&(dot.virulent_plague.refreshable||talent.superstrain&(dot.frost_fever_superstrain.refreshable||dot.blood_plague_superstrain.refreshable))&(!talent.unholy_blight||talent.unholy_blight&cooldown.unholy_blight.remains>15%((talent.superstrain*3)+(talent.plaguebringer*2)+(talent.ebon_fever*2)))\n\n# Racials\nactions.racials+=/arcane_torrent,if=runic_power.deficit>20&(cooldown.summon_gargoyle.remains=pet.gargoyle.remains&pet.gargoyle.active)||(!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>60)&(pet.army_ghoul.active&pet.army_ghoul.remains<=buff.blood_fury.duration+3||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=buff.blood_fury.duration+3||active_enemies>=2&death_and_decay.ticking)||boss&fight_remains<=buff.blood_fury.duration+3\nactions.racials+=/berserking,if=(buff.berserking.duration+3>=pet.gargoyle.remains&pet.gargoyle.active)||(!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>60)&(pet.army_ghoul.active&pet.army_ghoul.remains<=buff.berserking.duration+3||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=buff.berserking.duration+3||active_enemies>=2&death_and_decay.ticking)||boss&fight_remains<=buff.berserking.duration+3\nactions.racials+=/lights_judgment,if=buff.unholy_strength.up&(!talent.festermight||buff.festermight.remains=pet.gargoyle.remains&pet.gargoyle.active)||(!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>60)&(pet.army_ghoul.active&pet.army_ghoul.remains<=18||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=18||active_enemies>=2&death_and_decay.ticking)||boss&fight_remains<=18\nactions.racials+=/arcane_pulse,if=active_enemies>=2||(rune.deficit>=5&runic_power.deficit>=60)\nactions.racials+=/fireblood,if=(buff.fireblood.duration+3>=pet.gargoyle.remains&pet.gargoyle.active)||(!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>60)&(pet.army_ghoul.active&pet.army_ghoul.remains<=buff.fireblood.duration+3||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=buff.fireblood.duration+3||active_enemies>=2&death_and_decay.ticking)||boss&fight_remains<=buff.fireblood.duration+3\nactions.racials+=/bag_of_tricks,if=active_enemies=1&(buff.unholy_strength.up||boss&fight_remains<5)\n\n# Single Target\nactions.st+=/death_coil,if=!variable.epidemic_priority&(!variable.pooling_runic_power&variable.spend_rp||boss&fight_remains<10)\nactions.st+=/epidemic,if=variable.epidemic_priority&(!variable.pooling_runic_power&variable.spend_rp||boss&fight_remains<10)\nactions.st+=/any_dnd,if=!death_and_decay.ticking&(active_enemies>=2||talent.unholy_ground&(pet.apoc_ghoul.active&pet.apoc_ghoul.remains>=13||pet.gargoyle.active&pet.gargoyle.remains>8||pet.army_ghoul.active&pet.army_ghoul.remains>8||!variable.pop_wounds&debuff.festering_wound.stack>=4)||talent.defile&(pet.gargoyle.active||pet.apoc_ghoul.active||pet.army_ghoul.active||buff.dark_transformation.up))&(death_knight.fwounded_targets>=cycle_enemies||active_enemies=1)\nactions.st+=/wound_spender,cycle_targets=1,if=variable.pop_wounds||active_enemies>=2&death_and_decay.ticking\nactions.st+=/festering_strike,cycle_targets=1,if=!variable.pop_wounds&debuff.festering_wound.stack<4\nactions.st+=/death_coil\nactions.st+=/wound_spender,cycle_targets=1,if=!variable.pop_wounds&debuff.festering_wound.stack>=4\n\n# Trinkets\nactions.trinkets=use_item,name=gavel_of_the_first_arbiter\nactions.trinkets+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell||trinket.1.is.whispering_incarnate_icon\nactions.trinkets+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell||trinket.2.is.whispering_incarnate_icon\nactions.trinkets+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_buff.strength||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit)&!variable.trinket_1_exclude\nactions.trinkets+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_buff.strength||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit)&!variable.trinket_2_exclude\nactions.trinkets+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%45=0)\nactions.trinkets+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%45=0)\nactions.trinkets+=/variable,name=trinket_1_manual,value=trinket.1.is.algethar_puzzle_box||trinket.1.is.irideus_fragment||trinket.1.is.vial_of_animated_blood\nactions.trinkets+=/variable,name=trinket_2_manual,value=trinket.2.is.algethar_puzzle_box||trinket.2.is.irideus_fragment||trinket.2.is.vial_of_animated_blood\nactions.trinkets+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs&(trinket.2.has_cooldown&!variable.trinket_2_exclude||!trinket.1.has_cooldown)||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.trinkets+=/use_item,use_off_gcd=1,name=algethar_puzzle_box,if=cooldown.summon_gargoyle.remains<5&rune<=4||!talent.summon_gargoyle&pet.army_ghoul.active||active_enemies>3&variable.adds_remain&(buff.dark_transformation.up||talent.bursting_sores&cooldown.any_dnd.remains<10&!death_and_decay.ticking)\nactions.trinkets+=/use_item,use_off_gcd=1,name=irideus_fragment,if=(pet.gargoyle.active&pet.gargoyle.remains<16||!talent.summon_gargoyle&pet.army_ghoul.active&pet.army_ghoul.remains<16)||active_enemies>3&variable.adds_remain&(buff.dark_transformation.up||talent.bursting_sores&death_and_decay.ticking)\nactions.trinkets+=/use_item,use_off_gcd=1,name=vial_of_animated_blood,if=pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=18||!talent.apocalypse&buff.dark_transformation.up||active_enemies>3&variable.adds_remain&(buff.dark_transformation.up||talent.bursting_sores&death_and_decay.ticking)\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_manual&variable.trinket_1_buffs&((!talent.summon_gargoyle&((!talent.army_of_the_dead||cooldown.army_of_the_dead.remains_expected>60||death_knight.disable_aotd)&(pet.apoc_ghoul.active||(!talent.apocalypse||active_enemies>=2)&buff.dark_transformation.up)||pet.army_ghoul.active)||talent.summon_gargoyle&pet.gargoyle.active||cooldown.summon_gargoyle.remains>80)&(pet.apoc_ghoul.active||(!talent.apocalypse||active_enemies>=2)&buff.dark_transformation.up)&(variable.trinket_2_exclude||variable.trinket_priority=1||trinket.2.cooldown.remains||!trinket.2.has_cooldown))||boss&trinket.1.proc.any_dps.duration>=fight_remains\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_manual&variable.trinket_2_buffs&((!talent.summon_gargoyle&((!talent.army_of_the_dead||cooldown.army_of_the_dead.remains_expected>60||death_knight.disable_aotd)&(pet.apoc_ghoul.active||(!talent.apocalypse||active_enemies>=2)&buff.dark_transformation.up)||pet.army_ghoul.active)||talent.summon_gargoyle&pet.gargoyle.active||cooldown.summon_gargoyle.remains>80)&(pet.apoc_ghoul.active||(!talent.apocalypse||active_enemies>=2)&buff.dark_transformation.up)&(variable.trinket_1_exclude||variable.trinket_priority=2||trinket.1.cooldown.remains||!trinket.1.has_cooldown))||boss&trinket.2.proc.any_dps.duration>=fight_remains\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_manual&!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!trinket.2.has_cooldown||!variable.trinket_2_buffs||!talent.summon_gargoyle&!talent.army_of_the_dead||!talent.summon_gargoyle&talent.army_of_the_dead&cooldown.army_of_the_dead.remains_expected>20||!talent.summon_gargoyle&!talent.army_of_the_dead&cooldown.dark_transformation.remains>20||cooldown.summon_gargoyle.remains>20&!pet.gargoyle.active)||boss&fight_remains<15\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_manual&!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!trinket.1.has_cooldown||!variable.trinket_1_buffs||!talent.summon_gargoyle&!talent.army_of_the_dead||!talent.summon_gargoyle&talent.army_of_the_dead&cooldown.army_of_the_dead.remains_expected>20||!talent.summon_gargoyle&!talent.army_of_the_dead&cooldown.dark_transformation.remains>20||cooldown.summon_gargoyle.remains>20&!pet.gargoyle.active)||boss&fight_remains<15\nactions.trinkets+=/use_items,use_off_gcd=1,if=(!variable.trinket_1_buffs||trinket.1.cooldown.remains)&(!variable.trinket_2_buffs||trinket.2.cooldown.remains)", }, ["Frost DK"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20230921, ["author"] = "SimC", ["desc"] = "2023-09-21: Tier 31 prep.\n\n2023-09-10: Minor change for Gathering Storm.\n\n2023-07-12: Patch 10.1.5 minor update.\n\n2023-06-24: Resynced with SimC.\n\n2023-05-28: Minor priority update.\n\n2023-05-24: Update Obliterate usage with T30.\n\n2023-05-21: Minor updates.\n\n2023-04-30: Trinket logic updated from SimC.\n\n2023-03-27: Minor SimC updates.\n\n2023-03-25: Updates (mainly to Obliteration).\n\n2023-03-21: Fix Breath of Sindragosa.\n\n2023-03-13: Updates for 10.0.7.\n\n2023-02-20: Additional adjustments for leveling and/or taking Obliteration without ERW.\n\n2023-02-19: Adjusted variable.pooling_runes such that you are not pooling when you are already at max runes. It is unclear why this check isn't needed in SimulationCraft, but is required in-game.", ["lists"] = { ["single_target"] = { { ["enabled"] = true, ["description"] = "Single Target Rotation", ["criteria"] = "variable.rw_buffs || variable.adds_remain", ["action"] = "remorseless_winter", }, { ["enabled"] = true, ["criteria"] = "buff.killing_machine.stack < 2 & runic_power.deficit < 20 & ! variable.two_hand_check", ["action"] = "frost_strike", }, { ["enabled"] = true, ["criteria"] = "buff.rime.up & set_bonus.tier30_2pc & buff.killing_machine.stack < 2", ["action"] = "howling_blast", }, { ["enabled"] = true, ["criteria"] = "buff.killing_machine.up & variable.frostscythe_priority", ["action"] = "frostscythe", }, { ["enabled"] = true, ["criteria"] = "buff.killing_machine.up", ["action"] = "obliterate", }, { ["enabled"] = true, ["criteria"] = "buff.rime.up & talent.icebreaker.rank = 2", ["action"] = "howling_blast", }, { ["enabled"] = true, ["criteria"] = "rune < 4 & runic_power.deficit > 25 & talent.obliteration.enabled & talent.breath_of_sindragosa.enabled", ["action"] = "horn_of_winter", }, { ["enabled"] = true, ["criteria"] = "! variable.pooling_runic_power & ( variable.rp_buffs || runic_power.deficit < 25 || debuff.razorice.stack = 5 & talent.shattering_blade.enabled )", ["action"] = "frost_strike", }, { ["enabled"] = true, ["criteria"] = "variable.rime_buffs", ["action"] = "howling_blast", }, { ["enabled"] = true, ["criteria"] = "! variable.pooling_runic_power & ! death_knight.runeforge.razorice & ( debuff.razorice.stack < 5 || debuff.razorice.remains < gcd.max * 3 )", ["action"] = "glacial_advance", }, { ["enabled"] = true, ["criteria"] = "! variable.pooling_runes", ["action"] = "obliterate", }, { ["enabled"] = true, ["criteria"] = "rune < 4 & runic_power.deficit > 25 & ( ! talent.breath_of_sindragosa.enabled || cooldown.breath_of_sindragosa.remains > cooldown.horn_of_winter.duration )", ["action"] = "horn_of_winter", }, { ["enabled"] = true, ["criteria"] = "runic_power.deficit > 20", ["action"] = "arcane_torrent", }, { ["enabled"] = true, ["criteria"] = "! variable.pooling_runic_power", ["action"] = "frost_strike", }, }, ["cold_heart"] = { { ["enabled"] = true, ["description"] = "Cold Heart", ["criteria"] = "boss & fight_remains < gcd.max & ( rune < 2 || ! buff.killing_machine.up & ( ! variable.two_hand_check & buff.cold_heart.stack >= 4 || variable.two_hand_check & buff.cold_heart.stack > 8 ) || buff.killing_machine.up & ( ! variable.two_hand_check & buff.cold_heart.stack > 8 || variable.two_hand_check & buff.cold_heart.stack > 10 ) )", ["action"] = "chains_of_ice", }, { ["enabled"] = true, ["criteria"] = "! talent.obliteration.enabled & buff.pillar_of_frost.up & buff.cold_heart.stack >= 10 & ( buff.pillar_of_frost.remains < gcd.max * ( 1 + ( talent.frostwyrms_fury.enabled & cooldown.frostwyrms_fury.ready ) ) || buff.unholy_strength.up & buff.unholy_strength.remains < gcd.max )", ["action"] = "chains_of_ice", }, { ["enabled"] = true, ["criteria"] = "! talent.obliteration.enabled & death_knight.runeforge.fallen_crusader & ! buff.pillar_of_frost.up & cooldown.pillar_of_frost.remains_expected > 15 & ( buff.cold_heart.stack >= 10 & buff.unholy_strength.up || buff.cold_heart.stack >= 13 )", ["action"] = "chains_of_ice", }, { ["enabled"] = true, ["criteria"] = "! talent.obliteration.enabled & ! death_knight.runeforge.fallen_crusader & buff.cold_heart.stack >= 10 & ! buff.pillar_of_frost.up & cooldown.pillar_of_frost.remains_expected > 20", ["action"] = "chains_of_ice", }, { ["enabled"] = true, ["criteria"] = "talent.obliteration.enabled & ! buff.pillar_of_frost.up & ( buff.cold_heart.stack >= 14 & ( buff.unholy_strength.up || buff.chaos_bane.up ) || buff.cold_heart.stack >= 19 || cooldown.pillar_of_frost.remains_expected < 3 & buff.cold_heart.stack >= 14 )", ["action"] = "chains_of_ice", }, }, ["obliteration"] = { { ["enabled"] = true, ["description"] = "Obliteration Active Rotation", ["criteria"] = "active_enemies > 3 || talent.gathering_storm.enabled", ["action"] = "remorseless_winter", }, { ["enabled"] = true, ["criteria"] = "buff.killing_machine.stack < 2 & buff.pillar_of_frost.remains < gcd.max & buff.rime.up", ["action"] = "howling_blast", }, { ["enabled"] = true, ["criteria"] = "buff.killing_machine.stack < 2 & buff.pillar_of_frost.remains < gcd.max & ! death_and_decay.ticking", ["action"] = "frost_strike", }, { ["enabled"] = true, ["criteria"] = "buff.killing_machine.stack < 2 & buff.pillar_of_frost.remains < gcd.max & ! death_and_decay.ticking", ["action"] = "glacial_advance", }, { ["enabled"] = true, ["criteria"] = "buff.killing_machine.up & ! variable.frostscythe_priority", ["action"] = "obliterate", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.killing_machine.up & variable.frostscythe_priority", ["action"] = "frostscythe", }, { ["enabled"] = true, ["criteria"] = "! buff.killing_machine.up & ( ! dot.frost_fever.ticking || buff.rime.up & set_bonus.tier30_2pc & ! variable.rp_buffs )", ["action"] = "howling_blast", }, { ["enabled"] = true, ["criteria"] = "! buff.killing_machine.up & ( ! death_knight.runeforge.razorice & ( ! talent.avalanche.enabled || debuff.razorice.stack < 5 || debuff.razorice.remains < gcd.max * 3 ) || ( variable.rp_buffs & active_enemies > 1 ) )", ["action"] = "glacial_advance", }, { ["enabled"] = true, ["criteria"] = "! buff.killing_machine.up & ( rune < 2 || variable.rp_buffs || debuff.razorice.stack = 5 & talent.shattering_blade.enabled ) & ! variable.pooling_runic_power & ( ! talent.glacial_advance.enabled || active_enemies = 1 )", ["action"] = "frost_strike", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.rime.up & ! buff.killing_machine.up", ["action"] = "howling_blast", }, { ["enabled"] = true, ["criteria"] = "! variable.pooling_runic_power & variable.rp_buffs & ! buff.killing_machine.up & active_enemies >= 2", ["action"] = "glacial_advance", }, { ["enabled"] = true, ["criteria"] = "! buff.killing_machine.up & ! variable.pooling_runic_power & ( ! talent.glacial_advance.enabled || active_enemies = 1 )", ["action"] = "frost_strike", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "! buff.killing_machine.up & runic_power < 25", ["action"] = "howling_blast", }, { ["enabled"] = true, ["criteria"] = "rune < 1 & runic_power < 25", ["action"] = "arcane_torrent", }, { ["enabled"] = true, ["criteria"] = "! variable.pooling_runic_power & active_enemies >= 2", ["action"] = "glacial_advance", }, { ["enabled"] = true, ["criteria"] = "! variable.pooling_runic_power & ( ! talent.glacial_advance.enabled || active_enemies = 1 )", ["action"] = "frost_strike", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.rime.up", ["action"] = "howling_blast", }, { ["enabled"] = true, ["action"] = "obliterate", ["cycle_targets"] = 1, }, }, ["breath"] = { { ["enabled"] = true, ["description"] = "Breath Active Rotation", ["criteria"] = "variable.rw_buffs || variable.adds_remain", ["action"] = "remorseless_winter", }, { ["enabled"] = true, ["criteria"] = "variable.rime_buffs & runic_power > ( 45 - talent.rage_of_the_frozen_champion.enabled * 8 )", ["action"] = "howling_blast", }, { ["enabled"] = true, ["criteria"] = "rune < 2 & runic_power.deficit > 25", ["action"] = "horn_of_winter", }, { ["enabled"] = true, ["criteria"] = "buff.killing_machine.up & ! variable.frostscythe_priority", ["action"] = "obliterate", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.killing_machine.up & variable.frostscythe_priority", ["action"] = "frostscythe", }, { ["enabled"] = true, ["criteria"] = "variable.frostscythe_priority & runic_power > 45", ["action"] = "frostscythe", }, { ["enabled"] = true, ["criteria"] = "runic_power.deficit > 40 || buff.pillar_of_frost.up & runic_power.deficit > 17", ["action"] = "obliterate", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "runic_power < 36 & rune.time_to_2 > runic_power / 18", ["action"] = "death_and_decay", }, { ["enabled"] = true, ["criteria"] = "runic_power < 36 & rune.time_to_2 > runic_power / 18", ["action"] = "remorseless_winter", }, { ["enabled"] = true, ["criteria"] = "runic_power < 36 & rune.time_to_2 > runic_power / 18", ["action"] = "howling_blast", }, { ["enabled"] = true, ["criteria"] = "runic_power.deficit > 25", ["action"] = "obliterate", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.rime.up", ["action"] = "howling_blast", }, { ["enabled"] = true, ["criteria"] = "runic_power < 60", ["action"] = "arcane_torrent", }, }, ["aoe"] = { { ["enabled"] = true, ["description"] = "AoE Action List", ["action"] = "remorseless_winter", }, { ["enabled"] = true, ["criteria"] = "buff.rime.up || ! dot.frost_fever.ticking", ["action"] = "howling_blast", }, { ["enabled"] = true, ["criteria"] = "! variable.pooling_runic_power & variable.rp_buffs", ["action"] = "glacial_advance", }, { ["enabled"] = true, ["criteria"] = "buff.killing_machine.up & talent.cleaving_strikes.enabled & death_and_decay.ticking & ! variable.frostscythe_priority", ["action"] = "obliterate", }, { ["enabled"] = true, ["criteria"] = "! variable.pooling_runic_power", ["action"] = "glacial_advance", }, { ["enabled"] = true, ["criteria"] = "variable.frostscythe_priority", ["action"] = "frostscythe", }, { ["enabled"] = true, ["criteria"] = "! variable.frostscythe_priority", ["action"] = "obliterate", }, { ["enabled"] = true, ["criteria"] = "! variable.pooling_runic_power & ! talent.glacial_advance.enabled", ["action"] = "frost_strike", }, { ["enabled"] = true, ["criteria"] = "rune < 2 & runic_power.deficit > 25", ["action"] = "horn_of_winter", }, { ["enabled"] = true, ["criteria"] = "runic_power.deficit > 25", ["action"] = "arcane_torrent", }, }, ["default"] = { { ["action"] = "mind_freeze", ["enabled"] = true, }, { ["action"] = "strangulate", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "runic_power.deficit > 40", ["action"] = "antimagic_shell", }, { ["enabled"] = true, ["criteria"] = "death_knight.amz_absorb_percent > 0 & runic_power.deficit > 70 & talent.assimilation.enabled & ( buff.breath_of_sindragosa.up & cooldown.empower_rune_weapon.charges < 2 || ! talent.breath_of_sindragosa.enabled & ! buff.pillar_of_frost.up )", ["action"] = "antimagic_zone", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "active_enemies = 1 & ( raid_event.adds.in > 15 || ! raid_event.adds.exists )", ["var_name"] = "st_planning", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "active_enemies >= 2 & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.remains > 5 )", ["var_name"] = "adds_remain", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "buff.rime.up & ( talent.rage_of_the_frozen_champion.enabled || talent.avalanche.enabled || talent.icebreaker.enabled )", ["var_name"] = "rime_buffs", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "talent.unleashed_frenzy.enabled & ( buff.unleashed_frenzy.remains < gcd.max * 3 || buff.unleashed_frenzy.stack < 3 ) || talent.icy_talons.enabled & ( buff.icy_talons.remains < gcd.max * 3 || buff.icy_talons.stack < 3 )", ["var_name"] = "rp_buffs", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "talent.pillar_of_frost.enabled & buff.pillar_of_frost.up & ( talent.obliteration.enabled & buff.pillar_of_frost.remains < 6 || ! talent.obliteration.enabled ) || ! talent.pillar_of_frost.enabled & buff.empower_rune_weapon.up || ! talent.pillar_of_frost.enabled & ! talent.empower_rune_weapon.enabled || active_enemies >= 2 & buff.pillar_of_frost.up", ["var_name"] = "cooldown_check", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "talent.frostscythe.enabled & ( buff.killing_machine.up || active_enemies >= 3 ) & ( ! talent.improved_obliterate.enabled & ! talent.frigid_executioner.enabled & ! talent.frostreaper.enabled & ! talent.might_of_the_frozen_wastes.enabled || ! talent.cleaving_strikes.enabled || talent.cleaving_strikes.enabled & ( active_enemies > 6 || ! death_and_decay.ticking & active_enemies > 3 ) )", ["var_name"] = "frostscythe_priority", }, { ["enabled"] = true, ["op"] = "setif", ["description"] = "Formulaic approach to determine the time before these abilities come off cooldown that the simulation should star to pool resources. Capped at 15s in the run_action_list call.", ["value"] = "( ( cooldown.pillar_of_frost.remains_expected + 1 ) / gcd.max ) / ( ( rune + 3 ) * ( runic_power + 5 ) ) * 100", ["var_name"] = "oblit_pooling_time", ["action"] = "variable", ["value_else"] = "3", ["criteria"] = "runic_power < 35 & rune < 2 & cooldown.pillar_of_frost.remains_expected < 10", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "breath_pooling_time", ["value"] = "( ( cooldown.breath_of_sindragosa.remains + 1 ) / gcd.max ) / ( ( rune + 1 ) * ( runic_power + 20 ) ) * 100", ["value_else"] = "3", ["criteria"] = "runic_power.deficit > 10 & cooldown.breath_of_sindragosa.remains < 10", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "rune < 4 & talent.obliteration.enabled & cooldown.pillar_of_frost.remains_expected < variable.oblit_pooling_time", ["var_name"] = "pooling_runes", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "talent.breath_of_sindragosa.enabled & cooldown.breath_of_sindragosa.remains < variable.breath_pooling_time || talent.obliteration.enabled & runic_power < 35 & cooldown.pillar_of_frost.remains_expected < variable.oblit_pooling_time", ["var_name"] = "pooling_runic_power", }, { ["enabled"] = true, ["description"] = "Maintain Frost Fever, Icy Talons and Unleashed Frenzy", ["criteria"] = "! dot.frost_fever.ticking & active_enemies >= 2 & ( ! talent.obliteration.enabled || talent.obliteration.enabled & ( ! cooldown.pillar_of_frost.ready || buff.pillar_of_frost.up & ! buff.killing_machine.up ) )", ["action"] = "howling_blast", }, { ["enabled"] = true, ["criteria"] = "active_enemies >= 2 & variable.rp_buffs & talent.obliteration.enabled & talent.breath_of_sindragosa.enabled & ! buff.pillar_of_frost.up & ! buff.breath_of_sindragosa.up & cooldown.breath_of_sindragosa.remains > variable.breath_pooling_time", ["action"] = "glacial_advance", }, { ["enabled"] = true, ["criteria"] = "active_enemies >= 2 & variable.rp_buffs & talent.breath_of_sindragosa.enabled & ! buff.breath_of_sindragosa.up & cooldown.breath_of_sindragosa.remains > variable.breath_pooling_time", ["action"] = "glacial_advance", }, { ["enabled"] = true, ["criteria"] = "active_enemies >= 2 & variable.rp_buffs & ! talent.breath_of_sindragosa.enabled & talent.obliteration.enabled & ! buff.pillar_of_frost.up", ["action"] = "glacial_advance", }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1 & variable.rp_buffs & talent.obliteration.enabled & talent.breath_of_sindragosa.enabled & ! buff.pillar_of_frost.up & ! buff.breath_of_sindragosa.up & cooldown.breath_of_sindragosa.remains > variable.breath_pooling_time", ["action"] = "frost_strike", }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1 & variable.rp_buffs & talent.breath_of_sindragosa.enabled & ! buff.breath_of_sindragosa.up & cooldown.breath_of_sindragosa.remains > variable.breath_pooling_time", ["action"] = "frost_strike", }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1 & variable.rp_buffs & ! talent.breath_of_sindragosa.enabled & talent.obliteration.enabled & ! buff.pillar_of_frost.up", ["action"] = "frost_strike", }, { ["enabled"] = true, ["criteria"] = "! talent.breath_of_sindragosa.enabled & ! talent.obliteration.enabled & variable.rw_buffs", ["action"] = "remorseless_winter", }, { ["enabled"] = true, ["criteria"] = "talent.obliteration.enabled & active_enemies >= 3 & variable.adds_remain", ["action"] = "remorseless_winter", }, { ["enabled"] = true, ["action"] = "call_action_list", ["description"] = "Choose Action list to run", ["list_name"] = "trinkets", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cooldowns", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "racials", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "talent.cold_heart.enabled & ( ! buff.killing_machine.up || talent.breath_of_sindragosa.enabled ) & ( ( debuff.razorice.stack = 5 || ! death_knight.runeforge.razorice & ! talent.glacial_advance.enabled & ! talent.avalanche.enabled ) || boss & fight_remains <= gcd.max )", ["list_name"] = "cold_heart", }, { ["enabled"] = true, ["action"] = "run_action_list", ["criteria"] = "buff.breath_of_sindragosa.up & talent.obliteration.enabled & buff.pillar_of_frost.up", ["list_name"] = "breath_oblit", }, { ["enabled"] = true, ["action"] = "run_action_list", ["criteria"] = "buff.breath_of_sindragosa.up & ( ! talent.obliteration.enabled || talent.obliteration.enabled & ! buff.pillar_of_frost.up )", ["list_name"] = "breath", }, { ["enabled"] = true, ["action"] = "run_action_list", ["criteria"] = "talent.obliteration.enabled & buff.pillar_of_frost.up & ! buff.breath_of_sindragosa.up", ["list_name"] = "obliteration", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "active_enemies >= 2", ["list_name"] = "aoe", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "active_enemies = 1", ["list_name"] = "single_target", }, }, ["precombat"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.ruby_whelp_shell || trinket.t1.is.whispering_incarnate_icon", ["var_name"] = "trinket_1_exclude", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.ruby_whelp_shell || trinket.t2.is.whispering_incarnate_icon", ["var_name"] = "trinket_2_exclude", }, { ["enabled"] = true, ["op"] = "setif", ["description"] = "Evaluates a trinkets cooldown, divided by pillar of frost, empower rune weapon, or breath of sindragosa's cooldown. If it's value has no remainder return 1, else return 0.5.", ["value"] = "1", ["var_name"] = "trinket_1_sync", ["action"] = "variable", ["value_else"] = "0.5", ["criteria"] = "trinket.t1.has_use_buff & ( talent.pillar_of_frost.enabled & ! talent.breath_of_sindragosa.enabled & ( trinket.t1.cooldown.duration % cooldown.pillar_of_frost.duration = 0 ) || talent.breath_of_sindragosa.enabled & ( cooldown.breath_of_sindragosa.duration % trinket.t1.cooldown.duration = 0 ) )", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "trinket_2_sync", ["value"] = "1", ["value_else"] = "0.5", ["criteria"] = "trinket.t2.has_use_buff & ( talent.pillar_of_frost.enabled & ! talent.breath_of_sindragosa.enabled & ( trinket.t2.cooldown.duration % cooldown.pillar_of_frost.duration = 0 ) || talent.breath_of_sindragosa.enabled & ( cooldown.breath_of_sindragosa.duration % trinket.t2.cooldown.duration = 0 ) )", }, { ["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 & ! variable.trinket_1_exclude )", ["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 & ! variable.trinket_2_exclude )", ["var_name"] = "trinket_2_buffs", }, { ["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 ) )", }, { ["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.gathering_storm.enabled || talent.everfrost.enabled", ["var_name"] = "rw_buffs", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "main_hand.2h", ["var_name"] = "two_hand_check", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "erw_pooling_time", ["value"] = "25", ["value_else"] = "45", ["criteria"] = "death_knight.ams_absorb_percent > 0.59", }, }, ["racials"] = { { ["enabled"] = true, ["description"] = "Racial Abilities", ["criteria"] = "variable.cooldown_check", ["action"] = "blood_fury", }, { ["enabled"] = true, ["criteria"] = "variable.cooldown_check", ["action"] = "berserking", }, { ["enabled"] = true, ["criteria"] = "variable.cooldown_check", ["action"] = "arcane_pulse", }, { ["enabled"] = true, ["criteria"] = "variable.cooldown_check", ["action"] = "lights_judgment", }, { ["enabled"] = true, ["criteria"] = "variable.cooldown_check", ["action"] = "ancestral_call", }, { ["enabled"] = true, ["criteria"] = "variable.cooldown_check", ["action"] = "fireblood", }, { ["enabled"] = true, ["criteria"] = "talent.obliteration.enabled & ! buff.pillar_of_frost.up & buff.unholy_strength.up", ["action"] = "bag_of_tricks", }, { ["enabled"] = true, ["criteria"] = "! talent.obliteration.enabled & buff.pillar_of_frost.up & ( buff.unholy_strength.up & buff.unholy_strength.remains < gcd.max * 3 || buff.pillar_of_frost.remains < gcd.max * 3 )", ["action"] = "bag_of_tricks", }, }, ["trinkets"] = { { ["enabled"] = true, ["name"] = "algethar_puzzle_box", ["use_off_gcd"] = 1, ["criteria"] = "! buff.pillar_of_frost.up & cooldown.pillar_of_frost.remains < 2 & ( ! talent.breath_of_sindragosa.enabled || runic_power > 60 & ( buff.breath_of_sindragosa.up || cooldown.breath_of_sindragosa.remains < 2 ) )", ["action"] = "algethar_puzzle_box", }, { ["enabled"] = true, ["action"] = "trinket1", ["slot"] = "trinket1", ["use_off_gcd"] = 1, ["description"] = "The trinket with the highest estimated value, will be used first and paired with Pillar of Frost.", ["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ( talent.obliteration.enabled & cooldown.empower_rune_weapon.charges < 1 || ! talent.obliteration.enabled ) & ( ! buff.pillar_of_frost.up & trinket.t1.cast_time > 0 || ! trinket.t1.cast_time > 0 ) & ( buff.breath_of_sindragosa.up || buff.pillar_of_frost.up ) & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || boss & trinket.t1.buff_duration >= fight_remains", }, { ["enabled"] = true, ["action"] = "trinket2", ["slot"] = "trinket2", ["use_off_gcd"] = 1, ["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( talent.obliteration.enabled & cooldown.empower_rune_weapon.charges < 1 || ! talent.obliteration.enabled ) & ( ! buff.pillar_of_frost.up & trinket.t2.cast_time > 0 || ! trinket.t2.cast_time > 0 ) & ( buff.breath_of_sindragosa.up || buff.pillar_of_frost.up ) & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || boss & trinket.t2.buff_duration >= fight_remains", }, { ["enabled"] = true, ["action"] = "trinket1", ["slot"] = "trinket1", ["use_off_gcd"] = 1, ["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.", ["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || ( trinket.t1.cast_time > 0 & ! buff.pillar_of_frost.up || ! trinket.t1.cast_time > 0 ) || talent.pillar_of_frost.enabled & cooldown.pillar_of_frost.remains_expected > 20 || ! talent.pillar_of_frost.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 ) || ( trinket.t2.cast_time > 0 & ! buff.pillar_of_frost.up || ! trinket.t2.cast_time > 0 ) || talent.pillar_of_frost.enabled & cooldown.pillar_of_frost.remains_expected > 20 || ! talent.pillar_of_frost.enabled )", }, { ["enabled"] = true, ["use_off_gcd"] = 1, ["criteria"] = "( ! variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( ! variable.trinket_2_buffs || trinket.t2.cooldown.remains )", ["action"] = "use_items", }, }, ["cooldowns"] = { { ["enabled"] = true, ["description"] = "Cooldowns", ["criteria"] = "variable.cooldown_check || boss & fight_remains < 25", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "talent.obliteration.enabled & ! buff.empower_rune_weapon.up & rune < 6 & ( cooldown.pillar_of_frost.remains_expected < 7 & ( variable.adds_remain || variable.st_planning ) || buff.pillar_of_frost.up ) || boss & fight_remains < 20", ["action"] = "empower_rune_weapon", }, { ["enabled"] = true, ["use_off_gcd"] = 1, ["criteria"] = "buff.breath_of_sindragosa.up & ! buff.empower_rune_weapon.up & ( time < 10 & buff.bloodlust.up ) || ( runic_power < 70 & rune < 3 & ( cooldown.breath_of_sindragosa.remains > variable.erw_pooling_time || full_recharge_time < 10 ) )", ["action"] = "empower_rune_weapon", }, { ["enabled"] = true, ["use_off_gcd"] = 1, ["criteria"] = "! talent.breath_of_sindragosa.enabled & ! talent.obliteration.enabled & ! buff.empower_rune_weapon.up & rune < 5 & ( cooldown.pillar_of_frost.remains_expected < 7 || buff.pillar_of_frost.up || ! talent.pillar_of_frost.enabled )", ["action"] = "empower_rune_weapon", }, { ["enabled"] = true, ["criteria"] = "talent.obliteration.enabled & ! buff.pillar_of_frost.up & cooldown.pillar_of_frost.remains < 3 & ( variable.adds_remain || variable.st_planning ) || boss & fight_remains < 12", ["action"] = "abomination_limb", }, { ["enabled"] = true, ["criteria"] = "talent.breath_of_sindragosa.enabled & ( variable.adds_remain || variable.st_planning )", ["action"] = "abomination_limb", }, { ["enabled"] = true, ["criteria"] = "! talent.breath_of_sindragosa.enabled & ! talent.obliteration.enabled & ( variable.adds_remain || variable.st_planning )", ["action"] = "abomination_limb", }, { ["enabled"] = true, ["criteria"] = "set_bonus.tier31_2pc", ["action"] = "chill_streak", }, { ["enabled"] = true, ["criteria"] = "! set_bonus.tier31_2pc & active_enemies >= 2 & ( ! death_and_decay.ticking & talent.cleaving_strikes.enabled || ! talent.cleaving_strikes.enabled || active_enemies <= 5 )", ["action"] = "chill_streak", }, { ["enabled"] = true, ["criteria"] = "talent.obliteration.enabled & ( variable.adds_remain || variable.st_planning ) & ( ! talent.empower_rune_weapon.enabled || buff.empower_rune_weapon.up || cooldown.empower_rune_weapon.remains ) || boss & fight_remains < 12", ["action"] = "pillar_of_frost", }, { ["enabled"] = true, ["criteria"] = "talent.breath_of_sindragosa.enabled & ( variable.adds_remain || variable.st_planning ) & ( ! talent.icecap.enabled & ( runic_power > 70 || cooldown.breath_of_sindragosa.remains > 40 ) || talent.icecap.enabled & ( cooldown.breath_of_sindragosa.remains > 10 || buff.breath_of_sindragosa.up ) )", ["action"] = "pillar_of_frost", }, { ["enabled"] = true, ["criteria"] = "talent.icecap.enabled & ! talent.obliteration.enabled & ! talent.breath_of_sindragosa.enabled & ( variable.adds_remain || variable.st_planning )", ["action"] = "pillar_of_frost", }, { ["enabled"] = true, ["criteria"] = "! buff.breath_of_sindragosa.up & runic_power > 60 & ( variable.adds_remain || variable.st_planning ) || boss & fight_remains < 30", ["action"] = "breath_of_sindragosa", }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1 & ( talent.pillar_of_frost.enabled & buff.pillar_of_frost.remains < gcd.max * 2 & buff.pillar_of_frost.up & ! talent.obliteration.enabled || ! talent.pillar_of_frost.enabled ) & ( ! raid_event.adds.exists || ( raid_event.adds.in > 15 + raid_event.adds.duration || talent.absolute_zero.enabled & raid_event.adds.in > 15 + raid_event.adds.duration ) ) || boss & fight_remains < 3", ["action"] = "frostwyrms_fury", }, { ["enabled"] = true, ["criteria"] = "active_enemies >= 2 & ( talent.pillar_of_frost.enabled & buff.pillar_of_frost.up || raid_event.adds.exists & raid_event.adds.up & raid_event.adds.in > cooldown.pillar_of_frost.remains_expected - raid_event.adds.in - raid_event.adds.duration ) & ( buff.pillar_of_frost.remains < gcd.max * 2 || raid_event.adds.exists & raid_event.adds.remains < gcd.max * 2 )", ["action"] = "frostwyrms_fury", }, { ["enabled"] = true, ["criteria"] = "talent.obliteration.enabled & cooldown.empower_rune_weapon.charges < 1 & ( talent.pillar_of_frost.enabled & buff.pillar_of_frost.up & ! variable.two_hand_check || ! buff.pillar_of_frost.up & variable.two_hand_check & cooldown.pillar_of_frost.remains > 10 || ! talent.pillar_of_frost.enabled ) & ( ( buff.pillar_of_frost.remains < gcd.max || buff.unholy_strength.up & buff.unholy_strength.remains < gcd.max ) & ( debuff.razorice.stack = 5 || ! death_knight.runeforge.razorice & ! talent.glacial_advance.enabled ) )", ["action"] = "frostwyrms_fury", }, { ["enabled"] = true, ["criteria"] = "talent.obliteration.enabled & ( talent.pillar_of_frost.enabled & buff.pillar_of_frost.up & ! variable.two_hand_check || ! buff.pillar_of_frost.up & variable.two_hand_check & cooldown.pillar_of_frost.remains || ! talent.pillar_of_frost.enabled ) & ( ( buff.pillar_of_frost.remains < gcd.max || buff.unholy_strength.up & buff.unholy_strength.remains < gcd.max ) & ( debuff.razorice.stack = 5 || ! death_knight.runeforge.razorice & ! talent.glacial_advance.enabled ) )", ["action"] = "frostwyrms_fury", }, { ["action"] = "raise_dead", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "fight_remains > 5 & target.time_to_pct_35 < 5 & active_enemies <= 2 & ( talent.obliteration.enabled & ( buff.pillar_of_frost.up & ! buff.killing_machine.up || ! buff.pillar_of_frost.up ) || talent.breath_of_sindragosa.enabled & ( buff.breath_of_sindragosa.up & runic_power > 40 || ! buff.breath_of_sindragosa.up ) || ! talent.breath_of_sindragosa.enabled & ! talent.obliteration.enabled )", ["action"] = "soul_reaper", }, { ["enabled"] = true, ["criteria"] = "! talent.glacial_advance.enabled & ! buff.breath_of_sindragosa.up & pet.ghoul.remains < gcd.max * 2 & active_enemies > 3", ["action"] = "sacrificial_pact", }, { ["enabled"] = true, ["criteria"] = "! death_and_decay.ticking & variable.adds_remain & ( buff.pillar_of_frost.up & buff.pillar_of_frost.remains > 5 & buff.pillar_of_frost.remains < 11 || ! buff.pillar_of_frost.up & cooldown.pillar_of_frost.remains > 10 || boss & fight_remains < 11 ) & ( active_enemies > 5 || talent.cleaving_strikes.enabled & active_enemies >= 2 )", ["action"] = "any_dnd", }, }, ["breath_oblit"] = { { ["enabled"] = true, ["description"] = "Breath & Obliteration Active Rotation", ["criteria"] = "buff.killing_machine.up & variable.frostscythe_priority", ["action"] = "frostscythe", }, { ["enabled"] = true, ["criteria"] = "buff.killing_machine.up", ["action"] = "obliterate", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.rime.up", ["action"] = "howling_blast", }, { ["enabled"] = true, ["criteria"] = "! buff.killing_machine.up", ["action"] = "howling_blast", }, { ["enabled"] = true, ["criteria"] = "runic_power.deficit > 25", ["action"] = "horn_of_winter", }, { ["enabled"] = true, ["criteria"] = "runic_power.deficit > 20", ["action"] = "arcane_torrent", }, }, }, ["version"] = 20230921, ["warnings"] = "The import for 'single_target' required some automated changes.\nLine 7: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 7: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 8: Converted 'talent.shattering_blade' to 'talent.shattering_blade.enabled' (1x).\nLine 12: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\n\nThe import for 'cold_heart' required some automated changes.\nLine 2: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 2: Converted 'talent.frostwyrms_fury' to 'talent.frostwyrms_fury.enabled' (1x).\nLine 3: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 4: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 5: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\n\nThe import for 'breath' required some automated changes.\nLine 2: Converted 'talent.rage_of_the_frozen_champion' to 'talent.rage_of_the_frozen_champion.enabled' (1x).\nLine 8: Converted operations in 'runic_power<36&rune.time_to_2>runic_power%18' to 'runic_power<36&rune.time_to_2>runic_power/18'.\nLine 9: Converted operations in 'runic_power<36&rune.time_to_2>runic_power%18' to 'runic_power<36&rune.time_to_2>runic_power/18'.\nLine 10: Converted operations in 'runic_power<36&rune.time_to_2>runic_power%18' to 'runic_power<36&rune.time_to_2>runic_power/18'.\n\nThe import for 'racials' required some automated changes.\nLine 7: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 8: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 4: Converted 'talent.assimilation' to 'talent.assimilation.enabled' (1x).\nLine 4: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 7: Converted 'talent.rage_of_the_frozen_champion' to 'talent.rage_of_the_frozen_champion.enabled' (1x).\nLine 7: Converted 'talent.avalanche' to 'talent.avalanche.enabled' (1x).\nLine 7: Converted 'talent.icebreaker' to 'talent.icebreaker.enabled' (1x).\nLine 8: Converted 'talent.unleashed_frenzy' to 'talent.unleashed_frenzy.enabled' (1x).\nLine 8: Converted 'talent.icy_talons' to 'talent.icy_talons.enabled' (1x).\nLine 9: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 9: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 9: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 9: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 9: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 9: Converted 'talent.empower_rune_weapon' to 'talent.empower_rune_weapon.enabled' (1x).\nLine 10: Converted 'talent.frostscythe' to 'talent.frostscythe.enabled' (1x).\nLine 10: Converted 'talent.improved_obliterate' to 'talent.improved_obliterate.enabled' (1x).\nLine 10: Converted 'talent.frigid_executioner' to 'talent.frigid_executioner.enabled' (1x).\nLine 10: Converted 'talent.frostreaper' to 'talent.frostreaper.enabled' (1x).\nLine 10: Converted 'talent.might_of_the_frozen_wastes' to 'talent.might_of_the_frozen_wastes.enabled' (1x).\nLine 10: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\nLine 10: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\nLine 11: Converted operations in '((cooldown.pillar_of_frost.remains_expected+1)%gcd.max)%((rune+3)*(runic_power+5))*100' to '((cooldown.pillar_of_frost.remains_expected+1)/gcd.max)/((rune+3)*(runic_power+5))*100'.\nLine 12: Converted operations in '((cooldown.breath_of_sindragosa.remains+1)%gcd.max)%((rune+1)*(runic_power+20))*100' to '((cooldown.breath_of_sindragosa.remains+1)/gcd.max)/((rune+1)*(runic_power+20))*100'.\nLine 13: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 14: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 14: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 15: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 15: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 16: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 16: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 17: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 18: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 18: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 19: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 19: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 20: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 21: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 21: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 22: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 22: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 23: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 27: Converted 'talent.cold_heart' to 'talent.cold_heart.enabled' (1x).\nLine 27: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 27: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 27: Converted 'talent.avalanche' to 'talent.avalanche.enabled' (1x).\nLine 28: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 29: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 29: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 30: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 1: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 1: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 2: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 2: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (1x).\nLine 3: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 3: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 3: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 3: Converted operations in 'trinket.t1.has_use_buff&(talent.pillar_of_frost.enabled&!talent.breath_of_sindragosa.enabled&(trinket.t1.cooldown.duration%%cooldown.pillar_of_frost.duration=0)||talent.breath_of_sindragosa.enabled&(cooldown.breath_of_sindragosa.duration%%trinket.t1.cooldown.duration=0))' to 'trinket.t1.has_use_buff&(talent.pillar_of_frost.enabled&!talent.breath_of_sindragosa.enabled&(trinket.t1.cooldown.duration%cooldown.pillar_of_frost.duration=0)||talent.breath_of_sindragosa.enabled&(cooldown.breath_of_sindragosa.duration%trinket.t1.cooldown.duration=0))'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 4: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\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 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\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 operations in 'trinket.t2.has_use_buff&(talent.pillar_of_frost.enabled&!talent.breath_of_sindragosa.enabled&(trinket.t2.cooldown.duration%%cooldown.pillar_of_frost.duration=0)||talent.breath_of_sindragosa.enabled&(cooldown.breath_of_sindragosa.duration%%trinket.t2.cooldown.duration=0))' to 'trinket.t2.has_use_buff&(talent.pillar_of_frost.enabled&!talent.breath_of_sindragosa.enabled&(trinket.t2.cooldown.duration%cooldown.pillar_of_frost.duration=0)||talent.breath_of_sindragosa.enabled&(cooldown.breath_of_sindragosa.duration%trinket.t2.cooldown.duration=0))'.\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 5: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 5: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 5: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 5: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 5: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (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.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 6: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 6: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 6: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 6: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\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.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 7: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 7: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\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.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 7: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 7: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 7: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 7: 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 8: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 9: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\nLine 10: Converted 'talent.gathering_storm' to 'talent.gathering_storm.enabled' (1x).\nLine 10: Converted 'talent.everfrost' to 'talent.everfrost.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 'cooldowns' required some automated changes.\nLine 2: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 4: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 4: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 4: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 5: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 6: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 7: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 7: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 9: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\nLine 9: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\nLine 10: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 10: Converted 'talent.empower_rune_weapon' to 'talent.empower_rune_weapon.enabled' (1x).\nLine 11: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 11: Converted 'talent.icecap' to 'talent.icecap.enabled' (1x).\nLine 11: Converted 'talent.icecap' to 'talent.icecap.enabled' (1x).\nLine 12: Converted 'talent.icecap' to 'talent.icecap.enabled' (1x).\nLine 12: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 12: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 14: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 14: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 14: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 14: Converted 'talent.absolute_zero' to 'talent.absolute_zero.enabled' (1x).\nLine 15: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 16: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 16: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 16: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 16: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 17: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 17: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 17: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 17: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 19: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 19: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 19: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 19: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 20: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 21: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 1: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 2: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 2: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\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 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 3: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (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.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 4: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 4: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.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 '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 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 5: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (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'.\n\nThe import for 'obliteration' required some automated changes.\nLine 1: Converted 'talent.gathering_storm' to 'talent.gathering_storm.enabled' (1x).\nLine 8: Converted 'talent.avalanche' to 'talent.avalanche.enabled' (1x).\nLine 9: Converted 'talent.shattering_blade' to 'talent.shattering_blade.enabled' (1x).\nLine 9: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 12: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 16: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 4: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\nLine 8: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\n\nImported 11 action lists.\n", ["spec"] = 251, ["profile"] = "actions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell||trinket.1.is.whispering_incarnate_icon\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell||trinket.2.is.whispering_incarnate_icon\n# Evaluates a trinkets cooldown, divided by pillar of frost, empower rune weapon, or breath of sindragosa's cooldown. 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&(talent.pillar_of_frost&!talent.breath_of_sindragosa&(trinket.1.cooldown.duration%%cooldown.pillar_of_frost.duration=0)||talent.breath_of_sindragosa&(cooldown.breath_of_sindragosa.duration%%trinket.1.cooldown.duration=0))\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=trinket.2.has_use_buff&(talent.pillar_of_frost&!talent.breath_of_sindragosa&(trinket.2.cooldown.duration%%cooldown.pillar_of_frost.duration=0)||talent.breath_of_sindragosa&(cooldown.breath_of_sindragosa.duration%%trinket.2.cooldown.duration=0))\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_buff.strength||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit&!variable.trinket_1_exclude)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_buff.strength||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit&!variable.trinket_2_exclude)\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=rw_buffs,value=talent.gathering_storm||talent.everfrost\nactions.precombat+=/variable,name=two_hand_check,value=main_hand.2h\nactions.precombat+=/variable,name=erw_pooling_time,op=setif,value=25,value_else=45,condition=death_knight.ams_absorb_percent>0.59\n\nactions+=/mind_freeze\nactions+=/strangulate\nactions+=/antimagic_shell,if=runic_power.deficit>40\nactions+=/antimagic_zone,if=death_knight.amz_absorb_percent>0&runic_power.deficit>70&talent.assimilation&(buff.breath_of_sindragosa.up&cooldown.empower_rune_weapon.charges<2||!talent.breath_of_sindragosa&!buff.pillar_of_frost.up)\nactions+=/variable,name=st_planning,value=active_enemies=1&(raid_event.adds.in>15||!raid_event.adds.exists)\nactions+=/variable,name=adds_remain,value=active_enemies>=2&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.remains>5)\nactions+=/variable,name=rime_buffs,value=buff.rime.up&(talent.rage_of_the_frozen_champion||talent.avalanche||talent.icebreaker)\nactions+=/variable,name=rp_buffs,value=talent.unleashed_frenzy&(buff.unleashed_frenzy.remains=2&buff.pillar_of_frost.up\nactions+=/variable,name=frostscythe_priority,value=talent.frostscythe&(buff.killing_machine.up||active_enemies>=3)&(!talent.improved_obliterate&!talent.frigid_executioner&!talent.frostreaper&!talent.might_of_the_frozen_wastes||!talent.cleaving_strikes||talent.cleaving_strikes&(active_enemies>6||!death_and_decay.ticking&active_enemies>3))\n# Formulaic approach to determine the time before these abilities come off cooldown that the simulation should star to pool resources. Capped at 15s in the run_action_list call.\nactions+=/variable,name=oblit_pooling_time,op=setif,value=((cooldown.pillar_of_frost.remains_expected+1)%gcd.max)%((rune+3)*(runic_power+5))*100,value_else=3,condition=runic_power<35&rune<2&cooldown.pillar_of_frost.remains_expected<10\nactions+=/variable,name=breath_pooling_time,op=setif,value=((cooldown.breath_of_sindragosa.remains+1)%gcd.max)%((rune+1)*(runic_power+20))*100,value_else=3,condition=runic_power.deficit>10&cooldown.breath_of_sindragosa.remains<10\nactions+=/variable,name=pooling_runes,value=rune<4&talent.obliteration&cooldown.pillar_of_frost.remains_expectedPower Infusion while Pillar of Frost is up, as well as Breath of Sindragosa or on cooldown if Pillar of Frost and Breath of Sindragosa are not talented\n## actions+=/invoke_external_buff,name=power_infusion,if=(buff.pillar_of_frost.up||!talent.pillar_of_frost)&(talent.obliteration||talent.breath_of_sindragosa&buff.breath_of_sindragosa.up||!talent.breath_of_sindragosa&!talent.obliteration)\n# Maintain Frost Fever, Icy Talons and Unleashed Frenzy\nactions+=/howling_blast,if=!dot.frost_fever.ticking&active_enemies>=2&(!talent.obliteration||talent.obliteration&(!cooldown.pillar_of_frost.ready||buff.pillar_of_frost.up&!buff.killing_machine.up))\nactions+=/glacial_advance,if=active_enemies>=2&variable.rp_buffs&talent.obliteration&talent.breath_of_sindragosa&!buff.pillar_of_frost.up&!buff.breath_of_sindragosa.up&cooldown.breath_of_sindragosa.remains>variable.breath_pooling_time\nactions+=/glacial_advance,if=active_enemies>=2&variable.rp_buffs&talent.breath_of_sindragosa&!buff.breath_of_sindragosa.up&cooldown.breath_of_sindragosa.remains>variable.breath_pooling_time\nactions+=/glacial_advance,if=active_enemies>=2&variable.rp_buffs&!talent.breath_of_sindragosa&talent.obliteration&!buff.pillar_of_frost.up\nactions+=/frost_strike,if=active_enemies=1&variable.rp_buffs&talent.obliteration&talent.breath_of_sindragosa&!buff.pillar_of_frost.up&!buff.breath_of_sindragosa.up&cooldown.breath_of_sindragosa.remains>variable.breath_pooling_time\nactions+=/frost_strike,if=active_enemies=1&variable.rp_buffs&talent.breath_of_sindragosa&!buff.breath_of_sindragosa.up&cooldown.breath_of_sindragosa.remains>variable.breath_pooling_time\nactions+=/frost_strike,if=active_enemies=1&variable.rp_buffs&!talent.breath_of_sindragosa&talent.obliteration&!buff.pillar_of_frost.up\nactions+=/remorseless_winter,if=!talent.breath_of_sindragosa&!talent.obliteration&variable.rw_buffs\nactions+=/remorseless_winter,if=talent.obliteration&active_enemies>=3&variable.adds_remain\n# Choose Action list to run\nactions+=/call_action_list,name=trinkets\nactions+=/call_action_list,name=cooldowns\nactions+=/call_action_list,name=racials\nactions+=/call_action_list,name=cold_heart,if=talent.cold_heart&(!buff.killing_machine.up||talent.breath_of_sindragosa)&((debuff.razorice.stack=5||!death_knight.runeforge.razorice&!talent.glacial_advance&!talent.avalanche)||boss&fight_remains<=gcd.max)\nactions+=/run_action_list,name=breath_oblit,if=buff.breath_of_sindragosa.up&talent.obliteration&buff.pillar_of_frost.up\nactions+=/run_action_list,name=breath,if=buff.breath_of_sindragosa.up&(!talent.obliteration||talent.obliteration&!buff.pillar_of_frost.up)\nactions+=/run_action_list,name=obliteration,if=talent.obliteration&buff.pillar_of_frost.up&!buff.breath_of_sindragosa.up\nactions+=/call_action_list,name=aoe,if=active_enemies>=2\nactions+=/call_action_list,name=single_target,if=active_enemies=1\n\n# AoE Action List\nactions.aoe+=/remorseless_winter\nactions.aoe+=/howling_blast,if=buff.rime.up||!dot.frost_fever.ticking\nactions.aoe+=/glacial_advance,if=!variable.pooling_runic_power&variable.rp_buffs\nactions.aoe+=/obliterate,if=buff.killing_machine.up&talent.cleaving_strikes&death_and_decay.ticking&!variable.frostscythe_priority\nactions.aoe+=/glacial_advance,if=!variable.pooling_runic_power\nactions.aoe+=/frostscythe,if=variable.frostscythe_priority\nactions.aoe+=/obliterate,if=!variable.frostscythe_priority\nactions.aoe+=/frost_strike,if=!variable.pooling_runic_power&!talent.glacial_advance\nactions.aoe+=/horn_of_winter,if=rune<2&runic_power.deficit>25\nactions.aoe+=/arcane_torrent,if=runic_power.deficit>25\n\n# Breath Active Rotation\nactions.breath+=/remorseless_winter,if=variable.rw_buffs||variable.adds_remain\nactions.breath+=/howling_blast,if=variable.rime_buffs&runic_power>(45-talent.rage_of_the_frozen_champion*8)\nactions.breath+=/horn_of_winter,if=rune<2&runic_power.deficit>25\nactions.breath+=/obliterate,cycle_targets=1,if=buff.killing_machine.up&!variable.frostscythe_priority\nactions.breath+=/frostscythe,if=buff.killing_machine.up&variable.frostscythe_priority\nactions.breath+=/frostscythe,if=variable.frostscythe_priority&runic_power>45\nactions.breath+=/obliterate,cycle_targets=1,if=runic_power.deficit>40||buff.pillar_of_frost.up&runic_power.deficit>17\nactions.breath+=/death_and_decay,if=runic_power<36&rune.time_to_2>runic_power%18\nactions.breath+=/remorseless_winter,if=runic_power<36&rune.time_to_2>runic_power%18\nactions.breath+=/howling_blast,if=runic_power<36&rune.time_to_2>runic_power%18\nactions.breath+=/obliterate,cycle_targets=1,if=runic_power.deficit>25\nactions.breath+=/howling_blast,if=buff.rime.up\nactions.breath+=/arcane_torrent,if=runic_power<60\n\n# Breath & Obliteration Active Rotation\nactions.breath_oblit+=/frostscythe,if=buff.killing_machine.up&variable.frostscythe_priority\nactions.breath_oblit+=/obliterate,cycle_targets=1,if=buff.killing_machine.up\nactions.breath_oblit+=/howling_blast,if=buff.rime.up\nactions.breath_oblit+=/howling_blast,if=!buff.killing_machine.up\nactions.breath_oblit+=/horn_of_winter,if=runic_power.deficit>25\nactions.breath_oblit+=/arcane_torrent,if=runic_power.deficit>20\n\n# Cold Heart\nactions.cold_heart+=/chains_of_ice,if=boss&fight_remains=4||variable.two_hand_check&buff.cold_heart.stack>8)||buff.killing_machine.up&(!variable.two_hand_check&buff.cold_heart.stack>8||variable.two_hand_check&buff.cold_heart.stack>10))\nactions.cold_heart+=/chains_of_ice,if=!talent.obliteration&buff.pillar_of_frost.up&buff.cold_heart.stack>=10&(buff.pillar_of_frost.remains15&(buff.cold_heart.stack>=10&buff.unholy_strength.up||buff.cold_heart.stack>=13)\nactions.cold_heart+=/chains_of_ice,if=!talent.obliteration&!death_knight.runeforge.fallen_crusader&buff.cold_heart.stack>=10&!buff.pillar_of_frost.up&cooldown.pillar_of_frost.remains_expected>20\nactions.cold_heart+=/chains_of_ice,if=talent.obliteration&!buff.pillar_of_frost.up&(buff.cold_heart.stack>=14&(buff.unholy_strength.up||buff.chaos_bane.up)||buff.cold_heart.stack>=19||cooldown.pillar_of_frost.remains_expected<3&buff.cold_heart.stack>=14)\n\n# Cooldowns\nactions.cooldowns+=/potion,if=variable.cooldown_check||boss&fight_remains<25\nactions.cooldowns+=/empower_rune_weapon,if=talent.obliteration&!buff.empower_rune_weapon.up&rune<6&(cooldown.pillar_of_frost.remains_expected<7&(variable.adds_remain||variable.st_planning)||buff.pillar_of_frost.up)||boss&fight_remains<20\nactions.cooldowns+=/empower_rune_weapon,use_off_gcd=1,if=buff.breath_of_sindragosa.up&!buff.empower_rune_weapon.up&(time<10&buff.bloodlust.up)||(runic_power<70&rune<3&(cooldown.breath_of_sindragosa.remains>variable.erw_pooling_time||full_recharge_time<10))\nactions.cooldowns+=/empower_rune_weapon,use_off_gcd=1,if=!talent.breath_of_sindragosa&!talent.obliteration&!buff.empower_rune_weapon.up&rune<5&(cooldown.pillar_of_frost.remains_expected<7||buff.pillar_of_frost.up||!talent.pillar_of_frost)\nactions.cooldowns+=/abomination_limb,if=talent.obliteration&!buff.pillar_of_frost.up&cooldown.pillar_of_frost.remains<3&(variable.adds_remain||variable.st_planning)||boss&fight_remains<12\nactions.cooldowns+=/abomination_limb,if=talent.breath_of_sindragosa&(variable.adds_remain||variable.st_planning)\nactions.cooldowns+=/abomination_limb,if=!talent.breath_of_sindragosa&!talent.obliteration&(variable.adds_remain||variable.st_planning)\nactions.cooldowns+=/chill_streak,if=set_bonus.tier31_2pc\nactions.cooldowns+=/chill_streak,if=!set_bonus.tier31_2pc&active_enemies>=2&(!death_and_decay.ticking&talent.cleaving_strikes||!talent.cleaving_strikes||active_enemies<=5)\nactions.cooldowns+=/pillar_of_frost,if=talent.obliteration&(variable.adds_remain||variable.st_planning)&(!talent.empower_rune_weapon||buff.empower_rune_weapon.up||cooldown.empower_rune_weapon.remains)||boss&fight_remains<12\nactions.cooldowns+=/pillar_of_frost,if=talent.breath_of_sindragosa&(variable.adds_remain||variable.st_planning)&(!talent.icecap&(runic_power>70||cooldown.breath_of_sindragosa.remains>40)||talent.icecap&(cooldown.breath_of_sindragosa.remains>10||buff.breath_of_sindragosa.up))\nactions.cooldowns+=/pillar_of_frost,if=talent.icecap&!talent.obliteration&!talent.breath_of_sindragosa&(variable.adds_remain||variable.st_planning)\nactions.cooldowns+=/breath_of_sindragosa,if=!buff.breath_of_sindragosa.up&runic_power>60&(variable.adds_remain||variable.st_planning)||boss&fight_remains<30\nactions.cooldowns+=/frostwyrms_fury,if=active_enemies=1&(talent.pillar_of_frost&buff.pillar_of_frost.remains15+raid_event.adds.duration||talent.absolute_zero&raid_event.adds.in>15+raid_event.adds.duration))||boss&fight_remains<3\nactions.cooldowns+=/frostwyrms_fury,if=active_enemies>=2&(talent.pillar_of_frost&buff.pillar_of_frost.up||raid_event.adds.exists&raid_event.adds.up&raid_event.adds.in>cooldown.pillar_of_frost.remains_expected-raid_event.adds.in-raid_event.adds.duration)&(buff.pillar_of_frost.remains10||!talent.pillar_of_frost)&((buff.pillar_of_frost.remains5&target.time_to_pct_35<5&active_enemies<=2&(talent.obliteration&(buff.pillar_of_frost.up&!buff.killing_machine.up||!buff.pillar_of_frost.up)||talent.breath_of_sindragosa&(buff.breath_of_sindragosa.up&runic_power>40||!buff.breath_of_sindragosa.up)||!talent.breath_of_sindragosa&!talent.obliteration)\nactions.cooldowns+=/sacrificial_pact,if=!talent.glacial_advance&!buff.breath_of_sindragosa.up&pet.ghoul.remains3\nactions.cooldowns+=/any_dnd,if=!death_and_decay.ticking&variable.adds_remain&(buff.pillar_of_frost.up&buff.pillar_of_frost.remains>5&buff.pillar_of_frost.remains<11||!buff.pillar_of_frost.up&cooldown.pillar_of_frost.remains>10||boss&fight_remains<11)&(active_enemies>5||talent.cleaving_strikes&active_enemies>=2)\n\n# Obliteration Active Rotation\nactions.obliteration+=/remorseless_winter,if=active_enemies>3||talent.gathering_storm\nactions.obliteration+=/howling_blast,if=buff.killing_machine.stack<2&buff.pillar_of_frost.remains1))\nactions.obliteration+=/frost_strike,cycle_targets=1,if=!buff.killing_machine.up&(rune<2||variable.rp_buffs||debuff.razorice.stack=5&talent.shattering_blade)&!variable.pooling_runic_power&(!talent.glacial_advance||active_enemies=1)\nactions.obliteration+=/howling_blast,if=buff.rime.up&!buff.killing_machine.up\nactions.obliteration+=/glacial_advance,if=!variable.pooling_runic_power&variable.rp_buffs&!buff.killing_machine.up&active_enemies>=2\nactions.obliteration+=/frost_strike,cycle_targets=1,if=!buff.killing_machine.up&!variable.pooling_runic_power&(!talent.glacial_advance||active_enemies=1)\nactions.obliteration+=/howling_blast,if=!buff.killing_machine.up&runic_power<25\nactions.obliteration+=/arcane_torrent,if=rune<1&runic_power<25\nactions.obliteration+=/glacial_advance,if=!variable.pooling_runic_power&active_enemies>=2\nactions.obliteration+=/frost_strike,cycle_targets=1,if=!variable.pooling_runic_power&(!talent.glacial_advance||active_enemies=1)\nactions.obliteration+=/howling_blast,if=buff.rime.up\nactions.obliteration+=/obliterate,cycle_targets=1\n\n# Racial Abilities\nactions.racials+=/blood_fury,if=variable.cooldown_check\nactions.racials+=/berserking,if=variable.cooldown_check\nactions.racials+=/arcane_pulse,if=variable.cooldown_check\nactions.racials+=/lights_judgment,if=variable.cooldown_check\nactions.racials+=/ancestral_call,if=variable.cooldown_check\nactions.racials+=/fireblood,if=variable.cooldown_check\nactions.racials+=/bag_of_tricks,if=talent.obliteration&!buff.pillar_of_frost.up&buff.unholy_strength.up\nactions.racials+=/bag_of_tricks,if=!talent.obliteration&buff.pillar_of_frost.up&(buff.unholy_strength.up&buff.unholy_strength.remains25&talent.obliteration&talent.breath_of_sindragosa\nactions.single_target+=/frost_strike,if=!variable.pooling_runic_power&(variable.rp_buffs||runic_power.deficit<25||debuff.razorice.stack=5&talent.shattering_blade)\nactions.single_target+=/howling_blast,if=variable.rime_buffs\nactions.single_target+=/glacial_advance,if=!variable.pooling_runic_power&!death_knight.runeforge.razorice&(debuff.razorice.stack<5||debuff.razorice.remains25&(!talent.breath_of_sindragosa||cooldown.breath_of_sindragosa.remains>cooldown.horn_of_winter.duration)\nactions.single_target+=/arcane_torrent,if=runic_power.deficit>20\nactions.single_target+=/frost_strike,if=!variable.pooling_runic_power\n\nactions.trinkets+=/use_item,use_off_gcd=1,name=algethar_puzzle_box,if=!buff.pillar_of_frost.up&cooldown.pillar_of_frost.remains<2&(!talent.breath_of_sindragosa||runic_power>60&(buff.breath_of_sindragosa.up||cooldown.breath_of_sindragosa.remains<2))\n# The trinket with the highest estimated value, will be used first and paired with Pillar of Frost.\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=variable.trinket_1_buffs&!variable.trinket_1_manual&(talent.obliteration&cooldown.empower_rune_weapon.charges<1||!talent.obliteration)&(!buff.pillar_of_frost.up&trinket.1.cast_time>0||!trinket.1.cast_time>0)&(buff.breath_of_sindragosa.up||buff.pillar_of_frost.up)&(variable.trinket_2_exclude||!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||boss&trinket.1.proc.any_dps.duration>=fight_remains\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&(talent.obliteration&cooldown.empower_rune_weapon.charges<1||!talent.obliteration)&(!buff.pillar_of_frost.up&trinket.2.cast_time>0||!trinket.2.cast_time>0)&(buff.breath_of_sindragosa.up||buff.pillar_of_frost.up)&(variable.trinket_1_exclude||!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||boss&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.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&(!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs)||(trinket.1.cast_time>0&!buff.pillar_of_frost.up||!trinket.1.cast_time>0)||talent.pillar_of_frost&cooldown.pillar_of_frost.remains_expected>20||!talent.pillar_of_frost)\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&(!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs)||(trinket.2.cast_time>0&!buff.pillar_of_frost.up||!trinket.2.cast_time>0)||talent.pillar_of_frost&cooldown.pillar_of_frost.remains_expected>20||!talent.pillar_of_frost)\nactions.trinkets+=/use_items,use_off_gcd=1,if=(!variable.trinket_1_buffs||trinket.1.cooldown.remains)&(!variable.trinket_2_buffs||trinket.2.cooldown.remains)", }, ["Blood"] = { ["source"] = "SimulationCraft", ["builtIn"] = true, ["date"] = 20230506, ["spec"] = 250, ["desc"] = "2023-05-06: Removed Death's Caress during DRW.\n\n2023-04-30: Updated for 10.1 from SimC.\n\n2023-04-04: Minor update from SimC (Vampiric Blood usage).\n\n2023-03-08: Adjust Tombstone logic for Shattering Bones / Death and Decay.", ["lists"] = { ["drw_up"] = { { ["enabled"] = true, ["criteria"] = "! dot.blood_plague.ticking", ["action"] = "blood_boil", ["description"] = "Use Blood Boil if Blood Plague is not active.", }, { ["enabled"] = true, ["criteria"] = "buff.bone_shield.stack > 5 & rune >= 2 & runic_power.deficit >= 30 & ! talent.shattering_bone.enabled || ( talent.shattering_bone.enabled & death_and_decay.ticking )", ["action"] = "tombstone", ["description"] = "Use Tombstone if you have 5+ Bone Shield stacks, 2+ runes, 30+ Runic Power, and Shattering Bones is not talented or Death and Decay is not ticking.", }, { ["enabled"] = true, ["criteria"] = "buff.coagulopathy.remains <= gcd.max || buff.icy_talons.remains <= gcd.max", ["action"] = "death_strike", ["description"] = "Use Death Strike if Coagulatopathy is down or about to expire or if Icy Talons is down or about to expire.", }, { ["enabled"] = true, ["criteria"] = "( buff.bone_shield.remains <= 4 || buff.bone_shield.stack < variable.bone_shield_refresh_value ) & runic_power.deficit > 20", ["action"] = "marrowrend", }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1 & target.time_to_pct_35 < 5 & target.time_to_die > ( dot.soul_reaper.remains + 5 )", ["action"] = "soul_reaper", }, { ["enabled"] = true, ["criteria"] = "target.time_to_pct_35 < 5 & active_enemies >= 2 & target.time_to_die > ( dot.soul_reaper.remains + 5 )", ["action"] = "soul_reaper", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "! death_and_decay.ticking & ( talent.sanguine_ground.enabled || talent.unholy_ground.enabled )", ["action"] = "death_and_decay", }, { ["enabled"] = true, ["criteria"] = "spell_targets.blood_boil > 2 & charges_fractional >= 1.1", ["action"] = "blood_boil", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( 25 + spell_targets.heart_strike * talent.heartbreaker.enabled * 2 )", ["var_name"] = "heart_strike_rp_drw", }, { ["enabled"] = true, ["criteria"] = "runic_power.deficit <= variable.heart_strike_rp_drw || runic_power >= variable.death_strike_dump_amount", ["action"] = "death_strike", }, { ["action"] = "consumption", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "charges_fractional >= 1.1 & buff.hemostasis.stack < 5", ["action"] = "blood_boil", }, { ["enabled"] = true, ["criteria"] = "rune.time_to_2 < gcd.max || runic_power.deficit >= variable.heart_strike_rp_drw", ["action"] = "heart_strike", }, }, ["default"] = { { ["enabled"] = true, ["description"] = "Interrupt.", ["action"] = "mind_freeze", }, { ["enabled"] = true, ["description"] = "Interrupt.", ["action"] = "strangulate", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "65", ["var_name"] = "death_strike_dump_amount", ["description"] = "Death Strike at 65+ Runic Power.", }, { ["enabled"] = true, ["op"] = "setif", ["criteria"] = "! talent.deaths_caress.enabled || talent.consumption.enabled || talent.blooddrinker.enabled", ["var_name"] = "bone_shield_refresh_value", ["value"] = "4", ["action"] = "variable", ["value_else"] = "5", ["description"] = "Refresh Bone Shield at 4 stacks with Death's Caress, Consumption, or Blooddrinker, otherwise 5 stacks.", }, { ["enabled"] = true, ["criteria"] = "buff.dancing_rune_weapon.up", ["action"] = "potion", ["description"] = "Use a Potion during Dancing Rune Weapon.", }, { ["enabled"] = true, ["action"] = "call_action_list", ["description"] = "Call the trinkets action list.", ["list_name"] = "trinkets", }, { ["enabled"] = true, ["description"] = "Raise Dead if it's off cooldown.", ["action"] = "raise_dead", }, { ["enabled"] = true, ["criteria"] = "tanking & incoming_damage_5s >= ibf_damage & ! ( buff.dancing_rune_weapon.up || buff.vampiric_blood.up )", ["action"] = "icebound_fortitude", ["description"] = "Use Icebound Fortitude if you're taking sufficient damage and you don't have Dancing Rune Weapon or Vampiric Blood up.", }, { ["enabled"] = true, ["criteria"] = "tanking & incoming_damage_5s >= vb_damage & ! ( buff.dancing_rune_weapon.up || buff.icebound_fortitude.up || buff.vampiric_blood.up || buff.vampiric_strength.up )", ["action"] = "vampiric_blood", ["description"] = "Use Vampiric Blood if you're taking sufficient damage and you don't have Dancing Rune Weapon, Icebound Fortitude, Vampiric Blood, or Vampiric Strength up.", }, { ["enabled"] = true, ["criteria"] = "tanking & incoming_damage_5s >= rt_damage & ! ( buff.dancing_rune_weapon.up || buff.vampiric_blood.up || buff.icebound_fortitude.up )", ["action"] = "rune_tap", ["description"] = "Use Rune Tap if you're taking sufficient damage and you don't have Dancing Rune Weapon, Vampiric Blood, or Icebound Fortitude up.", }, { ["enabled"] = true, ["criteria"] = "buff.blood_shield.up & buff.blood_shield.remains <= gcd.max", ["action"] = "death_strike", ["description"] = "Use Death Strike if your Blood Shield is going to expire.", }, { ["enabled"] = true, ["criteria"] = "! buff.bone_shield.up", ["action"] = "deaths_caress", ["description"] = "Use Death's Caress if Bone Shield is not up.", }, { ["enabled"] = true, ["criteria"] = "! death_and_decay.ticking & ( talent.unholy_ground.enabled || talent.sanguine_ground.enabled || spell_targets.death_and_decay > 3 || buff.crimson_scourge.up )", ["action"] = "death_and_decay", ["description"] = "Use Death and Decay if it's not already up and you have 4 targets, Unholy Ground, Sanguine Ground, or Crimson Scourge.", }, { ["enabled"] = true, ["criteria"] = "buff.coagulopathy.remains <= gcd.max || buff.icy_talons.remains <= gcd.max || runic_power >= variable.death_strike_dump_amount || runic_power.deficit <= variable.heart_strike_rp || boss & fight_remains < 10", ["action"] = "death_strike", ["description"] = "Use Death Strike if Coagulatopathy is down or about to expire, if Icy Talons is down or about to expire, if you're below the Death Strike dump amount, if you're below the Heart Strike Runic Power threshold, or if the target is about to die.", }, { ["enabled"] = true, ["criteria"] = "! buff.dancing_rune_weapon.up", ["action"] = "blooddrinker", ["description"] = "Use Blooddrinker if Dancing Rune Weapon is not up.", }, { ["enabled"] = true, ["action"] = "call_action_list", ["description"] = "Call the racials action list.", ["list_name"] = "racials", }, { ["enabled"] = true, ["criteria"] = "! buff.dancing_rune_weapon.up & ( pet.ghoul.remains < 2 || boss & fight_remains < gcd.max )", ["action"] = "sacrificial_pact", ["description"] = "Use Sacrificial Pact if Dancing Rune Weapon is not active and the Ghoul is about to expire or the bossfight is about to end.", }, { ["enabled"] = true, ["action"] = "call_action_list", ["description"] = "Call the covenants action list if they are active and valid.", ["strict"] = 1, ["criteria"] = "! covenant.none", ["list_name"] = "covenants", }, { ["enabled"] = true, ["criteria"] = "( rune <= 2 & rune.time_to_4 > gcd.max & charges_fractional >= 1.8 ) || rune.time_to_3 > gcd.max", ["action"] = "blood_tap", ["description"] = "Use Blood Tap if you have 2 or fewer runes, you won't reach 4 charges within the global cooldown, and you're about to cap charges, or if you will not reach 3 runes within global cooldown.", }, { ["enabled"] = true, ["criteria"] = "talent.tightening_grasp.enabled", ["action"] = "gorefiends_grasp", ["description"] = "Use Gorefiend's Grasp if Tightening Grasp is talented.", }, { ["enabled"] = true, ["criteria"] = "rune < 6 & runic_power.deficit > 5", ["action"] = "empower_rune_weapon", ["description"] = "Use Empower Ruen Weapon if you have 6 or fewer runes and you're not about to cap Runic Power.", }, { ["enabled"] = true, ["description"] = "Use Abomination's Limb on cooldown.", ["action"] = "abomination_limb", }, { ["enabled"] = true, ["criteria"] = "! buff.dancing_rune_weapon.up", ["action"] = "dancing_rune_weapon", ["description"] = "Use Dancing Rune Weapon if it is not already active.", }, { ["enabled"] = true, ["action"] = "run_action_list", ["description"] = "Use the drw_up action list if Dancing Rune Weapon is active.", ["strict"] = 1, ["criteria"] = "buff.dancing_rune_weapon.up", ["list_name"] = "drw_up", }, { ["enabled"] = true, ["action"] = "call_action_list", ["description"] = "Call the standard action list (which will not be used if Dancing Rune Weapon is active).", ["list_name"] = "standard", }, }, ["precombat"] = { { ["action"] = "fleshcraft", ["enabled"] = true, }, }, ["standard"] = { { ["enabled"] = true, ["criteria"] = "buff.bone_shield.stack > 5 & rune >= 2 & runic_power.deficit >= 30 & ! talent.shattering_bone.enabled || ( talent.shattering_bone.enabled & death_and_decay.ticking ) & cooldown.dancing_rune_weapon.remains >= 25", ["action"] = "tombstone", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( 10 + spell_targets.heart_strike * talent.heartbreaker.enabled * 2 )", ["var_name"] = "heart_strike_rp", }, { ["enabled"] = true, ["criteria"] = "buff.coagulopathy.remains <= gcd.max || buff.icy_talons.remains <= gcd.max || runic_power >= variable.death_strike_dump_amount || runic_power.deficit <= variable.heart_strike_rp || boss & fight_remains < 10", ["action"] = "death_strike", }, { ["enabled"] = true, ["criteria"] = "( buff.bone_shield.remains <= 4 || ( buff.bone_shield.stack < variable.bone_shield_refresh_value + 1 ) ) & runic_power.deficit > 10 & ! ( talent.insatiable_blade.enabled & cooldown.dancing_rune_weapon.remains < buff.bone_shield.remains ) & ! talent.consumption.enabled & ! talent.blooddrinker.enabled & rune.time_to_3 > gcd.max", ["action"] = "deaths_caress", }, { ["enabled"] = true, ["criteria"] = "( buff.bone_shield.remains <= 4 || buff.bone_shield.stack < variable.bone_shield_refresh_value ) & runic_power.deficit > 20 & ! ( talent.insatiable_blade.enabled & cooldown.dancing_rune_weapon.remains < buff.bone_shield.remains )", ["action"] = "marrowrend", }, { ["action"] = "consumption", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1 & target.time_to_pct_35 < 5 & target.time_to_die > ( dot.soul_reaper.remains + 5 )", ["action"] = "soul_reaper", }, { ["enabled"] = true, ["criteria"] = "target.time_to_pct_35 < 5 & active_enemies >= 2 & target.time_to_die > ( dot.soul_reaper.remains + 5 )", ["action"] = "soul_reaper", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "runic_power >= 100", ["action"] = "bonestorm", }, { ["enabled"] = true, ["criteria"] = "charges_fractional >= 1.8 & ( buff.hemostasis.stack <= ( 5 - spell_targets.blood_boil ) || spell_targets.blood_boil > 2 )", ["action"] = "blood_boil", }, { ["enabled"] = true, ["criteria"] = "rune.time_to_4 < gcd.max", ["action"] = "heart_strike", }, { ["enabled"] = true, ["criteria"] = "charges_fractional >= 1.1", ["action"] = "blood_boil", }, { ["enabled"] = true, ["criteria"] = "( rune > 1 & ( rune.time_to_3 < gcd.max || buff.bone_shield.stack > 7 ) )", ["action"] = "heart_strike", }, }, ["trinkets"] = { { ["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", ["description"] = "Prioritize damage dealing on use trinkets over trinkets that give 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", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t1.is.ruby_whelp_shell || trinket.t1.is.whispering_incarnate_icon", ["var_name"] = "trinket_1_exclude", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "trinket.t2.is.ruby_whelp_shell || trinket.t2.is.whispering_incarnate_icon", ["var_name"] = "trinket_2_exclude", }, { ["enabled"] = true, ["action"] = "trinket1", ["slot"] = "trinket1", ["use_off_gcd"] = 1, ["criteria"] = "! variable.trinket_1_buffs", }, { ["enabled"] = true, ["action"] = "trinket2", ["slot"] = "trinket2", ["use_off_gcd"] = 1, ["criteria"] = "! variable.trinket_2_buffs", }, { ["use_off_gcd"] = 1, ["enabled"] = true, ["action"] = "use_items", ["criteria"] = "( variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( variable.trinket_2_buffs || trinket.t2.cooldown.remains )", }, { ["enabled"] = true, ["action"] = "trinket1", ["slot"] = "trinket1", ["use_off_gcd"] = 1, ["criteria"] = "variable.trinket_1_buffs & ( buff.dancing_rune_weapon.up || ! talent.dancing_rune_weapon.enabled || cooldown.dancing_rune_weapon.remains > 20 ) & ( variable.trinket_2_exclude || trinket.t2.cooldown.remains || ! trinket.t2.has_cooldown || variable.trinket_2_buffs )", }, { ["enabled"] = true, ["action"] = "trinket2", ["slot"] = "trinket2", ["use_off_gcd"] = 1, ["criteria"] = "variable.trinket_2_buffs & ( buff.dancing_rune_weapon.up || ! talent.dancing_rune_weapon.enabled || cooldown.dancing_rune_weapon.remains > 20 ) & ( variable.trinket_1_exclude || trinket.t1.cooldown.remains || ! trinket.t1.has_cooldown || variable.trinket_1_buffs )", }, }, ["racials"] = { { ["enabled"] = true, ["criteria"] = "cooldown.dancing_rune_weapon.ready & ( ! cooldown.blooddrinker.ready || ! talent.blooddrinker.enabled )", ["action"] = "blood_fury", }, { ["action"] = "berserking", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "active_enemies >= 2 || rune < 1 & runic_power.deficit > 60", ["action"] = "arcane_pulse", }, { ["enabled"] = true, ["criteria"] = "buff.unholy_strength.up", ["action"] = "lights_judgment", }, { ["action"] = "ancestral_call", ["enabled"] = true, }, { ["action"] = "fireblood", ["enabled"] = true, }, { ["action"] = "bag_of_tricks", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "runic_power.deficit > 20", ["action"] = "arcane_torrent", }, }, ["covenants"] = { { ["enabled"] = true, ["criteria"] = "! death_and_decay.ticking & ( ! buff.deaths_due.up || buff.deaths_due.remains < 4 || buff.crimson_scourge.up )", ["action"] = "deaths_due", ["description"] = "Use Death's Due if Death and Decay is not ticking and you don't have Death's Due or Crimson Scourge up.", }, { ["enabled"] = true, ["criteria"] = "cooldown.dancing_rune_weapon.remains > 3 & runic_power >= ( 90 - ( spell_targets.swarming_mist * 3 ) )", ["action"] = "swarming_mist", ["description"] = "Use Swarming Mist if Dancing Rune Weapon is active for 3+ seconds and you have 90+ Runic Power (offset by number of targets).", }, { ["enabled"] = true, ["criteria"] = "soulbind.pustule_eruption.enabled || soulbind.volatile_solvent.enabled & ! buff.volatile_solvent_humanoid.up", ["description"] = "Use Fleshcraft if you have Pustule Eruption or Volatile Solvent and Volatile Solvent is not active.", ["interrupt_if"] = "soulbind.volatile_solvent", ["interrupt_immediate"] = "1", ["action"] = "fleshcraft", ["interrupt_global"] = "1", }, { ["enabled"] = true, ["criteria"] = "rune < 3 & runic_power < 100", ["action"] = "shackle_the_unworthy", ["description"] = "Use Shackle the Unworthy if you have 3 or fewer runes and Runic Power is below 100.", }, }, }, ["version"] = 20230506, ["warnings"] = "The import for 'drw_up' required some automated changes.\nLine 2: Converted 'talent.shattering_bone' to 'talent.shattering_bone.enabled' (1x).\nLine 7: Converted 'talent.sanguine_ground' to 'talent.sanguine_ground.enabled' (1x).\nLine 7: Converted 'talent.unholy_ground' to 'talent.unholy_ground.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 13: Converted 'talent.unholy_ground' to 'talent.unholy_ground.enabled' (1x).\nLine 13: Converted 'talent.sanguine_ground' to 'talent.sanguine_ground.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 1: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 1: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 1: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 1: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 1: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 1: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 1: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 1: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 1: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 1: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 1: Converted 'trinket.1.has_buff.crit' 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.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 2: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 2: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 2: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 2: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 2: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 3: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 4: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 4: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (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.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 8: Converted 'talent.dancing_rune_weapon' to 'talent.dancing_rune_weapon.enabled' (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.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 9: Converted 'talent.dancing_rune_weapon' to 'talent.dancing_rune_weapon.enabled' (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.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'standard' required some automated changes.\nLine 1: Converted 'talent.shattering_bone' to 'talent.shattering_bone.enabled' (1x).\nLine 4: Converted 'talent.insatiable_blade' to 'talent.insatiable_blade.enabled' (1x).\nLine 5: Converted 'talent.insatiable_blade' to 'talent.insatiable_blade.enabled' (1x).\n\nThe import for 'covenants' required some automated changes.\nLine 3: Converted 'soulbind.pustule_eruption' to 'soulbind.pustule_eruption.enabled' (1x).\nLine 3: Converted 'soulbind.volatile_solvent' to 'soulbind.volatile_solvent.enabled' (1x).\n\nImported 7 action lists.\n", ["author"] = "SimC", ["profile"] = "actions.precombat+=/fleshcraft\n\n# Interrupt.\nactions+=/mind_freeze\n# Interrupt.\nactions+=/strangulate\n# Death Strike at 65+ Runic Power.\nactions+=/variable,name=death_strike_dump_amount,value=65\n# Refresh Bone Shield at 4 stacks with Death's Caress, Consumption, or Blooddrinker; otherwise 5 stacks.\nactions+=/variable,name=bone_shield_refresh_value,value=4,op=setif,condition=!talent.deaths_caress.enabled||talent.consumption.enabled||talent.blooddrinker.enabled,value_else=5\n# Use a Potion during Dancing Rune Weapon.\nactions+=/potion,if=buff.dancing_rune_weapon.up\n# Call the trinkets action list.\nactions+=/call_action_list,name=trinkets\n# Raise Dead if it's off cooldown.\nactions+=/raise_dead\n# Use Icebound Fortitude if you're taking sufficient damage and you don't have Dancing Rune Weapon or Vampiric Blood up.\nactions+=/icebound_fortitude,if=tanking&incoming_damage_5s>=ibf_damage&!(buff.dancing_rune_weapon.up||buff.vampiric_blood.up)\n# Use Vampiric Blood if you're taking sufficient damage and you don't have Dancing Rune Weapon, Icebound Fortitude, Vampiric Blood, or Vampiric Strength up.\nactions+=/vampiric_blood,if=tanking&incoming_damage_5s>=vb_damage&!(buff.dancing_rune_weapon.up||buff.icebound_fortitude.up||buff.vampiric_blood.up||buff.vampiric_strength.up)\n# Use Rune Tap if you're taking sufficient damage and you don't have Dancing Rune Weapon, Vampiric Blood, or Icebound Fortitude up.\nactions+=/rune_tap,if=tanking&incoming_damage_5s>=rt_damage&!(buff.dancing_rune_weapon.up||buff.vampiric_blood.up||buff.icebound_fortitude.up)\n# Use Death Strike if your Blood Shield is going to expire.\nactions+=/death_strike,if=buff.blood_shield.up&buff.blood_shield.remains<=gcd.max\n# Use Death's Caress if Bone Shield is not up.\nactions+=/deaths_caress,if=!buff.bone_shield.up\n# Use Death and Decay if it's not already up and you have 4 targets, Unholy Ground, Sanguine Ground, or Crimson Scourge.\nactions+=/death_and_decay,if=!death_and_decay.ticking&(talent.unholy_ground||talent.sanguine_ground||spell_targets.death_and_decay>3||buff.crimson_scourge.up)\n# Use Death Strike if Coagulatopathy is down or about to expire, if Icy Talons is down or about to expire, if you're below the Death Strike dump amount, if you're below the Heart Strike Runic Power threshold, or if the target is about to die.\nactions+=/death_strike,if=buff.coagulopathy.remains<=gcd||buff.icy_talons.remains<=gcd||runic_power>=variable.death_strike_dump_amount||runic_power.deficit<=variable.heart_strike_rp||boss&fight_remains<10\n# Use Blooddrinker if Dancing Rune Weapon is not up.\nactions+=/blooddrinker,if=!buff.dancing_rune_weapon.up\n# Call the racials action list.\nactions+=/call_action_list,name=racials\n# Use Sacrificial Pact if Dancing Rune Weapon is not active and the Ghoul is about to expire or the bossfight is about to end.\nactions+=/sacrificial_pact,if=!buff.dancing_rune_weapon.up&(pet.ghoul.remains<2||boss&fight_remainsgcd&charges_fractional>=1.8)||rune.time_to_3>gcd\n# Use Gorefiend's Grasp if Tightening Grasp is talented.\nactions+=/gorefiends_grasp,if=talent.tightening_grasp.enabled\n# Use Empower Ruen Weapon if you have 6 or fewer runes and you're not about to cap Runic Power.\nactions+=/empower_rune_weapon,if=rune<6&runic_power.deficit>5\n# Use Abomination's Limb on cooldown.\nactions+=/abomination_limb\n# Use Dancing Rune Weapon if it is not already active.\nactions+=/dancing_rune_weapon,if=!buff.dancing_rune_weapon.up\n# Use the drw_up action list if Dancing Rune Weapon is active.\nactions+=/run_action_list,name=drw_up,strict=1,if=buff.dancing_rune_weapon.up\n# Call the standard action list (which will not be used if Dancing Rune Weapon is active).\nactions+=/call_action_list,name=standard\n\n# Use Death's Due if Death and Decay is not ticking and you don't have Death's Due or Crimson Scourge up.\nactions.covenants=deaths_due,if=!death_and_decay.ticking&(!buff.deaths_due.up||buff.deaths_due.remains<4||buff.crimson_scourge.up)\n# Use Swarming Mist if Dancing Rune Weapon is active for 3+ seconds and you have 90+ Runic Power (offset by number of targets).\nactions.covenants+=/swarming_mist,if=cooldown.dancing_rune_weapon.remains>3&runic_power>=(90-(spell_targets.swarming_mist*3))\n# Use Fleshcraft if you have Pustule Eruption or Volatile Solvent and Volatile Solvent is not active.\nactions.covenants+=/fleshcraft,if=soulbind.pustule_eruption||soulbind.volatile_solvent&!buff.volatile_solvent_humanoid.up,interrupt_immediate=1,interrupt_global=1,interrupt_if=soulbind.volatile_solvent\n# Use Shackle the Unworthy if you have 3 or fewer runes and Runic Power is below 100.\nactions.covenants+=/shackle_the_unworthy,if=rune<3&runic_power<100\n\n# Use Blood Boil if Blood Plague is not active.\nactions.drw_up+=/blood_boil,if=!dot.blood_plague.ticking\n# Use Tombstone if you have 5+ Bone Shield stacks, 2+ runes, 30+ Runic Power, and Shattering Bones is not talented or Death and Decay is not ticking.\nactions.drw_up+=/tombstone,if=buff.bone_shield.stack>5&rune>=2&runic_power.deficit>=30&!talent.shattering_bone||(talent.shattering_bone.enabled&death_and_decay.ticking)\n# Use Death Strike if Coagulatopathy is down or about to expire or if Icy Talons is down or about to expire.\nactions.drw_up+=/death_strike,if=buff.coagulopathy.remains<=gcd||buff.icy_talons.remains<=gcd\nactions.drw_up+=/marrowrend,if=(buff.bone_shield.remains<=4||buff.bone_shield.stack20\nactions.drw_up+=/soul_reaper,if=active_enemies=1&target.time_to_pct_35<5&target.time_to_die>(dot.soul_reaper.remains+5)\nactions.drw_up+=/soul_reaper,cycle_targets=1,if=target.time_to_pct_35<5&active_enemies>=2&target.time_to_die>(dot.soul_reaper.remains+5)\nactions.drw_up+=/death_and_decay,if=!death_and_decay.ticking&(talent.sanguine_ground||talent.unholy_ground)\nactions.drw_up+=/blood_boil,if=spell_targets.blood_boil>2&charges_fractional>=1.1\nactions.drw_up+=/variable,name=heart_strike_rp_drw,value=(25+spell_targets.heart_strike*talent.heartbreaker.enabled*2)\nactions.drw_up+=/death_strike,if=runic_power.deficit<=variable.heart_strike_rp_drw||runic_power>=variable.death_strike_dump_amount\nactions.drw_up+=/consumption\nactions.drw_up+=/blood_boil,if=charges_fractional>=1.1&buff.hemostasis.stack<5\nactions.drw_up+=/heart_strike,if=rune.time_to_2=variable.heart_strike_rp_drw\n\nactions.racials=blood_fury,if=cooldown.dancing_rune_weapon.ready&(!cooldown.blooddrinker.ready||!talent.blooddrinker.enabled)\nactions.racials+=/berserking\nactions.racials+=/arcane_pulse,if=active_enemies>=2||rune<1&runic_power.deficit>60\nactions.racials+=/lights_judgment,if=buff.unholy_strength.up\nactions.racials+=/ancestral_call\nactions.racials+=/fireblood\nactions.racials+=/bag_of_tricks\nactions.racials+=/arcane_torrent,if=runic_power.deficit>20\n\nactions.standard+=/tombstone,if=buff.bone_shield.stack>5&rune>=2&runic_power.deficit>=30&!talent.shattering_bone||(talent.shattering_bone.enabled&death_and_decay.ticking)&cooldown.dancing_rune_weapon.remains>=25\nactions.standard+=/variable,name=heart_strike_rp,value=(10+spell_targets.heart_strike*talent.heartbreaker.enabled*2)\nactions.standard+=/death_strike,if=buff.coagulopathy.remains<=gcd||buff.icy_talons.remains<=gcd||runic_power>=variable.death_strike_dump_amount||runic_power.deficit<=variable.heart_strike_rp||boss&fight_remains<10\nactions.standard+=/deaths_caress,if=(buff.bone_shield.remains<=4||(buff.bone_shield.stack10&!(talent.insatiable_blade&cooldown.dancing_rune_weapon.remainsgcd\nactions.standard+=/marrowrend,if=(buff.bone_shield.remains<=4||buff.bone_shield.stack20&!(talent.insatiable_blade&cooldown.dancing_rune_weapon.remains(dot.soul_reaper.remains+5)\nactions.standard+=/soul_reaper,cycle_targets=1,if=target.time_to_pct_35<5&active_enemies>=2&target.time_to_die>(dot.soul_reaper.remains+5)\nactions.standard+=/bonestorm,if=runic_power>=100\nactions.standard+=/blood_boil,if=charges_fractional>=1.8&(buff.hemostasis.stack<=(5-spell_targets.blood_boil)||spell_targets.blood_boil>2)\nactions.standard+=/heart_strike,if=rune.time_to_4=1.1\nactions.standard+=/heart_strike,if=(rune>1&(rune.time_to_37))\n\n# Prioritize damage dealing on use trinkets over trinkets that give buffs\nactions.trinkets+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_buff.strength||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit)\nactions.trinkets+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_buff.strength||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit)\nactions.trinkets+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell||trinket.1.is.whispering_incarnate_icon\nactions.trinkets+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell||trinket.2.is.whispering_incarnate_icon\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_buffs\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_buffs\nactions.trinkets+=/use_items,use_off_gcd=1,if=(variable.trinket_1_buffs||trinket.1.cooldown.remains)&(variable.trinket_2_buffs||trinket.2.cooldown.remains)\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=variable.trinket_1_buffs&(buff.dancing_rune_weapon.up||!talent.dancing_rune_weapon||cooldown.dancing_rune_weapon.remains>20)&(variable.trinket_2_exclude||trinket.2.cooldown.remains||!trinket.2.has_cooldown||variable.trinket_2_buffs)\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=variable.trinket_2_buffs&(buff.dancing_rune_weapon.up||!talent.dancing_rune_weapon||cooldown.dancing_rune_weapon.remains>20)&(variable.trinket_1_exclude||trinket.1.cooldown.remains||!trinket.1.has_cooldown||variable.trinket_1_buffs)", }, }, }, ["Quilberg - Thunderhorn"] = { ["runOnce"] = { ["autoconvertDisplayToggle_20190621_1"] = true, ["forceReloadClassDefaultOptions_20220306_71"] = true, ["resetAllPotions_20201209"] = true, ["enableAllOfTheThings_20180820"] = true, ["resetGlobalCooldownSync_20210403"] = true, ["forceReloadAllDefaultPriorities_20220228"] = true, ["forceEnableAllClassesOnceDueToBug_20220225"] = true, ["autoconvertDelaySweepToExtend_20190729"] = true, ["resetAberrantPackageDates_20190728_1"] = true, ["forceEnableEnhancedRecheckBoomkin_20210712"] = true, ["autoconvertGlowsForCustomGlow_20190326"] = true, ["resetRogueMfDOption_20200226"] = true, ["forceReloadClassDefaultOptions_20220306_72"] = true, ["updateMaxRefreshToNewSpecOptions_20220222"] = true, ["resetPotionsToDefaults_20190717"] = true, ["forceReloadClassDefaultOptions_20220306_73"] = true, ["forceSpellFlashBrightness_20221030"] = true, }, ["specs"] = { [73] = { ["debuffPadding"] = 0, ["settings"] = { ["rallying_cry_health"] = 50, ["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, ["shockwave_interrupt"] = true, ["shield_wall_health"] = 50, ["heroic_charge"] = false, ["overlap_ignore_pain"] = false, ["last_stand_condition"] = false, ["shield_wall_condition"] = false, ["last_stand_health"] = 50, ["last_stand_offensively"] = false, ["reserve_rage"] = 35, }, ["potion"] = "potion_of_phantom_fire", ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["maxTime"] = 33, ["buffPadding"] = 0, }, [71] = { ["debuffPadding"] = 0, ["settings"] = { ["shockwave_interrupt"] = true, ["heroic_charge"] = false, }, ["potionsReset"] = 20180919.1, ["maxTime"] = 33, ["maxRefresh"] = 10, ["buffPadding"] = 0, }, [72] = { ["debuffPadding"] = 0, ["maxRefresh"] = 10, ["settings"] = { ["check_ww_range"] = false, ["shockwave_interrupt"] = true, ["t30_bloodthirst_crit"] = 95, ["heroic_charge"] = false, }, ["potionsReset"] = 20180919.1, ["package"] = "Fury", ["potion"] = "potion_of_phantom_fire", ["maxTime"] = 33, ["buffPadding"] = 0, }, [102] = { ["enhancedRecheck"] = true, }, }, ["packs"] = { ["Fury"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20230520, ["author"] = "SimC", ["desc"] = "2023-05-20: Trinket/CD update.\n\n2023-05-14: Add slider for Tier 30 crit % setting.\n\n2023-05-04: Updates related to Tier 30.\n\n2023-05-02: Update for 10.1.\n\n2023-03-26: Include Spell Reflection; remove Heroic Leap.", ["profile"] = "actions.precombat+=/berserker_stance\nactions.precombat+=/battle_shout\nactions.precombat+=/algethar_puzzle_box\nactions.precombat+=/avatar,if=!talent.titans_torment\nactions.precombat+=/recklessness,if=!talent.reckless_abandon\n\nactions+=/charge,if=time<=0.5||movement.distance>5\n## actions+=/heroic_leap,if=(raid_event.movement.distance>25&raid_event.movement.in>45)\nactions+=/pummel\nactions+=/spell_reflection\nactions+=/potion\nactions+=/algethar_puzzle_box,if=cooldown.recklessness.remains<3||(talent.anger_management&cooldown.avatar.remains<3)\nactions+=/vial_of_animated_blood,if=buff.avatar.up\nactions+=/irideus_fragment,if=buff.avatar.up\nactions+=/manic_grieftorch,if=buff.avatar.down\nactions+=/gladiators_badge,if=cooldown.recklessness.remains>10&(buff.recklessness.up||target.time_to_die<11||target.time_to_die>65)\nactions+=/use_items\nactions+=/ravager,if=cooldown.recklessness.remains<3||buff.recklessness.up\nactions+=/lights_judgment,if=buff.recklessness.down\nactions+=/berserking,if=buff.recklessness.up\nactions+=/blood_fury\nactions+=/fireblood\nactions+=/ancestral_call\n## actions+=/bag_of_tricks,if=buff.recklessness.down&buff.enrage.up\nactions+=/avatar,if=talent.titans_torment&buff.enrage.up&raid_event.adds.in>15||talent.berserkers_torment&buff.enrage.up&!buff.avatar.up&raid_event.adds.in>15||!talent.titans_torment&!talent.berserkers_torment&(buff.recklessness.up||boss&fight_remains<20)\nactions+=/recklessness,if=!raid_event.adds.exists&(talent.annihilator&cooldown.avatar.remains<1||cooldown.avatar.remains>40||!talent.avatar||target.time_to_die<12)\nactions+=/recklessness,if=!raid_event.adds.exists&!talent.annihilator||boss&fight_remains<12\nactions+=/spear_of_bastion,if=buff.enrage.up&(buff.recklessness.up||buff.avatar.up||boss&fight_remains<20||active_enemies>1)&raid_event.adds.in>15\nactions+=/call_action_list,name=multi_target,strict=1,if=active_enemies>2\nactions+=/call_action_list,name=single_target\n\nactions.multi_target+=/recklessness,if=raid_event.adds.in>15||active_enemies>1||boss&fight_remains<12\nactions.multi_target+=/odyns_fury,if=active_enemies>1&talent.titanic_rage&(!buff.meat_cleaver.up||buff.avatar.up||buff.recklessness.up)\nactions.multi_target+=/whirlwind,if=spell_targets.whirlwind>1&talent.improved_whirlwind&!buff.meat_cleaver.up||raid_event.adds.in<2&talent.improved_whirlwind&!buff.meat_cleaver.up\nactions.multi_target+=/execute,if=buff.ashen_juggernaut.up&buff.ashen_juggernaut.remains1||raid_event.adds.in>15)\nactions.multi_target+=/odyns_fury,if=active_enemies>1&buff.enrage.up&raid_event.adds.in>15\nactions.multi_target+=/bloodbath,if=set_bonus.tier30_4pc&action.bloodthirst.crit_pct_current>=bloodthirst_crit_threshold\nactions.multi_target+=/bloodthirst,if=set_bonus.tier30_4pc&action.bloodthirst.crit_pct_current>=bloodthirst_crit_threshold\nactions.multi_target+=/crushing_blow,if=talent.wrath_and_fury&buff.enrage.up\nactions.multi_target+=/execute,if=buff.enrage.up\nactions.multi_target+=/odyns_fury,if=buff.enrage.up&raid_event.adds.in>15\nactions.multi_target+=/rampage,if=buff.recklessness.up||buff.enrage.remains110&talent.overwhelming_rage)||(rage>80&!talent.overwhelming_rage)\nactions.multi_target+=/execute\nactions.multi_target+=/bloodbath,if=buff.enrage.up&talent.reckless_abandon&!talent.wrath_and_fury\nactions.multi_target+=/bloodthirst,if=buff.enrage.down||(talent.annihilator&!buff.recklessness.up)\nactions.multi_target+=/onslaught,if=!talent.annihilator&buff.enrage.up||talent.tenderize\nactions.multi_target+=/raging_blow,if=charges>1&talent.wrath_and_fury\nactions.multi_target+=/crushing_blow,if=charges>1&talent.wrath_and_fury\nactions.multi_target+=/bloodbath,if=buff.enrage.down||!talent.wrath_and_fury\nactions.multi_target+=/crushing_blow,if=buff.enrage.up&talent.reckless_abandon\nactions.multi_target+=/bloodthirst,if=!talent.wrath_and_fury\nactions.multi_target+=/raging_blow,if=charges>=1\nactions.multi_target+=/rampage\nactions.multi_target+=/slam,if=talent.annihilator\nactions.multi_target+=/bloodbath\nactions.multi_target+=/raging_blow\nactions.multi_target+=/crushing_blow\nactions.multi_target+=/whirlwind\n\nactions.single_target+=/whirlwind,if=spell_targets.whirlwind>1&talent.improved_whirlwind&!buff.meat_cleaver.up||raid_event.adds.in<2&talent.improved_whirlwind&!buff.meat_cleaver.up\nactions.single_target+=/execute,if=buff.ashen_juggernaut.up&buff.ashen_juggernaut.remains1||raid_event.adds.in>15)\nactions.single_target+=/odyns_fury,if=buff.enrage.up&(spell_targets.whirlwind>1||raid_event.adds.in>15)&(talent.dancing_blades&buff.dancing_blades.remains<5||!talent.dancing_blades)\nactions.single_target+=/rampage,if=talent.anger_management&(buff.recklessness.up||buff.enrage.remains85)\nactions.single_target+=/bloodbath,if=set_bonus.tier30_4pc&action.bloodthirst.crit_pct_current>=bloodthirst_crit_threshold\nactions.single_target+=/bloodthirst,if=set_bonus.tier30_4pc&action.bloodthirst.crit_pct_current>=bloodthirst_crit_threshold\nactions.single_target+=/execute,if=buff.enrage.up\nactions.single_target+=/onslaught,if=buff.enrage.up||talent.tenderize\nactions.single_target+=/crushing_blow,if=talent.wrath_and_fury&buff.enrage.up\nactions.single_target+=/rampage,if=talent.reckless_abandon&(buff.recklessness.up||buff.enrage.remains85)\nactions.single_target+=/rampage,if=talent.anger_management\nactions.single_target+=/execute\nactions.single_target+=/bloodbath,if=buff.enrage.up&talent.reckless_abandon&!talent.wrath_and_fury\nactions.single_target+=/bloodthirst,if=buff.enrage.down||(talent.annihilator&!buff.recklessness.up)\nactions.single_target+=/raging_blow,if=charges>1&talent.wrath_and_fury\nactions.single_target+=/crushing_blow,if=charges>1&talent.wrath_and_fury\nactions.single_target+=/bloodbath,if=buff.enrage.down||!talent.wrath_and_fury\nactions.single_target+=/crushing_blow,if=buff.enrage.up&talent.reckless_abandon\nactions.single_target+=/bloodthirst,if=!talent.wrath_and_fury\nactions.single_target+=/raging_blow,if=charges>1\nactions.single_target+=/rampage\nactions.single_target+=/slam,if=talent.annihilator\nactions.single_target+=/bloodbath\nactions.single_target+=/raging_blow\nactions.single_target+=/crushing_blow\nactions.single_target+=/bloodthirst\nactions.single_target+=/whirlwind\nactions.single_target+=/wrecking_throw\nactions.single_target+=/storm_bolt", ["version"] = 20230520, ["warnings"] = "The import for 'single_target' required some automated changes.\nLine 1: Converted 'talent.improved_whirlwind' to 'talent.improved_whirlwind.enabled' (1x).\nLine 1: Converted 'talent.improved_whirlwind' to 'talent.improved_whirlwind.enabled' (1x).\nLine 4: Converted 'talent.dancing_blades' to 'talent.dancing_blades.enabled' (1x).\nLine 4: Converted 'talent.dancing_blades' to 'talent.dancing_blades.enabled' (1x).\nLine 5: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 9: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 10: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 11: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 12: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 14: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 14: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 15: Converted 'talent.annihilator' to 'talent.annihilator.enabled' (1x).\nLine 16: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 17: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 18: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 19: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 20: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 23: Converted 'talent.annihilator' to 'talent.annihilator.enabled' (1x).\n\nThe import for 'multi_target' required some automated changes.\nLine 2: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 3: Converted 'talent.improved_whirlwind' to 'talent.improved_whirlwind.enabled' (1x).\nLine 3: Converted 'talent.improved_whirlwind' to 'talent.improved_whirlwind.enabled' (1x).\nLine 9: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 12: Converted 'talent.overwhelming_rage' to 'talent.overwhelming_rage.enabled' (1x).\nLine 12: Converted 'talent.overwhelming_rage' to 'talent.overwhelming_rage.enabled' (1x).\nLine 14: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 14: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 15: Converted 'talent.annihilator' to 'talent.annihilator.enabled' (1x).\nLine 16: Converted 'talent.annihilator' to 'talent.annihilator.enabled' (1x).\nLine 16: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 17: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 18: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 19: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 20: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 21: Converted 'talent.wrath_and_fury' to 'talent.wrath_and_fury.enabled' (1x).\nLine 24: Converted 'talent.annihilator' to 'talent.annihilator.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 5: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 17: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 17: Converted 'talent.berserkers_torment' to 'talent.berserkers_torment.enabled' (1x).\nLine 17: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 17: Converted 'talent.berserkers_torment' to 'talent.berserkers_torment.enabled' (1x).\nLine 18: Converted 'talent.annihilator' to 'talent.annihilator.enabled' (1x).\nLine 18: Converted 'talent.avatar' to 'talent.avatar.enabled' (1x).\nLine 19: Converted 'talent.annihilator' to 'talent.annihilator.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 5: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\n\nImported 4 action lists.\n", ["lists"] = { ["single_target"] = { { ["enabled"] = true, ["criteria"] = "spell_targets.whirlwind > 1 & talent.improved_whirlwind.enabled & ! buff.meat_cleaver.up || raid_event.adds.in < 2 & talent.improved_whirlwind.enabled & ! buff.meat_cleaver.up", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "buff.ashen_juggernaut.up & buff.ashen_juggernaut.remains < gcd.max", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & ( spell_targets.whirlwind > 1 || raid_event.adds.in > 15 )", ["action"] = "thunderous_roar", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & ( spell_targets.whirlwind > 1 || raid_event.adds.in > 15 ) & ( talent.dancing_blades.enabled & buff.dancing_blades.remains < 5 || ! talent.dancing_blades.enabled )", ["action"] = "odyns_fury", }, { ["enabled"] = true, ["criteria"] = "talent.anger_management.enabled & ( buff.recklessness.up || buff.enrage.remains < gcd.max || rage.pct > 85 )", ["action"] = "rampage", }, { ["enabled"] = true, ["criteria"] = "set_bonus.tier30_4pc & action.bloodthirst.crit_pct_current >= bloodthirst_crit_threshold", ["action"] = "bloodbath", }, { ["enabled"] = true, ["criteria"] = "set_bonus.tier30_4pc & action.bloodthirst.crit_pct_current >= bloodthirst_crit_threshold", ["action"] = "bloodthirst", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up || talent.tenderize.enabled", ["action"] = "onslaught", }, { ["enabled"] = true, ["criteria"] = "talent.wrath_and_fury.enabled & buff.enrage.up", ["action"] = "crushing_blow", }, { ["enabled"] = true, ["criteria"] = "talent.reckless_abandon.enabled & ( buff.recklessness.up || buff.enrage.remains < gcd.max || rage.pct > 85 )", ["action"] = "rampage", }, { ["enabled"] = true, ["criteria"] = "talent.anger_management.enabled", ["action"] = "rampage", }, { ["action"] = "execute", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & talent.reckless_abandon.enabled & ! talent.wrath_and_fury.enabled", ["action"] = "bloodbath", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.down || ( talent.annihilator.enabled & ! buff.recklessness.up )", ["action"] = "bloodthirst", }, { ["enabled"] = true, ["criteria"] = "charges > 1 & talent.wrath_and_fury.enabled", ["action"] = "raging_blow", }, { ["enabled"] = true, ["criteria"] = "charges > 1 & talent.wrath_and_fury.enabled", ["action"] = "crushing_blow", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.down || ! talent.wrath_and_fury.enabled", ["action"] = "bloodbath", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & talent.reckless_abandon.enabled", ["action"] = "crushing_blow", }, { ["enabled"] = true, ["criteria"] = "! talent.wrath_and_fury.enabled", ["action"] = "bloodthirst", }, { ["enabled"] = true, ["criteria"] = "charges > 1", ["action"] = "raging_blow", }, { ["action"] = "rampage", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.annihilator.enabled", ["action"] = "slam", }, { ["action"] = "bloodbath", ["enabled"] = true, }, { ["action"] = "raging_blow", ["enabled"] = true, }, { ["action"] = "crushing_blow", ["enabled"] = true, }, { ["action"] = "bloodthirst", ["enabled"] = true, }, { ["action"] = "whirlwind", ["enabled"] = true, }, { ["action"] = "wrecking_throw", ["enabled"] = true, }, { ["action"] = "storm_bolt", ["enabled"] = true, }, }, ["multi_target"] = { { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 15 || active_enemies > 1 || boss & fight_remains < 12", ["action"] = "recklessness", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1 & talent.titanic_rage.enabled & ( ! buff.meat_cleaver.up || buff.avatar.up || buff.recklessness.up )", ["action"] = "odyns_fury", }, { ["enabled"] = true, ["criteria"] = "spell_targets.whirlwind > 1 & talent.improved_whirlwind.enabled & ! buff.meat_cleaver.up || raid_event.adds.in < 2 & talent.improved_whirlwind.enabled & ! buff.meat_cleaver.up", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "buff.ashen_juggernaut.up & buff.ashen_juggernaut.remains < gcd.max", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & ( spell_targets.whirlwind > 1 || raid_event.adds.in > 15 )", ["action"] = "thunderous_roar", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1 & buff.enrage.up & raid_event.adds.in > 15", ["action"] = "odyns_fury", }, { ["enabled"] = true, ["criteria"] = "set_bonus.tier30_4pc & action.bloodthirst.crit_pct_current >= bloodthirst_crit_threshold", ["action"] = "bloodbath", }, { ["enabled"] = true, ["criteria"] = "set_bonus.tier30_4pc & action.bloodthirst.crit_pct_current >= bloodthirst_crit_threshold", ["action"] = "bloodthirst", }, { ["enabled"] = true, ["criteria"] = "talent.wrath_and_fury.enabled & buff.enrage.up", ["action"] = "crushing_blow", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & raid_event.adds.in > 15", ["action"] = "odyns_fury", }, { ["enabled"] = true, ["criteria"] = "buff.recklessness.up || buff.enrage.remains < gcd.max || ( rage > 110 & talent.overwhelming_rage.enabled ) || ( rage > 80 & ! talent.overwhelming_rage.enabled )", ["action"] = "rampage", }, { ["action"] = "execute", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & talent.reckless_abandon.enabled & ! talent.wrath_and_fury.enabled", ["action"] = "bloodbath", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.down || ( talent.annihilator.enabled & ! buff.recklessness.up )", ["action"] = "bloodthirst", }, { ["enabled"] = true, ["criteria"] = "! talent.annihilator.enabled & buff.enrage.up || talent.tenderize.enabled", ["action"] = "onslaught", }, { ["enabled"] = true, ["criteria"] = "charges > 1 & talent.wrath_and_fury.enabled", ["action"] = "raging_blow", }, { ["enabled"] = true, ["criteria"] = "charges > 1 & talent.wrath_and_fury.enabled", ["action"] = "crushing_blow", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.down || ! talent.wrath_and_fury.enabled", ["action"] = "bloodbath", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & talent.reckless_abandon.enabled", ["action"] = "crushing_blow", }, { ["enabled"] = true, ["criteria"] = "! talent.wrath_and_fury.enabled", ["action"] = "bloodthirst", }, { ["enabled"] = true, ["criteria"] = "charges >= 1", ["action"] = "raging_blow", }, { ["action"] = "rampage", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.annihilator.enabled", ["action"] = "slam", }, { ["action"] = "bloodbath", ["enabled"] = true, }, { ["action"] = "raging_blow", ["enabled"] = true, }, { ["action"] = "crushing_blow", ["enabled"] = true, }, { ["action"] = "whirlwind", ["enabled"] = true, }, }, ["default"] = { { ["enabled"] = true, ["criteria"] = "time <= 0.5 || movement.distance > 5", ["action"] = "charge", }, { ["action"] = "pummel", ["enabled"] = true, }, { ["action"] = "spell_reflection", ["enabled"] = true, }, { ["action"] = "potion", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "cooldown.recklessness.remains < 3 || ( talent.anger_management.enabled & cooldown.avatar.remains < 3 )", ["action"] = "algethar_puzzle_box", }, { ["enabled"] = true, ["criteria"] = "buff.avatar.up", ["action"] = "vial_of_animated_blood", }, { ["enabled"] = true, ["criteria"] = "buff.avatar.up", ["action"] = "irideus_fragment", }, { ["enabled"] = true, ["criteria"] = "buff.avatar.down", ["action"] = "manic_grieftorch", }, { ["enabled"] = true, ["criteria"] = "cooldown.recklessness.remains > 10 & ( buff.recklessness.up || target.time_to_die < 11 || target.time_to_die > 65 )", ["action"] = "gladiators_badge", }, { ["action"] = "use_items", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "cooldown.recklessness.remains < 3 || buff.recklessness.up", ["action"] = "ravager", }, { ["enabled"] = true, ["criteria"] = "buff.recklessness.down", ["action"] = "lights_judgment", }, { ["enabled"] = true, ["criteria"] = "buff.recklessness.up", ["action"] = "berserking", }, { ["action"] = "blood_fury", ["enabled"] = true, }, { ["action"] = "fireblood", ["enabled"] = true, }, { ["action"] = "ancestral_call", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.titans_torment.enabled & buff.enrage.up & raid_event.adds.in > 15 || talent.berserkers_torment.enabled & buff.enrage.up & ! buff.avatar.up & raid_event.adds.in > 15 || ! talent.titans_torment.enabled & ! talent.berserkers_torment.enabled & ( buff.recklessness.up || boss & fight_remains < 20 )", ["action"] = "avatar", }, { ["enabled"] = true, ["criteria"] = "! raid_event.adds.exists & ( talent.annihilator.enabled & cooldown.avatar.remains < 1 || cooldown.avatar.remains > 40 || ! talent.avatar.enabled || target.time_to_die < 12 )", ["action"] = "recklessness", }, { ["enabled"] = true, ["criteria"] = "! raid_event.adds.exists & ! talent.annihilator.enabled || boss & fight_remains < 12", ["action"] = "recklessness", }, { ["enabled"] = true, ["criteria"] = "buff.enrage.up & ( buff.recklessness.up || buff.avatar.up || boss & fight_remains < 20 || active_enemies > 1 ) & raid_event.adds.in > 15", ["action"] = "spear_of_bastion", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "active_enemies > 2", ["list_name"] = "multi_target", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "single_target", }, }, ["precombat"] = { { ["action"] = "berserker_stance", ["enabled"] = true, }, { ["action"] = "battle_shout", ["enabled"] = true, }, { ["action"] = "algethar_puzzle_box", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! talent.titans_torment.enabled", ["action"] = "avatar", }, { ["enabled"] = true, ["criteria"] = "! talent.reckless_abandon.enabled", ["action"] = "recklessness", }, }, }, ["spec"] = 72, }, ["Protection Warrior"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20230520, ["spec"] = 73, ["desc"] = "2023-05-20: Shield Wall minor update.\n\n2023-05-08: Add additional Execute in single-target if Rage is 50+ (still impacted by Reserve Rage for Mitigation option).\n\n2023-04-30: 2nd minor update.\n\n2023-04-26: Minor update from SimulationCraft for 10.1.\n\n2023-03-26: Shift Shield Charge and Charge above Pummel and Spell Reflection.", ["profile"] = "actions.precombat+=/defensive_stance,if=buff.stance.down\nactions.precombat+=/battle_shout\nactions.precombat+=/use_item,name=algethar_puzzle_box\nactions.precombat+=/avatar,if=!talent.titans_torment\nactions.precombat+=/recklessness,if=!talent.reckless_abandon\n\n# Executed every time the actor is available.\nactions+=/shield_charge,if=time=0\nactions+=/charge,if=time=0\nactions+=/pummel\nactions+=/spell_reflection\nactions+=/use_items\nactions+=/avatar\n# Usage of Shield Wall is governed by specialization settings; see /hekili > Protection.\nactions+=/shield_wall,if=talent.immovable_object.enabled&buff.avatar.down\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\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),use_off_gcd=1\n# Usage of Last Stand is also governed by specialization settings; see /hekili > Protection.\nactions+=/last_stand,if=talent.unnerving_focus&(target.health.pct>=90||target.health.pct<=20)||talent.bolster&buff.shield_block.down||!talent.bolster&!talent.unnerving_focus||set_bonus.tier30_2pc>0\n# Usage of Rallying Cry is governed by specialization settings; see /hekili > Protection.\nactions+=/rallying_cry\nactions+=/ravager\nactions+=/demoralizing_shout,if=talent.booming_voice.enabled\nactions+=/spear_of_bastion\nactions+=/thunderous_roar\nactions+=/shockwave,if=talent.sonic_boom.enabled&buff.avatar.up&talent.unstoppable_force.enabled&!talent.rumbling_earth.enabled\nactions+=/shield_charge\nactions+=/shield_block,if=buff.shield_block.duration<=18&talent.enduring_defenses.enabled||buff.shield_block.duration<=12\nactions+=/run_action_list,name=aoe,strict=1,if=spell_targets.thunder_clap>=3\nactions+=/call_action_list,name=generic\n\nactions.aoe+=/thunder_clap,if=dot.rend.remains<=1&talent.blood_and_thunder&talent.rend\nactions.aoe+=/thunder_clap,if=buff.violent_outburst.up&spell_targets.thunderclap>5&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\nactions.aoe+=/thunder_clap\nactions.aoe+=/revenge,if=rage>=30||rage>=40&talent.barbaric_training.enabled\n\nactions.generic=shield_slam\nactions.generic+=/thunder_clap,if=dot.rend.remains<=1&buff.violent_outburst.down\nactions.generic+=/execute,if=buff.sudden_death.up&talent.sudden_death.enabled\nactions.generic+=/execute,if=spell_targets.revenge=1&rage>=50\nactions.generic+=/thunder_clap,if=(spell_targets.thunder_clap>1||cooldown.shield_slam.remains&!buff.violent_outburst.up)\nactions.generic+=/revenge,if=(rage>=60&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>=60&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,if=spell_targets.revenge=1\nactions.generic+=/revenge\nactions.generic+=/thunder_clap,if=(spell_targets.thunder_clap>=1||cooldown.shield_slam.remains&buff.violent_outburst.up)\nactions.generic+=/devastate", ["version"] = 20230520, ["warnings"] = "The import for 'aoe' required some automated changes.\nLine 1: Converted 'talent.blood_and_thunder' to 'talent.blood_and_thunder.enabled' (1x).\nLine 1: Converted 'talent.rend' to 'talent.rend.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 17: Converted 'talent.unnerving_focus' to 'talent.unnerving_focus.enabled' (1x).\nLine 17: Converted 'talent.bolster' to 'talent.bolster.enabled' (1x).\nLine 17: Converted 'talent.bolster' to 'talent.bolster.enabled' (1x).\nLine 17: Converted 'talent.unnerving_focus' to 'talent.unnerving_focus.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 5: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\n\nImported 4 action lists.\n", ["lists"] = { ["aoe"] = { { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= 1 & talent.blood_and_thunder.enabled & talent.rend.enabled", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "buff.violent_outburst.up & spell_targets.thunderclap > 5 & 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", ["action"] = "shield_slam", }, { ["action"] = "thunder_clap", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "rage >= 30 || rage >= 40 & talent.barbaric_training.enabled", ["action"] = "revenge", }, }, ["generic"] = { { ["action"] = "shield_slam", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "dot.rend.remains <= 1 & buff.violent_outburst.down", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "buff.sudden_death.up & talent.sudden_death.enabled", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "spell_targets.revenge = 1 & rage >= 50", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "( spell_targets.thunder_clap > 1 || cooldown.shield_slam.remains & ! buff.violent_outburst.up )", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "( rage >= 60 & 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 >= 60 & 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", }, { ["enabled"] = true, ["criteria"] = "spell_targets.revenge = 1", ["action"] = "execute", }, { ["action"] = "revenge", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( spell_targets.thunder_clap >= 1 || cooldown.shield_slam.remains & buff.violent_outburst.up )", ["action"] = "thunder_clap", }, { ["action"] = "devastate", ["enabled"] = true, }, }, ["default"] = { { ["enabled"] = true, ["description"] = "Executed every time the actor is available.", ["criteria"] = "time = 0", ["action"] = "shield_charge", }, { ["enabled"] = true, ["criteria"] = "time = 0", ["action"] = "charge", }, { ["action"] = "pummel", ["enabled"] = true, }, { ["action"] = "spell_reflection", ["enabled"] = true, }, { ["action"] = "use_items", ["enabled"] = true, }, { ["action"] = "avatar", ["enabled"] = true, }, { ["enabled"] = true, ["description"] = "Usage of Shield Wall is governed by specialization settings, see /hekili > Protection.", ["criteria"] = "talent.immovable_object.enabled & buff.avatar.down", ["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", ["action"] = "potion", }, { ["enabled"] = true, ["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 )", ["action"] = "ignore_pain", ["use_off_gcd"] = 1, }, { ["enabled"] = true, ["description"] = "Usage of Last Stand is also governed by specialization settings, see /hekili > Protection.", ["criteria"] = "talent.unnerving_focus.enabled & ( target.health.pct >= 90 || target.health.pct <= 20 ) || talent.bolster.enabled & buff.shield_block.down || ! talent.bolster.enabled & ! talent.unnerving_focus.enabled || set_bonus.tier30_2pc > 0", ["action"] = "last_stand", }, { ["enabled"] = true, ["description"] = "Usage of Rallying Cry is governed by specialization settings, see /hekili > Protection.", ["action"] = "rallying_cry", }, { ["action"] = "ravager", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.booming_voice.enabled", ["action"] = "demoralizing_shout", }, { ["action"] = "spear_of_bastion", ["enabled"] = true, }, { ["action"] = "thunderous_roar", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.sonic_boom.enabled & buff.avatar.up & talent.unstoppable_force.enabled & ! talent.rumbling_earth.enabled", ["action"] = "shockwave", }, { ["action"] = "shield_charge", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.shield_block.duration <= 18 & talent.enduring_defenses.enabled || buff.shield_block.duration <= 12", ["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"] = { { ["enabled"] = true, ["criteria"] = "buff.stance.down", ["action"] = "defensive_stance", }, { ["action"] = "battle_shout", ["enabled"] = true, }, { ["enabled"] = true, ["name"] = "algethar_puzzle_box", ["action"] = "algethar_puzzle_box", }, { ["enabled"] = true, ["criteria"] = "! talent.titans_torment.enabled", ["action"] = "avatar", }, { ["enabled"] = true, ["criteria"] = "! talent.reckless_abandon.enabled", ["action"] = "recklessness", }, }, }, ["author"] = "SimulationCraft", }, ["Arms"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20230520, ["author"] = "SimulationCraft", ["desc"] = "2023-05-20: Update trinket/CDs.\n\n2023-05-08: Use Arcane Torrent at pretty low priority in single-target.\n\n2023-05-02: Update for 10.1.\n\n2023-03-26: Include Spell Reflection.", ["lists"] = { ["single_target"] = { { ["enabled"] = true, ["criteria"] = "spell_targets.whirlwind > 1", ["action"] = "sweeping_strikes", }, { ["action"] = "mortal_strike", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "remains <= gcd.max || talent.tide_of_blood.enabled & cooldown.skullsplitter.remains <= gcd.max & ( cooldown.colossus_smash.remains <= gcd.max || debuff.colossus_smash.up ) & dot.rend.remains < dot.rend.duration * 0.85", ["action"] = "rend", }, { ["enabled"] = true, ["criteria"] = "talent.warlords_torment.enabled & rage.pct < 33 & ( cooldown.colossus_smash.ready || debuff.colossus_smash.up || buff.test_of_might.up ) || ! talent.warlords_torment.enabled & ( cooldown.colossus_smash.ready || debuff.colossus_smash.up )", ["action"] = "avatar", }, { ["enabled"] = true, ["criteria"] = "cooldown.colossus_smash.remains <= gcd.max || cooldown.warbreaker.remains <= gcd.max", ["action"] = "spear_of_bastion", }, { ["action"] = "warbreaker", ["enabled"] = true, }, { ["action"] = "colossus_smash", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.test_of_might.up || talent.test_of_might.enabled & debuff.colossus_smash.up & rage.pct < 33 || ! talent.test_of_might.enabled & debuff.colossus_smash.up", ["action"] = "thunderous_roar", }, { ["enabled"] = true, ["criteria"] = "talent.hurricane.enabled & ( buff.test_of_might.up || ! talent.test_of_might.enabled & debuff.colossus_smash.up ) || talent.unhinged.enabled & ( buff.test_of_might.up || ! talent.test_of_might.enabled & debuff.colossus_smash.up )", ["action"] = "bladestorm", }, { ["enabled"] = true, ["criteria"] = "talent.tide_of_blood.enabled & dot.rend.remains & ( debuff.colossus_smash.up || cooldown.colossus_smash.remains > gcd.max * 4 & buff.test_of_might.up || ! talent.test_of_might.enabled & cooldown.colossus_smash.remains > gcd.max * 4 ) || rage < 30", ["action"] = "skullsplitter", }, { ["enabled"] = true, ["criteria"] = "buff.sudden_death.react", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "talent.sonic_boom.enabled", ["action"] = "shockwave", }, { ["enabled"] = true, ["criteria"] = "talent.anger_management.enabled || talent.test_of_might.enabled & debuff.colossus_smash.up", ["action"] = "ignore_pain", }, { ["enabled"] = true, ["criteria"] = "talent.storm_of_swords.enabled & talent.battlelord.enabled & rage.pct > 80 & debuff.colossus_smash.up", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "charges = 2 & ! talent.battlelord.enabled & ( debuff.colossus_smash.down || rage.pct < 25 ) || talent.battlelord.enabled", ["action"] = "overpower", }, { ["enabled"] = true, ["criteria"] = "talent.storm_of_swords.enabled || talent.fervor_of_battle.enabled & active_enemies > 1", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "talent.battlelord.enabled & talent.blood_and_thunder.enabled", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "debuff.colossus_smash.down & rage.pct < 50 & ! talent.battlelord.enabled || rage.pct < 25", ["action"] = "overpower", }, { ["enabled"] = true, ["criteria"] = "buff.merciless_bonegrinder.up", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "set_bonus.tier29_2pc & ! talent.crushing_force.enabled", ["action"] = "cleave", }, { ["enabled"] = true, ["criteria"] = "rage > 30 & ( ! talent.fervor_of_battle.enabled || talent.fervor_of_battle.enabled & active_enemies = 1 )", ["action"] = "slam", }, { ["action"] = "bladestorm", ["enabled"] = true, }, { ["action"] = "arcane_torrent", ["enabled"] = true, }, { ["action"] = "cleave", ["enabled"] = true, }, { ["action"] = "wrecking_throw", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "remains < duration * 0.3", ["action"] = "rend", }, }, ["default"] = { { ["enabled"] = true, ["criteria"] = "time <= 0.5 || movement.distance > 8", ["action"] = "charge", }, { ["action"] = "pummel", ["enabled"] = true, }, { ["action"] = "spell_reflection", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "gcd.remains = 0 & debuff.colossus_smash.remains > 8 || boss & fight_remains < 25", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "cooldown.avatar.remains < 3", ["action"] = "algethar_puzzle_box", }, { ["enabled"] = true, ["criteria"] = "buff.avatar.up", ["action"] = "vial_of_animated_blood", }, { ["enabled"] = true, ["criteria"] = "buff.avatar.up", ["action"] = "irideus_fragment", }, { ["enabled"] = true, ["criteria"] = "! buff.avatar.up & ! debuff.colossus_smash.up", ["action"] = "manic_grieftorch", }, { ["enabled"] = true, ["criteria"] = "gcd.remains = 0 & debuff.colossus_smash.remains > 8 || boss & fight_remains < 25", ["action"] = "gladiators_badge", }, { ["action"] = "use_items", ["enabled"] = true, }, { ["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"] = "debuff.colossus_smash.remains > 6", ["action"] = "berserking", }, { ["enabled"] = true, ["criteria"] = "debuff.colossus_smash.up", ["action"] = "ancestral_call", }, { ["enabled"] = true, ["criteria"] = "debuff.colossus_smash.up", ["action"] = "blood_fury", }, { ["enabled"] = true, ["criteria"] = "debuff.colossus_smash.up", ["action"] = "ancestral_call", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "raid_event.adds.exists || active_enemies > 2", ["list_name"] = "hac", }, { ["enabled"] = true, ["action"] = "call_action_list", ["cycle_targets"] = 1, ["strict"] = 1, ["criteria"] = "( talent.massacre.enabled & target.health.pct < 35 ) || target.health.pct < 20", ["list_name"] = "execute", }, { ["enabled"] = true, ["action"] = "run_action_list", ["strict"] = 1, ["criteria"] = "! raid_event.adds.exists", ["list_name"] = "single_target", }, }, ["precombat"] = { { ["action"] = "battle_stance", ["enabled"] = true, }, { ["action"] = "battle_shout", ["enabled"] = true, }, { ["enabled"] = true, ["name"] = "algethar_puzzle_box", ["action"] = "algethar_puzzle_box", }, }, ["execute"] = { { ["enabled"] = true, ["criteria"] = "spell_targets.whirlwind > 1", ["action"] = "sweeping_strikes", }, { ["enabled"] = true, ["criteria"] = "remains <= gcd.max & ( ! talent.warbreaker.enabled & cooldown.colossus_smash.remains < 4 || talent.warbreaker.enabled & cooldown.warbreaker.remains < 4 ) & target.time_to_die > 12", ["action"] = "rend", }, { ["enabled"] = true, ["criteria"] = "cooldown.colossus_smash.ready || debuff.colossus_smash.up || boss & fight_remains < 20", ["action"] = "avatar", }, { ["action"] = "warbreaker", ["enabled"] = true, }, { ["action"] = "colossus_smash", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.test_of_might.up || ! talent.test_of_might.enabled & debuff.colossus_smash.up", ["action"] = "thunderous_roar", }, { ["enabled"] = true, ["criteria"] = "debuff.colossus_smash.up || buff.test_of_might.up", ["action"] = "spear_of_bastion", }, { ["enabled"] = true, ["criteria"] = "rage < 40", ["action"] = "skullsplitter", }, { ["enabled"] = true, ["criteria"] = "spell_targets.whirlwind > 2 & dot.deep_wounds.remains < gcd.max", ["action"] = "cleave", }, { ["enabled"] = true, ["criteria"] = "rage < 40 & buff.martial_prowess.stack < 2", ["action"] = "overpower", }, { ["enabled"] = true, ["criteria"] = "debuff.executioners_precision.stack = 2 || dot.deep_wounds.remains <= gcd.max", ["action"] = "mortal_strike", }, { ["action"] = "execute", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "talent.sonic_boom.enabled", ["action"] = "shockwave", }, { ["action"] = "overpower", ["enabled"] = true, }, { ["action"] = "bladestorm", ["enabled"] = true, }, }, ["hac"] = { { ["enabled"] = true, ["criteria"] = "buff.juggernaut.up & buff.juggernaut.remains < gcd.max", ["action"] = "execute", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 2 & talent.thunder_clap.enabled & talent.blood_and_thunder.enabled & talent.rend.enabled & dot.rend.remains <= dot.rend.duration * 0.3", ["action"] = "thunder_clap", }, { ["enabled"] = true, ["criteria"] = "active_enemies >= 2 & ( cooldown.bladestorm.remains > 15 || ! talent.bladestorm.enabled )", ["action"] = "sweeping_strikes", }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1 & remains <= gcd.max & ( target.health.pct > 20 || talent.massacre.enabled & target.health.pct > 35 ) || talent.tide_of_blood.enabled & cooldown.skullsplitter.remains <= gcd.max & ( cooldown.colossus_smash.remains <= gcd.max || debuff.colossus_smash.up ) & dot.rend.remains < dot.rend.duration * 0.85", ["action"] = "rend", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 15 || talent.blademasters_torment.enabled & active_enemies > 1 || target.time_to_die < 20", ["action"] = "avatar", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 22 || active_enemies > 1", ["action"] = "warbreaker", }, { ["enabled"] = true, ["action"] = "colossus_smash", ["criteria"] = "( target.health.pct < 20 || talent.massacre.enabled & target.health.pct < 35 )", ["cycle_targets"] = 1, }, { ["action"] = "colossus_smash", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( buff.test_of_might.up || ! talent.test_of_might.enabled & debuff.colossus_smash.up ) & raid_event.adds.in > 15 || active_enemies > 1 & dot.deep_wounds.remains", ["action"] = "thunderous_roar", }, { ["enabled"] = true, ["criteria"] = "( buff.test_of_might.up || ! talent.test_of_might.enabled & debuff.colossus_smash.up ) & raid_event.adds.in > 15", ["action"] = "spear_of_bastion", }, { ["enabled"] = true, ["criteria"] = "talent.unhinged.enabled & ( buff.test_of_might.up || ! talent.test_of_might.enabled & debuff.colossus_smash.up )", ["action"] = "bladestorm", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1 & ( buff.test_of_might.up || ! talent.test_of_might.enabled & debuff.colossus_smash.up ) & raid_event.adds.in > 30 || active_enemies > 1 & dot.deep_wounds.remains", ["action"] = "bladestorm", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 2 || ! talent.battlelord.enabled & buff.merciless_bonegrinder.up & cooldown.mortal_strike.remains > gcd.max", ["action"] = "cleave", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 2 || talent.storm_of_swords.enabled & ( buff.merciless_bonegrinder.up || buff.hurricane.up )", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "rage < 40 || talent.tide_of_blood.enabled & dot.rend.remains & ( buff.sweeping_strikes.up & active_enemies >= 2 || debuff.colossus_smash.up || buff.test_of_might.up )", ["action"] = "skullsplitter", }, { ["enabled"] = true, ["criteria"] = "set_bonus.tier30_4pc", ["action"] = "mortal_strike", }, { ["enabled"] = true, ["criteria"] = "buff.sweeping_strikes.up & talent.dreadnaught.enabled", ["action"] = "overpower", }, { ["enabled"] = true, ["action"] = "mortal_strike", ["criteria"] = "debuff.executioners_precision.stack = 2 || dot.deep_wounds.remains <= gcd.max || talent.dreadnaught.enabled & talent.battlelord.enabled & active_enemies <= 2", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "execute", ["criteria"] = "buff.sudden_death.react || active_enemies <= 2 & ( target.health.pct < 20 || talent.massacre.enabled & target.health.pct < 35 ) || buff.sweeping_strikes.up", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 15", ["action"] = "thunderous_roar", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 2 & talent.sonic_boom.enabled", ["action"] = "shockwave", }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1 & ( charges = 2 & ! talent.battlelord.enabled & ( debuff.colossus_smash.down || rage.pct < 25 ) || talent.battlelord.enabled )", ["action"] = "overpower", }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1 & ! talent.battlelord.enabled & rage.pct > 70", ["action"] = "slam", }, { ["enabled"] = true, ["criteria"] = "charges = 2 & ( ! talent.test_of_might.enabled || talent.test_of_might.enabled & debuff.colossus_smash.down || talent.battlelord.enabled ) || rage < 70", ["action"] = "overpower", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 2", ["action"] = "thunder_clap", }, { ["action"] = "mortal_strike", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1 & dot.rend.remains < duration * 0.3", ["action"] = "rend", }, { ["enabled"] = true, ["criteria"] = "talent.storm_of_swords.enabled || talent.fervor_of_battle.enabled & active_enemies > 1", ["action"] = "whirlwind", }, { ["enabled"] = true, ["criteria"] = "! talent.crushing_force.enabled", ["action"] = "cleave", }, { ["enabled"] = true, ["criteria"] = "talent.battlelord.enabled & talent.anger_management.enabled & rage > 30 & ( target.health.pct > 20 || talent.massacre.enabled & target.health.pct > 35 )", ["action"] = "ignore_pain", }, { ["enabled"] = true, ["criteria"] = "talent.crushing_force.enabled & rage > 30 & ( talent.fervor_of_battle.enabled & active_enemies = 1 || ! talent.fervor_of_battle.enabled )", ["action"] = "slam", }, { ["enabled"] = true, ["criteria"] = "talent.sonic_boom.enabled", ["action"] = "shockwave", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 30", ["action"] = "bladestorm", }, { ["action"] = "wrecking_throw", ["enabled"] = true, }, }, }, ["version"] = 20230520, ["warnings"] = "The import for 'single_target' required some automated changes.\nLine 3: Converted 'talent.tide_of_blood' to 'talent.tide_of_blood.enabled' (1x).\nLine 4: Converted 'talent.warlords_torment' to 'talent.warlords_torment.enabled' (1x).\nLine 4: Converted 'talent.warlords_torment' to 'talent.warlords_torment.enabled' (1x).\nLine 8: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 8: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 9: Converted 'talent.hurricane' to 'talent.hurricane.enabled' (1x).\nLine 9: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 9: Converted 'talent.unhinged' to 'talent.unhinged.enabled' (1x).\nLine 9: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 10: Converted 'talent.tide_of_blood' to 'talent.tide_of_blood.enabled' (1x).\nLine 10: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 13: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 13: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 14: Converted 'talent.storm_of_swords' to 'talent.storm_of_swords.enabled' (1x).\nLine 14: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 15: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 15: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 16: Converted 'talent.storm_of_swords' to 'talent.storm_of_swords.enabled' (1x).\nLine 16: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 17: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 17: Converted 'talent.blood_and_thunder' to 'talent.blood_and_thunder.enabled' (1x).\nLine 18: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 20: Converted 'talent.crushing_force' to 'talent.crushing_force.enabled' (1x).\nLine 21: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 21: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\n\nThe import for 'execute' required some automated changes.\nLine 2: Converted 'talent.warbreaker' to 'talent.warbreaker.enabled' (1x).\nLine 2: Converted 'talent.warbreaker' to 'talent.warbreaker.enabled' (1x).\nLine 6: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 13: Converted 'talent.sonic_boom' to 'talent.sonic_boom.enabled' (1x).\n\nThe import for 'hac' required some automated changes.\nLine 2: Converted 'talent.thunder_clap' to 'talent.thunder_clap.enabled' (1x).\nLine 2: Converted 'talent.blood_and_thunder' to 'talent.blood_and_thunder.enabled' (1x).\nLine 2: Converted 'talent.rend' to 'talent.rend.enabled' (1x).\nLine 3: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 4: Converted 'talent.massacre' to 'talent.massacre.enabled' (1x).\nLine 4: Converted 'talent.tide_of_blood' to 'talent.tide_of_blood.enabled' (1x).\nLine 5: Converted 'talent.blademasters_torment' to 'talent.blademasters_torment.enabled' (1x).\nLine 7: Converted 'talent.massacre' to 'talent.massacre.enabled' (1x).\nLine 9: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 10: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 11: Converted 'talent.unhinged' to 'talent.unhinged.enabled' (1x).\nLine 11: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 12: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 13: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 14: Converted 'talent.storm_of_swords' to 'talent.storm_of_swords.enabled' (1x).\nLine 15: Converted 'talent.tide_of_blood' to 'talent.tide_of_blood.enabled' (1x).\nLine 17: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\nLine 18: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\nLine 18: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 19: Converted 'talent.massacre' to 'talent.massacre.enabled' (1x).\nLine 21: Converted 'talent.sonic_boom' to 'talent.sonic_boom.enabled' (1x).\nLine 22: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 22: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 23: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 24: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 24: Converted 'talent.test_of_might' to 'talent.test_of_might.enabled' (1x).\nLine 24: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 28: Converted 'talent.storm_of_swords' to 'talent.storm_of_swords.enabled' (1x).\nLine 28: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 29: Converted 'talent.crushing_force' to 'talent.crushing_force.enabled' (1x).\nLine 30: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 30: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 30: Converted 'talent.massacre' to 'talent.massacre.enabled' (1x).\nLine 31: Converted 'talent.crushing_force' to 'talent.crushing_force.enabled' (1x).\nLine 31: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 31: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 32: Converted 'talent.sonic_boom' to 'talent.sonic_boom.enabled' (1x).\n\nImported 5 action lists.\n", ["profile"] = "actions.precombat+=/battle_stance\nactions.precombat+=/battle_shout\nactions.precombat+=/use_item,name=algethar_puzzle_box\n\nactions+=/charge,if=time<=0.5||movement.distance>8\nactions+=/pummel\nactions+=/spell_reflection\nactions+=/potion,if=gcd.remains=0&debuff.colossus_smash.remains>8||boss&fight_remains<25\nactions+=/algethar_puzzle_box,if=cooldown.avatar.remains<3\nactions+=/vial_of_animated_blood,if=buff.avatar.up\nactions+=/irideus_fragment,if=buff.avatar.up\nactions+=/manic_grieftorch,if=!buff.avatar.up&!debuff.colossus_smash.up\nactions+=/gladiators_badge,if=gcd.remains=0&debuff.colossus_smash.remains>8||boss&fight_remains<25\nactions+=/use_items\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=debuff.colossus_smash.remains>6\nactions+=/ancestral_call,if=debuff.colossus_smash.up\nactions+=/blood_fury,if=debuff.colossus_smash.up\nactions+=/ancestral_call,if=debuff.colossus_smash.up\nactions+=/run_action_list,name=hac,strict=1,if=raid_event.adds.exists||active_enemies>2\nactions+=/call_action_list,name=execute,cycle_targets=1,strict=1,if=(talent.massacre.enabled&target.health.pct<35)||target.health.pct<20\nactions+=/run_action_list,name=single_target,strict=1,if=!raid_event.adds.exists\n\nactions.execute+=/sweeping_strikes,if=spell_targets.whirlwind>1\nactions.execute+=/rend,if=remains<=gcd&(!talent.warbreaker&cooldown.colossus_smash.remains<4||talent.warbreaker&cooldown.warbreaker.remains<4)&target.time_to_die>12\nactions.execute+=/avatar,if=cooldown.colossus_smash.ready||debuff.colossus_smash.up||boss&fight_remains<20\nactions.execute+=/warbreaker\nactions.execute+=/colossus_smash\nactions.execute+=/thunderous_roar,if=buff.test_of_might.up||!talent.test_of_might&debuff.colossus_smash.up\nactions.execute+=/spear_of_bastion,if=debuff.colossus_smash.up||buff.test_of_might.up\nactions.execute+=/skullsplitter,if=rage<40\nactions.execute+=/cleave,if=spell_targets.whirlwind>2&dot.deep_wounds.remains2&talent.thunder_clap&talent.blood_and_thunder&talent.rend&dot.rend.remains<=dot.rend.duration*0.3\nactions.hac+=/sweeping_strikes,if=active_enemies>=2&(cooldown.bladestorm.remains>15||!talent.bladestorm)\nactions.hac+=/rend,if=active_enemies=1&remains<=gcd&(target.health.pct>20||talent.massacre&target.health.pct>35)||talent.tide_of_blood&cooldown.skullsplitter.remains<=gcd&(cooldown.colossus_smash.remains<=gcd||debuff.colossus_smash.up)&dot.rend.remains15||talent.blademasters_torment&active_enemies>1||target.time_to_die<20\nactions.hac+=/warbreaker,if=raid_event.adds.in>22||active_enemies>1\nactions.hac+=/colossus_smash,cycle_targets=1,if=(target.health.pct<20||talent.massacre&target.health.pct<35)\nactions.hac+=/colossus_smash\nactions.hac+=/thunderous_roar,if=(buff.test_of_might.up||!talent.test_of_might&debuff.colossus_smash.up)&raid_event.adds.in>15||active_enemies>1&dot.deep_wounds.remains\nactions.hac+=/spear_of_bastion,if=(buff.test_of_might.up||!talent.test_of_might&debuff.colossus_smash.up)&raid_event.adds.in>15\nactions.hac+=/bladestorm,if=talent.unhinged&(buff.test_of_might.up||!talent.test_of_might&debuff.colossus_smash.up)\nactions.hac+=/bladestorm,if=active_enemies>1&(buff.test_of_might.up||!talent.test_of_might&debuff.colossus_smash.up)&raid_event.adds.in>30||active_enemies>1&dot.deep_wounds.remains\nactions.hac+=/cleave,if=active_enemies>2||!talent.battlelord&buff.merciless_bonegrinder.up&cooldown.mortal_strike.remains>gcd\nactions.hac+=/whirlwind,if=active_enemies>2||talent.storm_of_swords&(buff.merciless_bonegrinder.up||buff.hurricane.up)\nactions.hac+=/skullsplitter,if=rage<40||talent.tide_of_blood&dot.rend.remains&(buff.sweeping_strikes.up&active_enemies>=2||debuff.colossus_smash.up||buff.test_of_might.up)\nactions.hac+=/mortal_strike,if=buff.sweeping_strikes.up&buff.crushing_advance.stack=3,if=set_bonus.tier30_4pc\nactions.hac+=/overpower,if=buff.sweeping_strikes.up&talent.dreadnaught\nactions.hac+=/mortal_strike,cycle_targets=1,if=debuff.executioners_precision.stack=2||dot.deep_wounds.remains<=gcd||talent.dreadnaught&talent.battlelord&active_enemies<=2\nactions.hac+=/execute,cycle_targets=1,if=buff.sudden_death.react||active_enemies<=2&(target.health.pct<20||talent.massacre&target.health.pct<35)||buff.sweeping_strikes.up\nactions.hac+=/thunderous_roar,if=raid_event.adds.in>15\nactions.hac+=/shockwave,if=active_enemies>2&talent.sonic_boom\nactions.hac+=/overpower,if=active_enemies=1&(charges=2&!talent.battlelord&(debuff.colossus_smash.down||rage.pct<25)||talent.battlelord)\nactions.hac+=/slam,if=active_enemies=1&!talent.battlelord&rage.pct>70\nactions.hac+=/overpower,if=charges=2&(!talent.test_of_might||talent.test_of_might&debuff.colossus_smash.down||talent.battlelord)||rage<70\nactions.hac+=/thunder_clap,if=active_enemies>2\nactions.hac+=/mortal_strike\nactions.hac+=/rend,if=active_enemies=1&dot.rend.remains1\nactions.hac+=/cleave,if=!talent.crushing_force\nactions.hac+=/ignore_pain,if=talent.battlelord&talent.anger_management&rage>30&(target.health.pct>20||talent.massacre&target.health.pct>35)\nactions.hac+=/slam,if=talent.crushing_force&rage>30&(talent.fervor_of_battle&active_enemies=1||!talent.fervor_of_battle)\nactions.hac+=/shockwave,if=talent.sonic_boom\nactions.hac+=/bladestorm,if=raid_event.adds.in>30\nactions.hac+=/wrecking_throw\n\nactions.single_target+=/sweeping_strikes,if=spell_targets.whirlwind>1\nactions.single_target+=/mortal_strike\nactions.single_target+=/rend,if=remains<=gcd||talent.tide_of_blood&cooldown.skullsplitter.remains<=gcd&(cooldown.colossus_smash.remains<=gcd||debuff.colossus_smash.up)&dot.rend.remainsgcd*4&buff.test_of_might.up||!talent.test_of_might&cooldown.colossus_smash.remains>gcd*4)||rage<30\nactions.single_target+=/execute,if=buff.sudden_death.react\nactions.single_target+=/shockwave,if=talent.sonic_boom.enabled\nactions.single_target+=/ignore_pain,if=talent.anger_management||talent.test_of_might&debuff.colossus_smash.up\nactions.single_target+=/whirlwind,if=talent.storm_of_swords&talent.battlelord&rage.pct>80&debuff.colossus_smash.up\nactions.single_target+=/overpower,if=charges=2&!talent.battlelord&(debuff.colossus_smash.down||rage.pct<25)||talent.battlelord\nactions.single_target+=/whirlwind,if=talent.storm_of_swords||talent.fervor_of_battle&active_enemies>1\nactions.single_target+=/thunder_clap,if=talent.battlelord&talent.blood_and_thunder\nactions.single_target+=/overpower,if=debuff.colossus_smash.down&rage.pct<50&!talent.battlelord||rage.pct<25\nactions.single_target+=/whirlwind,if=buff.merciless_bonegrinder.up\nactions.single_target+=/cleave,if=set_bonus.tier29_2pc&!talent.crushing_force\nactions.single_target+=/slam,if=rage>30&(!talent.fervor_of_battle||talent.fervor_of_battle&active_enemies=1)\nactions.single_target+=/bladestorm\nactions.single_target+=/arcane_torrent\nactions.single_target+=/cleave\nactions.single_target+=/wrecking_throw\nactions.single_target+=/rend,if=remains Pyroblast hardcast scenario.\n\n2023-04-02: Revise Scorch > Pyroblast to check Hot Streak.", ["lists"] = { ["combustion_cooldowns"] = { { ["action"] = "potion", ["enabled"] = true, }, { ["action"] = "blood_fury", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.combustion.up", ["action"] = "berserking", }, { ["action"] = "fireblood", ["enabled"] = true, }, { ["action"] = "ancestral_call", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( talent.temporal_warp.enabled || runeforge.temporal_warp.enabled ) & debuff.sated.up", ["action"] = "time_warp", }, { ["enabled"] = true, ["action"] = "gladiators_badge", ["effect_name"] = "gladiators_badge", }, { ["enabled"] = true, ["name"] = "irideus_fragment", ["action"] = "irideus_fragment", }, { ["enabled"] = true, ["name"] = "spoils_of_neltharus", ["action"] = "spoils_of_neltharus", }, { ["enabled"] = true, ["name"] = "tome_of_unstable_power", ["action"] = "tome_of_unstable_power", }, { ["enabled"] = true, ["name"] = "timebreaching_talon", ["action"] = "timebreaching_talon", }, { ["enabled"] = true, ["name"] = "voidmenders_shadowgem", ["action"] = "voidmenders_shadowgem", }, { ["enabled"] = true, ["name"] = "horn_of_valor", ["action"] = "horn_of_valor", }, { ["enabled"] = true, ["name"] = "timethiefs_gambit", ["action"] = "timethiefs_gambit", }, { ["enabled"] = true, ["name"] = "balefire_branch", ["action"] = "balefire_branch", }, { ["enabled"] = true, ["name"] = "ashes_of_the_embersoul", ["action"] = "ashes_of_the_embersoul", }, { ["enabled"] = true, ["name"] = "mirror_of_fractured_tomorrows", ["action"] = "mirror_of_fractured_tomorrows", }, }, ["default"] = { { ["enabled"] = true, ["description"] = "Executed every time the actor is available.", ["action"] = "counterspell", }, { ["enabled"] = true, ["description"] = "The second Time Warp is usually best used immediately on pull with Temporal Warp so that it comes off cooldown earlier, this can sometimes be slightly worse if doing so will not result in additional Time Warp(s) throughout the encounter. Additionally, it should always be used at the end of the fight regardless of Combustion being ready if it is available.", ["criteria"] = "debuff.sated.up & talent.temporal_warp.enabled & ( firestarter.active || interpolated_fight_remains < buff.bloodlust.duration )", ["action"] = "time_warp", }, { ["enabled"] = true, ["criteria"] = "buff.potion.duration > variable.time_to_combustion + buff.combustion.duration", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "variable.time_to_combustion > action_cooldown - 5", ["action"] = "gladiators_badge", ["effect_name"] = "gladiators_badge", }, { ["enabled"] = true, ["criteria"] = "variable.time_to_combustion <= variable.empyreal_ordnance_delay & variable.time_to_combustion > variable.empyreal_ordnance_delay - 5", ["name"] = "empyreal_ordnance", ["action"] = "empyreal_ordnance", }, { ["enabled"] = true, ["criteria"] = "( variable.time_to_combustion <= variable.combustion_precast_time + 2 || fight_remains < variable.time_to_combustion ) & buff.combustion.down & ( ! equipped.the_first_sigil || cooldown.the_first_sigil_367241.remains > 40 )", ["name"] = "shadowed_orb_of_torment", ["action"] = "shadowed_orb_of_torment", }, { ["enabled"] = true, ["criteria"] = "variable.time_to_combustion <= 8 || fight_remains < variable.time_to_combustion", ["name"] = "grim_eclipse", ["action"] = "grim_eclipse", }, { ["enabled"] = true, ["name"] = "mirror_of_fractured_tomorrows", ["action"] = "mirror_of_fractured_tomorrows", ["criteria"] = "buff.combustion.up & buff.combustion.remains > 11", ["description"] = "New trinket and weapon lines need special line for Nymue trinket which would delay combustion under certain conditions?", }, { ["enabled"] = true, ["criteria"] = "buff.combustion.up", ["name"] = "timethiefs_gambit", ["action"] = "timethiefs_gambit", }, { ["enabled"] = true, ["criteria"] = "( variable.time_to_combustion <= 3 & buff.fury_of_the_sun_king.up ) || ( buff.combustion.up & buff.combustion.remains > 11 )", ["name"] = "balefire_branch", ["action"] = "balefire_branch", }, { ["enabled"] = true, ["criteria"] = "( variable.time_to_combustion <= 3 & buff.fury_of_the_sun_king.up ) || ( buff.combustion.up & buff.combustion.remains > 11 )", ["name"] = "ashes_of_the_embersoul", ["action"] = "ashes_of_the_embersoul", }, { ["enabled"] = true, ["criteria"] = "variable.time_to_combustion <= 9", ["name"] = "nymues_unraveling_spindle", ["action"] = "nymues_unraveling_spindle", }, { ["enabled"] = true, ["name"] = "dreambinder_loom_of_the_great_cycle", ["action"] = "dreambinder_loom_of_the_great_cycle", }, { ["enabled"] = true, ["name"] = "iridal_the_earths_master", ["slot"] = "main_hand", ["use_off_gcd"] = 1, ["description"] = "Iridal can and should be used while on the GCD", ["criteria"] = "gcd.remains >= 0.6 * gcd.max", ["action"] = "iridal_the_earths_master", }, { ["enabled"] = true, ["criteria"] = "( ! variable.steroid_trinket_equipped & buff.combustion.down ) || ( variable.steroid_trinket_equipped & trinket.t1.has_cooldown & trinket.t1.cooldown.remains > 20 & buff.combustion.down ) || ( variable.steroid_trinket_equipped & trinket.t2.has_cooldown & trinket.t2.cooldown.remains > 20 & buff.combustion.down )", ["name"] = "belorrelos_the_suncaller", ["action"] = "belorrelos_the_suncaller", }, { ["enabled"] = true, ["criteria"] = "! variable.item_cutoff_active", ["name"] = "glyph_of_assimilation", ["action"] = "glyph_of_assimilation", }, { ["enabled"] = true, ["criteria"] = "variable.time_to_combustion <= 5", ["name"] = "macabre_sheet_music", ["action"] = "macabre_sheet_music", }, { ["enabled"] = true, ["name"] = "dreadfire_vessel", ["action"] = "dreadfire_vessel", ["criteria"] = "! variable.item_cutoff_active & ( buff.infernal_cascade.stack = buff.infernal_cascade.max_stack || ! conduit.infernal_cascade.enabled || variable.combustion_on_use & ! ( runeforge.sun_kings_blessing.enabled || talent.sun_kings_blessing.enabled ) || variable.time_to_combustion > interpolated_fight_remains % ( action_cooldown + 10 ) )", ["description"] = "If using a steroid on-use item, always use Dreadfire Vessel outside of Combustion. Otherwise, prioritize using Dreadfire Vessel with Combustion only if Feel the Burn is enabled and a usage won't be lost over the duration of the fight. This adds a small value to the cooldown of Dreadfire Vessel when doing this calculation because it is unrealstic to assume that it will be used perfectly on cooldown. Note that with Sun King's Blessing, it is possible to sync this with SKB Combustions regardless of on-use trinkets.", }, { ["enabled"] = true, ["name"] = "inscrutable_quantum_device", ["action"] = "inscrutable_quantum_device", ["criteria"] = "equipped.gladiators_badge & ( buff.combustion.down & variable.time_to_combustion >= variable.on_use_cutoff || variable.on_use_cutoff = 0 )", ["description"] = "Items that do not benefit Combustion should just be used outside of Combustion at some point.", }, { ["enabled"] = true, ["criteria"] = "equipped.gladiators_badge & ! variable.item_cutoff_active", ["name"] = "flame_of_battle", ["action"] = "flame_of_battle", }, { ["enabled"] = true, ["criteria"] = "equipped.gladiators_badge & ! variable.item_cutoff_active", ["name"] = "wakeners_frond", ["action"] = "wakeners_frond", }, { ["enabled"] = true, ["criteria"] = "equipped.gladiators_badge & ! variable.item_cutoff_active", ["name"] = "instructors_divine_bell", ["action"] = "instructors_divine_bell", }, { ["enabled"] = true, ["criteria"] = "equipped.gladiators_badge & ! variable.item_cutoff_active", ["name"] = "sunblood_amethyst", ["action"] = "sunblood_amethyst", }, { ["enabled"] = true, ["criteria"] = "buff.scars_of_fraternal_strife_4.down", ["name"] = "scars_of_fraternal_strife", ["action"] = "scars_of_fraternal_strife", }, { ["enabled"] = true, ["criteria"] = "! variable.item_cutoff_active", ["action"] = "use_items", }, { ["enabled"] = true, ["description"] = "Use Frost Nova to trigger Grisly Icicle.", ["criteria"] = "runeforge.grisly_icicle.enabled & buff.combustion.down & ( variable.time_to_combustion > action_cooldown || variable.time_to_combustion < variable.combustion_precast_time + execute_time )", ["action"] = "frost_nova", }, { ["enabled"] = true, ["description"] = "Get the Disciplinary Command buff up, unless combustion is soon.", ["criteria"] = "runeforge.disciplinary_command.enabled & cooldown.buff_disciplinary_command.ready & buff.disciplinary_command_arcane.down & ! buff.disciplinary_command.up & ( variable.time_to_combustion + action.frostbolt.cast_time > cooldown.buff_disciplinary_command.duration || variable.time_to_combustion < 5 )", ["action"] = "counterspell", }, { ["enabled"] = true, ["criteria"] = "runeforge.disciplinary_command.enabled & cooldown.buff_disciplinary_command.ready & buff.disciplinary_command_arcane.down & ! buff.disciplinary_command.up & ( variable.time_to_combustion + execute_time + action.frostbolt.cast_time > cooldown.buff_disciplinary_command.duration || variable.time_to_combustion < 5 & ! talent.rune_of_power.enabled )", ["action"] = "arcane_explosion", }, { ["enabled"] = true, ["criteria"] = "runeforge.disciplinary_command.enabled & cooldown.buff_disciplinary_command.remains < cast_time & buff.disciplinary_command_frost.down & ! buff.disciplinary_command.up & ( variable.time_to_combustion + cast_time > cooldown.buff_disciplinary_command.duration || variable.time_to_combustion < 5 )", ["action"] = "frostbolt", }, { ["enabled"] = true, ["criteria"] = "runeforge.disciplinary_command.enabled & cooldown.buff_disciplinary_command.ready & buff.disciplinary_command_frost.down & ! buff.disciplinary_command.up & ( variable.time_to_combustion > cooldown.buff_disciplinary_command.duration || variable.time_to_combustion < 5 )", ["action"] = "frost_nova", }, { ["enabled"] = true, ["op"] = "set", ["description"] = "Pool as many Fire Blasts as possible for Combustion.", ["use_while_casting"] = 1, ["value"] = "buff.combustion.down & action.fire_blast.charges_fractional + ( variable.time_to_combustion + action.shifting_power.full_reduction * variable.shifting_power_before_combustion ) / cooldown.fire_blast.duration - 1 < cooldown.fire_blast.max_charges + variable.overpool_fire_blasts / cooldown.fire_blast.duration - ( buff.combustion.duration / cooldown.fire_blast.duration ) % 1 & variable.time_to_combustion < fight_remains", ["var_name"] = "fire_blast_pooling", ["use_off_gcd"] = 1, ["action"] = "variable", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "variable.time_to_combustion <= 0 || buff.combustion.up || variable.time_to_combustion < variable.combustion_precast_time & cooldown.combustion.remains < variable.combustion_precast_time", ["list_name"] = "combustion_phase", }, { ["enabled"] = true, ["use_while_casting"] = 1, ["description"] = "Adjust the variable that controls Fire Blast usage to save Fire Blasts while Searing Touch is active with Sun King's Blessing.", ["op"] = "set", ["criteria"] = "! variable.fire_blast_pooling & talent.sun_kings_blessing.enabled", ["value"] = "searing_touch.active & action.fire_blast.full_recharge_time > 3 * gcd.max", ["var_name"] = "fire_blast_pooling", ["action"] = "variable", ["use_off_gcd"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.combustion.down & ( action.fire_blast.charges = 0 || variable.fire_blast_pooling ) & ( ! improved_scorch.active || debuff.improved_scorch.remains > cast_time + action.scorch.cast_time & ! buff.fury_of_the_sun_king.up ) & ! buff.hot_streak.react & variable.shifting_power_before_combustion", ["action"] = "shifting_power", }, { ["enabled"] = true, ["use_while_casting"] = 1, ["criteria"] = "! variable.fire_blast_pooling & variable.time_to_combustion > 0 & active_enemies >= variable.hard_cast_flamestrike & ! firestarter.active & ! buff.hot_streak.react & ( buff.heating_up.react & action.flamestrike.execute_remains < 0.5 || charges_fractional >= 2 )", ["use_off_gcd"] = 1, ["description"] = "When Hardcasting Flamestrike, Fire Blasts should be used to generate Hot Streaks and to extend Feel the Burn.", ["action"] = "fire_blast", }, { ["enabled"] = true, ["action"] = "call_action_list", ["description"] = "During Firestarter, Fire Blasts are used similarly to during Combustion. Generally, they are used to generate Hot Streaks when crits will not be wasted and with Feel the Burn, they should be spread out to maintain the Feel the Burn buff.", ["criteria"] = "buff.combustion.down & firestarter.active & variable.time_to_combustion > 0", ["list_name"] = "firestarter_fire_blasts", }, { ["enabled"] = true, ["use_while_casting"] = 1, ["action"] = "fire_blast", ["criteria"] = "action.shifting_power.executing & full_recharge_time < action.shifting_power.tick_reduction", ["description"] = "Avoid capping Fire Blast charges while channeling Shifting Power", }, { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "variable.time_to_combustion > 0 & buff.combustion.down", ["list_name"] = "standard_rotation", }, { ["action"] = "scorch", ["enabled"] = true, }, }, ["precombat"] = { { ["action"] = "arcane_intellect", ["enabled"] = true, }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "equipped.gladiators_badge || equipped.irideus_fragment || equipped.erupting_spear_fragment || equipped.spoils_of_neltharus || equipped.timebreaching_talon || equipped.horn_of_valor || equipped.mirror_of_fractured_tomorrows || equipped.ashes_of_the_embersoul || equipped.balefire_branch || equipped.time_theifs_gambit || equipped.nymues_unraveling_spindle", ["var_name"] = "steroid_trinket_equipped", ["description"] = "defining a group of trinkets as Steroids", }, { ["enabled"] = true, ["criteria"] = "! variable.combustion_on_use & ! equipped.dreadfire_vessel & ( ! talent.firestarter.enabled || variable.firestarter_combustion )", ["name"] = "soul_igniter", ["action"] = "soul_igniter", }, { ["enabled"] = true, ["criteria"] = "! equipped.the_first_sigil", ["name"] = "shadowed_orb_of_torment", ["action"] = "shadowed_orb_of_torment", }, { ["action"] = "mirror_image", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "active_enemies >= variable.hot_streak_flamestrike", ["action"] = "flamestrike", }, { ["action"] = "pyroblast", ["enabled"] = true, }, }, ["firestarter_fire_blasts"] = { { ["enabled"] = true, ["use_while_casting"] = 1, ["action"] = "fire_blast", ["criteria"] = "! variable.fire_blast_pooling & ! buff.hot_streak.react & ( action.fireball.execute_remains > gcd.remains || action.pyroblast.executing ) & buff.heating_up.react + hot_streak_spells_in_flight = 1 & ( cooldown.shifting_power.ready || charges > 1 || buff.feel_the_burn.remains < 2 * gcd.max )", ["description"] = "While casting Fireball or Pyroblast, convert Heating Up to a Hot Streak!", }, { ["enabled"] = true, ["criteria"] = "! variable.fire_blast_pooling & buff.heating_up.react + hot_streak_spells_in_flight = 1 & ( talent.feel_the_burn.enabled & buff.feel_the_burn.remains < gcd.remains || cooldown.shifting_power.ready & ( ! set_bonus.tier30_2pc || debuff.charring_embers.remains > 2 * gcd.max ) )", ["use_off_gcd"] = 1, ["description"] = "If not casting anything, use Fire Blast to trigger Hot Streak! only if Feel the Burn is talented and would expire before the GCD ends or if Shifting Power is available.", ["action"] = "fire_blast", }, }, ["active_talents"] = { { ["enabled"] = true, ["criteria"] = "active_enemies > 1 & buff.combustion.down & ( variable.time_to_combustion > cooldown.living_bomb.duration || variable.time_to_combustion <= 0 )", ["action"] = "living_bomb", }, { ["enabled"] = true, ["criteria"] = "variable.time_to_combustion <= 0 || buff.combustion.remains > travel_time || ! talent.sun_kings_blessing.enabled & ( cooldown.meteor.duration < variable.time_to_combustion || fight_remains < variable.time_to_combustion )", ["action"] = "meteor", }, { ["enabled"] = true, ["description"] = "With Alexstrasza's Fury when Combustion is not active, Dragon's Breath should be used to convert Heating Up to a Hot Streak.", ["criteria"] = "talent.alexstraszas_fury.enabled & ( buff.combustion.down & ! buff.hot_streak.react ) & ( buff.feel_the_burn.up || time > 15 ) & ( ! improved_scorch.active ) & ! firestarter.remains & ! talent.tempered_flames.enabled", ["action"] = "dragons_breath", }, { ["enabled"] = true, ["criteria"] = "talent.alexstraszas_fury.enabled & ( buff.combustion.down & ! buff.hot_streak.react ) & ( buff.feel_the_burn.up || time > 15 ) & ( ! improved_scorch.active ) & talent.tempered_flames.enabled", ["action"] = "dragons_breath", }, }, ["standard_rotation"] = { { ["enabled"] = true, ["criteria"] = "active_enemies >= variable.hot_streak_flamestrike & ( buff.hot_streak.react || ( buff.firestorm.react || buff.hyperthermia.react ) )", ["action"] = "flamestrike", }, { ["enabled"] = true, ["criteria"] = "buff.hyperthermia.react", ["action"] = "pyroblast", }, { ["enabled"] = true, ["criteria"] = "buff.hot_streak.react & ( buff.hot_streak.remains < action.fireball.execute_time )", ["action"] = "pyroblast", }, { ["enabled"] = true, ["criteria"] = "buff.hot_streak.react & ( hot_streak_spells_in_flight || firestarter.active || talent.alexstraszas_fury.enabled & action.phoenix_flames.charges )", ["action"] = "pyroblast", }, { ["enabled"] = true, ["criteria"] = "buff.hot_streak.react & searing_touch.active", ["action"] = "pyroblast", }, { ["enabled"] = true, ["criteria"] = "active_enemies >= variable.skb_flamestrike & buff.fury_of_the_sun_king.up & buff.fury_of_the_sun_king.expiration_delay_remains = 0", ["action"] = "flamestrike", }, { ["enabled"] = true, ["criteria"] = "improved_scorch.active & debuff.improved_scorch.remains < action.pyroblast.cast_time + 5 * gcd.max & buff.fury_of_the_sun_king.up & ! action.scorch.in_flight", ["action"] = "scorch", }, { ["enabled"] = true, ["criteria"] = "buff.fury_of_the_sun_king.up & buff.fury_of_the_sun_king.expiration_delay_remains = 0", ["action"] = "pyroblast", }, { ["enabled"] = true, ["criteria"] = "buff.hot_streak.react & searing_touch.active", ["action"] = "pyroblast", }, { ["enabled"] = true, ["use_while_casting"] = 1, ["criteria"] = "! firestarter.active & ! variable.fire_blast_pooling & buff.fury_of_the_sun_king.down & ( ( ( action.fireball.executing & ( action.fireball.execute_remains < 0.5 || ! talent.hyperthermia.enabled ) || action.pyroblast.executing & ( action.pyroblast.execute_remains < 0.5 || ! talent.hyperthermia.enabled ) ) & buff.heating_up.react ) || ( searing_touch.active & ( ! improved_scorch.active || debuff.improved_scorch.stack = debuff.improved_scorch.max_stack || full_recharge_time < 3 ) & ( buff.heating_up.react & ! action.scorch.executing || ! buff.hot_streak.react & ! buff.heating_up.react & action.scorch.executing & ! hot_streak_spells_in_flight ) ) )", ["use_off_gcd"] = 1, ["description"] = "During the standard rotation, only use Fire Blasts when they are not being pooled for RoP or Combustion. Use Fire Blast either during a Fireball/Pyroblast cast when Heating Up is active or during execute with Searing Touch.", ["action"] = "fire_blast", }, { ["enabled"] = true, ["description"] = "Modified, changed to Hot Streak to avoid hardcasted Pyroblasts.", ["criteria"] = "prev_gcd.1.scorch & buff.hot_streak.react & searing_touch.active & active_enemies < variable.hot_streak_flamestrike", ["action"] = "pyroblast", }, { ["enabled"] = true, ["criteria"] = "improved_scorch.active & debuff.improved_scorch.remains < 4 * gcd.max", ["action"] = "scorch", }, { ["enabled"] = true, ["criteria"] = "talent.alexstraszas_fury.enabled & ( ! talent.feel_the_burn.enabled || buff.feel_the_burn.remains < 2 * gcd.max )", ["action"] = "phoenix_flames", }, { ["enabled"] = true, ["criteria"] = "set_bonus.tier30_2pc & debuff.charring_embers.remains < 2 * gcd.max & ! buff.hot_streak.react", ["action"] = "phoenix_flames", }, { ["enabled"] = true, ["criteria"] = "improved_scorch.active & debuff.improved_scorch.stack < debuff.improved_scorch.max_stack", ["action"] = "scorch", }, { ["enabled"] = true, ["criteria"] = "! talent.alexstraszas_fury.enabled & ! buff.hot_streak.react & ! variable.phoenix_pooling & buff.flames_fury.up", ["action"] = "phoenix_flames", }, { ["enabled"] = true, ["criteria"] = "talent.alexstraszas_fury.enabled & ! buff.hot_streak.react & hot_streak_spells_in_flight = 0 & ( ! variable.phoenix_pooling & buff.flames_fury.up || charges_fractional > 2.5 || charges_fractional > 1.5 & ( ! talent.feel_the_burn.enabled || buff.feel_the_burn.remains < 3 * gcd.max ) )", ["action"] = "phoenix_flames", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "active_talents", }, { ["enabled"] = true, ["description"] = "Dragon's Breath is no longer a gain to be cast unless Alexstrazas is talented (need to check cutoff, was true on 10t)", ["criteria"] = "active_enemies > 1 & talent.alexstraszas_fury.enabled", ["action"] = "dragons_breath", }, { ["enabled"] = true, ["criteria"] = "searing_touch.active", ["action"] = "scorch", }, { ["enabled"] = true, ["criteria"] = "active_enemies >= variable.arcane_explosion & mana.pct >= variable.arcane_explosion_mana", ["action"] = "arcane_explosion", }, { ["enabled"] = true, ["description"] = "With enough targets, it is a gain to cast Flamestrike as filler instead of Fireball.", ["criteria"] = "active_enemies >= variable.hard_cast_flamestrike", ["action"] = "flamestrike", }, { ["enabled"] = true, ["criteria"] = "talent.tempered_flames.enabled & ! buff.flame_accelerant.react", ["action"] = "pyroblast", }, { ["action"] = "fireball", ["enabled"] = true, }, }, ["combustion_phase"] = { { ["enabled"] = true, ["criteria"] = "buff.combustion.down", ["action"] = "lights_judgment", }, { ["enabled"] = true, ["criteria"] = "buff.combustion.down", ["action"] = "bag_of_tricks", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1 & buff.combustion.down", ["action"] = "living_bomb", }, { ["enabled"] = true, ["action"] = "call_action_list", ["description"] = "Other cooldowns that should be used with Combustion should only be used with an actual Combustion cast and not with a Sun King's Blessing proc.", ["criteria"] = "buff.combustion.remains > variable.skb_duration || fight_remains < 20", ["list_name"] = "combustion_cooldowns", }, { ["enabled"] = true, ["criteria"] = "prev.1.fire_blast + prev.2.fire_blast + prev.3.fire_blast >= 2 & action.fire_blast.charges = 0", ["name"] = "hyperthread_wristwraps", ["action"] = "hyperthread_wristwraps", }, { ["enabled"] = true, ["criteria"] = "variable.time_to_combustion > 60", ["name"] = "neural_synapse_enhancer", ["action"] = "neural_synapse_enhancer", }, { ["enabled"] = true, ["description"] = "In Charring embers is not up before Combustion, make sure to apply it.", ["criteria"] = "buff.combustion.down & set_bonus.tier30_2pc & ! action.phoenix_flames.in_flight & debuff.charring_embers.remains < 4 * gcd.max & ! buff.hot_streak.react", ["action"] = "phoenix_flames", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "active_talents", }, { ["enabled"] = true, ["description"] = "If Combustion is down, precast something before activating it.", ["criteria"] = "buff.combustion.down & buff.fury_of_the_sun_king.up & buff.fury_of_the_sun_king.remains > cast_time & buff.fury_of_the_sun_king.expiration_delay_remains = 0 & cooldown.combustion.remains < cast_time & active_enemies >= variable.skb_flamestrike", ["action"] = "flamestrike", }, { ["enabled"] = true, ["criteria"] = "buff.combustion.down & buff.fury_of_the_sun_king.up & buff.fury_of_the_sun_king.remains > cast_time & buff.fury_of_the_sun_king.expiration_delay_remains = 0", ["action"] = "pyroblast", }, { ["enabled"] = true, ["criteria"] = "buff.combustion.down & cooldown.combustion.remains < cast_time & active_enemies < 2 & ! improved_scorch.active", ["action"] = "fireball", }, { ["enabled"] = true, ["criteria"] = "buff.combustion.down & cooldown.combustion.remains < cast_time", ["action"] = "scorch", }, { ["enabled"] = true, ["use_while_casting"] = 1, ["criteria"] = "hot_streak_spells_in_flight = 0 & buff.combustion.down & variable.time_to_combustion <= 0 & ( action.scorch.executing & action.scorch.execute_remains < variable.combustion_cast_remains || action.fireball.executing & action.fireball.execute_remains < variable.combustion_cast_remains || action.pyroblast.executing & action.pyroblast.execute_remains < variable.combustion_cast_remains || action.flamestrike.executing & action.flamestrike.execute_remains < variable.combustion_cast_remains || action.meteor.in_flight & action.meteor.in_flight_remains < variable.combustion_cast_remains )", ["use_off_gcd"] = 1, ["description"] = "Combustion should be used when the precast is almost finished or when Meteor is about to land.", ["action"] = "combustion", }, { ["enabled"] = true, ["use_while_casting"] = 1, ["criteria"] = "! variable.fire_blast_pooling & ( ! improved_scorch.active || action.scorch.executing || debuff.improved_scorch.remains > 4 * gcd.max ) & ( buff.fury_of_the_sun_king.down || action.pyroblast.executing ) & buff.combustion.up & ! buff.hyperthermia.react & ! buff.hot_streak.react & hot_streak_spells_in_flight + buff.heating_up.react * ( gcd.remains > 0 ) < 2", ["use_off_gcd"] = 1, ["description"] = "Without Feel the Burn, just use Fire Blasts when they won't munch crits and when Firestorm is down.", ["action"] = "fire_blast", }, { ["enabled"] = true, ["description"] = "Spend Hot Streaks during Combustion at high priority.", ["criteria"] = "( buff.hot_streak.react & active_enemies >= variable.combustion_flamestrike ) || ( ( buff.firestorm.react || buff.hyperthermia.react ) & active_enemies >= variable.combustion_flamestrike - ( runeforge.firestorm.enabled || talent.hyperthermia.enabled ) )", ["action"] = "flamestrike", }, { ["enabled"] = true, ["description"] = "Radiant Spark should be used with a Hot Streak ready to use immediately after the cast finishes. This will naturally set up a Hot Streak spent for the final stack of Radiant Spark.", ["criteria"] = "buff.combustion.up & 2 * buff.hot_streak.react + buff.heating_up.react + hot_streak_spells_in_flight = 2", ["action"] = "radiant_spark", }, { ["enabled"] = true, ["criteria"] = "( buff.firestorm.react || buff.hyperthermia.react )", ["action"] = "pyroblast", }, { ["enabled"] = true, ["criteria"] = "buff.hot_streak.react & buff.combustion.up", ["action"] = "pyroblast", }, { ["enabled"] = true, ["criteria"] = "prev_gcd.1.scorch & buff.heating_up.react & active_enemies < variable.combustion_flamestrike & buff.combustion.up", ["action"] = "pyroblast", }, { ["enabled"] = true, ["description"] = "Using Shifting Power during Combustion to restore Fire Blast and Phoenix Flame charges can be beneficial, but usually only on AoE.", ["criteria"] = "buff.combustion.up & ! action.fire_blast.charges & ( action.phoenix_flames.charges < action.phoenix_flames.max_charges || talent.alexstraszas_fury.enabled ) & variable.combustion_shifting_power <= active_enemies", ["action"] = "shifting_power", }, { ["enabled"] = true, ["criteria"] = "buff.fury_of_the_sun_king.up & buff.fury_of_the_sun_king.remains > cast_time & active_enemies >= variable.skb_flamestrike & buff.fury_of_the_sun_king.expiration_delay_remains = 0", ["action"] = "flamestrike", }, { ["enabled"] = true, ["criteria"] = "buff.fury_of_the_sun_king.up & buff.fury_of_the_sun_king.remains > cast_time & buff.fury_of_the_sun_king.expiration_delay_remains = 0", ["action"] = "pyroblast", }, { ["enabled"] = true, ["description"] = "Maintain Improved Scorch when not casting Flamestrikes in Combustion.", ["criteria"] = "improved_scorch.active & ( debuff.improved_scorch.remains < 4 * gcd.max ) & active_enemies < variable.combustion_flamestrike", ["action"] = "scorch", }, { ["enabled"] = true, ["description"] = "With the T30 set, Phoenix Flames should be used to maintain Charring Embers during Combustion and Flame's Fury procs should be spent.", ["criteria"] = "set_bonus.tier30_2pc & travel_time < buff.combustion.remains & buff.heating_up.react + hot_streak_spells_in_flight < 2 & ( debuff.charring_embers.remains < 4 * gcd.max || buff.flames_fury.stack > 1 || buff.flames_fury.up )", ["action"] = "phoenix_flames", }, { ["enabled"] = true, ["criteria"] = "buff.combustion.remains > cast_time & buff.flame_accelerant.react", ["action"] = "fireball", }, { ["enabled"] = true, ["description"] = "Use Phoenix Flames and Scorch in Combustion to help generate Hot Streaks when Fire Blasts are not available or need to be conserved.", ["criteria"] = "( ! talent.alexstraszas_fury.enabled & travel_time < buff.combustion.remains || talent.alexstraszas_fury.enabled ) & buff.heating_up.react + hot_streak_spells_in_flight < 2", ["action"] = "phoenix_flames", }, { ["enabled"] = true, ["criteria"] = "buff.combustion.remains > cast_time & cast_time >= gcd.max", ["action"] = "scorch", }, { ["enabled"] = true, ["criteria"] = "buff.combustion.remains > cast_time", ["action"] = "fireball", }, { ["enabled"] = true, ["description"] = "If there isn't enough time left in Combustion for a Phoenix Flames or Scorch to hit inside of Combustion, use something else.", ["criteria"] = "buff.combustion.remains < gcd.max & active_enemies > 1", ["action"] = "living_bomb", }, }, }, ["version"] = 20240508, ["warnings"] = "The import for 'firestarter_fire_blasts' required some automated changes.\nLine 2: Converted 'talent.feel_the_burn' to 'talent.feel_the_burn.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 2: Converted 'talent.temporal_warp' to 'talent.temporal_warp.enabled' (1x).\nLine 15: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (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'.\nLine 15: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 15: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 15: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 18: Converted 'conduit.infernal_cascade' to 'conduit.infernal_cascade.enabled' (1x).\nLine 18: Converted 'runeforge.sun_kings_blessing' to 'runeforge.sun_kings_blessing.enabled' (1x).\nLine 18: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 18: Converted operations in '!variable.item_cutoff_active&(buff.infernal_cascade.stack=buff.infernal_cascade.max_stack||!conduit.infernal_cascade.enabled||variable.combustion_on_use&!(runeforge.sun_kings_blessing.enabled||talent.sun_kings_blessing.enabled)||variable.time_to_combustion>interpolated_fight_remains%%(action_cooldown+10))' to '!variable.item_cutoff_active&(buff.infernal_cascade.stack=buff.infernal_cascade.max_stack||!conduit.infernal_cascade.enabled||variable.combustion_on_use&!(runeforge.sun_kings_blessing.enabled||talent.sun_kings_blessing.enabled)||variable.time_to_combustion>interpolated_fight_remains%(action_cooldown+10))'.\nLine 26: Converted 'runeforge.grisly_icicle' to 'runeforge.grisly_icicle.enabled' (1x).\nLine 27: Converted 'runeforge.disciplinary_command' to 'runeforge.disciplinary_command.enabled' (1x).\nLine 28: Converted 'runeforge.disciplinary_command' to 'runeforge.disciplinary_command.enabled' (1x).\nLine 28: Converted 'talent.rune_of_power' to 'talent.rune_of_power.enabled' (1x).\nLine 29: Converted 'runeforge.disciplinary_command' to 'runeforge.disciplinary_command.enabled' (1x).\nLine 30: Converted 'runeforge.disciplinary_command' to 'runeforge.disciplinary_command.enabled' (1x).\nLine 31: Converted operations in 'buff.combustion.down&action.fire_blast.charges_fractional+(variable.time_to_combustion+action.shifting_power.full_reduction*variable.shifting_power_before_combustion)%cooldown.fire_blast.duration-11&(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, ["action"] = "ashvanes_razor_coral", ["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", }, { ["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, ["action"] = "azsharas_font_of_power", ["criteria"] = "! buff.ca_inc.up & dot.moonfire.ticking & dot.sunfire.ticking & ( ! talent.stellar_flare.enabled || dot.stellar_flare.ticking )", ["name"] = "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"] = { ["autoconvertDisplayToggle_20190621_1"] = true, ["resetPotionsToDefaults_20190717"] = true, ["enableAllOfTheThings_20180820"] = true, ["autoconvertDelaySweepToExtend_20190729"] = true, ["autoconvertGlowsForCustomGlow_20190326"] = true, ["resetRogueMfDOption_20200226"] = true, ["resetAberrantPackageDates_20190728_1"] = true, }, ["specs"] = { [258] = { ["maxRefresh"] = 10, ["custom2Name"] = "Custom 2", ["throttleRefresh"] = false, ["aoe"] = 3, ["gcdSync"] = true, ["damageDots"] = false, ["damage"] = true, ["enabled"] = true, ["debuffPadding"] = 0, ["maxTime"] = 33, ["custom1Name"] = "Custom 1", ["package"] = "Shadow", ["throttleTime"] = false, ["cycle"] = false, ["cycle_min"] = 6, ["nameplateRange"] = 8, ["potion"] = "unbridled_fury", ["potionsReset"] = 20180919.1, ["nameplates"] = false, ["damageExpiration"] = 6, ["buffPadding"] = 0, ["damageRange"] = 0, }, [256] = { ["enabled"] = true, ["potionsReset"] = 20180919.1, }, }, ["displays"] = { ["Interrupts"] = { }, }, ["packs"] = { ["Shadow"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20200614, ["author"] = "SimC", ["desc"] = "# Shadow Priest\n# https://github.com/simulationcraft/simc/\n# June 14, 2020\n\n# Changes:\n# - Added Silence.\n# - Converted target_if syntax.\n# - Converted target.time_to_die to time_to_die where applicable.\n# - Added mind_sear_th buff to avoid breaking Mind Sear channels that are buffed by Thought Harvester.", ["lists"] = { ["single"] = { { ["action"] = "void_eruption", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.voidform.down", ["action"] = "dark_ascension", }, { ["action"] = "void_bolt", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cds", }, { ["enabled"] = true, ["criteria"] = "buff.harvested_thoughts.up & cooldown.void_bolt.remains >= 1.5 & azerite.searing_dialogue.rank >= 1", ["action"] = "mind_sear", }, { ["enabled"] = true, ["criteria"] = "target.time_to_die < 3 || cooldown.shadow_word_death.charges = 2 || ( cooldown.shadow_word_death.charges = 1 & cooldown.shadow_word_death.remains < gcd.max )", ["action"] = "shadow_word_death", }, { ["enabled"] = true, ["criteria"] = "buff.voidform.stack > 10 + ( 10 * buff.bloodlust.up )", ["action"] = "surrender_to_madness", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 10", ["action"] = "dark_void", }, { ["enabled"] = true, ["criteria"] = "talent.mindbender.enabled || ( buff.voidform.stack > 18 || time_to_die < 15 )", ["action"] = "mindbender", }, { ["enabled"] = true, ["criteria"] = "! buff.voidform.up || ( cooldown.shadow_word_death.charges = 2 & buff.voidform.stack < 15 )", ["action"] = "shadow_word_death", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 5 & raid_event.adds.duration < 20", ["action"] = "shadow_crash", }, { ["enabled"] = true, ["criteria"] = "variable.dots_up & ( ( raid_event.movement.in > cast_time + 0.5 & raid_event.movement.in < 4 ) || ! talent.shadow_word_void.enabled || buff.voidform.down || buff.voidform.stack > 14 & ( insanity < 70 || charges_fractional > 1.33 ) || buff.voidform.stack <= 14 & ( insanity < 60 || charges_fractional > 1.33 ) )", ["action"] = "mind_blast", }, { ["enabled"] = true, ["criteria"] = "dot.shadow_word_pain.remains > 4 & dot.vampiric_touch.remains > 4 & buff.voidform.up", ["action"] = "void_torrent", }, { ["enabled"] = true, ["criteria"] = "refreshable & time_to_die > 4 & ! talent.misery.enabled & ! talent.dark_void.enabled", ["action"] = "shadow_word_pain", }, { ["enabled"] = true, ["criteria"] = "refreshable & time_to_die > 6 || ( talent.misery.enabled & dot.shadow_word_pain.refreshable )", ["action"] = "vampiric_touch", }, { ["enabled"] = true, ["action"] = "mind_flay", ["interrupt_if"] = "ticks>=2&(cooldown.void_bolt.up||cooldown.mind_blast.up)", ["interrupt_immediate"] = "1", ["chain"] = "1", }, { ["action"] = "shadow_word_pain", ["enabled"] = true, }, }, ["default"] = { { ["action"] = "silence", ["enabled"] = true, }, { ["action"] = "use_items", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.bloodlust.react || time_to_die <= 80 || target.health.pct < 35", ["action"] = "potion", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "dot.shadow_word_pain.ticking & dot.vampiric_touch.ticking", ["var_name"] = "dots_up", }, { ["enabled"] = true, ["criteria"] = "buff.voidform.up", ["action"] = "fireblood", }, { ["action"] = "berserking", ["enabled"] = true, }, { ["action"] = "lights_judgment", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.voidform.up", ["action"] = "ancestral_call", }, { ["action"] = "bag_of_tricks", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1", ["action"] = "run_action_list", ["list_name"] = "cleave", }, { ["enabled"] = true, ["criteria"] = "active_enemies = 1", ["action"] = "run_action_list", ["list_name"] = "single", }, }, ["precombat"] = { { ["action"] = "potion", ["enabled"] = true, }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "floor ( ( 4.5 + azerite.whispers_of_the_damned.rank ) % ( 1 + 0.27 * azerite.searing_dialogue.rank ) )", ["var_name"] = "mind_blast_targets", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( 1 - 0.07 * azerite.death_throes.rank + 0.2 * azerite.thought_harvester.rank ) * ( 1 - 0.09 * azerite.thought_harvester.rank * azerite.searing_dialogue.rank )", ["var_name"] = "swp_trait_ranks_check", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( 1 - 0.04 * azerite.thought_harvester.rank - 0.05 * azerite.spiteful_apparitions.rank )", ["var_name"] = "vt_trait_ranks_check", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( 1 - 0.07 * azerite.death_throes.rank - 0.03 * azerite.thought_harvester.rank - 0.055 * azerite.spiteful_apparitions.rank ) * ( 1 - 0.027 * azerite.thought_harvester.rank * azerite.searing_dialogue.rank )", ["var_name"] = "vt_mis_trait_ranks_check", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "1 - 0.014 * azerite.searing_dialogue.rank", ["var_name"] = "vt_mis_sd_check", }, { ["enabled"] = true, ["criteria"] = "! buff.shadowform.up", ["action"] = "shadowform", }, { ["enabled"] = true, ["name"] = "azsharas_font_of_power", ["action"] = "azsharas_font_of_power", }, { ["enabled"] = true, ["criteria"] = "spell_targets.mind_sear < 2 || azerite.thought_harvester.rank = 0", ["action"] = "mind_blast", }, { ["action"] = "vampiric_touch", ["enabled"] = true, }, }, ["cds"] = { { ["enabled"] = true, ["criteria"] = "( buff.voidform.stack > 20 & insanity <= 50 ) || ( current_insanity_drain * ( ( gcd.max * 2 ) + action.mind_blast.cast_time ) ) > insanity", ["action"] = "memory_of_lucid_dreams", }, { ["action"] = "blood_of_the_enemy", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.voidform.stack > 15", ["action"] = "guardian_of_azeroth", }, { ["enabled"] = true, ["name"] = "manifesto_of_madness", ["action"] = "manifesto_of_madness", ["criteria"] = "spell_targets.mind_sear >= 2 || raid_event.adds.in > 60", }, { ["enabled"] = true, ["criteria"] = "spell_targets.mind_sear >= 2 || raid_event.adds.in > 60", ["action"] = "focused_azerite_beam", }, { ["enabled"] = true, ["criteria"] = "spell_targets.mind_sear >= 2 || raid_event.adds.in > 60", ["action"] = "purifying_blast", }, { ["enabled"] = true, ["action"] = "concentrated_flame", ["criteria"] = "time <= 10 || ( buff.chorus_of_insanity.stack >= 15 & buff.voidform.up ) || full_recharge_time < gcd || time_to_die < 5", ["line_cd"] = "6", }, { ["action"] = "ripple_in_space", ["enabled"] = true, }, { ["action"] = "reaping_flames", ["enabled"] = true, }, { ["action"] = "worldvein_resonance", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( buff.voidform.up & buff.chorus_of_insanity.stack > 20 ) || azerite.chorus_of_insanity.rank = 0", ["action"] = "call_action_list", ["list_name"] = "crit_cds", }, { ["action"] = "use_items", ["enabled"] = true, }, }, ["crit_cds"] = { { ["enabled"] = true, ["name"] = "azsharas_font_of_power", ["action"] = "azsharas_font_of_power", }, { ["enabled"] = true, ["action"] = "cyclotronic_blast", ["effect_name"] = "cyclotronic_blast", }, }, ["cleave"] = { { ["action"] = "void_eruption", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.voidform.down", ["action"] = "dark_ascension", }, { ["enabled"] = true, ["criteria"] = "! ticking & azerite.thought_harvester.rank >= 1", ["action"] = "vampiric_touch", }, { ["enabled"] = true, ["criteria"] = "buff.harvested_thoughts.up", ["action"] = "mind_sear", }, { ["action"] = "void_bolt", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cds", }, { ["enabled"] = true, ["action"] = "shadow_word_death", ["criteria"] = "time_to_die < 3 || buff.voidform.down", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.voidform.stack > 10 + ( 10 * buff.bloodlust.up )", ["action"] = "surrender_to_madness", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.in > 10 & ( dot.shadow_word_pain.refreshable || time_to_die > 30 )", ["action"] = "dark_void", }, { ["action"] = "mindbender", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "mind_blast", ["criteria"] = "spell_targets.mind_sear < variable.mind_blast_targets", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "( raid_event.adds.in > 5 & raid_event.adds.duration < 2 ) || raid_event.adds.duration > 2", ["action"] = "shadow_crash", }, { ["enabled"] = true, ["action"] = "shadow_word_pain", ["criteria"] = "! talent.misery.enabled & refreshable & time_to_die > ( ( - 1.2 + 3.3 * spell_targets.mind_sear ) * variable.swp_trait_ranks_check * ( 1 - 0.012 * azerite.searing_dialogue.rank * spell_targets.mind_sear ) )", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "vampiric_touch", ["criteria"] = "refreshable & time_to_die > ( ( 1 + 3.3 * spell_targets.mind_sear ) * variable.vt_trait_ranks_check * ( 1 + 0.10 * azerite.searing_dialogue.rank * spell_targets.mind_sear ) )", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "vampiric_touch", ["criteria"] = "dot.shadow_word_pain.refreshable & ( talent.misery.enabled & time_to_die > ( ( 1.0 + 2.0 * spell_targets.mind_sear ) * variable.vt_mis_trait_ranks_check * ( variable.vt_mis_sd_check * spell_targets.mind_sear ) ) )", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.voidform.up", ["action"] = "void_torrent", }, { ["enabled"] = true, ["action"] = "mind_sear", ["interrupt_if"] = "ticks>=2&buff.mind_sear_th.down", ["interrupt_immediate"] = "1", ["criteria"] = "spell_targets.mind_sear > 1", ["chain"] = "1", }, { ["enabled"] = true, ["action"] = "mind_flay", ["interrupt_if"] = "ticks>=2&(cooldown.void_bolt.up||cooldown.mind_blast.up)", ["interrupt_immediate"] = "1", ["chain"] = "1", }, { ["action"] = "shadow_word_pain", ["enabled"] = true, }, }, }, ["version"] = 20200614, ["warnings"] = "Imported 6 action lists.\n", ["profile"] = "# Shadow Priest\n# https://github.com/simulationcraft/simc/\n# June 14, 2020\n\n# Changes:\n# - Added Silence.\n# - Converted target_if syntax.\n# - Converted target.time_to_die to time_to_die where applicable.\n# - Added mind_sear_th buff to avoid breaking Mind Sear channels that are buffed by Thought Harvester.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/food\n# actions.precombat+=/augmentation\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/potion\nactions.precombat+=/variable,name=mind_blast_targets,op=set,value=floor((4.5+azerite.whispers_of_the_damned.rank)%(1+0.27*azerite.searing_dialogue.rank))\nactions.precombat+=/variable,name=swp_trait_ranks_check,op=set,value=(1-0.07*azerite.death_throes.rank+0.2*azerite.thought_harvester.rank)*(1-0.09*azerite.thought_harvester.rank*azerite.searing_dialogue.rank)\nactions.precombat+=/variable,name=vt_trait_ranks_check,op=set,value=(1-0.04*azerite.thought_harvester.rank-0.05*azerite.spiteful_apparitions.rank)\nactions.precombat+=/variable,name=vt_mis_trait_ranks_check,op=set,value=(1-0.07*azerite.death_throes.rank-0.03*azerite.thought_harvester.rank-0.055*azerite.spiteful_apparitions.rank)*(1-0.027*azerite.thought_harvester.rank*azerite.searing_dialogue.rank)\nactions.precombat+=/variable,name=vt_mis_sd_check,op=set,value=1-0.014*azerite.searing_dialogue.rank\nactions.precombat+=/shadowform,if=!buff.shadowform.up\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/mind_blast,if=spell_targets.mind_sear<2||azerite.thought_harvester.rank=0\nactions.precombat+=/vampiric_touch\n\n# Executed every time the actor is available.\nactions=silence\nactions+=/use_items\nactions+=/potion,if=buff.bloodlust.react||time_to_die<=80||target.health.pct<35\nactions+=/variable,name=dots_up,op=set,value=dot.shadow_word_pain.ticking&dot.vampiric_touch.ticking\nactions+=/fireblood,if=buff.voidform.up\nactions+=/berserking\nactions+=/lights_judgment\nactions+=/ancestral_call,if=buff.voidform.up\nactions+=/bag_of_tricks\nactions+=/run_action_list,name=cleave,if=active_enemies>1\nactions+=/run_action_list,name=single,if=active_enemies=1\n\n# Use Memory of Lucid Dreams right before you are about to fall out of Voidform\nactions.cds=memory_of_lucid_dreams,if=(buff.voidform.stack>20&insanity<=50)||(current_insanity_drain*((gcd.max*2)+action.mind_blast.cast_time))>insanity\nactions.cds+=/blood_of_the_enemy\nactions.cds+=/guardian_of_azeroth,if=buff.voidform.stack>15\nactions.cds+=/use_item,name=manifesto_of_madness,if=spell_targets.mind_sear>=2||raid_event.adds.in>60\nactions.cds+=/focused_azerite_beam,if=spell_targets.mind_sear>=2||raid_event.adds.in>60\nactions.cds+=/purifying_blast,if=spell_targets.mind_sear>=2||raid_event.adds.in>60\n# Wait at least 6s between casting CF. Use the first cast ASAP to get it on CD, then every subsequent cast should be used when Chorus of Insanity is active or it will recharge in the next gcd, or the target is about to die.\nactions.cds+=/concentrated_flame,line_cd=6,if=time<=10||(buff.chorus_of_insanity.stack>=15&buff.voidform.up)||full_recharge_time20)||azerite.chorus_of_insanity.rank=0\n# Default fallback for usable items: Use on cooldown.\nactions.cds+=/use_items\n\nactions.cleave=void_eruption\nactions.cleave+=/dark_ascension,if=buff.voidform.down\nactions.cleave+=/vampiric_touch,if=!ticking&azerite.thought_harvester.rank>=1\nactions.cleave+=/mind_sear,if=buff.harvested_thoughts.up\nactions.cleave+=/void_bolt\nactions.cleave+=/call_action_list,name=cds\nactions.cleave+=/shadow_word_death,cycle_targets=1,if=time_to_die<3||buff.voidform.down\nactions.cleave+=/surrender_to_madness,if=buff.voidform.stack>10+(10*buff.bloodlust.up)\n# Use Dark Void on CD unless adds are incoming in 10s or less.\nactions.cleave+=/dark_void,if=raid_event.adds.in>10&(dot.shadow_word_pain.refreshable||time_to_die>30)\nactions.cleave+=/mindbender\nactions.cleave+=/mind_blast,cycle_targets=1,if=spell_targets.mind_sear5&raid_event.adds.duration<2)||raid_event.adds.duration>2\nactions.cleave+=/shadow_word_pain,cycle_targets=1,if=!talent.misery.enabled&refreshable&time_to_die>((-1.2+3.3*spell_targets.mind_sear)*variable.swp_trait_ranks_check*(1-0.012*azerite.searing_dialogue.rank*spell_targets.mind_sear))\nactions.cleave+=/vampiric_touch,cycle_targets=1,if=refreshable&time_to_die>((1+3.3*spell_targets.mind_sear)*variable.vt_trait_ranks_check*(1+0.10*azerite.searing_dialogue.rank*spell_targets.mind_sear))\nactions.cleave+=/vampiric_touch,cycle_targets=1,if=dot.shadow_word_pain.refreshable&(talent.misery.enabled&time_to_die>((1.0+2.0*spell_targets.mind_sear)*variable.vt_mis_trait_ranks_check*(variable.vt_mis_sd_check*spell_targets.mind_sear)))\nactions.cleave+=/void_torrent,if=buff.voidform.up\nactions.cleave+=/mind_sear,if=spell_targets.mind_sear>1,chain=1,interrupt_immediate=1,interrupt_if=ticks>=2&buff.mind_sear_th.down\nactions.cleave+=/mind_flay,chain=1,interrupt_immediate=1,interrupt_if=ticks>=2&(cooldown.void_bolt.up||cooldown.mind_blast.up)\nactions.cleave+=/shadow_word_pain\n\nactions.crit_cds=use_item,name=azsharas_font_of_power\nactions.crit_cds+=/use_item,effect_name=cyclotronic_blast\n\nactions.single=void_eruption\nactions.single+=/dark_ascension,if=buff.voidform.down\nactions.single+=/void_bolt\nactions.single+=/call_action_list,name=cds\n# Use Mind Sear on ST only if you get a Thought Harvester Proc with at least 1 Searing Dialogue Trait.\nactions.single+=/mind_sear,if=buff.harvested_thoughts.up&cooldown.void_bolt.remains>=1.5&azerite.searing_dialogue.rank>=1\n# Use SWD before capping charges, or the target is about to die.\nactions.single+=/shadow_word_death,if=target.time_to_die<3||cooldown.shadow_word_death.charges=2||(cooldown.shadow_word_death.charges=1&cooldown.shadow_word_death.remains10+(10*buff.bloodlust.up)\n+ # Use Dark Void on CD unless adds are incoming in 10s or less.\nactions.single+=/dark_void,if=raid_event.adds.in>10\n# Use Mindbender at 19 or more stacks, or if the target will die in less than 15s.\nactions.single+=/mindbender,if=talent.mindbender.enabled||(buff.voidform.stack>18||time_to_die<15)\nactions.single+=/shadow_word_death,if=!buff.voidform.up||(cooldown.shadow_word_death.charges=2&buff.voidform.stack<15)\n# Use Shadow Crash on CD unless there are adds incoming.\nactions.single+=/shadow_crash,if=raid_event.adds.in>5&raid_event.adds.duration<20\n# Bank the Shadow Word: Void charges for a bit to try and avoid overcapping on Insanity.\nactions.single+=/mind_blast,if=variable.dots_up&((raid_event.movement.in>cast_time+0.5&raid_event.movement.in<4)||!talent.shadow_word_void.enabled||buff.voidform.down||buff.voidform.stack>14&(insanity<70||charges_fractional>1.33)||buff.voidform.stack<=14&(insanity<60||charges_fractional>1.33))\nactions.single+=/void_torrent,if=dot.shadow_word_pain.remains>4&dot.vampiric_touch.remains>4&buff.voidform.up\nactions.single+=/shadow_word_pain,if=refreshable&time_to_die>4&!talent.misery.enabled&!talent.dark_void.enabled\nactions.single+=/vampiric_touch,if=refreshable&time_to_die>6||(talent.misery.enabled&dot.shadow_word_pain.refreshable)\nactions.single+=/mind_flay,chain=1,interrupt_immediate=1,interrupt_if=ticks>=2&(cooldown.void_bolt.up||cooldown.mind_blast.up)\nactions.single+=/shadow_word_pain", ["spec"] = 258, }, }, }, ["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, ["resetRogueMfDOption_20200226"] = true, ["autoconvertDisplayToggle_20190621_1"] = true, ["updateMaxRefreshToNewSpecOptions_20220222"] = true, ["autoconvertGlowsForCustomGlow_20190326"] = true, ["resetGlobalCooldownSync_20210403"] = true, ["resetAberrantPackageDates_20190728_1"] = true, }, ["specs"] = { [70] = { ["debuffPadding"] = 0, ["settings"] = { ["sov_damage"] = 20, ["check_wake_range"] = false, }, ["potionsReset"] = 20180919.1, ["maxTime"] = 33, ["maxRefresh"] = 10, ["buffPadding"] = 0, }, [66] = { ["debuffPadding"] = 0, ["settings"] = { ["wog_health"] = 40, ["goak_damage"] = 40, ["ds_damage"] = 60, }, ["potionsReset"] = 20180919.1, ["maxTime"] = 33, ["maxRefresh"] = 10, ["buffPadding"] = 0, }, [102] = { ["enhancedRecheck"] = true, }, }, ["packs"] = { ["Protection Paladin"] = { ["source"] = "https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20231122, ["author"] = "SimC", ["desc"] = "2023-11-13 & 22: Sim update.\n\n2023-11-05: Patch 10.2.\n\n2023-06-25: Eye of Tyr adjusted based on Inmost Light.\n\n2023-06-24: Judgment usage with Bulwark of Righteous Fury; trinket logic update.\n\n2023-05-24: Update Light's Judgment, Divine Toll, Eye of Tyr usage.\n\n2023-02-27: Use SotR with Bastion of Light, Divine Purpose, or 3+ Holy Power if Righteous Protector is not talented or is outside its ICD.\n\n2023-03-06: Check for Of Dusk and Dawn buffs before spending using SotR at 3 CP.\n\n2023-03-19: Updated for 10.0.7.\n\n2023-03-21: Oops, Blessed Hammer still exists.\n\n2023-03-26: Updates from SimulationCraft (Avenger's Shield usage for 2pc Tier 29, SotR if ICD is bypassed).", ["lists"] = { ["default"] = { { ["enabled"] = true, ["description"] = "Executed every time the actor is available.", ["action"] = "rebuke", }, { ["action"] = "cleanse_toxins", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cooldowns", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "mitigation", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "trinkets", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "standard", }, }, ["precombat"] = { { ["enabled"] = true, ["criteria"] = "buff.paladin_aura.down", ["action"] = "devotion_aura", }, { ["action"] = "lights_judgment", ["enabled"] = true, }, { ["action"] = "arcane_torrent", ["enabled"] = true, }, { ["action"] = "consecration", ["enabled"] = true, }, }, ["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, ["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"] = "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"] = "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"] = "ardent_defender", }, { ["enabled"] = true, ["criteria"] = "health.pct < 15", ["action"] = "lay_on_hands", }, }, ["trinkets"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "1", ["var_name"] = "trinket_sync_slot", ["criteria"] = "trinket.t1.has_stat.any_dps & ( ! trinket.t2.has_stat.any_dps || trinket.t1.cooldown.duration >= trinket.t2.cooldown.duration )", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "2", ["var_name"] = "trinket_sync_slot", ["criteria"] = "trinket.t2.has_stat.any_dps & ( ! trinket.t1.has_stat.any_dps || trinket.t2.cooldown.duration > trinket.t1.cooldown.duration )", }, { ["enabled"] = true, ["criteria"] = "( variable.trinket_sync_slot = 1 & ( buff.avenging_wrath.up || boss & fight_remains <= 40 ) || ( variable.trinket_sync_slot = 2 & ( ! trinket.t2.cooldown.ready || ! buff.avenging_wrath.up ) ) || ! variable.trinket_sync_slot )", ["slots"] = "trinket1", ["action"] = "trinket1", }, { ["enabled"] = true, ["criteria"] = "( variable.trinket_sync_slot = 2 & ( buff.avenging_wrath.up || boss & fight_remains <= 40 ) || ( variable.trinket_sync_slot = 1 & ( ! trinket.t1.cooldown.ready || ! buff.avenging_wrath.up ) ) || ! variable.trinket_sync_slot )", ["slots"] = "trinket2", ["action"] = "trinket2", }, { ["action"] = "use_items", ["enabled"] = true, }, }, ["cooldowns"] = { { ["enabled"] = true, ["description"] = "Use Avenger's Shield as first priority before anything else, if t29 2pc is equipped.", ["criteria"] = "time = 0 & set_bonus.tier29_2pc", ["action"] = "avengers_shield", }, { ["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, }, { ["action"] = "avenging_wrath", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.aw_sentinel.up", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "( buff.aw_sentinel.remains < 15 || ( time > 10 || cooldown.sentinel.remains > 15 || cooldown.avenging_wrath.remains > 15 ) & ( cooldown.avengers_shield.remains & cooldown.judgment.remains & cooldown.hammer_of_wrath.remains ) )", ["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", }, }, ["standard"] = { { ["enabled"] = true, ["criteria"] = "buff.sanctification.stack = buff.sanctification.max_stack", ["action"] = "consecration", }, { ["enabled"] = true, ["description"] = "Use Shield of the Righteous according to Righteous Protector's ICD, but use it asap if it's a free proc (Bugged interaction, this ignores ICD). Don't use it when on max Sanctification Stacks (Very next GCD will trigger Consecration, so we want the bonus damage)", ["criteria"] = "( ( ( ! talent.righteous_protector.enabled || cooldown.righteous_protector_icd.remains = 0 ) & holy_power > 2 ) || buff.bastion_of_light.up || buff.divine_purpose.up ) & ( ! buff.sanctification.up || buff.sanctification.stack < buff.sanctification.max_stack )", ["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, ["action"] = "judgment", ["cycle_targets"] = 1, ["description"] = "Use Judgment with higher priority if we need to build Sanctification Stacks", ["criteria"] = "! buff.sanctification_empower.up & set_bonus.tier31_2pc", }, { ["action"] = "hammer_of_wrath", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "charges >= 2 || full_recharge_time <= gcd.max", ["action"] = "judgment", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "spell_targets.avengers_shield > 2 || buff.moment_of_glory.up", ["action"] = "avengers_shield", }, { ["enabled"] = true, ["criteria"] = "( ! raid_event.adds.exists || raid_event.adds.in > 10 )", ["action"] = "divine_toll", }, { ["action"] = "avengers_shield", ["enabled"] = true, }, { ["action"] = "hammer_of_wrath", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "judgment", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "! consecration.up & ( ! buff.sanctification.stack = buff.sanctification.max_stack || ! set_bonus.tier31_2pc )", ["action"] = "consecration", }, { ["enabled"] = true, ["criteria"] = "talent.inmost_light.enabled & raid_event.adds.in >= 45 || spell_targets.shield_of_the_righteous >= 3", ["action"] = "eye_of_tyr", }, { ["action"] = "blessed_hammer", ["enabled"] = true, }, { ["action"] = "hammer_of_the_righteous", ["enabled"] = true, }, { ["action"] = "crusader_strike", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! talent.inmost_light.enabled & raid_event.adds.in >= 60 || spell_targets.shield_of_the_righteous >= 3", ["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", }, { ["enabled"] = true, ["criteria"] = "! buff.sanctification_empower.up", ["action"] = "consecration", }, }, }, ["version"] = 20231122, ["warnings"] = "The import for 'trinkets' required some automated changes.\nLine 1: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 1: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 1: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 1: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 1: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 1: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 2: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (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 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 4: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 4: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\n\nImported 6 action lists.\n", ["profile"] = "actions.precombat+=/devotion_aura,if=buff.paladin_aura.down\nactions.precombat+=/lights_judgment\nactions.precombat+=/arcane_torrent\nactions.precombat+=/consecration\n\n# Executed every time the actor is available.\nactions=rebuke\nactions+=/cleanse_toxins\nactions+=/call_action_list,name=cooldowns\nactions+=/call_action_list,name=mitigation\nactions+=/call_action_list,name=trinkets\nactions+=/call_action_list,name=standard\n\n# Use Avenger's Shield as first priority before anything else, if t29 2pc is equipped.\nactions.cooldowns+=/avengers_shield,if=time=0&set_bonus.tier29_2pc\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+=/sentinel\nactions.cooldowns+=/potion,if=buff.aw_sentinel.up\nactions.cooldowns+=/moment_of_glory,if=(buff.aw_sentinel.remains<15||(time>10||cooldown.sentinel.remains>15||cooldown.avenging_wrath.remains>15)&(cooldown.avengers_shield.remains&cooldown.judgment.remains&cooldown.hammer_of_wrath.remains))\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)\nactions.mitigation+=/word_of_glory,if=health.pctgoak_damage&!(buff.ardent_defender.up||buff.guardian_of_ancient_kings.up||buff.divine_shield.up||buff.potion.up)\nactions.mitigation+=/divine_shield,if=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)\nactions.mitigation+=/ardent_defender,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+=/lay_on_hands,if=health.pct<15\n\nactions.standard+=/consecration,if=buff.sanctification.stack=buff.sanctification.max_stack\n# Use Shield of the Righteous according to Righteous Protector's ICD, but use it asap if it's a free proc (Bugged interaction, this ignores ICD). Don't use it when on max Sanctification Stacks (Very next GCD will trigger Consecration, so we want the bonus damage)\nactions.standard+=/shield_of_the_righteous,if=(((!talent.righteous_protector.enabled||cooldown.righteous_protector_icd.remains=0)&holy_power>2)||buff.bastion_of_light.up||buff.divine_purpose.up)&(!buff.sanctification.up||buff.sanctification.stack3&buff.bulwark_of_righteous_fury.stack>=3&holy_power<3\n# Use Judgment with higher priority if we need to build Sanctification Stacks\nactions.standard+=/judgment,cycle_targets=1,if=!buff.sanctification_empower.up&set_bonus.tier31_2pc\nactions.standard+=/hammer_of_wrath\nactions.standard+=/judgment,cycle_targets=1,if=charges>=2||full_recharge_time<=gcd.max\nactions.standard+=/avengers_shield,if=spell_targets.avengers_shield>2||buff.moment_of_glory.up\nactions.standard+=/divine_toll,if=(!raid_event.adds.exists||raid_event.adds.in>10)\nactions.standard+=/avengers_shield\nactions.standard+=/hammer_of_wrath\nactions.standard+=/judgment,cycle_targets=1\nactions.standard+=/consecration,if=!consecration.up&(!buff.sanctification.stack=buff.sanctification.max_stack||!set_bonus.tier31_2pc)\nactions.standard+=/eye_of_tyr,if=talent.inmost_light.enabled&raid_event.adds.in>=45||spell_targets.shield_of_the_righteous>=3\nactions.standard+=/blessed_hammer\nactions.standard+=/hammer_of_the_righteous\nactions.standard+=/crusader_strike\nactions.standard+=/eye_of_tyr,if=!talent.inmost_light.enabled&raid_event.adds.in>=60||spell_targets.shield_of_the_righteous>=3\nactions.standard+=/word_of_glory,if=buff.shining_light_free.up\nactions.standard+=/arcane_torrent,if=holy_power<5\nactions.standard+=/consecration,if=!buff.sanctification_empower.up\n\nactions.trinkets+=/variable,name=trinket_sync_slot,value=1,if=trinket.1.has_stat.any_dps&(!trinket.2.has_stat.any_dps||trinket.1.cooldown.duration>=trinket.2.cooldown.duration)\nactions.trinkets+=/variable,name=trinket_sync_slot,value=2,if=trinket.2.has_stat.any_dps&(!trinket.1.has_stat.any_dps||trinket.2.cooldown.duration>trinket.1.cooldown.duration)\nactions.trinkets+=/use_items,slots=trinket1,if=(variable.trinket_sync_slot=1&(buff.avenging_wrath.up||boss&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||boss&fight_remains<=40)||(variable.trinket_sync_slot=1&(!trinket.1.cooldown.ready||!buff.avenging_wrath.up))||!variable.trinket_sync_slot)\nactions.trinkets+=/use_items", ["spec"] = 66, }, ["Holy Paladin"] = { ["builtIn"] = true, ["date"] = 20231117, ["spec"] = 65, ["desc"] = "2023-03-22: Updated for 10.0.7 (Seraphim removed, Avenging Wrath and Avenging Crusader split).", ["lists"] = { ["spenders"] = { { ["enabled"] = true, ["criteria"] = "! talent.awakening.enabled || active_enemies > 1", ["action"] = "shield_of_the_righteous", }, { ["enabled"] = true, ["criteria"] = "talent.awakening.enabled & group", ["action"] = "light_of_dawn", }, { ["enabled"] = true, ["criteria"] = "talent.awakening.enabled", ["action"] = "word_of_glory", }, }, ["default"] = { { ["action"] = "rebuke", ["enabled"] = true, }, { ["action"] = "avenging_wrath", ["enabled"] = true, }, { ["action"] = "avenging_crusader", ["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"] = "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"] = "lights_hammer", ["enabled"] = true, }, { ["action"] = "holy_prism", ["enabled"] = true, }, { ["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", }, }, }, ["version"] = 20231117, ["warnings"] = "The import for 'spenders' required some automated changes.\nLine 1: Converted 'talent.awakening' to 'talent.awakening.enabled' (1x).\nLine 2: Converted 'talent.awakening' to 'talent.awakening.enabled' (1x).\nLine 3: Converted 'talent.awakening' to 'talent.awakening.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 9: Converted 'talent.avenging_crusader' to 'talent.avenging_crusader.enabled' (1x).\n\nImported 3 action lists.\n", ["author"] = "Kaleokalani", ["profile"] = "actions+=/rebuke\nactions+=/avenging_wrath\nactions+=/avenging_crusader\nactions+=/blessing_of_summer\nactions+=/blessing_of_autumn\nactions+=/blessing_of_winter\nactions+=/blessing_of_spring\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+=/lights_hammer\nactions+=/holy_prism\nactions+=/consecration,if=!consecration.up&action.crusader_strike.in_range\nactions+=/hammer_of_wrath\nactions+=/judgment\nactions+=/holy_shock\nactions+=/crusader_strike,if=cooldown.holy_shock.remains>gcd.max\n\nactions.spenders+=/shield_of_the_righteous,if=!talent.awakening||active_enemies>1\nactions.spenders+=/light_of_dawn,if=talent.awakening&group\nactions.spenders+=/word_of_glory,if=talent.awakening", }, ["Retribution"] = { ["builtIn"] = true, ["date"] = 20231128, ["spec"] = 70, ["desc"] = "2023-11-27: Usable mainhands for Ret.\n\n2023-11-08: Minor SimC update.\n\n2023-07-14: Update for 10.1.5.\n\n2023-06-24: Execution Sentence usage adjusted for Executioner's Will.\n\n2023-05-18: More work to let abilities synced abilities desync if the other ability is disabled/toggled/etc.\n\n2023-05-17: Iterate on FR/AW sync to allow spenders to be used while waiting for FR/AW.\n\n2023-05-14: Improve FR/AW sync.\n\n2023-05-08: More 10.1 updates.\n\n2023-05-02: 10.1 update.\n\n2023-03-28: Update potion end-of-fight usage to check for boss.\n\n2023-03-21: 10.0.7 priority update.\n\n2023-03-13: Edits to support finishers during Crusade procs from Retribution Aura.\n\n2023-02-21: Iterate on trinket timing (end of bossfight logic).", ["profile"] = "actions.precombat+=/arcane_torrent,if=talent.final_reckoning\nactions.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\n# Executed every time the actor is available.\nactions+=/rebuke\nactions+=/variable,name=time_to_crusade,op=setif,value=cooldown.crusade.remains=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\nactions.cooldowns+=/use_item,name=algethar_puzzle_box,if=(cooldown.avenging_wrath.remains<5&!talent.crusade||cooldown.crusade.remains<5&talent.crusade)&(holy_power>=4&time<5||holy_power>=3&time>5)\nactions.cooldowns+=/use_item,slot=trinket1,if=(buff.avenging_wrath.up&cooldown.avenging_wrath.remains>40||buff.crusade.up&buff.crusade.stack=10)&(!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains\nactions.cooldowns+=/use_item,slot=trinket2,if=(buff.avenging_wrath.up&cooldown.avenging_wrath.remains>40||buff.crusade.up&buff.crusade.stack=10)&(!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains\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+=/use_item,name=main_hand,if=(trinket.2.cooldown.remains||!variable.trinket_2_buffs)&(trinket.2.cooldown.remains||!variable.trinket_2_buffs)\nactions.cooldowns+=/use_item,name=shadowed_razing_annihilator,if=(trinket.2.cooldown.remains||!variable.trinket_2_buffs)&(trinket.2.cooldown.remains||!variable.trinket_2_buffs)\nactions.cooldowns+=/use_item,name=fyralath_the_dreamrender,if=dot.mark_of_fyralath.ticking&!buff.avenging_wrath.up&!buff.crusade.up\nactions.cooldowns+=/shield_of_vengeance,if=fight_remains>15&(!talent.execution_sentence||!debuff.execution_sentence.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)&(holy_power>=4&time<5||holy_power>=3&time>5||holy_power>=2&talent.divine_auxiliary)&(target.time_to_die>8&!talent.executioners_will||target.time_to_die>12)\nactions.cooldowns+=/avenging_wrath,if=holy_power>=4&time<5||holy_power>=3&time>5||holy_power>=2&talent.divine_auxiliary&(talent.execution_sentence&(cooldown.execution_sentence.remains=0||cooldown.execution_sentence.remains>15||action.execution_sentence.disabled)||talent.final_reckoning&(cooldown.final_reckoning.remains=0||cooldown.final_reckoning.remains>30||action.final_reckoning.disabled))\nactions.cooldowns+=/crusade,if=buff.crusade.remains=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.crusade&(buff.avenging_wrath.up||cooldown.avenging_wrath.remains>30||action.avenging_wrath.disabled)||talent.crusade&(cooldown.crusade.remains>30&(!buff.crusade.up||buff.crusade.stack>=10)||action.crusade.disabled))&(time_to_hpg>0||holy_power=5||holy_power>=2&talent.divine_auxiliary)\n\nactions.finishers+=/variable,name=ds_castable,value=(spell_targets.divine_storm>=3||spell_targets.divine_storm>=2&!talent.divine_arbiter||buff.empyrean_power.up)&!buff.empyrean_legacy.up&!(buff.divine_arbiter.up&buff.divine_arbiter.stack>24)\nactions.finishers+=/divine_storm,if=variable.ds_castable&(!talent.crusade||cooldown.crusade.remains>gcd*3||buff.crusade.up&buff.crusade.stack<10)\nactions.finishers+=/justicars_vengeance,if=!talent.crusade||cooldown.crusade.remains>gcd*3||buff.crusade.up&buff.crusade.stack<10\nactions.finishers+=/templars_verdict,if=!talent.crusade||cooldown.crusade.remains>gcd*3||buff.crusade.up&buff.crusade.stack<10\n\nactions.generators+=/call_action_list,name=finishers,if=holy_power=5||buff.echoes_of_wrath.up&set_bonus.tier31_4pc&talent.crusading_strikes||(debuff.judgment.up||holy_power=4)&buff.divine_resonance.up&!set_bonus.tier31_2pc\nactions.generators+=/blade_of_justice,if=!dot.expurgation.ticking&holy_power<=3&set_bonus.tier31_2pc\nactions.generators+=/wake_of_ashes,if=holy_power<=2&(cooldown.avenging_wrath.remains||cooldown.crusade.remains||!talent.crusade&action.avenging_wrath.disabled||talent.crusade&action.crusade.disabled)&(!talent.execution_sentence||cooldown.execution_sentence.remains>4||target.time_to_die<8||action.execution_sentence.disabled)\nactions.generators+=/blade_of_justice,if=!dot.expurgation.ticking&set_bonus.tier31_2pc\nactions.generators+=/divine_toll,if=holy_power<=2&(!raid_event.adds.exists||raid_event.adds.in>30||raid_event.adds.up)&(cooldown.avenging_wrath.remains>15||cooldown.crusade.remains>15||fight_remains<8)\nactions.generators+=/judgment,if=dot.expurgation.ticking&!buff.echoes_of_wrath.up&set_bonus.tier31_2pc\nactions.generators+=/call_action_list,name=finishers,strict=1,if=holy_power>=3&buff.crusade.up&buff.crusade.stack<10\nactions.generators+=/templar_slash,if=buff.templar_strikes.remains=2\nactions.generators+=/blade_of_justice,if=(holy_power<=3||!talent.holy_blade)&(spell_targets.divine_storm>=2&!talent.crusading_strikes||spell_targets.divine_storm>=4)\nactions.generators+=/hammer_of_wrath,if=(spell_targets.divine_storm<2||!talent.blessed_champion||set_bonus.tier30_4pc)&(holy_power<=3||target.health.pct>20||!talent.vanguards_momentum)\nactions.generators+=/templar_slash,if=buff.templar_strikes.remains=2\nactions.generators+=/divine_hammer,if=spell_targets.divine_storm>=2\nactions.generators+=/crusader_strike,if=cooldown.crusader_strike.charges_fractional>=1.75&(holy_power<=2||holy_power<=3&cooldown.blade_of_justice.remains>gcd*2||holy_power=4&cooldown.blade_of_justice.remains>gcd*2&cooldown.judgment.remains>gcd*2)\nactions.generators+=/call_action_list,name=finishers\nactions.generators+=/templar_slash\nactions.generators+=/templar_strike\nactions.generators+=/judgment,if=holy_power<=3||!talent.boundless_judgment\nactions.generators+=/hammer_of_wrath,if=holy_power<=3||target.health.pct>20||!talent.vanguards_momentum\nactions.generators+=/crusader_strike\nactions.generators+=/arcane_torrent\nactions.generators+=/consecration\nactions.generators+=/divine_hammer", ["version"] = 20231128, ["warnings"] = "The import for 'default' required some automated changes.\nLine 2: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 1: Converted 'talent.final_reckoning' to 'talent.final_reckoning.enabled' (1x).\nLine 3: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 3: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 3: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 3: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 3: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 3: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 4: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 4: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 4: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 4: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 4: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.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 '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 '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 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 '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 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.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 7: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 7: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\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.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 7: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 7: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 7: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 7: 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.crusade' to 'talent.crusade.enabled' (1x).\nLine 4: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 5: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (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.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 5: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 6: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (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.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 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 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 9: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 9: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 9: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.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 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 12: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 13: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 13: Converted 'talent.executioners_will' to 'talent.executioners_will.enabled' (1x).\nLine 14: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 14: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 14: Converted 'talent.final_reckoning' to 'talent.final_reckoning.enabled' (1x).\nLine 16: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 16: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 16: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 16: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\n\nThe import for 'finishers' required some automated changes.\nLine 1: Converted 'talent.divine_arbiter' to 'talent.divine_arbiter.enabled' (1x).\nLine 2: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 3: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 4: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\n\nThe import for 'generators' required some automated changes.\nLine 1: Converted 'talent.crusading_strikes' to 'talent.crusading_strikes.enabled' (1x).\nLine 3: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 3: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 3: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 9: Converted 'talent.holy_blade' to 'talent.holy_blade.enabled' (1x).\nLine 9: Converted 'talent.crusading_strikes' to 'talent.crusading_strikes.enabled' (1x).\nLine 10: Converted 'talent.blessed_champion' to 'talent.blessed_champion.enabled' (1x).\nLine 10: Converted 'talent.vanguards_momentum' to 'talent.vanguards_momentum.enabled' (1x).\nLine 12: Converted 'talent.boundless_judgment' to 'talent.boundless_judgment.enabled' (1x).\nLine 13: Converted 'talent.holy_blade' to 'talent.holy_blade.enabled' (1x).\nLine 21: Converted 'talent.boundless_judgment' to 'talent.boundless_judgment.enabled' (1x).\nLine 22: Converted 'talent.vanguards_momentum' to 'talent.vanguards_momentum.enabled' (1x).\n\nImported 5 action lists.\n", ["author"] = "SimC", ["lists"] = { ["default"] = { { ["enabled"] = true, ["description"] = "Executed every time the actor is available.", ["action"] = "rebuke", }, { ["enabled"] = true, ["op"] = "setif", ["action"] = "variable", ["var_name"] = "time_to_crusade", ["value"] = "cooldown.crusade.remains ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )", }, }, ["generators"] = { { ["enabled"] = true, ["action"] = "call_action_list", ["criteria"] = "holy_power = 5 || buff.echoes_of_wrath.up & set_bonus.tier31_4pc & talent.crusading_strikes.enabled || ( debuff.judgment.up || holy_power = 4 ) & buff.divine_resonance.up & ! set_bonus.tier31_2pc", ["list_name"] = "finishers", }, { ["enabled"] = true, ["criteria"] = "! dot.expurgation.ticking & holy_power <= 3 & set_bonus.tier31_2pc", ["action"] = "blade_of_justice", }, { ["enabled"] = true, ["criteria"] = "holy_power <= 2 & ( cooldown.avenging_wrath.remains || cooldown.crusade.remains || ! talent.crusade.enabled & action.avenging_wrath.disabled || talent.crusade.enabled & action.crusade.disabled ) & ( ! talent.execution_sentence.enabled || cooldown.execution_sentence.remains > 4 || target.time_to_die < 8 || action.execution_sentence.disabled )", ["action"] = "wake_of_ashes", }, { ["enabled"] = true, ["criteria"] = "! dot.expurgation.ticking & set_bonus.tier31_2pc", ["action"] = "blade_of_justice", }, { ["enabled"] = true, ["criteria"] = "holy_power <= 2 & ( ! raid_event.adds.exists || raid_event.adds.in > 30 || raid_event.adds.up ) & ( cooldown.avenging_wrath.remains > 15 || cooldown.crusade.remains > 15 || fight_remains < 8 )", ["action"] = "divine_toll", }, { ["enabled"] = true, ["criteria"] = "dot.expurgation.ticking & ! buff.echoes_of_wrath.up & set_bonus.tier31_2pc", ["action"] = "judgment", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "holy_power >= 3 & buff.crusade.up & buff.crusade.stack < 10", ["list_name"] = "finishers", }, { ["enabled"] = true, ["criteria"] = "buff.templar_strikes.remains < gcd.max & spell_targets.divine_storm >= 2", ["action"] = "templar_slash", }, { ["enabled"] = true, ["criteria"] = "( holy_power <= 3 || ! talent.holy_blade.enabled ) & ( spell_targets.divine_storm >= 2 & ! talent.crusading_strikes.enabled || spell_targets.divine_storm >= 4 )", ["action"] = "blade_of_justice", }, { ["enabled"] = true, ["criteria"] = "( spell_targets.divine_storm < 2 || ! talent.blessed_champion.enabled || set_bonus.tier30_4pc ) & ( holy_power <= 3 || target.health.pct > 20 || ! talent.vanguards_momentum.enabled )", ["action"] = "hammer_of_wrath", }, { ["enabled"] = true, ["criteria"] = "buff.templar_strikes.remains < gcd.max", ["action"] = "templar_slash", }, { ["enabled"] = true, ["criteria"] = "! debuff.judgment.up & ( holy_power <= 3 || ! talent.boundless_judgment.enabled )", ["action"] = "judgment", }, { ["enabled"] = true, ["criteria"] = "holy_power <= 3 || ! talent.holy_blade.enabled", ["action"] = "blade_of_justice", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "( target.health.pct <= 20 || buff.avenging_wrath.up || buff.crusade.up || buff.empyrean_power.up )", ["list_name"] = "finishers", }, { ["enabled"] = true, ["criteria"] = "! consecration.up & spell_targets.divine_storm >= 2", ["action"] = "consecration", }, { ["enabled"] = true, ["criteria"] = "spell_targets.divine_storm >= 2", ["action"] = "divine_hammer", }, { ["enabled"] = true, ["criteria"] = "cooldown.crusader_strike.charges_fractional >= 1.75 & ( holy_power <= 2 || holy_power <= 3 & cooldown.blade_of_justice.remains > gcd.max * 2 || holy_power = 4 & cooldown.blade_of_justice.remains > gcd.max * 2 & cooldown.judgment.remains > gcd.max * 2 )", ["action"] = "crusader_strike", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "finishers", }, { ["action"] = "templar_slash", ["enabled"] = true, }, { ["action"] = "templar_strike", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "holy_power <= 3 || ! talent.boundless_judgment.enabled", ["action"] = "judgment", }, { ["enabled"] = true, ["criteria"] = "holy_power <= 3 || target.health.pct > 20 || ! talent.vanguards_momentum.enabled", ["action"] = "hammer_of_wrath", }, { ["action"] = "crusader_strike", ["enabled"] = true, }, { ["action"] = "arcane_torrent", ["enabled"] = true, }, { ["action"] = "consecration", ["enabled"] = true, }, { ["action"] = "divine_hammer", ["enabled"] = true, }, }, ["finishers"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "( spell_targets.divine_storm >= 3 || spell_targets.divine_storm >= 2 & ! talent.divine_arbiter.enabled || buff.empyrean_power.up ) & ! buff.empyrean_legacy.up & ! ( buff.divine_arbiter.up & buff.divine_arbiter.stack > 24 )", ["var_name"] = "ds_castable", }, { ["enabled"] = true, ["criteria"] = "variable.ds_castable & ( ! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 || buff.crusade.up & buff.crusade.stack < 10 )", ["action"] = "divine_storm", }, { ["enabled"] = true, ["criteria"] = "! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 || buff.crusade.up & buff.crusade.stack < 10", ["action"] = "justicars_vengeance", }, { ["enabled"] = true, ["criteria"] = "! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 || buff.crusade.up & buff.crusade.stack < 10", ["action"] = "templars_verdict", }, }, ["cooldowns"] = { { ["enabled"] = true, ["criteria"] = "buff.avenging_wrath.up || buff.crusade.up & buff.crusade.stack = 10 || boss & fight_remains < 25", ["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", ["action"] = "fireblood", }, { ["enabled"] = true, ["criteria"] = "( cooldown.avenging_wrath.remains < 5 & ! talent.crusade.enabled || cooldown.crusade.remains < 5 & talent.crusade.enabled ) & ( holy_power >= 4 & time < 5 || holy_power >= 3 & time > 5 )", ["name"] = "algethar_puzzle_box", ["action"] = "algethar_puzzle_box", }, { ["enabled"] = true, ["criteria"] = "( buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 40 || buff.crusade.up & buff.crusade.stack = 10 ) & ( ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || trinket.t1.buff_duration >= fight_remains", ["action"] = "trinket1", ["slot"] = "trinket1", }, { ["enabled"] = true, ["criteria"] = "( buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 40 || buff.crusade.up & buff.crusade.stack = 10 ) & ( ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || trinket.t2.buff_duration >= fight_remains", ["action"] = "trinket2", ["slot"] = "trinket2", }, { ["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"] = "( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs )", ["name"] = "main_hand", ["action"] = "main_hand", }, { ["enabled"] = true, ["criteria"] = "( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs )", ["name"] = "shadowed_razing_annihilator", ["action"] = "shadowed_razing_annihilator", }, { ["enabled"] = true, ["criteria"] = "dot.mark_of_fyralath.ticking & ! buff.avenging_wrath.up & ! buff.crusade.up", ["name"] = "fyralath_the_dreamrender", ["action"] = "fyralath_the_dreamrender", }, { ["enabled"] = true, ["criteria"] = "fight_remains > 15 & ( ! talent.execution_sentence.enabled || ! debuff.execution_sentence.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 ) & ( holy_power >= 4 & time < 5 || holy_power >= 3 & time > 5 || holy_power >= 2 & talent.divine_auxiliary.enabled ) & ( target.time_to_die > 8 & ! talent.executioners_will.enabled || target.time_to_die > 12 )", ["action"] = "execution_sentence", }, { ["enabled"] = true, ["criteria"] = "holy_power >= 4 & time < 5 || holy_power >= 3 & time > 5 || holy_power >= 2 & talent.divine_auxiliary.enabled & ( talent.execution_sentence.enabled & ( cooldown.execution_sentence.remains = 0 || cooldown.execution_sentence.remains > 15 || action.execution_sentence.disabled ) || talent.final_reckoning.enabled & ( cooldown.final_reckoning.remains = 0 || cooldown.final_reckoning.remains > 30 || action.final_reckoning.disabled ) )", ["action"] = "avenging_wrath", }, { ["enabled"] = true, ["criteria"] = "buff.crusade.remains < gcd.max & ( 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.crusade.enabled & ( buff.avenging_wrath.up || cooldown.avenging_wrath.remains > 30 || action.avenging_wrath.disabled ) || talent.crusade.enabled & ( cooldown.crusade.remains > 30 & ( ! buff.crusade.up || buff.crusade.stack >= 10 ) || action.crusade.disabled ) ) & ( time_to_hpg > 0 || holy_power = 5 || holy_power >= 2 & talent.divine_auxiliary.enabled )", ["action"] = "final_reckoning", }, }, }, }, }, }, ["Quillika - Deathwing"] = { ["toggles"] = { ["essences"] = { ["value"] = false, }, }, ["specs"] = { [255] = { ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["settings"] = { ["ca_vop_overlap"] = false, ["allow_focus_overcap"] = false, ["mark_any"] = false, ["use_harpoon"] = true, ["manual_kill_shot"] = false, }, ["maxTime"] = 33, }, [254] = { ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["settings"] = { ["mark_any"] = false, ["prevent_hardcasts"] = true, ["eagletalon_swap"] = false, ["trueshot_vop_overlap"] = false, }, ["maxTime"] = 33, }, [253] = { ["potionsReset"] = 20180919.1, ["maxRefresh"] = 10, ["settings"] = { ["check_pet_range"] = true, ["avoid_bw_overlap"] = false, ["barbed_shot_grace_period"] = 0.5, ["aspect_vop_overlap"] = false, ["mark_any"] = false, }, ["maxTime"] = 33, }, [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, ["zoom"] = 25, ["y"] = -294.9996337890625, ["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"] = 20231224, ["author"] = "SimC", ["desc"] = "2023-12-06: Hunter's Mark adjustment.\n\n2023-11-16: Hunter's Mark.\n\n2023-11-08: Add missing variable and lists.\n\n2023-11-05: Patch 10.2.\n\n2023-07-19: Make Trueshot conditions more forgiving in short fights.\n\n2023-07-15: Make Trueshot conditions more transparent.\n\n2023-07-02: Rapid Fire timing vs. Aimed Shot; add Steel Trap.\n\n2023-06-26: Don't Trueshot during a Trueshot.\n\n2023-05-12: Simplify Trueshot logic and remove a Steady Shot entry.\n\n2023-04-30: Trigger Salvo with Multi-Shot when Volley isn't talented.\n\n2023-04-26: Update from SimulationCraft.", ["lists"] = { ["trickshots"] = { { ["enabled"] = true, ["criteria"] = "talent.steady_focus.enabled & steady_focus_count & buff.steady_focus.remains < 8", ["action"] = "steady_shot", }, { ["enabled"] = true, ["criteria"] = "buff.razor_fragments.up", ["action"] = "kill_shot", }, { ["action"] = "explosive_shot", ["enabled"] = true, }, { ["action"] = "death_chakram", ["enabled"] = true, }, { ["action"] = "stampede", ["enabled"] = true, }, { ["action"] = "wailing_arrow", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "serpent_sting", ["criteria"] = "refreshable & talent.hydras_bite.enabled & ! talent.serpentstalkers_trickery.enabled", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "active_enemies > 7", ["action"] = "barrage", }, { ["action"] = "volley", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.trick_shots.remains >= execute_time & talent.surging_shots.enabled", ["action"] = "rapid_fire", }, { ["enabled"] = true, ["criteria"] = "variable.trueshot_ready", ["action"] = "trueshot", }, { ["enabled"] = true, ["description"] = "For Serpentstalker's Trickery, target the lowest remaining Serpent Sting. Generally only cast if it would cleave with Trick Shots. Don't overwrite Precise Shots unless Trueshot is up or Aimed Shot would cap otherwise.", ["action"] = "aimed_shot", ["criteria"] = "talent.serpentstalkers_trickery.enabled & ( buff.trick_shots.remains >= execute_time & ( buff.precise_shots.down || buff.trueshot.up || full_recharge_time < cast_time + gcd.max ) )", }, { ["enabled"] = true, ["action"] = "aimed_shot", ["cycle_targets"] = 1, ["criteria"] = "( buff.trick_shots.remains >= execute_time & ( buff.precise_shots.down || buff.trueshot.up || full_recharge_time < cast_time + gcd.max ) )", ["description"] = "For no Serpentstalker's Trickery, target the highest Latent Poison stack. Same general rules as the previous line.", }, { ["enabled"] = true, ["criteria"] = "buff.trick_shots.remains >= execute_time", ["action"] = "rapid_fire", }, { ["enabled"] = true, ["criteria"] = "buff.trick_shots.up & buff.precise_shots.up & focus > cost + action.aimed_shot.cost & active_enemies < 4", ["action"] = "chimaera_shot", }, { ["enabled"] = true, ["criteria"] = "buff.trick_shots.down || ( buff.precise_shots.up || buff.bulletstorm.stack = 10 ) & focus > cost + action.aimed_shot.cost", ["action"] = "multishot", }, { ["enabled"] = true, ["action"] = "serpent_sting", ["cycle_targets"] = 1, ["criteria"] = "refreshable & talent.poison_injection.enabled & ! talent.serpentstalkers_trickery.enabled", ["description"] = "Only use baseline Serpent Sting as a filler in cleave if it's the only source of applying Latent Poison.", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.down", ["action"] = "steel_trap", }, { ["enabled"] = true, ["criteria"] = "focus > cost + action.aimed_shot.cost", ["action"] = "kill_shot", }, { ["enabled"] = true, ["criteria"] = "focus > cost + action.aimed_shot.cost", ["action"] = "multishot", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.down", ["action"] = "bag_of_tricks", }, { ["action"] = "steady_shot", ["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 & ( ! 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 )", ["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.", ["var_name"] = "trueshot_ready", }, { ["enabled"] = true, ["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.health_pct > 80 & ( group || target.time_to_pct_80 > gcd.max * 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", ["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", }, }, ["cleave"] = { { ["enabled"] = true, ["criteria"] = "buff.coordinated_assault_empower.up & talent.birds_of_prey.enabled", ["action"] = "kill_shot", }, { ["enabled"] = true, ["criteria"] = "cooldown.death_chakram.duration = 45", ["action"] = "death_chakram", }, { ["action"] = "wildfire_bomb", ["enabled"] = true, }, { ["action"] = "stampede", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( cooldown.fury_of_the_eagle.remains || ! talent.fury_of_the_eagle.enabled )", ["action"] = "coordinated_assault", }, { ["action"] = "explosive_shot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "cooldown.wildfire_bomb.full_recharge_time > spell_targets / 2", ["action"] = "carve", }, { ["enabled"] = true, ["name"] = "djaruun_pillar_of_the_elder_flame", ["action"] = "djaruun_pillar_of_the_elder_flame", }, { ["enabled"] = true, ["criteria"] = "cooldown.butchery.full_recharge_time > cast_time & raid_event.adds.exists || ! talent.butchery.enabled", ["action"] = "fury_of_the_eagle", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.exists", ["action"] = "butchery", }, { ["enabled"] = true, ["criteria"] = "( full_recharge_time < gcd.max || dot.shrapnel_bomb.ticking & ( dot.internal_bleeding.stack < 2 || dot.shrapnel_bomb.remains < gcd.max || raid_event.adds.remains < 10 ) ) & ! raid_event.adds.exists", ["action"] = "butchery", }, { ["enabled"] = true, ["criteria"] = "! raid_event.adds.exists", ["action"] = "fury_of_the_eagle", }, { ["enabled"] = true, ["criteria"] = "dot.shrapnel_bomb.ticking", ["action"] = "carve", }, { ["enabled"] = true, ["criteria"] = "( ! next_wi_bomb.shrapnel || ! talent.wildfire_infusion.enabled )", ["action"] = "butchery", }, { ["enabled"] = true, ["action"] = "mongoose_bite", ["criteria"] = "debuff.latent_poison.stack > 8", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "raptor_strike", ["criteria"] = "debuff.latent_poison.stack > 8", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "kill_command", ["criteria"] = "focus + cast_regen < focus.max & full_recharge_time < gcd.max", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max", ["action"] = "flanking_strike", }, { ["action"] = "carve", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! buff.coordinated_assault.up", ["action"] = "kill_shot", }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max", ["action"] = "steel_trap", }, { ["action"] = "spearhead", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "mongoose_bite", ["criteria"] = "buff.spearhead.remains", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "serpent_sting", ["criteria"] = "refreshable & target.time_to_die > 12 & ( ! talent.vipers_venom.enabled || talent.hydras_bite.enabled )", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "mongoose_bite", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "raptor_strike", ["cycle_targets"] = 1, }, }, ["cds"] = { { ["enabled"] = true, ["criteria"] = "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 < 26", ["action"] = "potion", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 2 || cooldown.volley.remains < 10", ["action"] = "salvo", }, }, ["trinkets"] = { { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "variable.trueshot_ready", ["description"] = "True if effects that are desirable to sync a trinket buff with are ready.", ["var_name"] = "sync_ready", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "buff.trueshot.up", ["description"] = "True if effecs that are desirable to sync a trinket buff with are active.", ["var_name"] = "sync_active", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "cooldown.trueshot.remains_guess", ["description"] = "Time until the effects that are desirable to sync a trinket buff with will be ready.", ["var_name"] = "sync_remains", }, { ["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 & 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 )", ["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.", }, { ["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, ["criteria"] = "talent.steady_focus.enabled & steady_focus_count & ( buff.steady_focus.remains < 8 || buff.steady_focus.down & ! buff.trueshot.up )", ["action"] = "steady_shot", }, { ["enabled"] = true, ["criteria"] = "buff.trick_shots.remains < execute_time", ["action"] = "rapid_fire", }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max", ["action"] = "kill_shot", }, { ["enabled"] = true, ["criteria"] = "buff.salvo.up || variable.trueshot_ready || cooldown.trueshot.remains > 45 || boss & fight_remains < 12", ["action"] = "volley", }, { ["enabled"] = true, ["action"] = "serpent_sting", ["criteria"] = "refreshable & ! talent.serpentstalkers_trickery.enabled & buff.trueshot.down", ["cycle_targets"] = 1, }, { ["action"] = "explosive_shot", ["enabled"] = true, }, { ["action"] = "stampede", ["enabled"] = true, }, { ["action"] = "death_chakram", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "active_enemies > 1", ["action"] = "wailing_arrow", }, { ["enabled"] = true, ["criteria"] = "( talent.surging_shots.enabled || action.aimed_shot.full_recharge_time > action.aimed_shot.cast_time + cast_time ) & ( focus + cast_regen < focus.max )", ["action"] = "rapid_fire", }, { ["enabled"] = true, ["criteria"] = "cooldown.trueshot.ready & buff.trueshot.down & ( active_enemies = 1 & ( ! talent.bullseye.enabled || time < 15 || expected_combat_length > cooldown.trueshot.duration || 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 ) || active_enemies > 1 || boss & fight_remains < 25 )", ["action"] = "trueshot", }, { ["enabled"] = true, ["description"] = "Trigger Salvo if Volley isn't being used to trigger it.", ["criteria"] = "buff.salvo.up & ! talent.volley.enabled", ["action"] = "multishot", }, { ["enabled"] = true, ["action"] = "aimed_shot", ["cycle_targets"] = 1, ["criteria"] = "talent.serpentstalkers_trickery.enabled & ( buff.precise_shots.down || ( buff.trueshot.up || full_recharge_time < gcd.max + cast_time ) & ( ! talent.chimaera_shot.enabled || active_enemies < 2 || ca_active ) || buff.trick_shots.remains > execute_time & active_enemies > 1 )", ["description"] = "With Serpentstalker's Trickery target the lowest remaining Serpent Sting. Without Chimaera Shot don't overwrite Precise Shots unless either Trueshot is active or Aimed Shot would cap before its next cast. On two targets with Chimaera Shot don't overwrite Precise Shots unless the target is within Careful Aim range in addition to either Trueshot being active or Aimed Shot capping before its next cast. Overwrite freely if it can cleave.", }, { ["enabled"] = true, ["action"] = "aimed_shot", ["cycle_targets"] = 1, ["criteria"] = "buff.precise_shots.down || ( buff.trueshot.up || full_recharge_time < gcd.max + cast_time ) & ( ! talent.chimaera_shot.enabled || active_enemies < 2 || ca_active ) || buff.trick_shots.remains > execute_time & active_enemies > 1", ["description"] = "Without Serpentstalker's Trickery, target the highest Latent Poison stack. Same rules as the previous line.", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.down", ["action"] = "wailing_arrow", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.down", ["action"] = "kill_command", }, { ["action"] = "steel_trap", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.precise_shots.up || focus > cost + action.aimed_shot.cost", ["action"] = "chimaera_shot", }, { ["enabled"] = true, ["criteria"] = "buff.precise_shots.up || focus > cost + action.aimed_shot.cost", ["action"] = "arcane_shot", }, { ["enabled"] = true, ["criteria"] = "buff.trueshot.down", ["action"] = "bag_of_tricks", }, { ["action"] = "steady_shot", ["enabled"] = true, }, }, ["precombat"] = { { ["enabled"] = true, ["criteria"] = "! talent.lone_wolf.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 ) )", ["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.", ["var_name"] = "trinket_1_stronger", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "! variable.trinket_1_stronger", ["var_name"] = "trinket_2_stronger", }, { ["enabled"] = true, ["precast_time"] = "10", ["action"] = "salvo", }, { ["enabled"] = true, ["name"] = "algethar_puzzle_box", ["action"] = "algethar_puzzle_box", }, { ["enabled"] = true, ["description"] = "Precast Aimed Shot on one or two targets unless we could cleave it with Volley on two targets.", ["criteria"] = "active_enemies < 3 & ( ! talent.volley.enabled || active_enemies < 2 )", ["action"] = "aimed_shot", }, { ["enabled"] = true, ["criteria"] = "active_enemies > 2 || ! talent.steady_focus.enabled", ["action"] = "wailing_arrow", }, { ["enabled"] = true, ["description"] = "Precast Steady Shot on two targets if we are saving Aimed Shot to cleave with Volley, otherwise on three or more targets.", ["criteria"] = "active_enemies > 2 || talent.volley.enabled & active_enemies = 2", ["action"] = "steady_shot", }, }, }, ["version"] = 20231224, ["warnings"] = "The import for 'trickshots' required some automated changes.\nLine 1: Converted 'talent.steady_focus' to 'talent.steady_focus.enabled' (1x).\nLine 7: Converted 'talent.hydras_bite' to 'talent.hydras_bite.enabled' (1x).\nLine 7: Converted 'talent.serpentstalkers_trickery' to 'talent.serpentstalkers_trickery.enabled' (1x).\nLine 10: Converted 'talent.surging_shots' to 'talent.surging_shots.enabled' (1x).\nLine 12: Converted 'talent.serpentstalkers_trickery' to 'talent.serpentstalkers_trickery.enabled' (1x).\nLine 17: Converted 'talent.poison_injection' to 'talent.poison_injection.enabled' (1x).\nLine 17: Converted 'talent.serpentstalkers_trickery' to 'talent.serpentstalkers_trickery.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&(!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&(!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 7: Converted 'talent.trick_shots' to 'talent.trick_shots.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 1: Converted 'talent.lone_wolf' to 'talent.lone_wolf.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 6: Converted 'talent.volley' to 'talent.volley.enabled' (1x).\nLine 7: Converted 'talent.steady_focus' to 'talent.steady_focus.enabled' (1x).\nLine 8: Converted 'talent.volley' to 'talent.volley.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\nThe import for 'st' required some automated changes.\nLine 1: Converted 'talent.steady_focus' to 'talent.steady_focus.enabled' (1x).\nLine 5: Converted 'talent.serpentstalkers_trickery' to 'talent.serpentstalkers_trickery.enabled' (1x).\nLine 10: Converted 'talent.surging_shots' to 'talent.surging_shots.enabled' (1x).\nLine 11: Converted 'talent.bullseye' to 'talent.bullseye.enabled' (1x).\nLine 11: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\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.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 11: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 11: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (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 11: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 11: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 11: Converted operations in 'cooldown.trueshot.ready&buff.trueshot.down&(active_enemies=1&(!talent.bullseye.enabled||time<15||expected_combat_length>cooldown.trueshot.duration||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)||active_enemies>1||boss&fight_remains<25)' to 'cooldown.trueshot.ready&buff.trueshot.down&(active_enemies=1&(!talent.bullseye.enabled||time<15||expected_combat_length>cooldown.trueshot.duration||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)||active_enemies>1||boss&fight_remains<25)'.\nLine 12: Converted 'talent.volley' to 'talent.volley.enabled' (1x).\nLine 13: Converted 'talent.serpentstalkers_trickery' to 'talent.serpentstalkers_trickery.enabled' (1x).\nLine 13: Converted 'talent.chimaera_shot' to 'talent.chimaera_shot.enabled' (1x).\nLine 14: Converted 'talent.chimaera_shot' to 'talent.chimaera_shot.enabled' (1x).\n\nThe import for 'cleave' required some automated changes.\nLine 1: Converted 'talent.birds_of_prey' to 'talent.birds_of_prey.enabled' (1x).\nLine 5: Converted 'talent.fury_of_the_eagle' to 'talent.fury_of_the_eagle.enabled' (1x).\nLine 7: Converted operations in 'cooldown.wildfire_bomb.full_recharge_time>spell_targets%2' to 'cooldown.wildfire_bomb.full_recharge_time>spell_targets/2'.\nLine 9: Converted 'talent.butchery' to 'talent.butchery.enabled' (1x).\nLine 14: Converted 'talent.wildfire_infusion' to 'talent.wildfire_infusion.enabled' (1x).\nLine 24: Converted 'talent.vipers_venom' to 'talent.vipers_venom.enabled' (1x).\nLine 24: Converted 'talent.hydras_bite' to 'talent.hydras_bite.enabled' (1x).\n\nImported 7 action lists.\n", ["spec"] = 254, ["profile"] = "actions.precombat+=/summon_pet,if=!talent.lone_wolf\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.duration2||!talent.steady_focus\n# Precast Steady Shot on two targets if we are saving Aimed Shot to cleave with Volley, otherwise on three or more targets.\nactions.precombat+=/steady_shot,if=active_enemies>2||talent.volley&active_enemies=2\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&(!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+=/hunters_mark,if=(settings.mark_any||target.is_boss)&active_dot.hunters_mark=0&target.health_pct>80&(group||target.time_to_pct_80>gcd.max*20)\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=trinkets\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### Call for Power Infusion when Trueshot is up.\n## actions.cds+=/invoke_external_buff,name=power_infusion,if=buff.trueshot.remains>12\nactions.cds+=/berserking,if=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<26\nactions.cds+=/salvo,if=active_enemies>2||cooldown.volley.remains<10\n\nactions.cleave+=/kill_shot,if=buff.coordinated_assault_empower.up&talent.birds_of_prey\nactions.cleave+=/death_chakram,if=cooldown.death_chakram.duration=45\nactions.cleave+=/wildfire_bomb\nactions.cleave+=/stampede\nactions.cleave+=/coordinated_assault,if=(cooldown.fury_of_the_eagle.remains||!talent.fury_of_the_eagle)\nactions.cleave+=/explosive_shot\nactions.cleave+=/carve,if=cooldown.wildfire_bomb.full_recharge_time>spell_targets%2\nactions.cleave+=/use_item,name=djaruun_pillar_of_the_elder_flame\nactions.cleave+=/fury_of_the_eagle,if=cooldown.butchery.full_recharge_time>cast_time&raid_event.adds.exists||!talent.butchery\nactions.cleave+=/butchery,if=raid_event.adds.exists\nactions.cleave+=/butchery,if=(full_recharge_time8\nactions.cleave+=/raptor_strike,cycle_targets=1,if=debuff.latent_poison.stack>8\nactions.cleave+=/kill_command,cycle_targets=1,if=focus+cast_regen12&(!talent.vipers_venom||talent.hydras_bite)\nactions.cleave+=/mongoose_bite,cycle_targets=1,\nactions.cleave+=/raptor_strike,cycle_targets=1,\n\nactions.st+=/steady_shot,if=talent.steady_focus&steady_focus_count&(buff.steady_focus.remains<8||buff.steady_focus.down&!buff.trueshot.up)\nactions.st+=/rapid_fire,if=buff.trick_shots.remains45||boss&fight_remains<12\nactions.st+=/serpent_sting,cycle_targets=1,if=refreshable&!talent.serpentstalkers_trickery&buff.trueshot.down\nactions.st+=/explosive_shot\nactions.st+=/stampede\nactions.st+=/death_chakram\nactions.st+=/wailing_arrow,if=active_enemies>1\nactions.st+=/rapid_fire,if=(talent.surging_shots||action.aimed_shot.full_recharge_time>action.aimed_shot.cast_time+cast_time)&(focus+cast_regencooldown.trueshot.duration||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)||active_enemies>1||boss&fight_remains<25)\n# Trigger Salvo if Volley isn't being used to trigger it.\nactions.st+=/multishot,if=buff.salvo.up&!talent.volley\n# With Serpentstalker's Trickery target the lowest remaining Serpent Sting. Without Chimaera Shot don't overwrite Precise Shots unless either Trueshot is active or Aimed Shot would cap before its next cast. On two targets with Chimaera Shot don't overwrite Precise Shots unless the target is within Careful Aim range in addition to either Trueshot being active or Aimed Shot capping before its next cast. Overwrite freely if it can cleave.\nactions.st+=/aimed_shot,cycle_targets=1,if=talent.serpentstalkers_trickery&(buff.precise_shots.down||(buff.trueshot.up||full_recharge_timeexecute_time&active_enemies>1)\n# Without Serpentstalker's Trickery, target the highest Latent Poison stack. Same rules as the previous line.\nactions.st+=/aimed_shot,cycle_targets=1,if=buff.precise_shots.down||(buff.trueshot.up||full_recharge_timeexecute_time&active_enemies>1\nactions.st+=/wailing_arrow,if=buff.trueshot.down\nactions.st+=/kill_command,if=buff.trueshot.down\nactions.st+=/steel_trap\nactions.st+=/chimaera_shot,if=buff.precise_shots.up||focus>cost+action.aimed_shot.cost\nactions.st+=/arcane_shot,if=buff.precise_shots.up||focus>cost+action.aimed_shot.cost\nactions.st+=/bag_of_tricks,if=buff.trueshot.down\nactions.st+=/steady_shot\n\nactions.trickshots+=/steady_shot,if=talent.steady_focus&steady_focus_count&buff.steady_focus.remains<8\nactions.trickshots+=/kill_shot,if=buff.razor_fragments.up\nactions.trickshots+=/explosive_shot\nactions.trickshots+=/death_chakram\nactions.trickshots+=/stampede\nactions.trickshots+=/wailing_arrow\nactions.trickshots+=/serpent_sting,cycle_targets=1,if=refreshable&talent.hydras_bite&!talent.serpentstalkers_trickery\nactions.trickshots+=/barrage,if=active_enemies>7\nactions.trickshots+=/volley\nactions.trickshots+=/rapid_fire,if=buff.trick_shots.remains>=execute_time&talent.surging_shots\nactions.trickshots+=/trueshot,if=variable.trueshot_ready\n# For Serpentstalker's Trickery, target the lowest remaining Serpent Sting. Generally only cast if it would cleave with Trick Shots. Don't overwrite Precise Shots unless Trueshot is up or Aimed Shot would cap otherwise.\nactions.trickshots+=/aimed_shot,cycle_targets=1+action.serpent_sting.in_flight_to_target*99,if=talent.serpentstalkers_trickery&(buff.trick_shots.remains>=execute_time&(buff.precise_shots.down||buff.trueshot.up||full_recharge_time=execute_time&(buff.precise_shots.down||buff.trueshot.up||full_recharge_time=execute_time\nactions.trickshots+=/chimaera_shot,if=buff.trick_shots.up&buff.precise_shots.up&focus>cost+action.aimed_shot.cost&active_enemies<4\nactions.trickshots+=/multishot,if=buff.trick_shots.down||(buff.precise_shots.up||buff.bulletstorm.stack=10)&focus>cost+action.aimed_shot.cost\n# Only use baseline Serpent Sting as a filler in cleave if it's the only source of applying Latent Poison.\nactions.trickshots+=/serpent_sting,cycle_targets=1,if=refreshable&talent.poison_injection&!talent.serpentstalkers_trickery\nactions.trickshots+=/steel_trap,if=buff.trueshot.down\nactions.trickshots+=/kill_shot,if=focus>cost+action.aimed_shot.cost\nactions.trickshots+=/multishot,if=focus>cost+action.aimed_shot.cost\nactions.trickshots+=/bag_of_tricks,if=buff.trueshot.down\nactions.trickshots+=/steady_shot\n\n# True if effects that are desirable to sync a trinket buff with are ready.\nactions.trinkets+=/variable,name=sync_ready,value=variable.trueshot_ready\n# True if effecs that are desirable to sync a trinket buff with are active.\nactions.trinkets+=/variable,name=sync_active,value=buff.trueshot.up\n# Time until the effects that are desirable to sync a trinket buff with will be ready.\nactions.trinkets+=/variable,name=sync_remains,value=cooldown.trueshot.remains_guess\n# 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.\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=trinket.1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger||trinket.2.cooldown.remains)||!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.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"] = 20240110, ["author"] = "SimC", ["desc"] = "2023-12-28 & 2024-01-10: Minor sim update.\n\n2023-12-10 & 12: Remove Scent of Blood checks on Barbed Shot.\n\n2023-12-06: Minor sim update; Hunter's Mark setting.\n\n2023-11-16: Hunter's Mark.\n\n2023-11-07: Further 10.2 updates.\n\n2023-11-05: Patch 10.2.\n\n2023-06-24: Use Kill Command in Cleave with Kill Cleave talent.\n\n2023-04-26: Update from SimulationCraft.\n\n2023-03-28: Racial cooldown usage adjusted for Call of the Wild vs. Bestial Wrath.", ["lists"] = { ["default"] = { { ["enabled"] = true, ["description"] = "Executed every time the actor is available.", ["action"] = "counter_shot", }, { ["action"] = "tranquilizing_shot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.health_pct > 80 & ( group || target.time_to_pct_80 > gcd.max * 20 )", ["action"] = "hunters_mark", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "! raid_event.adds.exists & ( ( ! trinket.t1.has_use_buff || trinket.t1.cooldown.remains > 30 || trinket.t1.cooldown.ready || trinket.t1.cooldown.remains + cooldown.call_of_the_wild.duration + 15 > fight_remains ) & ( ! trinket.t2.has_use_buff || trinket.t2.cooldown.remains > 30 || trinket.t2.cooldown.ready || trinket.t2.cooldown.remains + cooldown.call_of_the_wild.duration + 15 > fight_remains ) || fight_remains < cooldown.call_of_the_wild.duration + 20 ) || 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", ["description"] = "Determine if it is a good time to use Call of the Wild. 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 with buff effect trinkets if it won't lose a usage.", ["var_name"] = "cotw_ready", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cds", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "trinkets", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "active_enemies < 2 || ! talent.beast_cleave.enabled & active_enemies < 3", ["list_name"] = "st", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "active_enemies > 2 || talent.beast_cleave.enabled & active_enemies > 1", ["list_name"] = "cleave", }, }, ["precombat"] = { { ["action"] = "summon_pet", ["enabled"] = true, }, { ["action"] = "bottled_flayedwing_toxin", ["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 ) )", ["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.", ["var_name"] = "trinket_1_stronger", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "! variable.trinket_1_stronger", ["var_name"] = "trinket_2_stronger", }, { ["enabled"] = true, ["precast_time"] = "1.5", ["action"] = "steel_trap", ["criteria"] = "! talent.wailing_arrow.enabled & talent.steel_trap.enabled", }, }, ["cleave"] = { { ["enabled"] = true, ["action"] = "barbed_shot", ["criteria"] = "debuff.latent_poison.stack > 9 & ( buff.frenzy.up & buff.frenzy.remains <= gcd.max + 0.25 || cooldown.bestial_wrath.remains < 12 + gcd.max || buff.frenzy.stack < 3 & ( cooldown.bestial_wrath.ready || cooldown.call_of_the_wild.ready ) || full_recharge_time < gcd.max & cooldown.bestial_wrath.remains )", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "barbed_shot", ["criteria"] = "buff.frenzy.up & buff.frenzy.remains <= gcd.max + 0.25 || cooldown.bestial_wrath.remains < 12 + gcd.max || buff.frenzy.stack < 3 & ( cooldown.bestial_wrath.ready || cooldown.call_of_the_wild.ready ) || full_recharge_time < gcd.max & cooldown.bestial_wrath.remains", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.beast_cleave.remains < 0.25 + gcd.max & ( ! talent.bloody_frenzy.enabled || cooldown.call_of_the_wild.remains )", ["action"] = "multishot", }, { ["action"] = "bestial_wrath", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "variable.cotw_ready", ["action"] = "call_of_the_wild", }, { ["enabled"] = true, ["criteria"] = "talent.kill_cleave.enabled", ["action"] = "kill_command", }, { ["action"] = "explosive_shot", ["enabled"] = true, }, { ["action"] = "stampede", ["enabled"] = true, }, { ["action"] = "bloodshed", ["enabled"] = true, }, { ["action"] = "death_chakram", ["enabled"] = true, }, { ["action"] = "steel_trap", ["enabled"] = true, }, { ["action"] = "a_murder_of_crows", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "barbed_shot", ["criteria"] = "debuff.latent_poison.stack > 9 & ( buff.call_of_the_wild.up || fight_remains < 9 || talent.wild_call.enabled & charges_fractional > 1.2 || talent.savagery.enabled )", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "barbed_shot", ["criteria"] = "buff.call_of_the_wild.up || fight_remains < 9 || talent.wild_call.enabled & charges_fractional > 1.2 || talent.savagery.enabled", ["cycle_targets"] = 1, }, { ["action"] = "kill_command", ["enabled"] = true, }, { ["action"] = "dire_beast", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "serpent_sting", ["criteria"] = "refreshable & target.time_to_die > duration", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "buff.frenzy.remains > execute_time", ["action"] = "barrage", }, { ["enabled"] = true, ["criteria"] = "buff.beast_cleave.remains < gcd.max * 2", ["action"] = "multishot", }, { ["enabled"] = true, ["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5", ["action"] = "lights_judgment", }, { ["action"] = "kill_shot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "focus.time_to_max < gcd.max * 2", ["action"] = "cobra_shot", }, { ["enabled"] = true, ["criteria"] = "buff.frenzy.remains > execute_time || boss & fight_remains < 5", ["action"] = "wailing_arrow", }, { ["enabled"] = true, ["criteria"] = "buff.bestial_wrath.down || boss & fight_remains < 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.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.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.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.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.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 31", ["action"] = "potion", }, }, ["st"] = { { ["enabled"] = true, ["action"] = "barbed_shot", ["criteria"] = "buff.frenzy.up & buff.frenzy.remains <= gcd.max + 0.25 || buff.frenzy.stack < 3 & ( cooldown.bestial_wrath.ready || cooldown.call_of_the_wild.ready )", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "! talent.wild_instincts.enabled & full_recharge_time < gcd.max & talent.alpha_predator.enabled", ["action"] = "kill_command", }, { ["enabled"] = true, ["criteria"] = "! talent.wild_instincts.enabled & variable.cotw_ready", ["action"] = "call_of_the_wild", }, { ["action"] = "stampede", ["enabled"] = true, }, { ["action"] = "bloodshed", ["enabled"] = true, }, { ["action"] = "bestial_wrath", ["enabled"] = true, }, { ["action"] = "death_chakram", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "variable.cotw_ready", ["action"] = "call_of_the_wild", }, { ["action"] = "kill_command", ["enabled"] = true, }, { ["action"] = "a_murder_of_crows", ["enabled"] = true, }, { ["action"] = "steel_trap", ["enabled"] = true, }, { ["action"] = "explosive_shot", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "barbed_shot", ["criteria"] = "talent.wild_call.enabled & charges_fractional > 1.4 || buff.call_of_the_wild.up || full_recharge_time < gcd.max & cooldown.bestial_wrath.remains || ( cooldown.bestial_wrath.remains < 12 + gcd.max ) || talent.savagery.enabled || fight_remains < 9", ["cycle_targets"] = 1, }, { ["action"] = "dire_beast", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "serpent_sting", ["criteria"] = "refreshable & target.time_to_die > duration", ["cycle_targets"] = 1, }, { ["action"] = "kill_shot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5", ["action"] = "lights_judgment", }, { ["action"] = "cobra_shot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "buff.frenzy.remains > execute_time || target.time_to_die < 5", ["action"] = "wailing_arrow", }, { ["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.call_of_the_wild.enabled & ( buff.bestial_wrath.up || cooldown.bestial_wrath.remains_guess < 5 )", ["description"] = "True if effects that are desirable to sync a trinket buff with are ready.", ["var_name"] = "sync_ready", }, { ["enabled"] = true, ["op"] = "set", ["action"] = "variable", ["value"] = "talent.call_of_the_wild.enabled & buff.call_of_the_wild.up || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up", ["description"] = "True if effecs that are desirable to sync a trinket buff with are active.", ["var_name"] = "sync_active", }, { ["enabled"] = true, ["op"] = "setif", ["description"] = "Time until the effects that are desirable to sync a trinket buff with will be ready.", ["criteria"] = "! talent.call_of_the_wild.enabled", ["value"] = "cooldown.bestial_wrath.remains_guess", ["action"] = "variable", ["value_else"] = "cooldown.call_of_the_wild.remains", ["var_name"] = "sync_remains", }, { ["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 & 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_active & variable.sync_remains > 20 || trinket.t2.cooldown.remains > 20 ) ) || fight_remains < 25 & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains )", ["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.", }, { ["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_active & variable.sync_remains > 20 || trinket.t1.cooldown.remains > 20 ) ) || fight_remains < 25 & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains )", }, }, }, ["version"] = 20240110, ["warnings"] = "The import for 'default' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (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.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 4: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\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.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.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.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\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 3: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 3: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 3: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 3: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 3: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 3: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 3: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 3: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 3: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 3: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 3: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'talent.wailing_arrow' to 'talent.wailing_arrow.enabled' (1x).\nLine 5: Converted 'talent.steel_trap' to 'talent.steel_trap.enabled' (1x).\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.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 2: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 2: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 3: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.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&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))||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))||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))||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))||fight_remains<25&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)'.\n\nThe import for 'cds' required some automated changes.\nLine 1: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 2: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 3: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 4: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 5: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 1: Converted 'pet.main.buff.frenzy.up' to 'buff.frenzy.up' (1x).\nLine 1: Converted 'pet.main.buff.frenzy.remains' to 'buff.frenzy.remains' (1x).\nLine 1: Converted 'pet.main.buff.frenzy.stack' to 'buff.frenzy.stack' (1x).\nLine 2: Converted 'talent.wild_instincts' to 'talent.wild_instincts.enabled' (1x).\nLine 2: Converted 'talent.alpha_predator' to 'talent.alpha_predator.enabled' (1x).\nLine 3: Converted 'talent.wild_instincts' to 'talent.wild_instincts.enabled' (1x).\nLine 13: Converted 'talent.wild_call' to 'talent.wild_call.enabled' (1x).\nLine 13: Converted 'talent.savagery' to 'talent.savagery.enabled' (1x).\nLine 19: Converted 'pet.main.buff.frenzy.remains' to 'buff.frenzy.remains' (1x).\n\nThe import for 'cleave' required some automated changes.\nLine 1: Converted 'pet.main.buff.frenzy.up' to 'buff.frenzy.up' (1x).\nLine 1: Converted 'pet.main.buff.frenzy.remains' to 'buff.frenzy.remains' (1x).\nLine 1: Converted 'pet.main.buff.frenzy.stack' to 'buff.frenzy.stack' (1x).\nLine 2: Converted 'pet.main.buff.frenzy.up' to 'buff.frenzy.up' (1x).\nLine 2: Converted 'pet.main.buff.frenzy.remains' to 'buff.frenzy.remains' (1x).\nLine 2: Converted 'pet.main.buff.frenzy.stack' to 'buff.frenzy.stack' (1x).\nLine 3: Converted 'pet.main.buff.beast_cleave.remains' to 'buff.beast_cleave.remains' (1x).\nLine 3: Converted 'talent.bloody_frenzy' to 'talent.bloody_frenzy.enabled' (1x).\nLine 6: Converted 'talent.kill_cleave' to 'talent.kill_cleave.enabled' (1x).\nLine 13: Converted 'talent.wild_call' to 'talent.wild_call.enabled' (1x).\nLine 13: Converted 'talent.savagery' to 'talent.savagery.enabled' (1x).\nLine 14: Converted 'talent.wild_call' to 'talent.wild_call.enabled' (1x).\nLine 14: Converted 'talent.savagery' to 'talent.savagery.enabled' (1x).\nLine 18: Converted 'pet.main.buff.frenzy.remains' to 'buff.frenzy.remains' (1x).\nLine 19: Converted 'pet.main.buff.beast_cleave.remains' to 'buff.beast_cleave.remains' (1x).\nLine 23: Converted 'pet.main.buff.frenzy.remains' to 'buff.frenzy.remains' (1x).\n\nImported 6 action lists.\n", ["profile"] = "actions.precombat+=/summon_pet\nactions.precombat+=/bottled_flayedwing_toxin\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.duration80&(group||target.time_to_pct_80>gcd.max*20)\n# Determine if it is a good time to use Call of the Wild. 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 with buff effect trinkets if it won't lose a usage.\nactions+=/variable,name=cotw_ready,value=!raid_event.adds.exists&((!trinket.1.has_use_buff||trinket.1.cooldown.remains>30||trinket.1.cooldown.ready||trinket.1.cooldown.remains+cooldown.call_of_the_wild.duration+15>fight_remains)&(!trinket.2.has_use_buff||trinket.2.cooldown.remains>30||trinket.2.cooldown.ready||trinket.2.cooldown.remains+cooldown.call_of_the_wild.duration+15>fight_remains)||fight_remains60)||raid_event.adds.up&raid_event.adds.remains>10)||boss&fight_remains<25\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=trinkets\nactions+=/call_action_list,name=st,strict=1,if=active_enemies<2||!talent.beast_cleave&active_enemies<3\nactions+=/call_action_list,name=cleave,strict=1,if=active_enemies>2||talent.beast_cleave&active_enemies>1\n\n## Call for Power Infusion when Bestial Wrath is running, or is close to coming off cooldown (PI lasts 20 seconds and Bestial Wrath lasts 15, so 30 seconds when accounting for Barbed Shot reduction of Bestial Wrath is a good approximate fit).\n## actions.cds+=/invoke_external_buff,name=power_infusion,if=buff.call_of_the_wild.up||!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.call_of_the_wild&buff.bestial_wrath.up||boss&fight_remains<13\nactions.cds+=/blood_fury,if=buff.call_of_the_wild.up||!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.call_of_the_wild&buff.bestial_wrath.up||boss&fight_remains<16\nactions.cds+=/fireblood,if=buff.call_of_the_wild.up||!talent.call_of_the_wild&buff.bestial_wrath.up||boss&fight_remains<9\nactions.cds+=/potion,if=buff.call_of_the_wild.up||!talent.call_of_the_wild&buff.bestial_wrath.up||boss&fight_remains<31\n\nactions.st+=/barbed_shot,cycle_targets=1,if=pet.main.buff.frenzy.up&pet.main.buff.frenzy.remains<=gcd+0.25||pet.main.buff.frenzy.stack<3&(cooldown.bestial_wrath.ready||cooldown.call_of_the_wild.ready)\nactions.st+=/kill_command,if=!talent.wild_instincts&full_recharge_time1.4||buff.call_of_the_wild.up||full_recharge_timeduration\nactions.st+=/kill_shot\nactions.st+=/lights_judgment,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/cobra_shot\nactions.st+=/wailing_arrow,if=pet.main.buff.frenzy.remains>execute_time||target.time_to_die<5\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)9&(pet.main.buff.frenzy.up&pet.main.buff.frenzy.remains<=gcd+0.25||cooldown.bestial_wrath.remains<12+gcd||pet.main.buff.frenzy.stack<3&(cooldown.bestial_wrath.ready||cooldown.call_of_the_wild.ready)||full_recharge_time9&(buff.call_of_the_wild.up||fight_remains<9||talent.wild_call&charges_fractional>1.2||talent.savagery)\nactions.cleave+=/barbed_shot,cycle_targets=1,if=buff.call_of_the_wild.up||fight_remains<9||talent.wild_call&charges_fractional>1.2||talent.savagery\nactions.cleave+=/kill_command\nactions.cleave+=/dire_beast\nactions.cleave+=/serpent_sting,cycle_targets=1,if=refreshable&target.time_to_die>duration\nactions.cleave+=/barrage,if=pet.main.buff.frenzy.remains>execute_time\nactions.cleave+=/multishot,if=pet.main.buff.beast_cleave.remainsexecute_time||boss&fight_remains<5\nactions.cleave+=/bag_of_tricks,if=buff.bestial_wrath.down||boss&fight_remains<5\nactions.cleave+=/arcane_torrent,if=(focus+focus.regen+30)trinket.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))||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))||fight_remains<25&(variable.trinket_2_stronger||trinket.1.cooldown.remains)", ["spec"] = 253, }, ["Survival"] = { ["source"] = "# https://github.com/simulationcraft/simc/", ["builtIn"] = true, ["date"] = 20231206, ["author"] = "SimC", ["desc"] = "2023-12-06: Tweak Hunter's Mark.\n\n2023-11-17: Tweak Harpoon.\n\n2023-11-16: Hunter's Mark.\n\n2023-11-14: Fix KS macro.\n\n2023-11-13: Overdue 10.2 update.\n\n2023-08-02: Small tweak to Kill Command usage.\n\n2023-07-11: Patch 10.1.5 update.\n\n2023-07-02: Wildfire Bomb in cleave is simplified dramatically.\n\n2023-06-25: Import latest updates (includes use of Djaruun).\n\n2023-05-21: Kill Shot moved higher in priority.\n\n2023-05-12: Added setting to use Kill Shot during Coordinated Assault for folks using Kill Shot macros.\n\n2023-05-08: High priority Kill Command in cleave should be used for targets that will live long enough to matter.\n\n2023-04-26: Update from SimulationCraft.", ["lists"] = { ["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.health_pct > 80 & ( group || target.time_to_pct_80 > gcd.max * 20 )", ["action"] = "hunters_mark", }, { ["enabled"] = true, ["action"] = "call_action_list", ["list_name"] = "cds", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "active_enemies < 3", ["list_name"] = "st", }, { ["enabled"] = true, ["action"] = "call_action_list", ["strict"] = 1, ["criteria"] = "active_enemies > 2", ["list_name"] = "cleave", }, { ["action"] = "arcane_torrent", ["enabled"] = true, }, }, ["cleave"] = { { ["enabled"] = true, ["criteria"] = "buff.coordinated_assault_empower.up & talent.birds_of_prey.enabled || coordinated_assault_kill_shot", ["action"] = "kill_shot", }, { ["enabled"] = true, ["criteria"] = "cooldown.death_chakram.duration = 45", ["action"] = "death_chakram", }, { ["action"] = "wildfire_bomb", ["enabled"] = true, }, { ["action"] = "stampede", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "cooldown.fury_of_the_eagle.remains || ! talent.fury_of_the_eagle.enabled", ["action"] = "coordinated_assault", }, { ["action"] = "explosive_shot", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "cooldown.wildfire_bomb.full_recharge_time > spell_targets / 2", ["action"] = "carve", }, { ["enabled"] = true, ["name"] = "djaruun_pillar_of_the_elder_flame", ["action"] = "djaruun_pillar_of_the_elder_flame", }, { ["enabled"] = true, ["criteria"] = "cooldown.butchery.full_recharge_time > cast_time & raid_event.adds.exists || ! talent.butchery.enabled", ["action"] = "fury_of_the_eagle", }, { ["enabled"] = true, ["criteria"] = "raid_event.adds.exists", ["action"] = "butchery", }, { ["enabled"] = true, ["criteria"] = "( full_recharge_time < gcd.max || dot.shrapnel_bomb.ticking & ( dot.internal_bleeding.stack < 2 || dot.shrapnel_bomb.remains < gcd.max || raid_event.adds.remains < 10 ) ) & ! raid_event.adds.exists", ["action"] = "butchery", }, { ["enabled"] = true, ["criteria"] = "! raid_event.adds.exists", ["action"] = "fury_of_the_eagle", }, { ["enabled"] = true, ["criteria"] = "dot.shrapnel_bomb.ticking", ["action"] = "carve", }, { ["enabled"] = true, ["criteria"] = "( ! next_wi_bomb.shrapnel || ! talent.wildfire_infusion.enabled )", ["action"] = "butchery", }, { ["enabled"] = true, ["action"] = "mongoose_bite", ["criteria"] = "debuff.latent_poison.stack > 8", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "raptor_strike", ["criteria"] = "debuff.latent_poison.stack > 8", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "kill_command", ["criteria"] = "focus + cast_regen < focus.max & full_recharge_time < gcd.max", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max", ["action"] = "flanking_strike", }, { ["action"] = "carve", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "! buff.coordinated_assault.up", ["action"] = "kill_shot", }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max", ["action"] = "steel_trap", }, { ["action"] = "spearhead", ["enabled"] = true, }, { ["enabled"] = true, ["action"] = "mongoose_bite", ["criteria"] = "buff.spearhead.remains", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "serpent_sting", ["criteria"] = "refreshable & target.time_to_die > 12 & ( ! talent.vipers_venom.enabled || talent.hydras_bite.enabled )", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "mongoose_bite", ["cycle_targets"] = 1, }, { ["enabled"] = true, ["action"] = "raptor_strike", ["cycle_targets"] = 1, }, }, ["cds"] = { { ["enabled"] = true, ["criteria"] = "buff.coordinated_assault.up || buff.spearhead.up || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled", ["action"] = "blood_fury", }, { ["enabled"] = true, ["criteria"] = "talent.terms_of_engagement.enabled & focus < focus.max || ! talent.terms_of_engagement.enabled", ["action"] = "harpoon", }, { ["enabled"] = true, ["criteria"] = "buff.coordinated_assault.up || buff.spearhead.up || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled", ["action"] = "ancestral_call", }, { ["enabled"] = true, ["criteria"] = "buff.coordinated_assault.up || buff.spearhead.up || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled", ["action"] = "fireblood", }, { ["action"] = "lights_judgment", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "cooldown.kill_command.full_recharge_time > gcd.max", ["action"] = "bag_of_tricks", }, { ["enabled"] = true, ["criteria"] = "buff.coordinated_assault.up || buff.spearhead.up || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled || boss & fight_remains < 13", ["action"] = "berserking", }, { ["action"] = "muzzle", ["enabled"] = true, }, { ["enabled"] = true, ["criteria"] = "target.boss & fight_remains < 25 || buff.coordinated_assault.up || buff.spearhead.up || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled", ["action"] = "potion", }, { ["enabled"] = true, ["action"] = "algethar_puzzle_box", ["use_off_gcd"] = 1, ["name"] = "algethar_puzzle_box", ["criteria"] = "gcd.remains > gcd.max - 0.1 || settings.gcdSync", }, { ["enabled"] = true, ["action"] = "manic_grieftorch", ["use_off_gcd"] = 1, ["name"] = "manic_grieftorch", ["criteria"] = "gcd.remains > gcd.max - 0.1 & ! buff.spearhead.up", }, { ["enabled"] = true, ["description"] = "Sim would use off GCD just after GCD is invoked, but it is awkward to present in-game.", ["criteria"] = "! buff.spearhead.up", ["action"] = "use_items", }, { ["enabled"] = true, ["criteria"] = "target.distance >= 6", ["action"] = "aspect_of_the_eagle", }, }, ["st"] = { { ["enabled"] = true, ["criteria"] = "buff.coordinated_assault_empower.up || coordinated_assault_kill_shot", ["action"] = "kill_shot", }, { ["enabled"] = true, ["criteria"] = "talent.spearhead.enabled & cooldown.spearhead.remains < 2 * gcd.max & full_recharge_time < gcd.max || talent.bombardier.enabled & ( cooldown.coordinated_assault.remains < gcd.max & cooldown.fury_of_the_eagle.remains || buff.coordinated_assault.up & buff.coordinated_assault.remains < 2 * gcd.max ) || full_recharge_time < gcd.max || prev.fury_of_the_eagle & set_bonus.tier31_2pc || buff.contained_explosion.remains & ( next_wi_bomb.pheromone & dot.pheromone_bomb.refreshable || next_wi_bomb.volatile & dot.volatile_bomb.refreshable || next_wi_bomb.shrapnel & dot.shrapnel_bomb.refreshable ) || cooldown.fury_of_the_eagle.remains < gcd.max & full_recharge_time < gcd.max & set_bonus.tier31_2pc || ( cooldown.fury_of_the_eagle.remains < gcd.max & talent.ruthless_marauder.enabled & set_bonus.tier31_2pc ) & ! raid_event.adds.exists", ["action"] = "wildfire_bomb", }, { ["enabled"] = true, ["criteria"] = "focus + cast_regen < focus.max || talent.spearhead.enabled & ! cooldown.spearhead.remains & cooldown.fury_of_the_eagle.remains || talent.bombardier.enabled & ! cooldown.fury_of_the_eagle.remains", ["action"] = "death_chakram", }, { ["enabled"] = true, ["criteria"] = "prev.fury_of_the_eagle", ["action"] = "mongoose_bite", }, { ["enabled"] = true, ["criteria"] = "! talent.fury_of_the_eagle.enabled || talent.spearhead.enabled", ["name"] = "djaruun_pillar_of_the_elder_flame", ["action"] = "djaruun_pillar_of_the_elder_flame", }, { ["enabled"] = true, ["action"] = "fury_of_the_eagle", ["criteria"] = "( ! raid_event.adds.exists & set_bonus.tier31_2pc || raid_event.adds.exists & raid_event.adds.in > 40 & set_bonus.tier31_2pc )", ["interrupt_if"] = "(cooldown.wildfire_bomb.full_recharge_time