2023-05-09 23:03:56 +02:00

18251 lines
1.3 MiB

HekiliDB = {
["namespaces"] = {
["LibDualSpec-1.0"] = {
},
},
["profileKeys"] = {
["Helnen - Draenor"] = "Default",
["Sorastab - Argent Dawn"] = "Default",
["Helfara - Ravencrest"] = "Default",
["Helcel - Ravencrest"] = "Default",
["Heltha - Ravencrest"] = "Default",
["Helca - Draenor"] = "Default",
["Sorapriest - Argent Dawn"] = "Default",
["Helsora - Ravencrest"] = "Default",
["Helsora - Draenor"] = "Default",
["Helnen - Ravencrest"] = "Default",
["Helfael - Ravencrest"] = "Default",
["Helarx - Draenor"] = "Default",
["Cuteifread - Shattered Hand"] = "Default",
["Helca - Ravencrest"] = "Default",
["Soramonk - Argent Dawn"] = "Default",
["Sorarcana - Argent Dawn"] = "Default",
["Soralock - Argent Dawn"] = "Default",
["Helmenel - Ravencrest"] = "Default",
["Helom - Ravencrest"] = "Default",
["Sorarms - Argent Dawn"] = "Default",
["Heloce - Ravencrest"] = "Default",
["Soraefir - Draenor"] = "Default",
["Helfël - Draenor"] = "Default",
["Helefir - Draenor"] = "Default",
["Hellë - Ravencrest"] = "Default",
["Hexcel - Ravencrest"] = "Default",
["Sorahunt - Argent Dawn"] = "Default",
},
["profiles"] = {
["Default"] = {
["runOnce"] = {
["forceReloadClassDefaultOptions_20220306_70"] = true,
["forceReloadClassDefaultOptions_20220306_65"] = true,
["forceReloadClassDefaultOptions_20220306_252"] = true,
["forceReloadClassDefaultOptions_20220306_71"] = true,
["forceReloadClassDefaultOptions_20220306_254"] = true,
["forceReloadClassDefaultOptions_20220306_102"] = true,
["forceReloadClassDefaultOptions_20220306_269"] = true,
["forceReloadClassDefaultOptions_20220306_63"] = true,
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
["forceReloadClassDefaultOptions_20220306_66"] = true,
["forceReloadClassDefaultOptions_20220306_72"] = true,
["forceReloadClassDefaultOptions_20220306_104"] = true,
["forceReloadClassDefaultOptions_20220306_1467"] = true,
["resetAberrantPackageDates_20190728_1"] = true,
["forceReloadClassDefaultOptions_20220306_62"] = true,
["forceReloadClassDefaultOptions_20220306_103"] = true,
["forceReloadClassDefaultOptions_20220306_260"] = true,
["forceReloadClassDefaultOptions_20220306_105"] = true,
["forceReloadClassDefaultOptions_20220306_263"] = true,
["forceReloadClassDefaultOptions_20220306_264"] = true,
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
["forceReloadClassDefaultOptions_20220306_261"] = true,
["forceReloadClassDefaultOptions_20220306_257"] = true,
["forceReloadClassDefaultOptions_20220306_577"] = true,
["forceEnableEnhancedRecheckBoomkin_20210712"] = true,
["forceReloadClassDefaultOptions_20220306_64"] = true,
["forceReloadClassDefaultOptions_20220306_256"] = true,
["forceReloadClassDefaultOptions_20220306_255"] = true,
["forceReloadClassDefaultOptions_20220306_250"] = true,
["forceReloadAllDefaultPriorities_20220228"] = true,
["forceReloadClassDefaultOptions_20220306_258"] = true,
["forceReloadClassDefaultOptions_20220306_268"] = true,
["forceReloadClassDefaultOptions_20220306_262"] = true,
["forceReloadClassDefaultOptions_20220306_581"] = true,
["forceReloadClassDefaultOptions_20220306_259"] = true,
["forceReloadClassDefaultOptions_20220306_1468"] = true,
["forceSpellFlashBrightness_20221030"] = true,
["forceReloadClassDefaultOptions_20220306_265"] = true,
["forceReloadClassDefaultOptions_20220306_266"] = true,
["forceReloadClassDefaultOptions_20220306_251"] = true,
["forceReloadClassDefaultOptions_20220306_267"] = true,
["forceReloadClassDefaultOptions_20220306_73"] = true,
["forceReloadClassDefaultOptions_20220306_253"] = true,
["forceReloadClassDefaultOptions_20220306_270"] = true,
},
["specs"] = {
[62] = {
["settings"] = {
["check_explosion_range"] = true,
},
},
[1467] = {
["settings"] = {
["use_early_chain"] = false,
["use_clipping"] = false,
["use_unravel"] = false,
["use_deep_breath"] = true,
["dragonrage_pad"] = 0.5,
},
},
[63] = {
["settings"] = {
["prevent_hardcasts"] = false,
["check_explosion_range"] = true,
["pyroblast_pull"] = false,
},
},
[250] = {
["settings"] = {
["ibf_damage"] = 40,
["vb_damage"] = 50,
["rt_damage"] = 30,
["save_blood_shield"] = true,
},
},
[251] = {
["settings"] = {
["bos_rp"] = 50,
["ams_usage"] = "damage",
},
},
[252] = {
["settings"] = {
["dps_shell"] = false,
["disable_iqd_execute"] = false,
},
},
[1468] = {
["settings"] = {
["use_deep_breath"] = true,
["use_unravel"] = false,
},
},
[253] = {
["settings"] = {
["avoid_bw_overlap"] = false,
["check_pet_range"] = false,
["barbed_shot_grace_period"] = 0.5,
},
},
[254] = {
["settings"] = {
["eagletalon_swap"] = false,
["prevent_hardcasts"] = false,
},
},
[255] = {
["settings"] = {
["allow_focus_overcap"] = false,
["use_harpoon"] = true,
},
["cycle"] = true,
},
[66] = {
["settings"] = {
["wog_health"] = 40,
["goak_damage"] = 40,
["ds_damage"] = 60,
},
},
[257] = {
["settings"] = {
["sw_death_protection"] = 50,
},
},
[258] = {
["settings"] = {
["pad_void_bolt"] = true,
["ignore_solvent"] = true,
["pad_ascended_blast"] = true,
["sw_death_protection"] = 50,
["min_sear_ticks"] = 2,
},
},
[259] = {
["settings"] = {
["solo_vanish"] = true,
["mfd_points"] = 3,
["priority_rotation"] = false,
["envenom_pool_pct"] = 50,
},
},
[260] = {
["settings"] = {
["mfd_points"] = 3,
["use_ld_opener"] = false,
["no_rtb_in_dance_cto"] = true,
["ambush_anyway"] = false,
["allow_shadowmeld"] = false,
["solo_vanish"] = true,
},
},
[261] = {
["settings"] = {
["solo_vanish"] = true,
["mfd_points"] = 3,
["priority_rotation"] = false,
},
},
[262] = {
["settings"] = {
["purge_icd"] = 12,
["hostile_dispel"] = false,
["stack_buffer"] = 1.1,
},
},
[581] = {
["settings"] = {
["infernal_charges"] = 1,
["frailty_stacks"] = 1,
},
},
[265] = {
["settings"] = {
["manage_ds_ticks"] = false,
},
},
[266] = {
["settings"] = {
["dcon_imps"] = 0,
},
},
[267] = {
["settings"] = {
["default_pet"] = "summon_sayaad",
["fixed_aoe_3_plus"] = false,
["cleave_apl"] = false,
},
},
[268] = {
["settings"] = {
["purify_for_niuzao"] = true,
["purify_stagger_maxhp"] = 6,
["purify_for_celestial"] = true,
["bof_percent"] = 50,
["ox_walker"] = true,
["eh_percent"] = 65,
["purify_stagger_currhp"] = 12,
},
},
[269] = {
["settings"] = {
["sef_one_charge"] = false,
["tok_damage"] = 1,
["check_wdp_range"] = false,
["allow_fsk"] = false,
["check_sck_range"] = false,
["use_diffuse"] = false,
},
},
[270] = {
["settings"] = {
["roll_movement"] = 5,
["save_faeline"] = false,
},
},
[70] = {
["settings"] = {
["sov_damage"] = 20,
["check_wake_range"] = false,
["desync_toll"] = false,
},
},
[102] = {
["settings"] = {
["delay_berserking"] = false,
["starlord_cancel"] = false,
["vigil_damage"] = 50,
},
},
[71] = {
["settings"] = {
["shockwave_interrupt"] = true,
["heroic_charge"] = false,
},
},
[103] = {
["settings"] = {
["delay_berserking"] = false,
["owlweave_cat"] = false,
["use_funnel"] = false,
["rip_duration"] = 9,
["filler_regrowth"] = false,
["vigil_damage"] = 50,
},
},
[72] = {
["settings"] = {
["check_ww_range"] = false,
["shockwave_interrupt"] = true,
["heroic_charge"] = false,
},
["package"] = "Fury",
},
[104] = {
["settings"] = {
["vigil_damage"] = 50,
["catweave_bear"] = false,
["maul_anyway"] = true,
["ironfur_damage_threshold"] = 5,
["maul_rage"] = 20,
["mangle_more"] = false,
["owlweave_bear"] = false,
["shift_for_convoke"] = false,
},
},
[73] = {
["settings"] = {
["shield_wall_amount"] = 50,
["rallying_cry_amount"] = 50,
["reserve_rage"] = 35,
["rallying_cry_health"] = 50,
["shockwave_interrupt"] = true,
["shield_wall_health"] = 50,
["last_stand_health"] = 50,
["rallying_cry_condition"] = false,
["stack_shield_block"] = false,
["stance_weaving"] = false,
["shield_wall_condition"] = false,
["last_stand_amount"] = 50,
["last_stand_offensively"] = false,
["last_stand_condition"] = false,
["overlap_ignore_pain"] = false,
},
},
[256] = {
["settings"] = {
["sw_death_protection"] = 50,
},
},
[577] = {
["settings"] = {
["fel_rush_charges"] = 0,
["retreat_filler"] = false,
["retreat_and_return"] = "off",
["demon_blades_acknowledged"] = false,
["throw_glaive_charges"] = 0,
["recommend_movement"] = true,
["fel_rush_filler"] = true,
["unbound_movement"] = false,
},
},
[64] = {
["settings"] = {
["manual_water_jet"] = false,
["limit_ice_lance"] = false,
["check_explosion_range"] = true,
},
},
[263] = {
["settings"] = {
["pad_lava_lash"] = true,
["pad_windstrike"] = true,
["burn_before_wave"] = true,
["purge_icd"] = 12,
["hostile_dispel"] = false,
["project_windfury"] = 0,
["filler_shock"] = true,
},
},
},
["displays"] = {
["Interrupts"] = {
["rel"] = "CENTER",
["x"] = -55.00000762939453,
},
["Cooldowns"] = {
["rel"] = "CENTER",
["y"] = -230.9998168945313,
["x"] = -912.0000610351562,
},
["Primary"] = {
["rel"] = "CENTER",
["y"] = -180.9995880126953,
["x"] = -539.000244140625,
},
["AOE"] = {
["rel"] = "CENTER",
},
["Defensives"] = {
["rel"] = "CENTER",
["x"] = -110.0000152587891,
},
},
["packs"] = {
["Windwalker"] = {
["source"] = "https://github.com/simulationcraft/simc/blob/dragonflight/profiles/PreRaids/PR_Monk_Windwalker.simc",
["builtIn"] = true,
["date"] = 20230502,
["spec"] = 269,
["desc"] = "2023-05-02: Update for 10.1.\n\n2023-04-17: Translate and reimplement Fists of Fury usage/cancellation during Serenity.\n\n2023-04-15: Update from SimulationCraft.\n\n2023-03-25: Adjust Touch of Death.\n\n2023-02-21: Revise to ensure Fists of Fury is only broken when Serenity is active.\n\n2023-02-20: Major changes to align with latest SimulationCraft priority.\n\n2023-03-08: Revise Manic Grieftorch usage; added requirement that target is expected to live longer than the cast time to reduce risk of partial cast.",
["lists"] = {
["opener"] = {
{
["enabled"] = true,
["description"] = "Opener",
["action"] = "summon_white_tiger_statue",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "talent.chi_burst.enabled & chi.max - chi >= 3",
["action"] = "expel_harm",
}, -- [2]
{
["enabled"] = true,
["action"] = "tiger_palm",
["criteria"] = "combo_strike & chi.max - chi >= ( 2 + buff.power_strikes.up )",
["cycle_targets"] = 1,
}, -- [3]
{
["enabled"] = true,
["criteria"] = "talent.chi_burst.enabled & chi = 3",
["action"] = "expel_harm",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "chi.max - chi = 2",
["action"] = "chi_wave",
}, -- [5]
{
["action"] = "expel_harm",
["enabled"] = true,
}, -- [6]
{
["enabled"] = true,
["criteria"] = "chi > 1 & chi.max - chi >= 2",
["action"] = "chi_burst",
}, -- [7]
},
["sef_trinkets"] = {
{
["enabled"] = true,
["description"] = "SEF Trinkets",
["criteria"] = "pet.xuen_the_white_tiger.active || ! talent.invoke_xuen_the_white_tiger.enabled & buff.storm_earth_and_fire.up || boss & fight_remains < 30",
["action"] = "horn_of_valor",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "( boss || target.time_to_die > 1 + cast_time ) & ( trinket.t1.is.manic_grieftorch & ! trinket.t2.has_use_buff || trinket.t2.is.manic_grieftorch & ! trinket.t1.has_use_buff )",
["action"] = "manic_grieftorch",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "( pet.xuen_the_white_tiger.active || ! talent.invoke_xuen_the_white_tiger.enabled ) & ! buff.storm_earth_and_fire.up || boss & fight_remains < 25",
["action"] = "algethar_puzzle_box",
}, -- [3]
{
["enabled"] = true,
["action"] = "trinket1",
["criteria"] = "trinket.t1.has_use_buff & ! ( trinket.t1.is.horn_of_valor || trinket.t1.is.manic_grieftorch || trinket.t1.is.algethar_puzzle_box ) & ( cooldown.invoke_xuen_the_white_tiger.remains > action_cooldown % 120 || action_cooldown <= 60 & variable.hold_xuen || action_cooldown <= 60 & buff.storm_earth_and_fire.remains > 10 || ! talent.invoke_xuen_the_white_tiger.enabled ) || boss & fight_remains < 30",
["slot"] = "trinket1",
}, -- [4]
{
["enabled"] = true,
["action"] = "trinket1",
["criteria"] = "! trinket.t1.has_use_buff & ! ( trinket.t1.is.horn_of_valor || trinket.t1.is.manic_grieftorch || trinket.t1.is.algethar_puzzle_box ) & ( cooldown.invoke_xuen_the_white_tiger.remains > action_cooldown % 120 || action_cooldown <= 60 & variable.hold_xuen || ! talent.invoke_xuen_the_white_tiger.enabled ) || boss & fight_remains < 30",
["slot"] = "trinket1",
}, -- [5]
{
["enabled"] = true,
["action"] = "trinket2",
["criteria"] = "trinket.t2.has_use_buff & ! ( trinket.t2.is.horn_of_valor || trinket.t2.is.manic_grieftorch || trinket.t2.is.algethar_puzzle_box ) & ( cooldown.invoke_xuen_the_white_tiger.remains > action_cooldown % 120 || action_cooldown <= 60 & variable.hold_xuen || action_cooldown <= 60 & buff.storm_earth_and_fire.remains > 10 || ! talent.invoke_xuen_the_white_tiger.enabled ) || boss & fight_remains < 30",
["slot"] = "trinket2",
}, -- [6]
{
["enabled"] = true,
["action"] = "trinket2",
["criteria"] = "! trinket.t2.has_use_buff & ! ( trinket.t2.is.horn_of_valor || trinket.t2.is.manic_grieftorch || trinket.t2.is.algethar_puzzle_box ) & ( cooldown.invoke_xuen_the_white_tiger.remains > action_cooldown % 120 || action_cooldown <= 60 & variable.hold_xuen || ! talent.invoke_xuen_the_white_tiger.enabled ) || boss & fight_remains < 30",
["slot"] = "trinket2",
}, -- [7]
},
["cleave"] = {
{
["enabled"] = true,
["action"] = "blackout_kick",
["cycle_targets"] = 1,
["criteria"] = "buff.teachings_of_the_monastery.stack = 3 & talent.shadowboxing_treads.enabled",
["description"] = "3 Targets",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "combo_strike & buff.dance_of_chiji.up",
["action"] = "spinning_crane_kick",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "talent.thunderfist.enabled",
["action"] = "strike_of_the_windlord",
}, -- [3]
{
["action"] = "fists_of_fury",
["enabled"] = true,
}, -- [4]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "buff.bonedust_brew.up & buff.pressure_point.up & set_bonus.tier30_2pc",
["cycle_targets"] = 1,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "buff.bonedust_brew.up & combo_strike",
["action"] = "spinning_crane_kick",
}, -- [6]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "! buff.bonedust_brew.up & buff.pressure_point.up",
["cycle_targets"] = 1,
}, -- [7]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "set_bonus.tier30_2pc",
["cycle_targets"] = 1,
}, -- [8]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "buff.teachings_of_the_monastery.stack = 2",
["cycle_targets"] = 1,
}, -- [9]
{
["action"] = "strike_of_the_windlord",
["enabled"] = true,
}, -- [10]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "buff.teachings_of_the_monastery.up & ( talent.shadowboxing_treads.enabled || cooldown.rising_sun_kick.remains > 1 )",
["cycle_targets"] = 1,
}, -- [11]
{
["action"] = "whirling_dragon_punch",
["enabled"] = true,
}, -- [12]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "buff.teachings_of_the_monastery.stack = 3",
["cycle_targets"] = 1,
}, -- [13]
{
["enabled"] = true,
["action"] = "spinning_crane_kick",
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains < 3 & buff.chi_energy.stack > 15",
["cycle_targets"] = 1,
}, -- [14]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "cooldown.fists_of_fury.remains > 4 & chi > 3",
["cycle_targets"] = 1,
}, -- [15]
{
["enabled"] = true,
["action"] = "spinning_crane_kick",
["criteria"] = "combo_strike & cooldown.rising_sun_kick.remains & cooldown.fists_of_fury.remains & chi > 4 & ( ( talent.storm_earth_and_fire.enabled & ! talent.bonedust_brew.enabled ) || ( talent.serenity.enabled ) )",
["cycle_targets"] = 1,
}, -- [16]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains",
["cycle_targets"] = 1,
}, -- [17]
{
["enabled"] = true,
["criteria"] = "! buff.rushing_jade_wind.up",
["action"] = "rushing_jade_wind",
}, -- [18]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "combo_strike & talent.shadowboxing_treads.enabled & ! spinning_crane_kick.max",
["cycle_targets"] = 1,
}, -- [19]
{
["enabled"] = true,
["action"] = "spinning_crane_kick",
["criteria"] = "( combo_strike & chi > 5 & talent.storm_earth_and_fire.enabled || combo_strike & chi > 4 & talent.serenity.enabled )",
["cycle_targets"] = 1,
}, -- [20]
},
["serenity"] = {
{
["enabled"] = true,
["description"] = "Serenity Priority",
["criteria"] = "buff.serenity.remains < 1",
["action"] = "fists_of_fury",
}, -- [1]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "combo_strike & ! spinning_crane_kick.max & active_enemies > 4 & talent.shdaowboxing_treads.enabled",
["cycle_targets"] = 1,
}, -- [2]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "combo_strike & buff.teachings_of_the_monastery.stack = 3 & buff.teachings_of_the_monastery.remains < 1",
["cycle_targets"] = 1,
}, -- [3]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "active_enemies = 4 & buff.pressure_point.up & ! talent.bonedust_brew.enabled",
["cycle_targets"] = 1,
}, -- [4]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "active_enemies = 1",
["cycle_targets"] = 1,
}, -- [5]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "active_enemies <= 3 & buff.pressure_point.up",
["cycle_targets"] = 1,
}, -- [6]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "buff.pressure_point.up & set_bonus.tier30_2pc",
["cycle_targets"] = 1,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "buff.invokers_delight.up & active_enemies < 3 & talent.jade_ignition.enabled",
["action"] = "fists_of_fury",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "buff.invokers_delight.up & active_enemies > 4",
["action"] = "fists_of_fury",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "buff.bloodlust.up",
["action"] = "fists_of_fury",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "active_enemies = 2",
["action"] = "fists_of_fury",
["interrupt_if"] = "buff.serenity.up&(buff.invokers_delight.up&(active_enemies<3&talent.jade_ignition||active_enemies>4)||buff.bloodlust.up||active_enemies=2)",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "talent.thunderfist.enabled",
["action"] = "strike_of_the_windlord",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "combo_strike & buff.dance_of_chiji.up & active_enemies >= 2",
["action"] = "spinning_crane_kick",
}, -- [13]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "active_enemies = 4 & buff.pressure_point.up",
["cycle_targets"] = 1,
}, -- [14]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "active_enemies = 3 & combo_strike & set_bonus.tier30_2pc",
["cycle_targets"] = 1,
}, -- [15]
{
["enabled"] = true,
["criteria"] = "combo_strike & active_enemies >= 3 & spinning_crane_kick.max",
["action"] = "spinning_crane_kick",
}, -- [16]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "combo_strike & active_enemies > 1 & active_enemies < 4 & buff.teachings_of_the_monastery.stack = 2",
["cycle_targets"] = 1,
}, -- [17]
{
["enabled"] = true,
["criteria"] = "! buff.rushing_jade_wind.up & active_enemies >= 5",
["action"] = "rushing_jade_wind",
}, -- [18]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "talent.shadowboxing_treads.enabled & active_enemies >= 3 & combo_strike",
["cycle_targets"] = 1,
}, -- [19]
{
["enabled"] = true,
["criteria"] = "combo_strike & ( active_enemies > 3 || active_enemies > 2 & spinning_crane_kick.modifier >= 2.3 )",
["action"] = "spinning_crane_kick",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "active_enemies >= 3",
["action"] = "strike_of_the_windlord",
}, -- [21]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "active_enemies = 2 & cooldown.fists_of_fury.remains > 5",
["cycle_targets"] = 1,
}, -- [22]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "active_enemies = 2 & cooldown.fists_of_fury.remains > 5 & talent.shadowboxing_treads.enabled & buff.teachings_of_the_monastery.stack = 1 & combo_strike",
["cycle_targets"] = 1,
}, -- [23]
{
["enabled"] = true,
["criteria"] = "combo_strike & active_enemies > 1",
["action"] = "spinning_crane_kick",
}, -- [24]
{
["enabled"] = true,
["criteria"] = "active_enemies > 1",
["action"] = "whirling_dragon_punch",
}, -- [25]
{
["enabled"] = true,
["criteria"] = "! buff.rushing_jade_wind.up & active_enemies >= 3",
["action"] = "rushing_jade_wind",
}, -- [26]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["cycle_targets"] = 1,
}, -- [27]
{
["enabled"] = true,
["criteria"] = "combo_strike & buff.dance_of_chiji.up",
["action"] = "spinning_crane_kick",
}, -- [28]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "combo_strike",
["cycle_targets"] = 1,
}, -- [29]
{
["action"] = "whirling_dragon_punch",
["enabled"] = true,
}, -- [30]
{
["enabled"] = true,
["action"] = "tiger_palm",
["criteria"] = "talent.teachings_of_the_monastery.enabled & buff.teachings_of_the_monastery.stack < 3",
["cycle_targets"] = 1,
}, -- [31]
},
["cd_serenity"] = {
{
["enabled"] = true,
["description"] = "Serenity Cooldowns",
["action"] = "call_action_list",
["list_name"] = "serenity_trinkets",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "! cooldown.invoke_xuen_the_white_tiger.remains || active_enemies > 4 || cooldown.invoke_xuen_the_white_tiger.remains > 50 || boss & fight_remains <= 30",
["action"] = "summon_white_tiger_statue",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! variable.hold_xuen & talent.bonedust_brew.enabled & cooldown.bonedust_brew.remains <= 5 || boss & fight_remains < 25",
["action"] = "invoke_xuen",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "! variable.hold_xuen & ! talent.bonedust_brew.enabled & ( cooldown.rising_sun_kick.remains < 2 ) || boss & fight_remains < 25",
["action"] = "invoke_xuen",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "! buff.bonedust_brew.up & ( cooldown.serenity.up || cooldown.serenity.remains > 15 || boss & fight_remains < 30 & fight_remains > 10 ) || boss & fight_remains < 10",
["action"] = "bonedust_brew",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "pet.xuen_the_white_tiger.active & target.time_to_die > 15 || ! talent.invoke_xuen_the_white_tiger.enabled || boss & fight_remains < 15",
["action"] = "serenity",
}, -- [6]
{
["enabled"] = true,
["action"] = "touch_of_death",
["criteria"] = "combo_strike & ! buff.serenity.up & ( target.health.current < health || buff.hidden_masters_forbidden_touch.up & ( buff.hidden_masters_forbidden_touch.remains < 2 || buff.hidden_masters_forbidden_touch.remains > target.time_to_die ) || target.time_to_die > 60 || debuff.bonedust_brew_debuff.up || boss & fight_remains < 10 )",
["cycle_targets"] = 1,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "fight_remains > 90 || boss & fight_remains < 10",
["action"] = "touch_of_karma",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "buff.serenity.up || boss & fight_remains < 20",
["action"] = "blood_fury",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "buff.serenity.up || boss & fight_remains < 20",
["action"] = "berserking",
}, -- [10]
{
["action"] = "lights_judgment",
["enabled"] = true,
}, -- [11]
{
["enabled"] = true,
["criteria"] = "buff.serenity.up || boss & fight_remains < 20",
["action"] = "fireblood",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "buff.serenity.up || boss & fight_remains < 20",
["action"] = "ancestral_call",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "buff.serenity.up || boss & fight_remains < 20",
["action"] = "bag_of_tricks",
}, -- [14]
},
["st"] = {
{
["enabled"] = true,
["action"] = "blackout_kick",
["cycle_targets"] = 1,
["criteria"] = "buff.teachings_of_the_monastery.stack = 3",
["description"] = "1 Target",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "talent.thunderfist.enabled",
["action"] = "strike_of_the_windlord",
}, -- [2]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "buff.kicks_of_flowing_momentum.up || buff.pressure_point.up",
["cycle_targets"] = 1,
}, -- [3]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "buff.teachings_of_the_monastery.stack = 2",
["cycle_targets"] = 1,
}, -- [4]
{
["action"] = "strike_of_the_windlord",
["enabled"] = true,
}, -- [5]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "cooldown.fists_of_fury.remains > 4 & talent.xuens_battlegear.enabled",
["cycle_targets"] = 1,
}, -- [6]
{
["action"] = "fists_of_fury",
["enabled"] = true,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "combo_strike & buff.dance_of_chiji.up",
["action"] = "spinning_crane_kick",
}, -- [8]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "buff.teachings_of_the_monastery.up & cooldown.rising_sun_kick.remains > 1",
["cycle_targets"] = 1,
}, -- [9]
{
["enabled"] = true,
["criteria"] = "buff.bonedust_brew.up & combo_strike & spinning_crane_kick.modifier >= 2.7",
["action"] = "spinning_crane_kick",
}, -- [10]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["cycle_targets"] = 1,
}, -- [11]
{
["action"] = "whirling_dragon_punch",
["enabled"] = true,
}, -- [12]
{
["enabled"] = true,
["criteria"] = "! buff.rushing_jade_wind.up",
["action"] = "rushing_jade_wind",
}, -- [13]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "combo_strike",
["cycle_targets"] = 1,
}, -- [14]
},
["aoe"] = {
{
["enabled"] = true,
["description"] = "4 Targets",
["criteria"] = "combo_strike & buff.dance_of_chiji.up & spinning_crane_kick.max",
["action"] = "spinning_crane_kick",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "talent.thunderfist.enabled",
["action"] = "strike_of_the_windlord",
}, -- [2]
{
["action"] = "fists_of_fury",
["enabled"] = true,
}, -- [3]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "buff.bonedust_brew.up & buff.pressure_point.up & set_bonus.tier30_2pc",
["cycle_targets"] = 1,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.bonedust_brew.up & combo_strike & spinning_crane_kick.max",
["action"] = "spinning_crane_kick",
}, -- [5]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "! buff.bonedust_brew.up & buff.pressure_point.up & cooldown.fists_of_fury.remains > 5",
["cycle_targets"] = 1,
}, -- [6]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "buff.teachings_of_the_monastery.stack = 3 & talent.shadowboxing_treads.enabled",
["cycle_targets"] = 1,
}, -- [7]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "set_bonus.tier30_2pc",
["cycle_targets"] = 1,
}, -- [8]
{
["enabled"] = true,
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains > 3 & buff.chi_energy.stack > 10",
["action"] = "spinning_crane_kick",
}, -- [9]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "combo_strike & set_bonus.tier30_2pc",
["cycle_targets"] = 1,
}, -- [10]
{
["enabled"] = true,
["criteria"] = "combo_strike & ( cooldown.fists_of_fury.remains > 3 || chi > 4 ) & spinning_crane_kick.max",
["action"] = "spinning_crane_kick",
}, -- [11]
{
["action"] = "whirling_dragon_punch",
["enabled"] = true,
}, -- [12]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "buff.teachings_of_the_monastery.stack = 3",
["cycle_targets"] = 1,
}, -- [13]
{
["enabled"] = true,
["criteria"] = "! buff.rushing_jade_wind.up",
["action"] = "rushing_jade_wind",
}, -- [14]
{
["action"] = "strike_of_the_windlord",
["enabled"] = true,
}, -- [15]
{
["enabled"] = true,
["criteria"] = "combo_strike & ( cooldown.fists_of_fury.remains > 3 || chi > 4 )",
["action"] = "spinning_crane_kick",
}, -- [16]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "combo_strike",
["cycle_targets"] = 1,
}, -- [17]
},
["cd_sef"] = {
{
["enabled"] = true,
["description"] = "Storm, Earth and Fire Cooldowns",
["action"] = "call_action_list",
["list_name"] = "sef_trinkets",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "pet.xuen_the_white_tiger.active",
["action"] = "summon_white_tiger_statue",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! variable.hold_xuen & talent.bonedust_brew.enabled & cooldown.bonedust_brew.remains <= 5 & ( active_enemies < 3 & chi >= 3 || active_enemies >= 3 & chi >= 2 ) || fight_remains < 25",
["action"] = "invoke_xuen",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "! variable.hold_xuen & ! talent.bonedust_brew.enabled & ( cooldown.rising_sun_kick.remains < 2 ) & chi >= 3",
["action"] = "invoke_xuen",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "talent.bonedust_brew.enabled & ( fight_remains < 30 & cooldown.bonedust_brew.remains < 4 & chi >= 4 || buff.bonedust_brew.up || ! spinning_crane_kick.max & active_enemies >= 3 & cooldown.bonedust_brew.remains <= 2 & chi >= 2 ) & ( pet.xuen_the_white_tiger.active || cooldown.invoke_xuen_the_white_tiger.remains > cooldown.storm_earth_and_fire.full_recharge_time )",
["action"] = "storm_earth_and_fire",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "( ! buff.bonedust_brew.up & buff.storm_earth_and_fire.up & buff.storm_earth_and_fire.remains < 11 & spinning_crane_kick.max ) || ( ! buff.bonedust_brew.up & fight_remains < 30 & fight_remains > 10 & spinning_crane_kick.max & chi >= 4 ) || fight_remains < 10 || ( ! debuff.skyreach_exhaustion.up & active_enemies >= 4 & spinning_crane_kick.modifier >= 2 ) || ( pet.xuen_the_white_tiger.active & spinning_crane_kick.max & active_enemies >= 4 )",
["action"] = "bonedust_brew",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "! buff.bonedust_brew.up & talent.bonedust_brew.enabled & cooldown.bonedust_brew.remains <= 2 & ( fight_remains > 60 & ( cooldown.storm_earth_and_fire.charges > 0 || cooldown.storm_earth_and_fire.remains > 10 ) & ( pet.xuen_the_white_tiger.active || cooldown.invoke_xuen_the_white_tiger.remains > 10 || variable.hold_xuen ) || ( ( pet.xuen_the_white_tiger.active || cooldown.invoke_xuen_the_white_tiger.remains > 13 ) & ( cooldown.storm_earth_and_fire.charges > 0 || cooldown.storm_earth_and_fire.remains > 13 || buff.storm_earth_and_fire.up ) ) )",
["action"] = "call_action_list",
["list_name"] = "bdb_setup",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "boss & fight_remains < 20 || ( cooldown.storm_earth_and_fire.charges = 2 & cooldown.invoke_xuen_the_white_tiger.remains > cooldown.storm_earth_and_fire.full_recharge_time ) & cooldown.fists_of_fury.remains <= 9 & chi >= 2 & cooldown.whirling_dragon_punch.remains <= 12",
["action"] = "storm_earth_and_fire",
}, -- [8]
{
["enabled"] = true,
["action"] = "touch_of_death",
["criteria"] = "combo_strike",
["cycle_targets"] = 1,
}, -- [9]
{
["enabled"] = true,
["action"] = "touch_of_karma",
["criteria"] = "fight_remains > 90 || pet.xuen_the_white_tiger.active || variable.hold_xuen || boss & fight_remains < 16",
["cycle_targets"] = 1,
}, -- [10]
{
["enabled"] = true,
["criteria"] = "fight_remains > 159 || variable.hold_xuen",
["action"] = "touch_of_karma",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "cooldown.invoke_xuen_the_white_tiger.remains > 30 || variable.hold_xuen || boss & fight_remains < 20",
["action"] = "blood_fury",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "cooldown.invoke_xuen_the_white_tiger.remains > 30 || variable.hold_xuen || boss & fight_remains < 15",
["action"] = "berserking",
}, -- [13]
{
["action"] = "lights_judgment",
["enabled"] = true,
}, -- [14]
{
["enabled"] = true,
["criteria"] = "cooldown.invoke_xuen_the_white_tiger.remains > 30 || variable.hold_xuen || boss & fight_remains < 10",
["action"] = "fireblood",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "cooldown.invoke_xuen_the_white_tiger.remains > 30 || variable.hold_xuen || boss & fight_remains < 20",
["action"] = "ancestral_call",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "buff.storm_earth_and_fire.down",
["action"] = "bag_of_tricks",
}, -- [17]
},
["serenity_trinkets"] = {
{
["enabled"] = true,
["description"] = "Serenity Trinkets",
["criteria"] = "pet.xuen_the_white_tiger.active || ! talent.invoke_xuen_the_white_tiger.enabled & buff.storm_earth_and_fire.up || boss & fight_remains < 30",
["action"] = "horn_of_valor",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "( boss || target.time_to_die > 1 + cast_time ) & ( trinket.t1.is.manic_grieftorch & ! trinket.t2.has_use_buff || trinket.t2.is.manic_grieftorch & ! trinket.t1.has_use_buff )",
["action"] = "manic_grieftorch",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "( pet.xuen_the_white_tiger.active || ! talent.invoke_xuen_the_white_tiger.enabled ) & ! buff.storm_earth_and_fire.up || boss & fight_remains < 25",
["action"] = "algethar_puzzle_box",
}, -- [3]
{
["enabled"] = true,
["action"] = "trinket1",
["criteria"] = "trinket.t1.has_use_buff & ! ( trinket.t1.is.horn_of_valor || trinket.t1.is.manic_grieftorch || trinket.t1.is.algethar_puzzle_box ) & buff.serenity.remains > 10 || boss & fight_remains < 30",
["slot"] = "trinket1",
}, -- [4]
{
["enabled"] = true,
["action"] = "trinket1",
["criteria"] = "! trinket.t1.has_use_buff & ! ( trinket.t1.is.horn_of_valor || trinket.t1.is.manic_grieftorch || trinket.t1.is.algethar_puzzle_box ) & ( cooldown.invoke_xuen_the_white_tiger.remains > action_cooldown % 120 || action_cooldown <= 60 & variable.hold_xuen || ! talent.invoke_xuen_the_white_tiger.enabled ) || boss & fight_remains < 30",
["slot"] = "trinket1",
}, -- [5]
{
["enabled"] = true,
["action"] = "trinket2",
["criteria"] = "trinket.t2.has_use_buff & ! ( trinket.t2.is.horn_of_valor || trinket.t2.is.manic_grieftorch || trinket.t2.is.algethar_puzzle_box ) & buff.serenity.remains > 10 || boss & fight_remains < 30",
["slot"] = "trinket2",
}, -- [6]
{
["enabled"] = true,
["action"] = "trinket2",
["criteria"] = "! trinket.t2.has_use_buff & ! ( trinket.t2.is.horn_of_valor || trinket.t2.is.manic_grieftorch || trinket.t2.is.algethar_puzzle_box ) & ( cooldown.invoke_xuen_the_white_tiger.remains > action_cooldown % 120 || action_cooldown <= 60 & variable.hold_xuen || ! talent.invoke_xuen_the_white_tiger.enabled ) || boss & fight_remains < 30",
["slot"] = "trinket2",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "cooldown.invoke_xuen_the_white_tiger.remains > action_cooldown % 120 || action_cooldown <= 60 & variable.hold_xuen || ! talent.invoke_xuen_the_white_tiger.enabled",
["action"] = "use_items",
}, -- [8]
},
["st_cleave"] = {
{
["enabled"] = true,
["action"] = "blackout_kick",
["cycle_targets"] = 1,
["criteria"] = "buff.teachings_of_the_monastery.stack = 3 & talent.shadowboxing_treads.enabled",
["description"] = "2 Targets",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "talent.thunderfist.enabled",
["action"] = "strike_of_the_windlord",
}, -- [2]
{
["action"] = "fists_of_fury",
["enabled"] = true,
}, -- [3]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "set_bonus.tier30_2pc",
["cycle_targets"] = 1,
}, -- [4]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "buff.kicks_of_flowing_momentum.up || buff.pressure_point.up",
["cycle_targets"] = 1,
}, -- [5]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "buff.teachings_of_the_monastery.stack = 2",
["cycle_targets"] = 1,
}, -- [6]
{
["enabled"] = true,
["criteria"] = "combo_strike & buff.dance_of_chiji.up",
["action"] = "spinning_crane_kick",
}, -- [7]
{
["action"] = "strike_of_the_windlord",
["enabled"] = true,
}, -- [8]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "buff.teachings_of_the_monastery.up & ( talent.shadowboxing_treads.enabled || cooldown.rising_sun_kick.remains > 1 )",
["cycle_targets"] = 1,
}, -- [9]
{
["action"] = "whirling_dragon_punch",
["enabled"] = true,
}, -- [10]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "buff.teachings_of_the_monastery.stack = 3",
["cycle_targets"] = 1,
}, -- [11]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "! talent.shadowboxing_treads.enabled & cooldown.fists_of_fury.remains > 4 & talent.xuens_battlegear.enabled",
["cycle_targets"] = 1,
}, -- [12]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "combo_strike & cooldown.rising_sun_kick.remains & cooldown.fists_of_fury.remains & ( ! buff.bonedust_brew.up || spinning_crane_kick.modifier < 1.5 )",
["cycle_targets"] = 1,
}, -- [13]
{
["enabled"] = true,
["criteria"] = "! buff.rushing_jade_wind.up",
["action"] = "rushing_jade_wind",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "buff.bonedust_brew.up & combo_strike & spinning_crane_kick.modifier >= 2.7",
["action"] = "spinning_crane_kick",
}, -- [15]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["cycle_targets"] = 1,
}, -- [16]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "combo_strike",
["cycle_targets"] = 1,
}, -- [17]
{
["enabled"] = true,
["action"] = "spinning_crane_kick",
["criteria"] = "( combo_strike & chi > 5 & talent.storm_earth_and_fire.enabled || combo_strike & chi > 4 & talent.serenity.enabled )",
["cycle_targets"] = 1,
}, -- [18]
{
["enabled"] = true,
["action"] = "blackout_kick",
["cycle_targets"] = 1,
["criteria"] = "buff.teachings_of_the_monastery.stack = 3 & talent.shadowboxing_treads.enabled",
["description"] = "ST Priority (<3 Targets)",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "combo_strike & buff.dance_of_chiji.up",
["action"] = "spinning_crane_kick",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "talent.thunderfist.enabled",
["action"] = "strike_of_the_windlord",
}, -- [21]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "active_enemies = 1 & buff.kicks_of_flowing_momentum.up || buff.pressure_point.up",
["cycle_targets"] = 1,
}, -- [22]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "buff.teachings_of_the_monastery.stack = 2 & talent.shadowboxing_treads.enabled",
["cycle_targets"] = 1,
}, -- [23]
{
["action"] = "strike_of_the_windlord",
["enabled"] = true,
}, -- [24]
{
["action"] = "fists_of_fury",
["enabled"] = true,
}, -- [25]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "buff.teachings_of_the_monastery.up & ( talent.shadowboxing_treads.enabled & active_enemies > 1 || cooldown.rising_sun_kick.remains > 1 )",
["cycle_targets"] = 1,
}, -- [26]
{
["enabled"] = true,
["criteria"] = "active_enemies = 2",
["action"] = "whirling_dragon_punch",
}, -- [27]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "buff.teachings_of_the_monastery.stack = 3",
["cycle_targets"] = 1,
}, -- [28]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "( active_enemies = 1 || ! talent.shadowboxing_treads.enabled ) & cooldown.fists_of_fury.remains > 4 & talent.xuens_battlegear.enabled",
["cycle_targets"] = 1,
}, -- [29]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "combo_strike & active_enemies = 2 & cooldown.rising_sun_kick.remains & cooldown.fists_of_fury.remains & ( ! buff.bonedust_brew.up || spinning_crane_kick.modifier < 1.5 )",
["cycle_targets"] = 1,
}, -- [30]
{
["enabled"] = true,
["criteria"] = "! buff.rushing_jade_wind.up & active_enemies = 2",
["action"] = "rushing_jade_wind",
}, -- [31]
{
["enabled"] = true,
["criteria"] = "buff.bonedust_brew.up & combo_strike & ( active_enemies > 1 || spinning_crane_kick.modifier >= 2.7 )",
["action"] = "spinning_crane_kick",
}, -- [32]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["cycle_targets"] = 1,
}, -- [33]
{
["action"] = "whirling_dragon_punch",
["enabled"] = true,
}, -- [34]
{
["enabled"] = true,
["criteria"] = "! buff.rushing_jade_wind.up",
["action"] = "rushing_jade_wind",
}, -- [35]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "combo_strike",
["cycle_targets"] = 1,
}, -- [36]
},
["precombat"] = {
{
["action"] = "summon_white_tiger_statue",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["criteria"] = "chi < chi.max",
["action"] = "expel_harm",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! talent.faeline_stomp.enabled",
["action"] = "chi_burst",
}, -- [3]
{
["action"] = "chi_wave",
["enabled"] = true,
}, -- [4]
},
["heavy_aoe"] = {
{
["enabled"] = true,
["description"] = ">4 Targets",
["criteria"] = "combo_strike & buff.dance_of_chiji.up & spinning_crane_kick.max",
["action"] = "spinning_crane_kick",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "talent.thunderfist.enabled",
["action"] = "strike_of_the_windlord",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "active_enemies > 8",
["action"] = "whirling_dragon_punch",
}, -- [3]
{
["action"] = "fists_of_fury",
["enabled"] = true,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.bonedust_brew.up & combo_strike & spinning_crane_kick.max",
["action"] = "spinning_crane_kick",
}, -- [5]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "buff.bonedust_brew.up & buff.pressure_point.up & set_bonus.tier30_2pc",
["cycle_targets"] = 1,
}, -- [6]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "buff.teachings_of_the_monastery.stack = 3 & talent.shadowboxing_treads.enabled",
["cycle_targets"] = 1,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "active_enemies >= 5",
["action"] = "whirling_dragon_punch",
}, -- [8]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "buff.pressure_point.up & set_bonus.tier30_2pc",
["cycle_targets"] = 1,
}, -- [9]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "set_bonus.tier30_2pc",
["cycle_targets"] = 1,
}, -- [10]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "talent.whirling_dragon_punch.enabled & cooldown.whirling_dragon_punch.remains < 3 & cooldown.fists_of_fury.remains > 3 & ! buff.kicks_of_flowing_momentum.up",
["cycle_targets"] = 1,
}, -- [11]
{
["enabled"] = true,
["action"] = "spinning_crane_kick",
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains < 5 & buff.chi_energy.stack > 10",
["cycle_targets"] = 1,
}, -- [12]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "talent.shadowboxing_treads.enabled & combo_strike & set_bonus.tier30_2pc & ! buff.bonedust_brew.up & active_enemies < 15 & ! talent.crane_vortex.enabled",
["cycle_targets"] = 1,
}, -- [13]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "talent.shadowboxing_treads.enabled & combo_strike & set_bonus.tier30_2pc & ! buff.bonedust_brew.up & active_enemies < 8",
["cycle_targets"] = 1,
}, -- [14]
{
["enabled"] = true,
["action"] = "spinning_crane_kick",
["criteria"] = "combo_strike & ( cooldown.fists_of_fury.remains > 3 || chi > 4 ) & spinning_crane_kick.max",
["cycle_targets"] = 1,
}, -- [15]
{
["enabled"] = true,
["criteria"] = "! buff.rushing_jade_wind.up",
["action"] = "rushing_jade_wind",
}, -- [16]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "buff.teachings_of_the_monastery.stack = 3",
["cycle_targets"] = 1,
}, -- [17]
{
["action"] = "strike_of_the_windlord",
["enabled"] = true,
}, -- [18]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "talent.shadowboxing_treads.enabled & combo_strike & ! spinning_crane_kick.max",
["cycle_targets"] = 1,
}, -- [19]
{
["enabled"] = true,
["criteria"] = "chi.max - chi >= 1 & active_enemies = 1 & raid_event.adds.in > 20 || chi.max - chi >= 2",
["action"] = "chi_burst",
}, -- [20]
},
["fallthru"] = {
{
["enabled"] = true,
["description"] = "Fallthru",
["criteria"] = "buff.the_emperors_capacitor.stack > 19 & energy.time_to_max > execute_time - 1 & cooldown.rising_sun_kick.remains > execute_time || buff.the_emperors_capacitor.stack > 14 & ( cooldown.serenity.remains < 5 & talent.serenity.enabled || boss & fight_remains < 5 )",
["action"] = "crackling_jade_lightning",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "combo_strike",
["action"] = "faeline_stomp",
}, -- [2]
{
["enabled"] = true,
["action"] = "tiger_palm",
["criteria"] = "combo_strike & chi.max - chi >= ( 2 + buff.power_strikes.up )",
["cycle_targets"] = 1,
}, -- [3]
{
["enabled"] = true,
["criteria"] = "chi.max - chi >= 1 & active_enemies > 2",
["action"] = "expel_harm",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "chi.max - chi >= 1 & active_enemies = 1 & raid_event.adds.in > 20 || chi.max - chi >= 2 & active_enemies >= 2",
["action"] = "chi_burst",
}, -- [5]
{
["action"] = "chi_wave",
["enabled"] = true,
}, -- [6]
{
["enabled"] = true,
["criteria"] = "chi.max - chi >= 1",
["action"] = "expel_harm",
}, -- [7]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "combo_strike & active_enemies >= 5",
["cycle_targets"] = 1,
}, -- [8]
{
["enabled"] = true,
["criteria"] = "combo_strike & buff.chi_energy.stack > 30 - 5 * active_enemies & buff.storm_earth_and_fire.down & ( cooldown.rising_sun_kick.remains > 2 & cooldown.fists_of_fury.remains > 2 || cooldown.rising_sun_kick.remains < 3 & cooldown.fists_of_fury.remains > 3 & chi > 3 || cooldown.rising_sun_kick.remains > 3 & cooldown.fists_of_fury.remains < 3 & chi > 4 || chi.max - chi <= 1 & energy.time_to_max < 2 ) || buff.chi_energy.stack > 10 & fight_remains < 7",
["action"] = "spinning_crane_kick",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "chi.max - chi >= 1",
["action"] = "arcane_torrent",
}, -- [10]
{
["interrupt"] = "1",
["action"] = "flying_serpent_kick",
["enabled"] = true,
}, -- [11]
{
["action"] = "tiger_palm",
["enabled"] = true,
}, -- [12]
},
["default"] = {
{
["enabled"] = true,
["description"] = "Executed every time the actor is available.",
["action"] = "spear_hand_strike",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! talent.invoke_xuen_the_white_tiger.enabled || cooldown.invoke_xuen_the_white_tiger.remains > fight_remains || fight_remains - cooldown.invoke_xuen_the_white_tiger.remains < 120 & ( ( talent.serenity.enabled & fight_remains > cooldown.serenity.remains & cooldown.serenity.remains > 10 ) || ( cooldown.storm_earth_and_fire.full_recharge_time < fight_remains & cooldown.storm_earth_and_fire.full_recharge_time > 15 ) || ( cooldown.storm_earth_and_fire.charges = 0 & cooldown.storm_earth_and_fire.remains < fight_remains ) )",
["var_name"] = "hold_xuen",
}, -- [2]
{
["enabled"] = true,
["description"] = "Potion",
["criteria"] = "( buff.serenity.up || buff.storm_earth_and_fire.up ) & ( ! talent.xuen_the_white_tiger.enabled || pet.xuen_the_white_tiger.active ) || boss & fight_remains <= 60",
["action"] = "potion",
}, -- [3]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "Build Chi at the start of combat",
["criteria"] = "time < 4 & chi < 5 & ! pet.xuen_the_white_tiger.active & ! talent.serenity.enabled",
["list_name"] = "opener",
}, -- [4]
{
["enabled"] = true,
["action"] = "faeline_stomp",
["cycle_targets"] = 1,
["criteria"] = "combo_strike & talent.faeline_harmony.enabled & debuff.fae_exposure_damage.remains < 1",
["description"] = "Prioritize Faeline Stomp if playing with Faeline Harmony",
}, -- [5]
{
["enabled"] = true,
["action"] = "tiger_palm",
["cycle_targets"] = 1,
["criteria"] = "! buff.serenity.up & buff.teachings_of_the_monastery.stack < 3 & combo_strike & chi.max - chi >= ( 2 + buff.power_strikes.up ) & ( ! talent.invoke_xuen_the_white_tiger.enabled & ! talent.serenity.enabled || ( ! talent.skyreach.enabled || time > 5 || pet.xuen_the_white_tiger.active ) )",
["description"] = "TP if not overcapping Chi or TotM",
}, -- [6]
{
["enabled"] = true,
["description"] = "Use Chi Burst to reset Faeline Stomp",
["criteria"] = "talent.faeline_stomp.enabled & cooldown.faeline_stomp.remains & ( chi.max - chi >= 1 & active_enemies = 1 || chi.max - chi >= 2 & active_enemies >= 2 ) & ! talent.faeline_harmony.enabled",
["action"] = "chi_burst",
}, -- [7]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "Use Cooldowns",
["strict"] = 1,
["criteria"] = "! talent.serenity.enabled",
["list_name"] = "cd_sef",
}, -- [8]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "talent.serenity.enabled",
["list_name"] = "cd_serenity",
}, -- [9]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "Serenity / Default Priority",
["strict"] = 1,
["criteria"] = "buff.serenity.up",
["list_name"] = "serenity",
}, -- [10]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies > 4",
["list_name"] = "heavy_aoe",
}, -- [11]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies = 4",
["list_name"] = "aoe",
}, -- [12]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies = 3",
["list_name"] = "cleave",
}, -- [13]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies = 2",
["list_name"] = "st_cleave",
}, -- [14]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies = 1",
["list_name"] = "st",
}, -- [15]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "fallthru",
}, -- [16]
},
["bdb_setup"] = {
{
["enabled"] = true,
["description"] = "Bonedust Brew Setup",
["criteria"] = "talent.thunderfist.enabled & active_enemies > 3",
["action"] = "strike_of_the_windlord",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "spinning_crane_kick.max & chi >= 4",
["action"] = "bonedust_brew",
}, -- [2]
{
["enabled"] = true,
["action"] = "tiger_palm",
["criteria"] = "combo_strike & chi.max - chi >= 2 & buff.storm_earth_and_fire.up",
["cycle_targets"] = 1,
}, -- [3]
{
["enabled"] = true,
["action"] = "blackout_kick",
["criteria"] = "combo_strike & ! talent.whirling_dragon_punch.enabled & ! spinning_crane_kick.max",
["cycle_targets"] = 1,
}, -- [4]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "combo_strike & chi >= 5 & talent.whirling_dragon_punch.enabled",
["cycle_targets"] = 1,
}, -- [5]
{
["enabled"] = true,
["action"] = "rising_sun_kick",
["criteria"] = "combo_strike & active_enemies >= 2 & talent.whirling_dragon_punch.enabled",
["cycle_targets"] = 1,
}, -- [6]
},
},
["version"] = 20230502,
["warnings"] = "The import for 'serenity_trinkets' required some automated changes.\nLine 1: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 2: Converted 'trinket.1.is.manic_grieftorch' to 'trinket.t1.is.manic_grieftorch' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.is.manic_grieftorch' to 'trinket.t2.is.manic_grieftorch' (1x).\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.is.horn_of_valor' to 'trinket.t1.is.horn_of_valor' (1x).\nLine 4: Converted 'trinket.1.is.manic_grieftorch' to 'trinket.t1.is.manic_grieftorch' (1x).\nLine 4: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.is.horn_of_valor' to 'trinket.t1.is.horn_of_valor' (1x).\nLine 5: Converted 'trinket.1.is.manic_grieftorch' to 'trinket.t1.is.manic_grieftorch' (1x).\nLine 5: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 5: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 5: Converted operations in '!trinket.t1.has_use_buff&!(trinket.t1.is.horn_of_valor||trinket.t1.is.manic_grieftorch||trinket.t1.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>action_cooldown%%120||action_cooldown<=60&variable.hold_xuen||!talent.invoke_xuen_the_white_tiger.enabled)||boss&fight_remains<30' to '!trinket.t1.has_use_buff&!(trinket.t1.is.horn_of_valor||trinket.t1.is.manic_grieftorch||trinket.t1.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>action_cooldown%120||action_cooldown<=60&variable.hold_xuen||!talent.invoke_xuen_the_white_tiger.enabled)||boss&fight_remains<30'.\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.is.horn_of_valor' to 'trinket.t2.is.horn_of_valor' (1x).\nLine 6: Converted 'trinket.2.is.manic_grieftorch' to 'trinket.t2.is.manic_grieftorch' (1x).\nLine 6: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\nLine 7: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 7: Converted 'trinket.2.is.horn_of_valor' to 'trinket.t2.is.horn_of_valor' (1x).\nLine 7: Converted 'trinket.2.is.manic_grieftorch' to 'trinket.t2.is.manic_grieftorch' (1x).\nLine 7: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\nLine 7: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 7: Converted operations in '!trinket.t2.has_use_buff&!(trinket.t2.is.horn_of_valor||trinket.t2.is.manic_grieftorch||trinket.t2.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>action_cooldown%%120||action_cooldown<=60&variable.hold_xuen||!talent.invoke_xuen_the_white_tiger.enabled)||boss&fight_remains<30' to '!trinket.t2.has_use_buff&!(trinket.t2.is.horn_of_valor||trinket.t2.is.manic_grieftorch||trinket.t2.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>action_cooldown%120||action_cooldown<=60&variable.hold_xuen||!talent.invoke_xuen_the_white_tiger.enabled)||boss&fight_remains<30'.\nLine 8: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 8: Converted operations in 'cooldown.invoke_xuen_the_white_tiger.remains>action_cooldown%%120||action_cooldown<=60&variable.hold_xuen||!talent.invoke_xuen_the_white_tiger.enabled' to 'cooldown.invoke_xuen_the_white_tiger.remains>action_cooldown%120||action_cooldown<=60&variable.hold_xuen||!talent.invoke_xuen_the_white_tiger.enabled'.\n\nThe import for 'cleave' required some automated changes.\nLine 1: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 3: Converted 'talent.thunderfist' to 'talent.thunderfist.enabled' (1x).\nLine 11: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 16: Converted 'talent.storm_earth_and_fire' to 'talent.storm_earth_and_fire.enabled' (1x).\nLine 16: Converted 'talent.bonedust_brew' to 'talent.bonedust_brew.enabled' (1x).\nLine 16: Converted 'talent.serenity' to 'talent.serenity.enabled' (1x).\nLine 19: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 20: Converted 'talent.storm_earth_and_fire' to 'talent.storm_earth_and_fire.enabled' (1x).\nLine 20: Converted 'talent.serenity' to 'talent.serenity.enabled' (1x).\n\nThe import for 'serenity' required some automated changes.\nLine 2: Converted 'talent.shdaowboxing_treads' to 'talent.shdaowboxing_treads.enabled' (1x).\nLine 4: Converted 'talent.bonedust_brew' to 'talent.bonedust_brew.enabled' (1x).\nLine 8: Converted 'talent.jade_ignition' to 'talent.jade_ignition.enabled' (1x).\nLine 12: Converted 'talent.thunderfist' to 'talent.thunderfist.enabled' (1x).\nLine 19: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 23: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 31: Converted 'talent.teachings_of_the_monastery' to 'talent.teachings_of_the_monastery.enabled' (1x).\n\nThe import for 'cd_serenity' required some automated changes.\nLine 3: Converted 'talent.bonedust_brew' to 'talent.bonedust_brew.enabled' (1x).\nLine 4: Converted 'talent.bonedust_brew' to 'talent.bonedust_brew.enabled' (1x).\nLine 6: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 2: Converted 'talent.thunderfist' to 'talent.thunderfist.enabled' (1x).\nLine 6: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\n\nThe import for 'heavy_aoe' required some automated changes.\nLine 2: Converted 'talent.thunderfist' to 'talent.thunderfist.enabled' (1x).\nLine 7: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 11: Converted 'talent.whirling_dragon_punch' to 'talent.whirling_dragon_punch.enabled' (1x).\nLine 13: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 13: Converted 'talent.crane_vortex' to 'talent.crane_vortex.enabled' (1x).\nLine 14: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 19: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\n\nThe import for 'cd_sef' required some automated changes.\nLine 3: Converted 'talent.bonedust_brew' to 'talent.bonedust_brew.enabled' (1x).\nLine 4: Converted 'talent.bonedust_brew' to 'talent.bonedust_brew.enabled' (1x).\nLine 5: Converted 'talent.bonedust_brew' to 'talent.bonedust_brew.enabled' (1x).\nLine 7: Converted 'talent.bonedust_brew' to 'talent.bonedust_brew.enabled' (1x).\n\nThe import for 'sef_trinkets' required some automated changes.\nLine 1: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 2: Converted 'trinket.1.is.manic_grieftorch' to 'trinket.t1.is.manic_grieftorch' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.is.manic_grieftorch' to 'trinket.t2.is.manic_grieftorch' (1x).\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.is.horn_of_valor' to 'trinket.t1.is.horn_of_valor' (1x).\nLine 4: Converted 'trinket.1.is.manic_grieftorch' to 'trinket.t1.is.manic_grieftorch' (1x).\nLine 4: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 4: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 4: Converted operations in 'trinket.t1.has_use_buff&!(trinket.t1.is.horn_of_valor||trinket.t1.is.manic_grieftorch||trinket.t1.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>action_cooldown%%120||action_cooldown<=60&variable.hold_xuen||action_cooldown<=60&buff.storm_earth_and_fire.remains>10||!talent.invoke_xuen_the_white_tiger.enabled)||boss&fight_remains<30' to 'trinket.t1.has_use_buff&!(trinket.t1.is.horn_of_valor||trinket.t1.is.manic_grieftorch||trinket.t1.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>action_cooldown%120||action_cooldown<=60&variable.hold_xuen||action_cooldown<=60&buff.storm_earth_and_fire.remains>10||!talent.invoke_xuen_the_white_tiger.enabled)||boss&fight_remains<30'.\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.is.horn_of_valor' to 'trinket.t1.is.horn_of_valor' (1x).\nLine 5: Converted 'trinket.1.is.manic_grieftorch' to 'trinket.t1.is.manic_grieftorch' (1x).\nLine 5: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 5: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 5: Converted operations in '!trinket.t1.has_use_buff&!(trinket.t1.is.horn_of_valor||trinket.t1.is.manic_grieftorch||trinket.t1.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>action_cooldown%%120||action_cooldown<=60&variable.hold_xuen||!talent.invoke_xuen_the_white_tiger.enabled)||boss&fight_remains<30' to '!trinket.t1.has_use_buff&!(trinket.t1.is.horn_of_valor||trinket.t1.is.manic_grieftorch||trinket.t1.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>action_cooldown%120||action_cooldown<=60&variable.hold_xuen||!talent.invoke_xuen_the_white_tiger.enabled)||boss&fight_remains<30'.\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.is.horn_of_valor' to 'trinket.t2.is.horn_of_valor' (1x).\nLine 6: Converted 'trinket.2.is.manic_grieftorch' to 'trinket.t2.is.manic_grieftorch' (1x).\nLine 6: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\nLine 6: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 6: Converted operations in 'trinket.t2.has_use_buff&!(trinket.t2.is.horn_of_valor||trinket.t2.is.manic_grieftorch||trinket.t2.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>action_cooldown%%120||action_cooldown<=60&variable.hold_xuen||action_cooldown<=60&buff.storm_earth_and_fire.remains>10||!talent.invoke_xuen_the_white_tiger.enabled)||boss&fight_remains<30' to 'trinket.t2.has_use_buff&!(trinket.t2.is.horn_of_valor||trinket.t2.is.manic_grieftorch||trinket.t2.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>action_cooldown%120||action_cooldown<=60&variable.hold_xuen||action_cooldown<=60&buff.storm_earth_and_fire.remains>10||!talent.invoke_xuen_the_white_tiger.enabled)||boss&fight_remains<30'.\nLine 7: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 7: Converted 'trinket.2.is.horn_of_valor' to 'trinket.t2.is.horn_of_valor' (1x).\nLine 7: Converted 'trinket.2.is.manic_grieftorch' to 'trinket.t2.is.manic_grieftorch' (1x).\nLine 7: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\nLine 7: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 7: Converted operations in '!trinket.t2.has_use_buff&!(trinket.t2.is.horn_of_valor||trinket.t2.is.manic_grieftorch||trinket.t2.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>action_cooldown%%120||action_cooldown<=60&variable.hold_xuen||!talent.invoke_xuen_the_white_tiger.enabled)||boss&fight_remains<30' to '!trinket.t2.has_use_buff&!(trinket.t2.is.horn_of_valor||trinket.t2.is.manic_grieftorch||trinket.t2.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>action_cooldown%120||action_cooldown<=60&variable.hold_xuen||!talent.invoke_xuen_the_white_tiger.enabled)||boss&fight_remains<30'.\n\nThe import for 'st_cleave' required some automated changes.\nLine 1: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 2: Converted 'talent.thunderfist' to 'talent.thunderfist.enabled' (1x).\nLine 9: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 12: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 12: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\nLine 18: Converted 'talent.storm_earth_and_fire' to 'talent.storm_earth_and_fire.enabled' (1x).\nLine 18: Converted 'talent.serenity' to 'talent.serenity.enabled' (1x).\nLine 19: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 21: Converted 'talent.thunderfist' to 'talent.thunderfist.enabled' (1x).\nLine 23: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 26: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 29: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 29: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 3: Converted 'talent.faeline_stomp' to 'talent.faeline_stomp.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 2: Converted 'talent.thunderfist' to 'talent.thunderfist.enabled' (1x).\nLine 7: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\n\nThe import for 'fallthru' required some automated changes.\nLine 1: Converted 'talent.serenity' to 'talent.serenity.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 2: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 2: Converted 'talent.serenity' to 'talent.serenity.enabled' (1x).\nLine 3: Converted 'talent.xuen_the_white_tiger' to 'talent.xuen_the_white_tiger.enabled' (1x).\nLine 4: Converted 'talent.serenity' to 'talent.serenity.enabled' (1x).\nLine 5: Converted 'talent.faeline_harmony' to 'talent.faeline_harmony.enabled' (1x).\nLine 6: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 6: Converted 'talent.serenity' to 'talent.serenity.enabled' (1x).\nLine 6: Converted 'talent.skyreach' to 'talent.skyreach.enabled' (1x).\nLine 7: Converted 'talent.faeline_stomp' to 'talent.faeline_stomp.enabled' (1x).\nLine 7: Converted 'talent.faeline_harmony' to 'talent.faeline_harmony.enabled' (1x).\nLine 8: Converted 'talent.serenity' to 'talent.serenity.enabled' (1x).\nLine 9: Converted 'talent.serenity' to 'talent.serenity.enabled' (1x).\n\nThe import for 'bdb_setup' required some automated changes.\nLine 1: Converted 'talent.thunderfist' to 'talent.thunderfist.enabled' (1x).\nLine 4: Converted 'talent.whirling_dragon_punch' to 'talent.whirling_dragon_punch.enabled' (1x).\nLine 5: Converted 'talent.whirling_dragon_punch' to 'talent.whirling_dragon_punch.enabled' (1x).\nLine 6: Converted 'talent.whirling_dragon_punch' to 'talent.whirling_dragon_punch.enabled' (1x).\n\nImported 15 action lists.\n",
["profile"] = "actions.precombat+=/summon_white_tiger_statue\nactions.precombat+=/expel_harm,if=chi<chi.max\nactions.precombat+=/chi_burst,if=!talent.faeline_stomp\nactions.precombat+=/chi_wave\n\n# Executed every time the actor is available.\nactions=spear_hand_strike\nactions+=/variable,name=hold_xuen,op=set,value=!talent.invoke_xuen_the_white_tiger||cooldown.invoke_xuen_the_white_tiger.remains>fight_remains||fight_remains-cooldown.invoke_xuen_the_white_tiger.remains<120&((talent.serenity&fight_remains>cooldown.serenity.remains&cooldown.serenity.remains>10)||(cooldown.storm_earth_and_fire.full_recharge_time<fight_remains&cooldown.storm_earth_and_fire.full_recharge_time>15)||(cooldown.storm_earth_and_fire.charges=0&cooldown.storm_earth_and_fire.remains<fight_remains))\n# Potion\nactions+=/potion,if=(buff.serenity.up||buff.storm_earth_and_fire.up)&(!talent.xuen_the_white_tiger||pet.xuen_the_white_tiger.active)||boss&fight_remains<=60\n# Build Chi at the start of combat\nactions+=/call_action_list,name=opener,if=time<4&chi<5&!pet.xuen_the_white_tiger.active&!talent.serenity\n# Prioritize Faeline Stomp if playing with Faeline Harmony\nactions+=/faeline_stomp,cycle_targets=1,if=combo_strike&talent.faeline_harmony&debuff.fae_exposure_damage.remains<1\n# TP if not overcapping Chi or TotM\nactions+=/tiger_palm,cycle_targets=1,if=!buff.serenity.up&buff.teachings_of_the_monastery.stack<3&combo_strike&chi.max-chi>=(2+buff.power_strikes.up)&(!talent.invoke_xuen_the_white_tiger&!talent.serenity||(!talent.skyreach||time>5||pet.xuen_the_white_tiger.active))\n# Use Chi Burst to reset Faeline Stomp\nactions+=/chi_burst,if=talent.faeline_stomp&cooldown.faeline_stomp.remains&(chi.max-chi>=1&active_enemies=1||chi.max-chi>=2&active_enemies>=2)&!talent.faeline_harmony\n# Use Cooldowns\nactions+=/call_action_list,name=cd_sef,strict=1,if=!talent.serenity\nactions+=/call_action_list,name=cd_serenity,strict=1,if=talent.serenity\n# Serenity / Default Priority\nactions+=/call_action_list,name=serenity,strict=1,if=buff.serenity.up\nactions+=/call_action_list,name=heavy_aoe,strict=1,if=active_enemies>4\nactions+=/call_action_list,name=aoe,strict=1,if=active_enemies=4\nactions+=/call_action_list,name=cleave,strict=1,if=active_enemies=3\nactions+=/call_action_list,name=st_cleave,strict=1,if=active_enemies=2\nactions+=/call_action_list,name=st,strict=1,if=active_enemies=1\nactions+=/call_action_list,name=fallthru\n\n# >4 Targets\nactions.heavy_aoe+=/spinning_crane_kick,if=combo_strike&buff.dance_of_chiji.up&spinning_crane_kick.max\nactions.heavy_aoe+=/strike_of_the_windlord,if=talent.thunderfist\nactions.heavy_aoe+=/whirling_dragon_punch,if=active_enemies>8\nactions.heavy_aoe+=/fists_of_fury\nactions.heavy_aoe+=/spinning_crane_kick,if=buff.bonedust_brew.up&combo_strike&spinning_crane_kick.max\nactions.heavy_aoe+=/rising_sun_kick,cycle_targets=1,if=buff.bonedust_brew.up&buff.pressure_point.up&set_bonus.tier30_2pc\nactions.heavy_aoe+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=3&talent.shadowboxing_treads\nactions.heavy_aoe+=/whirling_dragon_punch,if=active_enemies>=5\nactions.heavy_aoe+=/rising_sun_kick,cycle_targets=1,if=buff.pressure_point.up&set_bonus.tier30_2pc\nactions.heavy_aoe+=/rising_sun_kick,cycle_targets=1,if=set_bonus.tier30_2pc\nactions.heavy_aoe+=/rising_sun_kick,cycle_targets=1,if=talent.whirling_dragon_punch&cooldown.whirling_dragon_punch.remains<3&cooldown.fists_of_fury.remains>3&!buff.kicks_of_flowing_momentum.up\nactions.heavy_aoe+=/spinning_crane_kick,cycle_targets=1,if=combo_strike&cooldown.fists_of_fury.remains<5&buff.chi_energy.stack>10\nactions.heavy_aoe+=/blackout_kick,cycle_targets=1,if=talent.shadowboxing_treads&combo_strike&set_bonus.tier30_2pc&!buff.bonedust_brew.up&active_enemies<15&!talent.crane_vortex\nactions.heavy_aoe+=/blackout_kick,cycle_targets=1,if=talent.shadowboxing_treads&combo_strike&set_bonus.tier30_2pc&!buff.bonedust_brew.up&active_enemies<8\nactions.heavy_aoe+=/spinning_crane_kick,cycle_targets=1,if=combo_strike&(cooldown.fists_of_fury.remains>3||chi>4)&spinning_crane_kick.max\nactions.heavy_aoe+=/rushing_jade_wind,if=!buff.rushing_jade_wind.up\nactions.heavy_aoe+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=3\nactions.heavy_aoe+=/strike_of_the_windlord\nactions.heavy_aoe+=/blackout_kick,cycle_targets=1,if=talent.shadowboxing_treads&combo_strike&!spinning_crane_kick.max\nactions.heavy_aoe+=/chi_burst,if=chi.max-chi>=1&active_enemies=1&raid_event.adds.in>20||chi.max-chi>=2\n\n# 4 Targets\nactions.aoe+=/spinning_crane_kick,if=combo_strike&buff.dance_of_chiji.up&spinning_crane_kick.max\nactions.aoe+=/strike_of_the_windlord,if=talent.thunderfist\nactions.aoe+=/fists_of_fury\nactions.aoe+=/rising_sun_kick,cycle_targets=1,if=buff.bonedust_brew.up&buff.pressure_point.up&set_bonus.tier30_2pc\nactions.aoe+=/spinning_crane_kick,if=buff.bonedust_brew.up&combo_strike&spinning_crane_kick.max\nactions.aoe+=/rising_sun_kick,cycle_targets=1,if=!buff.bonedust_brew.up&buff.pressure_point.up&cooldown.fists_of_fury.remains>5\nactions.aoe+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=3&talent.shadowboxing_treads\nactions.aoe+=/rising_sun_kick,cycle_targets=1,if=set_bonus.tier30_2pc\nactions.aoe+=/spinning_crane_kick,if=combo_strike&cooldown.fists_of_fury.remains>3&buff.chi_energy.stack>10\nactions.aoe+=/blackout_kick,cycle_targets=1,if=combo_strike&set_bonus.tier30_2pc\nactions.aoe+=/spinning_crane_kick,if=combo_strike&(cooldown.fists_of_fury.remains>3||chi>4)&spinning_crane_kick.max\nactions.aoe+=/whirling_dragon_punch\nactions.aoe+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=3\nactions.aoe+=/rushing_jade_wind,if=!buff.rushing_jade_wind.up\nactions.aoe+=/strike_of_the_windlord\nactions.aoe+=/spinning_crane_kick,if=combo_strike&(cooldown.fists_of_fury.remains>3||chi>4)\nactions.aoe+=/blackout_kick,cycle_targets=1,if=combo_strike\n\n# 3 Targets\nactions.cleave+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=3&talent.shadowboxing_treads\nactions.cleave+=/spinning_crane_kick,if=combo_strike&buff.dance_of_chiji.up\nactions.cleave+=/strike_of_the_windlord,if=talent.thunderfist\nactions.cleave+=/fists_of_fury\nactions.cleave+=/rising_sun_kick,cycle_targets=1,if=buff.bonedust_brew.up&buff.pressure_point.up&set_bonus.tier30_2pc\nactions.cleave+=/spinning_crane_kick,if=buff.bonedust_brew.up&combo_strike\nactions.cleave+=/rising_sun_kick,cycle_targets=1,if=!buff.bonedust_brew.up&buff.pressure_point.up\nactions.cleave+=/rising_sun_kick,cycle_targets=1,if=set_bonus.tier30_2pc\nactions.cleave+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=2\nactions.cleave+=/strike_of_the_windlord\nactions.cleave+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.up&(talent.shadowboxing_treads||cooldown.rising_sun_kick.remains>1)\nactions.cleave+=/whirling_dragon_punch\nactions.cleave+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=3\nactions.cleave+=/spinning_crane_kick,cycle_targets=1,if=combo_strike&cooldown.fists_of_fury.remains<3&buff.chi_energy.stack>15\nactions.cleave+=/rising_sun_kick,cycle_targets=1,if=cooldown.fists_of_fury.remains>4&chi>3\nactions.cleave+=/spinning_crane_kick,cycle_targets=1,if=combo_strike&cooldown.rising_sun_kick.remains&cooldown.fists_of_fury.remains&chi>4&((talent.storm_earth_and_fire&!talent.bonedust_brew)||(talent.serenity))\nactions.cleave+=/blackout_kick,cycle_targets=1,if=combo_strike&cooldown.fists_of_fury.remains\nactions.cleave+=/rushing_jade_wind,if=!buff.rushing_jade_wind.up\nactions.cleave+=/blackout_kick,cycle_targets=1,if=combo_strike&talent.shadowboxing_treads&!spinning_crane_kick.max\nactions.cleave+=/spinning_crane_kick,cycle_targets=1,if=(combo_strike&chi>5&talent.storm_earth_and_fire||combo_strike&chi>4&talent.serenity)\n\n# 2 Targets\nactions.st_cleave+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=3&talent.shadowboxing_treads\nactions.st_cleave+=/strike_of_the_windlord,if=talent.thunderfist\nactions.st_cleave+=/fists_of_fury\nactions.st_cleave+=/rising_sun_kick,cycle_targets=1,if=set_bonus.tier30_2pc\nactions.st_cleave+=/rising_sun_kick,cycle_targets=1,if=buff.kicks_of_flowing_momentum.up||buff.pressure_point.up\nactions.st_cleave+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=2\nactions.st_cleave+=/spinning_crane_kick,if=combo_strike&buff.dance_of_chiji.up\nactions.st_cleave+=/strike_of_the_windlord\nactions.st_cleave+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.up&(talent.shadowboxing_treads||cooldown.rising_sun_kick.remains>1)\nactions.st_cleave+=/whirling_dragon_punch\nactions.st_cleave+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=3\nactions.st_cleave+=/rising_sun_kick,cycle_targets=1,if=!talent.shadowboxing_treads&cooldown.fists_of_fury.remains>4&talent.xuens_battlegear\nactions.st_cleave+=/blackout_kick,cycle_targets=1,if=combo_strike&cooldown.rising_sun_kick.remains&cooldown.fists_of_fury.remains&(!buff.bonedust_brew.up||spinning_crane_kick.modifier<1.5)\nactions.st_cleave+=/rushing_jade_wind,if=!buff.rushing_jade_wind.up\nactions.st_cleave+=/spinning_crane_kick,if=buff.bonedust_brew.up&combo_strike&spinning_crane_kick.modifier>=2.7\nactions.st_cleave+=/rising_sun_kick,cycle_targets=1\nactions.st_cleave+=/blackout_kick,cycle_targets=1,if=combo_strike\nactions.st_cleave+=/spinning_crane_kick,cycle_targets=1,if=(combo_strike&chi>5&talent.storm_earth_and_fire||combo_strike&chi>4&talent.serenity)\n\n# 1 Target\nactions.st+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=3\nactions.st+=/strike_of_the_windlord,if=talent.thunderfist\nactions.st+=/rising_sun_kick,cycle_targets=1,if=buff.kicks_of_flowing_momentum.up||buff.pressure_point.up\nactions.st+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=2\nactions.st+=/strike_of_the_windlord\nactions.st+=/rising_sun_kick,cycle_targets=1,if=cooldown.fists_of_fury.remains>4&talent.xuens_battlegear\nactions.st+=/fists_of_fury\nactions.st+=/spinning_crane_kick,if=combo_strike&buff.dance_of_chiji.up\nactions.st+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.up&cooldown.rising_sun_kick.remains>1\nactions.st+=/spinning_crane_kick,if=buff.bonedust_brew.up&combo_strike&spinning_crane_kick.modifier>=2.7\nactions.st+=/rising_sun_kick,cycle_targets=1\nactions.st+=/whirling_dragon_punch\nactions.st+=/rushing_jade_wind,if=!buff.rushing_jade_wind.up\nactions.st+=/blackout_kick,cycle_targets=1,if=combo_strike\n\n# Bonedust Brew Setup\nactions.bdb_setup+=/strike_of_the_windlord,if=talent.thunderfist&active_enemies>3\nactions.bdb_setup+=/bonedust_brew,if=spinning_crane_kick.max&chi>=4\nactions.bdb_setup+=/tiger_palm,cycle_targets=1,if=combo_strike&chi.max-chi>=2&buff.storm_earth_and_fire.up\nactions.bdb_setup+=/blackout_kick,cycle_targets=1,if=combo_strike&!talent.whirling_dragon_punch&!spinning_crane_kick.max\nactions.bdb_setup+=/rising_sun_kick,cycle_targets=1,if=combo_strike&chi>=5&talent.whirling_dragon_punch\nactions.bdb_setup+=/rising_sun_kick,cycle_targets=1,if=combo_strike&active_enemies>=2&talent.whirling_dragon_punch\n\n# Storm, Earth and Fire Cooldowns\nactions.cd_sef+=/call_action_list,name=sef_trinkets\nactions.cd_sef+=/summon_white_tiger_statue,if=pet.xuen_the_white_tiger.active\nactions.cd_sef+=/invoke_xuen_the_white_tiger,if=!variable.hold_xuen&talent.bonedust_brew&cooldown.bonedust_brew.remains<=5&(active_enemies<3&chi>=3||active_enemies>=3&chi>=2)||fight_remains<25\nactions.cd_sef+=/invoke_xuen_the_white_tiger,if=!variable.hold_xuen&!talent.bonedust_brew&(cooldown.rising_sun_kick.remains<2)&chi>=3\nactions.cd_sef+=/storm_earth_and_fire,if=talent.bonedust_brew&(fight_remains<30&cooldown.bonedust_brew.remains<4&chi>=4||buff.bonedust_brew.up||!spinning_crane_kick.max&active_enemies>=3&cooldown.bonedust_brew.remains<=2&chi>=2)&(pet.xuen_the_white_tiger.active||cooldown.invoke_xuen_the_white_tiger.remains>cooldown.storm_earth_and_fire.full_recharge_time)\nactions.cd_sef+=/bonedust_brew,if=(!buff.bonedust_brew.up&buff.storm_earth_and_fire.up&buff.storm_earth_and_fire.remains<11&spinning_crane_kick.max)||(!buff.bonedust_brew.up&fight_remains<30&fight_remains>10&spinning_crane_kick.max&chi>=4)||fight_remains<10||(!debuff.skyreach_exhaustion.up&active_enemies>=4&spinning_crane_kick.modifier>=2)||(pet.xuen_the_white_tiger.active&spinning_crane_kick.max&active_enemies>=4)\nactions.cd_sef+=/call_action_list,name=bdb_setup,if=!buff.bonedust_brew.up&talent.bonedust_brew&cooldown.bonedust_brew.remains<=2&(fight_remains>60&(cooldown.storm_earth_and_fire.charges>0||cooldown.storm_earth_and_fire.remains>10)&(pet.xuen_the_white_tiger.active||cooldown.invoke_xuen_the_white_tiger.remains>10||variable.hold_xuen)||((pet.xuen_the_white_tiger.active||cooldown.invoke_xuen_the_white_tiger.remains>13)&(cooldown.storm_earth_and_fire.charges>0||cooldown.storm_earth_and_fire.remains>13||buff.storm_earth_and_fire.up)))\nactions.cd_sef+=/storm_earth_and_fire,if=boss&fight_remains<20||(cooldown.storm_earth_and_fire.charges=2&cooldown.invoke_xuen_the_white_tiger.remains>cooldown.storm_earth_and_fire.full_recharge_time)&cooldown.fists_of_fury.remains<=9&chi>=2&cooldown.whirling_dragon_punch.remains<=12\n## actions.cd_sef+=/touch_of_death,cycle_targets=1,if=!boss&combo_strike&target.health<health\n## actions.cd_sef+=/touch_of_death,cycle_targets=1,if=!boss&combo_strike&(target.time_to_die>60||debuff.bonedust_brew_debuff.up||fight_remains<10)\nactions.cd_sef+=/touch_of_death,cycle_targets=1,if=combo_strike\nactions.cd_sef+=/touch_of_karma,cycle_targets=1,if=fight_remains>90||pet.xuen_the_white_tiger.active||variable.hold_xuen||boss&fight_remains<16\nactions.cd_sef+=/touch_of_karma,if=fight_remains>159||variable.hold_xuen\nactions.cd_sef+=/blood_fury,if=cooldown.invoke_xuen_the_white_tiger.remains>30||variable.hold_xuen||boss&fight_remains<20\nactions.cd_sef+=/berserking,if=cooldown.invoke_xuen_the_white_tiger.remains>30||variable.hold_xuen||boss&fight_remains<15\nactions.cd_sef+=/lights_judgment\nactions.cd_sef+=/fireblood,if=cooldown.invoke_xuen_the_white_tiger.remains>30||variable.hold_xuen||boss&fight_remains<10\nactions.cd_sef+=/ancestral_call,if=cooldown.invoke_xuen_the_white_tiger.remains>30||variable.hold_xuen||boss&fight_remains<20\nactions.cd_sef+=/bag_of_tricks,if=buff.storm_earth_and_fire.down\n\n# Serenity Cooldowns\nactions.cd_serenity+=/call_action_list,name=serenity_trinkets\nactions.cd_serenity+=/summon_white_tiger_statue,if=!cooldown.invoke_xuen_the_white_tiger.remains||active_enemies>4||cooldown.invoke_xuen_the_white_tiger.remains>50||boss&fight_remains<=30\nactions.cd_serenity+=/invoke_xuen_the_white_tiger,if=!variable.hold_xuen&talent.bonedust_brew&cooldown.bonedust_brew.remains<=5||boss&fight_remains<25\nactions.cd_serenity+=/invoke_xuen_the_white_tiger,if=!variable.hold_xuen&!talent.bonedust_brew&(cooldown.rising_sun_kick.remains<2)||boss&fight_remains<25\nactions.cd_serenity+=/bonedust_brew,if=!buff.bonedust_brew.up&(cooldown.serenity.up||cooldown.serenity.remains>15||boss&fight_remains<30&fight_remains>10)||boss&fight_remains<10\nactions.cd_serenity+=/serenity,if=pet.xuen_the_white_tiger.active&target.time_to_die>15||!talent.invoke_xuen_the_white_tiger||boss&fight_remains<15\n## actions.cd_serenity+=/touch_of_death,cycle_targets=1,if=!boss&combo_strike&target.health<health\n## actions.cd_serenity+=/touch_of_death,cycle_targets=1,if=!boss&combo_strike&(target.time_to_die>60||debuff.bonedust_brew_debuff.up||fight_remains<10)\nactions.cd_serenity+=/touch_of_death,cycle_targets=1,if=combo_strike&!buff.serenity.up&(target.health.current<health||buff.hidden_masters_forbidden_touch.up&(buff.hidden_masters_forbidden_touch.remains<2||buff.hidden_masters_forbidden_touch.remains>target.time_to_die)||target.time_to_die>60||debuff.bonedust_brew_debuff.up||boss&fight_remains<10)\nactions.cd_serenity+=/touch_of_karma,if=fight_remains>90||boss&fight_remains<10\nactions.cd_serenity+=/blood_fury,if=buff.serenity.up||boss&fight_remains<20\nactions.cd_serenity+=/berserking,if=buff.serenity.up||boss&fight_remains<20\nactions.cd_serenity+=/lights_judgment\nactions.cd_serenity+=/fireblood,if=buff.serenity.up||boss&fight_remains<20\nactions.cd_serenity+=/ancestral_call,if=buff.serenity.up||boss&fight_remains<20\nactions.cd_serenity+=/bag_of_tricks,if=buff.serenity.up||boss&fight_remains<20\n\n# Fallthru\nactions.fallthru+=/crackling_jade_lightning,if=buff.the_emperors_capacitor.stack>19&energy.time_to_max>execute_time-1&cooldown.rising_sun_kick.remains>execute_time||buff.the_emperors_capacitor.stack>14&(cooldown.serenity.remains<5&talent.serenity||boss&fight_remains<5)\nactions.fallthru+=/faeline_stomp,if=combo_strike\nactions.fallthru+=/tiger_palm,cycle_targets=1,if=combo_strike&chi.max-chi>=(2+buff.power_strikes.up)\nactions.fallthru+=/expel_harm,if=chi.max-chi>=1&active_enemies>2\nactions.fallthru+=/chi_burst,if=chi.max-chi>=1&active_enemies=1&raid_event.adds.in>20||chi.max-chi>=2&active_enemies>=2\nactions.fallthru+=/chi_wave\nactions.fallthru+=/expel_harm,if=chi.max-chi>=1\nactions.fallthru+=/blackout_kick,cycle_targets=1,if=combo_strike&active_enemies>=5\nactions.fallthru+=/spinning_crane_kick,if=combo_strike&buff.chi_energy.stack>30-5*active_enemies&buff.storm_earth_and_fire.down&(cooldown.rising_sun_kick.remains>2&cooldown.fists_of_fury.remains>2||cooldown.rising_sun_kick.remains<3&cooldown.fists_of_fury.remains>3&chi>3||cooldown.rising_sun_kick.remains>3&cooldown.fists_of_fury.remains<3&chi>4||chi.max-chi<=1&energy.time_to_max<2)||buff.chi_energy.stack>10&fight_remains<7\nactions.fallthru+=/arcane_torrent,if=chi.max-chi>=1\nactions.fallthru+=/flying_serpent_kick,interrupt=1\nactions.fallthru+=/tiger_palm\n\n# Opener\nactions.opener+=/summon_white_tiger_statue\nactions.opener+=/expel_harm,if=talent.chi_burst.enabled&chi.max-chi>=3\nactions.opener+=/tiger_palm,cycle_targets=1,if=combo_strike&chi.max-chi>=(2+buff.power_strikes.up)\nactions.opener+=/expel_harm,if=talent.chi_burst.enabled&chi=3\nactions.opener+=/chi_wave,if=chi.max-chi=2\nactions.opener+=/expel_harm\nactions.opener+=/chi_burst,if=chi>1&chi.max-chi>=2\n\n# Serenity Priority\nactions.serenity+=/fists_of_fury,if=buff.serenity.remains<1\nactions.serenity+=/blackout_kick,cycle_targets=1,if=combo_strike&!spinning_crane_kick.max&active_enemies>4&talent.shdaowboxing_treads\nactions.serenity+=/blackout_kick,cycle_targets=1,if=combo_strike&buff.teachings_of_the_monastery.stack=3&buff.teachings_of_the_monastery.remains<1\nactions.serenity+=/rising_sun_kick,cycle_targets=1,if=active_enemies=4&buff.pressure_point.up&!talent.bonedust_brew\nactions.serenity+=/rising_sun_kick,cycle_targets=1,if=active_enemies=1\nactions.serenity+=/rising_sun_kick,cycle_targets=1,if=active_enemies<=3&buff.pressure_point.up\nactions.serenity+=/rising_sun_kick,cycle_targets=1,if=buff.pressure_point.up&set_bonus.tier30_2pc\nactions.serenity+=/fists_of_fury,if=buff.invokers_delight.up&active_enemies<3&talent.jade_ignition\nactions.serenity+=/fists_of_fury,if=buff.invokers_delight.up&active_enemies>4\nactions.serenity+=/fists_of_fury,if=buff.bloodlust.up\nactions.serenity+=/fists_of_fury,if=active_enemies=2,interrupt_if=buff.serenity.up&(buff.invokers_delight.up&(active_enemies<3&talent.jade_ignition||active_enemies>4)||buff.bloodlust.up||active_enemies=2)\nactions.serenity+=/strike_of_the_windlord,if=talent.thunderfist\nactions.serenity+=/spinning_crane_kick,if=combo_strike&buff.dance_of_chiji.up&active_enemies>=2\nactions.serenity+=/rising_sun_kick,cycle_targets=1,if=active_enemies=4&buff.pressure_point.up\nactions.serenity+=/blackout_kick,cycle_targets=1,if=active_enemies=3&combo_strike&set_bonus.tier30_2pc\nactions.serenity+=/spinning_crane_kick,if=combo_strike&active_enemies>=3&spinning_crane_kick.max\nactions.serenity+=/blackout_kick,cycle_targets=1,if=combo_strike&active_enemies>1&active_enemies<4&buff.teachings_of_the_monastery.stack=2\nactions.serenity+=/rushing_jade_wind,if=!buff.rushing_jade_wind.up&active_enemies>=5\nactions.serenity+=/blackout_kick,cycle_targets=1,if=talent.shadowboxing_treads&active_enemies>=3&combo_strike\nactions.serenity+=/spinning_crane_kick,if=combo_strike&(active_enemies>3||active_enemies>2&spinning_crane_kick.modifier>=2.3)\nactions.serenity+=/strike_of_the_windlord,if=active_enemies>=3\nactions.serenity+=/rising_sun_kick,cycle_targets=1,if=active_enemies=2&cooldown.fists_of_fury.remains>5\nactions.serenity+=/blackout_kick,cycle_targets=1,if=active_enemies=2&cooldown.fists_of_fury.remains>5&talent.shadowboxing_treads&buff.teachings_of_the_monastery.stack=1&combo_strike\nactions.serenity+=/spinning_crane_kick,if=combo_strike&active_enemies>1\nactions.serenity+=/whirling_dragon_punch,if=active_enemies>1\nactions.serenity+=/rushing_jade_wind,if=!buff.rushing_jade_wind.up&active_enemies>=3\nactions.serenity+=/rising_sun_kick,cycle_targets=1\nactions.serenity+=/spinning_crane_kick,if=combo_strike&buff.dance_of_chiji.up\nactions.serenity+=/blackout_kick,cycle_targets=1,if=combo_strike\nactions.serenity+=/whirling_dragon_punch\nactions.serenity+=/tiger_palm,cycle_targets=1,if=talent.teachings_of_the_monastery&buff.teachings_of_the_monastery.stack<3\n\n# ST Priority (<3 Targets)\nactions.st_cleave=blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=3&talent.shadowboxing_treads\nactions.st_cleave+=/spinning_crane_kick,if=combo_strike&buff.dance_of_chiji.up\nactions.st_cleave+=/strike_of_the_windlord,if=talent.thunderfist\nactions.st_cleave+=/rising_sun_kick,cycle_targets=1,if=active_enemies=1&buff.kicks_of_flowing_momentum.up||buff.pressure_point.up\nactions.st_cleave+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=2&talent.shadowboxing_treads\nactions.st_cleave+=/strike_of_the_windlord\nactions.st_cleave+=/fists_of_fury\nactions.st_cleave+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.up&(talent.shadowboxing_treads&active_enemies>1||cooldown.rising_sun_kick.remains>1)\nactions.st_cleave+=/whirling_dragon_punch,if=active_enemies=2\nactions.st_cleave+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=3\nactions.st_cleave+=/rising_sun_kick,cycle_targets=1,if=(active_enemies=1||!talent.shadowboxing_treads)&cooldown.fists_of_fury.remains>4&talent.xuens_battlegear\nactions.st_cleave+=/blackout_kick,cycle_targets=1,if=combo_strike&active_enemies=2&cooldown.rising_sun_kick.remains&cooldown.fists_of_fury.remains&(!buff.bonedust_brew.up||spinning_crane_kick.modifier<1.5)\nactions.st_cleave+=/rushing_jade_wind,if=!buff.rushing_jade_wind.up&active_enemies=2\nactions.st_cleave+=/spinning_crane_kick,if=buff.bonedust_brew.up&combo_strike&(active_enemies>1||spinning_crane_kick.modifier>=2.7)\nactions.st_cleave+=/rising_sun_kick,cycle_targets=1\nactions.st_cleave+=/whirling_dragon_punch\nactions.st_cleave+=/rushing_jade_wind,if=!buff.rushing_jade_wind.up\nactions.st_cleave+=/blackout_kick,cycle_targets=1,if=combo_strike\n\n# SEF Trinkets\nactions.sef_trinkets+=/horn_of_valor,if=pet.xuen_the_white_tiger.active||!talent.invoke_xuen_the_white_tiger&buff.storm_earth_and_fire.up||boss&fight_remains<30\nactions.sef_trinkets+=/manic_grieftorch,if=(boss||target.time_to_die>1+cast_time)&(trinket.1.is.manic_grieftorch&!trinket.2.has_use_buff||trinket.2.is.manic_grieftorch&!trinket.1.has_use_buff)\nactions.sef_trinkets+=/algethar_puzzle_box,if=(pet.xuen_the_white_tiger.active||!talent.invoke_xuen_the_white_tiger)&!buff.storm_earth_and_fire.up||boss&fight_remains<25\nactions.sef_trinkets+=/use_item,slot=trinket1,if=trinket.1.has_use_buff&!(trinket.1.is.horn_of_valor||trinket.1.is.manic_grieftorch||trinket.1.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>cooldown%%120||cooldown<=60&variable.hold_xuen||cooldown<=60&buff.storm_earth_and_fire.remains>10||!talent.invoke_xuen_the_white_tiger)||boss&fight_remains<30\nactions.sef_trinkets+=/use_item,slot=trinket1,if=!trinket.1.has_use_buff&!(trinket.1.is.horn_of_valor||trinket.1.is.manic_grieftorch||trinket.1.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>cooldown%%120||cooldown<=60&variable.hold_xuen||!talent.invoke_xuen_the_white_tiger)||boss&fight_remains<30\nactions.sef_trinkets+=/use_item,slot=trinket2,if=trinket.2.has_use_buff&!(trinket.2.is.horn_of_valor||trinket.2.is.manic_grieftorch||trinket.2.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>cooldown%%120||cooldown<=60&variable.hold_xuen||cooldown<=60&buff.storm_earth_and_fire.remains>10||!talent.invoke_xuen_the_white_tiger)||boss&fight_remains<30\nactions.sef_trinkets+=/use_item,slot=trinket2,if=!trinket.2.has_use_buff&!(trinket.2.is.horn_of_valor||trinket.2.is.manic_grieftorch||trinket.2.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>cooldown%%120||cooldown<=60&variable.hold_xuen||!talent.invoke_xuen_the_white_tiger)||boss&fight_remains<30\n\n# Serenity Trinkets\nactions.serenity_trinkets+=/horn_of_valor,if=pet.xuen_the_white_tiger.active||!talent.invoke_xuen_the_white_tiger&buff.storm_earth_and_fire.up||boss&fight_remains<30\nactions.serenity_trinkets+=/manic_grieftorch,if=(boss||target.time_to_die>1+cast_time)&(trinket.1.is.manic_grieftorch&!trinket.2.has_use_buff||trinket.2.is.manic_grieftorch&!trinket.1.has_use_buff)\nactions.serenity_trinkets+=/algethar_puzzle_box,if=(pet.xuen_the_white_tiger.active||!talent.invoke_xuen_the_white_tiger)&!buff.storm_earth_and_fire.up||boss&fight_remains<25\nactions.serenity_trinkets+=/use_item,slot=trinket1,if=trinket.1.has_use_buff&!(trinket.1.is.horn_of_valor||trinket.1.is.manic_grieftorch||trinket.1.is.algethar_puzzle_box)&buff.serenity.remains>10||boss&fight_remains<30\nactions.serenity_trinkets+=/use_item,slot=trinket1,if=!trinket.1.has_use_buff&!(trinket.1.is.horn_of_valor||trinket.1.is.manic_grieftorch||trinket.1.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>cooldown%%120||cooldown<=60&variable.hold_xuen||!talent.invoke_xuen_the_white_tiger)||boss&fight_remains<30\nactions.serenity_trinkets+=/use_item,slot=trinket2,if=trinket.2.has_use_buff&!(trinket.2.is.horn_of_valor||trinket.2.is.manic_grieftorch||trinket.2.is.algethar_puzzle_box)&buff.serenity.remains>10||boss&fight_remains<30\nactions.serenity_trinkets+=/use_item,slot=trinket2,if=!trinket.2.has_use_buff&!(trinket.2.is.horn_of_valor||trinket.2.is.manic_grieftorch||trinket.2.is.algethar_puzzle_box)&(cooldown.invoke_xuen_the_white_tiger.remains>cooldown%%120||cooldown<=60&variable.hold_xuen||!talent.invoke_xuen_the_white_tiger)||boss&fight_remains<30\nactions.serenity_trinkets+=/use_items,if=cooldown.invoke_xuen_the_white_tiger.remains>cooldown%%120||cooldown<=60&variable.hold_xuen||!talent.invoke_xuen_the_white_tiger",
["author"] = "SimC",
},
["Shadow"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230504,
["author"] = "SimC",
["desc"] = "2023-05-04: Prevent holding_crash variable from blocking Void Eruption if Shadow Crash is not talented or is disabled.\n\n2023-05-03: Additional updates for 10.1.\n\n2023-05-02: Remove Light's Judgment.\n\n2023-04-29: Updates for 10.1.\n\n2023-03-30: Don't cycle_targets for Mind Sear.\n\n2023-03-29: Make 'holding_crash' variable true if you've disabled Shadow Crash.\n\n2023-03-13: Routine update from SimC.\n\n2023-03-05: When Shadow Crash is in-flight, act as though SWP and VT are already applied to your target.",
["lists"] = {
["filler"] = {
{
["enabled"] = true,
["action"] = "vampiric_touch",
["cycle_targets"] = 1,
["criteria"] = "refreshable & buff.unfurling_darkness.up",
["description"] = "Cast Vampiric Touch to consume Unfurling Darkness, prefering the target with the lowest DoT duration active",
}, -- [1]
{
["enabled"] = true,
["action"] = "shadow_word_death",
["criteria"] = "target.health.pct < 20 || buff.deathspeaker.up",
["cycle_targets"] = 1,
}, -- [2]
{
["action"] = "mind_spike_insanity",
["enabled"] = true,
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.mind_flay_insanity.up",
["action"] = "mind_flay",
}, -- [4]
{
["enabled"] = true,
["description"] = "Save up to 20s if adds are coming soon.",
["criteria"] = "raid_event.adds.in > 20",
["action"] = "halo",
}, -- [5]
{
["enabled"] = true,
["action"] = "shadow_word_death",
["criteria"] = "talent.inescapable_torment.enabled & pet.fiend.active",
["cycle_targets"] = 1,
}, -- [6]
{
["enabled"] = true,
["description"] = "Save up to 10s if adds are coming soon.",
["criteria"] = "raid_event.adds.in > 10",
["action"] = "divine_star",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "buff.voidform.up & variable.dots_up",
["action"] = "devouring_plague",
}, -- [8]
{
["action"] = "mind_spike",
["enabled"] = true,
}, -- [9]
{
["enabled"] = true,
["action"] = "mind_flay",
["interrupt_if"] = "ticks>=2",
["interrupt_immediate"] = "1",
["chain"] = "1",
}, -- [10]
{
["enabled"] = true,
["description"] = "Use Shadow Crash while moving as a low-priority action when adds will not come in 20 seconds.",
["criteria"] = "raid_event.adds.in > 20",
["action"] = "shadow_crash",
}, -- [11]
{
["enabled"] = true,
["action"] = "shadow_word_death",
["cycle_targets"] = 1,
["criteria"] = "target.health.pct < 20",
["description"] = "Use Shadow Word: Death while moving as a low-priority action in execute",
}, -- [12]
{
["enabled"] = true,
["description"] = "Use Divine Star while moving as a low-priority action",
["action"] = "divine_star",
}, -- [13]
{
["enabled"] = true,
["description"] = "Use Shadow Word: Death while moving as a low-priority action",
["action"] = "shadow_word_death",
}, -- [14]
{
["enabled"] = true,
["action"] = "shadow_word_pain",
["description"] = "Use Shadow Word: Pain while moving as a low-priority action",
["cycle_targets"] = 1,
}, -- [15]
},
["main_variables"] = {
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "( dot.shadow_word_pain.ticking & dot.vampiric_touch.ticking ) || action.shadow_crash.in_flight & talent.whispering_shadows.enabled",
["var_name"] = "dots_up",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "target.time_to_die < 8 || ( dot.shadow_word_pain.ticking & dot.vampiric_touch.ticking || action.shadow_crash.in_flight ) & dot.devouring_plague.ticking",
["var_name"] = "all_dots_up",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "( cooldown.void_eruption.remains <= gcd.max * 3 & talent.void_eruption.enabled || cooldown.dark_ascension.up & talent.dark_ascension.enabled ) || talent.void_torrent.enabled & talent.psychic_link.enabled & cooldown.void_torrent.remains <= 4 & ( ! raid_event.adds.exists & spell_targets.vampiric_touch > 1 || raid_event.adds.in <= 5 || raid_event.adds.remains >= 6 & ! variable.holding_crash ) & ! buff.voidform.up",
["var_name"] = "pool_for_cds",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "dot.vampiric_touch.ticking",
["description"] = "Set vts_applied for single-target to support Mindbender entry in cds action list.",
["var_name"] = "vts_applied",
}, -- [4]
},
["aoe_variables"] = {
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "spell_targets.vampiric_touch >? 12",
["default"] = "12",
["var_name"] = "max_vts",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "false",
["default"] = "true",
["var_name"] = "is_vt_possible",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "true",
["criteria"] = "dot.vampiric_touch.refreshable || active_dot.vampiric_touch < cycle_enemies & fight_remains > 8",
["var_name"] = "is_vt_possible",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "( active_dot.vampiric_touch + 8 * action.shadow_crash.in_flight & talent.whispering_shadows.enabled ) >= variable.max_vts || ! variable.is_vt_possible",
["description"] = "TODO: Revamp to fix undesired behaviour with unstacked fights",
["var_name"] = "vts_applied",
}, -- [4]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "( variable.max_vts - active_dot.vampiric_touch ) < 4 || raid_event.adds.in < 10 & raid_event.adds.count > ( variable.max_vts - active_dot.vampiric_touch )",
["criteria"] = "variable.holding_crash & talent.whispering_shadows.enabled",
["var_name"] = "holding_crash",
}, -- [5]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "( active_dot.vampiric_touch + 8 * ! variable.holding_crash ) >= variable.max_vts || ! variable.is_vt_possible",
["var_name"] = "manual_vts_applied",
}, -- [6]
},
["cds"] = {
{
["enabled"] = true,
["description"] = "TODO: Check VE/DA enter conditions based on dots",
["criteria"] = "buff.voidform.up || buff.power_infusion.up || buff.dark_ascension.up & ( fight_remains <= cooldown.power_infusion.remains + 15 ) || boss & fight_remains <= 30",
["action"] = "potion",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.power_infusion.up || boss & fight_remains <= 8",
["action"] = "fireblood",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.power_infusion.up || boss & fight_remains <= 12",
["action"] = "berserking",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.power_infusion.up || boss & fight_remains <= 15",
["action"] = "blood_fury",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.power_infusion.up || boss & fight_remains <= 15",
["action"] = "ancestral_call",
}, -- [5]
{
["enabled"] = true,
["description"] = "Sync Power Infusion with Voidform or Dark Ascension",
["criteria"] = "( buff.voidform.up || buff.dark_ascension.up )",
["action"] = "power_infusion",
}, -- [6]
{
["enabled"] = true,
["description"] = "Make sure Mindbender is active before popping Void Eruption and dump charges of Mind Blast before casting",
["criteria"] = "! cooldown.fiend.up & ( pet.fiend.active & cooldown.fiend.remains >= 4 || ! talent.mindbender.enabled || active_enemies > 2 & ! talent.inescapable_torment.rank ) & ( cooldown.mind_blast.charges = 0 || time > 15 )",
["action"] = "void_eruption",
}, -- [7]
{
["enabled"] = true,
["description"] = "Make sure Mindbender is active before popping Dark Ascension unless you have insignificant talent points or too many targets",
["criteria"] = "pet.fiend.active & cooldown.fiend.remains >= 4 || ! talent.mindbender.enabled & ! cooldown.fiend.up || active_enemies > 2 & ! talent.inescapable_torment.enabled",
["action"] = "dark_ascension",
}, -- [8]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "trinkets",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "( dot.shadow_word_pain.ticking & variable.vts_applied || action.shadow_crash.in_flight )",
["action"] = "mindbender",
}, -- [10]
{
["enabled"] = true,
["description"] = "Use Desperate Prayer to heal up should Shadow Word: Death or other damage bring you below 75%",
["criteria"] = "health.pct <= 75",
["action"] = "desperate_prayer",
}, -- [11]
},
["main"] = {
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "main_variables",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "fight_remains < 30 || time_to_die > 15 & ( ! variable.holding_crash || active_enemies > 2 )",
["action"] = "call_action_list",
["list_name"] = "cds",
}, -- [2]
{
["enabled"] = true,
["description"] = "Use Shadowfiend and Mindbender on cooldown as long as Vampiric Touch and Shadow Word: Pain are active",
["criteria"] = "variable.dots_up & ( fight_remains < 30 || time_to_die > 15 )",
["action"] = "mindbender",
}, -- [3]
{
["enabled"] = true,
["action"] = "mind_blast",
["cycle_targets"] = 1,
["criteria"] = "( dot.devouring_plague.ticking & ( cooldown.mind_blast.full_recharge_time <= gcd.max + cast_time ) || pet.fiend.remains <= cast_time + gcd.max ) & pet.fiend.active & talent.inescapable_torment.enabled & pet.fiend.remains > cast_time & active_enemies <= 7",
["description"] = "High priority Mind Blast action when using Inescapable Torment",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "variable.dots_up",
["action"] = "void_bolt",
}, -- [5]
{
["enabled"] = true,
["action"] = "devouring_plague",
["cycle_targets"] = 1,
["criteria"] = "refreshable & ! variable.pool_for_cds || insanity.deficit <= 20 || buff.voidform.up & cooldown.void_bolt.remains > buff.voidform.remains & cooldown.void_bolt.remains < ( buff.voidform.remains + 2 )",
["description"] = "Use Devouring Plague to maximize uptime. Short circuit if you are capping on Insanity within 20 or to get out an extra Void Bolt by extending Voidform. With Distorted Reality can maintain more than one at a time in multi-target.",
}, -- [6]
{
["enabled"] = true,
["description"] = "Use Shadow Crash as long as you are not holding for adds and Vampiric Touch is within pandemic range",
["criteria"] = "! variable.holding_crash & dot.vampiric_touch.refreshable",
["action"] = "shadow_crash",
}, -- [7]
{
["enabled"] = true,
["action"] = "vampiric_touch",
["cycle_targets"] = 1,
["criteria"] = "refreshable & target.time_to_die >= 12 & ( cooldown.shadow_crash.remains >= dot.vampiric_touch.remains & ! action.shadow_crash.in_flight || variable.holding_crash || ! talent.whispering_shadows.enabled )",
["description"] = "Put out Vampiric Touch on enemies that will live at least 12s and Shadow Crash is not available soon",
}, -- [8]
{
["enabled"] = true,
["description"] = "High Priority Mind Spike: Insanity to fish for C'Thun procs when Mind Blast is not capped and Void Torrent is not available",
["criteria"] = "variable.dots_up & cooldown.mind_blast.full_recharge_time >= gcd.max * 3 & talent.idol_of_cthun.enabled & ( ! cooldown.void_torrent.up || ! talent.void_torrent.enabled )",
["action"] = "mind_spike_insanity",
}, -- [9]
{
["enabled"] = true,
["description"] = "High Priority Mind Flay: Insanity to fish for C'Thun procs when Mind Blast is not capped and Void Torrent is not available",
["criteria"] = "buff.mind_flay_insanity.up & variable.dots_up & cooldown.mind_blast.full_recharge_time >= gcd.max * 3 & talent.idol_of_cthun.enabled & ( ! cooldown.void_torrent.up || ! talent.void_torrent.enabled )",
["action"] = "mind_flay",
}, -- [10]
{
["enabled"] = true,
["description"] = "Use all charges of Mind Blast if Vampiric Touch and Shadow Word: Pain are active and Mind Devourer is not active or you are prepping Void Eruption",
["criteria"] = "variable.dots_up & ( ! buff.mind_devourer.up || cooldown.void_eruption.up & talent.void_eruption.enabled )",
["action"] = "mind_blast",
}, -- [11]
{
["enabled"] = true,
["action"] = "void_torrent",
["cycle_targets"] = 1,
["criteria"] = "! variable.holding_crash & variable.all_dots_up & dot.devouring_plague.remains >= 2",
["description"] = "Void Torrent if you are not holding Shadow Crash for an add pack coming, prefer the target with the most DoTs active. Only cast if Devouring Plague is on that target and will last at least 2 seconds",
}, -- [12]
{
["enabled"] = true,
["action"] = "mindgames",
["cycle_targets"] = 1,
["criteria"] = "variable.all_dots_up & dot.devouring_plague.remains >= cast_time",
["description"] = "Cast Mindgames if all DoTs will be active by the time the cast finishes",
}, -- [13]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "filler",
}, -- [14]
},
["precombat"] = {
{
["enabled"] = true,
["criteria"] = "! buff.shadowform.up",
["action"] = "shadowform",
}, -- [1]
{
["action"] = "arcane_torrent",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "2",
["var_name"] = "mind_sear_cutoff",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "60",
["var_name"] = "pool_amount",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in >= 25 & spell_targets.shadow_crash <= 8 & boss & ( spell_targets.shadow_crash > 1 || talent.mental_decay.enabled )",
["action"] = "shadow_crash",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "refreshable & ( ! talent.shadow_crash.enabled || spell_targets.shadow_crash > 8 || spell_targets.shadow_crash = 1 & ! talent.mental_decay.enabled || ! boss )",
["action"] = "vampiric_touch",
}, -- [6]
},
["aoe"] = {
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "aoe_variables",
}, -- [1]
{
["enabled"] = true,
["action"] = "vampiric_touch",
["cycle_targets"] = 1,
["criteria"] = "refreshable & target.time_to_die >= 18 & ( dot.vampiric_touch.ticking || ! variable.vts_applied ) & ( variable.max_vts > 0 & ! variable.manual_vts_applied & ! action.shadow_crash.in_flight || ! talent.whispering_shadows.enabled )",
["description"] = "High Priority action to put out Vampiric Touch on enemies that will live at least 18 seconds, up to 12 targets manually while prepping AoE",
}, -- [2]
{
["enabled"] = true,
["action"] = "shadow_crash",
["cycle_targets"] = 1,
["criteria"] = "! variable.holding_crash & ( dot.vampiric_touch.refreshable || dot.vampiric_touch.remains <= target.time_to_die & ! buff.voidform.up & ( raid_event.adds.in - dot.vampiric_touch.remains ) < 15 )",
["description"] = "Use Shadow Crash to apply Vampiric Touch to as many adds as possible while being efficient with Vampiric Touch refresh windows",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "fight_remains < 30 || time_to_die > 15 & ( ! variable.holding_crash || active_enemies > 2 )",
["action"] = "call_action_list",
["list_name"] = "cds",
}, -- [4]
{
["enabled"] = true,
["description"] = "Use Shadowfiend or Mindbender on cooldown if DoTs are active",
["criteria"] = "( dot.shadow_word_pain.ticking & variable.vts_applied || action.shadow_crash.in_flight & talent.whispering_shadows.enabled ) & ( fight_remains < 30 || time_to_die > 15 )",
["action"] = "mindbender",
}, -- [5]
{
["enabled"] = true,
["description"] = "Use Mind Blast when capped on charges and talented into Mind Devourer to fish for the buff or if Inescapable Torment is talented with Mindbender active. Only use when facing 3-7 targets.",
["criteria"] = "( cooldown.mind_blast.full_recharge_time <= gcd.max + cast_time || pet.fiend.remains <= cast_time + gcd.max ) & pet.fiend.active & talent.inescapable_torment.enabled & pet.fiend.remains > cast_time & active_enemies <= 7 & ! buff.mind_devourer.up",
["action"] = "mind_blast",
}, -- [6]
{
["action"] = "void_bolt",
["enabled"] = true,
}, -- [7]
{
["enabled"] = true,
["action"] = "devouring_plague",
["cycle_targets"] = 1,
["criteria"] = "refreshable & ! variable.pool_for_cds || insanity.deficit <= 20 || buff.voidform.up & cooldown.void_bolt.remains > buff.voidform.remains & cooldown.void_bolt.remains < ( buff.voidform.remains + 2 )",
["description"] = "Use Devouring Plague to maximize uptime. Short circuit if you are capping on Insanity within 20 or to get out an extra Void Bolt by extending Voidform. With Distorted Reality can maintain more than one at a time in multi-target.",
}, -- [8]
{
["enabled"] = true,
["action"] = "vampiric_touch",
["criteria"] = "refreshable & target.time_to_die >= 18 & ( dot.vampiric_touch.ticking || ! variable.vts_applied ) & ( variable.max_vts > 0 & ( cooldown.shadow_crash.remains >= dot.vampiric_touch.remains || variable.holding_crash ) & ! action.shadow_crash.in_flight || ! talent.whispering_shadows.enabled )",
["cycle_targets"] = 1,
}, -- [9]
{
["enabled"] = true,
["description"] = "High Priority Mind Spike: Insanity to fish for C'Thun procs when Mind Blast is not capped and Void Torrent is not available and Mindbender is not active",
["criteria"] = "variable.dots_up & cooldown.mind_blast.full_recharge_time >= gcd.max * 3 & talent.idol_of_cthun.enabled & ( ! cooldown.void_torrent.up || ! talent.void_torrent.enabled )",
["action"] = "mind_spike_insanity",
}, -- [10]
{
["enabled"] = true,
["description"] = "High Priority Mind Flay: Insanity to fish for C'Thun procs when Mind Blast is not capped and Void Torrent is not available and Mindbender is not active",
["criteria"] = "buff.mind_flay_insanity.up & variable.dots_up & cooldown.mind_blast.full_recharge_time >= gcd.max * 3 & talent.idol_of_cthun.enabled & ( ! cooldown.void_torrent.up || ! talent.void_torrent.enabled )",
["action"] = "mind_flay",
}, -- [11]
{
["enabled"] = true,
["description"] = "# Use all charges of Mind Blast if Vampiric Touch and Shadow Word: Pain are active and Mind Devourer is not active or you are prepping Void Eruption",
["criteria"] = "variable.vts_applied & ( ! buff.mind_devourer.up || cooldown.void_eruption.up & talent.void_eruption.enabled )",
["action"] = "mind_blast",
}, -- [12]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "Void Torrent action list for AoE",
["criteria"] = "talent.void_torrent.enabled & talent.psychic_link.enabled & cooldown.void_torrent.remains <= 3 & ( ! variable.holding_crash || raid_event.adds.count / ( active_dot.vampiric_touch + raid_event.adds.count ) < 1.5 ) & ( ( insanity >= 50 || dot.devouring_plague.ticking || buff.dark_reveries.up ) || buff.voidform.up || buff.dark_ascension.up )",
["list_name"] = "pl_torrent",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "active_enemies < 5 & dot.devouring_plague.ticking || talent.psychic_link.enabled",
["action"] = "mindgames",
}, -- [14]
{
["enabled"] = true,
["action"] = "void_torrent",
["criteria"] = "! talent.psychic_link.enabled & variable.dots_up",
["cycle_targets"] = 1,
}, -- [15]
{
["enabled"] = true,
["action"] = "mind_flay",
["interrupt_if"] = "ticks>=2",
["interrupt_immediate"] = "1",
["criteria"] = "buff.mind_flay_insanity.up & talent.idol_of_cthun.enabled",
["description"] = "High priority action for Mind Flay: Insanity to fish for Idol of C'Thun procs, cancel as soon as something else is more important and most of the channel has completed",
}, -- [16]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "filler",
}, -- [17]
},
["trinkets"] = {
{
["enabled"] = true,
["criteria"] = "buff.power_infusion.up || boss & fight_remains < 20",
["name"] = "voidmenders_shadowgem",
["action"] = "voidmenders_shadowgem",
}, -- [1]
{
["enabled"] = true,
["name"] = "darkmoon_deck_box_inferno",
["action"] = "darkmoon_deck_box_inferno",
}, -- [2]
{
["enabled"] = true,
["name"] = "darkmoon_deck_box_rime",
["action"] = "darkmoon_deck_box_rime",
}, -- [3]
{
["enabled"] = true,
["name"] = "darkmoon_deck_box_dance",
["action"] = "darkmoon_deck_box_dance",
}, -- [4]
{
["enabled"] = true,
["name"] = "erupting_spear_fragment",
["description"] = "Use Erupting Spear Fragment with cooldowns, adds are currently active, or the fight will end in less than 20 seconds",
["criteria"] = "buff.power_infusion.up || raid_event.adds.up || boss & fight_remains < 20",
["action"] = "erupting_spear_fragment",
}, -- [5]
{
["enabled"] = true,
["name"] = "beacon_to_the_beyond",
["description"] = "Use Beacon to the Beyond on cooldown except to hold for incoming adds or if already facing 5 or more targets",
["criteria"] = "! raid_event.adds.exists || raid_event.adds.up || spell_targets.beacon_to_the_beyond >= 5 || boss & fight_remains < 20",
["action"] = "beacon_to_the_beyond",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "buff.voidform.up || buff.power_infusion.up || buff.dark_ascension.up || ( cooldown.void_eruption.remains > 10 & trinket.cooldown.duration <= 60 ) || boss & fight_remains < 20",
["action"] = "use_items",
}, -- [7]
{
["enabled"] = true,
["name"] = "desperate_invokers_codex",
["action"] = "desperate_invokers_codex",
}, -- [8]
},
["default"] = {
{
["action"] = "silence",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.shadow_crash.enabled & ! action.shadow_crash.disabled & raid_event.adds.in < 15",
["var_name"] = "holding_crash",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "( cooldown.void_eruption.remains <= gcd.max * 3 & talent.void_eruption.enabled || cooldown.dark_ascension.up & talent.dark_ascension.enabled ) || talent.void_torrent.enabled & talent.psychic_link.enabled & cooldown.void_torrent.remains <= 4 & ( ! raid_event.adds.exists & spell_targets.vampiric_touch > 1 || raid_event.adds.in <= 5 || raid_event.adds.remains >= 6 & ! variable.holding_crash ) & ! buff.voidform.up",
["var_name"] = "pool_for_cds",
}, -- [3]
{
["enabled"] = true,
["action"] = "run_action_list",
["strict"] = 1,
["criteria"] = "active_enemies > 2 || spell_targets.vampiric_touch > 3",
["list_name"] = "aoe",
}, -- [4]
{
["enabled"] = true,
["action"] = "run_action_list",
["list_name"] = "main",
}, -- [5]
},
["pl_torrent"] = {
{
["action"] = "void_bolt",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["criteria"] = "remains <= 6 & cooldown.void_torrent.remains < gcd.max * 2",
["action"] = "vampiric_touch",
}, -- [2]
{
["enabled"] = true,
["description"] = "Use Devouring Plague before Void Torrent cast",
["criteria"] = "remains <= 4 & cooldown.void_torrent.remains < gcd.max * 2",
["action"] = "devouring_plague",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "! talent.mindgames.enabled || cooldown.mindgames.remains >= 3 & ! prev_gcd.1.mind_blast",
["action"] = "mind_blast",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "dot.vampiric_touch.ticking & dot.shadow_word_pain.ticking || buff.voidform.up",
["action"] = "void_torrent",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "dot.vampiric_touch.ticking & dot.shadow_word_pain.ticking & dot.devouring_plague.ticking || buff.voidform.up",
["action"] = "mindgames",
}, -- [6]
},
},
["version"] = 20230504,
["warnings"] = "The import for 'filler' required some automated changes.\nLine 6: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\n\nThe import for 'main_variables' required some automated changes.\nLine 1: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 3: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 3: Converted 'talent.dark_ascension' to 'talent.dark_ascension.enabled' (1x).\nLine 3: Converted 'talent.void_torrent' to 'talent.void_torrent.enabled' (1x).\nLine 3: Converted 'talent.psychic_link' to 'talent.psychic_link.enabled' (1x).\n\nThe import for 'aoe_variables' required some automated changes.\nLine 4: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 5: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\n\nThe import for 'main' required some automated changes.\nLine 4: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 8: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 9: Converted 'talent.idol_of_cthun' to 'talent.idol_of_cthun.enabled' (1x).\nLine 9: Converted 'talent.void_torrent' to 'talent.void_torrent.enabled' (1x).\nLine 10: Converted 'talent.idol_of_cthun' to 'talent.idol_of_cthun.enabled' (1x).\nLine 10: Converted 'talent.void_torrent' to 'talent.void_torrent.enabled' (1x).\nLine 11: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 5: Converted 'talent.mental_decay' to 'talent.mental_decay.enabled' (1x).\nLine 6: Converted 'talent.mental_decay' to 'talent.mental_decay.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 2: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 5: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 6: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 9: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 10: Converted 'talent.idol_of_cthun' to 'talent.idol_of_cthun.enabled' (1x).\nLine 10: Converted 'talent.void_torrent' to 'talent.void_torrent.enabled' (1x).\nLine 11: Converted 'talent.idol_of_cthun' to 'talent.idol_of_cthun.enabled' (1x).\nLine 11: Converted 'talent.void_torrent' to 'talent.void_torrent.enabled' (1x).\nLine 12: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 13: Converted 'talent.void_torrent' to 'talent.void_torrent.enabled' (1x).\nLine 13: Converted 'talent.psychic_link' to 'talent.psychic_link.enabled' (1x).\nLine 13: Converted operations in 'talent.void_torrent.enabled&talent.psychic_link.enabled&cooldown.void_torrent.remains<=3&(!variable.holding_crash||raid_event.adds.count%(active_dot.vampiric_touch+raid_event.adds.count)<1.5)&((insanity>=50||dot.devouring_plague.ticking||buff.dark_reveries.up)||buff.voidform.up||buff.dark_ascension.up)' to 'talent.void_torrent.enabled&talent.psychic_link.enabled&cooldown.void_torrent.remains<=3&(!variable.holding_crash||raid_event.adds.count/(active_dot.vampiric_touch+raid_event.adds.count)<1.5)&((insanity>=50||dot.devouring_plague.ticking||buff.dark_reveries.up)||buff.voidform.up||buff.dark_ascension.up)'.\nLine 14: Converted 'talent.psychic_link' to 'talent.psychic_link.enabled' (1x).\nLine 15: Converted 'talent.psychic_link' to 'talent.psychic_link.enabled' (1x).\nLine 16: Converted 'talent.idol_of_cthun' to 'talent.idol_of_cthun.enabled' (1x).\n\nThe import for 'cds' required some automated changes.\nLine 7: Converted 'talent.mindbender' to 'talent.mindbender.enabled' (1x).\nLine 8: Converted 'talent.mindbender' to 'talent.mindbender.enabled' (1x).\nLine 8: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 2: Converted 'talent.shadow_crash' to 'talent.shadow_crash.enabled' (1x).\nLine 3: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 3: Converted 'talent.dark_ascension' to 'talent.dark_ascension.enabled' (1x).\nLine 3: Converted 'talent.void_torrent' to 'talent.void_torrent.enabled' (1x).\nLine 3: Converted 'talent.psychic_link' to 'talent.psychic_link.enabled' (1x).\n\nThe import for 'pl_torrent' required some automated changes.\nLine 4: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\n\nImported 10 action lists.\n",
["spec"] = 258,
["profile"] = "actions.precombat+=/shadowform,if=!buff.shadowform.up\nactions.precombat+=/arcane_torrent\nactions.precombat+=/variable,name=mind_sear_cutoff,op=set,value=2\nactions.precombat+=/variable,name=pool_amount,op=set,value=60\nactions.precombat+=/shadow_crash,if=raid_event.adds.in>=25&spell_targets.shadow_crash<=8&boss&(spell_targets.shadow_crash>1||talent.mental_decay)\nactions.precombat+=/vampiric_touch,if=refreshable&(!talent.shadow_crash.enabled||spell_targets.shadow_crash>8||spell_targets.shadow_crash=1&!talent.mental_decay||!boss)\n\nactions+=/silence\nactions+=/variable,name=holding_crash,op=set,value=talent.shadow_crash&!action.shadow_crash.disabled&raid_event.adds.in<15\nactions+=/variable,name=pool_for_cds,op=set,value=(cooldown.void_eruption.remains<=gcd.max*3&talent.void_eruption||cooldown.dark_ascension.up&talent.dark_ascension)||talent.void_torrent&talent.psychic_link&cooldown.void_torrent.remains<=4&(!raid_event.adds.exists&spell_targets.vampiric_touch>1||raid_event.adds.in<=5||raid_event.adds.remains>=6&!variable.holding_crash)&!buff.voidform.up\nactions+=/run_action_list,name=aoe,strict=1,if=active_enemies>2||spell_targets.vampiric_touch>3\nactions+=/run_action_list,name=main\n\nactions.aoe+=/call_action_list,name=aoe_variables\n# High Priority action to put out Vampiric Touch on enemies that will live at least 18 seconds, up to 12 targets manually while prepping AoE\nactions.aoe+=/vampiric_touch,cycle_targets=1,if=refreshable&target.time_to_die>=18&(dot.vampiric_touch.ticking||!variable.vts_applied)&(variable.max_vts>0&!variable.manual_vts_applied&!action.shadow_crash.in_flight||!talent.whispering_shadows)\n# Use Shadow Crash to apply Vampiric Touch to as many adds as possible while being efficient with Vampiric Touch refresh windows\nactions.aoe+=/shadow_crash,cycle_targets=1,if=!variable.holding_crash&(dot.vampiric_touch.refreshable||dot.vampiric_touch.remains<=target.time_to_die&!buff.voidform.up&(raid_event.adds.in-dot.vampiric_touch.remains)<15)\nactions.aoe+=/call_action_list,name=cds,if=fight_remains<30||time_to_die>15&(!variable.holding_crash||active_enemies>2)\n# Use Shadowfiend or Mindbender on cooldown if DoTs are active\nactions.aoe+=/mindbender,if=(dot.shadow_word_pain.ticking&variable.vts_applied||action.shadow_crash.in_flight&talent.whispering_shadows)&(fight_remains<30||time_to_die>15)\n# Use Mind Blast when capped on charges and talented into Mind Devourer to fish for the buff or if Inescapable Torment is talented with Mindbender active. Only use when facing 3-7 targets.\nactions.aoe+=/mind_blast,if=(cooldown.mind_blast.full_recharge_time<=gcd.max+cast_time||pet.fiend.remains<=cast_time+gcd.max)&pet.fiend.active&talent.inescapable_torment&pet.fiend.remains>cast_time&active_enemies<=7&!buff.mind_devourer.up\nactions.aoe+=/void_bolt\n# Use Devouring Plague to maximize uptime. Short circuit if you are capping on Insanity within 20 or to get out an extra Void Bolt by extending Voidform. With Distorted Reality can maintain more than one at a time in multi-target.\nactions.aoe+=/devouring_plague,cycle_targets=1,if=refreshable&!variable.pool_for_cds||insanity.deficit<=20||buff.voidform.up&cooldown.void_bolt.remains>buff.voidform.remains&cooldown.void_bolt.remains<(buff.voidform.remains+2)\nactions.aoe+=/vampiric_touch,cycle_targets=1,if=refreshable&target.time_to_die>=18&(dot.vampiric_touch.ticking||!variable.vts_applied)&(variable.max_vts>0&(cooldown.shadow_crash.remains>=dot.vampiric_touch.remains||variable.holding_crash)&!action.shadow_crash.in_flight||!talent.whispering_shadows)\n# High Priority Mind Spike: Insanity to fish for C'Thun procs when Mind Blast is not capped and Void Torrent is not available and Mindbender is not active\nactions.aoe+=/mind_spike_insanity,if=variable.dots_up&cooldown.mind_blast.full_recharge_time>=gcd*3&talent.idol_of_cthun&(!cooldown.void_torrent.up||!talent.void_torrent)\n# High Priority Mind Flay: Insanity to fish for C'Thun procs when Mind Blast is not capped and Void Torrent is not available and Mindbender is not active\nactions.aoe+=/mind_flay,if=buff.mind_flay_insanity.up&variable.dots_up&cooldown.mind_blast.full_recharge_time>=gcd*3&talent.idol_of_cthun&(!cooldown.void_torrent.up||!talent.void_torrent)\n# # Use all charges of Mind Blast if Vampiric Touch and Shadow Word: Pain are active and Mind Devourer is not active or you are prepping Void Eruption\nactions.aoe+=/mind_blast,if=variable.vts_applied&(!buff.mind_devourer.up||cooldown.void_eruption.up&talent.void_eruption)\n# Void Torrent action list for AoE\nactions.aoe+=/call_action_list,name=pl_torrent,if=talent.void_torrent&talent.psychic_link&cooldown.void_torrent.remains<=3&(!variable.holding_crash||raid_event.adds.count%(active_dot.vampiric_touch+raid_event.adds.count)<1.5)&((insanity>=50||dot.devouring_plague.ticking||buff.dark_reveries.up)||buff.voidform.up||buff.dark_ascension.up)\nactions.aoe+=/mindgames,if=active_enemies<5&dot.devouring_plague.ticking||talent.psychic_link\nactions.aoe+=/void_torrent,cycle_targets=1,if=!talent.psychic_link&variable.dots_up\n# High priority action for Mind Flay: Insanity to fish for Idol of C'Thun procs, cancel as soon as something else is more important and most of the channel has completed\nactions.aoe+=/mind_flay,if=buff.mind_flay_insanity.up&talent.idol_of_cthun,interrupt_if=ticks>=2,interrupt_immediate=1\nactions.aoe+=/call_action_list,name=filler\n\nactions.aoe_variables+=/variable,name=max_vts,op=set,default=12,value=spell_targets.vampiric_touch>?12\nactions.aoe_variables+=/variable,name=is_vt_possible,op=set,value=false,default=true\nactions.aoe_variables+=/variable,name=is_vt_possible,op=set,value=true,condition=dot.vampiric_touch.refreshable||active_dot.vampiric_touch<cycle_enemies&fight_remains>8\n## actions.aoe_variables+=/variable,name=is_vt_possible,op=set,value=1,target_if=max(target.time_to_die*dot.vampiric_touch.refreshable),if=target.time_to_die>=18\n# TODO: Revamp to fix undesired behaviour with unstacked fights\nactions.aoe_variables+=/variable,name=vts_applied,op=set,value=(active_dot.vampiric_touch+8*action.shadow_crash.in_flight&talent.whispering_shadows)>=variable.max_vts||!variable.is_vt_possible\nactions.aoe_variables+=/variable,name=holding_crash,op=set,value=(variable.max_vts-active_dot.vampiric_touch)<4||raid_event.adds.in<10&raid_event.adds.count>(variable.max_vts-active_dot.vampiric_touch),if=variable.holding_crash&talent.whispering_shadows\nactions.aoe_variables+=/variable,name=manual_vts_applied,op=set,value=(active_dot.vampiric_touch+8*!variable.holding_crash)>=variable.max_vts||!variable.is_vt_possible\n\n# TODO: Check VE/DA enter conditions based on dots\nactions.cds+=/potion,if=buff.voidform.up||buff.power_infusion.up||buff.dark_ascension.up&(fight_remains<=cooldown.power_infusion.remains+15)||boss&fight_remains<=30\nactions.cds+=/fireblood,if=buff.power_infusion.up||boss&fight_remains<=8\nactions.cds+=/berserking,if=buff.power_infusion.up||boss&fight_remains<=12\nactions.cds+=/blood_fury,if=buff.power_infusion.up||boss&fight_remains<=15\nactions.cds+=/ancestral_call,if=buff.power_infusion.up||boss&fight_remains<=15\n# Sync Power Infusion with Voidform or Dark Ascension\nactions.cds+=/power_infusion,if=(buff.voidform.up||buff.dark_ascension.up)\n# Make sure Mindbender is active before popping Void Eruption and dump charges of Mind Blast before casting\nactions.cds+=/void_eruption,if=!cooldown.fiend.up&(pet.fiend.active&cooldown.fiend.remains>=4||!talent.mindbender||active_enemies>2&!talent.inescapable_torment.rank)&(cooldown.mind_blast.charges=0||time>15)\n# Make sure Mindbender is active before popping Dark Ascension unless you have insignificant talent points or too many targets\nactions.cds+=/dark_ascension,if=pet.fiend.active&cooldown.fiend.remains>=4||!talent.mindbender&!cooldown.fiend.up||active_enemies>2&!talent.inescapable_torment\nactions.cds+=/call_action_list,name=trinkets\nactions.cds+=/mindbender,if=(dot.shadow_word_pain.ticking&variable.vts_applied||action.shadow_crash.in_flight)\n# Use Desperate Prayer to heal up should Shadow Word: Death or other damage bring you below 75%\nactions.cds+=/desperate_prayer,if=health.pct<=75\n\n# Cast Vampiric Touch to consume Unfurling Darkness, prefering the target with the lowest DoT duration active\nactions.filler+=/vampiric_touch,cycle_targets=1,if=refreshable&buff.unfurling_darkness.up\nactions.filler+=/shadow_word_death,cycle_targets=1,if=target.health.pct<20||buff.deathspeaker.up\nactions.filler+=/mind_spike_insanity\nactions.filler+=/mind_flay,if=buff.mind_flay_insanity.up\n# Save up to 20s if adds are coming soon.\nactions.filler+=/halo,if=raid_event.adds.in>20\nactions.filler+=/shadow_word_death,cycle_targets=1,if=talent.inescapable_torment&pet.fiend.active\n# Save up to 10s if adds are coming soon.\nactions.filler+=/divine_star,if=raid_event.adds.in>10\nactions.filler+=/devouring_plague,if=buff.voidform.up&variable.dots_up\nactions.filler+=/mind_spike\nactions.filler+=/mind_flay,chain=1,interrupt_immediate=1,interrupt_if=ticks>=2\n# Use Shadow Crash while moving as a low-priority action when adds will not come in 20 seconds.\nactions.filler+=/shadow_crash,if=raid_event.adds.in>20\n# Use Shadow Word: Death while moving as a low-priority action in execute\nactions.filler+=/shadow_word_death,cycle_targets=1,if=target.health.pct<20\n# Use Divine Star while moving as a low-priority action\nactions.filler+=/divine_star\n# Use Shadow Word: Death while moving as a low-priority action\nactions.filler+=/shadow_word_death\n# Use Shadow Word: Pain while moving as a low-priority action\nactions.filler+=/shadow_word_pain,cycle_targets=1\n\nactions.main+=/call_action_list,name=main_variables\nactions.main+=/call_action_list,name=cds,if=fight_remains<30||time_to_die>15&(!variable.holding_crash||active_enemies>2)\n# Use Shadowfiend and Mindbender on cooldown as long as Vampiric Touch and Shadow Word: Pain are active\nactions.main+=/mindbender,if=variable.dots_up&(fight_remains<30||time_to_die>15)\n# High priority Mind Blast action when using Inescapable Torment\nactions.main+=/mind_blast,cycle_targets=1,if=(dot.devouring_plague.ticking&(cooldown.mind_blast.full_recharge_time<=gcd.max+cast_time)||pet.fiend.remains<=cast_time+gcd.max)&pet.fiend.active&talent.inescapable_torment&pet.fiend.remains>cast_time&active_enemies<=7\nactions.main+=/void_bolt,if=variable.dots_up\n# Use Devouring Plague to maximize uptime. Short circuit if you are capping on Insanity within 20 or to get out an extra Void Bolt by extending Voidform. With Distorted Reality can maintain more than one at a time in multi-target.\nactions.main+=/devouring_plague,cycle_targets=1,if=refreshable&!variable.pool_for_cds||insanity.deficit<=20||buff.voidform.up&cooldown.void_bolt.remains>buff.voidform.remains&cooldown.void_bolt.remains<(buff.voidform.remains+2)\n# Use Shadow Crash as long as you are not holding for adds and Vampiric Touch is within pandemic range\nactions.main+=/shadow_crash,if=!variable.holding_crash&dot.vampiric_touch.refreshable\n# Put out Vampiric Touch on enemies that will live at least 12s and Shadow Crash is not available soon\nactions.main+=/vampiric_touch,cycle_targets=1,if=refreshable&target.time_to_die>=12&(cooldown.shadow_crash.remains>=dot.vampiric_touch.remains&!action.shadow_crash.in_flight||variable.holding_crash||!talent.whispering_shadows)\n# High Priority Mind Spike: Insanity to fish for C'Thun procs when Mind Blast is not capped and Void Torrent is not available\nactions.main+=/mind_spike_insanity,if=variable.dots_up&cooldown.mind_blast.full_recharge_time>=gcd*3&talent.idol_of_cthun&(!cooldown.void_torrent.up||!talent.void_torrent)\n# High Priority Mind Flay: Insanity to fish for C'Thun procs when Mind Blast is not capped and Void Torrent is not available\nactions.main+=/mind_flay,if=buff.mind_flay_insanity.up&variable.dots_up&cooldown.mind_blast.full_recharge_time>=gcd*3&talent.idol_of_cthun&(!cooldown.void_torrent.up||!talent.void_torrent)\n# Use all charges of Mind Blast if Vampiric Touch and Shadow Word: Pain are active and Mind Devourer is not active or you are prepping Void Eruption\nactions.main+=/mind_blast,if=variable.dots_up&(!buff.mind_devourer.up||cooldown.void_eruption.up&talent.void_eruption)\n# Void Torrent if you are not holding Shadow Crash for an add pack coming, prefer the target with the most DoTs active. Only cast if Devouring Plague is on that target and will last at least 2 seconds\nactions.main+=/void_torrent,cycle_targets=1,if=!variable.holding_crash&variable.all_dots_up&dot.devouring_plague.remains>=2\n# Cast Mindgames if all DoTs will be active by the time the cast finishes\nactions.main+=/mindgames,cycle_targets=1,if=variable.all_dots_up&dot.devouring_plague.remains>=cast_time\nactions.main+=/call_action_list,name=filler\n\nactions.main_variables+=/variable,name=dots_up,op=set,value=(dot.shadow_word_pain.ticking&dot.vampiric_touch.ticking)||action.shadow_crash.in_flight&talent.whispering_shadows\nactions.main_variables+=/variable,name=all_dots_up,op=set,value=target.time_to_die<8||(dot.shadow_word_pain.ticking&dot.vampiric_touch.ticking||action.shadow_crash.in_flight)&dot.devouring_plague.ticking\nactions.main_variables+=/variable,name=pool_for_cds,op=set,value=(cooldown.void_eruption.remains<=gcd.max*3&talent.void_eruption||cooldown.dark_ascension.up&talent.dark_ascension)||talent.void_torrent&talent.psychic_link&cooldown.void_torrent.remains<=4&(!raid_event.adds.exists&spell_targets.vampiric_touch>1||raid_event.adds.in<=5||raid_event.adds.remains>=6&!variable.holding_crash)&!buff.voidform.up\n# Set vts_applied for single-target to support Mindbender entry in cds action list.\nactions.main_variables+=/variable,name=vts_applied,op=set,value=dot.vampiric_touch.ticking\n\nactions.pl_torrent+=/void_bolt\nactions.pl_torrent+=/vampiric_touch,if=remains<=6&cooldown.void_torrent.remains<gcd*2\n# Use Devouring Plague before Void Torrent cast\nactions.pl_torrent+=/devouring_plague,if=remains<=4&cooldown.void_torrent.remains<gcd*2\nactions.pl_torrent+=/mind_blast,if=!talent.mindgames||cooldown.mindgames.remains>=3&!prev_gcd.1.mind_blast\nactions.pl_torrent+=/void_torrent,if=dot.vampiric_touch.ticking&dot.shadow_word_pain.ticking||buff.voidform.up\nactions.pl_torrent+=/mindgames,if=dot.vampiric_touch.ticking&dot.shadow_word_pain.ticking&dot.devouring_plague.ticking||buff.voidform.up\n\nactions.trinkets+=/use_item,name=voidmenders_shadowgem,if=buff.power_infusion.up||boss&fight_remains<20\nactions.trinkets+=/use_item,name=darkmoon_deck_box_inferno\nactions.trinkets+=/use_item,name=darkmoon_deck_box_rime\nactions.trinkets+=/use_item,name=darkmoon_deck_box_dance\n# Use Erupting Spear Fragment with cooldowns, adds are currently active, or the fight will end in less than 20 seconds\nactions.trinkets+=/use_item,name=erupting_spear_fragment,if=buff.power_infusion.up||raid_event.adds.up||boss&fight_remains<20\n# Use Beacon to the Beyond on cooldown except to hold for incoming adds or if already facing 5 or more targets\nactions.trinkets+=/use_item,name=beacon_to_the_beyond,if=!raid_event.adds.exists||raid_event.adds.up||spell_targets.beacon_to_the_beyond>=5||boss&fight_remains<20\nactions.trinkets+=/use_items,if=buff.voidform.up||buff.power_infusion.up||buff.dark_ascension.up||(cooldown.void_eruption.remains>10&trinket.cooldown.duration<=60)||boss&fight_remains<20\nactions.trinkets+=/use_item,name=desperate_invokers_codex",
},
["Unholy"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230430,
["spec"] = 252,
["desc"] = "2023-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",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "death_knight.fwounded_targets < active_enemies & talent.bursting_sores.enabled",
["action"] = "festering_strike",
["cycle_targets"] = 1,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! variable.pooling_runic_power || fight_remains < 10",
["action"] = "epidemic",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "death_knight.fwounded_targets < active_enemies",
["action"] = "festering_strike",
["cycle_targets"] = 1,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "cooldown.apocalypse.remains < variable.apoc_timing & debuff.festering_wound.stack < 4",
["action"] = "festering_strike",
["cycle_targets"] = 1,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "! variable.pooling_runic_power & ! talent.epidemic.enabled",
["action"] = "death_coil",
}, -- [6]
},
["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",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "( buff.blood_fury.duration >= 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 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= buff.blood_fury.duration || active_enemies >= 2 & death_and_decay.ticking ) || boss & fight_remains <= buff.blood_fury.duration",
["action"] = "blood_fury",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "( buff.berserking.duration >= 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 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= buff.berserking.duration || active_enemies >= 2 & death_and_decay.ticking ) || boss & fight_remains <= buff.berserking.duration",
["action"] = "berserking",
}, -- [3]
{
["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",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "( pet.gargoyle.remains < 15 & pet.gargoyle.active ) || ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 ) & ( pet.army_ghoul.active & pet.army_ghoul.remains <= 15 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= 15 || active_enemies >= 2 & death_and_decay.ticking ) || boss & fight_remains <= 15",
["action"] = "ancestral_call",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "active_enemies >= 2 || ( rune.deficit >= 5 & runic_power.deficit >= 60 )",
["action"] = "arcane_pulse",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "( buff.fireblood.duration >= 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 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= buff.fireblood.duration || active_enemies >= 2 & death_and_decay.ticking ) || boss & fight_remains <= buff.fireblood.duration",
["action"] = "fireblood",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "active_enemies = 1 & ( buff.unholy_strength.up || boss & fight_remains < 5 )",
["action"] = "bag_of_tricks",
}, -- [8]
},
["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",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "debuff.festering_wound.stack >= 1",
["action"] = "wound_spender",
["cycle_targets"] = 1,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! variable.pooling_runic_power || fight_remains < 10",
["action"] = "epidemic",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "! variable.pooling_runic_power & ! talent.epidemic.enabled",
["action"] = "death_coil",
}, -- [4]
{
["action"] = "wound_spender",
["enabled"] = true,
}, -- [5]
},
["aoe"] = {
{
["enabled"] = true,
["description"] = "Generic AoE",
["criteria"] = "! variable.pooling_runic_power || fight_remains < 10",
["action"] = "epidemic",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "variable.pop_wounds",
["action"] = "wound_spender",
["cycle_targets"] = 1,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! variable.pop_wounds",
["action"] = "festering_strike",
["cycle_targets"] = 1,
}, -- [3]
{
["enabled"] = true,
["criteria"] = "! variable.pooling_runic_power & ! talent.epidemic.enabled",
["action"] = "death_coil",
}, -- [4]
},
["garg_setup"] = {
{
["enabled"] = true,
["description"] = "Garg Setup",
["criteria"] = "debuff.festering_wound.stack >= 4 & ( buff.commander_of_the_dead.up & pet.gargoyle.remains < 21 || ! talent.commander_of_the_dead.enabled )",
["action"] = "apocalypse",
}, -- [1]
{
["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",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "active_enemies = 1 & target.time_to_pct_35 < 5 & target.time_to_die > 5",
["action"] = "soul_reaper",
}, -- [3]
{
["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",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "pet.gargoyle.active & pet.gargoyle.remains <= 21",
["action"] = "empower_rune_weapon",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "pet.gargoyle.active & pet.gargoyle.remains <= 21",
["action"] = "unholy_assault",
}, -- [6]
{
["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",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "talent.commander_of_the_dead.enabled & runic_power >= 40 || ! talent.commander_of_the_dead.enabled",
["action"] = "dark_transformation",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "! death_and_decay.ticking & debuff.festering_wound.stack > 0",
["action"] = "any_dnd",
}, -- [9]
{
["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",
["action"] = "festering_strike",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "rune <= 1",
["action"] = "death_coil",
}, -- [11]
},
["generic"] = {
{
["enabled"] = true,
["description"] = "Generic",
["criteria"] = "! variable.epidemic_priority & ( ! variable.pooling_runic_power & ( rune < 3 || pet.gargoyle.active || buff.sudden_doom.react || cooldown.apocalypse.remains < 10 & debuff.festering_wound.stack > 3 ) || boss & fight_remains < 10 )",
["action"] = "death_coil",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "variable.epidemic_priority & ( ! variable.pooling_runic_power & ( rune < 3 || pet.gargoyle.active || buff.sudden_doom.react || cooldown.apocalypse.remains < 10 & debuff.festering_wound.stack > 3 ) || boss & fight_remains < 10 )",
["action"] = "epidemic",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! death_and_decay.ticking & ( active_enemies >= 2 || talent.unholy_ground.enabled & ( pet.apoc_ghoul.active & pet.apoc_ghoul.remains >= 10 || pet.gargoyle.active & pet.gargoyle.remains > 5 || pet.army_ghoul.active & pet.army_ghoul.remains > 5 ) ) & death_knight.fwounded_targets >= cycle_enemies",
["action"] = "any_dnd",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "variable.pop_wounds || active_enemies >= 2 & death_and_decay.ticking",
["action"] = "wound_spender",
["cycle_targets"] = 1,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "! variable.pop_wounds",
["action"] = "festering_strike",
["cycle_targets"] = 1,
}, -- [5]
{
["action"] = "death_coil",
["enabled"] = true,
}, -- [6]
},
["aoe_cooldowns"] = {
{
["enabled"] = true,
["action"] = "vile_contagion",
["cycle_targets"] = 1,
["description"] = "AoE Cooldowns",
["criteria"] = "debuff.festering_wound.stack >= 4 & cooldown.any_dnd.remains < 3",
}, -- [1]
{
["action"] = "summon_gargoyle",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "rune < 2 || buff.festermight.stack > 10 || ! talent.festermight.enabled || buff.festermight.up & buff.festermight.remains < 12",
["action"] = "abomination_limb",
}, -- [3]
{
["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,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "debuff.festering_wound.stack <= 2 || buff.dark_transformation.up",
["action"] = "unholy_assault",
["cycle_targets"] = 1,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "! pet.ghoul.active",
["action"] = "raise_dead",
}, -- [6]
{
["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",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "buff.dark_transformation.up",
["action"] = "empower_rune_weapon",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "! buff.dark_transformation.up & cooldown.dark_transformation.remains > 6 || boss & fight_remains < gcd.max",
["action"] = "sacrificial_pact",
}, -- [9]
},
["precombat"] = {
{
["action"] = "raise_dead",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["action"] = "army_of_the_dead",
["precombat_time"] = "2",
}, -- [2]
},
["cooldowns"] = {
{
["enabled"] = true,
["description"] = "ST/Cleave Cooldowns",
["criteria"] = "buff.commander_of_the_dead.up || ! talent.commander_of_the_dead.enabled",
["action"] = "summon_gargoyle",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "! pet.ghoul.active",
["action"] = "raise_dead",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "cooldown.apocalypse.remains < 5",
["action"] = "dark_transformation",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "variable.st_planning & debuff.festering_wound.stack >= 4",
["action"] = "apocalypse",
["cycle_targets"] = 1,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "variable.st_planning & ( pet.gargoyle.active & pet.gargoyle.remains <= 21 || ! 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",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "rune < 3 & variable.st_planning",
["action"] = "abomination_limb",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "variable.st_planning",
["action"] = "unholy_assault",
["cycle_targets"] = 1,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "active_enemies = 1 & target.time_to_pct_35 < 5 & target.time_to_die > 5",
["action"] = "soul_reaper",
}, -- [8]
{
["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,
}, -- [9]
},
["trinkets"] = {
{
["enabled"] = true,
["description"] = "Trinkets",
["name"] = "gavel_of_the_first_arbiter",
["action"] = "gavel_of_the_first_arbiter",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t1.is.ruby_whelp_shell || trinket.t1.is.whispering_incarnate_icon",
["var_name"] = "trinket_1_exclude",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t2.is.ruby_whelp_shell || trinket.t2.is.whispering_incarnate_icon",
["var_name"] = "trinket_2_exclude",
}, -- [3]
{
["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",
}, -- [4]
{
["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",
}, -- [5]
{
["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 )",
}, -- [6]
{
["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 )",
}, -- [7]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t1.is.algethar_puzzle_box",
["var_name"] = "trinket_1_manual",
}, -- [8]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t2.is.algethar_puzzle_box",
["var_name"] = "trinket_2_manual",
}, -- [9]
{
["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 ) )",
}, -- [10]
{
["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",
["action"] = "algethar_puzzle_box",
}, -- [11]
{
["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",
}, -- [12]
{
["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",
}, -- [13]
{
["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",
}, -- [14]
{
["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",
}, -- [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",
}, -- [16]
},
["default"] = {
{
["action"] = "mind_freeze",
["enabled"] = true,
}, -- [1]
{
["action"] = "strangulate",
["enabled"] = true,
}, -- [2]
{
["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",
}, -- [3]
{
["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",
}, -- [4]
{
["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",
}, -- [5]
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "garg_setup",
["value"] = "1",
["value_else"] = "0",
["criteria"] = "active_enemies >= 3 || cooldown.summon_gargoyle.remains > 1 & cooldown.apocalypse.remains > 1 || ! talent.apocalypse.enabled & cooldown.summon_gargoyle.remains > 1 || ! talent.summon_gargoyle.enabled || time > 20",
}, -- [6]
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "apoc_timing",
["value"] = "10",
["value_else"] = "2",
["criteria"] = "cooldown.apocalypse.remains < 10 & debuff.festering_wound.stack <= 4 & cooldown.unholy_assault.remains > 10",
}, -- [7]
{
["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",
}, -- [8]
{
["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",
}, -- [9]
{
["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",
}, -- [10]
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "st_planning",
["value"] = "1",
["value_else"] = "0",
["criteria"] = "active_enemies <= 3 & ( ! raid_event.adds.exists || raid_event.adds.in > 15 )",
}, -- [11]
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "adds_remain",
["value"] = "1",
["value_else"] = "0",
["criteria"] = "active_enemies >= 4 & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.remains > 6 )",
}, -- [12]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "Call Action Lists",
["list_name"] = "high_priority",
}, -- [13]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "trinkets",
}, -- [14]
{
["enabled"] = true,
["action"] = "run_action_list",
["strict"] = 1,
["criteria"] = "variable.garg_setup = 0",
["list_name"] = "garg_setup",
}, -- [15]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "variable.st_planning",
["list_name"] = "cooldowns",
}, -- [16]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "variable.adds_remain",
["list_name"] = "aoe_cooldowns",
}, -- [17]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "racials",
}, -- [18]
{
["enabled"] = true,
["action"] = "call_action_list",
["criteria"] = "variable.adds_remain & cooldown.any_dnd.remains < 10 & ! death_and_decay.ticking",
["list_name"] = "aoe_setup",
}, -- [19]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies >= 4 & death_and_decay.ticking",
["list_name"] = "aoe_burst",
}, -- [20]
{
["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",
}, -- [21]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies <= 3",
["list_name"] = "generic",
}, -- [22]
},
["high_priority"] = {
{
["enabled"] = true,
["description"] = "Priority Actions",
["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 ) || boss & fight_remains <= 30",
["action"] = "potion",
}, -- [1]
{
["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",
}, -- [2]
{
["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 > 26 || debuff.death_rot.up & debuff.death_rot.remains < gcd.max )",
["action"] = "death_coil",
}, -- [3]
{
["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",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "debuff.festering_wound.up & ( ! talent.apocalypse.enabled || 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",
}, -- [5]
{
["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",
}, -- [6]
{
["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,
}, -- [7]
},
},
["version"] = 20230430,
["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 '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 '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 '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 '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 'generic' required some automated changes.\nLine 3: Converted 'talent.unholy_ground' to 'talent.unholy_ground.enabled' (1x).\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 'aoe' required some automated changes.\nLine 4: Converted 'talent.epidemic' to 'talent.epidemic.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 9: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (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 12: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 12: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 12: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 12: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 12: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 12: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 12: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 12: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 13: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 13: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 13: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 13: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 13: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 13: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 13: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 13: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 14: Converted 'trinket.2.cooldown.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 '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.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.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 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 '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.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.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 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\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'.\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).\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\nImported 12 action lists.\n",
["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,op=setif,value=1,value_else=0,condition=active_enemies>=3||cooldown.summon_gargoyle.remains>1&cooldown.apocalypse.remains>1||!talent.apocalypse&cooldown.summon_gargoyle.remains>1||!talent.summon_gargoyle||time>20\nactions+=/variable,name=apoc_timing,op=setif,value=10,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<=3&(!raid_event.adds.exists||raid_event.adds.in>15)\nactions+=/variable,name=adds_remain,op=setif,value=1,value_else=0,condition=active_enemies>=4&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.remains>6)\n## Use <a href='https://www.wowhead.com/spell=10060/power-infusion'>Power Infusion</a> while <a href='https://www.wowhead.com/spell=49206/summon-gargoyle'>Gargoyle</a> is up, as well as <a href='https://www.wowhead.com/spell=275699/apocalypse'>Apocalypse</a> or with <a href='https://www.wowhead.com/spell=63560/dark-transformation'>Dark Transformation</a> if <a href='https://www.wowhead.com/spell=275699/apocalypse'>Apocalypse</a> or <a href='https://www.wowhead.com/spell=49206/summon-gargoyle'>Gargoyle</a> are not talented\n## actions+=/invoke_external_buff,name=power_infusion,if=variable.st_planning&(pet.gargoyle.active&pet.gargoyle.remains<=20||!talent.summon_gargoyle&talent.army_of_the_dead&pet.army_ghoul.active&pet.apoc_ghoul.active||!talent.summon_gargoyle&!talent.army_of_the_dead&buff.dark_transformation.up||!talent.summon_gargoyle&buff.dark_transformation.up||!pet.gargoyle.active&cooldown.summon_gargoyle.remains+5>cooldown.invoke_external_buff.duration||active_enemies>=3&(buff.dark_transformation.up||death_and_decay.ticking))||boss&fight_remains<=21\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=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=generic,strict=1,if=active_enemies<=3\n\n# Priority Actions\nactions.high_priority+=/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)||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>26||debuff.death_rot.up&debuff.death_rot.remains<gcd.max)\nactions.high_priority+=/epidemic,if=active_enemies>=4&(talent.commander_of_the_dead&buff.commander_of_the_dead.up&cooldown.apocalypse.remains<5||debuff.death_rot.up&debuff.death_rot.remains<gcd.max)\nactions.high_priority+=/wound_spender,if=debuff.festering_wound.up&(!talent.apocalypse.enabled||cooldown.apocalypse.remains>variable.apoc_timing+3||active_enemies>=3)&talent.plaguebringer&(talent.superstrain||talent.unholy_blight)&buff.plaguebringer.remains<gcd\nactions.high_priority+=/unholy_blight,if=variable.st_planning&((!talent.apocalypse||cooldown.apocalypse.remains)&talent.morbidity||!talent.morbidity)||variable.adds_remain||boss&fight_remains<21\nactions.high_priority+=/outbreak,cycle_targets=1,if=target.time_to_die>dot.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# 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_targets<active_enemies||!talent.vile_contagion)&(raid_event.adds.remains>5||!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<gcd\n\n# AoE Setup\nactions.aoe_setup+=/any_dnd,if=(!talent.bursting_sores||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)\nactions.aoe_setup+=/festering_strike,cycle_targets=1,if=death_knight.fwounded_targets<active_enemies&talent.bursting_sores\nactions.aoe_setup+=/epidemic,if=!variable.pooling_runic_power||fight_remains<10\nactions.aoe_setup+=/festering_strike,cycle_targets=1,if=death_knight.fwounded_targets<active_enemies\nactions.aoe_setup+=/festering_strike,cycle_targets=1,if=cooldown.apocalypse.remains<variable.apoc_timing&debuff.festering_wound.stack<4\nactions.aoe_setup+=/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# 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# ST/Cleave Cooldowns\nactions.cooldowns+=/summon_gargoyle,if=buff.commander_of_the_dead.up||!talent.commander_of_the_dead\nactions.cooldowns+=/raise_dead,if=!pet.ghoul.active\nactions.cooldowns+=/dark_transformation,if=cooldown.apocalypse.remains<5\nactions.cooldowns+=/apocalypse,cycle_targets=1,if=variable.st_planning&debuff.festering_wound.stack>=4\nactions.cooldowns+=/empower_rune_weapon,if=variable.st_planning&(pet.gargoyle.active&pet.gargoyle.remains<=21||!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<21||!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<=21\nactions.garg_setup+=/unholy_assault,if=pet.gargoyle.active&pet.gargoyle.remains<=21\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\nactions.garg_setup+=/death_coil,if=rune<=1\n\n# Generic\nactions.generic+=/death_coil,if=!variable.epidemic_priority&(!variable.pooling_runic_power&(rune<3||pet.gargoyle.active||buff.sudden_doom.react||cooldown.apocalypse.remains<10&debuff.festering_wound.stack>3)||boss&fight_remains<10)\nactions.generic+=/epidemic,if=variable.epidemic_priority&(!variable.pooling_runic_power&(rune<3||pet.gargoyle.active||buff.sudden_doom.react||cooldown.apocalypse.remains<10&debuff.festering_wound.stack>3)||boss&fight_remains<10)\nactions.generic+=/any_dnd,if=!death_and_decay.ticking&(active_enemies>=2||talent.unholy_ground&(pet.apoc_ghoul.active&pet.apoc_ghoul.remains>=10||pet.gargoyle.active&pet.gargoyle.remains>5||pet.army_ghoul.active&pet.army_ghoul.remains>5))&death_knight.fwounded_targets>=cycle_enemies\nactions.generic+=/wound_spender,cycle_targets=1,if=variable.pop_wounds||active_enemies>=2&death_and_decay.ticking\nactions.generic+=/festering_strike,cycle_targets=1,if=!variable.pop_wounds\nactions.generic+=/death_coil\n\n# Racials\nactions.racials+=/arcane_torrent,if=runic_power.deficit>20&(cooldown.summon_gargoyle.remains<gcd.max||!talent.summon_gargoyle.enabled||pet.gargoyle.active&rune<2&debuff.festering_wound.stack<1)\nactions.racials+=/blood_fury,if=(buff.blood_fury.duration>=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||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=buff.blood_fury.duration||active_enemies>=2&death_and_decay.ticking)||boss&fight_remains<=buff.blood_fury.duration\nactions.racials+=/berserking,if=(buff.berserking.duration>=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||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=buff.berserking.duration||active_enemies>=2&death_and_decay.ticking)||boss&fight_remains<=buff.berserking.duration\nactions.racials+=/lights_judgment,if=buff.unholy_strength.up&(!talent.festermight||buff.festermight.remains<target.time_to_die||buff.unholy_strength.remains<target.time_to_die)\nactions.racials+=/ancestral_call,if=(pet.gargoyle.remains<15&pet.gargoyle.active)||(!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>60)&(pet.army_ghoul.active&pet.army_ghoul.remains<=15||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=15||active_enemies>=2&death_and_decay.ticking)||boss&fight_remains<=15\nactions.racials+=/arcane_pulse,if=active_enemies>=2||(rune.deficit>=5&runic_power.deficit>=60)\nactions.racials+=/fireblood,if=(buff.fireblood.duration>=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||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=buff.fireblood.duration||active_enemies>=2&death_and_decay.ticking)||boss&fight_remains<=buff.fireblood.duration\nactions.racials+=/bag_of_tricks,if=active_enemies=1&(buff.unholy_strength.up||boss&fight_remains<5)\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\nactions.trinkets+=/variable,name=trinket_2_manual,value=trinket.2.is.algethar_puzzle_box\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,use_off_gcd=1,if=cooldown.summon_gargoyle.remains<5&rune<=4||!talent.summon_gargoyle&pet.army_ghoul.active||active_enemies>3&variable.adds_remain\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)",
["author"] = "SimulationCraft",
},
["Frost DK"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230430,
["author"] = "SimC",
["desc"] = "2023-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",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.killing_machine.stack < 2 & runic_power.deficit < 20 & ! variable.two_hand_check",
["action"] = "frost_strike",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.killing_machine.up & variable.frostscythe_priority",
["action"] = "frostscythe",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.killing_machine.up",
["action"] = "obliterate",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.rime.up & talent.icebreaker.rank = 2",
["action"] = "howling_blast",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "rune < 4 & runic_power.deficit > 25 & talent.obliteration.enabled & talent.breath_of_sindragosa.enabled",
["action"] = "horn_of_winter",
}, -- [6]
{
["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",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "variable.rime_buffs",
["action"] = "howling_blast",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "! variable.pooling_runic_power & ! death_knight.runeforge.razorice & ( debuff.razorice.stack < 5 || debuff.razorice.remains < gcd.max * 3 )",
["action"] = "glacial_advance",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "! variable.pooling_runes",
["action"] = "obliterate",
}, -- [10]
{
["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",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "runic_power.deficit > 20",
["action"] = "arcane_torrent",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "! variable.pooling_runic_power",
["action"] = "frost_strike",
}, -- [13]
},
["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",
}, -- [1]
{
["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",
}, -- [2]
{
["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",
}, -- [3]
{
["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",
}, -- [4]
{
["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",
}, -- [5]
},
["breath_oblit"] = {
{
["enabled"] = true,
["description"] = "Breath & Obliteration Active Rotation",
["criteria"] = "buff.killing_machine.up & variable.frostscythe_priority",
["action"] = "frostscythe",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.killing_machine.up",
["action"] = "obliterate",
["cycle_targets"] = 1,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.rime.up",
["action"] = "howling_blast",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "! buff.killing_machine.up",
["action"] = "howling_blast",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "runic_power.deficit > 25",
["action"] = "horn_of_winter",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "runic_power.deficit > 20",
["action"] = "arcane_torrent",
}, -- [6]
},
["breath"] = {
{
["enabled"] = true,
["description"] = "Breath Active Rotation",
["criteria"] = "variable.rw_buffs || variable.adds_remain",
["action"] = "remorseless_winter",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "variable.rime_buffs & runic_power > ( 45 - talent.rage_of_the_frozen_champion.enabled * 8 )",
["action"] = "howling_blast",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "rune < 2 & runic_power.deficit > 25",
["action"] = "horn_of_winter",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.killing_machine.up & ! variable.frostscythe_priority",
["action"] = "obliterate",
["cycle_targets"] = 1,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.killing_machine.up & variable.frostscythe_priority",
["action"] = "frostscythe",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "variable.frostscythe_priority & runic_power > 45",
["action"] = "frostscythe",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "runic_power.deficit > 40 || buff.pillar_of_frost.up & runic_power.deficit > 15",
["action"] = "obliterate",
["cycle_targets"] = 1,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "! death_and_decay.ticking & runic_power < 32 & rune.time_to_2 > runic_power / 16",
["action"] = "death_and_decay",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "runic_power < 32 & rune.time_to_2 > runic_power / 16",
["action"] = "remorseless_winter",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "runic_power < 32 & rune.time_to_2 > runic_power / 16",
["action"] = "howling_blast",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "runic_power.deficit > 25",
["action"] = "obliterate",
["cycle_targets"] = 1,
}, -- [11]
{
["enabled"] = true,
["criteria"] = "buff.rime.up",
["action"] = "howling_blast",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "runic_power < 60",
["action"] = "arcane_torrent",
}, -- [13]
},
["racials"] = {
{
["enabled"] = true,
["description"] = "Racial Abilities",
["criteria"] = "variable.cooldown_check",
["action"] = "blood_fury",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "variable.cooldown_check",
["action"] = "berserking",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "variable.cooldown_check",
["action"] = "arcane_pulse",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "variable.cooldown_check",
["action"] = "lights_judgment",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "variable.cooldown_check",
["action"] = "ancestral_call",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "variable.cooldown_check",
["action"] = "fireblood",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "talent.obliteration.enabled & ! buff.pillar_of_frost.up & buff.unholy_strength.up",
["action"] = "bag_of_tricks",
}, -- [7]
{
["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",
}, -- [8]
},
["default"] = {
{
["action"] = "mind_freeze",
["enabled"] = true,
}, -- [1]
{
["action"] = "strangulate",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "active_enemies = 1 & ( raid_event.adds.in > 15 || ! raid_event.adds.exists )",
["var_name"] = "st_planning",
["description"] = "Prevent specified trinkets being used with automatic lines actions.default+=/variable,name=specified_trinket,value=",
}, -- [3]
{
["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",
}, -- [4]
{
["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",
}, -- [5]
{
["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",
}, -- [6]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.pillar_of_frost.enabled & buff.pillar_of_frost.up || ! talent.pillar_of_frost.enabled & buff.empower_rune_weapon.up || ! talent.pillar_of_frost.enabled & ! talent.empower_rune_weapon.enabled",
["var_name"] = "cooldown_check",
}, -- [7]
{
["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",
}, -- [8]
{
["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",
}, -- [9]
{
["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",
}, -- [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",
}, -- [11]
{
["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",
}, -- [12]
{
["enabled"] = true,
["description"] = "Use <a href='https://www.wowhead.com/spell=10060/power-infusion'>Power Infusion</a> while <a href='https://www.wowhead.com/spell=51271/pillar-of-frost'>Pillar of Frost</a> is up, as well as <a href='https://www.wowhead.com/spell=152279/breath-of-sindragosa'>Breath of Sindragosa</a> or on cooldown if <a href='https://www.wowhead.com/spell=51271/pillar-of-frost'>Pillar of Frost</a> and <a href='https://www.wowhead.com/spell=152279/breath-of-sindragosa'>Breath of Sindragosa</a> are not talented",
["criteria"] = "runic_power.deficit > 40",
["action"] = "antimagic_shell",
}, -- [13]
{
["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",
}, -- [14]
{
["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 & ( ! buff.pillar_of_frost.up || buff.pillar_of_frost.up & ! buff.killing_machine.up ) )",
["action"] = "howling_blast",
}, -- [15]
{
["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",
}, -- [16]
{
["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",
}, -- [17]
{
["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",
}, -- [18]
{
["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",
}, -- [19]
{
["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",
}, -- [20]
{
["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",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "! talent.breath_of_sindragosa.enabled & ! talent.obliteration.enabled & variable.rw_buffs",
["action"] = "remorseless_winter",
}, -- [22]
{
["enabled"] = true,
["criteria"] = "talent.obliteration.enabled & active_enemies >= 3 & variable.adds_remain",
["action"] = "remorseless_winter",
}, -- [23]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "Choose Action list to run",
["list_name"] = "trinkets",
}, -- [24]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "cooldowns",
}, -- [25]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "racials",
}, -- [26]
{
["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",
}, -- [27]
{
["enabled"] = true,
["action"] = "run_action_list",
["criteria"] = "buff.breath_of_sindragosa.up & talent.obliteration.enabled & buff.pillar_of_frost.up",
["list_name"] = "breath_oblit",
}, -- [28]
{
["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",
}, -- [29]
{
["enabled"] = true,
["action"] = "run_action_list",
["criteria"] = "talent.obliteration.enabled & buff.pillar_of_frost.up & ! buff.breath_of_sindragosa.up",
["list_name"] = "obliteration",
}, -- [30]
{
["enabled"] = true,
["action"] = "call_action_list",
["criteria"] = "active_enemies >= 2",
["list_name"] = "aoe",
}, -- [31]
{
["enabled"] = true,
["action"] = "call_action_list",
["criteria"] = "active_enemies = 1",
["list_name"] = "single_target",
}, -- [32]
},
["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",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t2.is.ruby_whelp_shell || trinket.t2.is.whispering_incarnate_icon",
["var_name"] = "trinket_2_exclude",
}, -- [2]
{
["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 ) )",
}, -- [3]
{
["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 ) )",
}, -- [4]
{
["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",
}, -- [5]
{
["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",
}, -- [6]
{
["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 ) )",
}, -- [7]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t1.is.algethar_puzzle_box",
["var_name"] = "trinket_1_manual",
}, -- [8]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t2.is.algethar_puzzle_box",
["var_name"] = "trinket_2_manual",
}, -- [9]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.gathering_storm.enabled || talent.everfrost.enabled",
["var_name"] = "rw_buffs",
}, -- [10]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "main_hand.2h",
["var_name"] = "two_hand_check",
}, -- [11]
},
["aoe"] = {
{
["enabled"] = true,
["description"] = "AoE Action List",
["action"] = "remorseless_winter",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.rime.up || ! dot.frost_fever.ticking",
["action"] = "howling_blast",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! variable.pooling_runic_power & variable.rp_buffs",
["action"] = "glacial_advance",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.killing_machine.up & talent.cleaving_strikes.enabled & death_and_decay.ticking & ! variable.frostscythe_priority",
["action"] = "obliterate",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "! variable.pooling_runic_power",
["action"] = "glacial_advance",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "variable.frostscythe_priority",
["action"] = "frostscythe",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "! variable.frostscythe_priority",
["action"] = "obliterate",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "! variable.pooling_runic_power & ! talent.glacial_advance.enabled",
["action"] = "frost_strike",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "rune < 2 & runic_power.deficit > 25",
["action"] = "horn_of_winter",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "runic_power.deficit > 25",
["action"] = "arcane_torrent",
}, -- [10]
},
["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",
}, -- [1]
{
["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 & ( ! 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",
}, -- [2]
{
["enabled"] = true,
["action"] = "trinket2",
["slot"] = "trinket2",
["use_off_gcd"] = 1,
["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! 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",
}, -- [3]
{
["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 )",
}, -- [4]
{
["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 )",
}, -- [5]
{
["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",
}, -- [6]
},
["cooldowns"] = {
{
["enabled"] = true,
["description"] = "Cooldowns",
["criteria"] = "variable.cooldown_check || boss & fight_remains < 25",
["action"] = "potion",
}, -- [1]
{
["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",
}, -- [2]
{
["enabled"] = true,
["use_off_gcd"] = 1,
["criteria"] = "buff.breath_of_sindragosa.up & talent.breath_of_sindragosa.enabled & ! buff.empower_rune_weapon.up & ( runic_power < 70 & rune < 3 || time < 10 )",
["action"] = "empower_rune_weapon",
}, -- [3]
{
["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",
}, -- [4]
{
["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",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "talent.breath_of_sindragosa.enabled & ( variable.adds_remain || variable.st_planning )",
["action"] = "abomination_limb",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "! talent.breath_of_sindragosa.enabled & ! talent.obliteration.enabled & ( variable.adds_remain || variable.st_planning )",
["action"] = "abomination_limb",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "active_enemies >= 2 & ( ! death_and_decay.ticking & talent.cleaving_strikes.enabled || ! talent.cleaving_strikes.enabled || active_enemies <= 5 )",
["action"] = "chill_streak",
}, -- [8]
{
["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",
}, -- [9]
{
["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",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "talent.icecap.enabled & ! talent.obliteration.enabled & ! talent.breath_of_sindragosa.enabled & ( variable.adds_remain || variable.st_planning )",
["action"] = "pillar_of_frost",
}, -- [11]
{
["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",
}, -- [12]
{
["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",
}, -- [13]
{
["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",
}, -- [14]
{
["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",
}, -- [15]
{
["action"] = "raise_dead",
["enabled"] = true,
}, -- [16]
{
["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",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "! talent.glacial_advance.enabled & ! buff.breath_of_sindragosa.up & pet.ghoul.remains < gcd.max * 2 & active_enemies > 3",
["action"] = "sacrificial_pact",
}, -- [18]
{
["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",
}, -- [19]
},
["obliteration"] = {
{
["enabled"] = true,
["description"] = "Obliteration Active Rotation",
["criteria"] = "active_enemies > 3",
["action"] = "remorseless_winter",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.killing_machine.stack < 2 & buff.pillar_of_frost.remains < gcd.max & buff.rime.up",
["action"] = "howling_blast",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.killing_machine.stack < 2 & buff.pillar_of_frost.remains < gcd.max",
["action"] = "frost_strike",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.killing_machine.stack < 2 & buff.pillar_of_frost.remains < gcd.max & ! death_and_decay.ticking",
["action"] = "glacial_advance",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.killing_machine.up & ! variable.frostscythe_priority",
["action"] = "obliterate",
["cycle_targets"] = 1,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "buff.killing_machine.up & variable.frostscythe_priority",
["action"] = "frostscythe",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "! dot.frost_fever.ticking & ! buff.killing_machine.up",
["action"] = "howling_blast",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "! death_knight.runeforge.razorice & ! buff.killing_machine.react & ( debuff.razorice.stack < 5 || debuff.razorice.remains < gcd.max * 3 )",
["action"] = "glacial_advance",
}, -- [8]
{
["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,
}, -- [9]
{
["enabled"] = true,
["criteria"] = "buff.rime.up & ! buff.killing_machine.up",
["action"] = "howling_blast",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "! variable.pooling_runic_power & variable.rp_buffs & ! buff.killing_machine.up & active_enemies >= 2",
["action"] = "glacial_advance",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "! buff.killing_machine.up & ! variable.pooling_runic_power & ( ! talent.glacial_advance.enabled || active_enemies = 1 )",
["action"] = "frost_strike",
["cycle_targets"] = 1,
}, -- [12]
{
["enabled"] = true,
["criteria"] = "! buff.killing_machine.up & runic_power < 25",
["action"] = "howling_blast",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "rune < 1 & runic_power < 25",
["action"] = "arcane_torrent",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "! variable.pooling_runic_power & active_enemies >= 2",
["action"] = "glacial_advance",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "! variable.pooling_runic_power & ( ! talent.glacial_advance.enabled || active_enemies = 1 )",
["action"] = "frost_strike",
["cycle_targets"] = 1,
}, -- [16]
{
["enabled"] = true,
["criteria"] = "buff.rime.up",
["action"] = "howling_blast",
}, -- [17]
{
["enabled"] = true,
["action"] = "obliterate",
["cycle_targets"] = 1,
}, -- [18]
},
},
["version"] = 20230430,
["warnings"] = "The import for 'single_target' required some automated changes.\nLine 6: 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.shattering_blade' to 'talent.shattering_blade.enabled' (1x).\nLine 11: 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 '!death_and_decay.ticking&runic_power<32&rune.time_to_2>runic_power%16' to '!death_and_decay.ticking&runic_power<32&rune.time_to_2>runic_power/16'.\nLine 9: Converted operations in 'runic_power<32&rune.time_to_2>runic_power%16' to 'runic_power<32&rune.time_to_2>runic_power/16'.\nLine 10: Converted operations in 'runic_power<32&rune.time_to_2>runic_power%16' to 'runic_power<32&rune.time_to_2>runic_power/16'.\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 5: Converted 'talent.rage_of_the_frozen_champion' to 'talent.rage_of_the_frozen_champion.enabled' (1x).\nLine 5: Converted 'talent.avalanche' to 'talent.avalanche.enabled' (1x).\nLine 5: Converted 'talent.icebreaker' to 'talent.icebreaker.enabled' (1x).\nLine 6: Converted 'talent.unleashed_frenzy' to 'talent.unleashed_frenzy.enabled' (1x).\nLine 6: Converted 'talent.icy_talons' to 'talent.icy_talons.enabled' (1x).\nLine 7: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 7: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 7: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 7: Converted 'talent.empower_rune_weapon' to 'talent.empower_rune_weapon.enabled' (1x).\nLine 8: Converted 'talent.frostscythe' to 'talent.frostscythe.enabled' (1x).\nLine 8: Converted 'talent.improved_obliterate' to 'talent.improved_obliterate.enabled' (1x).\nLine 8: Converted 'talent.frigid_executioner' to 'talent.frigid_executioner.enabled' (1x).\nLine 8: Converted 'talent.frostreaper' to 'talent.frostreaper.enabled' (1x).\nLine 8: Converted 'talent.might_of_the_frozen_wastes' to 'talent.might_of_the_frozen_wastes.enabled' (1x).\nLine 8: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\nLine 8: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\nLine 9: 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 10: 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 11: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 12: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 12: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 14: Converted 'talent.assimilation' to 'talent.assimilation.enabled' (1x).\nLine 14: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.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 3: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.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 8: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\nLine 8: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\nLine 9: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 9: Converted 'talent.empower_rune_weapon' to 'talent.empower_rune_weapon.enabled' (1x).\nLine 10: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 10: Converted 'talent.icecap' to 'talent.icecap.enabled' (1x).\nLine 10: Converted 'talent.icecap' to 'talent.icecap.enabled' (1x).\nLine 11: Converted 'talent.icecap' to 'talent.icecap.enabled' (1x).\nLine 11: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 11: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 13: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 13: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 13: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 13: Converted 'talent.absolute_zero' to 'talent.absolute_zero.enabled' (1x).\nLine 14: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 15: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 15: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 15: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 15: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 17: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 17: 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 17: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 18: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 19: 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 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 2: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 3: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 4: Converted 'trinket.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 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\n\nactions+=/mind_freeze\nactions+=/strangulate\n# Prevent specified trinkets being used with automatic lines actions+=/variable,name=specified_trinket,value=\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<gcd.max*3||buff.unleashed_frenzy.stack<3)||talent.icy_talons&(buff.icy_talons.remains<gcd.max*3||buff.icy_talons.stack<3)\nactions+=/variable,name=cooldown_check,value=talent.pillar_of_frost&buff.pillar_of_frost.up||!talent.pillar_of_frost&buff.empower_rune_weapon.up||!talent.pillar_of_frost&!talent.empower_rune_weapon\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_expected<variable.oblit_pooling_time\nactions+=/variable,name=pooling_runic_power,value=talent.breath_of_sindragosa&cooldown.breath_of_sindragosa.remains<variable.breath_pooling_time||talent.obliteration&runic_power<35&cooldown.pillar_of_frost.remains_expected<variable.oblit_pooling_time\n# Use <a href='https://www.wowhead.com/spell=10060/power-infusion'>Power Infusion</a> while <a href='https://www.wowhead.com/spell=51271/pillar-of-frost'>Pillar of Frost</a> is up, as well as <a href='https://www.wowhead.com/spell=152279/breath-of-sindragosa'>Breath of Sindragosa</a> or on cooldown if <a href='https://www.wowhead.com/spell=51271/pillar-of-frost'>Pillar of Frost</a> and <a href='https://www.wowhead.com/spell=152279/breath-of-sindragosa'>Breath of Sindragosa</a> 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)\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)\n# Maintain Frost Fever, Icy Talons and Unleashed Frenzy\nactions+=/howling_blast,if=!dot.frost_fever.ticking&active_enemies>=2&(!talent.obliteration||talent.obliteration&(!buff.pillar_of_frost.up||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>15\nactions.breath+=/death_and_decay,if=!death_and_decay.ticking&runic_power<32&rune.time_to_2>runic_power%16\nactions.breath+=/remorseless_winter,if=runic_power<32&rune.time_to_2>runic_power%16\nactions.breath+=/howling_blast,if=runic_power<32&rune.time_to_2>runic_power%16\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<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))\nactions.cold_heart+=/chains_of_ice,if=!talent.obliteration&buff.pillar_of_frost.up&buff.cold_heart.stack>=10&(buff.pillar_of_frost.remains<gcd*(1+(talent.frostwyrms_fury&cooldown.frostwyrms_fury.ready))||buff.unholy_strength.up&buff.unholy_strength.remains<gcd)\nactions.cold_heart+=/chains_of_ice,if=!talent.obliteration&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)\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&talent.breath_of_sindragosa&!buff.empower_rune_weapon.up&(runic_power<70&rune<3||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=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.remains<gcd*2&buff.pillar_of_frost.up&!talent.obliteration||!talent.pillar_of_frost)&(!raid_event.adds.exists||(raid_event.adds.in>15+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.remains<gcd*2||raid_event.adds.exists&raid_event.adds.remains<gcd*2)\nactions.cooldowns+=/frostwyrms_fury,if=talent.obliteration&(talent.pillar_of_frost&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)&((buff.pillar_of_frost.remains<gcd||buff.unholy_strength.up&buff.unholy_strength.remains<gcd)&(debuff.razorice.stack=5||!death_knight.runeforge.razorice&!talent.glacial_advance))\nactions.cooldowns+=/raise_dead\nactions.cooldowns+=/soul_reaper,if=fight_remains>5&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.remains<gcd*2&active_enemies>3\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\nactions.obliteration+=/howling_blast,if=buff.killing_machine.stack<2&buff.pillar_of_frost.remains<gcd&buff.rime.up\nactions.obliteration+=/frost_strike,if=buff.killing_machine.stack<2&buff.pillar_of_frost.remains<gcd\nactions.obliteration+=/glacial_advance,if=buff.killing_machine.stack<2&buff.pillar_of_frost.remains<gcd&!death_and_decay.ticking\nactions.obliteration+=/obliterate,cycle_targets=1,if=buff.killing_machine.up&!variable.frostscythe_priority\nactions.obliteration+=/frostscythe,if=buff.killing_machine.up&variable.frostscythe_priority\nactions.obliteration+=/howling_blast,if=!dot.frost_fever.ticking&!buff.killing_machine.up\nactions.obliteration+=/glacial_advance,if=!death_knight.runeforge.razorice&!buff.killing_machine.react&(debuff.razorice.stack<5||debuff.razorice.remains<gcd*3)\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.remains<gcd*3||buff.pillar_of_frost.remains<gcd*3)\n\n# Single Target Rotation\nactions.single_target+=/remorseless_winter,if=variable.rw_buffs||variable.adds_remain\nactions.single_target+=/frost_strike,if=buff.killing_machine.stack<2&runic_power.deficit<20&!variable.two_hand_check\nactions.single_target+=/frostscythe,if=buff.killing_machine.up&variable.frostscythe_priority\nactions.single_target+=/obliterate,if=buff.killing_machine.up\nactions.single_target+=/howling_blast,if=buff.rime.up&talent.icebreaker.rank=2\nactions.single_target+=/horn_of_winter,if=rune<4&runic_power.deficit>25&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.remains<gcd*3)\nactions.single_target+=/obliterate,if=!variable.pooling_runes\nactions.single_target+=/horn_of_winter,if=rune<4&runic_power.deficit>25&(!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&(!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&(!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)",
},
["Arcane"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230502,
["spec"] = 62,
["desc"] = "2023-05-02: Update for 10.1.",
["lists"] = {
["aoe_rotation"] = {
{
["enabled"] = true,
["criteria"] = "buff.arcane_charge.stack < 2",
["action"] = "arcane_orb",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "( ! talent.evocation.enabled || cooldown.evocation.remains > 12 ) & ( ! talent.arcane_surge.enabled || cooldown.arcane_surge.remains > 12 ) & ( ! talent.touch_of_the_magi.enabled || cooldown.touch_of_the_magi.remains > 12 ) & buff.arcane_surge.down",
["action"] = "shifting_power",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.arcane_surge.down",
["action"] = "ice_nova",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "( refreshable || ! ticking ) & buff.arcane_charge.stack = buff.arcane_charge.max_stack & buff.arcane_surge.down",
["action"] = "nether_tempest",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.clearcasting.react & talent.arcane_harmony.enabled & talent.rune_of_power.enabled & cooldown.rune_of_power.remains < ( gcd.max * 2 )",
["action"] = "arcane_missiles",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "buff.arcane_charge.stack = buff.arcane_charge.max_stack || mana.pct < 10",
["action"] = "arcane_barrage",
}, -- [6]
{
["action"] = "arcane_explosion",
["enabled"] = true,
}, -- [7]
},
["aoe_spark_phase"] = {
{
["enabled"] = true,
["buff_name"] = "presence_of_mind",
["criteria"] = "prev_gcd.1.arcane_blast & cooldown.arcane_surge.remains > 75",
["action"] = "cancel_buff",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "cooldown.arcane_surge.remains < 75 & cooldown.arcane_surge.remains > 30",
["action"] = "rune_of_power",
}, -- [2]
{
["action"] = "radiant_spark",
["enabled"] = true,
}, -- [3]
{
["enabled"] = true,
["criteria"] = "cooldown.arcane_surge.remains <= ( gcd.max * 2 )",
["name"] = "timebreaching_talon",
["action"] = "timebreaching_talon",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.arcane_charge.stack >= 3 & prev_gcd.1.radiant_spark",
["action"] = "arcane_explosion",
}, -- [5]
{
["enabled"] = true,
["action"] = "arcane_orb",
["criteria"] = "buff.arcane_charge.stack < 3",
["line_cd"] = "15",
}, -- [6]
{
["enabled"] = true,
["action"] = "nether_tempest",
["criteria"] = "talent.arcane_echo.enabled",
["line_cd"] = "15",
}, -- [7]
{
["action"] = "arcane_surge",
["enabled"] = true,
}, -- [8]
{
["enabled"] = true,
["criteria"] = "cooldown.arcane_surge.remains < 75 & debuff.radiant_spark_vulnerability.stack = 4",
["action"] = "arcane_barrage",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "( debuff.radiant_spark_vulnerability.stack = 2 & cooldown.arcane_surge.remains > 75 ) || ( debuff.radiant_spark_vulnerability.stack = 1 & cooldown.arcane_surge.remains < 75 )",
["action"] = "arcane_barrage",
}, -- [10]
{
["enabled"] = true,
["use_off_gcd"] = 1,
["criteria"] = "prev_gcd.1.arcane_barrage",
["action"] = "touch_of_the_magi",
}, -- [11]
{
["action"] = "presence_of_mind",
["enabled"] = true,
}, -- [12]
{
["enabled"] = true,
["criteria"] = "debuff.radiant_spark_vulnerability.stack = 2 || debuff.radiant_spark_vulnerability.stack = 3",
["action"] = "arcane_blast",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "( debuff.radiant_spark_vulnerability.stack = 4 & buff.arcane_surge.up ) || ( debuff.radiant_spark_vulnerability.stack = 3 & buff.arcane_surge.down )",
["action"] = "arcane_barrage",
}, -- [14]
},
["aoe_touch_phase"] = {
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "1 - variable.conserve_mana",
["var_name"] = "conserve_mana",
["criteria"] = "debuff.touch_of_the_magi.remains > 9",
}, -- [1]
{
["action"] = "meteor",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "talent.arcane_bombardment.enabled & target.health.pct < 35 & debuff.touch_of_the_magi.remains <= gcd.max",
["action"] = "arcane_barrage",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.arcane_charge.stack = buff.arcane_charge.max_stack & active_enemies >= variable.aoe_target_count & cooldown.arcane_orb.remains <= execute_time",
["action"] = "arcane_barrage",
}, -- [4]
{
["enabled"] = true,
["chain"] = "1",
["criteria"] = "buff.clearcasting.react & ( talent.arcane_echo.enabled || talent.arcane_harmony.enabled )",
["action"] = "arcane_missiles",
}, -- [5]
{
["enabled"] = true,
["chain"] = "1",
["criteria"] = "buff.clearcasting.stack > 1 & talent.conjure_mana_gem.enabled & cooldown.use_mana_gem.ready",
["action"] = "arcane_missiles",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "buff.arcane_charge.stack < 2",
["action"] = "arcane_orb",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "buff.arcane_charge.stack = buff.arcane_charge.max_stack",
["action"] = "arcane_barrage",
}, -- [8]
{
["action"] = "arcane_explosion",
["enabled"] = true,
}, -- [9]
},
["touch_phase"] = {
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "1 - variable.conserve_mana",
["var_name"] = "conserve_mana",
["criteria"] = "debuff.touch_of_the_magi.remains > 9",
}, -- [1]
{
["action"] = "meteor",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "( ! talent.arcane_bombardment.enabled || target.health.pct > 35 ) & buff.arcane_surge.up & debuff.touch_of_the_magi.remains <= gcd.max",
["action"] = "presence_of_mind",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.presence_of_mind.up & buff.arcane_charge.stack = buff.arcane_charge.max_stack",
["action"] = "arcane_blast",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "( buff.arcane_harmony.up || ( talent.arcane_bombardment.enabled & target.health.pct < 35 ) ) & debuff.touch_of_the_magi.remains <= gcd.max",
["action"] = "arcane_barrage",
}, -- [5]
{
["enabled"] = true,
["chain"] = "1",
["criteria"] = "buff.clearcasting.stack > 1 & talent.conjure_mana_gem.enabled & cooldown.use_mana_gem.ready",
["action"] = "arcane_missiles",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "buff.nether_precision.up",
["action"] = "arcane_blast",
}, -- [7]
{
["enabled"] = true,
["action"] = "arcane_missiles",
["interrupt_if"] = "debuff.touch_of_the_magi.up&active_enemies<variable.aoe_target_count&debuff.touch_of_the_magi.up&gcd.remains=0&(buff.arcane_surge.up||talent.conjure_mana_gem||set_bonus.tier30_4pc)&mana.pct>30",
["chain"] = "1",
["criteria"] = "buff.clearcasting.react & ( debuff.touch_of_the_magi.remains > execute_time || ! talent.presence_of_mind.enabled )",
}, -- [8]
{
["action"] = "arcane_blast",
["enabled"] = true,
}, -- [9]
{
["action"] = "arcane_barrage",
["enabled"] = true,
}, -- [10]
},
["rotation"] = {
{
["enabled"] = true,
["criteria"] = "buff.arcane_charge.stack < 3 & ( buff.bloodlust.down || mana.pct > 70 || cooldown.touch_of_the_magi.remains > 30 )",
["action"] = "arcane_orb",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "( ! talent.evocation.enabled || cooldown.evocation.remains > 12 ) & ( ! talent.arcane_surge.enabled || cooldown.arcane_surge.remains > 12 ) & ( ! talent.touch_of_the_magi.enabled || cooldown.touch_of_the_magi.remains > 12 ) & buff.arcane_surge.down & fight_remains > 15",
["action"] = "shifting_power",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.arcane_charge.stack < 3 & target.health.pct < 35 & talent.arcane_bombardment.enabled",
["action"] = "presence_of_mind",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.presence_of_mind.up & target.health.pct < 35 & talent.arcane_bombardment.enabled & buff.arcane_charge.stack < 3",
["action"] = "arcane_blast",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.clearcasting.react & buff.clearcasting.stack = buff.clearcasting.max_stack",
["action"] = "arcane_missiles",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "( refreshable || ! ticking ) & buff.arcane_charge.stack = buff.arcane_charge.max_stack & ( buff.temporal_warp.up || mana.pct < 10 || ! talent.shifting_power.enabled ) & buff.arcane_surge.down & fight_remains >= 12",
["action"] = "nether_tempest",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "buff.arcane_charge.stack = buff.arcane_charge.max_stack & mana.pct < 50 & ! talent.evocation.enabled & fight_remains > 20",
["action"] = "arcane_barrage",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "buff.arcane_charge.stack = buff.arcane_charge.max_stack & mana.pct < 70 & variable.conserve_mana & buff.bloodlust.up & cooldown.touch_of_the_magi.remains > 5 & fight_remains > 20",
["action"] = "arcane_barrage",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "buff.clearcasting.react & buff.concentration.up & buff.arcane_charge.stack = buff.arcane_charge.max_stack",
["action"] = "arcane_missiles",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "buff.arcane_charge.stack = buff.arcane_charge.max_stack & buff.nether_precision.up",
["action"] = "arcane_blast",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "buff.arcane_charge.stack = buff.arcane_charge.max_stack & mana.pct < 60 & variable.conserve_mana & ( ! talent.rune_of_power.enabled || cooldown.rune_of_power.remains > 5 ) & cooldown.touch_of_the_magi.remains > 10 & cooldown.evocation.remains > 40 & fight_remains > 20",
["action"] = "arcane_barrage",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "buff.clearcasting.react & buff.nether_precision.down",
["action"] = "arcane_missiles",
}, -- [12]
{
["action"] = "arcane_blast",
["enabled"] = true,
}, -- [13]
{
["action"] = "arcane_barrage",
["enabled"] = true,
}, -- [14]
},
["standard_cooldowns"] = {
{
["enabled"] = true,
["criteria"] = "buff.arcane_charge.stack = buff.arcane_charge.max_stack",
["action"] = "arcane_surge",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "prev_gcd.1.arcane_surge & talent.arcane_echo.enabled",
["action"] = "nether_tempest",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.arcane_surge.up & cooldown.touch_of_the_magi.ready",
["action"] = "meteor",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.arcane_surge.up & cooldown.touch_of_the_magi.ready",
["action"] = "arcane_barrage",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "cooldown.touch_of_the_magi.remains <= ( gcd.max * 2 ) & buff.arcane_charge.stack = buff.arcane_charge.max_stack",
["action"] = "rune_of_power",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "cooldown.touch_of_the_magi.remains <= ( gcd.max * 2 ) & buff.arcane_charge.stack = buff.arcane_charge.max_stack",
["action"] = "meteor",
}, -- [6]
{
["enabled"] = true,
["use_off_gcd"] = 1,
["criteria"] = "prev_gcd.1.arcane_barrage",
["action"] = "touch_of_the_magi",
}, -- [7]
},
["default"] = {
{
["enabled"] = true,
["description"] = "Executed every time the actor is available.",
["action"] = "counterspell",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "cooldown.arcane_surge.ready",
["action"] = "potion",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "talent.temporal_warp.enabled & buff.exhaustion.up & ( cooldown.arcane_surge.ready || fight_remains <= 40 || buff.arcane_surge.up & fight_remains <= 80 )",
["action"] = "time_warp",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.arcane_surge.down & buff.rune_of_power.down & debuff.touch_of_the_magi.down",
["action"] = "lights_judgment",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.arcane_surge.down & buff.rune_of_power.down & debuff.touch_of_the_magi.down",
["action"] = "bag_of_tricks",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "( prev_gcd.1.arcane_surge & ! ( buff.temporal_warp.up & buff.bloodlust.up ) ) || ( buff.arcane_surge.up & debuff.touch_of_the_magi.up )",
["action"] = "berserking",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "prev_gcd.1.arcane_surge",
["action"] = "blood_fury",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "prev_gcd.1.arcane_surge",
["action"] = "fireblood",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "prev_gcd.1.arcane_surge",
["action"] = "ancestral_call",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "prev_gcd.1.arcane_surge",
["action"] = "use_items",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "mana.pct > 65 & ( ! variable.steroid_trinket_equipped || cooldown.arcane_surge.remains > 20 )",
["name"] = "conjured_chillglobe",
["action"] = "conjured_chillglobe",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "! variable.steroid_trinket_equipped || cooldown.arcane_surge.remains > 20",
["name"] = "darkmoon_deck_rime",
["action"] = "darkmoon_deck_rime",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "! variable.steroid_trinket_equipped || cooldown.arcane_surge.remains > 20",
["name"] = "darkmoon_deck_dance",
["action"] = "darkmoon_deck_dance",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "! variable.steroid_trinket_equipped || cooldown.arcane_surge.remains > 20",
["name"] = "darkmoon_deck_inferno",
["action"] = "darkmoon_deck_inferno",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "! variable.steroid_trinket_equipped || cooldown.arcane_surge.remains > 20",
["name"] = "desperate_invokers_codex",
["action"] = "desperate_invokers_codex",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "! variable.steroid_trinket_equipped || cooldown.arcane_surge.remains > 20",
["name"] = "iceblood_deathsnare",
["action"] = "iceblood_deathsnare",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "fight_remains < 2",
["action"] = "arcane_barrage",
}, -- [17]
{
["enabled"] = true,
["interrupt_if"] = "mana.pct>=95&(!talent.siphon_storm||talent.siphon_storm&fight_remains>10&cooldown.arcane_surge.remains<1)",
["action"] = "evocation",
["criteria"] = "buff.rune_of_power.down & buff.arcane_surge.down & debuff.touch_of_the_magi.down & ( mana.pct < 10 & cooldown.touch_of_the_magi.remains < 25 )",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "buff.rune_of_power.down & debuff.touch_of_the_magi.down & buff.arcane_surge.down & cooldown.arcane_surge.remains < fight_remains & ! mana_gem_charges",
["action"] = "conjure_mana_gem",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "talent.cascading_power.enabled & buff.clearcasting.stack < 2 & buff.arcane_surge.up",
["action"] = "mana_gem",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "! talent.cascading_power.enabled & prev_gcd.1.arcane_surge",
["action"] = "mana_gem",
}, -- [21]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "talent.radiant_spark.enabled & variable.aoe_spark_phase",
["list_name"] = "aoe_spark_phase",
}, -- [22]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "talent.radiant_spark.enabled & variable.spark_phase",
["list_name"] = "spark_phase",
}, -- [23]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "debuff.touch_of_the_magi.up & active_enemies >= variable.aoe_target_count",
["list_name"] = "aoe_touch_phase",
}, -- [24]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "debuff.touch_of_the_magi.up & active_enemies < variable.aoe_target_count",
["list_name"] = "touch_phase",
}, -- [25]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "variable.rop_phase",
["list_name"] = "rop_phase",
}, -- [26]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "! talent.radiant_spark.enabled & ( ! talent.rune_of_power.enabled || active_enemies >= variable.aoe_target_count )",
["list_name"] = "standard_cooldowns",
}, -- [27]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies >= variable.aoe_target_count",
["list_name"] = "aoe_rotation",
}, -- [28]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "rotation",
}, -- [29]
},
["precombat"] = {
{
["action"] = "arcane_intellect",
["enabled"] = true,
}, -- [1]
{
["action"] = "arcane_familiar",
["enabled"] = true,
}, -- [2]
{
["action"] = "conjure_mana_gem",
["enabled"] = true,
}, -- [3]
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "opener_min_mana",
["value"] = "225000",
["value_else"] = "200000",
["criteria"] = "talent.arcane_harmony.enabled",
}, -- [4]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "equipped.gladiators_badge || equipped.irideus_fragment || equipped.erupting_spear_fragment || equipped.spoils_of_neltharus || equipped.tome_of_unstable_power || equipped.timebreaching_talon || equipped.horn_of_valor",
["var_name"] = "steroid_trinket_equipped",
}, -- [5]
{
["action"] = "mirror_image",
["enabled"] = true,
}, -- [6]
{
["enabled"] = true,
["criteria"] = "! talent.siphon_storm.enabled",
["action"] = "arcane_blast",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "talent.siphon_storm.enabled",
["action"] = "evocation",
}, -- [8]
},
["spark_phase"] = {
{
["enabled"] = true,
["action"] = "nether_tempest",
["criteria"] = "! ticking & variable.opener & buff.bloodlust.up",
["line_cd"] = "45",
}, -- [1]
{
["action"] = "rune_of_power",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "variable.opener & cooldown.arcane_surge.ready & buff.bloodlust.up & mana >= variable.opener_min_mana & buff.rune_of_power.remains > gcd.max * 4",
["action"] = "arcane_blast",
}, -- [3]
{
["enabled"] = true,
["chain"] = "1",
["criteria"] = "variable.opener & buff.bloodlust.up & buff.clearcasting.react & buff.clearcasting.stack >= 2 & cooldown.radiant_spark.remains < 5 & buff.nether_precision.down",
["action"] = "arcane_missiles",
}, -- [4]
{
["enabled"] = true,
["chain"] = "1",
["criteria"] = "talent.arcane_harmony.enabled & buff.arcane_harmony.stack < 15 & ( ( variable.opener & buff.bloodlust.up ) || buff.clearcasting.react & cooldown.radiant_spark.remains < 5 ) & cooldown.arcane_surge.remains < 30",
["action"] = "arcane_missiles",
}, -- [5]
{
["action"] = "radiant_spark",
["enabled"] = true,
}, -- [6]
{
["enabled"] = true,
["criteria"] = "cooldown.arcane_surge.remains <= ( gcd.max * 3 )",
["name"] = "timebreaching_talon",
["action"] = "timebreaching_talon",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "( prev_gcd.4.radiant_spark & cooldown.arcane_surge.remains <= execute_time ) || ! ticking & prev_gcd.5.radiant_spark",
["action"] = "nether_tempest",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "( ! talent.nether_tempest.enabled & prev_gcd.4.radiant_spark ) || prev_gcd.1.nether_tempest",
["action"] = "arcane_surge",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "( talent.nether_tempest.enabled & prev_gcd.6.radiant_spark ) || ( ! talent.nether_tempest.enabled & prev_gcd.5.radiant_spark )",
["action"] = "meteor",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "cast_time >= gcd.max & execute_time < debuff.radiant_spark_vulnerability.remains & ( ! talent.arcane_bombardment.enabled || target.health.pct >= 35 ) & ( talent.nether_tempest.enabled & prev_gcd.6.radiant_spark || ! talent.nether_tempest.enabled & prev_gcd.5.radiant_spark ) & ! talent.meteor.enabled",
["action"] = "arcane_blast",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "debuff.radiant_spark_vulnerability.stack = 4",
["action"] = "arcane_barrage",
}, -- [12]
{
["enabled"] = true,
["use_off_gcd"] = 1,
["criteria"] = "prev_gcd.1.arcane_barrage & ( action.arcane_barrage.in_flight_remains <= 0.2 || gcd.remains <= 0.2 )",
["action"] = "touch_of_the_magi",
}, -- [13]
{
["action"] = "arcane_blast",
["enabled"] = true,
}, -- [14]
{
["action"] = "arcane_barrage",
["enabled"] = true,
}, -- [15]
},
["rop_phase"] = {
{
["action"] = "rune_of_power",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["criteria"] = "prev_gcd.1.rune_of_power",
["action"] = "arcane_blast",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "prev_gcd.1.arcane_blast & prev_gcd.2.rune_of_power",
["action"] = "arcane_blast",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "prev_gcd.1.arcane_blast & prev_gcd.3.rune_of_power",
["action"] = "arcane_blast",
}, -- [4]
{
["action"] = "arcane_surge",
["enabled"] = true,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "prev_gcd.1.arcane_blast & prev_gcd.4.rune_of_power",
["action"] = "arcane_blast",
}, -- [6]
{
["enabled"] = true,
["action"] = "nether_tempest",
["criteria"] = "talent.arcane_echo.enabled",
["line_cd"] = "15",
}, -- [7]
{
["action"] = "meteor",
["enabled"] = true,
}, -- [8]
{
["action"] = "arcane_barrage",
["enabled"] = true,
}, -- [9]
{
["enabled"] = true,
["use_off_gcd"] = 1,
["criteria"] = "prev_gcd.1.arcane_barrage",
["action"] = "touch_of_the_magi",
}, -- [10]
},
},
["version"] = 20230502,
["warnings"] = "The import for 'aoe_rotation' required some automated changes.\nLine 2: Converted 'talent.evocation' to 'talent.evocation.enabled' (1x).\nLine 2: Converted 'talent.arcane_surge' to 'talent.arcane_surge.enabled' (1x).\nLine 2: Converted 'talent.touch_of_the_magi' to 'talent.touch_of_the_magi.enabled' (1x).\nLine 5: Converted 'talent.arcane_harmony' to 'talent.arcane_harmony.enabled' (1x).\nLine 5: Converted 'talent.rune_of_power' to 'talent.rune_of_power.enabled' (1x).\n\nThe import for 'aoe_spark_phase' required some automated changes.\nLine 7: Converted 'talent.arcane_echo' to 'talent.arcane_echo.enabled' (1x).\n\nThe import for 'aoe_touch_phase' required some automated changes.\nLine 3: Converted 'talent.arcane_bombardment' to 'talent.arcane_bombardment.enabled' (1x).\nLine 5: Converted 'talent.arcane_echo' to 'talent.arcane_echo.enabled' (1x).\nLine 5: Converted 'talent.arcane_harmony' to 'talent.arcane_harmony.enabled' (1x).\nLine 6: Converted 'talent.conjure_mana_gem' to 'talent.conjure_mana_gem.enabled' (1x).\n\nThe import for 'touch_phase' required some automated changes.\nLine 3: Converted 'talent.arcane_bombardment' to 'talent.arcane_bombardment.enabled' (1x).\nLine 5: Converted 'talent.arcane_bombardment' to 'talent.arcane_bombardment.enabled' (1x).\nLine 6: Converted 'talent.conjure_mana_gem' to 'talent.conjure_mana_gem.enabled' (1x).\nLine 8: Converted 'talent.presence_of_mind' to 'talent.presence_of_mind.enabled' (1x).\n\nThe import for 'rotation' required some automated changes.\nLine 2: Converted 'talent.evocation' to 'talent.evocation.enabled' (1x).\nLine 2: Converted 'talent.arcane_surge' to 'talent.arcane_surge.enabled' (1x).\nLine 2: Converted 'talent.touch_of_the_magi' to 'talent.touch_of_the_magi.enabled' (1x).\nLine 3: Converted 'talent.arcane_bombardment' to 'talent.arcane_bombardment.enabled' (1x).\nLine 4: Converted 'talent.arcane_bombardment' to 'talent.arcane_bombardment.enabled' (1x).\nLine 6: Converted 'talent.shifting_power' to 'talent.shifting_power.enabled' (1x).\nLine 7: Converted 'talent.evocation' to 'talent.evocation.enabled' (1x).\nLine 11: Converted 'talent.rune_of_power' to 'talent.rune_of_power.enabled' (1x).\n\nThe import for 'standard_cooldowns' required some automated changes.\nLine 2: Converted 'talent.arcane_echo' to 'talent.arcane_echo.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'talent.temporal_warp' to 'talent.temporal_warp.enabled' (1x).\nLine 20: Converted 'talent.cascading_power' to 'talent.cascading_power.enabled' (1x).\nLine 21: Converted 'talent.cascading_power' to 'talent.cascading_power.enabled' (1x).\nLine 22: Converted 'talent.radiant_spark' to 'talent.radiant_spark.enabled' (1x).\nLine 23: Converted 'talent.radiant_spark' to 'talent.radiant_spark.enabled' (1x).\nLine 27: Converted 'talent.radiant_spark' to 'talent.radiant_spark.enabled' (1x).\nLine 27: Converted 'talent.rune_of_power' to 'talent.rune_of_power.enabled' (1x).\n\nThe import for 'rop_phase' required some automated changes.\nLine 7: Converted 'talent.arcane_echo' to 'talent.arcane_echo.enabled' (1x).\n\nThe import for 'spark_phase' required some automated changes.\nLine 5: Converted 'talent.arcane_harmony' to 'talent.arcane_harmony.enabled' (1x).\nLine 9: Converted 'talent.nether_tempest' to 'talent.nether_tempest.enabled' (1x).\nLine 10: Converted 'talent.nether_tempest' to 'talent.nether_tempest.enabled' (1x).\nLine 10: Converted 'talent.nether_tempest' to 'talent.nether_tempest.enabled' (1x).\nLine 11: Converted 'talent.arcane_bombardment' to 'talent.arcane_bombardment.enabled' (1x).\nLine 11: Converted 'talent.nether_tempest' to 'talent.nether_tempest.enabled' (1x).\nLine 11: Converted 'talent.nether_tempest' to 'talent.nether_tempest.enabled' (1x).\nLine 11: Converted 'talent.meteor' to 'talent.meteor.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'talent.arcane_harmony' to 'talent.arcane_harmony.enabled' (1x).\nLine 7: Converted 'talent.siphon_storm' to 'talent.siphon_storm.enabled' (1x).\nLine 8: Converted 'talent.siphon_storm' to 'talent.siphon_storm.enabled' (1x).\n\nImported 10 action lists.\n",
["author"] = "SimulationCraft",
["profile"] = "actions.precombat+=/arcane_intellect\nactions.precombat+=/arcane_familiar\nactions.precombat+=/conjure_mana_gem\n## actions.precombat+=/variable,name=aoe_target_count,op=reset,default=3\n## actions.precombat+=/variable,name=conserve_mana,op=set,value=0\nactions.precombat+=/variable,name=opener_min_mana,op=setif,condition=talent.arcane_harmony,value=225000,value_else=200000\nactions.precombat+=/variable,name=steroid_trinket_equipped,op=set,value=equipped.gladiators_badge||equipped.irideus_fragment||equipped.erupting_spear_fragment||equipped.spoils_of_neltharus||equipped.tome_of_unstable_power||equipped.timebreaching_talon||equipped.horn_of_valor\nactions.precombat+=/mirror_image\nactions.precombat+=/arcane_blast,if=!talent.siphon_storm\nactions.precombat+=/evocation,if=talent.siphon_storm\n\n# Executed every time the actor is available.\nactions=counterspell\nactions+=/potion,if=cooldown.arcane_surge.ready\nactions+=/time_warp,if=talent.temporal_warp&buff.exhaustion.up&(cooldown.arcane_surge.ready||fight_remains<=40||buff.arcane_surge.up&fight_remains<=80)\nactions+=/lights_judgment,if=buff.arcane_surge.down&buff.rune_of_power.down&debuff.touch_of_the_magi.down\nactions+=/bag_of_tricks,if=buff.arcane_surge.down&buff.rune_of_power.down&debuff.touch_of_the_magi.down\nactions+=/berserking,if=(prev_gcd.1.arcane_surge&!(buff.temporal_warp.up&buff.bloodlust.up))||(buff.arcane_surge.up&debuff.touch_of_the_magi.up)\nactions+=/blood_fury,if=prev_gcd.1.arcane_surge\nactions+=/fireblood,if=prev_gcd.1.arcane_surge\n## Not supported by the addon; cannot control if another player grants Power Infusion.\n## actions+=/invoke_external_buff,name=power_infusion,if=!talent.radiant_spark&prev_gcd.1.arcane_surge\nactions+=/ancestral_call,if=prev_gcd.1.arcane_surge\nactions+=/use_items,if=prev_gcd.1.arcane_surge\n## TODO: actions+=/use_item,name=tinker_breath_of_neltharion,if=cooldown.arcane_surge.remains&buff.rune_of_power.down&buff.arcane_surge.down&debuff.touch_of_the_magi.down\nactions+=/use_item,name=conjured_chillglobe,if=mana.pct>65&(!variable.steroid_trinket_equipped||cooldown.arcane_surge.remains>20)\nactions+=/use_item,name=darkmoon_deck_rime,if=!variable.steroid_trinket_equipped||cooldown.arcane_surge.remains>20\nactions+=/use_item,name=darkmoon_deck_dance,if=!variable.steroid_trinket_equipped||cooldown.arcane_surge.remains>20\nactions+=/use_item,name=darkmoon_deck_inferno,if=!variable.steroid_trinket_equipped||cooldown.arcane_surge.remains>20\nactions+=/use_item,name=desperate_invokers_codex,if=!variable.steroid_trinket_equipped||cooldown.arcane_surge.remains>20\nactions+=/use_item,name=iceblood_deathsnare,if=!variable.steroid_trinket_equipped||cooldown.arcane_surge.remains>20\n## actions+=/variable,name=aoe_spark_phase,op=set,value=1,if=active_enemies>=variable.aoe_target_count&(action.arcane_orb.charges>0||buff.arcane_charge.stack>=3)&(!talent.rune_of_power||cooldown.rune_of_power.ready)&cooldown.radiant_spark.ready&cooldown.touch_of_the_magi.remains<=(gcd.max*2)\n## actions+=/variable,name=aoe_spark_phase,op=set,value=0,if=variable.aoe_spark_phase&debuff.radiant_spark_vulnerability.down&dot.radiant_spark.remains<5&cooldown.radiant_spark.remains\n## actions+=/variable,name=spark_phase,op=set,value=1,if=buff.arcane_charge.stack>=3&active_enemies<variable.aoe_target_count&(!talent.rune_of_power||cooldown.rune_of_power.ready)&cooldown.radiant_spark.ready&cooldown.touch_of_the_magi.remains<=(gcd.max*7)\n## actions+=/variable,name=spark_phase,op=set,value=0,if=variable.spark_phase&debuff.radiant_spark_vulnerability.down&dot.radiant_spark.remains<5&cooldown.radiant_spark.remains\n## actions+=/variable,name=rop_phase,op=set,value=1,if=talent.rune_of_power&!talent.radiant_spark&buff.arcane_charge.stack>=3&cooldown.rune_of_power.ready&active_enemies<variable.aoe_target_count\n## actions+=/variable,name=rop_phase,op=set,value=0,if=debuff.touch_of_the_magi.up||!talent.rune_of_power\n## actions+=/variable,name=opener,op=set,if=debuff.touch_of_the_magi.up&variable.opener,value=0\n## actions+=/cancel_action,if=action.evocation.channeling&mana.pct>=95&!talent.siphon_storm\n## actions+=/cancel_action,if=action.evocation.channeling&(mana.pct>fight_remains*4)&!(fight_remains>10&cooldown.arcane_surge.remains<1)\nactions+=/arcane_barrage,if=fight_remains<2\nactions+=/evocation,if=buff.rune_of_power.down&buff.arcane_surge.down&debuff.touch_of_the_magi.down&(mana.pct<10&cooldown.touch_of_the_magi.remains<25),interrupt_if=mana.pct>=95&(!talent.siphon_storm||talent.siphon_storm&fight_remains>10&cooldown.arcane_surge.remains<1)\nactions+=/conjure_mana_gem,if=buff.rune_of_power.down&debuff.touch_of_the_magi.down&buff.arcane_surge.down&cooldown.arcane_surge.remains<fight_remains&!mana_gem_charges\nactions+=/use_mana_gem,if=talent.cascading_power&buff.clearcasting.stack<2&buff.arcane_surge.up\nactions+=/use_mana_gem,if=!talent.cascading_power&prev_gcd.1.arcane_surge\nactions+=/call_action_list,name=aoe_spark_phase,strict=1,if=talent.radiant_spark&variable.aoe_spark_phase\nactions+=/call_action_list,name=spark_phase,strict=1,if=talent.radiant_spark&variable.spark_phase\nactions+=/call_action_list,name=aoe_touch_phase,strict=1,if=debuff.touch_of_the_magi.up&active_enemies>=variable.aoe_target_count\nactions+=/call_action_list,name=touch_phase,strict=1,if=debuff.touch_of_the_magi.up&active_enemies<variable.aoe_target_count\nactions+=/call_action_list,name=rop_phase,strict=1,if=variable.rop_phase\nactions+=/call_action_list,name=standard_cooldowns,strict=1,if=!talent.radiant_spark&(!talent.rune_of_power||active_enemies>=variable.aoe_target_count)\nactions+=/call_action_list,name=aoe_rotation,strict=1,if=active_enemies>=variable.aoe_target_count\nactions+=/call_action_list,name=rotation\n\nactions.aoe_rotation=arcane_orb,if=buff.arcane_charge.stack<2\nactions.aoe_rotation+=/shifting_power,if=(!talent.evocation||cooldown.evocation.remains>12)&(!talent.arcane_surge||cooldown.arcane_surge.remains>12)&(!talent.touch_of_the_magi||cooldown.touch_of_the_magi.remains>12)&buff.arcane_surge.down\nactions.aoe_rotation+=/ice_nova,if=buff.arcane_surge.down\nactions.aoe_rotation+=/nether_tempest,if=(refreshable||!ticking)&buff.arcane_charge.stack=buff.arcane_charge.max_stack&buff.arcane_surge.down\nactions.aoe_rotation+=/arcane_missiles,if=buff.clearcasting.react&talent.arcane_harmony&talent.rune_of_power&cooldown.rune_of_power.remains<(gcd.max*2)\nactions.aoe_rotation+=/arcane_barrage,if=buff.arcane_charge.stack=buff.arcane_charge.max_stack||mana.pct<10\nactions.aoe_rotation+=/arcane_explosion\n\nactions.aoe_spark_phase=cancel_buff,name=presence_of_mind,if=prev_gcd.1.arcane_blast&cooldown.arcane_surge.remains>75\nactions.aoe_spark_phase+=/rune_of_power,if=cooldown.arcane_surge.remains<75&cooldown.arcane_surge.remains>30\nactions.aoe_spark_phase+=/radiant_spark\nactions.aoe_spark_phase+=/use_item,name=timebreaching_talon,if=cooldown.arcane_surge.remains<=(gcd.max*2)\nactions.aoe_spark_phase+=/arcane_explosion,if=buff.arcane_charge.stack>=3&prev_gcd.1.radiant_spark\nactions.aoe_spark_phase+=/arcane_orb,if=buff.arcane_charge.stack<3,line_cd=15\nactions.aoe_spark_phase+=/nether_tempest,if=talent.arcane_echo,line_cd=15\nactions.aoe_spark_phase+=/arcane_surge\n## actions.aoe_spark_phase+=/wait,sec=0.05,if=cooldown.arcane_surge.remains>75&prev_gcd.1.arcane_blast&!talent.presence_of_mind,line_cd=15\n## actions.aoe_spark_phase+=/wait,sec=0.05,if=prev_gcd.1.arcane_surge,line_cd=15\n## actions.aoe_spark_phase+=/wait,sec=0.05,if=cooldown.arcane_surge.remains<75&debuff.radiant_spark_vulnerability.stack=3&!talent.presence_of_mind,line_cd=15\nactions.aoe_spark_phase+=/arcane_barrage,if=cooldown.arcane_surge.remains<75&debuff.radiant_spark_vulnerability.stack=4\nactions.aoe_spark_phase+=/arcane_barrage,if=(debuff.radiant_spark_vulnerability.stack=2&cooldown.arcane_surge.remains>75)||(debuff.radiant_spark_vulnerability.stack=1&cooldown.arcane_surge.remains<75)\nactions.aoe_spark_phase+=/touch_of_the_magi,use_off_gcd=1,if=prev_gcd.1.arcane_barrage\nactions.aoe_spark_phase+=/presence_of_mind\nactions.aoe_spark_phase+=/arcane_blast,if=debuff.radiant_spark_vulnerability.stack=2||debuff.radiant_spark_vulnerability.stack=3\nactions.aoe_spark_phase+=/arcane_barrage,if=(debuff.radiant_spark_vulnerability.stack=4&buff.arcane_surge.up)||(debuff.radiant_spark_vulnerability.stack=3&buff.arcane_surge.down)\n\nactions.aoe_touch_phase+=/variable,name=conserve_mana,op=set,if=debuff.touch_of_the_magi.remains>9,value=1-variable.conserve_mana\nactions.aoe_touch_phase+=/meteor\nactions.aoe_touch_phase+=/arcane_barrage,if=talent.arcane_bombardment&target.health.pct<35&debuff.touch_of_the_magi.remains<=gcd.max\nactions.aoe_touch_phase+=/arcane_barrage,if=buff.arcane_charge.stack=buff.arcane_charge.max_stack&active_enemies>=variable.aoe_target_count&cooldown.arcane_orb.remains<=execute_time\nactions.aoe_touch_phase+=/arcane_missiles,if=buff.clearcasting.react&(talent.arcane_echo||talent.arcane_harmony),chain=1\nactions.aoe_touch_phase+=/arcane_missiles,if=buff.clearcasting.stack>1&talent.conjure_mana_gem&cooldown.use_mana_gem.ready,chain=1\nactions.aoe_touch_phase+=/arcane_orb,if=buff.arcane_charge.stack<2\nactions.aoe_touch_phase+=/arcane_barrage,if=buff.arcane_charge.stack=buff.arcane_charge.max_stack\nactions.aoe_touch_phase+=/arcane_explosion\n\nactions.rop_phase=rune_of_power\nactions.rop_phase+=/arcane_blast,if=prev_gcd.1.rune_of_power\nactions.rop_phase+=/arcane_blast,if=prev_gcd.1.arcane_blast&prev_gcd.2.rune_of_power\nactions.rop_phase+=/arcane_blast,if=prev_gcd.1.arcane_blast&prev_gcd.3.rune_of_power\nactions.rop_phase+=/arcane_surge\nactions.rop_phase+=/arcane_blast,if=prev_gcd.1.arcane_blast&prev_gcd.4.rune_of_power\nactions.rop_phase+=/nether_tempest,if=talent.arcane_echo,line_cd=15\nactions.rop_phase+=/meteor\nactions.rop_phase+=/arcane_barrage\nactions.rop_phase+=/touch_of_the_magi,use_off_gcd=1,if=prev_gcd.1.arcane_barrage\n\nactions.rotation+=/arcane_orb,if=buff.arcane_charge.stack<3&(buff.bloodlust.down||mana.pct>70||cooldown.touch_of_the_magi.remains>30)\nactions.rotation+=/shifting_power,if=(!talent.evocation||cooldown.evocation.remains>12)&(!talent.arcane_surge||cooldown.arcane_surge.remains>12)&(!talent.touch_of_the_magi||cooldown.touch_of_the_magi.remains>12)&buff.arcane_surge.down&fight_remains>15\nactions.rotation+=/presence_of_mind,if=buff.arcane_charge.stack<3&target.health.pct<35&talent.arcane_bombardment\nactions.rotation+=/arcane_blast,if=buff.presence_of_mind.up&target.health.pct<35&talent.arcane_bombardment&buff.arcane_charge.stack<3\nactions.rotation+=/arcane_missiles,if=buff.clearcasting.react&buff.clearcasting.stack=buff.clearcasting.max_stack\nactions.rotation+=/nether_tempest,if=(refreshable||!ticking)&buff.arcane_charge.stack=buff.arcane_charge.max_stack&(buff.temporal_warp.up||mana.pct<10||!talent.shifting_power)&buff.arcane_surge.down&fight_remains>=12\nactions.rotation+=/arcane_barrage,if=buff.arcane_charge.stack=buff.arcane_charge.max_stack&mana.pct<50&!talent.evocation&fight_remains>20\nactions.rotation+=/arcane_barrage,if=buff.arcane_charge.stack=buff.arcane_charge.max_stack&mana.pct<70&variable.conserve_mana&buff.bloodlust.up&cooldown.touch_of_the_magi.remains>5&fight_remains>20\nactions.rotation+=/arcane_missiles,if=buff.clearcasting.react&buff.concentration.up&buff.arcane_charge.stack=buff.arcane_charge.max_stack\nactions.rotation+=/arcane_blast,if=buff.arcane_charge.stack=buff.arcane_charge.max_stack&buff.nether_precision.up\nactions.rotation+=/arcane_barrage,if=buff.arcane_charge.stack=buff.arcane_charge.max_stack&mana.pct<60&variable.conserve_mana&(!talent.rune_of_power||cooldown.rune_of_power.remains>5)&cooldown.touch_of_the_magi.remains>10&cooldown.evocation.remains>40&fight_remains>20\nactions.rotation+=/arcane_missiles,if=buff.clearcasting.react&buff.nether_precision.down\nactions.rotation+=/arcane_blast\nactions.rotation+=/arcane_barrage\n\nactions.spark_phase+=/nether_tempest,if=!ticking&variable.opener&buff.bloodlust.up,line_cd=45\nactions.spark_phase+=/rune_of_power\nactions.spark_phase+=/arcane_blast,if=variable.opener&cooldown.arcane_surge.ready&buff.bloodlust.up&mana>=variable.opener_min_mana&buff.rune_of_power.remains>gcd.max*4\nactions.spark_phase+=/arcane_missiles,if=variable.opener&buff.bloodlust.up&buff.clearcasting.react&buff.clearcasting.stack>=2&cooldown.radiant_spark.remains<5&buff.nether_precision.down,chain=1\nactions.spark_phase+=/arcane_missiles,if=talent.arcane_harmony&buff.arcane_harmony.stack<15&((variable.opener&buff.bloodlust.up)||buff.clearcasting.react&cooldown.radiant_spark.remains<5)&cooldown.arcane_surge.remains<30,chain=1\nactions.spark_phase+=/radiant_spark\nactions.spark_phase+=/use_item,name=timebreaching_talon,if=cooldown.arcane_surge.remains<=(gcd.max*3)\n## Not supported by addon; cannot control if another player grants you Power Infusion.\n## actions.spark_phase+=/invoke_external_buff,name=power_infusion,if=prev_gcd.1.radiant_spark&cooldown.arcane_surge.remains<=(gcd.max*3)\nactions.spark_phase+=/nether_tempest,if=(prev_gcd.4.radiant_spark&cooldown.arcane_surge.remains<=execute_time)||!ticking&prev_gcd.5.radiant_spark\nactions.spark_phase+=/arcane_surge,if=(!talent.nether_tempest&prev_gcd.4.radiant_spark)||prev_gcd.1.nether_tempest\nactions.spark_phase+=/meteor,if=(talent.nether_tempest&prev_gcd.6.radiant_spark)||(!talent.nether_tempest&prev_gcd.5.radiant_spark)\nactions.spark_phase+=/arcane_blast,if=cast_time>=gcd&execute_time<debuff.radiant_spark_vulnerability.remains&(!talent.arcane_bombardment||target.health.pct>=35)&(talent.nether_tempest&prev_gcd.6.radiant_spark||!talent.nether_tempest&prev_gcd.5.radiant_spark)&!talent.meteor\n## actions.spark_phase+=/wait,sec=0.05,if=!talent.meteor&(talent.nether_tempest&prev_gcd.6.radiant_spark)||(!talent.nether_tempest&prev_gcd.5.radiant_spark),line_cd=15\nactions.spark_phase+=/arcane_barrage,if=debuff.radiant_spark_vulnerability.stack=4\nactions.spark_phase+=/touch_of_the_magi,use_off_gcd=1,if=prev_gcd.1.arcane_barrage&(action.arcane_barrage.in_flight_remains<=0.2||gcd.remains<=0.2)\nactions.spark_phase+=/arcane_blast\nactions.spark_phase+=/arcane_barrage\n\nactions.standard_cooldowns=arcane_surge,if=buff.arcane_charge.stack=buff.arcane_charge.max_stack\nactions.standard_cooldowns+=/nether_tempest,if=prev_gcd.1.arcane_surge&talent.arcane_echo\nactions.standard_cooldowns+=/meteor,if=buff.arcane_surge.up&cooldown.touch_of_the_magi.ready\nactions.standard_cooldowns+=/arcane_barrage,if=buff.arcane_surge.up&cooldown.touch_of_the_magi.ready\nactions.standard_cooldowns+=/rune_of_power,if=cooldown.touch_of_the_magi.remains<=(gcd.max*2)&buff.arcane_charge.stack=buff.arcane_charge.max_stack\nactions.standard_cooldowns+=/meteor,if=cooldown.touch_of_the_magi.remains<=(gcd.max*2)&buff.arcane_charge.stack=buff.arcane_charge.max_stack\nactions.standard_cooldowns+=/touch_of_the_magi,use_off_gcd=1,if=prev_gcd.1.arcane_barrage\n\nactions.touch_phase=variable,name=conserve_mana,op=set,if=debuff.touch_of_the_magi.remains>9,value=1-variable.conserve_mana\nactions.touch_phase+=/meteor\nactions.touch_phase+=/presence_of_mind,if=(!talent.arcane_bombardment||target.health.pct>35)&buff.arcane_surge.up&debuff.touch_of_the_magi.remains<=gcd.max\nactions.touch_phase+=/arcane_blast,if=buff.presence_of_mind.up&buff.arcane_charge.stack=buff.arcane_charge.max_stack\nactions.touch_phase+=/arcane_barrage,if=(buff.arcane_harmony.up||(talent.arcane_bombardment&target.health.pct<35))&debuff.touch_of_the_magi.remains<=gcd.max\nactions.touch_phase+=/arcane_missiles,if=buff.clearcasting.stack>1&talent.conjure_mana_gem&cooldown.use_mana_gem.ready,chain=1\nactions.touch_phase+=/arcane_blast,if=buff.nether_precision.up\nactions.touch_phase+=/arcane_missiles,if=buff.clearcasting.react&(debuff.touch_of_the_magi.remains>execute_time||!talent.presence_of_mind),chain=1,interrupt_if=debuff.touch_of_the_magi.up&active_enemies<variable.aoe_target_count&debuff.touch_of_the_magi.up&gcd.remains=0&(buff.arcane_surge.up||talent.conjure_mana_gem||set_bonus.tier30_4pc)&mana.pct>30\nactions.touch_phase+=/arcane_blast\nactions.touch_phase+=/arcane_barrage",
},
["Arms"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230508,
["author"] = "SimulationCraft",
["desc"] = "2023-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",
}, -- [1]
{
["action"] = "mortal_strike",
["enabled"] = true,
}, -- [2]
{
["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",
}, -- [3]
{
["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",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max || cooldown.warbreaker.remains <= gcd.max",
["action"] = "spear_of_bastion",
}, -- [5]
{
["action"] = "warbreaker",
["enabled"] = true,
}, -- [6]
{
["action"] = "colossus_smash",
["enabled"] = true,
}, -- [7]
{
["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",
}, -- [8]
{
["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",
}, -- [9]
{
["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",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "buff.sudden_death.react",
["action"] = "execute",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "talent.sonic_boom.enabled",
["action"] = "shockwave",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "talent.anger_management.enabled || talent.test_of_might.enabled & debuff.colossus_smash.up",
["action"] = "ignore_pain",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "talent.storm_of_swords.enabled & talent.battlelord.enabled & rage.pct > 80 & debuff.colossus_smash.up",
["action"] = "whirlwind",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "charges = 2 & ! talent.battlelord.enabled & ( debuff.colossus_smash.down || rage.pct < 25 ) || talent.battlelord.enabled",
["action"] = "overpower",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "talent.storm_of_swords.enabled || talent.fervor_of_battle.enabled & active_enemies > 1",
["action"] = "whirlwind",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "talent.battlelord.enabled & talent.blood_and_thunder.enabled",
["action"] = "thunder_clap",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "debuff.colossus_smash.down & rage.pct < 50 & ! talent.battlelord.enabled || rage.pct < 25",
["action"] = "overpower",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "buff.merciless_bonegrinder.up",
["action"] = "whirlwind",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "set_bonus.tier29_2pc & ! talent.crushing_force.enabled",
["action"] = "cleave",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "rage > 30 & ( ! talent.fervor_of_battle.enabled || talent.fervor_of_battle.enabled & active_enemies = 1 )",
["action"] = "slam",
}, -- [21]
{
["action"] = "bladestorm",
["enabled"] = true,
}, -- [22]
{
["action"] = "arcane_torrent",
["enabled"] = true,
}, -- [23]
{
["action"] = "cleave",
["enabled"] = true,
}, -- [24]
{
["action"] = "wrecking_throw",
["enabled"] = true,
}, -- [25]
{
["enabled"] = true,
["criteria"] = "remains < duration * 0.3",
["action"] = "rend",
}, -- [26]
},
["default"] = {
{
["enabled"] = true,
["criteria"] = "time <= 0.5 || movement.distance > 8",
["action"] = "charge",
}, -- [1]
{
["action"] = "pummel",
["enabled"] = true,
}, -- [2]
{
["action"] = "spell_reflection",
["enabled"] = true,
}, -- [3]
{
["enabled"] = true,
["criteria"] = "gcd.remains = 0 & debuff.colossus_smash.remains > 8 || boss & fight_remains < 25",
["action"] = "potion",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "cooldown.avatar.remains < 3",
["action"] = "algethar_puzzle_box",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "buff.avatar.up",
["action"] = "irideus_fragment",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "! buff.avatar.up & ! debuff.colossus_smash.up",
["action"] = "manic_grieftorch",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "gcd.remains = 0 & debuff.colossus_smash.remains > 8 || boss & fight_remains < 25",
["action"] = "gladiators_badge",
}, -- [8]
{
["action"] = "use_items",
["enabled"] = true,
}, -- [9]
{
["enabled"] = true,
["criteria"] = "cooldown.mortal_strike.remains > 1.5 & rage < 50",
["action"] = "arcane_torrent",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "debuff.colossus_smash.down & cooldown.mortal_strike.remains",
["action"] = "lights_judgment",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "debuff.colossus_smash.down & cooldown.mortal_strike.remains",
["action"] = "bag_of_tricks",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "debuff.colossus_smash.remains > 6",
["action"] = "berserking",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "debuff.colossus_smash.up",
["action"] = "ancestral_call",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "debuff.colossus_smash.up",
["action"] = "blood_fury",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "debuff.colossus_smash.up",
["action"] = "ancestral_call",
}, -- [16]
{
["enabled"] = true,
["action"] = "run_action_list",
["strict"] = 1,
["criteria"] = "raid_event.adds.exists || active_enemies > 2",
["list_name"] = "hac",
}, -- [17]
{
["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",
}, -- [18]
{
["enabled"] = true,
["action"] = "run_action_list",
["strict"] = 1,
["criteria"] = "! raid_event.adds.exists",
["list_name"] = "single_target",
}, -- [19]
},
["precombat"] = {
{
["action"] = "battle_stance",
["enabled"] = true,
}, -- [1]
{
["action"] = "battle_shout",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["name"] = "algethar_puzzle_box",
["action"] = "algethar_puzzle_box",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "! talent.titans_torment.enabled & ! talent.blademasters_torment.enabled",
["action"] = "avatar",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "! talent.reckless_abandon.enabled",
["action"] = "recklessness",
}, -- [5]
},
["execute"] = {
{
["enabled"] = true,
["criteria"] = "spell_targets.whirlwind > 1",
["action"] = "sweeping_strikes",
}, -- [1]
{
["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",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "cooldown.colossus_smash.ready || debuff.colossus_smash.up || boss & fight_remains < 20",
["action"] = "avatar",
}, -- [3]
{
["action"] = "warbreaker",
["enabled"] = true,
}, -- [4]
{
["action"] = "colossus_smash",
["enabled"] = true,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "buff.test_of_might.up || ! talent.test_of_might.enabled & debuff.colossus_smash.up",
["action"] = "thunderous_roar",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "debuff.colossus_smash.up || buff.test_of_might.up",
["action"] = "spear_of_bastion",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "rage < 40",
["action"] = "skullsplitter",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "spell_targets.whirlwind > 2 & dot.deep_wounds.remains < gcd.max",
["action"] = "cleave",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "rage < 40 & buff.martial_prowess.stack < 2",
["action"] = "overpower",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "debuff.executioners_precision.stack = 2 || dot.deep_wounds.remains <= gcd.max",
["action"] = "mortal_strike",
}, -- [11]
{
["action"] = "execute",
["enabled"] = true,
}, -- [12]
{
["enabled"] = true,
["criteria"] = "talent.sonic_boom.enabled",
["action"] = "shockwave",
}, -- [13]
{
["action"] = "overpower",
["enabled"] = true,
}, -- [14]
{
["action"] = "bladestorm",
["enabled"] = true,
}, -- [15]
},
["hac"] = {
{
["enabled"] = true,
["criteria"] = "buff.juggernaut.up & buff.juggernaut.remains < gcd.max",
["action"] = "execute",
}, -- [1]
{
["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",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "active_enemies >= 2 & ( cooldown.bladestorm.remains > 15 || ! talent.bladestorm.enabled )",
["action"] = "sweeping_strikes",
}, -- [3]
{
["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",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in > 15 || talent.blademasters_torment.enabled & active_enemies > 1 || boss & fight_remains < 20",
["action"] = "avatar",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in > 22 || active_enemies > 1",
["action"] = "warbreaker",
}, -- [6]
{
["enabled"] = true,
["action"] = "colossus_smash",
["criteria"] = "( target.health.pct < 20 || talent.massacre.enabled & target.health.pct < 35 )",
["cycle_targets"] = 1,
}, -- [7]
{
["action"] = "colossus_smash",
["enabled"] = true,
}, -- [8]
{
["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",
}, -- [9]
{
["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",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "talent.unhinged.enabled & ( buff.test_of_might.up || ! talent.test_of_might.enabled & debuff.colossus_smash.up )",
["action"] = "bladestorm",
}, -- [11]
{
["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",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "active_enemies > 2 || ! talent.battlelord.enabled & buff.merciless_bonegrinder.up & cooldown.mortal_strike.remains > gcd.max",
["action"] = "cleave",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "active_enemies > 2 || talent.storm_of_swords.enabled & ( buff.merciless_bonegrinder.up || buff.hurricane.up )",
["action"] = "whirlwind",
}, -- [14]
{
["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",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "set_bonus.tier30_4pc",
["action"] = "mortal_strike",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "buff.sweeping_strikes.up & talent.dreadnaught.enabled",
["action"] = "overpower",
}, -- [17]
{
["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,
}, -- [18]
{
["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,
}, -- [19]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in > 15",
["action"] = "thunderous_roar",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "active_enemies > 2 & talent.sonic_boom.enabled",
["action"] = "shockwave",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "active_enemies = 1 & ( charges = 2 & ! talent.battlelord.enabled & ( debuff.colossus_smash.down || rage.pct < 25 ) || talent.battlelord.enabled )",
["action"] = "overpower",
}, -- [22]
{
["enabled"] = true,
["criteria"] = "active_enemies = 1 & ! talent.battlelord.enabled & rage.pct > 70",
["action"] = "slam",
}, -- [23]
{
["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",
}, -- [24]
{
["enabled"] = true,
["criteria"] = "active_enemies > 2",
["action"] = "thunder_clap",
}, -- [25]
{
["action"] = "mortal_strike",
["enabled"] = true,
}, -- [26]
{
["enabled"] = true,
["criteria"] = "active_enemies = 1 & dot.rend.remains < duration * 0.3",
["action"] = "rend",
}, -- [27]
{
["enabled"] = true,
["criteria"] = "talent.storm_of_swords.enabled || talent.fervor_of_battle.enabled & active_enemies > 1",
["action"] = "whirlwind",
}, -- [28]
{
["enabled"] = true,
["criteria"] = "! talent.crushing_force.enabled",
["action"] = "cleave",
}, -- [29]
{
["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",
}, -- [30]
{
["enabled"] = true,
["criteria"] = "talent.crushing_force.enabled & rage > 30 & ( talent.fervor_of_battle.enabled & active_enemies = 1 || ! talent.fervor_of_battle.enabled )",
["action"] = "slam",
}, -- [31]
{
["enabled"] = true,
["criteria"] = "talent.sonic_boom.enabled",
["action"] = "shockwave",
}, -- [32]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in > 30",
["action"] = "bladestorm",
}, -- [33]
{
["action"] = "wrecking_throw",
["enabled"] = true,
}, -- [34]
},
},
["version"] = 20230508,
["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 'precombat' required some automated changes.\nLine 4: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 4: Converted 'talent.blademasters_torment' to 'talent.blademasters_torment.enabled' (1x).\nLine 5: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.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",
["spec"] = 71,
["profile"] = "actions.precombat+=/battle_stance\nactions.precombat+=/battle_shout\nactions.precombat+=/use_item,name=algethar_puzzle_box\nactions.precombat+=/avatar,if=!talent.titans_torment&!talent.blademasters_torment\nactions.precombat+=/recklessness,if=!talent.reckless_abandon\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+=/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.remains<gcd\nactions.execute+=/overpower,if=rage<40&buff.martial_prowess.stack<2\nactions.execute+=/mortal_strike,if=debuff.executioners_precision.stack=2||dot.deep_wounds.remains<=gcd\nactions.execute+=/execute\nactions.execute+=/shockwave,if=talent.sonic_boom\nactions.execute+=/overpower\nactions.execute+=/bladestorm\n\nactions.hac+=/execute,if=buff.juggernaut.up&buff.juggernaut.remains<gcd\nactions.hac+=/thunder_clap,if=active_enemies>2&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.remains<dot.rend.duration*0.85\nactions.hac+=/avatar,if=raid_event.adds.in>15||talent.blademasters_torment&active_enemies>1||boss&fight_remains<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.remains<duration*0.3\nactions.hac+=/whirlwind,if=talent.storm_of_swords||talent.fervor_of_battle&active_enemies>1\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.remains<dot.rend.duration*0.85\nactions.single_target+=/avatar,if=talent.warlords_torment&rage.pct<33&(cooldown.colossus_smash.ready||debuff.colossus_smash.up||buff.test_of_might.up)||!talent.warlords_torment&(cooldown.colossus_smash.ready||debuff.colossus_smash.up)\nactions.single_target+=/spear_of_bastion,if=cooldown.colossus_smash.remains<=gcd||cooldown.warbreaker.remains<=gcd\nactions.single_target+=/warbreaker\nactions.single_target+=/colossus_smash\nactions.single_target+=/thunderous_roar,if=buff.test_of_might.up||talent.test_of_might&debuff.colossus_smash.up&rage.pct<33||!talent.test_of_might&debuff.colossus_smash.up\nactions.single_target+=/bladestorm,if=talent.hurricane&(buff.test_of_might.up||!talent.test_of_might&debuff.colossus_smash.up)||talent.unhinged&(buff.test_of_might.up||!talent.test_of_might&debuff.colossus_smash.up)\nactions.single_target+=/skullsplitter,if=talent.tide_of_blood&dot.rend.remains&(debuff.colossus_smash.up||cooldown.colossus_smash.remains>gcd*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<duration*0.3",
},
["Protection Warrior"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230508,
["spec"] = 73,
["desc"] = "2023-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=buff.avatar.down||!talent.immovable_object\nactions+=/blood_fury\nactions+=/berserking\nactions+=/arcane_torrent\nactions+=/lights_judgment\nactions+=/fireblood\nactions+=/ancestral_call\nactions+=/bag_of_tricks\nactions+=/potion,if=buff.avatar.up||buff.avatar.up&target.health.pct<=20\nactions+=/ignore_pain,if=target.health.pct>=20&(rage.deficit<=15&cooldown.shield_slam.ready||rage.deficit<=40&cooldown.shield_charge.ready&talent.champions_bulwark.enabled||rage.deficit<=20&cooldown.shield_charge.ready||rage.deficit<=30&cooldown.demoralizing_shout.ready&talent.booming_voice.enabled||rage.deficit<=20&cooldown.avatar.ready||rage.deficit<=45&cooldown.demoralizing_shout.ready&talent.booming_voice.enabled&buff.last_stand.up&talent.unnerving_focus.enabled||rage.deficit<=30&cooldown.avatar.ready&buff.last_stand.up&talent.unnerving_focus.enabled||rage.deficit<=20||rage.deficit<=40&cooldown.shield_slam.ready&buff.violent_outburst.up&talent.heavy_repercussions.enabled&talent.impenetrable_wall.enabled||rage.deficit<=55&cooldown.shield_slam.ready&buff.violent_outburst.up&buff.last_stand.up&talent.unnerving_focus.enabled&talent.heavy_repercussions.enabled&talent.impenetrable_wall.enabled||rage.deficit<=17&cooldown.shield_slam.ready&talent.heavy_repercussions.enabled||rage.deficit<=18&cooldown.shield_slam.ready&talent.impenetrable_wall.enabled),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"] = 20230508,
["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 7: Converted 'talent.immovable_object' to 'talent.immovable_object.enabled' (1x).\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",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.violent_outburst.up & spell_targets.thunderclap > 5 & buff.avatar.up & talent.unstoppable_force.enabled",
["action"] = "thunder_clap",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "rage >= 70 & talent.seismic_reverberation.enabled & spell_targets.revenge >= 3",
["action"] = "revenge",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "rage <= 60 || buff.violent_outburst.up & spell_targets.thunderclap <= 4",
["action"] = "shield_slam",
}, -- [4]
{
["action"] = "thunder_clap",
["enabled"] = true,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "rage >= 30 || rage >= 40 & talent.barbaric_training.enabled",
["action"] = "revenge",
}, -- [6]
},
["generic"] = {
{
["action"] = "shield_slam",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["criteria"] = "dot.rend.remains <= 1 & buff.violent_outburst.down",
["action"] = "thunder_clap",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.sudden_death.up & talent.sudden_death.enabled",
["action"] = "execute",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "spell_targets.revenge = 1 & rage >= 50",
["action"] = "execute",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "( spell_targets.thunder_clap > 1 || cooldown.shield_slam.remains & ! buff.violent_outburst.up )",
["action"] = "thunder_clap",
}, -- [5]
{
["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",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "spell_targets.revenge = 1",
["action"] = "execute",
}, -- [7]
{
["action"] = "revenge",
["enabled"] = true,
}, -- [8]
{
["enabled"] = true,
["criteria"] = "( spell_targets.thunder_clap >= 1 || cooldown.shield_slam.remains & buff.violent_outburst.up )",
["action"] = "thunder_clap",
}, -- [9]
{
["action"] = "devastate",
["enabled"] = true,
}, -- [10]
},
["default"] = {
{
["enabled"] = true,
["criteria"] = "time = 0",
["action"] = "shield_charge",
["description"] = "Executed every time the actor is available.",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "time = 0",
["action"] = "charge",
}, -- [2]
{
["action"] = "pummel",
["enabled"] = true,
}, -- [3]
{
["action"] = "spell_reflection",
["enabled"] = true,
}, -- [4]
{
["action"] = "use_items",
["enabled"] = true,
}, -- [5]
{
["action"] = "avatar",
["enabled"] = true,
}, -- [6]
{
["enabled"] = true,
["criteria"] = "buff.avatar.down || ! talent.immovable_object.enabled",
["action"] = "shield_wall",
["description"] = "Usage of Shield Wall is governed by specialization settings, see /hekili > Protection.",
}, -- [7]
{
["action"] = "blood_fury",
["enabled"] = true,
}, -- [8]
{
["action"] = "berserking",
["enabled"] = true,
}, -- [9]
{
["action"] = "arcane_torrent",
["enabled"] = true,
}, -- [10]
{
["action"] = "lights_judgment",
["enabled"] = true,
}, -- [11]
{
["action"] = "fireblood",
["enabled"] = true,
}, -- [12]
{
["action"] = "ancestral_call",
["enabled"] = true,
}, -- [13]
{
["action"] = "bag_of_tricks",
["enabled"] = true,
}, -- [14]
{
["enabled"] = true,
["criteria"] = "buff.avatar.up || buff.avatar.up & target.health.pct <= 20",
["action"] = "potion",
}, -- [15]
{
["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,
}, -- [16]
{
["enabled"] = true,
["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",
["description"] = "Usage of Last Stand is also governed by specialization settings, see /hekili > Protection.",
}, -- [17]
{
["enabled"] = true,
["description"] = "Usage of Rallying Cry is governed by specialization settings, see /hekili > Protection.",
["action"] = "rallying_cry",
}, -- [18]
{
["action"] = "ravager",
["enabled"] = true,
}, -- [19]
{
["enabled"] = true,
["criteria"] = "talent.booming_voice.enabled",
["action"] = "demoralizing_shout",
}, -- [20]
{
["action"] = "spear_of_bastion",
["enabled"] = true,
}, -- [21]
{
["action"] = "thunderous_roar",
["enabled"] = true,
}, -- [22]
{
["enabled"] = true,
["criteria"] = "talent.sonic_boom.enabled & buff.avatar.up & talent.unstoppable_force.enabled & ! talent.rumbling_earth.enabled",
["action"] = "shockwave",
}, -- [23]
{
["action"] = "shield_charge",
["enabled"] = true,
}, -- [24]
{
["enabled"] = true,
["criteria"] = "buff.shield_block.duration <= 18 & talent.enduring_defenses.enabled || buff.shield_block.duration <= 12",
["action"] = "shield_block",
}, -- [25]
{
["enabled"] = true,
["action"] = "run_action_list",
["strict"] = 1,
["criteria"] = "spell_targets.thunder_clap >= 3",
["list_name"] = "aoe",
}, -- [26]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "generic",
}, -- [27]
},
["precombat"] = {
{
["enabled"] = true,
["criteria"] = "buff.stance.down",
["action"] = "defensive_stance",
}, -- [1]
{
["action"] = "battle_shout",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["name"] = "algethar_puzzle_box",
["action"] = "algethar_puzzle_box",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "! talent.titans_torment.enabled",
["action"] = "avatar",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "! talent.reckless_abandon.enabled",
["action"] = "recklessness",
}, -- [5]
},
},
["author"] = "SimulationCraft",
},
["Retribution"] = {
["builtIn"] = true,
["date"] = 20230330,
["spec"] = 70,
["desc"] = "2023-02-21: Iterate on trinket timing (end of bossfight logic).\n\n2023-03-13: Edits to support finishers during Crusade procs from Retribution Aura.\n\n2023-03-21: 10.0.7 priority update.\n\n2023-03-28: Update potion end-of-fight usage to check for boss.",
["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_manual,value=trinket.1.is.manic_grieftorch\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.manic_grieftorch\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<?buff.crusade.remains,value_else=0,condition=talent.crusade\nactions+=/call_action_list,name=cooldowns\nactions+=/call_action_list,name=generators\n\nactions.cooldowns=potion,if=buff.avenging_wrath.up||buff.crusade.up&buff.crusade.stack=10||boss&fight_remains<25\nactions.cooldowns+=/lights_judgment,if=spell_targets.lights_judgment>=2||!raid_event.adds.exists||raid_event.adds.in>75||raid_event.adds.up\nactions.cooldowns+=/fireblood,if=buff.avenging_wrath.up||buff.crusade.up&buff.crusade.stack=10\nactions.cooldowns+=/use_item,name=algethar_puzzle_box,if=(cooldown.avenging_wrath.remains<5&!talent.crusade||variable.time_to_crusade<5&talent.crusade)&(holy_power>=5&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&(!variable.trinket_1_manual||buff.avenging_wrath.down&buff.crusade.down)&(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&(!variable.trinket_2_manual||buff.avenging_wrath.down&buff.crusade.down)&(trinket.1.cooldown.remains||!variable.trinket_1_buffs||!buff.crusade.up&cooldown.crusade.remains>20||!buff.avenging_wrath.up&cooldown.avenging_wrath.remains>20)\nactions.cooldowns+=/shield_of_vengeance,if=fight_remains>15\nactions.cooldowns+=/avenging_wrath,if=holy_power>=4&time<5||holy_power>=3&time>5||holy_power>=2&talent.divine_auxiliary&(cooldown.execution.remains=0||cooldown.final_reckoning.remains=0)\nactions.cooldowns+=/crusade,if=buff.crusade.remains<gcd.max&(holy_power>=5&time<5||holy_power>=3&time>5)\nactions.cooldowns+=/execution_sentence,if=(!buff.crusade.up&cooldown.crusade.remains>10||buff.crusade.stack=10||cooldown.avenging_wrath.remains>10)&(holy_power>=3||holy_power>=2&talent.divine_auxiliary)&target.time_to_die>8\nactions.cooldowns+=/final_reckoning,if=(holy_power>=4&time<8||holy_power>=3&time>=8||holy_power>=2&talent.divine_auxiliary)&(cooldown.avenging_wrath.remains>gcd||cooldown.crusade.remains&(!buff.crusade.up||buff.crusade.stack>=10))&(time_to_hpg>0||holy_power=5||holy_power>=2&talent.divine_auxiliary)&(!raid_event.adds.exists||raid_event.adds.up||raid_event.adds.in>40)\n\nactions.finishers+=/variable,name=ds_castable,value=spell_targets.divine_storm>=2||buff.empyrean_power.up\nactions.finishers+=/divine_storm,if=variable.ds_castable&!buff.empyrean_legacy.up&!(buff.divine_arbiter.up&buff.divine_arbiter.stack>24)&((!talent.crusade||cooldown.crusade.remains>gcd*3)&(!talent.execution_sentence||talent.divine_auxiliary||target.time_to_die<8||cooldown.execution_sentence.remains>gcd*2)&(!talent.final_reckoning||talent.divine_auxiliary||cooldown.final_reckoning.remains>gcd*2)||buff.crusade.up&buff.crusade.stack<10)\nactions.finishers+=/justicars_vengeance,if=(!talent.crusade||cooldown.crusade.remains>gcd*3)&(!talent.execution_sentence||talent.divine_auxiliary||target.time_to_die<8||cooldown.execution_sentence.remains>gcd*2)&(!talent.final_reckoning||talent.divine_auxiliary||cooldown.final_reckoning.remains>gcd*2)||buff.crusade.up&buff.crusade.stack<10\nactions.finishers+=/templars_verdict,if=(!talent.crusade||cooldown.crusade.remains>gcd*3)&(!talent.execution_sentence||talent.divine_auxiliary||target.time_to_die<8||cooldown.execution_sentence.remains>gcd*2)&(!talent.final_reckoning||talent.divine_auxiliary||cooldown.final_reckoning.remains>gcd*2)||buff.crusade.up&buff.crusade.stack<10\n\nactions.generators+=/call_action_list,name=finishers,strict=1,if=holy_power=5||(debuff.judgment.up||holy_power=4)&buff.divine_resonance.up\nactions.generators+=/wake_of_ashes,if=holy_power<=2&(cooldown.avenging_wrath.remains||cooldown.crusade.remains)&(!talent.execution_sentence||cooldown.execution_sentence.remains>4||target.time_to_die<8)&(!raid_event.adds.exists||raid_event.adds.in>20||raid_event.adds.up)\nactions.generators+=/divine_toll,if=holy_power<=2&!debuff.judgment.up&(!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+=/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<gcd&spell_targets.divine_storm>=2\nactions.generators+=/judgment,if=!debuff.judgment.up&(holy_power<=3||!talent.boundless_judgment)&spell_targets.divine_storm>=2\nactions.generators+=/blade_of_justice,if=(holy_power<=3||!talent.holy_blade)&spell_targets.divine_storm>=2\nactions.generators+=/hammer_of_wrath,if=(spell_targets.divine_storm<2||!talent.blessed_champion)&(holy_power<=3||target.health.pct>20||!talent.vanguards_momentum)\nactions.generators+=/templar_slash,if=buff.templar_strikes.remains<gcd\nactions.generators+=/blade_of_justice,if=holy_power<=3||!talent.holy_blade\nactions.generators+=/judgment,if=!debuff.judgment.up&(holy_power<=3||!talent.boundless_judgment)\nactions.generators+=/call_action_list,name=finishers,strict=1,if=(target.health.pct<=20||buff.avenging_wrath.up||buff.crusade.up||buff.empyrean_power.up)\nactions.generators+=/consecration,if=!consecration.up&spell_targets.divine_storm>=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"] = 20230330,
["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.is.manic_grieftorch' to 'trinket.t1.is.manic_grieftorch' (1x).\nLine 6: Converted 'trinket.2.is.manic_grieftorch' to 'trinket.t2.is.manic_grieftorch' (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.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.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.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 7: 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 8: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 8: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 8: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 8: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 8: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 8: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 8: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 8: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 8: 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 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))'.\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 10: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 12: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 13: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 13: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\n\nThe import for 'finishers' required some automated changes.\nLine 2: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 2: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 2: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 2: Converted 'talent.final_reckoning' to 'talent.final_reckoning.enabled' (1x).\nLine 2: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.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 3: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 3: Converted 'talent.final_reckoning' to 'talent.final_reckoning.enabled' (1x).\nLine 3: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 4: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 4: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 4: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 4: Converted 'talent.final_reckoning' to 'talent.final_reckoning.enabled' (1x).\nLine 4: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\n\nThe import for 'generators' required some automated changes.\nLine 2: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 6: Converted 'talent.boundless_judgment' to 'talent.boundless_judgment.enabled' (1x).\nLine 7: Converted 'talent.holy_blade' to 'talent.holy_blade.enabled' (1x).\nLine 8: Converted 'talent.blessed_champion' to 'talent.blessed_champion.enabled' (1x).\nLine 8: Converted 'talent.vanguards_momentum' to 'talent.vanguards_momentum.enabled' (1x).\nLine 10: Converted 'talent.holy_blade' to 'talent.holy_blade.enabled' (1x).\nLine 11: Converted 'talent.boundless_judgment' to 'talent.boundless_judgment.enabled' (1x).\nLine 19: Converted 'talent.boundless_judgment' to 'talent.boundless_judgment.enabled' (1x).\nLine 20: 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",
}, -- [1]
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "time_to_crusade",
["criteria"] = "talent.crusade.enabled",
["value_else"] = "0",
["value"] = "cooldown.crusade.remains <? buff.crusade.remains",
}, -- [2]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "cooldowns",
}, -- [3]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "generators",
}, -- [4]
},
["precombat"] = {
{
["enabled"] = true,
["criteria"] = "talent.final_reckoning.enabled",
["action"] = "arcane_torrent",
}, -- [1]
{
["action"] = "shield_of_vengeance",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff",
["var_name"] = "trinket_1_buffs",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff",
["var_name"] = "trinket_2_buffs",
}, -- [4]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t1.is.manic_grieftorch",
["var_name"] = "trinket_1_manual",
}, -- [5]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t2.is.manic_grieftorch",
["var_name"] = "trinket_2_manual",
}, -- [6]
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "trinket_1_sync",
["criteria"] = "variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % cooldown.crusade.duration = 0 || cooldown.crusade.duration % trinket.t1.cooldown.duration = 0 || trinket.t1.cooldown.duration % cooldown.avenging_wrath.duration = 0 || cooldown.avenging_wrath.duration % trinket.t1.cooldown.duration = 0 )",
["value_else"] = "0.5",
["value"] = "1",
}, -- [7]
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "trinket_2_sync",
["criteria"] = "variable.trinket_2_buffs & ( trinket.t2.cooldown.duration % cooldown.crusade.duration = 0 || cooldown.crusade.duration % trinket.t2.cooldown.duration = 0 || trinket.t2.cooldown.duration % cooldown.avenging_wrath.duration = 0 || cooldown.avenging_wrath.duration % trinket.t2.cooldown.duration = 0 )",
["value_else"] = "0.5",
["value"] = "1",
}, -- [8]
{
["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",
}, -- [9]
},
["generators"] = {
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "holy_power = 5 || ( debuff.judgment.up || holy_power = 4 ) & buff.divine_resonance.up",
["list_name"] = "finishers",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "holy_power <= 2 & ( cooldown.avenging_wrath.remains || cooldown.crusade.remains ) & ( ! talent.execution_sentence.enabled || cooldown.execution_sentence.remains > 4 || target.time_to_die < 8 ) & ( ! raid_event.adds.exists || raid_event.adds.in > 20 || raid_event.adds.up )",
["action"] = "wake_of_ashes",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "holy_power <= 2 & ! debuff.judgment.up & ( ! 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",
}, -- [3]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "holy_power >= 3 & buff.crusade.up & buff.crusade.stack < 10",
["list_name"] = "finishers",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.templar_strikes.remains < gcd.max & spell_targets.divine_storm >= 2",
["action"] = "templar_slash",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "! debuff.judgment.up & ( holy_power <= 3 || ! talent.boundless_judgment.enabled ) & spell_targets.divine_storm >= 2",
["action"] = "judgment",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "( holy_power <= 3 || ! talent.holy_blade.enabled ) & spell_targets.divine_storm >= 2",
["action"] = "blade_of_justice",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "( spell_targets.divine_storm < 2 || ! talent.blessed_champion.enabled ) & ( holy_power <= 3 || target.health.pct > 20 || ! talent.vanguards_momentum.enabled )",
["action"] = "hammer_of_wrath",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "buff.templar_strikes.remains < gcd.max",
["action"] = "templar_slash",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "holy_power <= 3 || ! talent.holy_blade.enabled",
["action"] = "blade_of_justice",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "! debuff.judgment.up & ( holy_power <= 3 || ! talent.boundless_judgment.enabled )",
["action"] = "judgment",
}, -- [11]
{
["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",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "! consecration.up & spell_targets.divine_storm >= 2",
["action"] = "consecration",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "spell_targets.divine_storm >= 2",
["action"] = "divine_hammer",
}, -- [14]
{
["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",
}, -- [15]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "finishers",
}, -- [16]
{
["action"] = "templar_slash",
["enabled"] = true,
}, -- [17]
{
["action"] = "templar_strike",
["enabled"] = true,
}, -- [18]
{
["enabled"] = true,
["criteria"] = "holy_power <= 3 || ! talent.boundless_judgment.enabled",
["action"] = "judgment",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "holy_power <= 3 || target.health.pct > 20 || ! talent.vanguards_momentum.enabled",
["action"] = "hammer_of_wrath",
}, -- [20]
{
["action"] = "crusader_strike",
["enabled"] = true,
}, -- [21]
{
["action"] = "arcane_torrent",
["enabled"] = true,
}, -- [22]
{
["action"] = "consecration",
["enabled"] = true,
}, -- [23]
{
["action"] = "divine_hammer",
["enabled"] = true,
}, -- [24]
},
["finishers"] = {
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "spell_targets.divine_storm >= 2 || buff.empyrean_power.up",
["var_name"] = "ds_castable",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "variable.ds_castable & ! buff.empyrean_legacy.up & ! ( buff.divine_arbiter.up & buff.divine_arbiter.stack > 24 ) & ( ( ! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 ) & ( ! talent.execution_sentence.enabled || talent.divine_auxiliary.enabled || target.time_to_die < 8 || cooldown.execution_sentence.remains > gcd.max * 2 ) & ( ! talent.final_reckoning.enabled || talent.divine_auxiliary.enabled || cooldown.final_reckoning.remains > gcd.max * 2 ) || buff.crusade.up & buff.crusade.stack < 10 )",
["action"] = "divine_storm",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "( ! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 ) & ( ! talent.execution_sentence.enabled || talent.divine_auxiliary.enabled || target.time_to_die < 8 || cooldown.execution_sentence.remains > gcd.max * 2 ) & ( ! talent.final_reckoning.enabled || talent.divine_auxiliary.enabled || cooldown.final_reckoning.remains > gcd.max * 2 ) || buff.crusade.up & buff.crusade.stack < 10",
["action"] = "justicars_vengeance",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "( ! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 ) & ( ! talent.execution_sentence.enabled || talent.divine_auxiliary.enabled || target.time_to_die < 8 || cooldown.execution_sentence.remains > gcd.max * 2 ) & ( ! talent.final_reckoning.enabled || talent.divine_auxiliary.enabled || cooldown.final_reckoning.remains > gcd.max * 2 ) || buff.crusade.up & buff.crusade.stack < 10",
["action"] = "templars_verdict",
}, -- [4]
},
["cooldowns"] = {
{
["enabled"] = true,
["criteria"] = "buff.avenging_wrath.up || buff.crusade.up & buff.crusade.stack = 10 || boss & fight_remains < 25",
["action"] = "potion",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "spell_targets.lights_judgment >= 2 || ! raid_event.adds.exists || raid_event.adds.in > 75 || raid_event.adds.up",
["action"] = "lights_judgment",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.avenging_wrath.up || buff.crusade.up & buff.crusade.stack = 10",
["action"] = "fireblood",
}, -- [3]
{
["enabled"] = true,
["action"] = "algethar_puzzle_box",
["criteria"] = "( cooldown.avenging_wrath.remains < 5 & ! talent.crusade.enabled || variable.time_to_crusade < 5 & talent.crusade.enabled ) & ( holy_power >= 5 & time < 5 || holy_power >= 3 & time > 5 )",
["name"] = "algethar_puzzle_box",
}, -- [4]
{
["enabled"] = true,
["action"] = "trinket1",
["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",
["slot"] = "trinket1",
}, -- [5]
{
["enabled"] = true,
["action"] = "trinket2",
["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",
["slot"] = "trinket2",
}, -- [6]
{
["enabled"] = true,
["action"] = "trinket1",
["criteria"] = "! variable.trinket_1_buffs & ( ! variable.trinket_1_manual || buff.avenging_wrath.down & buff.crusade.down ) & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs || ! buff.crusade.up & cooldown.crusade.remains > 20 || ! buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 20 )",
["slot"] = "trinket1",
}, -- [7]
{
["enabled"] = true,
["action"] = "trinket2",
["criteria"] = "! variable.trinket_2_buffs & ( ! variable.trinket_2_manual || buff.avenging_wrath.down & buff.crusade.down ) & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs || ! buff.crusade.up & cooldown.crusade.remains > 20 || ! buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 20 )",
["slot"] = "trinket2",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "fight_remains > 15",
["action"] = "shield_of_vengeance",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "holy_power >= 4 & time < 5 || holy_power >= 3 & time > 5 || holy_power >= 2 & talent.divine_auxiliary.enabled & ( cooldown.execution.remains = 0 || cooldown.final_reckoning.remains = 0 )",
["action"] = "avenging_wrath",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "buff.crusade.remains < gcd.max & ( holy_power >= 5 & time < 5 || holy_power >= 3 & time > 5 )",
["action"] = "crusade",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "( ! buff.crusade.up & cooldown.crusade.remains > 10 || buff.crusade.stack = 10 || cooldown.avenging_wrath.remains > 10 ) & ( holy_power >= 3 || holy_power >= 2 & talent.divine_auxiliary.enabled ) & target.time_to_die > 8",
["action"] = "execution_sentence",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "( holy_power >= 4 & time < 8 || holy_power >= 3 & time >= 8 || holy_power >= 2 & talent.divine_auxiliary.enabled ) & ( cooldown.avenging_wrath.remains > gcd.max || cooldown.crusade.remains & ( ! buff.crusade.up || buff.crusade.stack >= 10 ) ) & ( time_to_hpg > 0 || holy_power = 5 || holy_power >= 2 & talent.divine_auxiliary.enabled ) & ( ! raid_event.adds.exists || raid_event.adds.up || raid_event.adds.in > 40 )",
["action"] = "final_reckoning",
}, -- [13]
},
},
},
["Discipline"] = {
["builtIn"] = true,
["date"] = 20230506,
["spec"] = 256,
["desc"] = "2023-05-06: Minor updates related to Harsh Discipline.\n\n2023-05-03: Updates from SimC (extensive use of variables; may have a performance hit).",
["lists"] = {
["default"] = {
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "cooldowns",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! buff.twilight_equilibrium_holy_amp.up & ! buff.twilight_equilibrium_shadow_amp.up",
["var_name"] = "te_none",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "buff.twilight_equilibrium_shadow_amp.up || variable.te_none",
["var_name"] = "te_shadow",
["description"] = "Twilight Equilibrium is buffing shadow damage",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "buff.twilight_equilibrium_holy_amp.up || variable.te_none",
["var_name"] = "te_holy",
["description"] = "Twilight Equilibrium is buffing holy damage",
}, -- [4]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.shadow_covenant.enabled & talent.embrace_shadow.enabled",
["var_name"] = "long_scov",
["description"] = "Long Shadow covenant is enabled",
}, -- [5]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.shadow_covenant.enabled & ! talent.embrace_shadow.enabled",
["var_name"] = "short_scov",
["description"] = "Short shadow covenant is enabled",
}, -- [6]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "0",
["var_name"] = "hd_stacks_required",
["description"] = "Harsh discipline has been stacked and is ready for shadow covenant. Zero stacks for no shadow covenant Full stacks for short results in one HD penance (4 total) Full stacks + 1 extra results in two HD penances (5 total)",
}, -- [7]
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "hd_stacks_required",
["value"] = "4",
["value_else"] = "5",
["criteria"] = "variable.short_scov",
}, -- [8]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "buff.harsh_discipline.stack + ( buff.harsh_discipline.max_stack * buff.harsh_discipline_ready.stack )",
["var_name"] = "hd_stacks_current",
}, -- [9]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! talent.harsh_discipline.enabled || ( variable.hd_stacks_current >= variable.hd_stacks_required )",
["var_name"] = "harsh_discipline_ready",
}, -- [10]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "( cooldown.shadow_covenant.up & variable.harsh_discipline_ready ) || buff.shadow_covenant.up",
["var_name"] = "can_enter_scov",
["description"] = "Ready to start shadow covenant phase",
}, -- [11]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "0",
["var_name"] = "shadow_spells_duration_max",
}, -- [12]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["value"] = "action.schism.execute_time",
["var_name"] = "shadow_spells_duration_max",
["criteria"] = "talent.schism.enabled",
}, -- [13]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["value"] = "2",
["var_name"] = "shadow_spells_duration_max",
["description"] = "penance",
}, -- [14]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["value"] = "action.mind_blast.execute_time",
["var_name"] = "shadow_spells_duration_max",
}, -- [15]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["value"] = "action.mind_blast.execute_time",
["var_name"] = "shadow_spells_duration_max",
["criteria"] = "talent.dark_indulgence.enabled",
}, -- [16]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["value"] = "action.shadow_word_death.execute_time",
["var_name"] = "shadow_spells_duration_max",
["criteria"] = "talent.shadow_word_death.enabled",
}, -- [17]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["value"] = "action.shadow_word_death.execute_time",
["var_name"] = "shadow_spells_duration_max",
["criteria"] = "talent.shadow_word_death.enabled & talent.death_and_madness.enabled & target.health.pct < 20",
}, -- [18]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["value"] = "action.mindgames.execute_time",
["var_name"] = "shadow_spells_duration_max",
["criteria"] = "talent.mindgames.enabled",
}, -- [19]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["value"] = "action.divine_star.execute_time",
["var_name"] = "shadow_spells_duration_max",
["criteria"] = "talent.divine_star.enabled",
}, -- [20]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["value"] = "action.halo.execute_time",
["var_name"] = "shadow_spells_duration_max",
["criteria"] = "talent.halo.enabled",
}, -- [21]
{
["enabled"] = true,
["op"] = "floor",
["action"] = "variable",
["value"] = "( buff.shadow_covenant.duration - variable.shadow_spells_duration_max ) / gcd.max",
["var_name"] = "max_te_holy",
["description"] = "(scov duration - shadow spells duration) / GCD time = estimate of holy spells we should need to use during the next scov window Long scov example: (15 - 12) / 1.5 = 2 GCDs to spend on holy spells Short scov example: (7 - 12) / 1.5 = -3.3 GCDs to spend on holy spells (none)",
}, -- [22]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "0",
["var_name"] = "remaining_te_holy",
["description"] = "Counting variable, the number of non-fractional remaining holy casts available",
}, -- [23]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["value"] = "variable.max_te_holy",
["var_name"] = "remaining_te_holy",
}, -- [24]
{
["enabled"] = true,
["op"] = "setif",
["description"] = "TODO: duration_expected is buggy on penance/dark reprimand, using a static reduction as a stand-in for now",
["value"] = "2",
["var_name"] = "expected_penance_reduction",
["action"] = "variable",
["value_else"] = "0",
["criteria"] = "talent.train_of_thought.enabled",
}, -- [25]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "0",
["var_name"] = "shadow_spells_duration",
["description"] = "Calculate how much cast time worth of shadow spells we have currently available. We use shadow_spells_duration to determine if we have time to weave in any holy spells to proc twilight equilibrium.",
}, -- [26]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "shadow_spells_duration",
["value"] = "action.schism.execute_time",
["description"] = "Schism",
["criteria"] = "cooldown.schism.up || ( cooldown.schism.remains < buff.shadow_covenant.remains )",
}, -- [27]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "shadow_spells_duration",
["value"] = "2",
["description"] = "Penance",
["criteria"] = "cooldown.penance.up || ( ( cooldown.penance.remains - variable.expected_penance_reduction ) < buff.shadow_covenant.remains )",
}, -- [28]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "shadow_spells_duration",
["value"] = "action.mindgames.execute_time",
["description"] = "Mindgames",
["criteria"] = "cooldown.mindgames.up || ( cooldown.mindgames.remains_expected < buff.shadow_covenant.remains )",
}, -- [29]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "shadow_spells_duration",
["value"] = "action.shadow_word_death.execute_time",
["description"] = "We always get the first SW:D",
["criteria"] = "cooldown.shadow_word_death.up || ( cooldown.shadow_word_death.remains < buff.shadow_covenant.remains )",
}, -- [30]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "shadow_spells_duration",
["value"] = "action.shadow_word_death.execute_time",
["description"] = "Second SW:D only when talented and target health in execute range",
["criteria"] = "( cooldown.shadow_word_death.up || ( cooldown.shadow_word_death.remains < buff.shadow_covenant.remains ) ) & ( target.health.pct < 20 || target.time_to_pct_20 < cooldown.shadow_word_death.remains ) & talent.death_and_madness.enabled",
}, -- [31]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "shadow_spells_duration",
["value"] = "action.mind_blast.charges * action.mind_blast.execute_time",
["description"] = "Add any whole charges of mind blast",
["criteria"] = "action.mind_blast.charges >= 1",
}, -- [32]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "shadow_spells_duration",
["value"] = "action.mind_blast.execute_time",
["description"] = "Add any fractional charges of mindblast that will recharge in time",
["criteria"] = "( ( action.mind_blast.charges_fractional >= 1 & action.mind_blast.charges_fractional < 2 ) & ( ( ( 1 - ( action.mind_blast.charges_fractional - 1 ) ) * action.mind_blast.recharge_time ) < buff.shadow_covenant.remains ) ) || ( ( action.mind_blast.charges_fractional < 1 ) & ( ( ( 1 - action.mind_blast.charges_fractional ) * action.mind_blast.recharge_time ) < buff.shadow_covenant.remains ) )",
}, -- [33]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "shadow_spells_duration",
["value"] = "action.divine_star.execute_time",
["description"] = "Divine Star",
["criteria"] = "cooldown.divine_star.up || ( cooldown.divine_star.remains < buff.shadow_covenant.remains )",
}, -- [34]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "shadow_spells_duration",
["value"] = "action.halo.execute_time",
["description"] = "Halo",
["criteria"] = "cooldown.halo.up || ( cooldown.halo.remains < buff.shadow_covenant.remains )",
}, -- [35]
{
["enabled"] = true,
["op"] = "setif",
["description"] = "Determine if we have enough scov time remaining to weave in a twilight equilibrium activation. If we don't have TE talented, always false. Using smite's execution time to represent a worst-case scenario.",
["value"] = "( buff.shadow_covenant.remains - variable.shadow_spells_duration ) > action.smite.execute_time",
["var_name"] = "should_te",
["action"] = "variable",
["value_else"] = "0",
["criteria"] = "talent.twilight_equilibrium.enabled",
}, -- [36]
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "hd_prep_time",
["value"] = "action.smite.execute_time * ( variable.hd_stacks_required - variable.hd_stacks_current )",
["value_else"] = "0",
["criteria"] = "! variable.harsh_discipline_ready",
}, -- [37]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "cooldown.shadow_covenant.remains + variable.hd_prep_time + action.shadow_covenant.execute_time + action.schism.execute_time",
["var_name"] = "next_penance_time",
["description"] = "First casts should always be HD prep->covenant->schism->HD dark reprimand",
}, -- [38]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_penance_time",
["value"] = "gcd.max",
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
["criteria"] = "variable.remaining_te_holy > 0",
}, -- [39]
{
["enabled"] = true,
["op"] = "sub",
["action"] = "variable",
["value"] = "1",
["var_name"] = "remaining_te_holy",
["description"] = "Reduce our counting variable",
}, -- [40]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "( cooldown.penance.duration - variable.expected_penance_reduction ) < variable.next_penance_time",
["var_name"] = "can_penance",
}, -- [41]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "variable.next_penance_time + 2",
["var_name"] = "next_swd_time",
["description"] = "Shadow Word: Death SW:D is better than other spells if we are in execute phase.",
}, -- [42]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_swd_time",
["value"] = "gcd.max",
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
["criteria"] = "variable.remaining_te_holy > 0",
}, -- [43]
{
["enabled"] = true,
["op"] = "sub",
["action"] = "variable",
["value"] = "1",
["var_name"] = "remaining_te_holy",
["description"] = "Reduce our counting variable",
}, -- [44]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_swd_time",
["value"] = "action.mindgames.execute_time",
["description"] = "indgame ette ha W: ren' xecut has n av hattere erception on' av xpiatio",
["criteria"] = "( ( talent.mindgames.enabled & talent.shattered_perceptions.enabled ) || ( talent.mindgames.enabled & ! talent.expiation.enabled ) ) & target.health.pct >= 20",
}, -- [45]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_swd_time",
["value"] = "action.mind_blast.execute_time",
["description"] = "Mind blast is better than SW:D if we aren't in execute",
["criteria"] = "target.health.pct >= 20",
}, -- [46]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_swd_time",
["value"] = "action.mind_blast.execute_time",
["description"] = "Second mindblast when talented",
["criteria"] = "target.health.pct >= 20 & talent.dark_indulgence.enabled",
}, -- [47]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_swd_time",
["value"] = "action.divine_star.execute_time",
["description"] = "Divine Star and halo are better than SW:D if we aren't in execute and don't have expiation",
["criteria"] = "talent.divine_star.enabled & target.health.pct >= 20 & ! talent.expiation.enabled",
}, -- [48]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["value"] = "action.halo.execute_time",
["var_name"] = "next_swd_time",
["criteria"] = "talent.halo.enabled & target.health.pct >= 20 & ! talent.expiation.enabled",
}, -- [49]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "cooldown.shadow_word_death.duration_expected < variable.next_swd_time",
["var_name"] = "can_swd",
}, -- [50]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "variable.next_penance_time + 2",
["var_name"] = "next_mind_blast_time",
["description"] = "Mindblast Mindblast is better than other spells if we aren't in execute phase",
}, -- [51]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_mind_blast_time",
["value"] = "gcd.max",
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
["criteria"] = "variable.remaining_te_holy > 0",
}, -- [52]
{
["enabled"] = true,
["op"] = "sub",
["action"] = "variable",
["value"] = "1",
["var_name"] = "remaining_te_holy",
["description"] = "Reduce our counting variable",
}, -- [53]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_mind_blast_time",
["value"] = "action.shadow_word_death.execute_time",
["description"] = "Add SW:D if we're in execute phase",
["criteria"] = "target.health.pct < 20",
}, -- [54]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_mind_blast_time",
["value"] = "action.shadow_word_death.execute_time",
["description"] = "Add a second SW:D if we have death and madness",
["criteria"] = "talent.death_and_madness.enabled & target.health.pct < 20",
}, -- [55]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_mind_blast_time",
["value"] = "action.mindgames.execute_time",
["description"] = "Add mindgames if we have it talented and don't have expiation",
["criteria"] = "talent.mindgames.enabled & ! talent.expiation.enabled",
}, -- [56]
{
["enabled"] = true,
["op"] = "setif",
["description"] = "TODO: This is a little bit simplistic, requiring both charges of mindblast to be available at the moment the first charge needs to be used. Slight optimization should be possible.",
["value"] = "( ( action.mind_blast.max_charges - ( action.mind_blast.charges_fractional - 1 ) ) * action.mind_blast.recharge_time ) < variable.next_mind_blast_time",
["var_name"] = "can_mind_blast",
["action"] = "variable",
["value_else"] = "0",
["criteria"] = "action.mind_blast.charges_fractional >= 1",
}, -- [57]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "variable.next_penance_time + 2",
["var_name"] = "next_mindgames_time",
["description"] = "Mindgames Mindgames is a better option than other spells if we aren't in execute and don't have expiation",
}, -- [58]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_mindgames_time",
["value"] = "gcd.max",
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
["criteria"] = "variable.remaining_te_holy > 0",
}, -- [59]
{
["enabled"] = true,
["op"] = "sub",
["action"] = "variable",
["value"] = "1",
["var_name"] = "remaining_te_holy",
["description"] = "Reduce our counting variable",
}, -- [60]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_mindgames_time",
["value"] = "action.shadow_word_death.execute_time",
["description"] = "SW:D is better than mindgames in execute phase, or outside of execute phase if we don't have shattered perceptions but do have expiation",
["criteria"] = "target.health.pct < 20 || ( talent.expiation.enabled & ! talent.shattered_perceptions.enabled )",
}, -- [61]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_mindgames_time",
["value"] = "action.shadow_word_death.execute_time",
["description"] = "Add a second SW:D if we have death and madness",
["criteria"] = "target.health.pct < 20 & talent.death_and_madness.enabled",
}, -- [62]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_mindgames_time",
["value"] = "action.mind_blast.execute_time",
["description"] = "Mind blast is better than mindgames if we have expiation",
["criteria"] = "talent.expiation.enabled",
}, -- [63]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_mindgames_time",
["value"] = "action.mind_blast.execute_time",
["description"] = "Second mindblast when talented",
["criteria"] = "talent.expiation.enabled & talent.dark_indulgence.enabled",
}, -- [64]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "cooldown.mindgames.duration_expected < variable.next_mindgames_time",
["var_name"] = "can_mindgames",
}, -- [65]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "variable.next_penance_time + 2",
["var_name"] = "next_divine_star_time",
["description"] = "Divine Star",
}, -- [66]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_divine_star_time",
["value"] = "gcd.max",
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
["criteria"] = "variable.remaining_te_holy > 0",
}, -- [67]
{
["enabled"] = true,
["op"] = "sub",
["action"] = "variable",
["value"] = "1",
["var_name"] = "remaining_te_holy",
["description"] = "Reduce our counting variable",
}, -- [68]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_divine_star_time",
["value"] = "action.shadow_word_death.execute_time",
["description"] = "SW:D is better unless outside of execute phase when expiation is untalented",
["criteria"] = "target.health.pct < 20 || talent.expiation.enabled",
}, -- [69]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_divine_star_time",
["value"] = "action.shadow_word_death.execute_time",
["description"] = "Add a second SW:D if we have death and madness",
["criteria"] = "target.health.pct < 20 & talent.death_and_madness.enabled",
}, -- [70]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_divine_star_time",
["value"] = "action.mind_blast.execute_time",
["description"] = "Mind blast is always better",
["criteria"] = "talent.expiation.enabled",
}, -- [71]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_divine_star_time",
["value"] = "action.mind_blast.execute_time",
["description"] = "Second mindblast when talented",
["criteria"] = "talent.dark_indulgence.enabled",
}, -- [72]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["var_name"] = "next_divine_star_time",
["value"] = "action.mindgames.execute_time",
["description"] = "Mindgames is always better",
["criteria"] = "talent.mindgames.enabled",
}, -- [73]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "cooldown.divine_star.duration < variable.next_divine_star_time",
["var_name"] = "can_divine_star",
}, -- [74]
{
["enabled"] = true,
["action"] = "run_action_list",
["criteria"] = "cooldown.shadow_covenant.up & ( ! variable.harsh_discipline_ready || ( variable.short_scov & ( ( talent.purge_the_wicked.enabled & dot.purge_the_wicked.remains < 20 ) || ( ! talent.purge_the_wicked.enabled & dot.shadow_word_pain.remains < 20 ) ) ) )",
["list_name"] = "scov_prep",
}, -- [75]
{
["enabled"] = true,
["action"] = "run_action_list",
["criteria"] = "variable.short_scov & variable.can_enter_scov",
["list_name"] = "short_scov",
}, -- [76]
{
["enabled"] = true,
["action"] = "run_action_list",
["criteria"] = "variable.long_scov & variable.can_enter_scov",
["list_name"] = "long_scov",
}, -- [77]
{
["enabled"] = true,
["criteria"] = "talent.purge_the_wicked.enabled & ( target.time_to_die > ( 0.3 * dot.purge_the_wicked.duration ) ) & ( ! ticking || ( refreshable & ( ! talent.painful_punishment.enabled || ( talent.painful_punishment.enabled & ( dot.purge_the_wicked.remains < ( cooldown.penance.remains - variable.expected_penance_reduction ) ) ) ) ) )",
["action"] = "purge_the_wicked",
}, -- [78]
{
["enabled"] = true,
["criteria"] = "! talent.purge_the_wicked.enabled & ( target.time_to_die > ( 0.3 * dot.shadow_word_pain.duration ) ) & ( ! ticking || ( refreshable & ( ! talent.painful_punishment.enabled || ( talent.painful_punishment.enabled & ( dot.shadow_word_pain.remains < ( cooldown.penance.remains - variable.expected_penance_reduction ) ) ) ) ) )",
["action"] = "shadow_word_pain",
}, -- [79]
{
["enabled"] = true,
["criteria"] = "! talent.shadow_covenant.enabled",
["action"] = "schism",
}, -- [80]
{
["enabled"] = true,
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_swd ) & target.health.pct < 20",
["action"] = "shadow_word_death",
}, -- [81]
{
["enabled"] = true,
["criteria"] = "talent.wrath_unleashed.enabled",
["action"] = "lights_wrath",
["description"] = "For DPS, Lights wrath should always be used outside of scov when you take wrath unleashed to maximize the number of smites it buffs. In a real raid setting, you may want to cast it at the beginning of a scov cycle for additional healing.",
}, -- [82]
{
["enabled"] = true,
["criteria"] = "! talent.shadow_covenant.enabled || variable.can_mind_blast",
["action"] = "mind_blast",
}, -- [83]
{
["enabled"] = true,
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_mindgames ) & talent.shattered_perceptions.enabled",
["action"] = "mindgames",
}, -- [84]
{
["enabled"] = true,
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_swd ) & talent.expiation.enabled & ( target.time_to_pct_20 > ( 0.5 * cooldown.shadow_word_death.duration ) )",
["action"] = "shadow_word_death",
}, -- [85]
{
["enabled"] = true,
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_mindgames ) & ! talent.shattered_perceptions.enabled",
["action"] = "mindgames",
}, -- [86]
{
["enabled"] = true,
["criteria"] = "! talent.shadow_covenant.enabled",
["action"] = "halo",
}, -- [87]
{
["enabled"] = true,
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_divine_star )",
["action"] = "divine_star",
}, -- [88]
{
["action"] = "power_word_solace",
["enabled"] = true,
}, -- [89]
{
["enabled"] = true,
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_swd ) & ( target.time_to_pct_20 > ( 0.5 * cooldown.shadow_word_death.duration ) )",
["action"] = "shadow_word_death",
}, -- [90]
{
["action"] = "smite",
["enabled"] = true,
}, -- [91]
},
["main"] = {
{
["enabled"] = true,
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_penance )",
["action"] = "penance",
}, -- [1]
},
["scov_prep"] = {
{
["enabled"] = true,
["criteria"] = "! ticking & ( target.time_to_die > ( 0.3 * dot.purge_the_wicked.duration ) )",
["action"] = "purge_the_wicked",
["description"] = "Prepare to enter shadow covenant",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "! variable.harsh_discipline_ready & variable.can_mind_blast",
["action"] = "mind_blast",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! variable.harsh_discipline_ready",
["action"] = "power_word_solace",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "! variable.harsh_discipline_ready",
["action"] = "smite",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "( target.time_to_die > ( 0.3 * dot.purge_the_wicked.duration ) )",
["action"] = "purge_the_wicked",
}, -- [5]
},
["cooldowns"] = {
{
["enabled"] = true,
["criteria"] = "! talent.mindbender.enabled & ! buff.shadow_covenant.up",
["action"] = "mindbender",
["description"] = "Don't use pets during shadow covenant windows, wasting GCDs",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "talent.mindbender.enabled & ! buff.shadow_covenant.up",
["action"] = "mindbender",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! talent.shadow_covenant.enabled || ( talent.shadow_covenant.enabled & ( cooldown.shadow_covenant.up || buff.shadow_covenant.up ) )",
["action"] = "power_infusion",
["description"] = "hold PI to use with shadow covenant if we have it",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.power_infusion.up",
["action"] = "potion",
["description"] = "sync potion with PI",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.power_infusion.up || cooldown.power_infusion.remains >= action_cooldown",
["action"] = "use_items",
["description"] = "sync trinkets with PI",
}, -- [5]
},
["precombat"] = {
{
["action"] = "power_word_fortitude",
["enabled"] = true,
}, -- [1]
},
["short_scov"] = {
{
["enabled"] = true,
["description"] = "Short Shadow Covenant We want to use entirely shadow spells to optimize our time with the buff",
["action"] = "shadow_covenant",
}, -- [1]
{
["action"] = "schism",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "spell_targets.halo >= 3",
["action"] = "halo",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "spell_targets.halo >= 3",
["action"] = "divine_star",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "( ! ticking || refreshable ) & ( target.time_to_die > ( 0.3 * dot.purge_the_wicked.duration ) )",
["action"] = "purge_the_wicked",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "target.health.pct < 20 & talent.expiation.enabled",
["action"] = "shadow_word_death",
}, -- [6]
{
["action"] = "penance",
["enabled"] = true,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "spell_targets.halo >= 2",
["action"] = "halo",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "spell_targets.halo >= 2",
["action"] = "divine_star",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "target.health.pct < 20",
["action"] = "shadow_word_death",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "talent.expiation.enabled",
["action"] = "mind_blast",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "talent.shattered_perceptions.enabled",
["action"] = "mindgames",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "talent.expiation.enabled & ( target.time_to_pct_20 > buff.shadow_covenant.remains )",
["action"] = "shadow_word_death",
}, -- [13]
{
["action"] = "mindgames",
["enabled"] = true,
}, -- [14]
{
["action"] = "halo",
["enabled"] = true,
}, -- [15]
{
["action"] = "mind_blast",
["enabled"] = true,
}, -- [16]
{
["action"] = "divine_star",
["enabled"] = true,
}, -- [17]
{
["enabled"] = true,
["criteria"] = "( target.time_to_pct_20 > buff.shadow_covenant.remains )",
["action"] = "shadow_word_death",
}, -- [18]
{
["action"] = "lights_wrath",
["enabled"] = true,
}, -- [19]
{
["action"] = "power_word_solace",
["enabled"] = true,
}, -- [20]
{
["action"] = "smite",
["enabled"] = true,
}, -- [21]
},
["long_scov"] = {
{
["enabled"] = true,
["description"] = "Long Shadow Covenant",
["action"] = "shadow_covenant",
}, -- [1]
{
["action"] = "schism",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.halo >= 3",
["action"] = "halo",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.divine_star >= 3",
["action"] = "divine_star",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_holy ) ) & ( ! ticking || refreshable ) & ( target.time_to_die > ( 0.3 * dot.purge_the_wicked.duration ) )",
["action"] = "purge_the_wicked",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "target.health.pct < 20 & talent.expiation.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
["action"] = "shadow_word_death",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & buff.harsh_discipline_ready.up",
["action"] = "penance",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.halo >= 2",
["action"] = "halo",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.divine_star >= 2",
["action"] = "divine_star",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "target.health.pct < 20 & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
["action"] = "shadow_word_death",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "talent.expiation.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
["action"] = "mind_blast",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "talent.shattered_perceptions.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
["action"] = "mindgames",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "talent.expiation.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & ( target.time_to_pct_20 > buff.shadow_covenant.remains )",
["action"] = "shadow_word_death",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
["action"] = "mindgames",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
["action"] = "mind_blast",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
["action"] = "halo",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
["action"] = "divine_star",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & ( target.time_to_pct_20 > buff.shadow_covenant.remains )",
["action"] = "shadow_word_death",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_holy ) )",
["action"] = "lights_wrath",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_holy ) )",
["action"] = "power_word_solace",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_holy ) )",
["action"] = "smite",
}, -- [21]
{
["enabled"] = true,
["description"] = "just in case we run out of shadow spells with the above conditions",
["action"] = "penance",
}, -- [22]
{
["action"] = "mindgames",
["enabled"] = true,
}, -- [23]
{
["action"] = "mind_blast",
["enabled"] = true,
}, -- [24]
{
["action"] = "shadow_word_death",
["enabled"] = true,
}, -- [25]
{
["action"] = "divine_star",
["enabled"] = true,
}, -- [26]
{
["action"] = "halo",
["enabled"] = true,
}, -- [27]
{
["action"] = "power_word_solace",
["enabled"] = true,
}, -- [28]
{
["action"] = "smite",
["enabled"] = true,
}, -- [29]
},
},
["version"] = 20230506,
["warnings"] = "The import for 'long_scov' required some automated changes.\nLine 6: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 11: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 12: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 13: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 5: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 5: Converted 'talent.embrace_shadow' to 'talent.embrace_shadow.enabled' (1x).\nLine 6: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 6: Converted 'talent.embrace_shadow' to 'talent.embrace_shadow.enabled' (1x).\nLine 10: Converted 'talent.harsh_discipline' to 'talent.harsh_discipline.enabled' (1x).\nLine 13: Converted 'talent.schism' to 'talent.schism.enabled' (1x).\nLine 16: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 17: Converted 'talent.shadow_word_death' to 'talent.shadow_word_death.enabled' (1x).\nLine 18: Converted 'talent.shadow_word_death' to 'talent.shadow_word_death.enabled' (1x).\nLine 18: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 19: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 20: Converted 'talent.divine_star' to 'talent.divine_star.enabled' (1x).\nLine 21: Converted 'talent.halo' to 'talent.halo.enabled' (1x).\nLine 22: Converted operations in '(buff.shadow_covenant.duration-variable.shadow_spells_duration_max)%gcd.max' to '(buff.shadow_covenant.duration-variable.shadow_spells_duration_max)/gcd.max'.\nLine 25: Converted 'talent.train_of_thought' to 'talent.train_of_thought.enabled' (1x).\nLine 31: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 36: Converted 'talent.twilight_equilibrium' to 'talent.twilight_equilibrium.enabled' (1x).\nLine 45: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 45: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 45: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 45: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 47: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 48: Converted 'talent.divine_star' to 'talent.divine_star.enabled' (1x).\nLine 48: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 49: Converted 'talent.halo' to 'talent.halo.enabled' (1x).\nLine 49: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 55: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 56: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 56: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 61: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 61: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 62: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 63: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 64: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 64: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 69: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 70: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 71: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 72: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 73: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 75: Converted 'talent.purge_the_wicked' to 'talent.purge_the_wicked.enabled' (1x).\nLine 75: Converted 'talent.purge_the_wicked' to 'talent.purge_the_wicked.enabled' (1x).\nLine 78: Converted 'talent.purge_the_wicked' to 'talent.purge_the_wicked.enabled' (1x).\nLine 78: Converted 'talent.painful_punishment' to 'talent.painful_punishment.enabled' (1x).\nLine 78: Converted 'talent.painful_punishment' to 'talent.painful_punishment.enabled' (1x).\nLine 79: Converted 'talent.purge_the_wicked' to 'talent.purge_the_wicked.enabled' (1x).\nLine 79: Converted 'talent.painful_punishment' to 'talent.painful_punishment.enabled' (1x).\nLine 79: Converted 'talent.painful_punishment' to 'talent.painful_punishment.enabled' (1x).\nLine 80: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 81: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 82: Converted 'talent.wrath_unleashed' to 'talent.wrath_unleashed.enabled' (1x).\nLine 83: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 84: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 84: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 85: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 85: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 86: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 86: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 87: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 88: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 90: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\n\nThe import for 'short_scov' required some automated changes.\nLine 6: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 11: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 12: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 13: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\n\nThe import for 'main' required some automated changes.\nLine 1: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\n\nImported 7 action lists.\n",
["author"] = "Kapulani",
["profile"] = "actions.precombat+=/power_word_fortitude\n\nactions+=/call_action_list,name=cooldowns\nactions+=/variable,name=te_none,op=set,value=!buff.twilight_equilibrium_holy_amp.up&!buff.twilight_equilibrium_shadow_amp.up\n# Twilight Equilibrium is buffing shadow damage\nactions+=/variable,name=te_shadow,op=set,value=buff.twilight_equilibrium_shadow_amp.up||variable.te_none\n# Twilight Equilibrium is buffing holy damage\nactions+=/variable,name=te_holy,op=set,value=buff.twilight_equilibrium_holy_amp.up||variable.te_none\n# Long Shadow covenant is enabled\nactions+=/variable,name=long_scov,op=set,value=talent.shadow_covenant&talent.embrace_shadow\n# Short shadow covenant is enabled\nactions+=/variable,name=short_scov,op=set,value=talent.shadow_covenant&!talent.embrace_shadow\n# Harsh discipline has been stacked and is ready for shadow covenant. Zero stacks for no shadow covenant Full stacks for short results in one HD penance (4 total) Full stacks + 1 extra results in two HD penances (5 total)\nactions+=/variable,name=hd_stacks_required,op=set,value=0\nactions+=/variable,name=hd_stacks_required,op=setif,condition=variable.short_scov,value=4,value_else=5\nactions+=/variable,name=hd_stacks_current,op=set,value=buff.harsh_discipline.stack+(buff.harsh_discipline.max_stack*buff.harsh_discipline_ready.stack)\nactions+=/variable,name=harsh_discipline_ready,op=set,value=!talent.harsh_discipline||(variable.hd_stacks_current>=variable.hd_stacks_required)\n# Ready to start shadow covenant phase\nactions+=/variable,name=can_enter_scov,op=set,value=(cooldown.shadow_covenant.up&variable.harsh_discipline_ready)||buff.shadow_covenant.up\nactions+=/variable,name=shadow_spells_duration_max,op=set,value=0\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.schism.execute_time,if=talent.schism\n# penance\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=2\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.mind_blast.execute_time\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.mind_blast.execute_time,if=talent.dark_indulgence\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.shadow_word_death.execute_time,if=talent.shadow_word_death\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.shadow_word_death.execute_time,if=talent.shadow_word_death&talent.death_and_madness&target.health.pct<20\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.mindgames.execute_time,if=talent.mindgames\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.divine_star.execute_time,if=talent.divine_star\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.halo.execute_time,if=talent.halo\n# (scov duration - shadow spells duration) / GCD time = estimate of holy spells we should need to use during the next scov window Long scov example: (15 - 12) / 1.5 = 2 GCDs to spend on holy spells Short scov example: (7 - 12) / 1.5 = -3.3 GCDs to spend on holy spells (none)\nactions+=/variable,name=max_te_holy,op=floor,value=(buff.shadow_covenant.duration-variable.shadow_spells_duration_max)%gcd.max\n# Counting variable, the number of non-fractional remaining holy casts available\nactions+=/variable,name=remaining_te_holy,op=set,value=0\nactions+=/variable,name=remaining_te_holy,op=add,value=variable.max_te_holy\n# TODO: duration_expected is buggy on penance/dark reprimand, using a static reduction as a stand-in for now\nactions+=/variable,name=expected_penance_reduction,op=setif,condition=talent.train_of_thought,value=2,value_else=0\n# Calculate how much cast time worth of shadow spells we have currently available. We use shadow_spells_duration to determine if we have time to weave in any holy spells to proc twilight equilibrium.\nactions+=/variable,name=shadow_spells_duration,op=set,value=0\n# Schism\nactions+=/variable,name=shadow_spells_duration,op=add,value=action.schism.execute_time,if=cooldown.schism.up||(cooldown.schism.remains<buff.shadow_covenant.remains)\n# Penance\nactions+=/variable,name=shadow_spells_duration,op=add,value=2,if=cooldown.penance.up||((cooldown.penance.remains-variable.expected_penance_reduction)<buff.shadow_covenant.remains)\n# Mindgames\nactions+=/variable,name=shadow_spells_duration,op=add,value=action.mindgames.execute_time,if=cooldown.mindgames.up||(cooldown.mindgames.remains_expected<buff.shadow_covenant.remains)\n# We always get the first SW:D\nactions+=/variable,name=shadow_spells_duration,op=add,value=action.shadow_word_death.execute_time,if=cooldown.shadow_word_death.up||(cooldown.shadow_word_death.remains<buff.shadow_covenant.remains)\n# Second SW:D only when talented and target health in execute range\nactions+=/variable,name=shadow_spells_duration,op=add,value=action.shadow_word_death.execute_time,if=(cooldown.shadow_word_death.up||(cooldown.shadow_word_death.remains<buff.shadow_covenant.remains))&(target.health.pct<20||target.time_to_pct_20<cooldown.shadow_word_death.remains)&talent.death_and_madness\n# Add any whole charges of mind blast\nactions+=/variable,name=shadow_spells_duration,op=add,value=action.mind_blast.charges*action.mind_blast.execute_time,if=action.mind_blast.charges>=1\n# Add any fractional charges of mindblast that will recharge in time\nactions+=/variable,name=shadow_spells_duration,op=add,value=action.mind_blast.execute_time,if=((action.mind_blast.charges_fractional>=1&action.mind_blast.charges_fractional<2)&(((1-(action.mind_blast.charges_fractional-1))*action.mind_blast.recharge_time)<buff.shadow_covenant.remains))||((action.mind_blast.charges_fractional<1)&(((1-action.mind_blast.charges_fractional)*action.mind_blast.recharge_time)<buff.shadow_covenant.remains))\n# Divine Star\nactions+=/variable,name=shadow_spells_duration,op=add,value=action.divine_star.execute_time,if=cooldown.divine_star.up||(cooldown.divine_star.remains<buff.shadow_covenant.remains)\n# Halo\nactions+=/variable,name=shadow_spells_duration,op=add,value=action.halo.execute_time,if=cooldown.halo.up||(cooldown.halo.remains<buff.shadow_covenant.remains)\n# Determine if we have enough scov time remaining to weave in a twilight equilibrium activation. If we don't have TE talented, always false. Using smite's execution time to represent a worst-case scenario.\nactions+=/variable,name=should_te,op=setif,condition=talent.twilight_equilibrium,value=(buff.shadow_covenant.remains-variable.shadow_spells_duration)>action.smite.execute_time,value_else=0\nactions+=/variable,name=hd_prep_time,op=setif,condition=!variable.harsh_discipline_ready,value=action.smite.execute_time*(variable.hd_stacks_required-variable.hd_stacks_current),value_else=0\n# First casts should always be HD prep->covenant->schism->HD dark reprimand\nactions+=/variable,name=next_penance_time,op=set,value=cooldown.shadow_covenant.remains+variable.hd_prep_time+action.shadow_covenant.execute_time+action.schism.execute_time\n# If we have enough scov duration, add a holy cast to proc twilight equilibrium\nactions+=/variable,name=next_penance_time,op=add,value=gcd.max,if=variable.remaining_te_holy>0\n# Reduce our counting variable\nactions+=/variable,name=remaining_te_holy,op=sub,value=1\nactions+=/variable,name=can_penance,op=set,value=(cooldown.penance.duration-variable.expected_penance_reduction)<variable.next_penance_time\n# Shadow Word: Death SW:D is better than other spells if we are in execute phase.\nactions+=/variable,name=next_swd_time,op=set,value=variable.next_penance_time+2\n# If we have enough scov duration, add a holy cast to proc twilight equilibrium\nactions+=/variable,name=next_swd_time,op=add,value=gcd.max,if=variable.remaining_te_holy>0\n# Reduce our counting variable\nactions+=/variable,name=remaining_te_holy,op=sub,value=1\n# indgame ette ha W: ren' xecut has n av hattere erception on' av xpiatio\nactions+=/variable,name=next_swd_time,op=add,value=action.mindgames.execute_time,if=((talent.mindgames&talent.shattered_perceptions)||(talent.mindgames&!talent.expiation))&target.health.pct>=20\n# Mind blast is better than SW:D if we aren't in execute\nactions+=/variable,name=next_swd_time,op=add,value=action.mind_blast.execute_time,if=target.health.pct>=20\n# Second mindblast when talented\nactions+=/variable,name=next_swd_time,op=add,value=action.mind_blast.execute_time,if=target.health.pct>=20&talent.dark_indulgence\n# Divine Star and halo are better than SW:D if we aren't in execute and don't have expiation\nactions+=/variable,name=next_swd_time,op=add,value=action.divine_star.execute_time,if=talent.divine_star&target.health.pct>=20&!talent.expiation\nactions+=/variable,name=next_swd_time,op=add,value=action.halo.execute_time,if=talent.halo&target.health.pct>=20&!talent.expiation\nactions+=/variable,name=can_swd,op=set,value=cooldown.shadow_word_death.duration_expected<variable.next_swd_time\n# Mindblast Mindblast is better than other spells if we aren't in execute phase\nactions+=/variable,name=next_mind_blast_time,op=set,value=variable.next_penance_time+2\n# If we have enough scov duration, add a holy cast to proc twilight equilibrium\nactions+=/variable,name=next_mind_blast_time,op=add,value=gcd.max,if=variable.remaining_te_holy>0\n# Reduce our counting variable\nactions+=/variable,name=remaining_te_holy,op=sub,value=1\n# Add SW:D if we're in execute phase\nactions+=/variable,name=next_mind_blast_time,op=add,value=action.shadow_word_death.execute_time,if=target.health.pct<20\n# Add a second SW:D if we have death and madness\nactions+=/variable,name=next_mind_blast_time,op=add,value=action.shadow_word_death.execute_time,if=talent.death_and_madness&target.health.pct<20\n# Add mindgames if we have it talented and don't have expiation\nactions+=/variable,name=next_mind_blast_time,op=add,value=action.mindgames.execute_time,if=talent.mindgames&!talent.expiation\n# TODO: This is a little bit simplistic, requiring both charges of mindblast to be available at the moment the first charge needs to be used. Slight optimization should be possible.\nactions+=/variable,name=can_mind_blast,op=setif,condition=action.mind_blast.charges_fractional>=1,value=((action.mind_blast.max_charges-(action.mind_blast.charges_fractional-1))*action.mind_blast.recharge_time)<variable.next_mind_blast_time,value_else=0\n# Mindgames Mindgames is a better option than other spells if we aren't in execute and don't have expiation\nactions+=/variable,name=next_mindgames_time,op=set,value=variable.next_penance_time+2\n# If we have enough scov duration, add a holy cast to proc twilight equilibrium\nactions+=/variable,name=next_mindgames_time,op=add,value=gcd.max,if=variable.remaining_te_holy>0\n# Reduce our counting variable\nactions+=/variable,name=remaining_te_holy,op=sub,value=1\n# SW:D is better than mindgames in execute phase, or outside of execute phase if we don't have shattered perceptions but do have expiation\nactions+=/variable,name=next_mindgames_time,op=add,value=action.shadow_word_death.execute_time,if=target.health.pct<20||(talent.expiation&!talent.shattered_perceptions)\n# Add a second SW:D if we have death and madness\nactions+=/variable,name=next_mindgames_time,op=add,value=action.shadow_word_death.execute_time,if=target.health.pct<20&talent.death_and_madness\n# Mind blast is better than mindgames if we have expiation\nactions+=/variable,name=next_mindgames_time,op=add,value=action.mind_blast.execute_time,if=talent.expiation\n# Second mindblast when talented\nactions+=/variable,name=next_mindgames_time,op=add,value=action.mind_blast.execute_time,if=talent.expiation&talent.dark_indulgence\nactions+=/variable,name=can_mindgames,op=set,value=cooldown.mindgames.duration_expected<variable.next_mindgames_time\n# Divine Star\nactions+=/variable,name=next_divine_star_time,op=set,value=variable.next_penance_time+2\n# If we have enough scov duration, add a holy cast to proc twilight equilibrium\nactions+=/variable,name=next_divine_star_time,op=add,value=gcd.max,if=variable.remaining_te_holy>0\n# Reduce our counting variable\nactions+=/variable,name=remaining_te_holy,op=sub,value=1\n# SW:D is better unless outside of execute phase when expiation is untalented\nactions+=/variable,name=next_divine_star_time,op=add,value=action.shadow_word_death.execute_time,if=target.health.pct<20||talent.expiation\n# Add a second SW:D if we have death and madness\nactions+=/variable,name=next_divine_star_time,op=add,value=action.shadow_word_death.execute_time,if=target.health.pct<20&talent.death_and_madness\n# Mind blast is always better\nactions+=/variable,name=next_divine_star_time,op=add,value=action.mind_blast.execute_time,if=talent.expiation\n# Second mindblast when talented\nactions+=/variable,name=next_divine_star_time,op=add,value=action.mind_blast.execute_time,if=talent.dark_indulgence\n# Mindgames is always better\nactions+=/variable,name=next_divine_star_time,op=add,value=action.mindgames.execute_time,if=talent.mindgames\nactions+=/variable,name=can_divine_star,op=set,value=cooldown.divine_star.duration<variable.next_divine_star_time\nactions+=/run_action_list,name=scov_prep,if=cooldown.shadow_covenant.up&(!variable.harsh_discipline_ready||(variable.short_scov&((talent.purge_the_wicked&dot.purge_the_wicked.remains<20)||(!talent.purge_the_wicked&dot.shadow_word_pain.remains<20))))\nactions+=/run_action_list,name=short_scov,if=variable.short_scov&variable.can_enter_scov\nactions+=/run_action_list,name=long_scov,if=variable.long_scov&variable.can_enter_scov\nactions+=/purge_the_wicked,if=talent.purge_the_wicked&(target.time_to_die>(0.3*dot.purge_the_wicked.duration))&(!ticking||(refreshable&(!talent.painful_punishment||(talent.painful_punishment&(dot.purge_the_wicked.remains<(cooldown.penance.remains-variable.expected_penance_reduction))))))\nactions+=/shadow_word_pain,if=!talent.purge_the_wicked&(target.time_to_die>(0.3*dot.shadow_word_pain.duration))&(!ticking||(refreshable&(!talent.painful_punishment||(talent.painful_punishment&(dot.shadow_word_pain.remains<(cooldown.penance.remains-variable.expected_penance_reduction))))))\nactions+=/schism,if=!talent.shadow_covenant\nactions+=/shadow_word_death,if=(!talent.shadow_covenant||variable.can_swd)&target.health.pct<20\nactions.main+=/penance,if=(!talent.shadow_covenant||variable.can_penance)\n# For DPS, Lights wrath should always be used outside of scov when you take wrath unleashed to maximize the number of smites it buffs. In a real raid setting, you may want to cast it at the beginning of a scov cycle for additional healing.\nactions+=/lights_wrath,if=talent.wrath_unleashed\nactions+=/mind_blast,if=!talent.shadow_covenant||variable.can_mind_blast\nactions+=/mindgames,if=(!talent.shadow_covenant||variable.can_mindgames)&talent.shattered_perceptions\nactions+=/shadow_word_death,if=(!talent.shadow_covenant||variable.can_swd)&talent.expiation&(target.time_to_pct_20>(0.5*cooldown.shadow_word_death.duration))\nactions+=/mindgames,if=(!talent.shadow_covenant||variable.can_mindgames)&!talent.shattered_perceptions\nactions+=/halo,if=!talent.shadow_covenant\nactions+=/divine_star,if=(!talent.shadow_covenant||variable.can_divine_star)\nactions+=/power_word_solace\nactions+=/shadow_word_death,if=(!talent.shadow_covenant||variable.can_swd)&(target.time_to_pct_20>(0.5*cooldown.shadow_word_death.duration))\nactions+=/smite\n\n# Prepare to enter shadow covenant\nactions.scov_prep+=/purge_the_wicked,if=!ticking&(target.time_to_die>(0.3*dot.purge_the_wicked.duration))\nactions.scov_prep+=/mind_blast,if=!variable.harsh_discipline_ready&variable.can_mind_blast\nactions.scov_prep+=/power_word_solace,if=!variable.harsh_discipline_ready\nactions.scov_prep+=/smite,if=!variable.harsh_discipline_ready\nactions.scov_prep+=/purge_the_wicked,if=(target.time_to_die>(0.3*dot.purge_the_wicked.duration))\n\n# Short Shadow Covenant We want to use entirely shadow spells to optimize our time with the buff\nactions.short_scov+=/shadow_covenant\nactions.short_scov+=/schism\nactions.short_scov+=/halo,if=spell_targets.halo>=3\nactions.short_scov+=/divine_star,if=spell_targets.halo>=3\nactions.short_scov+=/purge_the_wicked,if=(!ticking||refreshable)&(target.time_to_die>(0.3*dot.purge_the_wicked.duration))\nactions.short_scov+=/shadow_word_death,if=target.health.pct<20&talent.expiation\nactions.short_scov+=/penance\nactions.short_scov+=/halo,if=spell_targets.halo>=2\nactions.short_scov+=/divine_star,if=spell_targets.halo>=2\nactions.short_scov+=/shadow_word_death,if=target.health.pct<20\nactions.short_scov+=/mind_blast,if=talent.expiation\nactions.short_scov+=/mindgames,if=talent.shattered_perceptions\nactions.short_scov+=/shadow_word_death,if=talent.expiation&(target.time_to_pct_20>buff.shadow_covenant.remains)\nactions.short_scov+=/mindgames\nactions.short_scov+=/halo\nactions.short_scov+=/mind_blast\nactions.short_scov+=/divine_star\nactions.short_scov+=/shadow_word_death,if=(target.time_to_pct_20>buff.shadow_covenant.remains)\nactions.short_scov+=/lights_wrath\nactions.short_scov+=/power_word_solace\nactions.short_scov+=/smite\n\n# Long Shadow Covenant\nactions.long_scov+=/shadow_covenant\nactions.long_scov+=/schism\nactions.long_scov+=/halo,if=(!variable.should_te||(variable.should_te&variable.te_shadow))&spell_targets.halo>=3\nactions.long_scov+=/divine_star,if=(!variable.should_te||(variable.should_te&variable.te_shadow))&spell_targets.divine_star>=3\nactions.long_scov+=/purge_the_wicked,if=(!variable.should_te||(variable.should_te&variable.te_holy))&(!ticking||refreshable)&(target.time_to_die>(0.3*dot.purge_the_wicked.duration))\nactions.long_scov+=/shadow_word_death,if=target.health.pct<20&talent.expiation&(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/penance,if=(!variable.should_te||(variable.should_te&variable.te_shadow))&buff.harsh_discipline_ready.up\nactions.long_scov+=/halo,if=(!variable.should_te||(variable.should_te&variable.te_shadow))&spell_targets.halo>=2\nactions.long_scov+=/divine_star,if=(!variable.should_te||(variable.should_te&variable.te_shadow))&spell_targets.divine_star>=2\nactions.long_scov+=/shadow_word_death,if=target.health.pct<20&(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/mind_blast,if=talent.expiation&(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/mindgames,if=talent.shattered_perceptions&(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/shadow_word_death,if=talent.expiation&(!variable.should_te||(variable.should_te&variable.te_shadow))&(target.time_to_pct_20>buff.shadow_covenant.remains)\nactions.long_scov+=/mindgames,if=(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/mind_blast,if=(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/halo,if=(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/divine_star,if=(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/shadow_word_death,if=(!variable.should_te||(variable.should_te&variable.te_shadow))&(target.time_to_pct_20>buff.shadow_covenant.remains)\nactions.long_scov+=/lights_wrath,if=(!variable.should_te||(variable.should_te&variable.te_holy))\nactions.long_scov+=/power_word_solace,if=(!variable.should_te||(variable.should_te&variable.te_holy))\nactions.long_scov+=/smite,if=(!variable.should_te||(variable.should_te&variable.te_holy))\n# just in case we run out of shadow spells with the above conditions\nactions.long_scov+=/penance\nactions.long_scov+=/mindgames\nactions.long_scov+=/mind_blast\nactions.long_scov+=/shadow_word_death\nactions.long_scov+=/divine_star\nactions.long_scov+=/halo\nactions.long_scov+=/power_word_solace\nactions.long_scov+=/smite\n\n## Cooldowns\n# Don't use pets during shadow covenant windows, wasting GCDs\nactions.cooldowns+=/shadowfiend,if=!talent.mindbender.enabled&!buff.shadow_covenant.up\nactions.cooldowns+=/mindbender,if=talent.mindbender.enabled&!buff.shadow_covenant.up\n# hold PI to use with shadow covenant if we have it\nactions.cooldowns+=/power_infusion,if=!talent.shadow_covenant.enabled||(talent.shadow_covenant.enabled&(cooldown.shadow_covenant.up||buff.shadow_covenant.up))\n# sync potion with PI\nactions.cooldowns+=/potion,if=buff.power_infusion.up\n# sync trinkets with PI\nactions.cooldowns+=/use_items,if=buff.power_infusion.up||cooldown.power_infusion.remains>=cooldown",
},
["Elemental"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230201,
["spec"] = 262,
["desc"] = "",
["profile"] = "# Ensure weapon enchant is applied.\nactions.precombat+=/flametongue_weapon,if=talent.improved_flametongue_weapon.enabled\nactions.precombat+=/lightning_shield,if=buff.lightning_shield.down&(buff.earth_shield.down||talent.elemental_orbit.enabled)\nactions.precombat+=/earth_shield,if=buff.lightning_shield.up&buff.earth_shield.down&talent.elemental_orbit.enabled\nactions.precombat+=/potion\n\n# Executed every time the actor is available.\n# Interrupt of casts.\nactions+=/wind_shear\nactions+=/purge,if=settings.hostile_dispel\nactions+=/greater_purge,if=settings.hostile_dispel\n# Enable more movement.\nactions+=/spiritwalkers_grace,moving=1,if=movement.distance>6\nactions+=/blood_fury,if=!talent.ascendance.enabled||buff.ascendance.up||cooldown.ascendance.remains>50\nactions+=/berserking,if=!talent.ascendance.enabled||buff.ascendance.up\nactions+=/fireblood,if=!talent.ascendance.enabled||buff.ascendance.up||cooldown.ascendance.remains>50\nactions+=/ancestral_call,if=!talent.ascendance.enabled||buff.ascendance.up||cooldown.ascendance.remains>50\nactions+=/bag_of_tricks,if=!talent.ascendance.enabled||!buff.ascendance.up\nactions+=/use_items\nactions+=/meteor\nactions+=/tempest,if=buff.call_lightning.up\nactions+=/vesper_totem\nactions+=/natures_swiftness\nactions+=/potion\nactions+=/run_action_list,name=aoe,strict=1,if=active_enemies>2&(spell_targets.chain_lightning>2||spell_targets.lava_beam>2)\nactions+=/run_action_list,name=single_target\n\n# Keep your cooldowns rolling.\nactions.aoe=fire_elemental\n# Keep your cooldowns rolling.\nactions.aoe+=/storm_elemental\n# Keep your cooldowns rolling.\nactions.aoe+=/stormkeeper,if=!buff.stormkeeper.up\n# Reset LMT CD as early as possible.\nactions.aoe+=/totemic_recall,if=cooldown.liquid_magma_totem.remains>45\n# Keep your cooldowns rolling.\nactions.aoe+=/liquid_magma_totem\n# Spread Flame Shock using Surge of Power. Don't waste buffs by resets (resets are gone, but I'll keep that logic here).\nactions.aoe+=/primordial_wave,cycle_targets=1,if=!buff.primordial_wave.up&buff.surge_of_power.up&!buff.splintered_elements.up\n# Spread Flame Shock using Surge of Power. Don't waste buffs by resets (resets are gone, but I'll keep that logic here).\nactions.aoe+=/primordial_wave,cycle_targets=1,if=!buff.primordial_wave.up&talent.deeply_rooted_elements.enabled&!talent.surge_of_power.enabled&!buff.splintered_elements.up\n# Spread Flame Shock using Surge of Power. Don't waste buffs by resets (resets are gone, but I'll keep that logic here).\nactions.aoe+=/primordial_wave,cycle_targets=1,if=!buff.primordial_wave.up&talent.master_of_the_elements.enabled&!talent.lightning_rod.enabled\n# Spread Flame Shock using Surge of Power up to 6.\nactions.aoe+=/flame_shock,cycle_targets=1,if=refreshable&buff.surge_of_power.up&(!talent.lightning_rod.enabled||talent.skybreakers_fiery_demise.enabled)&dot.flame_shock.remains<target.time_to_die-5&active_dot.flame_shock<6\n# Spread Flame Shock against low target counts if Master of the Elements was selected up to 6.\nactions.aoe+=/flame_shock,cycle_targets=1,if=refreshable&talent.master_of_the_elements.enabled&!talent.lightning_rod.enabled&dot.flame_shock.remains<target.time_to_die-5&active_dot.flame_shock<6\n# Spread Flame Shock to gamble on Deeply Rooted Element procs up to 6.\nactions.aoe+=/flame_shock,cycle_targets=1,if=refreshable&talent.deeply_rooted_elements.enabled&!talent.surge_of_power.enabled&dot.flame_shock.remains<target.time_to_die-5&active_dot.flame_shock<6\n# Refresh Flame Shock using Surge of Power up to 6.\nactions.aoe+=/flame_shock,cycle_targets=1,if=refreshable&buff.surge_of_power.up&(!talent.lightning_rod.enabled||talent.skybreakers_fiery_demise.enabled)&dot.flame_shock.remains<target.time_to_die-5&dot.flame_shock.remains>0\n# Refresh Flame Shock against low target counts if Master of the Elements was selected up to 6.\nactions.aoe+=/flame_shock,cycle_targets=1,if=refreshable&talent.master_of_the_elements.enabled&!talent.lightning_rod.enabled&dot.flame_shock.remains<target.time_to_die-5&dot.flame_shock.remains>0\n# Refresh Flame Shock to gamble on Deeply Rooted Element procs up to 6.\nactions.aoe+=/flame_shock,cycle_targets=1,if=refreshable&talent.deeply_rooted_elements.enabled&!talent.surge_of_power.enabled&dot.flame_shock.remains<target.time_to_die-5&dot.flame_shock.remains>0\n# JUST DO IT! https://i.kym-cdn.com/entries/icons/mobile/000/018/147/Shia_LaBeouf__Just_Do_It__Motivational_Speech_(Original_Video_by_LaBeouf__R%C3%B6nkk%C3%B6___Turner)_0-4_screenshot.jpg\nactions.aoe+=/ascendance\n# Cast Lava Burst to buff your immediately follow-up Earthquake with Master of the Elements.\nactions.aoe+=/lava_burst,cycle_targets=1,if=cooldown_react&buff.lava_surge.up&talent.master_of_the_elements.enabled&!buff.master_of_the_elements.up&(maelstrom>=60-5*talent.eye_of_the_storm.rank-2*talent.flow_of_power.enabled)&(!talent.echoes_of_great_sundering.enabled||buff.echoes_of_great_sundering.up)&(!buff.ascendance.up&active_enemies>3&talent.unrelenting_calamity.enabled||active_enemies>3&!talent.unrelenting_calamity.enabled||active_enemies=3)\n# Use the talents you selected. Did you invest only 1 point in it? In this case this'll be a DPS decrease.\nactions.aoe+=/earthquake,if=!talent.echoes_of_great_sundering.enabled&active_enemies>3&(spell_targets.chain_lightning>3||spell_targets.lava_beam>3)\n# Use the talents you selected. Did you invest only 1 point in it? In this case this'll be a DPS decrease.\nactions.aoe+=/earthquake,if=!talent.echoes_of_great_sundering.enabled&!talent.elemental_blast.enabled&active_enemies=3&(spell_targets.chain_lightning=3||spell_targets.lava_beam=3)\n# Use the talents you selected. Did you invest only 1 point in it? In this case this'll be a DPS decrease.\nactions.aoe+=/earthquake,if=buff.echoes_of_great_sundering.up\n# Use the talents you selected. Did you invest only 1 point in it? In this case this'll be a DPS decrease. Spread Lightning Rod to as many targets as possible.\nactions.aoe+=/elemental_blast,cycle_targets=1,if=talent.echoes_of_great_sundering\n# Use the talents you selected. Did you invest only 1 point in it? In this case this'll be a DPS decrease.\nactions.aoe+=/elemental_blast,if=talent.echoes_of_great_sundering\n# Elemental Blast is stronger than Earthquake against 3 targets.\nactions.aoe+=/elemental_blast,if=active_enemies=3&!talent.echoes_of_great_sundering.enabled\n# Use the talents you selected. Did you invest only 1 point in it? In this case this'll be a DPS decrease. Spread Lightning Rod to as many targets as possible.\nactions.aoe+=/earth_shock,cycle_targets=1,if=talent.echoes_of_great_sundering\n# Use the talents you selected. Did you invest only 1 point in it? In this case this'll be a DPS decrease.\nactions.aoe+=/earth_shock,if=talent.echoes_of_great_sundering\n# Stormkeeper is strong and should be used.\nactions.aoe+=/lava_beam,if=buff.stormkeeper.up\n# Stormkeeper is strong and should be used.\nactions.aoe+=/chain_lightning,if=buff.stormkeeper.up\n# Power of the Maelstrom is strong and should be used.\nactions.aoe+=/lava_beam,if=buff.power_of_the_maelstrom.up&buff.ascendance.remains>cast_time\n# Power of the Maelstrom is strong and should be used.\nactions.aoe+=/chain_lightning,if=buff.power_of_the_maelstrom.up\n# Against 6 targets or more Surge of Power should be used with Lava Beam rather than Lava Burst.\nactions.aoe+=/lava_beam,if=active_enemies>=6&buff.surge_of_power.up&buff.ascendance.remains>cast_time\n# Against 6 targets or more Surge of Power should be used with Chain Lightning rather than Lava Burst.\nactions.aoe+=/chain_lightning,if=active_enemies>=6&buff.surge_of_power.up\n# Proc Deeply Rooted Elements against 3 targets.\nactions.aoe+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains>0&buff.lava_surge.up&talent.deeply_rooted_elements.enabled&buff.windspeakers_lava_resurgence.up\n# Consume Master of the Elements with Lava Beam.\nactions.aoe+=/lava_beam,if=buff.master_of_the_elements.up&buff.ascendance.remains>cast_time\n# Proc Master of the Elements against 3 targets.\nactions.aoe+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains>0&active_enemies=3&talent.master_of_the_elements.enabled\n# Gamble away for Deeply Rooted Elements procs whenever Lava Surge makes Lava Burst more efficient.\nactions.aoe+=/lava_burst,if=dot.flame_shock.remains>0&buff.lava_surge.up&talent.deeply_rooted_elements.enabled\n# Use Icefury if you can get the full benefit from Electrified Shocks. If more targets are present ignore it.\nactions.aoe+=/icefury,if=talent.electrified_shocks.enabled&active_enemies<5\n# Spread out your Frost Shock casts to empower as many Chain Lightnings as possible.\nactions.aoe+=/frost_shock,if=buff.icefury.up&talent.electrified_shocks.enabled&!debuff.electrified_shocks.up&active_enemies<5\nactions.aoe+=/lava_beam,if=buff.ascendance.remains>cast_time\nactions.aoe+=/chain_lightning\nactions.aoe+=/flame_shock,moving=1,cycle_targets=1,if=refreshable\nactions.aoe+=/frost_shock,moving=1\n\n# Keep your cooldowns rolling.\nactions.single_target+=/fire_elemental\n# Keep your cooldowns rolling.\nactions.single_target+=/storm_elemental\n# Reset LMT CD as early as possible.\nactions.single_target+=/totemic_recall,if=cooldown.liquid_magma_totem.remains>45\n# Keep your cooldowns rolling.\nactions.single_target+=/liquid_magma_totem\n# Use Primordial Wave as much as possible without wasting buffs.\nactions.single_target+=/primordial_wave,cycle_targets=1,if=!buff.primordial_wave.up&!buff.splintered_elements.up\nactions.single_target+=/flame_shock,cycle_targets=1,if=active_enemies=1&refreshable&!buff.surge_of_power.up\n# Spread Flame Shock to multiple targets only if talents were selected that benefit from it.\nactions.single_target+=/flame_shock,if=active_enemies>1&(spell_targets.chain_lightning>1||spell_targets.lava_beam>1)&refreshable&!buff.surge_of_power.up&(talent.deeply_rooted_elements.enabled||talent.ascendance.enabled||talent.primordial_wave.enabled||talent.searing_flames.enabled||talent.magma_chamber.enabled),cycle_targets=1\nactions.single_target+=/stormkeeper,if=!buff.ascendance.up&!buff.stormkeeper.up\nactions.single_target+=/ascendance,if=!buff.stormkeeper.up\n# Stormkeeper is strong and should be used.\nactions.single_target+=/lightning_bolt,if=buff.stormkeeper.up&buff.surge_of_power.up\n# Stormkeeper is strong and should be used.\nactions.single_target+=/lava_beam,if=active_enemies>1&(spell_targets.chain_lightning>1||spell_targets.lava_beam>1)&buff.stormkeeper.up&!talent.surge_of_power.enabled\n# Stormkeeper is strong and should be used.\nactions.single_target+=/chain_lightning,if=active_enemies>1&(spell_targets.chain_lightning>1||spell_targets.lava_beam>1)&buff.stormkeeper.up&!talent.surge_of_power.enabled\n# Buff stormkeeper with MotE when not using Surge.\nactions.single_target+=/lava_burst,if=buff.stormkeeper.up&!buff.master_of_the_elements.up&!talent.surge_of_power.enabled&talent.master_of_the_elements.enabled\n# Stormkeeper is strong and should be used.\nactions.single_target+=/lightning_bolt,if=buff.stormkeeper.up&!talent.surge_of_power.enabled&buff.master_of_the_elements.up\n# Stormkeeper is strong and should be used.\nactions.single_target+=/lightning_bolt,if=buff.stormkeeper.up&!talent.surge_of_power.enabled&!talent.master_of_the_elements.enabled\n# Surge of Power is strong and should be used.\nactions.single_target+=/lightning_bolt,if=buff.surge_of_power.up\nactions.single_target+=/icefury,if=talent.electrified_shocks.enabled\nactions.single_target+=/frost_shock,if=buff.icefury.up&talent.electrified_shocks.enabled&(!debuff.electrified_shocks.up||buff.icefury.remains<=gcd)\nactions.single_target+=/frost_shock,if=buff.icefury.up&talent.electrified_shocks.enabled&maelstrom>=50&debuff.electrified_shocks.remains<2*gcd&buff.stormkeeper.up\nactions.single_target+=/lava_beam,if=active_enemies>1&(spell_targets.chain_lightning>1||spell_targets.lava_beam>1)&buff.power_of_the_maelstrom.up&buff.ascendance.remains>cast_time\n# Windspeaker's Lava Resurgence is strong. Don't sit on it.\nactions.single_target+=/lava_burst,if=buff.windspeakers_lava_resurgence.up\n# Lava Surge is neat. Utilize it.\nactions.single_target+=/lava_burst,if=cooldown_react&buff.lava_surge.up\n# Buff your next Maelstrom Spender with MotE if it won't cap your maelstrom.\nactions.single_target+=/lava_burst,if=talent.master_of_the_elements.enabled&!buff.master_of_the_elements.up&maelstrom>=50&!talent.swelling_maelstrom.enabled&maelstrom<=80\n# Buff your next Maelstrom Spender with MotE if it won't cap your maelstrom.\nactions.single_target+=/lava_burst,if=talent.master_of_the_elements.enabled&!buff.master_of_the_elements.up&maelstrom>=50&talent.swelling_maelstrom.enabled&maelstrom<=130\n# Use the talents you selected. Did you invest only 1 point in it? In this case this'll be a DPS decrease. Additionally Elemental Blast is stronger than EoGS. In this case don't use Earthquake on single target.\nactions.single_target+=/earthquake,if=buff.echoes_of_great_sundering.up&(!talent.elemental_blast.enabled&active_enemies<2||active_enemies>1)\n# Use Earthquake against two enemies unless you have to alternate because of Echoes of Great Sundering.\nactions.single_target+=/earthquake,if=active_enemies>1&(spell_targets.chain_lightning>1||spell_targets.lava_beam>1)&!talent.echoes_of_great_sundering.enabled&!talent.elemental_blast.enabled\nactions.single_target+=/elemental_blast\nactions.single_target+=/earth_shock\n# Utilize present buffs.\nactions.single_target+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains>2&buff.flux_melting.up&active_enemies>1\n# Single target Lava Burst is stronk.\nactions.single_target+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains>2&active_enemies=1&talent.deeply_rooted_elements.enabled\n# Spread out your Icefury usage if you can get more use out of accompanied buffs.\nactions.single_target+=/frost_shock,if=buff.icefury.up&talent.flux_melting.enabled&!buff.flux_melting.up\n# Spread out your Icefury usage if you can get more use out of accompanied buffs.\nactions.single_target+=/frost_shock,if=buff.icefury.up&(talent.electrified_shocks.enabled&!debuff.electrified_shocks.up||buff.icefury.remains<6)\n# Utilize the Power of the Maelstrom buff if your Lightning Bolt is empowered by Unrelenting Calamity.\nactions.single_target+=/lightning_bolt,if=buff.power_of_the_maelstrom.up&talent.unrelenting_calamity.enabled\nactions.single_target+=/icefury\n# Spam Lightning Bolt if Storm Elemental is active. But honor all previous priorities.\nactions.single_target+=/lightning_bolt,if=pet.storm_elemental.active&debuff.lightning_rod.up&(debuff.electrified_shocks.up||buff.power_of_the_maelstrom.up)\n# If you have MotE up and aren't at risk of capping LvB, spend MotE on FrS/LB.\nactions.single_target+=/frost_shock,if=buff.icefury.up&buff.master_of_the_elements.up&!buff.lava_surge.up&!talent.electrified_shocks.enabled&!talent.flux_melting.enabled&cooldown.lava_burst.charges_fractional<1.0&talent.echoes_of_the_elements.enabled\nactions.single_target+=/frost_shock,if=buff.icefury.up&talent.flux_melting.enabled\n# If you have MotE up and aren't at risk of capping LvB, spend MotE on FrS/LB.\nactions.single_target+=/lightning_bolt,if=buff.master_of_the_elements.up&!buff.lava_surge.up&(cooldown.lava_burst.charges_fractional<1.0&talent.echoes_of_the_elements.enabled)\nactions.single_target+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains>2\n# Use your Icefury buffs if you didn't improve the talent.\nactions.single_target+=/frost_shock,if=buff.icefury.up&!talent.electrified_shocks.enabled&!talent.flux_melting.enabled\n# Casting Chain Lightning at two targets is mor efficient than Lightning Bolt.\nactions.single_target+=/chain_lightning,if=active_enemies>1&(spell_targets.chain_lightning>1||spell_targets.lava_beam>1)\n# Filler spell. Always available. Always the bottom line.\nactions.single_target+=/lightning_bolt\nactions.single_target+=/flame_shock,moving=1,cycle_targets=1,if=refreshable\nactions.single_target+=/flame_shock,moving=1,if=movement.distance>6\n# Frost Shock is our movement filler.\nactions.single_target+=/frost_shock,moving=1",
["version"] = 20230201,
["warnings"] = "The import for 'aoe' required some automated changes.\nLine 20: Converted 'talent.echoes_of_great_sundering' to 'talent.echoes_of_great_sundering.enabled' (1x).\nLine 21: Converted 'talent.echoes_of_great_sundering' to 'talent.echoes_of_great_sundering.enabled' (1x).\nLine 23: Converted 'talent.echoes_of_great_sundering' to 'talent.echoes_of_great_sundering.enabled' (1x).\nLine 24: Converted 'talent.echoes_of_great_sundering' to 'talent.echoes_of_great_sundering.enabled' (1x).\n\nImported 4 action lists.\n",
["lists"] = {
["single_target"] = {
{
["enabled"] = true,
["description"] = "Keep your cooldowns rolling.",
["action"] = "fire_elemental",
}, -- [1]
{
["enabled"] = true,
["description"] = "Keep your cooldowns rolling.",
["action"] = "storm_elemental",
}, -- [2]
{
["enabled"] = true,
["action"] = "totemic_recall",
["description"] = "Reset LMT CD as early as possible.",
["criteria"] = "cooldown.liquid_magma_totem.remains > 45",
}, -- [3]
{
["enabled"] = true,
["description"] = "Keep your cooldowns rolling.",
["action"] = "liquid_magma_totem",
}, -- [4]
{
["enabled"] = true,
["action"] = "primordial_wave",
["cycle_targets"] = 1,
["criteria"] = "! buff.primordial_wave.up & ! buff.splintered_elements.up",
["description"] = "Use Primordial Wave as much as possible without wasting buffs.",
}, -- [5]
{
["enabled"] = true,
["action"] = "flame_shock",
["criteria"] = "active_enemies = 1 & refreshable & ! buff.surge_of_power.up",
["cycle_targets"] = 1,
}, -- [6]
{
["enabled"] = true,
["criteria"] = "active_enemies > 1 & ( spell_targets.chain_lightning > 1 || spell_targets.lava_beam > 1 ) & refreshable & ! buff.surge_of_power.up & ( talent.deeply_rooted_elements.enabled || talent.ascendance.enabled || talent.primordial_wave.enabled || talent.searing_flames.enabled || talent.magma_chamber.enabled )",
["cycle_targets"] = 1,
["action"] = "flame_shock",
["description"] = "Spread Flame Shock to multiple targets only if talents were selected that benefit from it.",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "! buff.ascendance.up & ! buff.stormkeeper.up",
["action"] = "stormkeeper",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "! buff.stormkeeper.up",
["action"] = "ascendance",
}, -- [9]
{
["enabled"] = true,
["action"] = "lightning_bolt",
["description"] = "Stormkeeper is strong and should be used.",
["criteria"] = "buff.stormkeeper.up & buff.surge_of_power.up",
}, -- [10]
{
["enabled"] = true,
["action"] = "lava_beam",
["description"] = "Stormkeeper is strong and should be used.",
["criteria"] = "active_enemies > 1 & ( spell_targets.chain_lightning > 1 || spell_targets.lava_beam > 1 ) & buff.stormkeeper.up & ! talent.surge_of_power.enabled",
}, -- [11]
{
["enabled"] = true,
["action"] = "chain_lightning",
["description"] = "Stormkeeper is strong and should be used.",
["criteria"] = "active_enemies > 1 & ( spell_targets.chain_lightning > 1 || spell_targets.lava_beam > 1 ) & buff.stormkeeper.up & ! talent.surge_of_power.enabled",
}, -- [12]
{
["enabled"] = true,
["action"] = "lava_burst",
["description"] = "Buff stormkeeper with MotE when not using Surge.",
["criteria"] = "buff.stormkeeper.up & ! buff.master_of_the_elements.up & ! talent.surge_of_power.enabled & talent.master_of_the_elements.enabled",
}, -- [13]
{
["enabled"] = true,
["action"] = "lightning_bolt",
["description"] = "Stormkeeper is strong and should be used.",
["criteria"] = "buff.stormkeeper.up & ! talent.surge_of_power.enabled & buff.master_of_the_elements.up",
}, -- [14]
{
["enabled"] = true,
["action"] = "lightning_bolt",
["description"] = "Stormkeeper is strong and should be used.",
["criteria"] = "buff.stormkeeper.up & ! talent.surge_of_power.enabled & ! talent.master_of_the_elements.enabled",
}, -- [15]
{
["enabled"] = true,
["action"] = "lightning_bolt",
["description"] = "Surge of Power is strong and should be used.",
["criteria"] = "buff.surge_of_power.up",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "talent.electrified_shocks.enabled",
["action"] = "icefury",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "buff.icefury.up & talent.electrified_shocks.enabled & ( ! debuff.electrified_shocks.up || buff.icefury.remains <= gcd.max )",
["action"] = "frost_shock",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "buff.icefury.up & talent.electrified_shocks.enabled & maelstrom >= 50 & debuff.electrified_shocks.remains < 2 * gcd.max & buff.stormkeeper.up",
["action"] = "frost_shock",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "active_enemies > 1 & ( spell_targets.chain_lightning > 1 || spell_targets.lava_beam > 1 ) & buff.power_of_the_maelstrom.up & buff.ascendance.remains > cast_time",
["action"] = "lava_beam",
}, -- [20]
{
["enabled"] = true,
["action"] = "lava_burst",
["description"] = "Windspeaker's Lava Resurgence is strong. Don't sit on it.",
["criteria"] = "buff.windspeakers_lava_resurgence.up",
}, -- [21]
{
["enabled"] = true,
["action"] = "lava_burst",
["description"] = "Lava Surge is neat. Utilize it.",
["criteria"] = "cooldown_react & buff.lava_surge.up",
}, -- [22]
{
["enabled"] = true,
["action"] = "lava_burst",
["description"] = "Buff your next Maelstrom Spender with MotE if it won't cap your maelstrom.",
["criteria"] = "talent.master_of_the_elements.enabled & ! buff.master_of_the_elements.up & maelstrom >= 50 & ! talent.swelling_maelstrom.enabled & maelstrom <= 80",
}, -- [23]
{
["enabled"] = true,
["action"] = "lava_burst",
["description"] = "Buff your next Maelstrom Spender with MotE if it won't cap your maelstrom.",
["criteria"] = "talent.master_of_the_elements.enabled & ! buff.master_of_the_elements.up & maelstrom >= 50 & talent.swelling_maelstrom.enabled & maelstrom <= 130",
}, -- [24]
{
["enabled"] = true,
["action"] = "earthquake",
["description"] = "Use the talents you selected. Did you invest only 1 point in it? In this case this'll be a DPS decrease. Additionally Elemental Blast is stronger than EoGS. In this case don't use Earthquake on single target.",
["criteria"] = "buff.echoes_of_great_sundering.up & ( ! talent.elemental_blast.enabled & active_enemies < 2 || active_enemies > 1 )",
}, -- [25]
{
["enabled"] = true,
["action"] = "earthquake",
["description"] = "Use Earthquake against two enemies unless you have to alternate because of Echoes of Great Sundering.",
["criteria"] = "active_enemies > 1 & ( spell_targets.chain_lightning > 1 || spell_targets.lava_beam > 1 ) & ! talent.echoes_of_great_sundering.enabled & ! talent.elemental_blast.enabled",
}, -- [26]
{
["action"] = "elemental_blast",
["enabled"] = true,
}, -- [27]
{
["action"] = "earth_shock",
["enabled"] = true,
}, -- [28]
{
["enabled"] = true,
["action"] = "lava_burst",
["cycle_targets"] = 1,
["criteria"] = "dot.flame_shock.remains > 2 & buff.flux_melting.up & active_enemies > 1",
["description"] = "Utilize present buffs.",
}, -- [29]
{
["enabled"] = true,
["action"] = "lava_burst",
["cycle_targets"] = 1,
["criteria"] = "dot.flame_shock.remains > 2 & active_enemies = 1 & talent.deeply_rooted_elements.enabled",
["description"] = "Single target Lava Burst is stronk.",
}, -- [30]
{
["enabled"] = true,
["action"] = "frost_shock",
["description"] = "Spread out your Icefury usage if you can get more use out of accompanied buffs.",
["criteria"] = "buff.icefury.up & talent.flux_melting.enabled & ! buff.flux_melting.up",
}, -- [31]
{
["enabled"] = true,
["action"] = "frost_shock",
["description"] = "Spread out your Icefury usage if you can get more use out of accompanied buffs.",
["criteria"] = "buff.icefury.up & ( talent.electrified_shocks.enabled & ! debuff.electrified_shocks.up || buff.icefury.remains < 6 )",
}, -- [32]
{
["enabled"] = true,
["action"] = "lightning_bolt",
["description"] = "Utilize the Power of the Maelstrom buff if your Lightning Bolt is empowered by Unrelenting Calamity.",
["criteria"] = "buff.power_of_the_maelstrom.up & talent.unrelenting_calamity.enabled",
}, -- [33]
{
["action"] = "icefury",
["enabled"] = true,
}, -- [34]
{
["enabled"] = true,
["action"] = "lightning_bolt",
["description"] = "Spam Lightning Bolt if Storm Elemental is active. But honor all previous priorities.",
["criteria"] = "pet.storm_elemental.active & debuff.lightning_rod.up & ( debuff.electrified_shocks.up || buff.power_of_the_maelstrom.up )",
}, -- [35]
{
["enabled"] = true,
["action"] = "frost_shock",
["description"] = "If you have MotE up and aren't at risk of capping LvB, spend MotE on FrS/LB.",
["criteria"] = "buff.icefury.up & buff.master_of_the_elements.up & ! buff.lava_surge.up & ! talent.electrified_shocks.enabled & ! talent.flux_melting.enabled & cooldown.lava_burst.charges_fractional < 1.0 & talent.echoes_of_the_elements.enabled",
}, -- [36]
{
["enabled"] = true,
["criteria"] = "buff.icefury.up & talent.flux_melting.enabled",
["action"] = "frost_shock",
}, -- [37]
{
["enabled"] = true,
["action"] = "lightning_bolt",
["description"] = "If you have MotE up and aren't at risk of capping LvB, spend MotE on FrS/LB.",
["criteria"] = "buff.master_of_the_elements.up & ! buff.lava_surge.up & ( cooldown.lava_burst.charges_fractional < 1.0 & talent.echoes_of_the_elements.enabled )",
}, -- [38]
{
["enabled"] = true,
["action"] = "lava_burst",
["criteria"] = "dot.flame_shock.remains > 2",
["cycle_targets"] = 1,
}, -- [39]
{
["enabled"] = true,
["action"] = "frost_shock",
["description"] = "Use your Icefury buffs if you didn't improve the talent.",
["criteria"] = "buff.icefury.up & ! talent.electrified_shocks.enabled & ! talent.flux_melting.enabled",
}, -- [40]
{
["enabled"] = true,
["action"] = "chain_lightning",
["description"] = "Casting Chain Lightning at two targets is mor efficient than Lightning Bolt.",
["criteria"] = "active_enemies > 1 & ( spell_targets.chain_lightning > 1 || spell_targets.lava_beam > 1 )",
}, -- [41]
{
["enabled"] = true,
["description"] = "Filler spell. Always available. Always the bottom line.",
["action"] = "lightning_bolt",
}, -- [42]
{
["moving"] = 1,
["enable_moving"] = true,
["action"] = "flame_shock",
["cycle_targets"] = 1,
["criteria"] = "refreshable",
["enabled"] = true,
}, -- [43]
{
["enabled"] = true,
["enable_moving"] = true,
["action"] = "flame_shock",
["criteria"] = "movement.distance > 6",
["moving"] = 1,
}, -- [44]
{
["enabled"] = true,
["enable_moving"] = true,
["action"] = "frost_shock",
["description"] = "Frost Shock is our movement filler.",
["moving"] = 1,
}, -- [45]
},
["aoe"] = {
{
["enabled"] = true,
["description"] = "Keep your cooldowns rolling.",
["action"] = "fire_elemental",
}, -- [1]
{
["enabled"] = true,
["description"] = "Keep your cooldowns rolling.",
["action"] = "storm_elemental",
}, -- [2]
{
["enabled"] = true,
["action"] = "stormkeeper",
["description"] = "Keep your cooldowns rolling.",
["criteria"] = "! buff.stormkeeper.up",
}, -- [3]
{
["enabled"] = true,
["action"] = "totemic_recall",
["description"] = "Reset LMT CD as early as possible.",
["criteria"] = "cooldown.liquid_magma_totem.remains > 45",
}, -- [4]
{
["enabled"] = true,
["description"] = "Keep your cooldowns rolling.",
["action"] = "liquid_magma_totem",
}, -- [5]
{
["enabled"] = true,
["action"] = "primordial_wave",
["cycle_targets"] = 1,
["criteria"] = "! buff.primordial_wave.up & buff.surge_of_power.up & ! buff.splintered_elements.up",
["description"] = "Spread Flame Shock using Surge of Power. Don't waste buffs by resets (resets are gone, but I'll keep that logic here).",
}, -- [6]
{
["enabled"] = true,
["action"] = "primordial_wave",
["cycle_targets"] = 1,
["criteria"] = "! buff.primordial_wave.up & talent.deeply_rooted_elements.enabled & ! talent.surge_of_power.enabled & ! buff.splintered_elements.up",
["description"] = "Spread Flame Shock using Surge of Power. Don't waste buffs by resets (resets are gone, but I'll keep that logic here).",
}, -- [7]
{
["enabled"] = true,
["action"] = "primordial_wave",
["cycle_targets"] = 1,
["criteria"] = "! buff.primordial_wave.up & talent.master_of_the_elements.enabled & ! talent.lightning_rod.enabled",
["description"] = "Spread Flame Shock using Surge of Power. Don't waste buffs by resets (resets are gone, but I'll keep that logic here).",
}, -- [8]
{
["enabled"] = true,
["action"] = "flame_shock",
["cycle_targets"] = 1,
["criteria"] = "refreshable & buff.surge_of_power.up & ( ! talent.lightning_rod.enabled || talent.skybreakers_fiery_demise.enabled ) & dot.flame_shock.remains < target.time_to_die - 5 & active_dot.flame_shock < 6",
["description"] = "Spread Flame Shock using Surge of Power up to 6.",
}, -- [9]
{
["enabled"] = true,
["action"] = "flame_shock",
["cycle_targets"] = 1,
["criteria"] = "refreshable & talent.master_of_the_elements.enabled & ! talent.lightning_rod.enabled & dot.flame_shock.remains < target.time_to_die - 5 & active_dot.flame_shock < 6",
["description"] = "Spread Flame Shock against low target counts if Master of the Elements was selected up to 6.",
}, -- [10]
{
["enabled"] = true,
["action"] = "flame_shock",
["cycle_targets"] = 1,
["criteria"] = "refreshable & talent.deeply_rooted_elements.enabled & ! talent.surge_of_power.enabled & dot.flame_shock.remains < target.time_to_die - 5 & active_dot.flame_shock < 6",
["description"] = "Spread Flame Shock to gamble on Deeply Rooted Element procs up to 6.",
}, -- [11]
{
["enabled"] = true,
["action"] = "flame_shock",
["cycle_targets"] = 1,
["criteria"] = "refreshable & buff.surge_of_power.up & ( ! talent.lightning_rod.enabled || talent.skybreakers_fiery_demise.enabled ) & dot.flame_shock.remains < target.time_to_die - 5 & dot.flame_shock.remains > 0",
["description"] = "Refresh Flame Shock using Surge of Power up to 6.",
}, -- [12]
{
["enabled"] = true,
["action"] = "flame_shock",
["cycle_targets"] = 1,
["criteria"] = "refreshable & talent.master_of_the_elements.enabled & ! talent.lightning_rod.enabled & dot.flame_shock.remains < target.time_to_die - 5 & dot.flame_shock.remains > 0",
["description"] = "Refresh Flame Shock against low target counts if Master of the Elements was selected up to 6.",
}, -- [13]
{
["enabled"] = true,
["action"] = "flame_shock",
["cycle_targets"] = 1,
["criteria"] = "refreshable & talent.deeply_rooted_elements.enabled & ! talent.surge_of_power.enabled & dot.flame_shock.remains < target.time_to_die - 5 & dot.flame_shock.remains > 0",
["description"] = "Refresh Flame Shock to gamble on Deeply Rooted Element procs up to 6.",
}, -- [14]
{
["enabled"] = true,
["description"] = "JUST DO IT! https://i.kym-cdn.com/entries/icons/mobile/000/018/147/Shia_LaBeouf__Just_Do_It__Motivational_Speech_(Original_Video_by_LaBeouf__R%C3%B6nkk%C3%B6___Turner)_0-4_screenshot.jpg",
["action"] = "ascendance",
}, -- [15]
{
["enabled"] = true,
["action"] = "lava_burst",
["cycle_targets"] = 1,
["criteria"] = "cooldown_react & buff.lava_surge.up & talent.master_of_the_elements.enabled & ! buff.master_of_the_elements.up & ( maelstrom >= 60 - 5 * talent.eye_of_the_storm.rank - 2 * talent.flow_of_power.enabled ) & ( ! talent.echoes_of_great_sundering.enabled || buff.echoes_of_great_sundering.up ) & ( ! buff.ascendance.up & active_enemies > 3 & talent.unrelenting_calamity.enabled || active_enemies > 3 & ! talent.unrelenting_calamity.enabled || active_enemies = 3 )",
["description"] = "Cast Lava Burst to buff your immediately follow-up Earthquake with Master of the Elements.",
}, -- [16]
{
["enabled"] = true,
["action"] = "earthquake",
["description"] = "Use the talents you selected. Did you invest only 1 point in it? In this case this'll be a DPS decrease.",
["criteria"] = "! talent.echoes_of_great_sundering.enabled & active_enemies > 3 & ( spell_targets.chain_lightning > 3 || spell_targets.lava_beam > 3 )",
}, -- [17]
{
["enabled"] = true,
["action"] = "earthquake",
["description"] = "Use the talents you selected. Did you invest only 1 point in it? In this case this'll be a DPS decrease.",
["criteria"] = "! talent.echoes_of_great_sundering.enabled & ! talent.elemental_blast.enabled & active_enemies = 3 & ( spell_targets.chain_lightning = 3 || spell_targets.lava_beam = 3 )",
}, -- [18]
{
["enabled"] = true,
["action"] = "earthquake",
["description"] = "Use the talents you selected. Did you invest only 1 point in it? In this case this'll be a DPS decrease.",
["criteria"] = "buff.echoes_of_great_sundering.up",
}, -- [19]
{
["enabled"] = true,
["action"] = "elemental_blast",
["cycle_targets"] = 1,
["criteria"] = "talent.echoes_of_great_sundering.enabled",
["description"] = "Use the talents you selected. Did you invest only 1 point in it? In this case this'll be a DPS decrease. Spread Lightning Rod to as many targets as possible.",
}, -- [20]
{
["enabled"] = true,
["action"] = "elemental_blast",
["description"] = "Use the talents you selected. Did you invest only 1 point in it? In this case this'll be a DPS decrease.",
["criteria"] = "talent.echoes_of_great_sundering.enabled",
}, -- [21]
{
["enabled"] = true,
["action"] = "elemental_blast",
["description"] = "Elemental Blast is stronger than Earthquake against 3 targets.",
["criteria"] = "active_enemies = 3 & ! talent.echoes_of_great_sundering.enabled",
}, -- [22]
{
["enabled"] = true,
["action"] = "earth_shock",
["cycle_targets"] = 1,
["criteria"] = "talent.echoes_of_great_sundering.enabled",
["description"] = "Use the talents you selected. Did you invest only 1 point in it? In this case this'll be a DPS decrease. Spread Lightning Rod to as many targets as possible.",
}, -- [23]
{
["enabled"] = true,
["action"] = "earth_shock",
["description"] = "Use the talents you selected. Did you invest only 1 point in it? In this case this'll be a DPS decrease.",
["criteria"] = "talent.echoes_of_great_sundering.enabled",
}, -- [24]
{
["enabled"] = true,
["action"] = "lava_beam",
["description"] = "Stormkeeper is strong and should be used.",
["criteria"] = "buff.stormkeeper.up",
}, -- [25]
{
["enabled"] = true,
["action"] = "chain_lightning",
["description"] = "Stormkeeper is strong and should be used.",
["criteria"] = "buff.stormkeeper.up",
}, -- [26]
{
["enabled"] = true,
["action"] = "lava_beam",
["description"] = "Power of the Maelstrom is strong and should be used.",
["criteria"] = "buff.power_of_the_maelstrom.up & buff.ascendance.remains > cast_time",
}, -- [27]
{
["enabled"] = true,
["action"] = "chain_lightning",
["description"] = "Power of the Maelstrom is strong and should be used.",
["criteria"] = "buff.power_of_the_maelstrom.up",
}, -- [28]
{
["enabled"] = true,
["action"] = "lava_beam",
["description"] = "Against 6 targets or more Surge of Power should be used with Lava Beam rather than Lava Burst.",
["criteria"] = "active_enemies >= 6 & buff.surge_of_power.up & buff.ascendance.remains > cast_time",
}, -- [29]
{
["enabled"] = true,
["action"] = "chain_lightning",
["description"] = "Against 6 targets or more Surge of Power should be used with Chain Lightning rather than Lava Burst.",
["criteria"] = "active_enemies >= 6 & buff.surge_of_power.up",
}, -- [30]
{
["enabled"] = true,
["action"] = "lava_burst",
["cycle_targets"] = 1,
["criteria"] = "dot.flame_shock.remains > 0 & buff.lava_surge.up & talent.deeply_rooted_elements.enabled & buff.windspeakers_lava_resurgence.up",
["description"] = "Proc Deeply Rooted Elements against 3 targets.",
}, -- [31]
{
["enabled"] = true,
["action"] = "lava_beam",
["description"] = "Consume Master of the Elements with Lava Beam.",
["criteria"] = "buff.master_of_the_elements.up & buff.ascendance.remains > cast_time",
}, -- [32]
{
["enabled"] = true,
["action"] = "lava_burst",
["cycle_targets"] = 1,
["criteria"] = "dot.flame_shock.remains > 0 & active_enemies = 3 & talent.master_of_the_elements.enabled",
["description"] = "Proc Master of the Elements against 3 targets.",
}, -- [33]
{
["enabled"] = true,
["action"] = "lava_burst",
["description"] = "Gamble away for Deeply Rooted Elements procs whenever Lava Surge makes Lava Burst more efficient.",
["criteria"] = "dot.flame_shock.remains > 0 & buff.lava_surge.up & talent.deeply_rooted_elements.enabled",
}, -- [34]
{
["enabled"] = true,
["action"] = "icefury",
["description"] = "Use Icefury if you can get the full benefit from Electrified Shocks. If more targets are present ignore it.",
["criteria"] = "talent.electrified_shocks.enabled & active_enemies < 5",
}, -- [35]
{
["enabled"] = true,
["action"] = "frost_shock",
["description"] = "Spread out your Frost Shock casts to empower as many Chain Lightnings as possible.",
["criteria"] = "buff.icefury.up & talent.electrified_shocks.enabled & ! debuff.electrified_shocks.up & active_enemies < 5",
}, -- [36]
{
["enabled"] = true,
["criteria"] = "buff.ascendance.remains > cast_time",
["action"] = "lava_beam",
}, -- [37]
{
["action"] = "chain_lightning",
["enabled"] = true,
}, -- [38]
{
["moving"] = 1,
["enable_moving"] = true,
["action"] = "flame_shock",
["cycle_targets"] = 1,
["criteria"] = "refreshable",
["enabled"] = true,
}, -- [39]
{
["moving"] = 1,
["enable_moving"] = true,
["action"] = "frost_shock",
["enabled"] = true,
}, -- [40]
},
["default"] = {
{
["enabled"] = true,
["description"] = "Interrupt of casts.",
["action"] = "wind_shear",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "settings.hostile_dispel",
["action"] = "purge",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "settings.hostile_dispel",
["action"] = "greater_purge",
}, -- [3]
{
["enabled"] = true,
["enable_moving"] = true,
["action"] = "spiritwalkers_grace",
["criteria"] = "movement.distance > 6",
["description"] = "Enable more movement.",
["moving"] = 1,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "! talent.ascendance.enabled || buff.ascendance.up || cooldown.ascendance.remains > 50",
["action"] = "blood_fury",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "! talent.ascendance.enabled || buff.ascendance.up",
["action"] = "berserking",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "! talent.ascendance.enabled || buff.ascendance.up || cooldown.ascendance.remains > 50",
["action"] = "fireblood",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "! talent.ascendance.enabled || buff.ascendance.up || cooldown.ascendance.remains > 50",
["action"] = "ancestral_call",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "! talent.ascendance.enabled || ! buff.ascendance.up",
["action"] = "bag_of_tricks",
}, -- [9]
{
["action"] = "use_items",
["enabled"] = true,
}, -- [10]
{
["action"] = "meteor",
["enabled"] = true,
}, -- [11]
{
["enabled"] = true,
["criteria"] = "buff.call_lightning.up",
["action"] = "tempest",
}, -- [12]
{
["action"] = "vesper_totem",
["enabled"] = true,
}, -- [13]
{
["action"] = "natures_swiftness",
["enabled"] = true,
}, -- [14]
{
["action"] = "potion",
["enabled"] = true,
}, -- [15]
{
["enabled"] = true,
["action"] = "run_action_list",
["strict"] = 1,
["criteria"] = "active_enemies > 2 & ( spell_targets.chain_lightning > 2 || spell_targets.lava_beam > 2 )",
["list_name"] = "aoe",
}, -- [16]
{
["enabled"] = true,
["action"] = "run_action_list",
["list_name"] = "single_target",
}, -- [17]
},
["precombat"] = {
{
["enabled"] = true,
["action"] = "flametongue_weapon",
["description"] = "Ensure weapon enchant is applied.",
["criteria"] = "talent.improved_flametongue_weapon.enabled",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.lightning_shield.down & ( buff.earth_shield.down || talent.elemental_orbit.enabled )",
["action"] = "lightning_shield",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.lightning_shield.up & buff.earth_shield.down & talent.elemental_orbit.enabled",
["action"] = "earth_shield",
}, -- [3]
{
["action"] = "potion",
["enabled"] = true,
}, -- [4]
},
},
["author"] = "SimulationCraft",
},
["Marksmanship"] = {
["source"] = "# https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230430,
["author"] = "SimC",
["desc"] = "2023-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",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.razor_fragments.up",
["action"] = "kill_shot",
}, -- [2]
{
["action"] = "explosive_shot",
["enabled"] = true,
}, -- [3]
{
["action"] = "death_chakram",
["enabled"] = true,
}, -- [4]
{
["action"] = "stampede",
["enabled"] = true,
}, -- [5]
{
["action"] = "wailing_arrow",
["enabled"] = true,
}, -- [6]
{
["enabled"] = true,
["action"] = "serpent_sting",
["criteria"] = "refreshable & talent.hydras_bite.enabled & ! talent.serpentstalkers_trickery.enabled",
["cycle_targets"] = 1,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "active_enemies > 7",
["action"] = "barrage",
}, -- [8]
{
["action"] = "volley",
["enabled"] = true,
}, -- [9]
{
["action"] = "trueshot",
["enabled"] = true,
}, -- [10]
{
["enabled"] = true,
["criteria"] = "buff.trick_shots.remains >= execute_time & talent.surging_shots.enabled",
["action"] = "rapid_fire",
}, -- [11]
{
["enabled"] = true,
["action"] = "aimed_shot",
["cycle_targets"] = 1,
["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 ) )",
["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.",
}, -- [12]
{
["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.",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "buff.trick_shots.remains >= execute_time",
["action"] = "rapid_fire",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "buff.trick_shots.up & buff.precise_shots.up & focus > cost + action.aimed_shot.cost & active_enemies < 4",
["action"] = "chimaera_shot",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "buff.trick_shots.down || ( buff.precise_shots.up || buff.bulletstorm.stack = 10 ) & focus > cost + action.aimed_shot.cost",
["action"] = "multishot",
}, -- [16]
{
["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.",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "buff.trueshot.down",
["action"] = "steel_trap",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "focus > cost + action.aimed_shot.cost",
["action"] = "kill_shot",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "focus > cost + action.aimed_shot.cost",
["action"] = "multishot",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "buff.trueshot.down",
["action"] = "bag_of_tricks",
}, -- [21]
{
["action"] = "steady_shot",
["enabled"] = true,
}, -- [22]
},
["default"] = {
{
["action"] = "counter_shot",
["enabled"] = true,
}, -- [1]
{
["action"] = "tranquilizing_shot",
["enabled"] = true,
}, -- [2]
{
["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 ) || active_enemies > 1 || 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",
}, -- [3]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "cds",
}, -- [4]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "trinkets",
}, -- [5]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies < 3 || ! talent.trick_shots.enabled",
["list_name"] = "st",
}, -- [6]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies > 2",
["list_name"] = "trickshots",
}, -- [7]
},
["precombat"] = {
{
["enabled"] = true,
["criteria"] = "! talent.lone_wolf.enabled",
["action"] = "summon_pet",
}, -- [1]
{
["enabled"] = true,
["precast_time"] = "10",
["action"] = "salvo",
}, -- [2]
{
["enabled"] = true,
["name"] = "algethar_puzzle_box",
["action"] = "algethar_puzzle_box",
}, -- [3]
{
["enabled"] = true,
["action"] = "aimed_shot",
["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 )",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "active_enemies > 2 || ! talent.steady_focus.enabled",
["action"] = "wailing_arrow",
}, -- [5]
{
["enabled"] = true,
["action"] = "steady_shot",
["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",
}, -- [6]
},
["trinkets"] = {
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "variable.trueshot_ready",
["description"] = "Signals that cooldowns are active or ready to activate that is desirable to sync a buff effect with.",
["var_name"] = "sync_ready",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "buff.trueshot.up",
["description"] = "Signals that the cooldowns that are desirable to sync a buff with are active.",
["var_name"] = "sync_active",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "cooldown.trueshot.remains",
["description"] = "The amount of time until the cooldowns will be ready that are desirable to sync a buff effect with.",
["var_name"] = "sync_remains",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! trinket.t2.has_cooldown || 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 ) || ! 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.",
["var_name"] = "trinket_1_stronger",
}, -- [4]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! trinket.t1.has_cooldown || trinket.t2.has_use_buff & ( ! trinket.t1.has_use_buff || trinket.t1.cooldown.duration < trinket.t2.cooldown.duration || trinket.t1.cast_time < trinket.t2.cast_time || trinket.t1.cast_time = trinket.t2.cast_time & trinket.t1.cooldown.duration = trinket.t2.cooldown.duration ) || ! trinket.t2.has_use_buff & ( ! trinket.t1.has_use_buff & ( trinket.t1.cooldown.duration < trinket.t2.cooldown.duration || trinket.t1.cast_time < trinket.t2.cast_time || trinket.t1.cast_time = trinket.t2.cast_time & trinket.t1.cooldown.duration = trinket.t2.cooldown.duration ) )",
["var_name"] = "trinket_2_stronger",
}, -- [5]
{
["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 / 2 || trinket.t2.has_use_buff & trinket.t2.cooldown.remains > variable.sync_remains - 15 & trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 40 > 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 / 2 || boss & 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 / 2 ) ) ) || ! 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 ) ) ) || target.time_to_die < 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.",
}, -- [6]
{
["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 / 2 || trinket.t1.has_use_buff & trinket.t1.cooldown.remains > variable.sync_remains - 15 & trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 40 > 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 / 2 || boss & 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 / 2 ) ) ) || ! 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 ) ) ) || target.time_to_die < 25 & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains )",
}, -- [7]
},
["st"] = {
{
["enabled"] = true,
["criteria"] = "talent.steady_focus.enabled & ( steady_focus_count & buff.steady_focus.remains < 5 || buff.steady_focus.down & ! buff.trueshot.up )",
["action"] = "steady_shot",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.trueshot.up & full_recharge_time < gcd.max + cast_time & talent.legacy_of_the_windrunners.enabled & talent.windrunners_guidance.enabled",
["action"] = "aimed_shot",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.trueshot.down",
["action"] = "kill_shot",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.salvo.up",
["action"] = "volley",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.trueshot.down",
["action"] = "steel_trap",
}, -- [5]
{
["enabled"] = true,
["action"] = "serpent_sting",
["criteria"] = "refreshable & ! talent.serpentstalkers_trickery.enabled & buff.trueshot.down",
["cycle_targets"] = 1,
}, -- [6]
{
["action"] = "explosive_shot",
["enabled"] = true,
}, -- [7]
{
["action"] = "stampede",
["enabled"] = true,
}, -- [8]
{
["action"] = "death_chakram",
["enabled"] = true,
}, -- [9]
{
["enabled"] = true,
["criteria"] = "active_enemies > 1",
["action"] = "wailing_arrow",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "talent.surging_shots.enabled",
["action"] = "rapid_fire",
}, -- [11]
{
["action"] = "kill_shot",
["enabled"] = true,
}, -- [12]
{
["enabled"] = true,
["criteria"] = "variable.trueshot_ready & ( buff.trueshot.down || buff.trueshot.remains < 5 )",
["action"] = "trueshot",
}, -- [13]
{
["enabled"] = true,
["action"] = "multishot",
["description"] = "Trigger Salvo if Volley isn't being used to trigger it.",
["criteria"] = "buff.salvo.up & ! talent.volley.enabled",
}, -- [14]
{
["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.",
}, -- [15]
{
["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.",
}, -- [16]
{
["enabled"] = true,
["action"] = "steady_shot",
["description"] = "Refresh Steady Focus if it would run out while refreshing it.",
["criteria"] = "talent.steady_focus.enabled & buff.steady_focus.remains < execute_time * 2",
}, -- [17]
{
["action"] = "volley",
["enabled"] = true,
}, -- [18]
{
["action"] = "rapid_fire",
["enabled"] = true,
}, -- [19]
{
["enabled"] = true,
["criteria"] = "buff.trueshot.down",
["action"] = "wailing_arrow",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "buff.trueshot.down",
["action"] = "kill_command",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "buff.precise_shots.up || focus > cost + action.aimed_shot.cost",
["action"] = "chimaera_shot",
}, -- [22]
{
["enabled"] = true,
["criteria"] = "buff.precise_shots.up || focus > cost + action.aimed_shot.cost",
["action"] = "arcane_shot",
}, -- [23]
{
["enabled"] = true,
["criteria"] = "buff.trueshot.down",
["action"] = "bag_of_tricks",
}, -- [24]
{
["action"] = "steady_shot",
["enabled"] = true,
}, -- [25]
},
["cds"] = {
{
["enabled"] = true,
["criteria"] = "boss & fight_remains < 13",
["action"] = "berserking",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 16",
["action"] = "blood_fury",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 16",
["action"] = "ancestral_call",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 9",
["action"] = "fireblood",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.trueshot.down",
["action"] = "lights_judgment",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "buff.trueshot.up & ( buff.bloodlust.up || target.health.pct < 20 ) || boss & fight_remains < 26",
["action"] = "potion",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "active_enemies > 2 || cooldown.volley.remains < 10",
["action"] = "salvo",
}, -- [7]
},
},
["version"] = 20230430,
["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 11: 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)||active_enemies>1||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)||active_enemies>1||boss&fight_remains<25)'.\nLine 6: 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 4: Converted 'talent.volley' to 'talent.volley.enabled' (1x).\nLine 5: Converted 'talent.steady_focus' to 'talent.steady_focus.enabled' (1x).\nLine 6: Converted 'talent.volley' to 'talent.volley.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 1: Converted 'talent.steady_focus' to 'talent.steady_focus.enabled' (1x).\nLine 2: Converted 'talent.legacy_of_the_windrunners' to 'talent.legacy_of_the_windrunners.enabled' (1x).\nLine 2: Converted 'talent.windrunners_guidance' to 'talent.windrunners_guidance.enabled' (1x).\nLine 6: Converted 'talent.serpentstalkers_trickery' to 'talent.serpentstalkers_trickery.enabled' (1x).\nLine 11: Converted 'talent.surging_shots' to 'talent.surging_shots.enabled' (1x).\nLine 14: Converted 'talent.volley' to 'talent.volley.enabled' (1x).\nLine 15: Converted 'talent.serpentstalkers_trickery' to 'talent.serpentstalkers_trickery.enabled' (1x).\nLine 15: Converted 'talent.chimaera_shot' to 'talent.chimaera_shot.enabled' (1x).\nLine 16: Converted 'talent.chimaera_shot' to 'talent.chimaera_shot.enabled' (1x).\nLine 17: Converted 'talent.steady_focus' to 'talent.steady_focus.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 4: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (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 '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.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (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 '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.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (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 '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.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (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 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (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 '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.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (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 '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.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 6: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: 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%2||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-5<variable.sync_remains&variable.sync_remains+40>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%2||boss&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%2)))||!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)))||target.time_to_die<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/2||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-5<variable.sync_remains&variable.sync_remains+40>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/2||boss&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/2)))||!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)))||target.time_to_die<25&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)'.\nLine 7: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (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.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.1.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.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted '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.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 7: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 7: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 7: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 7: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: 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%2||trinket.t1.has_use_buff&trinket.t1.cooldown.remains>variable.sync_remains-15&trinket.t1.cooldown.remains-5<variable.sync_remains&variable.sync_remains+40>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%2||boss&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%2)))||!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)))||target.time_to_die<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/2||trinket.t1.has_use_buff&trinket.t1.cooldown.remains>variable.sync_remains-15&trinket.t1.cooldown.remains-5<variable.sync_remains&variable.sync_remains+40>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/2||boss&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/2)))||!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)))||target.time_to_die<25&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)'.\n\nImported 6 action lists.\n",
["profile"] = "actions.precombat+=/summon_pet,if=!talent.lone_wolf\nactions.precombat+=/salvo,precast_time=10\nactions.precombat+=/use_item,name=algethar_puzzle_box\n# Precast Aimed Shot on one or two targets unless we could cleave it with Volley on two targets.\nactions.precombat+=/aimed_shot,if=active_enemies<3&(!talent.volley||active_enemies<2)\nactions.precombat+=/wailing_arrow,if=active_enemies>2||!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)||active_enemies>1||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<3||!talent.trick_shots\nactions+=/call_action_list,name=trickshots,strict=1,if=active_enemies>2\n\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.st+=/steady_shot,if=talent.steady_focus&(steady_focus_count&buff.steady_focus.remains<5||buff.steady_focus.down&!buff.trueshot.up)\nactions.st+=/aimed_shot,if=buff.trueshot.up&full_recharge_time<gcd+cast_time&talent.legacy_of_the_windrunners&talent.windrunners_guidance\nactions.st+=/kill_shot,if=buff.trueshot.down\nactions.st+=/volley,if=buff.salvo.up\nactions.st+=/steel_trap,if=buff.trueshot.down\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\nactions.st+=/kill_shot\nactions.st+=/trueshot,if=variable.trueshot_ready&(buff.trueshot.down||buff.trueshot.remains<5)\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_time<gcd+cast_time)&(!talent.chimaera_shot||active_enemies<2||ca_active)||buff.trick_shots.remains>execute_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_time<gcd+cast_time)&(!talent.chimaera_shot||active_enemies<2||ca_active)||buff.trick_shots.remains>execute_time&active_enemies>1\n# Refresh Steady Focus if it would run out while refreshing it.\nactions.st+=/steady_shot,if=talent.steady_focus&buff.steady_focus.remains<execute_time*2\nactions.st+=/volley\nactions.st+=/rapid_fire\nactions.st+=/wailing_arrow,if=buff.trueshot.down\nactions.st+=/kill_command,if=buff.trueshot.down\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+=/trueshot\nactions.trickshots+=/rapid_fire,if=buff.trick_shots.remains>=execute_time&talent.surging_shots\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,if=talent.serpentstalkers_trickery&(buff.trick_shots.remains>=execute_time&(buff.precise_shots.down||buff.trueshot.up||full_recharge_time<cast_time+gcd))\n# For no Serpentstalker's Trickery, target the highest Latent Poison stack. Same general rules as the previous line.\nactions.trickshots+=/aimed_shot,cycle_targets=1,if=(buff.trick_shots.remains>=execute_time&(buff.precise_shots.down||buff.trueshot.up||full_recharge_time<cast_time+gcd))\nactions.trickshots+=/rapid_fire,if=buff.trick_shots.remains>=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# Signals that cooldowns are active or ready to activate that is desirable to sync a buff effect with.\nactions.trinkets+=/variable,name=sync_ready,value=variable.trueshot_ready\n# Signals that the cooldowns that are desirable to sync a buff with are active.\nactions.trinkets+=/variable,name=sync_active,value=buff.trueshot.up\n# The amount of time until the cooldowns will be ready that are desirable to sync a buff effect with.\nactions.trinkets+=/variable,name=sync_remains,value=cooldown.trueshot.remains\n# Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times.\nactions.trinkets+=/variable,name=trinket_1_stronger,value=!trinket.2.has_cooldown||trinket.1.has_use_buff&(!trinket.2.has_use_buff||trinket.2.cooldown.duration<trinket.1.cooldown.duration||trinket.2.cast_time<trinket.1.cast_time||trinket.2.cast_time=trinket.1.cast_time&trinket.2.cooldown.duration=trinket.1.cooldown.duration)||!trinket.1.has_use_buff&(!trinket.2.has_use_buff&(trinket.2.cooldown.duration<trinket.1.cooldown.duration||trinket.2.cast_time<trinket.1.cast_time||trinket.2.cast_time=trinket.1.cast_time&trinket.2.cooldown.duration=trinket.1.cooldown.duration))\nactions.trinkets+=/variable,name=trinket_2_stronger,value=!trinket.1.has_cooldown||trinket.2.has_use_buff&(!trinket.1.has_use_buff||trinket.1.cooldown.duration<trinket.2.cooldown.duration||trinket.1.cast_time<trinket.2.cast_time||trinket.1.cast_time=trinket.2.cast_time&trinket.1.cooldown.duration=trinket.2.cooldown.duration)||!trinket.2.has_use_buff&(!trinket.1.has_use_buff&(trinket.1.cooldown.duration<trinket.2.cooldown.duration||trinket.1.cast_time<trinket.2.cast_time||trinket.1.cast_time=trinket.2.cast_time&trinket.1.cooldown.duration=trinket.2.cooldown.duration))\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%2||trinket.2.has_use_buff&trinket.2.cooldown.remains>variable.sync_remains-15&trinket.2.cooldown.remains-5<variable.sync_remains&variable.sync_remains+40>fight_remains)||variable.trinket_2_stronger&(trinket.2.cooldown.remains&(trinket.2.cooldown.remains-5<variable.sync_remains&variable.sync_remains>=20||trinket.2.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.1.cooldown.duration%2||boss&trinket.1.cooldown.duration<fight_remains&(variable.sync_remains+trinket.1.cooldown.duration>fight_remains)))||trinket.2.cooldown.ready&variable.sync_remains>20&variable.sync_remains<trinket.2.cooldown.duration%2)))||!trinket.1.has_use_buff&(trinket.1.cast_time=0||!variable.sync_active)&((!trinket.2.has_use_buff&(variable.trinket_1_stronger||trinket.2.cooldown.remains)||trinket.2.has_use_buff&(variable.sync_remains>20||trinket.2.cooldown.remains>20)))||target.time_to_die<25&(variable.trinket_1_stronger||trinket.2.cooldown.remains)\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%2||trinket.1.has_use_buff&trinket.1.cooldown.remains>variable.sync_remains-15&trinket.1.cooldown.remains-5<variable.sync_remains&variable.sync_remains+40>fight_remains)||variable.trinket_1_stronger&(trinket.1.cooldown.remains&(trinket.1.cooldown.remains-5<variable.sync_remains&variable.sync_remains>=20||trinket.1.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.2.cooldown.duration%2||boss&trinket.2.cooldown.duration<fight_remains&(variable.sync_remains+trinket.2.cooldown.duration>fight_remains)))||trinket.1.cooldown.ready&variable.sync_remains>20&variable.sync_remains<trinket.1.cooldown.duration%2)))||!trinket.2.has_use_buff&(trinket.2.cast_time=0||!variable.sync_active)&((!trinket.1.has_use_buff&(variable.trinket_2_stronger||trinket.1.cooldown.remains)||trinket.1.has_use_buff&(variable.sync_remains>20||trinket.1.cooldown.remains>20)))||target.time_to_die<25&(variable.trinket_2_stronger||trinket.1.cooldown.remains)",
["spec"] = 254,
},
["Restoration Druid"] = {
["builtIn"] = true,
["date"] = 20230325,
["spec"] = 105,
["desc"] = "Healer priorities are DPS-focused only.\n\n2023-03-23: Minor tweaks to Cat Form priority from SimulationCraft.",
["profile"] = "actions.precombat+=/heart_of_the_wild\nactions.precombat+=/prowl,if=talent.rake.enabled\nactions.precombat+=/cat_form,if=time=0&buff.moonkin_form.down&talent.rake.enabled\nactions.precombat+=/moonkin_form,if=time=0&buff.cat_form.down&talent.moonkin_form.enabled\n\n# Executed every time the actor is available.\nactions+=/skull_bash\nactions+=/solar_beam\nactions+=/berserking\n## actions+=/natures_vigil,if=!buff.prowl.up&!buff.shadowmeld.up\n## actions+=/regrowth,if=!buff.prowl.up&!buff.shadowmeld.up&settings.heal_in_groups,line_cd=7\nactions+=/use_items,if=!buff.prowl.up&!buff.shadowmeld.up\nactions+=/potion,if=!buff.prowl.up&!buff.shadowmeld.up\nactions+=/run_action_list,name=cat,if=talent.rake.enabled||buff.cat_form.up\nactions+=/run_action_list,name=owl,if=active_enemies>2&talent.moonkin_form.enabled&talent.convoke_the_spirits.enabled&cooldown.convoke_the_spirits.remains<=gcd.max&(buff.heart_of_the_wild.up||cooldown.heart_of_the_wild.remains>60-30*talent.cenarius_guidance.enabled||!talent.heart_of_the_wild.enabled)\nactions+=/moonkin_form,if=talent.moonkin_form.enabled&buff.cat_form.down\nactions+=/convoke_the_spirits,if=(buff.heart_of_the_wild.up||cooldown.heart_of_the_wild.remains>60-30*talent.cenarius_guidance.enabled||!talent.heart_of_the_wild.enabled)\nactions+=/adaptive_swarm,cycle_targets=1,if=dot.adaptive_swarm_damage.stack=2&dot.adaptive_swarm_damage.remains>2\nactions+=/adaptive_swarm,cycle_targets=1,if=dot.adaptive_swarm_damage.stack=1&dot.adaptive_swarm_damage.remains>2\nactions+=/adaptive_swarm,cycle_targets=1,if=dot.adaptive_swarm_damage.stack=3&dot.adaptive_swarm_damage.remains>2\nactions+=/adaptive_swarm,cycle_targets=1,if=dot.adaptive_swarm_damage.stack=4&dot.adaptive_swarm_damage.remains>2\nactions+=/adaptive_swarm,cycle_targets=1,if=!dot.adaptive_swarm_damage.ticking\nactions+=/sunfire,cycle_targets=1,if=refreshable&target.time_to_die>5&talent.improved_sunfire.enabled\nactions+=/moonfire,cycle_targets=1,if=refreshable&time_to_die>12\nactions+=/starsurge,if=active_enemies<8\nactions+=/sunfire,cycle_targets=1,if=refreshable&target.time_to_die>7&active_enemies<7\nactions+=/starfire,if=spell_targets.starfire>1\nactions+=/wrath\n\nactions.cat+=/rake,if=buff.shadowmeld.up||buff.prowl.up||buff.sudden_ambush.up\nactions.cat+=/heart_of_the_wild,if=(cooldown.convoke_the_spirits.remains<30||!talent.convoke_the_spirits.enabled)&!buff.heart_of_the_wild.up\nactions.cat+=/adaptive_swarm,cycle_targets=1,if=dot.adaptive_swarm_damage.stack=2&dot.adaptive_swarm_damage.remains>2\nactions.cat+=/adaptive_swarm,cycle_targets=1,if=dot.adaptive_swarm_damage.stack=1&dot.adaptive_swarm_damage.remains>2\nactions.cat+=/adaptive_swarm,cycle_targets=1,if=dot.adaptive_swarm_damage.stack=3&dot.adaptive_swarm_damage.remains>2\nactions.cat+=/adaptive_swarm,cycle_targets=1,if=dot.adaptive_swarm_damage.stack=4&dot.adaptive_swarm_damage.remains>2\nactions.cat+=/adaptive_swarm,cycle_targets=1,if=!dot.adaptive_swarm_damage.ticking\nactions.cat+=/run_action_list,name=owl,if=active_enemies>2&talent.moonkin_form.enabled&talent.convoke_the_spirits.enabled&cooldown.convoke_the_spirits.remains<=gcd.max&(buff.heart_of_the_wild.up||cooldown.heart_of_the_wild.remains>60-30*talent.cenarius_guidance.enabled||!talent.heart_of_the_wild.enabled)\nactions.cat+=/cat_form,if=(active_enemies<2||!talent.moonkin_form.enabled)&(!buff.cat_form.up&talent.convoke_the_spirits.enabled&cooldown.convoke_the_spirits.remains<=gcd.max&(buff.heart_of_the_wild.up||cooldown.heart_of_the_wild.remains>60-30*talent.cenarius_guidance.enabled||!talent.heart_of_the_wild.enabled))\nactions.cat+=/convoke_the_spirits,if=(buff.heart_of_the_wild.up||cooldown.heart_of_the_wild.remains>60-30*talent.cenarius_guidance.enabled||!talent.heart_of_the_wild.enabled)\nactions.cat+=/rake,if=remains<=gcd&combo_points<5&(talent.deep_focus.enabled&active_dot.rake<=1&dot.rake.refreshable)\nactions.cat+=/rip,if=remains<=gcd&combo_points=5&(talent.deep_focus.enabled&active_dot.rip<=1&dot.rip.refreshable)\nactions.cat+=/thrash_cat,target_if=refreshable&target.time_to_die>5&spell_targets.thrash_cat>4\nactions.cat+=/sunfire,cycle_targets=1,if=(refreshable&target.time_to_die>5)&!prev_gcd.1.cat_form&(active_enemies=1||talent.improved_sunfire.enabled)\nactions.cat+=/cat_form,if=!buff.cat_form.up&energy>50&((dot.thrash_cat.refreshable&spell_targets.swipe_cat>=9&talent.thrash.enabled)||(talent.deep_focus.enabled&dot.rip.refreshable&active_dot.rip<=1&active_enemies>=5))\nactions.cat+=/moonfire,cycle_targets=1,if=(refreshable&time_to_die>12&!ticking||(prev_gcd.1.sunfire&remains<duration*0.8&spell_targets.sunfire=1))&!prev_gcd.1.cat_form\nactions.cat+=/sunfire,if=prev_gcd.1.moonfire&remains<duration*0.8\nactions.cat+=/starsurge,if=active_enemies=1||(active_enemies<8&!buff.cat_form.up)\nactions.cat+=/starfire,if=time_to_die<10&spell_targets.starfire>1&(!talent.improved_swipe.enabled||spell_targets.swipe_cat>=9)\nactions.cat+=/cat_form,if=!buff.cat_form.up&energy>50\nactions.cat+=/ferocious_bite,if=(combo_points>3&target.1.time_to_die<3)||(combo_points=5&energy>=50&dot.rip.remains>10)&spell_targets.swipe_cat<4\nactions.cat+=/thrash_cat,cycle_targets=1,if=refreshable&target.time_to_die>5&spell_targets.thrash_cat>2\nactions.cat+=/rake,cycle_targets=1,if=dot.adaptive_swarm_damage.ticking&refreshable\nactions.cat+=/rip,cycle_targets=1,if=((refreshable||energy>90&remains<=10)&(combo_points=5&time_to_die>remains+24||(remains+combo_points*4<time_to_die&remains+4+combo_points*4>time_to_die))||!ticking&combo_points>2+spell_targets.swipe_cat*2)\nactions.cat+=/ferocious_bite,max_energy=1,if=combo_points=combo_points.max&(dot.rip.ticking||!talent.rip)\nactions.cat+=/rake,cycle_targets=1,if=(refreshable&time_to_die>10&spell_targets.swipe_cat<10)&(combo_points<5||remains<1)\nactions.cat+=/sunfire,cycle_targets=1,if=refreshable&target.time_to_die>5&active_enemies<7&!talent.improved_sunfire.enabled\nactions.cat+=/thrash_cat,cycle_targets=1,if=refreshable&target.time_to_die>5\nactions.cat+=/swipe_cat,if=active_enemies>1&combo_points<5&talent.improved_swipe.enabled\nactions.cat+=/shred,if=energy>60&combo_points<5\n\nactions.owl+=/moonkin_form,if=!buff.moonkin_form.up\nactions.owl+=/convoke_the_spirits",
["version"] = 20230325,
["warnings"] = "The import for 'cat' required some automated changes.\nLine 25: Converted 'talent.rip' to 'talent.rip.enabled' (1x).\n\nImported 4 action lists.\n",
["lists"] = {
["default"] = {
{
["enabled"] = true,
["description"] = "Executed every time the actor is available.",
["action"] = "skull_bash",
}, -- [1]
{
["action"] = "solar_beam",
["enabled"] = true,
}, -- [2]
{
["action"] = "berserking",
["enabled"] = true,
}, -- [3]
{
["enabled"] = true,
["criteria"] = "! buff.prowl.up & ! buff.shadowmeld.up",
["action"] = "use_items",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "! buff.prowl.up & ! buff.shadowmeld.up",
["action"] = "potion",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "talent.rake.enabled || buff.cat_form.up",
["action"] = "run_action_list",
["list_name"] = "cat",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "active_enemies > 2 & talent.moonkin_form.enabled & talent.convoke_the_spirits.enabled & cooldown.convoke_the_spirits.remains <= gcd.max & ( buff.heart_of_the_wild.up || cooldown.heart_of_the_wild.remains > 60 - 30 * talent.cenarius_guidance.enabled || ! talent.heart_of_the_wild.enabled )",
["action"] = "run_action_list",
["list_name"] = "owl",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "talent.moonkin_form.enabled & buff.cat_form.down",
["action"] = "moonkin_form",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "( buff.heart_of_the_wild.up || cooldown.heart_of_the_wild.remains > 60 - 30 * talent.cenarius_guidance.enabled || ! talent.heart_of_the_wild.enabled )",
["action"] = "convoke_the_spirits",
}, -- [9]
{
["enabled"] = true,
["action"] = "adaptive_swarm",
["criteria"] = "dot.adaptive_swarm_damage.stack = 2 & dot.adaptive_swarm_damage.remains > 2",
["cycle_targets"] = 1,
}, -- [10]
{
["enabled"] = true,
["action"] = "adaptive_swarm",
["criteria"] = "dot.adaptive_swarm_damage.stack = 1 & dot.adaptive_swarm_damage.remains > 2",
["cycle_targets"] = 1,
}, -- [11]
{
["enabled"] = true,
["action"] = "adaptive_swarm",
["criteria"] = "dot.adaptive_swarm_damage.stack = 3 & dot.adaptive_swarm_damage.remains > 2",
["cycle_targets"] = 1,
}, -- [12]
{
["enabled"] = true,
["action"] = "adaptive_swarm",
["criteria"] = "dot.adaptive_swarm_damage.stack = 4 & dot.adaptive_swarm_damage.remains > 2",
["cycle_targets"] = 1,
}, -- [13]
{
["enabled"] = true,
["action"] = "adaptive_swarm",
["criteria"] = "! dot.adaptive_swarm_damage.ticking",
["cycle_targets"] = 1,
}, -- [14]
{
["enabled"] = true,
["action"] = "sunfire",
["criteria"] = "refreshable & target.time_to_die > 5 & talent.improved_sunfire.enabled",
["cycle_targets"] = 1,
}, -- [15]
{
["enabled"] = true,
["action"] = "moonfire",
["criteria"] = "refreshable & time_to_die > 12",
["cycle_targets"] = 1,
}, -- [16]
{
["enabled"] = true,
["criteria"] = "active_enemies < 8",
["action"] = "starsurge",
}, -- [17]
{
["enabled"] = true,
["action"] = "sunfire",
["criteria"] = "refreshable & target.time_to_die > 7 & active_enemies < 7",
["cycle_targets"] = 1,
}, -- [18]
{
["enabled"] = true,
["criteria"] = "spell_targets.starfire > 1",
["action"] = "starfire",
}, -- [19]
{
["action"] = "wrath",
["enabled"] = true,
}, -- [20]
},
["owl"] = {
{
["enabled"] = true,
["criteria"] = "! buff.moonkin_form.up",
["action"] = "moonkin_form",
}, -- [1]
{
["action"] = "convoke_the_spirits",
["enabled"] = true,
}, -- [2]
},
["cat"] = {
{
["enabled"] = true,
["criteria"] = "buff.shadowmeld.up || buff.prowl.up || buff.sudden_ambush.up",
["action"] = "rake",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "( cooldown.convoke_the_spirits.remains < 30 || ! talent.convoke_the_spirits.enabled ) & ! buff.heart_of_the_wild.up",
["action"] = "heart_of_the_wild",
}, -- [2]
{
["enabled"] = true,
["action"] = "adaptive_swarm",
["criteria"] = "dot.adaptive_swarm_damage.stack = 2 & dot.adaptive_swarm_damage.remains > 2",
["cycle_targets"] = 1,
}, -- [3]
{
["enabled"] = true,
["action"] = "adaptive_swarm",
["criteria"] = "dot.adaptive_swarm_damage.stack = 1 & dot.adaptive_swarm_damage.remains > 2",
["cycle_targets"] = 1,
}, -- [4]
{
["enabled"] = true,
["action"] = "adaptive_swarm",
["criteria"] = "dot.adaptive_swarm_damage.stack = 3 & dot.adaptive_swarm_damage.remains > 2",
["cycle_targets"] = 1,
}, -- [5]
{
["enabled"] = true,
["action"] = "adaptive_swarm",
["criteria"] = "dot.adaptive_swarm_damage.stack = 4 & dot.adaptive_swarm_damage.remains > 2",
["cycle_targets"] = 1,
}, -- [6]
{
["enabled"] = true,
["action"] = "adaptive_swarm",
["criteria"] = "! dot.adaptive_swarm_damage.ticking",
["cycle_targets"] = 1,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "active_enemies > 2 & talent.moonkin_form.enabled & talent.convoke_the_spirits.enabled & cooldown.convoke_the_spirits.remains <= gcd.max & ( buff.heart_of_the_wild.up || cooldown.heart_of_the_wild.remains > 60 - 30 * talent.cenarius_guidance.enabled || ! talent.heart_of_the_wild.enabled )",
["action"] = "run_action_list",
["list_name"] = "owl",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "( active_enemies < 2 || ! talent.moonkin_form.enabled ) & ( ! buff.cat_form.up & talent.convoke_the_spirits.enabled & cooldown.convoke_the_spirits.remains <= gcd.max & ( buff.heart_of_the_wild.up || cooldown.heart_of_the_wild.remains > 60 - 30 * talent.cenarius_guidance.enabled || ! talent.heart_of_the_wild.enabled ) )",
["action"] = "cat_form",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "( buff.heart_of_the_wild.up || cooldown.heart_of_the_wild.remains > 60 - 30 * talent.cenarius_guidance.enabled || ! talent.heart_of_the_wild.enabled )",
["action"] = "convoke_the_spirits",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "remains <= gcd.max & combo_points < 5 & ( talent.deep_focus.enabled & active_dot.rake <= 1 & dot.rake.refreshable )",
["action"] = "rake",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "remains <= gcd.max & combo_points = 5 & ( talent.deep_focus.enabled & active_dot.rip <= 1 & dot.rip.refreshable )",
["action"] = "rip",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "refreshable & target.time_to_die > 5 & spell_targets.thrash_cat > 4",
["action"] = "thrash_cat",
}, -- [13]
{
["enabled"] = true,
["action"] = "sunfire",
["criteria"] = "( refreshable & target.time_to_die > 5 ) & ! prev_gcd.1.cat_form & ( active_enemies = 1 || talent.improved_sunfire.enabled )",
["cycle_targets"] = 1,
}, -- [14]
{
["enabled"] = true,
["criteria"] = "! buff.cat_form.up & energy > 50 & ( ( dot.thrash_cat.refreshable & spell_targets.swipe_cat >= 9 & talent.thrash.enabled ) || ( talent.deep_focus.enabled & dot.rip.refreshable & active_dot.rip <= 1 & active_enemies >= 5 ) )",
["action"] = "cat_form",
}, -- [15]
{
["enabled"] = true,
["action"] = "moonfire",
["criteria"] = "( refreshable & time_to_die > 12 & ! ticking || ( prev_gcd.1.sunfire & remains < duration * 0.8 & spell_targets.sunfire = 1 ) ) & ! prev_gcd.1.cat_form",
["cycle_targets"] = 1,
}, -- [16]
{
["enabled"] = true,
["criteria"] = "prev_gcd.1.moonfire & remains < duration * 0.8",
["action"] = "sunfire",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "active_enemies = 1 || ( active_enemies < 8 & ! buff.cat_form.up )",
["action"] = "starsurge",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "time_to_die < 10 & spell_targets.starfire > 1 & ( ! talent.improved_swipe.enabled || spell_targets.swipe_cat >= 9 )",
["action"] = "starfire",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "! buff.cat_form.up & energy > 50",
["action"] = "cat_form",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "( combo_points > 3 & time_to_die < 3 ) || ( combo_points = 5 & energy >= 50 & dot.rip.remains > 10 ) & spell_targets.swipe_cat < 4",
["action"] = "ferocious_bite",
}, -- [21]
{
["enabled"] = true,
["action"] = "thrash_cat",
["criteria"] = "refreshable & target.time_to_die > 5 & spell_targets.thrash_cat > 2",
["cycle_targets"] = 1,
}, -- [22]
{
["enabled"] = true,
["action"] = "rake",
["criteria"] = "dot.adaptive_swarm_damage.ticking & refreshable",
["cycle_targets"] = 1,
}, -- [23]
{
["enabled"] = true,
["action"] = "rip",
["criteria"] = "( ( refreshable || energy > 90 & remains <= 10 ) & ( combo_points = 5 & time_to_die > remains + 24 || ( remains + combo_points * 4 < time_to_die & remains + 4 + combo_points * 4 > time_to_die ) ) || ! ticking & combo_points > 2 + spell_targets.swipe_cat * 2 )",
["cycle_targets"] = 1,
}, -- [24]
{
["enabled"] = true,
["action"] = "ferocious_bite",
["criteria"] = "combo_points = combo_points.max & ( dot.rip.ticking || ! talent.rip.enabled )",
["max_energy"] = 1,
}, -- [25]
{
["enabled"] = true,
["action"] = "rake",
["criteria"] = "( refreshable & time_to_die > 10 & spell_targets.swipe_cat < 10 ) & ( combo_points < 5 || remains < 1 )",
["cycle_targets"] = 1,
}, -- [26]
{
["enabled"] = true,
["action"] = "sunfire",
["criteria"] = "refreshable & target.time_to_die > 5 & active_enemies < 7 & ! talent.improved_sunfire.enabled",
["cycle_targets"] = 1,
}, -- [27]
{
["enabled"] = true,
["action"] = "thrash_cat",
["criteria"] = "refreshable & target.time_to_die > 5",
["cycle_targets"] = 1,
}, -- [28]
{
["enabled"] = true,
["criteria"] = "active_enemies > 1 & combo_points < 5 & talent.improved_swipe.enabled",
["action"] = "swipe_cat",
}, -- [29]
{
["enabled"] = true,
["criteria"] = "energy > 60 & combo_points < 5",
["action"] = "shred",
}, -- [30]
},
["precombat"] = {
{
["action"] = "heart_of_the_wild",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["criteria"] = "talent.rake.enabled",
["action"] = "prowl",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "time = 0 & buff.moonkin_form.down & talent.rake.enabled",
["action"] = "cat_form",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "time = 0 & buff.cat_form.down & talent.moonkin_form.enabled",
["action"] = "moonkin_form",
}, -- [4]
},
},
["author"] = "Makahiki",
},
["Enhancement"] = {
["source"] = "https://github.com/simulationcraft/simc/blob/dragonflight/engine/class_modules/sc_shaman.cpp",
["builtIn"] = true,
["date"] = 20230209,
["spec"] = 263,
["desc"] = "",
["lists"] = {
["single"] = {
{
["enabled"] = true,
["criteria"] = "talent.thorims_invocation.enabled & buff.maelstrom_weapon.stack >= 1",
["action"] = "windstrike",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.hot_hand.up || buff.ashen_catalyst.stack = 8 || ( buff.ashen_catalyst.stack >= 5 & buff.maelstrom_of_elements.up & buff.maelstrom_weapon.stack <= 6 )",
["action"] = "lava_lash",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! buff.windfury_totem.up",
["action"] = "windfury_totem",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.doom_winds.up",
["action"] = "stormstrike",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.doom_winds.up",
["action"] = "crash_lightning",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "buff.doom_winds.up",
["action"] = "ice_strike",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "buff.doom_winds.up",
["action"] = "sundering",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "settings.burn_before_wave & talent.primordial_wave.enabled & talent.primal_maelstrom.enabled & cooldown.primordial_wave.remains < 2 * gcd.max & buff.maelstrom_weapon.stack >= 5",
["action"] = "lightning_bolt",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "buff.primordial_wave.down & ( raid_event.adds.in > 42 || raid_event.adds.in < 6 )",
["action"] = "primordial_wave",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "! ticking",
["action"] = "flame_shock",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & buff.primordial_wave.up & raid_event.adds.in > buff.primordial_wave.remains & ( ! buff.splintered_elements.up || fight_remains <= 12 )",
["action"] = "lightning_bolt",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "talent.elemental_spirits.enabled & ( charges = max_charges || buff.feral_spirit.up ) & buff.maelstrom_weapon.stack >= 8",
["action"] = "elemental_blast",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "talent.hailstorm.enabled",
["action"] = "ice_strike",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "set_bonus.tier29_2pc & buff.maelstrom_of_elements.down & buff.maelstrom_weapon.stack <= 5",
["action"] = "stormstrike",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "buff.hailstorm.up",
["action"] = "frost_shock",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "talent.molten_assault.enabled & dot.flame_shock.refreshable",
["action"] = "lava_lash",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "talent.deeply_rooted_elements.enabled || buff.earthen_weapon.up || buff.legacy_of_the_frost_witch.up",
["action"] = "windstrike",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "talent.deeply_rooted_elements.enabled || buff.earthen_weapon.up || buff.legacy_of_the_frost_witch.up",
["action"] = "stormstrike",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "( talent.elemental_spirits.enabled & buff.maelstrom_weapon.stack = 10 ) || ( ! talent.elemental_spirits.enabled & buff.maelstrom_weapon.stack >= 5 )",
["action"] = "elemental_blast",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "buff.maelstrom_weapon.stack >= 5",
["action"] = "lava_burst",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "buff.maelstrom_weapon.stack = 10 & buff.primordial_wave.down",
["action"] = "lightning_bolt",
}, -- [21]
{
["action"] = "windstrike",
["enabled"] = true,
}, -- [22]
{
["action"] = "stormstrike",
["enabled"] = true,
}, -- [23]
{
["enabled"] = true,
["criteria"] = "buff.windfury_totem.remains < 10",
["action"] = "windfury_totem",
}, -- [24]
{
["action"] = "ice_strike",
["enabled"] = true,
}, -- [25]
{
["action"] = "lava_lash",
["enabled"] = true,
}, -- [26]
{
["enabled"] = true,
["criteria"] = "talent.elemental_spirits.enabled & ( charges = max_charges || buff.feral_spirit.up ) & buff.maelstrom_weapon.stack >= 5",
["action"] = "elemental_blast",
}, -- [27]
{
["action"] = "bag_of_tricks",
["enabled"] = true,
}, -- [28]
{
["enabled"] = true,
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & buff.primordial_wave.down",
["action"] = "lightning_bolt",
}, -- [29]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in >= 40",
["action"] = "sundering",
}, -- [30]
{
["enabled"] = true,
["criteria"] = "talent.swirling_maelstrom.enabled & active_dot.flame_shock",
["action"] = "fire_nova",
}, -- [31]
{
["action"] = "frost_shock",
["enabled"] = true,
}, -- [32]
{
["action"] = "crash_lightning",
["enabled"] = true,
}, -- [33]
{
["enabled"] = true,
["criteria"] = "active_dot.flame_shock",
["action"] = "fire_nova",
}, -- [34]
{
["action"] = "earth_elemental",
["enabled"] = true,
}, -- [35]
{
["enabled"] = true,
["criteria"] = "settings.filler_shock",
["action"] = "flame_shock",
}, -- [36]
{
["enabled"] = true,
["criteria"] = "buff.windfury_totem.remains < 30",
["action"] = "windfury_totem",
}, -- [37]
},
["aoe"] = {
{
["enabled"] = true,
["criteria"] = "buff.doom_winds.up || ! buff.crash_lightning.up",
["action"] = "crash_lightning",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "( active_dot.flame_shock >= active_enemies || active_dot.flame_shock > 5 ) & buff.primordial_wave.up & buff.maelstrom_weapon.stack >= ( 5 + 5 * talent.overflowing_maelstrom.enabled ) & ( ! buff.splintered_elements.up || fight_remains <= 12 || raid_event.adds.remains <= gcd.max )",
["action"] = "lightning_bolt",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.doom_winds.up",
["action"] = "sundering",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "active_dot.flame_shock = 6 || ( active_dot.flame_shock >= 4 & active_dot.flame_shock >= active_enemies )",
["action"] = "fire_nova",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "settings.burn_before_wave & talent.primordial_wave.enabled & talent.primal_maelstrom.enabled & cooldown.primordial_wave.remains < 2 * gcd.max & buff.maelstrom_weapon.stack >= 5",
["action"] = "chain_lightning",
}, -- [5]
{
["enabled"] = true,
["action"] = "primordial_wave",
["criteria"] = "! buff.primordial_wave.up",
["cycle_targets"] = 1,
}, -- [6]
{
["enabled"] = true,
["criteria"] = "talent.thorims_invocation.enabled & ti_chain_lightning & buff.maelstrom_weapon.stack > 1",
["action"] = "windstrike",
}, -- [7]
{
["enabled"] = true,
["action"] = "lava_lash",
["criteria"] = "talent.lashing_flames.enabled & dot.flame_shock.ticking & ( active_dot.flame_shock < active_enemies ) & active_dot.flame_shock < 6",
["cycle_targets"] = 1,
}, -- [8]
{
["enabled"] = true,
["criteria"] = "talent.molten_assault.enabled & dot.flame_shock.ticking & ( active_dot.flame_shock < active_enemies ) & active_dot.flame_shock < 6",
["action"] = "lava_lash",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "! ticking",
["action"] = "flame_shock",
}, -- [10]
{
["enabled"] = true,
["action"] = "flame_shock",
["criteria"] = "talent.fire_nova.enabled & ! ticking & ( active_dot.flame_shock < active_enemies ) & active_dot.flame_shock < 6",
["cycle_targets"] = 1,
}, -- [11]
{
["enabled"] = true,
["criteria"] = "talent.hailstorm.enabled",
["action"] = "ice_strike",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "talent.hailstorm.enabled & buff.hailstorm.up",
["action"] = "frost_shock",
}, -- [13]
{
["action"] = "sundering",
["enabled"] = true,
}, -- [14]
{
["enabled"] = true,
["criteria"] = "active_dot.flame_shock >= 4",
["action"] = "fire_nova",
}, -- [15]
{
["enabled"] = true,
["action"] = "lava_lash",
["criteria"] = "talent.lashing_flames.enabled",
["cycle_targets"] = 1,
}, -- [16]
{
["enabled"] = true,
["criteria"] = "active_dot.flame_shock >= 3",
["action"] = "fire_nova",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "( ! talent.elemental_spirits.enabled || ( talent.elemental_spirits.enabled & ( charges = max_charges || buff.feral_spirit.up ) ) ) & buff.maelstrom_weapon.stack = 10 & ( ! talent.crashing_storms.enabled || active_enemies <= 3 )",
["action"] = "elemental_blast",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "buff.maelstrom_weapon.stack = 10",
["action"] = "chain_lightning",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "buff.cl_crash_lightning.up",
["action"] = "crash_lightning",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "buff.crash_lightning.up & buff.ashen_catalyst.stack = 8",
["action"] = "lava_lash",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "buff.crash_lightning.up",
["action"] = "windstrike",
}, -- [22]
{
["enabled"] = true,
["criteria"] = "buff.crash_lightning.up & ( buff.converging_storms.stack = 6 || ( set_bonus.tier29_2pc & buff.maelstrom_of_elements.down & buff.maelstrom_weapon.stack <= 5 ) )",
["action"] = "stormstrike",
}, -- [23]
{
["enabled"] = true,
["criteria"] = "talent.molten_assault.enabled",
["action"] = "lava_lash",
}, -- [24]
{
["enabled"] = true,
["criteria"] = "talent.swirling_maelstrom.enabled",
["action"] = "ice_strike",
}, -- [25]
{
["enabled"] = true,
["criteria"] = "buff.crash_lightning.up",
["action"] = "stormstrike",
}, -- [26]
{
["enabled"] = true,
["criteria"] = "buff.crash_lightning.up",
["action"] = "ice_strike",
}, -- [27]
{
["enabled"] = true,
["criteria"] = "buff.crash_lightning.up",
["action"] = "lava_lash",
}, -- [28]
{
["enabled"] = true,
["criteria"] = "( ! talent.elemental_spirits.enabled || ( talent.elemental_spirits.enabled & ( charges = max_charges || buff.feral_spirit.up ) ) ) & buff.maelstrom_weapon.stack >= 5 & ( ! talent.crashing_storms.enabled || active_enemies <= 3 )",
["action"] = "elemental_blast",
}, -- [29]
{
["enabled"] = true,
["criteria"] = "active_dot.flame_shock >= 2",
["action"] = "fire_nova",
}, -- [30]
{
["action"] = "crash_lightning",
["enabled"] = true,
}, -- [31]
{
["action"] = "windstrike",
["enabled"] = true,
}, -- [32]
{
["enabled"] = true,
["criteria"] = "talent.molten_assault.enabled",
["action"] = "lava_lash",
}, -- [33]
{
["enabled"] = true,
["criteria"] = "talent.swirling_maelstrom.enabled",
["action"] = "ice_strike",
}, -- [34]
{
["action"] = "stormstrike",
["enabled"] = true,
}, -- [35]
{
["action"] = "ice_strike",
["enabled"] = true,
}, -- [36]
{
["action"] = "lava_lash",
["enabled"] = true,
}, -- [37]
{
["enabled"] = true,
["action"] = "flame_shock",
["criteria"] = "settings.filler_shock",
["cycle_targets"] = 1,
}, -- [38]
{
["action"] = "frost_shock",
["enabled"] = true,
}, -- [39]
{
["enabled"] = true,
["criteria"] = "buff.maelstrom_weapon.stack >= 5",
["action"] = "chain_lightning",
}, -- [40]
{
["action"] = "earth_elemental",
["enabled"] = true,
}, -- [41]
{
["enabled"] = true,
["criteria"] = "buff.windfury_totem.remains < 30",
["action"] = "windfury_totem",
}, -- [42]
},
["default"] = {
{
["enabled"] = true,
["criteria"] = "( talent.ascendance.enabled & raid_event.adds.in >= 90 & cooldown.ascendance.remains < 10 ) || ( talent.doom_winds.enabled & buff.doom_winds.up ) || ( ! talent.doom_winds.enabled & ! talent.ascendance.enabled & talent.feral_spirit.enabled & buff.feral_spirit.up ) || ( ! talent.doom_winds.enabled & ! talent.ascendance.enabled & ! talent.feral_spirit.enabled ) || active_enemies > 1 || boss & fight_remains < 30",
["action"] = "potion",
}, -- [1]
{
["enabled"] = true,
["description"] = "interrupt of casts.",
["action"] = "wind_shear",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "settings.hostile_dispel",
["action"] = "purge",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "settings.hostile_dispel",
["action"] = "greater_purge",
}, -- [4]
{
["enabled"] = true,
["name"] = "the_first_sigil",
["action"] = "the_first_sigil",
["criteria"] = "( talent.ascendance.enabled & raid_event.adds.in >= 90 & cooldown.ascendance.remains < 10 ) || ( talent.hot_hand.enabled & buff.molten_weapon.up ) || buff.icy_edge.up || ( talent.stormflurry.enabled & buff.crackling_surge.up ) || active_enemies > 1 || fight_remains < 30",
}, -- [5]
{
["enabled"] = true,
["name"] = "cache_of_acquired_treasures",
["action"] = "cache_of_acquired_treasures",
["criteria"] = "buff.acquired_sword.up || fight_remains < 25",
}, -- [6]
{
["enabled"] = true,
["name"] = "scars_of_fraternal_strife",
["action"] = "scars_of_fraternal_strife",
["criteria"] = "! buff.scars_of_fraternal_strife_4.up || fight_remains < 31 || raid_event.adds.in < 16 || active_enemies > 1",
}, -- [7]
{
["enabled"] = true,
["slots"] = "trinket1",
["action"] = "trinket1",
["criteria"] = "! variable.trinket1_is_weird",
}, -- [8]
{
["enabled"] = true,
["slots"] = "trinket2",
["action"] = "trinket2",
["criteria"] = "! variable.trinket2_is_weird",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "! talent.ascendance.enabled || buff.ascendance.up || cooldown.ascendance.remains > 50",
["action"] = "blood_fury",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "! talent.ascendance.enabled || buff.ascendance.up",
["action"] = "berserking",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "! talent.ascendance.enabled || buff.ascendance.up || cooldown.ascendance.remains > 50",
["action"] = "fireblood",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "! talent.ascendance.enabled || buff.ascendance.up || cooldown.ascendance.remains > 50",
["action"] = "ancestral_call",
}, -- [13]
{
["action"] = "feral_spirit",
["enabled"] = true,
}, -- [14]
{
["enabled"] = true,
["criteria"] = "( ti_lightning_bolt & active_enemies = 1 & raid_event.adds.in >= 90 ) || ( ti_chain_lightning & active_enemies > 1 )",
["action"] = "ascendance",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in >= 90 || active_enemies > 1",
["action"] = "doom_winds",
}, -- [16]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "if only one enemy, priority follows the 'single' action list.",
["strict"] = 1,
["criteria"] = "active_enemies = 1",
["list_name"] = "single",
}, -- [17]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "on multiple enemies, the priority follows the 'aoe' action list.",
["strict"] = 1,
["criteria"] = "active_enemies > 1",
["list_name"] = "aoe",
}, -- [18]
},
["precombat"] = {
{
["action"] = "windfury_weapon",
["enabled"] = true,
}, -- [1]
{
["action"] = "flametongue_weapon",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.lightning_shield.down & ( buff.earth_shield.down || talent.elemental_orbit.enabled )",
["action"] = "lightning_shield",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.lightning_shield.up & buff.earth_shield.down & talent.elemental_orbit.enabled",
["action"] = "earth_shield",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "settings.project_windfury > 0 & totem.windfury_totem.remains >= settings.project_windfury & buff.windfury_totem.down",
["action"] = "totemic_projection",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "time = 0 || buff.windfury_totem.down",
["action"] = "windfury_totem",
}, -- [6]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t1.is.the_first_sigil || trinket.t1.is.scars_of_fraternal_strife || trinket.t1.is.cache_of_acquired_treasures",
["var_name"] = "trinket1_is_weird",
}, -- [7]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t2.is.the_first_sigil || trinket.t2.is.scars_of_fraternal_strife || trinket.t2.is.cache_of_acquired_treasures",
["var_name"] = "trinket2_is_weird",
}, -- [8]
},
},
["version"] = 20230209,
["warnings"] = "The import for 'single' required some automated changes.\nLine 8: Converted 'talent.primordial_wave' to 'talent.primordial_wave.enabled' (1x).\nLine 8: Converted 'talent.primal_maelstrom' to 'talent.primal_maelstrom.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 5: Converted 'talent.primordial_wave' to 'talent.primordial_wave.enabled' (1x).\nLine 5: Converted 'talent.primal_maelstrom' to 'talent.primal_maelstrom.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 7: Converted 'trinket.1.is.the_first_sigil' to 'trinket.t1.is.the_first_sigil' (1x).\nLine 7: Converted 'trinket.1.is.scars_of_fraternal_strife' to 'trinket.t1.is.scars_of_fraternal_strife' (1x).\nLine 7: Converted 'trinket.1.is.cache_of_acquired_treasures' to 'trinket.t1.is.cache_of_acquired_treasures' (1x).\nLine 8: Converted 'trinket.2.is.the_first_sigil' to 'trinket.t2.is.the_first_sigil' (1x).\nLine 8: Converted 'trinket.2.is.scars_of_fraternal_strife' to 'trinket.t2.is.scars_of_fraternal_strife' (1x).\nLine 8: Converted 'trinket.2.is.cache_of_acquired_treasures' to 'trinket.t2.is.cache_of_acquired_treasures' (1x).\n\nImported 4 action lists.\n",
["profile"] = "actions.precombat+=/windfury_weapon\nactions.precombat+=/flametongue_weapon\nactions.precombat+=/lightning_shield,if=buff.lightning_shield.down&(buff.earth_shield.down||talent.elemental_orbit.enabled)\nactions.precombat+=/earth_shield,if=buff.lightning_shield.up&buff.earth_shield.down&talent.elemental_orbit.enabled\nactions.precombat+=/totemic_projection,if=settings.project_windfury>0&totem.windfury_totem.remains>=settings.project_windfury&buff.windfury_totem.down\nactions.precombat+=/windfury_totem,if=time=0||buff.windfury_totem.down\nactions.precombat+=/variable,name=trinket1_is_weird,value=trinket.1.is.the_first_sigil||trinket.1.is.scars_of_fraternal_strife||trinket.1.is.cache_of_acquired_treasures\nactions.precombat+=/variable,name=trinket2_is_weird,value=trinket.2.is.the_first_sigil||trinket.2.is.scars_of_fraternal_strife||trinket.2.is.cache_of_acquired_treasures\n\nactions+=/potion,if=(talent.ascendance.enabled&raid_event.adds.in>=90&cooldown.ascendance.remains<10)||(talent.doom_winds.enabled&buff.doom_winds.up)||(!talent.doom_winds.enabled&!talent.ascendance.enabled&talent.feral_spirit.enabled&buff.feral_spirit.up)||(!talent.doom_winds.enabled&!talent.ascendance.enabled&!talent.feral_spirit.enabled)||active_enemies>1||boss&fight_remains<30\n# interrupt of casts.\nactions+=/wind_shear\nactions+=/purge,if=settings.hostile_dispel\nactions+=/greater_purge,if=settings.hostile_dispel\nactions+=/use_item,name=the_first_sigil,if=(talent.ascendance.enabled&raid_event.adds.in>=90&cooldown.ascendance.remains<10)||(talent.hot_hand.enabled&buff.molten_weapon.up)||buff.icy_edge.up||(talent.stormflurry.enabled&buff.crackling_surge.up)||active_enemies>1||fight_remains<30\nactions+=/use_item,name=cache_of_acquired_treasures,if=buff.acquired_sword.up||fight_remains<25\nactions+=/use_item,name=scars_of_fraternal_strife,if=!buff.scars_of_fraternal_strife_4.up||fight_remains<31||raid_event.adds.in<16||active_enemies>1\nactions+=/use_items,slots=trinket1,if=!variable.trinket1_is_weird\nactions+=/use_items,slots=trinket2,if=!variable.trinket2_is_weird\nactions+=/blood_fury,if=!talent.ascendance.enabled||buff.ascendance.up||cooldown.ascendance.remains>50\nactions+=/berserking,if=!talent.ascendance.enabled||buff.ascendance.up\nactions+=/fireblood,if=!talent.ascendance.enabled||buff.ascendance.up||cooldown.ascendance.remains>50\nactions+=/ancestral_call,if=!talent.ascendance.enabled||buff.ascendance.up||cooldown.ascendance.remains>50\nactions+=/feral_spirit\nactions+=/ascendance,if=(ti_lightning_bolt&active_enemies=1&raid_event.adds.in>=90)||(ti_chain_lightning&active_enemies>1)\nactions+=/doom_winds,if=raid_event.adds.in>=90||active_enemies>1\n# if only one enemy, priority follows the 'single' action list.\nactions+=/call_action_list,name=single,strict=1,if=active_enemies=1\n# on multiple enemies, the priority follows the 'aoe' action list.\nactions+=/call_action_list,name=aoe,strict=1,if=active_enemies>1\n\nactions.single=windstrike,if=talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>=1\nactions.single+=/lava_lash,if=buff.hot_hand.up||buff.ashen_catalyst.stack=8||(buff.ashen_catalyst.stack>=5&buff.maelstrom_of_elements.up&buff.maelstrom_weapon.stack<=6)\nactions.single+=/windfury_totem,if=!buff.windfury_totem.up\nactions.single+=/stormstrike,if=buff.doom_winds.up\nactions.single+=/crash_lightning,if=buff.doom_winds.up\nactions.single+=/ice_strike,if=buff.doom_winds.up\nactions.single+=/sundering,if=buff.doom_winds.up\nactions.single+=/lightning_bolt,if=settings.burn_before_wave&talent.primordial_wave&talent.primal_maelstrom&cooldown.primordial_wave.remains<2*gcd.max&buff.maelstrom_weapon.stack>=5\nactions.single+=/primordial_wave,if=buff.primordial_wave.down&(raid_event.adds.in>42||raid_event.adds.in<6)\nactions.single+=/flame_shock,if=!ticking\nactions.single+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=5&buff.primordial_wave.up&raid_event.adds.in>buff.primordial_wave.remains&(!buff.splintered_elements.up||fight_remains<=12)\nactions.single+=/elemental_blast,if=talent.elemental_spirits.enabled&(charges=max_charges||buff.feral_spirit.up)&buff.maelstrom_weapon.stack>=8\nactions.single+=/ice_strike,if=talent.hailstorm.enabled\nactions.single+=/stormstrike,if=set_bonus.tier29_2pc&buff.maelstrom_of_elements.down&buff.maelstrom_weapon.stack<=5\nactions.single+=/frost_shock,if=buff.hailstorm.up\nactions.single+=/lava_lash,if=talent.molten_assault.enabled&dot.flame_shock.refreshable\nactions.single+=/windstrike,if=talent.deeply_rooted_elements.enabled||buff.earthen_weapon.up||buff.legacy_of_the_frost_witch.up\nactions.single+=/stormstrike,if=talent.deeply_rooted_elements.enabled||buff.earthen_weapon.up||buff.legacy_of_the_frost_witch.up\nactions.single+=/elemental_blast,if=(talent.elemental_spirits.enabled&buff.maelstrom_weapon.stack=10)||(!talent.elemental_spirits.enabled&buff.maelstrom_weapon.stack>=5)\nactions.single+=/lava_burst,if=buff.maelstrom_weapon.stack>=5\nactions.single+=/lightning_bolt,if=buff.maelstrom_weapon.stack=10&buff.primordial_wave.down\nactions.single+=/windstrike\nactions.single+=/stormstrike\nactions.single+=/windfury_totem,if=buff.windfury_totem.remains<10\nactions.single+=/ice_strike\nactions.single+=/lava_lash\nactions.single+=/elemental_blast,if=talent.elemental_spirits.enabled&(charges=max_charges||buff.feral_spirit.up)&buff.maelstrom_weapon.stack>=5\nactions.single+=/bag_of_tricks\nactions.single+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=5&buff.primordial_wave.down\nactions.single+=/sundering,if=raid_event.adds.in>=40\nactions.single+=/fire_nova,if=talent.swirling_maelstrom.enabled&active_dot.flame_shock\nactions.single+=/frost_shock\nactions.single+=/crash_lightning\nactions.single+=/fire_nova,if=active_dot.flame_shock\nactions.single+=/earth_elemental\nactions.single+=/flame_shock,if=settings.filler_shock\nactions.single+=/windfury_totem,if=buff.windfury_totem.remains<30\n\nactions.aoe+=/crash_lightning,if=buff.doom_winds.up||!buff.crash_lightning.up\nactions.aoe+=/lightning_bolt,if=(active_dot.flame_shock>=active_enemies||active_dot.flame_shock>5)&buff.primordial_wave.up&buff.maelstrom_weapon.stack>=(5+5*talent.overflowing_maelstrom.enabled)&(!buff.splintered_elements.up||fight_remains<=12||raid_event.adds.remains<=gcd)\nactions.aoe+=/sundering,if=buff.doom_winds.up\nactions.aoe+=/fire_nova,if=active_dot.flame_shock=6||(active_dot.flame_shock>=4&active_dot.flame_shock>=active_enemies)\nactions.aoe+=/chain_lightning,if=settings.burn_before_wave&talent.primordial_wave&talent.primal_maelstrom&cooldown.primordial_wave.remains<2*gcd.max&buff.maelstrom_weapon.stack>=5\nactions.aoe+=/primordial_wave,cycle_targets=1,if=!buff.primordial_wave.up\nactions.aoe+=/windstrike,if=talent.thorims_invocation.enabled&ti_chain_lightning&buff.maelstrom_weapon.stack>1\nactions.aoe+=/lava_lash,cycle_targets=1,if=talent.lashing_flames.enabled&dot.flame_shock.ticking&(active_dot.flame_shock<active_enemies)&active_dot.flame_shock<6\nactions.aoe+=/lava_lash,if=talent.molten_assault.enabled&dot.flame_shock.ticking&(active_dot.flame_shock<active_enemies)&active_dot.flame_shock<6\nactions.aoe+=/flame_shock,if=!ticking\nactions.aoe+=/flame_shock,cycle_targets=1,if=talent.fire_nova.enabled&!ticking&(active_dot.flame_shock<active_enemies)&active_dot.flame_shock<6\nactions.aoe+=/ice_strike,if=talent.hailstorm.enabled\nactions.aoe+=/frost_shock,if=talent.hailstorm.enabled&buff.hailstorm.up\nactions.aoe+=/sundering\nactions.aoe+=/fire_nova,if=active_dot.flame_shock>=4\nactions.aoe+=/lava_lash,cycle_targets=1,if=talent.lashing_flames.enabled\nactions.aoe+=/fire_nova,if=active_dot.flame_shock>=3\nactions.aoe+=/elemental_blast,if=(!talent.elemental_spirits.enabled||(talent.elemental_spirits.enabled&(charges=max_charges||buff.feral_spirit.up)))&buff.maelstrom_weapon.stack=10&(!talent.crashing_storms.enabled||active_enemies<=3)\nactions.aoe+=/chain_lightning,if=buff.maelstrom_weapon.stack=10\nactions.aoe+=/crash_lightning,if=buff.cl_crash_lightning.up\nactions.aoe+=/lava_lash,if=buff.crash_lightning.up&buff.ashen_catalyst.stack=8\nactions.aoe+=/windstrike,if=buff.crash_lightning.up\nactions.aoe+=/stormstrike,if=buff.crash_lightning.up&(buff.converging_storms.stack=6||(set_bonus.tier29_2pc&buff.maelstrom_of_elements.down&buff.maelstrom_weapon.stack<=5))\nactions.aoe+=/lava_lash,if=buff.crash_lightning.up,if=talent.molten_assault.enabled\nactions.aoe+=/ice_strike,if=buff.crash_lightning.up,if=talent.swirling_maelstrom.enabled\nactions.aoe+=/stormstrike,if=buff.crash_lightning.up\nactions.aoe+=/ice_strike,if=buff.crash_lightning.up\nactions.aoe+=/lava_lash,if=buff.crash_lightning.up\nactions.aoe+=/elemental_blast,if=(!talent.elemental_spirits.enabled||(talent.elemental_spirits.enabled&(charges=max_charges||buff.feral_spirit.up)))&buff.maelstrom_weapon.stack>=5&(!talent.crashing_storms.enabled||active_enemies<=3)\nactions.aoe+=/fire_nova,if=active_dot.flame_shock>=2\nactions.aoe+=/crash_lightning\nactions.aoe+=/windstrike\nactions.aoe+=/lava_lash,if=talent.molten_assault.enabled\nactions.aoe+=/ice_strike,if=talent.swirling_maelstrom.enabled\nactions.aoe+=/stormstrike\nactions.aoe+=/ice_strike\nactions.aoe+=/lava_lash\nactions.aoe+=/flame_shock,cycle_targets=1,if=settings.filler_shock\nactions.aoe+=/frost_shock\nactions.aoe+=/chain_lightning,if=buff.maelstrom_weapon.stack>=5\nactions.aoe+=/earth_elemental\nactions.aoe+=/windfury_totem,if=buff.windfury_totem.remains<30",
["author"] = "SimC",
},
["Guardian"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230508,
["author"] = "SimC",
["desc"] = "2023-05-08: Add Tier 30 weapon.\n\n2023-03-06: Revisited if_build and catweave_bear; restored missing mitigation priority for bigger defensive CDs. Fix vicious_cycle talent check.\n\n2023-02-25: Updated for 'if_build' changes with tweaks to support the \"Use Maul and Raze in Ironfur Build\" option.\n\n2023-02-21: Routine update including changes to \"Catweave\" options.",
["lists"] = {
["default"] = {
{
["enabled"] = true,
["action"] = "skull_bash",
["description"] = "Executed every time the actor is available.",
["criteria"] = "! buff.prowl.up",
}, -- [1]
{
["action"] = "soothe",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["action"] = "trinket1",
["slot"] = "trinket1",
}, -- [3]
{
["enabled"] = true,
["action"] = "trinket2",
["slot"] = "trinket2",
}, -- [4]
{
["enabled"] = true,
["name"] = "djaruun_pillar_of_the_elder_flame",
["action"] = "djaruun_pillar_of_the_elder_flame",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "( ( talent.heart_of_the_wild.enabled & buff.heart_of_the_wild.up ) || ( ( buff.berserk_bear.up || buff.incarnation_guardian_of_ursoc.up ) & ( ! druid.catweave_bear & ! druid.owlweave_bear ) ) )",
["action"] = "potion",
}, -- [6]
{
["enabled"] = true,
["action"] = "run_action_list",
["criteria"] = "buff.cat_form.up & ! druid.catweave_bear || ! tanking & druid.catweave_bear & ( ! talent.tooth_and_claw.enabled || buff.tooth_and_claw.remains > 1.5 ) & ( buff.incarnation_guardian_of_ursoc.down & buff.berserk_bear.down & cooldown.thrash_bear.remains > 0 & cooldown.mangle.remains > 0 & dot.moonfire.remains >= 2 || buff.cat_form.up & energy > 25 || buff.heart_of_the_wild.up & energy > 90 )",
["list_name"] = "catweave",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "! buff.bear_form.up",
["action"] = "bear_form",
}, -- [8]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "mitigation",
}, -- [9]
{
["enabled"] = true,
["action"] = "run_action_list",
["list_name"] = "bear",
}, -- [10]
},
["precombat"] = {
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.thorns_of_iron.enabled & talent.reinforced_fur.enabled",
["var_name"] = "if_build",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! ( talent.thorns_of_iron.enabled & talent.reinforced_fur.enabled ) || settings.maul_anyway",
["var_name"] = "maul_build",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! buff.prowl.up",
["action"] = "mark_of_the_wild",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "talent.heart_of_the_wild.enabled & ( druid.catweave_bear & buff.cat_form.up || druid.owlweave_bear & buff.moonkin_form.up )",
["action"] = "heart_of_the_wild",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.cat_form.up",
["action"] = "prowl",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "! buff.any_form.up",
["action"] = "bear_form",
}, -- [6]
},
["mitigation"] = {
{
["enabled"] = true,
["criteria"] = "tanking & ! variable.if_build & incoming_damage_5s > ironfur_damage_threshold & buff.ironfur.remains < 3 * haste",
["action"] = "ironfur",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "health.pct < 65",
["action"] = "regrowth",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "health.pct < 65",
["action"] = "renewal",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "tanking & health.pct < 65",
["action"] = "frenzied_regeneration",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "tanking & health.pct < 75 & incoming_damage_5s > 0.1 * health.max",
["action"] = "barkskin",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "buff.survival_instincts.down & buff.barkskin.down & health.pct < 60 & incoming_damage_5s > 0.25 * health.max",
["action"] = "survival_instincts",
}, -- [6]
},
["bear"] = {
{
["enabled"] = true,
["criteria"] = "( ( ! ticking & time_to_die > 12 ) || ( refreshable & time_to_die > 12 ) ) & active_enemies < 8",
["action"] = "moonfire",
["cycle_targets"] = 1,
}, -- [1]
{
["action"] = "bristling_fur",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.bear_form.up",
["action"] = "barkskin",
}, -- [3]
{
["action"] = "convoke_the_spirits",
["enabled"] = true,
}, -- [4]
{
["action"] = "berserk",
["enabled"] = true,
}, -- [5]
{
["action"] = "incarnation",
["enabled"] = true,
}, -- [6]
{
["enabled"] = true,
["criteria"] = "buff.incarnation_guardian_of_ursoc.down & cooldown.incarnation_guardian_of_ursoc.remains > 60 || buff.incarnation_guardian_of_ursoc.up || talent.convoke_the_spirits.enabled",
["action"] = "rage_of_the_sleeper",
}, -- [7]
{
["action"] = "lunar_beam",
["enabled"] = true,
}, -- [8]
{
["enabled"] = true,
["criteria"] = "( buff.berserk_bear.up || buff.incarnation_guardian_of_ursoc.up )",
["action"] = "berserking",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "buff.rage_of_the_sleeper.up & buff.tooth_and_claw.stack > 0 & active_enemies <= 6 & variable.maul_build",
["action"] = "maul",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "buff.rage_of_the_sleeper.up & buff.tooth_and_claw.stack > 0 & variable.maul_build",
["action"] = "raze",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "! variable.if_build & ( ! tanking & ! buff.ironfur.up || rage > 90 )",
["action"] = "ironfur",
["cycle_targets"] = 1,
}, -- [12]
{
["enabled"] = true,
["criteria"] = "variable.if_build & ( rage > 90 || ( buff.incarnation.up || buff.berserk_bear.up ) & rage > 20 )",
["action"] = "ironfur",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "buff.galactic_guardian.up & buff.galactic_guardian.remains <= 2",
["action"] = "moonfire",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "buff.gore.up & active_enemies < 11 || buff.vicious_cycle_mangle.stack = 3",
["action"] = "mangle",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "( ( buff.incarnation.up || buff.berserk_bear.up ) & active_enemies <= 5 & ( buff.tooth_and_claw.stack >= 2 ) ) & variable.maul_build & ! talent.thorns_of_iron.enabled",
["action"] = "maul",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "( ( buff.incarnation.up || buff.berserk_bear.up ) & ( buff.tooth_and_claw.stack >= 2 ) ) & variable.maul_build & ! talent.thorns_of_iron.enabled",
["action"] = "raze",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "refreshable || dot.thrash_bear.stack < 3 || active_enemies >= 5",
["action"] = "thrash_bear",
["cycle_targets"] = 1,
}, -- [18]
{
["enabled"] = true,
["criteria"] = "rage.deficit > 10 & settings.mangle_more",
["action"] = "mangle",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "buff.incarnation_guardian_of_ursoc.down & buff.berserk_bear.down & active_enemies >= 11",
["action"] = "swipe_bear",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "( buff.tooth_and_claw.up & active_enemies <= 5 )",
["action"] = "maul",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "active_enemies <= 5 & buff.vicious_cycle_maul.stack >= 3 || active_enemies < 4 & ! talent.vicious_cycle.enabled & variable.maul_build & ! talent.thorns_of_iron.enabled",
["action"] = "maul",
}, -- [22]
{
["enabled"] = true,
["criteria"] = "( buff.tooth_and_claw.up )",
["action"] = "raze",
}, -- [23]
{
["enabled"] = true,
["criteria"] = "buff.vicious_cycle_maul.stack >= 3 & variable.maul_build & ! talent.thorns_of_iron.enabled || ! talent.vicious_cycle.enabled & variable.maul_build & ! talent.thorns_of_iron.enabled",
["action"] = "raze",
}, -- [24]
{
["enabled"] = true,
["criteria"] = "( buff.incarnation.up & active_enemies <= 4 ) || ( buff.incarnation.up & talent.soul_of_the_forest.enabled & active_enemies <= 5 ) || ( ( rage < 90 ) & active_enemies < 11 ) || ( ( rage < 85 ) & active_enemies < 11 & talent.soul_of_the_forest.enabled )",
["action"] = "mangle",
}, -- [25]
{
["enabled"] = true,
["criteria"] = "active_enemies > 1",
["action"] = "thrash_bear",
}, -- [26]
{
["enabled"] = true,
["criteria"] = "dot.thrash_bear.stack > 2",
["action"] = "pulverize",
}, -- [27]
{
["action"] = "thrash_bear",
["enabled"] = true,
}, -- [28]
{
["action"] = "swipe_bear",
["enabled"] = true,
}, -- [29]
},
["catweave"] = {
{
["enabled"] = true,
["criteria"] = "talent.heart_of_the_wild.enabled & ! buff.heart_of_the_wild.up & ! buff.cat_form.up",
["action"] = "heart_of_the_wild",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "! buff.cat_form.up",
["action"] = "cat_form",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.prowl.up",
["action"] = "rake",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "talent.heart_of_the_wild.enabled & ! buff.heart_of_the_wild.up",
["action"] = "heart_of_the_wild",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "! dot.rake.ticking & combo_points < 5",
["action"] = "rake",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "! dot.rip.ticking & combo_points >= 3",
["action"] = "rip",
}, -- [6]
{
["action"] = "convoke_the_spirits",
["enabled"] = true,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "combo_points >= 4 & energy > 50",
["action"] = "ferocious_bite",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "combo_points < 5 & spell_targets.swipe_cat > 1",
["action"] = "swipe_cat",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "combo_points < 5",
["action"] = "shred",
}, -- [10]
},
},
["version"] = 20230508,
["warnings"] = "The import for 'default' required some automated changes.\nLine 7: Converted 'talent.tooth_and_claw' to 'talent.tooth_and_claw.enabled' (1x).\n\nImported 5 action lists.\n",
["profile"] = "actions.precombat+=/variable,name=if_build,value=talent.thorns_of_iron.enabled&talent.reinforced_fur.enabled\nactions.precombat+=/variable,name=maul_build,value=!(talent.thorns_of_iron.enabled&talent.reinforced_fur.enabled)||settings.maul_anyway\nactions.precombat+=/mark_of_the_wild,if=!buff.prowl.up\nactions.precombat+=/heart_of_the_wild,if=talent.heart_of_the_wild.enabled&(druid.catweave_bear&buff.cat_form.up||druid.owlweave_bear&buff.moonkin_form.up)\nactions.precombat+=/prowl,if=buff.cat_form.up\nactions.precombat+=/bear_form,if=!buff.any_form.up\n\n# Executed every time the actor is available.\nactions=skull_bash,if=!buff.prowl.up\nactions+=/soothe\nactions+=/use_item,slot=trinket1\nactions+=/use_item,slot=trinket2\nactions+=/use_item,name=djaruun_pillar_of_the_elder_flame\nactions+=/potion,if=((talent.heart_of_the_wild.enabled&buff.heart_of_the_wild.up)||((buff.berserk_bear.up||buff.incarnation_guardian_of_ursoc.up)&(!druid.catweave_bear&!druid.owlweave_bear)))\nactions+=/run_action_list,name=catweave,if=buff.cat_form.up&!druid.catweave_bear||!tanking&druid.catweave_bear&(!talent.tooth_and_claw||buff.tooth_and_claw.remains>1.5)&(buff.incarnation_guardian_of_ursoc.down&buff.berserk_bear.down&cooldown.thrash_bear.remains>0&cooldown.mangle.remains>0&dot.moonfire.remains>=2||buff.cat_form.up&energy>25||buff.heart_of_the_wild.up&energy>90)\nactions+=/bear_form,if=!buff.bear_form.up\nactions+=/call_action_list,name=mitigation\nactions+=/run_action_list,name=bear\n\nactions.bear+=/moonfire,cycle_targets=1,if=((!ticking&time_to_die>12)||(refreshable&time_to_die>12))&active_enemies<8\nactions.bear+=/bristling_fur\nactions.bear+=/barkskin,if=buff.bear_form.up\nactions.bear+=/convoke_the_spirits\nactions.bear+=/berserk_bear\nactions.bear+=/incarnation\nactions.bear+=/rage_of_the_sleeper,if=buff.incarnation_guardian_of_ursoc.down&cooldown.incarnation_guardian_of_ursoc.remains>60||buff.incarnation_guardian_of_ursoc.up||talent.convoke_the_spirits.enabled\nactions.bear+=/lunar_beam\nactions.bear+=/berserking,if=(buff.berserk_bear.up||buff.incarnation_guardian_of_ursoc.up)\nactions.bear+=/maul,if=buff.rage_of_the_sleeper.up&buff.tooth_and_claw.stack>0&active_enemies<=6&variable.maul_build\nactions.bear+=/raze,if=buff.rage_of_the_sleeper.up&buff.tooth_and_claw.stack>0&variable.maul_build\nactions.bear+=/ironfur,cycle_targets=1,if=!variable.if_build&(!tanking&!buff.ironfur.up||rage>90)\nactions.bear+=/ironfur,if=variable.if_build&(rage>90||(buff.incarnation.up||buff.berserk_bear.up)&rage>20)\nactions.bear+=/moonfire,if=buff.galactic_guardian.up&buff.galactic_guardian.remains<=2\nactions.bear+=/mangle,if=buff.gore.up&active_enemies<11||buff.vicious_cycle_mangle.stack=3\nactions.bear+=/maul,if=((buff.incarnation.up||buff.berserk_bear.up)&active_enemies<=5&(buff.tooth_and_claw.stack>=2))&variable.maul_build&!talent.thorns_of_iron.enabled\nactions.bear+=/raze,if=((buff.incarnation.up||buff.berserk_bear.up)&(buff.tooth_and_claw.stack>=2))&variable.maul_build&!talent.thorns_of_iron.enabled\nactions.bear+=/thrash_bear,cycle_targets=1,if=refreshable||dot.thrash_bear.stack<3||active_enemies>=5\nactions.bear+=/mangle,if=rage.deficit>10&settings.mangle_more\nactions.bear+=/swipe,if=buff.incarnation_guardian_of_ursoc.down&buff.berserk_bear.down&active_enemies>=11\nactions.bear+=/maul,if=(buff.tooth_and_claw.up&active_enemies<=5)\nactions.bear+=/maul,if=active_enemies<=5&buff.vicious_cycle_maul.stack>=3||active_enemies<4&!talent.vicious_cycle.enabled&variable.maul_build&!talent.thorns_of_iron.enabled\nactions.bear+=/raze,if=(buff.tooth_and_claw.up)\nactions.bear+=/raze,if=buff.vicious_cycle_maul.stack>=3&variable.maul_build&!talent.thorns_of_iron.enabled||!talent.vicious_cycle.enabled&variable.maul_build&!talent.thorns_of_iron.enabled\nactions.bear+=/mangle,if=(buff.incarnation.up&active_enemies<=4)||(buff.incarnation.up&talent.soul_of_the_forest.enabled&active_enemies<=5)||((rage<90)&active_enemies<11)||((rage<85)&active_enemies<11&talent.soul_of_the_forest.enabled)\nactions.bear+=/thrash_bear,if=active_enemies>1\nactions.bear+=/pulverize,if=dot.thrash_bear.stack>2\nactions.bear+=/thrash_bear\nactions.bear+=/swipe_bear\n\nactions.catweave=heart_of_the_wild,if=talent.heart_of_the_wild.enabled&!buff.heart_of_the_wild.up&!buff.cat_form.up\nactions.catweave+=/cat_form,if=!buff.cat_form.up\nactions.catweave+=/rake,if=buff.prowl.up\nactions.catweave+=/heart_of_the_wild,if=talent.heart_of_the_wild.enabled&!buff.heart_of_the_wild.up\nactions.catweave+=/rake,if=!dot.rake.ticking&combo_points<5\nactions.catweave+=/rip,if=!dot.rip.ticking&combo_points>=3\nactions.catweave+=/convoke_the_spirits\nactions.catweave+=/ferocious_bite,if=combo_points>=4&energy>50\nactions.catweave+=/swipe_cat,if=combo_points<5&spell_targets.swipe_cat>1\nactions.catweave+=/shred,if=combo_points<5\n\nactions.mitigation=ironfur,if=tanking&!variable.if_build&incoming_damage_5s>ironfur_damage_threshold&buff.ironfur.remains<3*haste\nactions.mitigation+=/regrowth,if=health.pct<65\nactions.mitigation+=/renewal,if=health.pct<65\nactions.mitigation+=/frenzied_regeneration,if=tanking&health.pct<65\nactions.mitigation+=/barkskin,if=tanking&health.pct<75&incoming_damage_5s>0.1*health.max\nactions.mitigation+=/survival_instincts,if=buff.survival_instincts.down&buff.barkskin.down&health.pct<60&incoming_damage_5s>0.25*health.max",
["spec"] = 104,
},
["Frost Mage"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230508,
["author"] = "SimC",
["desc"] = "2023-05-08: Updates from SimC; limited_ice_lance now factors in Slick Ice as well.\n\n2023-05-02: Update for 10.1.\n\n2023-03-28: Add experimental option for the \"less Ice Lance\" build.",
["lists"] = {
["default"] = {
{
["action"] = "counterspell",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["criteria"] = "cooldown.flurry.charges_fractional < 1",
["action"] = "water_jet",
}, -- [2]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "cds",
}, -- [3]
{
["enabled"] = true,
["action"] = "run_action_list",
["strict"] = 1,
["criteria"] = "active_enemies >= 7 & ! set_bonus.tier30_2pc || active_enemies >= 3 & talent.ice_caller.enabled",
["list_name"] = "aoe",
}, -- [4]
{
["enabled"] = true,
["action"] = "run_action_list",
["list_name"] = "st",
}, -- [5]
},
["precombat"] = {
{
["action"] = "arcane_intellect",
["enabled"] = true,
}, -- [1]
{
["action"] = "water_elemental",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "active_enemies >= 2",
["action"] = "blizzard",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "active_enemies = 1",
["action"] = "frostbolt",
}, -- [4]
},
["aoe"] = {
{
["enabled"] = true,
["criteria"] = "buff.snowstorm.stack = buff.snowstorm.max_stack & debuff.frozen.up & ( prev_gcd.1.frost_nova || prev_gcd.1.ice_nova || prev_off_gcd.freeze )",
["action"] = "cone_of_cold",
}, -- [1]
{
["action"] = "frozen_orb",
["enabled"] = true,
}, -- [2]
{
["action"] = "blizzard",
["enabled"] = true,
}, -- [3]
{
["action"] = "comet_storm",
["enabled"] = true,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "( target.level < level + 3 || target.is_add ) & ( ! talent.snowstorm.enabled & debuff.frozen.down || cooldown.cone_of_cold.ready & buff.snowstorm.stack = buff.snowstorm.max_stack )",
["action"] = "freeze",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "( target.level < level + 3 || target.is_add ) & ( prev_gcd.1.comet_storm || cooldown.cone_of_cold.ready & buff.snowstorm.stack = buff.snowstorm.max_stack & gcd.max < 1 )",
["action"] = "ice_nova",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "( target.level < level + 3 || target.is_add ) & active_enemies >= 5 & cooldown.cone_of_cold.ready & buff.snowstorm.stack = buff.snowstorm.max_stack & gcd.max < 1",
["action"] = "frost_nova",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "buff.snowstorm.stack = buff.snowstorm.max_stack",
["action"] = "cone_of_cold",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "cooldown_react & remaining_winters_chill = 0",
["action"] = "flurry",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "buff.fingers_of_frost.react || debuff.frozen.remains > travel_time || remaining_winters_chill",
["action"] = "ice_lance",
}, -- [10]
{
["action"] = "shifting_power",
["enabled"] = true,
}, -- [11]
{
["action"] = "ice_nova",
["enabled"] = true,
}, -- [12]
{
["action"] = "meteor",
["enabled"] = true,
}, -- [13]
{
["enabled"] = true,
["criteria"] = "active_enemies >= 7",
["action"] = "dragons_breath",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "mana.pct > 30 & active_enemies >= 7",
["action"] = "arcane_explosion",
}, -- [15]
{
["action"] = "ebonbolt",
["enabled"] = true,
}, -- [16]
{
["action"] = "frostbolt",
["enabled"] = true,
}, -- [17]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "movement",
}, -- [18]
},
["cds"] = {
{
["enabled"] = true,
["criteria"] = "buff.exhaustion.up & buff.bloodlust.down",
["action"] = "time_warp",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "prev_off_gcd.icy_veins || boss & fight_remains < 60",
["action"] = "potion",
}, -- [2]
{
["enabled"] = true,
["description"] = "The Mage Discord doesn't check remaining_winters_chill, but that's because sims start with a fresh state and the addon doesn't.",
["criteria"] = "time = 0 & active_enemies <= 2",
["action"] = "flurry",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.rune_of_power.down & ( buff.icy_veins.down || talent.rune_of_power.enabled & ( remaining_winters_chill = 2 || active_enemies >= 3 & talent.ice_caller.enabled ) )",
["action"] = "icy_veins",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.rune_of_power.down & cooldown.icy_veins.remains > 20 & ( remaining_winters_chill = 2 || active_enemies >= 3 & talent.ice_caller.enabled )",
["action"] = "rune_of_power",
}, -- [5]
{
["action"] = "use_items",
["enabled"] = true,
}, -- [6]
{
["action"] = "blood_fury",
["enabled"] = true,
}, -- [7]
{
["action"] = "berserking",
["enabled"] = true,
}, -- [8]
{
["action"] = "lights_judgment",
["enabled"] = true,
}, -- [9]
{
["action"] = "fireblood",
["enabled"] = true,
}, -- [10]
{
["action"] = "ancestral_call",
["enabled"] = true,
}, -- [11]
},
["st"] = {
{
["enabled"] = true,
["criteria"] = "prev_gcd.1.flurry",
["action"] = "meteor",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "prev_gcd.1.flurry",
["action"] = "comet_storm",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "cooldown_react & remaining_winters_chill = 0 & debuff.winters_chill.down & ( prev_gcd.1.frostbolt || prev_gcd.1.glacial_spike )",
["action"] = "flurry",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "remaining_winters_chill = 1 & buff.freezing_winds.down",
["action"] = "ray_of_frost",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "remaining_winters_chill",
["action"] = "glacial_spike",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "buff.snowstorm.stack = buff.snowstorm.max_stack & remaining_winters_chill",
["action"] = "cone_of_cold",
}, -- [6]
{
["action"] = "frozen_orb",
["enabled"] = true,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "active_enemies >= 2 & talent.ice_caller.enabled & talent.freezing_rain.enabled",
["action"] = "blizzard",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "buff.rune_of_power.down & buff.icy_veins.down || cooldown.icy_veins.remains < 20",
["action"] = "shifting_power",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "! limited_ice_lance & ( buff.fingers_of_frost.react & ! prev_gcd.1.glacial_spike || remaining_winters_chill )",
["action"] = "ice_lance",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "limited_ice_lance & active_enemies >= 2 & ( remaining_winters_chill = 2 || remaining_winters_chill = 1 & buff.brain_freeze.react || remaining_winters_chill & buff.rune_of_power.up || buff.fingers_of_frost.react )",
["action"] = "ice_lance",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "limited_ice_lance & active_enemies = 1 & ( remaining_winters_chill = 2 || remaining_winters_chill = 1 & buff.brain_freeze.react )",
["action"] = "ice_lance",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "limited_ice_lance & active_enemies = 1 & ( remaining_winters_chill || buff.fingers_of_frost.react ) & buff.icy_veins.remains < 10 & cooldown.icy_veins.remains > 30",
["action"] = "ice_lance",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "active_enemies >= 4",
["action"] = "ice_nova",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "action.flurry.cooldown_react",
["action"] = "glacial_spike",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "cooldown.flurry.charges_fractional < 1",
["action"] = "ebonbolt",
}, -- [16]
{
["action"] = "bag_of_tricks",
["enabled"] = true,
}, -- [17]
{
["action"] = "frostbolt",
["enabled"] = true,
}, -- [18]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "movement",
}, -- [19]
},
["movement"] = {
{
["enabled"] = true,
["criteria"] = "movement.distance > 10",
["action"] = "blink",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.ice_floes.down",
["action"] = "ice_floes",
}, -- [2]
{
["action"] = "ice_nova",
["enabled"] = true,
}, -- [3]
{
["enabled"] = true,
["criteria"] = "mana.pct > 30 & active_enemies >= 2",
["action"] = "arcane_explosion",
}, -- [4]
{
["action"] = "fire_blast",
["enabled"] = true,
}, -- [5]
{
["action"] = "ice_lance",
["enabled"] = true,
}, -- [6]
},
},
["version"] = 20230508,
["warnings"] = "The import for 'default' required some automated changes.\nLine 4: Converted 'talent.ice_caller' to 'talent.ice_caller.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 5: Converted 'talent.snowstorm' to 'talent.snowstorm.enabled' (1x).\n\nThe import for 'cds' required some automated changes.\nLine 4: Converted 'talent.rune_of_power' to 'talent.rune_of_power.enabled' (1x).\nLine 4: Converted 'talent.ice_caller' to 'talent.ice_caller.enabled' (1x).\nLine 5: Converted 'talent.ice_caller' to 'talent.ice_caller.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 8: Converted 'talent.ice_caller' to 'talent.ice_caller.enabled' (1x).\nLine 8: Converted 'talent.freezing_rain' to 'talent.freezing_rain.enabled' (1x).\n\nImported 6 action lists.\n",
["profile"] = "actions.precombat+=/arcane_intellect\nactions.precombat+=/summon_water_elemental\nactions.precombat+=/blizzard,if=active_enemies>=2\nactions.precombat+=/frostbolt,if=active_enemies=1\n\nactions=counterspell\nactions+=/water_jet,if=cooldown.flurry.charges_fractional<1\nactions+=/call_action_list,name=cds\nactions+=/run_action_list,name=aoe,strict=1,if=active_enemies>=7&!set_bonus.tier30_2pc||active_enemies>=3&talent.ice_caller\nactions+=/run_action_list,name=st\n\nactions.aoe=cone_of_cold,if=buff.snowstorm.stack=buff.snowstorm.max_stack&debuff.frozen.up&(prev_gcd.1.frost_nova||prev_gcd.1.ice_nova||prev_off_gcd.freeze)\nactions.aoe+=/frozen_orb\nactions.aoe+=/blizzard\nactions.aoe+=/comet_storm\nactions.aoe+=/freeze,if=(target.level<level+3||target.is_add)&(!talent.snowstorm&debuff.frozen.down||cooldown.cone_of_cold.ready&buff.snowstorm.stack=buff.snowstorm.max_stack)\nactions.aoe+=/ice_nova,if=(target.level<level+3||target.is_add)&(prev_gcd.1.comet_storm||cooldown.cone_of_cold.ready&buff.snowstorm.stack=buff.snowstorm.max_stack&gcd.max<1)\nactions.aoe+=/frost_nova,if=(target.level<level+3||target.is_add)&active_enemies>=5&cooldown.cone_of_cold.ready&buff.snowstorm.stack=buff.snowstorm.max_stack&gcd.max<1\nactions.aoe+=/cone_of_cold,if=buff.snowstorm.stack=buff.snowstorm.max_stack\nactions.aoe+=/flurry,if=cooldown_react&remaining_winters_chill=0\nactions.aoe+=/ice_lance,if=buff.fingers_of_frost.react||debuff.frozen.remains>travel_time||remaining_winters_chill\nactions.aoe+=/shifting_power\nactions.aoe+=/ice_nova\nactions.aoe+=/meteor\nactions.aoe+=/dragons_breath,if=active_enemies>=7\nactions.aoe+=/arcane_explosion,if=mana.pct>30&active_enemies>=7\nactions.aoe+=/ebonbolt\nactions.aoe+=/frostbolt\nactions.aoe+=/call_action_list,name=movement\n\nactions.cds+=/time_warp,if=buff.exhaustion.up&buff.bloodlust.down\nactions.cds+=/potion,if=prev_off_gcd.icy_veins||boss&fight_remains<60\n# The Mage Discord doesn't check remaining_winters_chill, but that's because sims start with a fresh state and the addon doesn't.\nactions.cds+=/flurry,if=time=0&active_enemies<=2\nactions.cds+=/icy_veins,if=buff.rune_of_power.down&(buff.icy_veins.down||talent.rune_of_power&(remaining_winters_chill=2||active_enemies>=3&talent.ice_caller))\nactions.cds+=/rune_of_power,if=buff.rune_of_power.down&cooldown.icy_veins.remains>20&(remaining_winters_chill=2||active_enemies>=3&talent.ice_caller)\nactions.cds+=/use_items\n## External buffs are not invoked by the addon, as the player can't choose to trigger them personally.\n## actions.cds+=/invoke_external_buff,name=power_infusion,if=buff.power_infusion.down\n## actions.cds+=/invoke_external_buff,name=blessing_of_summer,if=buff.blessing_of_summer.down\nactions.cds+=/blood_fury\nactions.cds+=/berserking\nactions.cds+=/lights_judgment\nactions.cds+=/fireblood\nactions.cds+=/ancestral_call\n\nactions.movement=blink_any,if=movement.distance>10\nactions.movement+=/ice_floes,if=buff.ice_floes.down\nactions.movement+=/ice_nova\nactions.movement+=/arcane_explosion,if=mana.pct>30&active_enemies>=2\nactions.movement+=/fire_blast\nactions.movement+=/ice_lance\n\nactions.st=meteor,if=prev_gcd.1.flurry\nactions.st+=/comet_storm,if=prev_gcd.1.flurry\nactions.st+=/flurry,if=cooldown_react&remaining_winters_chill=0&debuff.winters_chill.down&(prev_gcd.1.frostbolt||prev_gcd.1.glacial_spike)\nactions.st+=/ray_of_frost,if=remaining_winters_chill=1&buff.freezing_winds.down\nactions.st+=/glacial_spike,if=remaining_winters_chill\nactions.st+=/cone_of_cold,if=buff.snowstorm.stack=buff.snowstorm.max_stack&remaining_winters_chill\nactions.st+=/frozen_orb\nactions.st+=/blizzard,if=active_enemies>=2&talent.ice_caller&talent.freezing_rain\nactions.st+=/shifting_power,if=buff.rune_of_power.down&buff.icy_veins.down||cooldown.icy_veins.remains<20\nactions.st+=/ice_lance,if=!limited_ice_lance&(buff.fingers_of_frost.react&!prev_gcd.1.glacial_spike||remaining_winters_chill)\nactions.st+=/ice_lance,if=limited_ice_lance&active_enemies>=2&(remaining_winters_chill=2||remaining_winters_chill=1&buff.brain_freeze.react||remaining_winters_chill&buff.rune_of_power.up||buff.fingers_of_frost.react)\nactions.st+=/ice_lance,if=limited_ice_lance&active_enemies=1&(remaining_winters_chill=2||remaining_winters_chill=1&buff.brain_freeze.react)\nactions.st+=/ice_lance,if=limited_ice_lance&active_enemies=1&(remaining_winters_chill||buff.fingers_of_frost.react)&buff.icy_veins.remains<10&cooldown.icy_veins.remains>30\nactions.st+=/ice_nova,if=active_enemies>=4\nactions.st+=/glacial_spike,if=action.flurry.cooldown_react\nactions.st+=/ebonbolt,if=cooldown.flurry.charges_fractional<1\nactions.st+=/bag_of_tricks\nactions.st+=/frostbolt\nactions.st+=/call_action_list,name=movement",
["spec"] = 64,
},
["Fire"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230508,
["author"] = "SimC",
["desc"] = "2023-05-08: Updates for 10.1, including many variables shifted from priority to internal code.\n\n2023-03-20: Modify priority for \"Instant-Only When Moving\" setting.\n\n2023-03-27: Remove Scorch > Pyroblast hardcast scenario.\n\n2023-04-02: Revise Scorch > Pyroblast to check Hot Streak.",
["lists"] = {
["combustion_cooldowns"] = {
{
["action"] = "potion",
["enabled"] = true,
}, -- [1]
{
["action"] = "blood_fury",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.combustion.up",
["action"] = "berserking",
}, -- [3]
{
["action"] = "fireblood",
["enabled"] = true,
}, -- [4]
{
["action"] = "ancestral_call",
["enabled"] = true,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "( talent.temporal_warp.enabled || runeforge.temporal_warp.enabled ) & buff.exhaustion.up",
["action"] = "time_warp",
}, -- [6]
{
["enabled"] = true,
["action"] = "gladiators_badge",
["effect_name"] = "gladiators_badge",
}, -- [7]
{
["enabled"] = true,
["name"] = "irideus_fragment",
["action"] = "irideus_fragment",
}, -- [8]
{
["enabled"] = true,
["name"] = "spoils_of_neltharus",
["action"] = "spoils_of_neltharus",
}, -- [9]
{
["enabled"] = true,
["name"] = "tome_of_unstable_power",
["action"] = "tome_of_unstable_power",
}, -- [10]
{
["enabled"] = true,
["name"] = "timebreaching_talon",
["action"] = "timebreaching_talon",
}, -- [11]
{
["enabled"] = true,
["name"] = "voidmenders_shadowgem",
["action"] = "voidmenders_shadowgem",
}, -- [12]
{
["enabled"] = true,
["name"] = "horn_of_valor",
["action"] = "horn_of_valor",
}, -- [13]
},
["combustion_phase"] = {
{
["enabled"] = true,
["criteria"] = "buff.combustion.down",
["action"] = "lights_judgment",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.combustion.down",
["action"] = "bag_of_tricks",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "active_enemies > 1 & buff.combustion.down",
["action"] = "living_bomb",
}, -- [3]
{
["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",
}, -- [4]
{
["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",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "variable.time_to_combustion > 60",
["name"] = "neural_synapse_enhancer",
["action"] = "neural_synapse_enhancer",
}, -- [6]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "active_talents",
}, -- [7]
{
["enabled"] = true,
["description"] = "If Combustion is down, precast something before activating it.",
["criteria"] = "buff.combustion.down & cooldown.combustion.remains < cast_time & active_enemies >= variable.combustion_flamestrike",
["action"] = "flamestrike",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "buff.combustion.down & buff.sun_kings_blessing_ready.up & buff.sun_kings_blessing_ready.remains > cast_time & buff.sun_kings_blessing_ready.expiration_delay_remains = 0",
["action"] = "pyroblast",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "buff.combustion.down & buff.pyroclasm.react & buff.pyroclasm.remains > cast_time",
["action"] = "pyroblast",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "buff.combustion.down & cooldown.combustion.remains < cast_time & ! conduit.flame_accretion.enabled",
["action"] = "fireball",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "buff.combustion.down & cooldown.combustion.remains < cast_time",
["action"] = "scorch",
}, -- [12]
{
["enabled"] = true,
["use_while_casting"] = 1,
["criteria"] = "hot_streak_spells_in_flight = 0 & buff.combustion.down & variable.time_to_combustion <= 0 & ( ! runeforge.disciplinary_command.enabled || buff.disciplinary_command.up || buff.disciplinary_command_frost.up & talent.rune_of_power.enabled & cooldown.buff_disciplinary_command.ready ) & ( ! runeforge.grisly_icicle.enabled || debuff.grisly_icicle.up ) & ( ! covenant.necrolord || cooldown.deathborne.remains || buff.deathborne.up ) & ( ! covenant.venthyr || cooldown.mirrors_of_torment.remains ) & ( 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 )",
["use_off_gcd"] = 1,
["description"] = "Combustion should be used when the precast is almost finished.",
["action"] = "combustion",
}, -- [13]
{
["enabled"] = true,
["description"] = "Rune of Power can be used in Combustion if it is down, but this should only be done if there is more Combustion time to benefit from than there would be from an SKB Combustion later.",
["criteria"] = "buff.rune_of_power.down & variable.extended_combustion_remains > variable.skb_duration",
["action"] = "rune_of_power",
}, -- [14]
{
["enabled"] = true,
["use_while_casting"] = 1,
["criteria"] = "! talent.feel_the_burn.enabled & ! conduit.infernal_cascade.enabled & ! variable.fire_blast_pooling & ( ! set_bonus.tier28_4pc || debuff.mirrors_of_torment.down || buff.sun_kings_blessing_ready.down || action.pyroblast.executing ) & buff.combustion.up & ! ( buff.firestorm.react || 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",
}, -- [15]
{
["enabled"] = true,
["use_while_casting"] = 1,
["criteria"] = "conduit.infernal_cascade.enabled & ! variable.fire_blast_pooling & ( ! set_bonus.tier28_4pc || debuff.mirrors_of_torment.down || buff.sun_kings_blessing_ready.down || action.pyroblast.executing ) & ( ! equipped.hyperthread_wristwraps || ! cooldown.hyperthread_wristwraps_300142.ready || charges > 1 || debuff.mirrors_of_torment.up ) & ( variable.expected_fire_blasts >= variable.needed_fire_blasts || buff.combustion.remains < gcd.max || variable.extended_combustion_remains <= buff.infernal_cascade.duration || buff.infernal_cascade.stack < 2 || buff.infernal_cascade.remains < gcd.max || cooldown.shifting_power.ready & variable.use_shifting_power || equipped.hyperthread_wristwraps & cooldown.hyperthread_wristwraps_300142.ready ) & buff.combustion.up & ( ! ( buff.firestorm.react || buff.hyperthermia.react ) || buff.infernal_cascade.remains < 0.5 ) & ! buff.hot_streak.react & hot_streak_spells_in_flight + buff.heating_up.react * ( gcd.remains > 0 ) < 2",
["use_off_gcd"] = 1,
["action"] = "fire_blast",
}, -- [16]
{
["enabled"] = true,
["use_while_casting"] = 1,
["criteria"] = "talent.feel_the_burn.enabled & ! variable.fire_blast_pooling & ( ! set_bonus.tier28_4pc || debuff.mirrors_of_torment.down || buff.sun_kings_blessing_ready.down || action.pyroblast.executing ) & ( ! equipped.hyperthread_wristwraps || ! cooldown.hyperthread_wristwraps_300142.ready || charges > 1 || debuff.mirrors_of_torment.up ) & ( variable.expected_fire_blasts >= variable.needed_fire_blasts || buff.combustion.remains < gcd.max || variable.extended_combustion_remains <= buff.feel_the_burn.duration || buff.feel_the_burn.stack < 2 || buff.feel_the_burn.remains < gcd.max || cooldown.shifting_power.ready & variable.use_shifting_power || equipped.hyperthread_wristwraps & cooldown.hyperthread_wristwraps_300142.ready ) & buff.combustion.up & ( ! ( buff.firestorm.react || buff.hyperthermia.react ) || buff.feel_the_burn.remains < 0.5 ) & ! buff.hot_streak.react & hot_streak_spells_in_flight + buff.heating_up.react * ( gcd.remains > 0 ) < 2",
["use_off_gcd"] = 1,
["action"] = "fire_blast",
}, -- [17]
{
["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",
}, -- [18]
{
["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",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "( buff.firestorm.react || buff.hyperthermia.react )",
["action"] = "pyroblast",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "buff.hot_streak.react & buff.combustion.up",
["action"] = "pyroblast",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "prev_gcd.1.scorch & buff.heating_up.react & active_enemies < variable.combustion_flamestrike & buff.combustion.up",
["action"] = "pyroblast",
}, -- [22]
{
["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"] = "variable.use_shifting_power & buff.combustion.up & ! action.fire_blast.charges & ( action.phoenix_flames.charges < action.phoenix_flames.max_charges || talent.alexstraszas_fury.enabled )",
["action"] = "shifting_power",
}, -- [23]
{
["enabled"] = true,
["description"] = "If a Sun King's Blessing proc would be used, Rune of Power should be used first if the existing Rune of Power will expire during the cast.",
["criteria"] = "buff.sun_kings_blessing_ready.up & buff.sun_kings_blessing_ready.remains > execute_time + action.flamestrike.cast_time & buff.rune_of_power.remains < action.flamestrike.cast_time & active_enemies >= variable.combustion_flamestrike",
["action"] = "rune_of_power",
}, -- [24]
{
["enabled"] = true,
["criteria"] = "buff.sun_kings_blessing_ready.up & buff.sun_kings_blessing_ready.remains > cast_time & active_enemies >= variable.combustion_flamestrike & buff.sun_kings_blessing_ready.expiration_delay_remains = 0",
["action"] = "flamestrike",
}, -- [25]
{
["enabled"] = true,
["criteria"] = "buff.sun_kings_blessing_ready.up & buff.sun_kings_blessing_ready.remains > execute_time + action.pyroblast.cast_time & buff.rune_of_power.remains < action.pyroblast.cast_time",
["action"] = "rune_of_power",
}, -- [26]
{
["enabled"] = true,
["criteria"] = "buff.sun_kings_blessing_ready.up & buff.sun_kings_blessing_ready.remains > cast_time & buff.sun_kings_blessing_ready.expiration_delay_remains = 0",
["action"] = "pyroblast",
}, -- [27]
{
["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 < 2 * gcd.max || buff.flames_fury.up )",
["action"] = "phoenix_flames",
}, -- [28]
{
["enabled"] = true,
["description"] = "Pyroclasm procs should be used in Combustion at higher priority than Phoenix Flames and Scorch.",
["criteria"] = "buff.pyroclasm.react & buff.pyroclasm.remains > cast_time & buff.combustion.remains > cast_time & active_enemies < variable.combustion_flamestrike & ( ! talent.feel_the_burn.enabled || buff.feel_the_burn.remains > execute_time || buff.heating_up.react + hot_streak_spells_in_flight < 2 )",
["action"] = "pyroblast",
}, -- [29]
{
["enabled"] = true,
["description"] = "Avoid capping Phoenix Flames charges during Combustion. TODO: Is there a better way to spend these?",
["criteria"] = "set_bonus.tier30_2pc & charges_fractional > 2.5 & ( travel_time < buff.combustion.remains || talent.alexstraszas_fury.enabled )",
["action"] = "phoenix_flames",
}, -- [30]
{
["enabled"] = true,
["criteria"] = "buff.combustion.remains > cast_time & buff.flame_accelerant.react",
["action"] = "fireball",
}, -- [31]
{
["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"] = "! set_bonus.tier30_2pc & ! talent.alexstraszas_fury.enabled & travel_time < buff.combustion.remains & buff.heating_up.react + hot_streak_spells_in_flight < 2 & ( ! talent.from_the_ashes.enabled || variable.extended_combustion_remains < 10 )",
["action"] = "phoenix_flames",
}, -- [32]
{
["enabled"] = true,
["criteria"] = "buff.combustion.remains > cast_time & cast_time >= gcd.max",
["action"] = "scorch",
}, -- [33]
{
["enabled"] = true,
["criteria"] = "buff.combustion.remains > cast_time",
["action"] = "fireball",
}, -- [34]
{
["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",
}, -- [35]
{
["enabled"] = true,
["criteria"] = "buff.combustion.remains < gcd.max",
["action"] = "ice_nova",
}, -- [36]
},
["default"] = {
{
["enabled"] = true,
["description"] = "Executed every time the actor is available.",
["criteria"] = "! runeforge.disciplinary_command.enabled",
["action"] = "counterspell",
}, -- [1]
{
["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"] = "talent.temporal_warp.enabled & ( buff.exhaustion.up || interpolated_fight_remains < buff.bloodlust.duration )",
["action"] = "time_warp",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.potion.duration > variable.time_to_combustion + buff.combustion.duration",
["action"] = "potion",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "variable.time_to_combustion > action_cooldown - 5",
["action"] = "gladiators_badge",
["effect_name"] = "gladiators_badge",
}, -- [4]
{
["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",
}, -- [5]
{
["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",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "variable.time_to_combustion <= 8 || fight_remains < variable.time_to_combustion",
["name"] = "grim_eclipse",
["action"] = "grim_eclipse",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "variable.time_to_combustion <= 5 || fight_remains < variable.time_to_combustion",
["name"] = "moonlit_prism",
["action"] = "moonlit_prism",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "! variable.item_cutoff_active",
["name"] = "glyph_of_assimilation",
["action"] = "glyph_of_assimilation",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "variable.time_to_combustion <= 5",
["name"] = "macabre_sheet_music",
["action"] = "macabre_sheet_music",
}, -- [10]
{
["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.",
}, -- [11]
{
["enabled"] = true,
["name"] = "soul_igniter",
["action"] = "soul_igniter",
["criteria"] = "( cooldown.hyperthread_wristwraps.remains || ! variable.item_cutoff_active ) & ( ! conduit.infernal_cascade.enabled || buff.infernal_cascade.up || buff.combustion.up ) & ( ! equipped.dreadfire_vessel || cooldown.dreadfire_vessel_349857.remains > 5 )",
["description"] = "Soul Igniter should be used in a way that doesn't interfere with other on-use trinkets. Other trinkets do not trigger a shared ICD on it, so it can be used right after any other on-use trinket.",
}, -- [12]
{
["buff_name"] = "soul_ignition",
["criteria"] = "! conduit.infernal_cascade.enabled & time < 5 || buff.infernal_cascade.stack = buff.infernal_cascade.max_stack",
["description"] = "Trigger Soul Igniter early with Infernal Cascade or when it was precast.",
["enabled"] = true,
["action"] = "cancel_buff",
}, -- [13]
{
["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.",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "equipped.gladiators_badge & ! variable.item_cutoff_active",
["name"] = "flame_of_battle",
["action"] = "flame_of_battle",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "equipped.gladiators_badge & ! variable.item_cutoff_active",
["name"] = "wakeners_frond",
["action"] = "wakeners_frond",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "equipped.gladiators_badge & ! variable.item_cutoff_active",
["name"] = "instructors_divine_bell",
["action"] = "instructors_divine_bell",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "equipped.gladiators_badge & ! variable.item_cutoff_active",
["name"] = "sunblood_amethyst",
["action"] = "sunblood_amethyst",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "buff.scars_of_fraternal_strife_4.down",
["name"] = "scars_of_fraternal_strife",
["action"] = "scars_of_fraternal_strife",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "! variable.item_cutoff_active",
["action"] = "use_items",
}, -- [20]
{
["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",
}, -- [21]
{
["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",
}, -- [22]
{
["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",
}, -- [23]
{
["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",
}, -- [24]
{
["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",
}, -- [25]
{
["enabled"] = true,
["op"] = "set",
["description"] = "Pool as many Fire Blasts as possible for Combustion.",
["use_while_casting"] = 1,
["value"] = "variable.extended_combustion_remains < variable.time_to_combustion & action.fire_blast.charges_fractional + ( variable.time_to_combustion + action.shifting_power.full_reduction * variable.shifting_power_before_combustion + ( debuff.mirrors_of_torment.max_stack - 1 ) * variable.mot_recharge_amount * covenant.venthyr * ( cooldown.mirrors_of_torment.remains <= variable.time_to_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",
}, -- [26]
{
["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",
}, -- [27]
{
["enabled"] = true,
["criteria"] = "buff.combustion.down & buff.rune_of_power.down & ! ( buff.firestorm.react || buff.hyperthermia.react ) & ( variable.time_to_combustion >= buff.rune_of_power.duration & variable.time_to_combustion > action.fire_blast.full_recharge_time || variable.time_to_combustion > fight_remains ) & ( ! ( runeforge.sun_kings_blessing.enabled || talent.sun_kings_blessing.enabled ) || active_enemies >= variable.hard_cast_flamestrike || buff.sun_kings_blessing_ready.up || buff.sun_kings_blessing.react >= buff.sun_kings_blessing.max_stack - 1 || fight_remains < buff.rune_of_power.duration || firestarter.active )",
["action"] = "rune_of_power",
}, -- [28]
{
["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 & ( runeforge.sun_kings_blessing.enabled || 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,
}, -- [29]
{
["enabled"] = true,
["criteria"] = "buff.combustion.down & ( action.fire_blast.charges = 0 || variable.fire_blast_pooling ) & ( cooldown.rune_of_power.remains || ! talent.rune_of_power.enabled ) & ! buff.hot_streak.react & variable.shifting_power_before_combustion",
["action"] = "shifting_power",
}, -- [30]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "When using Flamestrike in Combustion, save as many charges as possible for Combustion without capping.",
["criteria"] = "buff.rune_of_power.up & buff.combustion.down & variable.time_to_combustion > 0",
["list_name"] = "rop_phase",
}, -- [31]
{
["enabled"] = true,
["use_while_casting"] = 1,
["description"] = "Adjust the variable that controls Fire Blast usage to ensure its charges are also pooled for Rune of Power.",
["op"] = "set",
["criteria"] = "! variable.fire_blast_pooling & talent.rune_of_power.enabled & buff.rune_of_power.down",
["value"] = "( ! ( runeforge.sun_kings_blessing.enabled || talent.sun_kings_blessing.enabled ) || buff.sun_kings_blessing.stack > buff.sun_kings_blessing.max_stack - 1 ) & cooldown.rune_of_power.remains < action.fire_blast.full_recharge_time - action.shifting_power.full_reduction * ( variable.shifting_power_before_combustion & cooldown.shifting_power.remains < cooldown.rune_of_power.remains ) & cooldown.rune_of_power.remains < fight_remains",
["var_name"] = "fire_blast_pooling",
["action"] = "variable",
["use_off_gcd"] = 1,
}, -- [32]
{
["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",
}, -- [33]
{
["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",
}, -- [34]
{
["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",
}, -- [35]
{
["enabled"] = true,
["action"] = "call_action_list",
["criteria"] = "variable.time_to_combustion > 0 & buff.rune_of_power.down & buff.combustion.down",
["list_name"] = "standard_rotation",
}, -- [36]
{
["action"] = "scorch",
["enabled"] = true,
}, -- [37]
},
["precombat"] = {
{
["action"] = "arcane_intellect",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["criteria"] = "! variable.combustion_on_use & ! equipped.dreadfire_vessel & ( ! talent.firestarter.enabled || variable.firestarter_combustion )",
["name"] = "soul_igniter",
["action"] = "soul_igniter",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! equipped.the_first_sigil",
["name"] = "shadowed_orb_of_torment",
["action"] = "shadowed_orb_of_torment",
}, -- [3]
{
["action"] = "mirror_image",
["enabled"] = true,
}, -- [4]
{
["action"] = "fleshcraft",
["enabled"] = true,
}, -- [5]
{
["action"] = "pyroblast",
["enabled"] = true,
}, -- [6]
},
["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!",
}, -- [1]
{
["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",
}, -- [2]
},
["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",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "variable.time_to_combustion <= 0 || buff.combustion.remains > travel_time || ( cooldown.meteor.duration < variable.time_to_combustion & ! talent.rune_of_power.enabled ) || talent.rune_of_power.enabled & buff.rune_of_power.up & variable.time_to_combustion > action.meteor.cooldown || fight_remains < variable.time_to_combustion",
["action"] = "meteor",
}, -- [2]
{
["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 ) & ! firestarter.remains & ! talent.tempered_flames.enabled",
["action"] = "dragons_breath",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "talent.alexstraszas_fury.enabled & ( buff.combustion.down & ! buff.hot_streak.react ) & ( buff.feel_the_burn.up || time > 15 ) & talent.tempered_flames.enabled",
["action"] = "dragons_breath",
}, -- [4]
},
["standard_rotation"] = {
{
["enabled"] = true,
["criteria"] = "active_enemies >= variable.hot_streak_flamestrike & ( buff.hot_streak.react || ( buff.firestorm.react || buff.hyperthermia.react ) )",
["action"] = "flamestrike",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.hyperthermia.react",
["action"] = "pyroblast",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.hot_streak.react & ( buff.hot_streak.remains < action.fireball.execute_time || talent.alexstraszas_fury.enabled & action.phoenix_flames.charges > 0 )",
["action"] = "pyroblast",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.hot_streak.react & ( prev_gcd.1.fireball || fireball_hardcast_prevented || firestarter.active || action.pyroblast.in_flight )",
["action"] = "pyroblast",
}, -- [4]
{
["enabled"] = true,
["description"] = "Try to get SKB procs inside RoP phases or Combustion phases when possible.",
["criteria"] = "active_enemies >= variable.hard_cast_flamestrike & buff.sun_kings_blessing_ready.up & ( cooldown.rune_of_power.remains + action.rune_of_power.execute_time + cast_time > buff.sun_kings_blessing_ready.remains || ! talent.rune_of_power.enabled ) & variable.time_to_combustion + cast_time > buff.sun_kings_blessing_ready.remains & buff.sun_kings_blessing_ready.expiration_delay_remains = 0",
["action"] = "flamestrike",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "buff.sun_kings_blessing_ready.up & ( cooldown.rune_of_power.remains + action.rune_of_power.execute_time + cast_time > buff.sun_kings_blessing_ready.remains || ! talent.rune_of_power.enabled ) & variable.time_to_combustion + cast_time > buff.sun_kings_blessing_ready.remains & buff.sun_kings_blessing_ready.expiration_delay_remains = 0",
["action"] = "pyroblast",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "buff.hot_streak.react & searing_touch.active",
["action"] = "pyroblast",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "buff.pyroclasm.react & cast_time < buff.pyroclasm.remains & ( ! ( runeforge.sun_kings_blessing.enabled || talent.sun_kings_blessing.enabled ) || buff.pyroclasm.remains < action.fireball.cast_time + cast_time * buff.pyroclasm.react )",
["action"] = "pyroblast",
}, -- [8]
{
["enabled"] = true,
["use_while_casting"] = 1,
["criteria"] = "! firestarter.active & ! variable.fire_blast_pooling & buff.sun_kings_blessing_ready.down & ( ( ( action.fireball.executing & ( action.fireball.execute_remains < 0.5 || ! ( runeforge.firestorm.enabled || talent.hyperthermia.enabled ) ) || action.pyroblast.executing & ( action.pyroblast.execute_remains < 0.5 || ! ( runeforge.firestorm.enabled || talent.hyperthermia.enabled ) ) || ( ! searing_touch.active & fireball_hardcast_prevented ) ) & buff.heating_up.react ) || ( searing_touch.active & ( 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",
}, -- [9]
{
["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",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "! talent.alexstraszas_fury.enabled & ! buff.hot_streak.react & ( ! variable.phoenix_pooling || set_bonus.tier30_2pc & debuff.charring_embers.remains < 2 * gcd.max ) & ( debuff.charring_embers.remains < 2 * gcd.max || buff.flames_fury.up )",
["action"] = "phoenix_flames",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "talent.alexstraszas_fury.enabled & ! buff.hot_streak.react & ( ! variable.phoenix_pooling || set_bonus.tier30_2pc & debuff.charring_embers.remains < 2 * gcd.max || buff.flames_fury.up ) & ! hot_streak_spells_in_flight & ! action.phoenix_flames.in_flight & ( debuff.charring_embers.remains < 2 * gcd.max || buff.flames_fury.up || charges > 1 )",
["action"] = "phoenix_flames",
}, -- [12]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "active_talents",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "active_enemies > 1",
["action"] = "dragons_breath",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "searing_touch.active",
["action"] = "scorch",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "active_enemies >= variable.arcane_explosion & mana.pct >= variable.arcane_explosion_mana",
["action"] = "arcane_explosion",
}, -- [16]
{
["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",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "talent.tempered_flames.enabled & ! buff.flame_accelerant.react",
["action"] = "pyroblast",
}, -- [18]
{
["action"] = "fireball",
["enabled"] = true,
}, -- [19]
},
["rop_phase"] = {
{
["enabled"] = true,
["criteria"] = "active_enemies >= variable.hot_streak_flamestrike & ( buff.hot_streak.react || ( buff.firestorm.react || buff.hyperthermia.react ) )",
["action"] = "flamestrike",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.deathborne.up & runeforge.deaths_fathom.enabled & variable.time_to_combustion < buff.deathborne.remains & active_enemies >= 2",
["action"] = "fireball",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "active_enemies >= variable.hard_cast_flamestrike & buff.sun_kings_blessing_ready.up & buff.sun_kings_blessing_ready.remains > cast_time & buff.sun_kings_blessing_ready.expiration_delay_remains = 0",
["action"] = "flamestrike",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.sun_kings_blessing_ready.up & buff.sun_kings_blessing_ready.remains > cast_time & buff.sun_kings_blessing_ready.expiration_delay_remains = 0",
["action"] = "pyroblast",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "( buff.firestorm.react || buff.hyperthermia.react )",
["action"] = "pyroblast",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "buff.hot_streak.react",
["action"] = "pyroblast",
}, -- [6]
{
["enabled"] = true,
["use_while_casting"] = 1,
["criteria"] = "! variable.fire_blast_pooling & buff.sun_kings_blessing_ready.down & active_enemies < variable.hard_cast_flamestrike & ! firestarter.active & ( ! buff.heating_up.react & ! buff.hot_streak.react & ! prev_off_gcd.fire_blast & ( action.fire_blast.charges >= 2 || ( talent.alexstraszas_fury.enabled & cooldown.dragons_breath.ready ) || searing_touch.active ) )",
["use_off_gcd"] = 1,
["description"] = "Use one Fire Blast early in RoP if you don't have either Heating Up or Hot Streak yet and either: (a) have more than two already, (b) have Alexstrasza's Fury ready to use, or (c) Searing Touch is active. Don't do this while hard casting Flamestrikes or when Sun King's Blessing is ready.",
["action"] = "fire_blast",
}, -- [7]
{
["enabled"] = true,
["use_while_casting"] = 1,
["criteria"] = "! variable.fire_blast_pooling & ! firestarter.active & buff.sun_kings_blessing_ready.down & ( ( ( action.fireball.executing & ( action.fireball.execute_remains < 0.5 || ! ( runeforge.firestorm.enabled || talent.hyperthermia.enabled ) ) || action.pyroblast.executing & ( action.pyroblast.execute_remains < 0.5 || ! ( runeforge.firestorm.enabled || talent.hyperthermia.enabled ) ) ) & buff.heating_up.react ) || ( searing_touch.active & ( 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"] = "Use Fire Blast either during a Fireball/Pyroblast cast when Heating Up is active or during execute with Searing Touch.",
["action"] = "fire_blast",
}, -- [8]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "active_talents",
}, -- [9]
{
["enabled"] = true,
["description"] = "actions.rop_phase+=/scorch,if=searing_touch.active&talent.improved_scorch&debuff.improved_scorch.remains<3*gcd.max",
["criteria"] = "buff.pyroclasm.react & cast_time < buff.pyroclasm.remains & cast_time < buff.rune_of_power.remains & ( ! ( runeforge.sun_kings_blessing.enabled || talent.sun_kings_blessing.enabled ) || buff.pyroclasm.remains < action.fireball.cast_time + cast_time * buff.pyroclasm.react )",
["action"] = "pyroblast",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "prev_gcd.1.scorch & buff.heating_up.react & searing_touch.active & active_enemies < variable.hot_streak_flamestrike",
["action"] = "pyroblast",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "! talent.alexstraszas_fury.enabled & ( ! variable.phoenix_pooling || set_bonus.tier30_2pc & debuff.charring_embers.remains < 2 * gcd.max ) & ( debuff.charring_embers.remains < 2 * gcd.max || buff.flames_fury.up )",
["action"] = "phoenix_flames",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "talent.alexstraszas_fury.enabled & ( ! variable.phoenix_pooling || set_bonus.tier30_2pc & debuff.charring_embers.remains < 2 * gcd.max || buff.flames_fury.up ) & ! hot_streak_spells_in_flight & ! action.phoenix_flames.in_flight & ( debuff.charring_embers.remains < 2 * gcd.max || buff.flames_fury.up || charges > 1 )",
["action"] = "phoenix_flames",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "searing_touch.active",
["action"] = "scorch",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "active_enemies > 2",
["action"] = "dragons_breath",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "active_enemies >= variable.arcane_explosion & mana.pct >= variable.arcane_explosion_mana",
["action"] = "arcane_explosion",
}, -- [16]
{
["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",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "talent.tempered_flames.enabled & ! buff.flame_accelerant.react",
["action"] = "pyroblast",
}, -- [18]
{
["action"] = "fireball",
["enabled"] = true,
}, -- [19]
},
},
["version"] = 20230508,
["warnings"] = "The import for 'combustion_phase' required some automated changes.\nLine 11: Converted 'conduit.flame_accretion' to 'conduit.flame_accretion.enabled' (1x).\nLine 13: Converted 'runeforge.disciplinary_command' to 'runeforge.disciplinary_command.enabled' (1x).\nLine 13: Converted 'talent.rune_of_power' to 'talent.rune_of_power.enabled' (1x).\nLine 13: Converted 'runeforge.grisly_icicle' to 'runeforge.grisly_icicle.enabled' (1x).\nLine 15: Converted 'talent.feel_the_burn' to 'talent.feel_the_burn.enabled' (1x).\nLine 15: Converted 'conduit.infernal_cascade' to 'conduit.infernal_cascade.enabled' (1x).\nLine 16: Converted 'conduit.infernal_cascade' to 'conduit.infernal_cascade.enabled' (1x).\nLine 17: Converted 'talent.feel_the_burn' to 'talent.feel_the_burn.enabled' (1x).\nLine 18: Converted 'runeforge.firestorm' to 'runeforge.firestorm.enabled' (1x).\nLine 18: Converted 'talent.hyperthermia' to 'talent.hyperthermia.enabled' (1x).\nLine 23: Converted 'talent.alexstraszas_fury' to 'talent.alexstraszas_fury.enabled' (1x).\nLine 29: Converted 'talent.feel_the_burn' to 'talent.feel_the_burn.enabled' (1x).\nLine 30: Converted 'talent.alexstraszas_fury' to 'talent.alexstraszas_fury.enabled' (1x).\nLine 32: Converted 'talent.alexstraszas_fury' to 'talent.alexstraszas_fury.enabled' (1x).\nLine 32: Converted 'talent.from_the_ashes' to 'talent.from_the_ashes.enabled' (1x).\n\nThe import for 'rop_phase' required some automated changes.\nLine 2: Converted 'runeforge.deaths_fathom' to 'runeforge.deaths_fathom.enabled' (1x).\nLine 7: Converted 'talent.alexstraszas_fury' to 'talent.alexstraszas_fury.enabled' (1x).\nLine 8: Converted 'runeforge.firestorm' to 'runeforge.firestorm.enabled' (1x).\nLine 8: Converted 'talent.hyperthermia' to 'talent.hyperthermia.enabled' (1x).\nLine 8: Converted 'runeforge.firestorm' to 'runeforge.firestorm.enabled' (1x).\nLine 8: Converted 'talent.hyperthermia' to 'talent.hyperthermia.enabled' (1x).\nLine 10: Converted 'runeforge.sun_kings_blessing' to 'runeforge.sun_kings_blessing.enabled' (1x).\nLine 10: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 12: Converted 'talent.alexstraszas_fury' to 'talent.alexstraszas_fury.enabled' (1x).\nLine 13: Converted 'talent.alexstraszas_fury' to 'talent.alexstraszas_fury.enabled' (1x).\nLine 18: Converted 'talent.tempered_flames' to 'talent.tempered_flames.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 1: Converted 'runeforge.disciplinary_command' to 'runeforge.disciplinary_command.enabled' (1x).\nLine 2: Converted 'talent.temporal_warp' to 'talent.temporal_warp.enabled' (1x).\nLine 11: Converted 'conduit.infernal_cascade' to 'conduit.infernal_cascade.enabled' (1x).\nLine 11: Converted 'runeforge.sun_kings_blessing' to 'runeforge.sun_kings_blessing.enabled' (1x).\nLine 11: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 11: 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 12: Converted 'conduit.infernal_cascade' to 'conduit.infernal_cascade.enabled' (1x).\nLine 13: Converted 'conduit.infernal_cascade' to 'conduit.infernal_cascade.enabled' (1x).\nLine 21: Converted 'runeforge.grisly_icicle' to 'runeforge.grisly_icicle.enabled' (1x).\nLine 22: Converted 'runeforge.disciplinary_command' to 'runeforge.disciplinary_command.enabled' (1x).\nLine 23: Converted 'runeforge.disciplinary_command' to 'runeforge.disciplinary_command.enabled' (1x).\nLine 23: Converted 'talent.rune_of_power' to 'talent.rune_of_power.enabled' (1x).\nLine 24: Converted 'runeforge.disciplinary_command' to 'runeforge.disciplinary_command.enabled' (1x).\nLine 25: Converted 'runeforge.disciplinary_command' to 'runeforge.disciplinary_command.enabled' (1x).\nLine 26: Converted operations in 'variable.extended_combustion_remains<variable.time_to_combustion&action.fire_blast.charges_fractional+(variable.time_to_combustion+action.shifting_power.full_reduction*variable.shifting_power_before_combustion+(debuff.mirrors_of_torment.max_stack-1)*variable.mot_recharge_amount*covenant.venthyr*(cooldown.mirrors_of_torment.remains<=variable.time_to_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' to 'variable.extended_combustion_remains<variable.time_to_combustion&action.fire_blast.charges_fractional+(variable.time_to_combustion+action.shifting_power.full_reduction*variable.shifting_power_before_combustion+(debuff.mirrors_of_torment.max_stack-1)*variable.mot_recharge_amount*covenant.venthyr*(cooldown.mirrors_of_torment.remains<=variable.time_to_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'.\nLine 28: Converted 'runeforge.sun_kings_blessing' to 'runeforge.sun_kings_blessing.enabled' (1x).\nLine 28: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 29: Converted 'runeforge.sun_kings_blessing' to 'runeforge.sun_kings_blessing.enabled' (1x).\nLine 29: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 30: Converted 'talent.rune_of_power' to 'talent.rune_of_power.enabled' (1x).\nLine 32: Converted 'runeforge.sun_kings_blessing' to 'runeforge.sun_kings_blessing.enabled' (1x).\nLine 32: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 32: Converted 'talent.rune_of_power' to 'talent.rune_of_power.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 2: Converted 'talent.firestarter' to 'talent.firestarter.enabled' (1x).\n\nThe 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 'active_talents' required some automated changes.\nLine 2: Converted 'talent.rune_of_power' to 'talent.rune_of_power.enabled' (1x).\nLine 2: Converted 'talent.rune_of_power' to 'talent.rune_of_power.enabled' (1x).\nLine 3: Converted 'talent.alexstraszas_fury' to 'talent.alexstraszas_fury.enabled' (1x).\nLine 3: Converted 'talent.tempered_flames' to 'talent.tempered_flames.enabled' (1x).\nLine 4: Converted 'talent.alexstraszas_fury' to 'talent.alexstraszas_fury.enabled' (1x).\nLine 4: Converted 'talent.tempered_flames' to 'talent.tempered_flames.enabled' (1x).\n\nThe import for 'standard_rotation' required some automated changes.\nLine 3: Converted 'talent.alexstraszas_fury' to 'talent.alexstraszas_fury.enabled' (1x).\nLine 5: Converted 'talent.rune_of_power' to 'talent.rune_of_power.enabled' (1x).\nLine 6: Converted 'talent.rune_of_power' to 'talent.rune_of_power.enabled' (1x).\nLine 8: Converted 'runeforge.sun_kings_blessing' to 'runeforge.sun_kings_blessing.enabled' (1x).\nLine 8: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 9: Converted 'runeforge.firestorm' to 'runeforge.firestorm.enabled' (1x).\nLine 9: Converted 'talent.hyperthermia' to 'talent.hyperthermia.enabled' (1x).\nLine 9: Converted 'runeforge.firestorm' to 'runeforge.firestorm.enabled' (1x).\nLine 9: Converted 'talent.hyperthermia' to 'talent.hyperthermia.enabled' (1x).\nLine 11: Converted 'talent.alexstraszas_fury' to 'talent.alexstraszas_fury.enabled' (1x).\nLine 12: Converted 'talent.alexstraszas_fury' to 'talent.alexstraszas_fury.enabled' (1x).\nLine 18: Converted 'talent.tempered_flames' to 'talent.tempered_flames.enabled' (1x).\n\nThe import for 'combustion_cooldowns' required some automated changes.\nLine 6: Converted 'talent.temporal_warp' to 'talent.temporal_warp.enabled' (1x).\nLine 6: Converted 'runeforge.temporal_warp' to 'runeforge.temporal_warp.enabled' (1x).\n\nImported 8 action lists.\n",
["profile"] = "actions.precombat+=/arcane_intellect\nactions.precombat+=/use_item,name=soul_igniter,if=!variable.combustion_on_use&!equipped.dreadfire_vessel&(!talent.firestarter||variable.firestarter_combustion)\nactions.precombat+=/use_item,name=shadowed_orb_of_torment,if=!equipped.the_first_sigil\nactions.precombat+=/mirror_image\nactions.precombat+=/fleshcraft\nactions.precombat+=/pyroblast\n\n# Executed every time the actor is available.\nactions=counterspell,if=!runeforge.disciplinary_command\n# 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.\nactions+=/time_warp,if=talent.temporal_warp&(buff.exhaustion.up||interpolated_fight_remains<buff.bloodlust.duration)\nactions+=/potion,if=buff.potion.duration>variable.time_to_combustion+buff.combustion.duration\nactions+=/use_item,effect_name=gladiators_badge,if=variable.time_to_combustion>cooldown-5\nactions+=/use_item,name=empyreal_ordnance,if=variable.time_to_combustion<=variable.empyreal_ordnance_delay&variable.time_to_combustion>variable.empyreal_ordnance_delay-5\nactions+=/use_item,name=shadowed_orb_of_torment,if=(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)\nactions+=/use_item,name=grim_eclipse,if=variable.time_to_combustion<=8||fight_remains<variable.time_to_combustion\nactions+=/use_item,name=moonlit_prism,if=variable.time_to_combustion<=5||fight_remains<variable.time_to_combustion\nactions+=/use_item,name=glyph_of_assimilation,if=!variable.item_cutoff_active\nactions+=/use_item,name=macabre_sheet_music,if=variable.time_to_combustion<=5\n# 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.\nactions+=/use_item,name=dreadfire_vessel,if=!variable.item_cutoff_active&(buff.infernal_cascade.stack=buff.infernal_cascade.max_stack||!conduit.infernal_cascade||variable.combustion_on_use&!(runeforge.sun_kings_blessing||talent.sun_kings_blessing)||variable.time_to_combustion>interpolated_fight_remains%%(cooldown+10))\n# Soul Igniter should be used in a way that doesn't interfere with other on-use trinkets. Other trinkets do not trigger a shared ICD on it, so it can be used right after any other on-use trinket.\nactions+=/use_item,name=soul_igniter,if=(cooldown.hyperthread_wristwraps.remains||!variable.item_cutoff_active)&(!conduit.infernal_cascade||buff.infernal_cascade.up||buff.combustion.up)&(!equipped.dreadfire_vessel||cooldown.dreadfire_vessel_349857.remains>5)\n# Trigger Soul Igniter early with Infernal Cascade or when it was precast.\nactions+=/cancel_buff,name=soul_ignition,if=!conduit.infernal_cascade&time<5||buff.infernal_cascade.stack=buff.infernal_cascade.max_stack\n# Items that do not benefit Combustion should just be used outside of Combustion at some point.\nactions+=/use_item,name=inscrutable_quantum_device,if=equipped.gladiators_badge&(buff.combustion.down&variable.time_to_combustion>=variable.on_use_cutoff||variable.on_use_cutoff=0)\nactions+=/use_item,name=flame_of_battle,if=equipped.gladiators_badge&!variable.item_cutoff_active\nactions+=/use_item,name=wakeners_frond,if=equipped.gladiators_badge&!variable.item_cutoff_active\nactions+=/use_item,name=instructors_divine_bell,if=equipped.gladiators_badge&!variable.item_cutoff_active\nactions+=/use_item,name=sunblood_amethyst,if=equipped.gladiators_badge&!variable.item_cutoff_active\nactions+=/use_item,name=scars_of_fraternal_strife,if=buff.scars_of_fraternal_strife_4.down\nactions+=/use_items,if=!variable.item_cutoff_active\n# Use Frost Nova to trigger Grisly Icicle.\nactions+=/frost_nova,if=runeforge.grisly_icicle&buff.combustion.down&(variable.time_to_combustion>cooldown||variable.time_to_combustion<variable.combustion_precast_time+execute_time)\n# Get the Disciplinary Command buff up, unless combustion is soon.\nactions+=/counterspell,if=runeforge.disciplinary_command&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)\nactions+=/arcane_explosion,if=runeforge.disciplinary_command&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)\nactions+=/frostbolt,if=runeforge.disciplinary_command&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)\nactions+=/frost_nova,if=runeforge.disciplinary_command&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)\n# Pool as many Fire Blasts as possible for Combustion.\nactions+=/variable,use_off_gcd=1,use_while_casting=1,name=fire_blast_pooling,value=variable.extended_combustion_remains<variable.time_to_combustion&action.fire_blast.charges_fractional+(variable.time_to_combustion+action.shifting_power.full_reduction*variable.shifting_power_before_combustion+(debuff.mirrors_of_torment.max_stack-1)*variable.mot_recharge_amount*covenant.venthyr*(cooldown.mirrors_of_torment.remains<=variable.time_to_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\nactions+=/call_action_list,name=combustion_phase,if=variable.time_to_combustion<=0||buff.combustion.up||variable.time_to_combustion<variable.combustion_precast_time&cooldown.combustion.remains<variable.combustion_precast_time\nactions+=/rune_of_power,if=buff.combustion.down&buff.rune_of_power.down&!(buff.firestorm.react||buff.hyperthermia.react)&(variable.time_to_combustion>=buff.rune_of_power.duration&variable.time_to_combustion>action.fire_blast.full_recharge_time||variable.time_to_combustion>fight_remains)&(!(runeforge.sun_kings_blessing||talent.sun_kings_blessing)||active_enemies>=variable.hard_cast_flamestrike||buff.sun_kings_blessing_ready.up||buff.sun_kings_blessing.react>=buff.sun_kings_blessing.max_stack-1||fight_remains<buff.rune_of_power.duration||firestarter.active)\n# Adjust the variable that controls Fire Blast usage to save Fire Blasts while Searing Touch is active with Sun King's Blessing.\nactions+=/variable,use_off_gcd=1,use_while_casting=1,name=fire_blast_pooling,value=searing_touch.active&action.fire_blast.full_recharge_time>3*gcd.max,if=!variable.fire_blast_pooling&(runeforge.sun_kings_blessing||talent.sun_kings_blessing)\nactions+=/shifting_power,if=buff.combustion.down&(action.fire_blast.charges=0||variable.fire_blast_pooling)&(cooldown.rune_of_power.remains||!talent.rune_of_power)&!buff.hot_streak.react&variable.shifting_power_before_combustion\n# When using Flamestrike in Combustion, save as many charges as possible for Combustion without capping.\nactions+=/call_action_list,name=rop_phase,if=buff.rune_of_power.up&buff.combustion.down&variable.time_to_combustion>0\n# Adjust the variable that controls Fire Blast usage to ensure its charges are also pooled for Rune of Power.\nactions+=/variable,use_off_gcd=1,use_while_casting=1,name=fire_blast_pooling,value=(!(runeforge.sun_kings_blessing||talent.sun_kings_blessing)||buff.sun_kings_blessing.stack>buff.sun_kings_blessing.max_stack-1)&cooldown.rune_of_power.remains<action.fire_blast.full_recharge_time-action.shifting_power.full_reduction*(variable.shifting_power_before_combustion&cooldown.shifting_power.remains<cooldown.rune_of_power.remains)&cooldown.rune_of_power.remains<fight_remains,if=!variable.fire_blast_pooling&talent.rune_of_power&buff.rune_of_power.down\n# When Hardcasting Flamestrike, Fire Blasts should be used to generate Hot Streaks and to extend Feel the Burn.\nactions+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=!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)\n# 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.\nactions+=/call_action_list,name=firestarter_fire_blasts,if=buff.combustion.down&firestarter.active&variable.time_to_combustion>0\n# Avoid capping Fire Blast charges while channeling Shifting Power\nactions+=/fire_blast,use_while_casting=1,if=action.shifting_power.executing&full_recharge_time<action.shifting_power.tick_reduction\nactions+=/call_action_list,name=standard_rotation,if=variable.time_to_combustion>0&buff.rune_of_power.down&buff.combustion.down\nactions+=/scorch\n\n# While casting Fireball or Pyroblast, convert Heating Up to a Hot Streak!\nactions.firestarter_fire_blasts+=/fire_blast,use_while_casting=1,if=!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)\n# 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.\nactions.firestarter_fire_blasts+=/fire_blast,use_off_gcd=1,if=!variable.fire_blast_pooling&buff.heating_up.react+hot_streak_spells_in_flight=1&(talent.feel_the_burn&buff.feel_the_burn.remains<gcd.remains||cooldown.shifting_power.ready&(!set_bonus.tier30_2pc||debuff.charring_embers.remains>2*gcd.max))\n\nactions.active_talents=living_bomb,if=active_enemies>1&buff.combustion.down&(variable.time_to_combustion>cooldown.living_bomb.duration||variable.time_to_combustion<=0)\nactions.active_talents+=/meteor,if=variable.time_to_combustion<=0||buff.combustion.remains>travel_time||(cooldown.meteor.duration<variable.time_to_combustion&!talent.rune_of_power)||talent.rune_of_power&buff.rune_of_power.up&variable.time_to_combustion>action.meteor.cooldown||fight_remains<variable.time_to_combustion\n# With Alexstrasza's Fury when Combustion is not active, Dragon's Breath should be used to convert Heating Up to a Hot Streak.\nactions.active_talents+=/dragons_breath,if=talent.alexstraszas_fury&(buff.combustion.down&!buff.hot_streak.react)&(buff.feel_the_burn.up||time>15)&!firestarter.remains&!talent.tempered_flames\nactions.active_talents+=/dragons_breath,if=talent.alexstraszas_fury&(buff.combustion.down&!buff.hot_streak.react)&(buff.feel_the_burn.up||time>15)&talent.tempered_flames\n\nactions.combustion_cooldowns=potion\nactions.combustion_cooldowns+=/blood_fury\nactions.combustion_cooldowns+=/berserking,if=buff.combustion.up\nactions.combustion_cooldowns+=/fireblood\nactions.combustion_cooldowns+=/ancestral_call\n## The addon does not invoke external buffs, because they player cannot actually choose to trigger them personally.\n## actions.combustion_cooldowns+=/invoke_external_buff,name=power_infusion,if=buff.power_infusion.down\n## actions.combustion_cooldowns+=/invoke_external_buff,name=blessing_of_summer,if=buff.blessing_of_summer.down\nactions.combustion_cooldowns+=/time_warp,if=(talent.temporal_warp||runeforge.temporal_warp)&buff.exhaustion.up\nactions.combustion_cooldowns+=/use_item,effect_name=gladiators_badge\nactions.combustion_cooldowns+=/use_item,name=irideus_fragment\nactions.combustion_cooldowns+=/use_item,name=spoils_of_neltharus\nactions.combustion_cooldowns+=/use_item,name=tome_of_unstable_power\nactions.combustion_cooldowns+=/use_item,name=timebreaching_talon\nactions.combustion_cooldowns+=/use_item,name=voidmenders_shadowgem\nactions.combustion_cooldowns+=/use_item,name=horn_of_valor\n\nactions.combustion_phase=lights_judgment,if=buff.combustion.down\nactions.combustion_phase+=/bag_of_tricks,if=buff.combustion.down\nactions.combustion_phase+=/living_bomb,if=active_enemies>1&buff.combustion.down\n# 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.\nactions.combustion_phase+=/call_action_list,name=combustion_cooldowns,if=buff.combustion.remains>variable.skb_duration||fight_remains<20\nactions.combustion_phase+=/use_item,name=hyperthread_wristwraps,if=prev.1.fire_blast+prev.2.fire_blast+prev.3.fire_blast>=2&action.fire_blast.charges=0\nactions.combustion_phase+=/use_item,name=neural_synapse_enhancer,if=variable.time_to_combustion>60\nactions.combustion_phase+=/call_action_list,name=active_talents\n# If Combustion is down, precast something before activating it.\nactions.combustion_phase+=/flamestrike,if=buff.combustion.down&cooldown.combustion.remains<cast_time&active_enemies>=variable.combustion_flamestrike\nactions.combustion_phase+=/pyroblast,if=buff.combustion.down&buff.sun_kings_blessing_ready.up&buff.sun_kings_blessing_ready.remains>cast_time&buff.sun_kings_blessing_ready.expiration_delay_remains=0\nactions.combustion_phase+=/pyroblast,if=buff.combustion.down&buff.pyroclasm.react&buff.pyroclasm.remains>cast_time\nactions.combustion_phase+=/fireball,if=buff.combustion.down&cooldown.combustion.remains<cast_time&!conduit.flame_accretion\nactions.combustion_phase+=/scorch,if=buff.combustion.down&cooldown.combustion.remains<cast_time\n# Combustion should be used when the precast is almost finished.\nactions.combustion_phase+=/combustion,use_off_gcd=1,use_while_casting=1,if=hot_streak_spells_in_flight=0&buff.combustion.down&variable.time_to_combustion<=0&(!runeforge.disciplinary_command||buff.disciplinary_command.up||buff.disciplinary_command_frost.up&talent.rune_of_power&cooldown.buff_disciplinary_command.ready)&(!runeforge.grisly_icicle||debuff.grisly_icicle.up)&(!covenant.necrolord||cooldown.deathborne.remains||buff.deathborne.up)&(!covenant.venthyr||cooldown.mirrors_of_torment.remains)&(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)\n# Rune of Power can be used in Combustion if it is down, but this should only be done if there is more Combustion time to benefit from than there would be from an SKB Combustion later.\nactions.combustion_phase+=/rune_of_power,if=buff.rune_of_power.down&variable.extended_combustion_remains>variable.skb_duration\n# Without Feel the Burn, just use Fire Blasts when they won't munch crits and when Firestorm is down.\nactions.combustion_phase+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=!talent.feel_the_burn&!conduit.infernal_cascade&!variable.fire_blast_pooling&(!set_bonus.tier28_4pc||debuff.mirrors_of_torment.down||buff.sun_kings_blessing_ready.down||action.pyroblast.executing)&buff.combustion.up&!(buff.firestorm.react||buff.hyperthermia.react)&!buff.hot_streak.react&hot_streak_spells_in_flight+buff.heating_up.react*(gcd.remains>0)<2\nactions.combustion_phase+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=conduit.infernal_cascade&!variable.fire_blast_pooling&(!set_bonus.tier28_4pc||debuff.mirrors_of_torment.down||buff.sun_kings_blessing_ready.down||action.pyroblast.executing)&(!equipped.hyperthread_wristwraps||!cooldown.hyperthread_wristwraps_300142.ready||charges>1||debuff.mirrors_of_torment.up)&(variable.expected_fire_blasts>=variable.needed_fire_blasts||buff.combustion.remains<gcd.max||variable.extended_combustion_remains<=buff.infernal_cascade.duration||buff.infernal_cascade.stack<2||buff.infernal_cascade.remains<gcd.max||cooldown.shifting_power.ready&variable.use_shifting_power||equipped.hyperthread_wristwraps&cooldown.hyperthread_wristwraps_300142.ready)&buff.combustion.up&(!(buff.firestorm.react||buff.hyperthermia.react)||buff.infernal_cascade.remains<0.5)&!buff.hot_streak.react&hot_streak_spells_in_flight+buff.heating_up.react*(gcd.remains>0)<2\nactions.combustion_phase+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=talent.feel_the_burn&!variable.fire_blast_pooling&(!set_bonus.tier28_4pc||debuff.mirrors_of_torment.down||buff.sun_kings_blessing_ready.down||action.pyroblast.executing)&(!equipped.hyperthread_wristwraps||!cooldown.hyperthread_wristwraps_300142.ready||charges>1||debuff.mirrors_of_torment.up)&(variable.expected_fire_blasts>=variable.needed_fire_blasts||buff.combustion.remains<gcd.max||variable.extended_combustion_remains<=buff.feel_the_burn.duration||buff.feel_the_burn.stack<2||buff.feel_the_burn.remains<gcd.max||cooldown.shifting_power.ready&variable.use_shifting_power||equipped.hyperthread_wristwraps&cooldown.hyperthread_wristwraps_300142.ready)&buff.combustion.up&(!(buff.firestorm.react||buff.hyperthermia.react)||buff.feel_the_burn.remains<0.5)&!buff.hot_streak.react&hot_streak_spells_in_flight+buff.heating_up.react*(gcd.remains>0)<2\n# Spend Hot Streaks during Combustion at high priority.\nactions.combustion_phase+=/flamestrike,if=(buff.hot_streak.react&active_enemies>=variable.combustion_flamestrike)||((buff.firestorm.react||buff.hyperthermia.react)&active_enemies>=variable.combustion_flamestrike-(runeforge.firestorm||talent.hyperthermia))\n# 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.\nactions.combustion_phase+=/radiant_spark,if=buff.combustion.up&2*buff.hot_streak.react+buff.heating_up.react+hot_streak_spells_in_flight=2\nactions.combustion_phase+=/pyroblast,if=(buff.firestorm.react||buff.hyperthermia.react)\n## With Sun King's Blessing, there is a brief delay before the Sun King's Blessing ready buff is removed after consuming it. It is beneficial to wait for this delay before spending Hot Streaks to not waste a stack.\n## actions.combustion_phase+=/wait,sec=0.01,if=buff.hot_streak.react&active_enemies<variable.combustion_flamestrike&(buff.sun_kings_blessing_ready.expiration_delay_remains||time-buff.sun_kings_blessing_ready.last_expire<variable.skb_delay-0.03)\nactions.combustion_phase+=/pyroblast,if=buff.hot_streak.react&buff.combustion.up\nactions.combustion_phase+=/pyroblast,if=prev_gcd.1.scorch&buff.heating_up.react&active_enemies<variable.combustion_flamestrike&buff.combustion.up\n# Using Shifting Power during Combustion to restore Fire Blast and Phoenix Flame charges can be beneficial, but usually only on AoE.\nactions.combustion_phase+=/shifting_power,if=variable.use_shifting_power&buff.combustion.up&!action.fire_blast.charges&(action.phoenix_flames.charges<action.phoenix_flames.max_charges||talent.alexstraszas_fury)\n# If a Sun King's Blessing proc would be used, Rune of Power should be used first if the existing Rune of Power will expire during the cast.\nactions.combustion_phase+=/rune_of_power,if=buff.sun_kings_blessing_ready.up&buff.sun_kings_blessing_ready.remains>execute_time+action.flamestrike.cast_time&buff.rune_of_power.remains<action.flamestrike.cast_time&active_enemies>=variable.combustion_flamestrike\nactions.combustion_phase+=/flamestrike,if=buff.sun_kings_blessing_ready.up&buff.sun_kings_blessing_ready.remains>cast_time&active_enemies>=variable.combustion_flamestrike&buff.sun_kings_blessing_ready.expiration_delay_remains=0\nactions.combustion_phase+=/rune_of_power,if=buff.sun_kings_blessing_ready.up&buff.sun_kings_blessing_ready.remains>execute_time+action.pyroblast.cast_time&buff.rune_of_power.remains<action.pyroblast.cast_time\nactions.combustion_phase+=/pyroblast,if=buff.sun_kings_blessing_ready.up&buff.sun_kings_blessing_ready.remains>cast_time&buff.sun_kings_blessing_ready.expiration_delay_remains=0\n# With the T30 set, Phoenix Flames should be used to maintain Charring Embers during Combustion and Flame's Fury procs should be spent.\nactions.combustion_phase+=/phoenix_flames,if=set_bonus.tier30_2pc&travel_time<buff.combustion.remains&buff.heating_up.react+hot_streak_spells_in_flight<2&(debuff.charring_embers.remains<2*gcd.max||buff.flames_fury.up)\n# Pyroclasm procs should be used in Combustion at higher priority than Phoenix Flames and Scorch.\nactions.combustion_phase+=/pyroblast,if=buff.pyroclasm.react&buff.pyroclasm.remains>cast_time&buff.combustion.remains>cast_time&active_enemies<variable.combustion_flamestrike&(!talent.feel_the_burn||buff.feel_the_burn.remains>execute_time||buff.heating_up.react+hot_streak_spells_in_flight<2)\n# Avoid capping Phoenix Flames charges during Combustion. TODO: Is there a better way to spend these?\nactions.combustion_phase+=/phoenix_flames,if=set_bonus.tier30_2pc&charges_fractional>2.5&(travel_time<buff.combustion.remains||talent.alexstraszas_fury)\nactions.combustion_phase+=/fireball,if=buff.combustion.remains>cast_time&buff.flame_accelerant.react\n# Use Phoenix Flames and Scorch in Combustion to help generate Hot Streaks when Fire Blasts are not available or need to be conserved.\nactions.combustion_phase+=/phoenix_flames,if=!set_bonus.tier30_2pc&!talent.alexstraszas_fury&travel_time<buff.combustion.remains&buff.heating_up.react+hot_streak_spells_in_flight<2&(!talent.from_the_ashes||variable.extended_combustion_remains<10)\nactions.combustion_phase+=/scorch,if=buff.combustion.remains>cast_time&cast_time>=gcd.max\nactions.combustion_phase+=/fireball,if=buff.combustion.remains>cast_time\n# If there isn't enough time left in Combustion for a Phoenix Flames or Scorch to hit inside of Combustion, use something else.\nactions.combustion_phase+=/living_bomb,if=buff.combustion.remains<gcd.max&active_enemies>1\nactions.combustion_phase+=/ice_nova,if=buff.combustion.remains<gcd.max\n\nactions.rop_phase=flamestrike,if=active_enemies>=variable.hot_streak_flamestrike&(buff.hot_streak.react||(buff.firestorm.react||buff.hyperthermia.react))\nactions.rop_phase+=/fireball,if=buff.deathborne.up&runeforge.deaths_fathom&variable.time_to_combustion<buff.deathborne.remains&active_enemies>=2\nactions.rop_phase+=/flamestrike,if=active_enemies>=variable.hard_cast_flamestrike&buff.sun_kings_blessing_ready.up&buff.sun_kings_blessing_ready.remains>cast_time&buff.sun_kings_blessing_ready.expiration_delay_remains=0\nactions.rop_phase+=/pyroblast,if=buff.sun_kings_blessing_ready.up&buff.sun_kings_blessing_ready.remains>cast_time&buff.sun_kings_blessing_ready.expiration_delay_remains=0\nactions.rop_phase+=/pyroblast,if=(buff.firestorm.react||buff.hyperthermia.react)\nactions.rop_phase+=/pyroblast,if=buff.hot_streak.react\n# Use one Fire Blast early in RoP if you don't have either Heating Up or Hot Streak yet and either: (a) have more than two already, (b) have Alexstrasza's Fury ready to use, or (c) Searing Touch is active. Don't do this while hard casting Flamestrikes or when Sun King's Blessing is ready.\nactions.rop_phase+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=!variable.fire_blast_pooling&buff.sun_kings_blessing_ready.down&active_enemies<variable.hard_cast_flamestrike&!firestarter.active&(!buff.heating_up.react&!buff.hot_streak.react&!prev_off_gcd.fire_blast&(action.fire_blast.charges>=2||(talent.alexstraszas_fury&cooldown.dragons_breath.ready)||searing_touch.active))\n# Use Fire Blast either during a Fireball/Pyroblast cast when Heating Up is active or during execute with Searing Touch.\nactions.rop_phase+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=!variable.fire_blast_pooling&!firestarter.active&buff.sun_kings_blessing_ready.down&(((action.fireball.executing&(action.fireball.execute_remains<0.5||!(runeforge.firestorm||talent.hyperthermia))||action.pyroblast.executing&(action.pyroblast.execute_remains<0.5||!(runeforge.firestorm||talent.hyperthermia)))&buff.heating_up.react)||(searing_touch.active&(buff.heating_up.react&!action.scorch.executing||!buff.hot_streak.react&!buff.heating_up.react&action.scorch.executing&!hot_streak_spells_in_flight)))\nactions.rop_phase+=/call_action_list,name=active_talents\n# actions.rop_phase+=/scorch,if=searing_touch.active&talent.improved_scorch&debuff.improved_scorch.remains<3*gcd.max\nactions.rop_phase+=/pyroblast,if=buff.pyroclasm.react&cast_time<buff.pyroclasm.remains&cast_time<buff.rune_of_power.remains&(!(runeforge.sun_kings_blessing||talent.sun_kings_blessing)||buff.pyroclasm.remains<action.fireball.cast_time+cast_time*buff.pyroclasm.react)\nactions.rop_phase+=/pyroblast,if=prev_gcd.1.scorch&buff.heating_up.react&searing_touch.active&active_enemies<variable.hot_streak_flamestrike\nactions.rop_phase+=/phoenix_flames,if=!talent.alexstraszas_fury&(!variable.phoenix_pooling||set_bonus.tier30_2pc&debuff.charring_embers.remains<2*gcd.max)&(debuff.charring_embers.remains<2*gcd.max||buff.flames_fury.up)\nactions.rop_phase+=/phoenix_flames,if=talent.alexstraszas_fury&(!variable.phoenix_pooling||set_bonus.tier30_2pc&debuff.charring_embers.remains<2*gcd.max||buff.flames_fury.up)&!hot_streak_spells_in_flight&!action.phoenix_flames.in_flight&(debuff.charring_embers.remains<2*gcd.max||buff.flames_fury.up||charges>1)\nactions.rop_phase+=/scorch,if=searing_touch.active\nactions.rop_phase+=/dragons_breath,if=active_enemies>2\nactions.rop_phase+=/arcane_explosion,if=active_enemies>=variable.arcane_explosion&mana.pct>=variable.arcane_explosion_mana\n# With enough targets, it is a gain to cast Flamestrike as filler instead of Fireball.\nactions.rop_phase+=/flamestrike,if=active_enemies>=variable.hard_cast_flamestrike\nactions.rop_phase+=/pyroblast,if=talent.tempered_flames&!buff.flame_accelerant.react\nactions.rop_phase+=/fireball\n\nactions.standard_rotation=flamestrike,if=active_enemies>=variable.hot_streak_flamestrike&(buff.hot_streak.react||(buff.firestorm.react||buff.hyperthermia.react))\nactions.standard_rotation+=/pyroblast,if=buff.hyperthermia.react\nactions.standard_rotation+=/pyroblast,if=buff.hot_streak.react&(buff.hot_streak.remains<action.fireball.execute_time||talent.alexstraszas_fury&action.phoenix_flames.charges>0)\nactions.standard_rotation+=/pyroblast,if=buff.hot_streak.react&(prev_gcd.1.fireball||fireball_hardcast_prevented||firestarter.active||action.pyroblast.in_flight)\n# Try to get SKB procs inside RoP phases or Combustion phases when possible.\nactions.standard_rotation+=/flamestrike,if=active_enemies>=variable.hard_cast_flamestrike&buff.sun_kings_blessing_ready.up&(cooldown.rune_of_power.remains+action.rune_of_power.execute_time+cast_time>buff.sun_kings_blessing_ready.remains||!talent.rune_of_power)&variable.time_to_combustion+cast_time>buff.sun_kings_blessing_ready.remains&buff.sun_kings_blessing_ready.expiration_delay_remains=0\nactions.standard_rotation+=/pyroblast,if=buff.sun_kings_blessing_ready.up&(cooldown.rune_of_power.remains+action.rune_of_power.execute_time+cast_time>buff.sun_kings_blessing_ready.remains||!talent.rune_of_power)&variable.time_to_combustion+cast_time>buff.sun_kings_blessing_ready.remains&buff.sun_kings_blessing_ready.expiration_delay_remains=0\nactions.standard_rotation+=/pyroblast,if=buff.hot_streak.react&searing_touch.active\nactions.standard_rotation+=/pyroblast,if=buff.pyroclasm.react&cast_time<buff.pyroclasm.remains&(!(runeforge.sun_kings_blessing||talent.sun_kings_blessing)||buff.pyroclasm.remains<action.fireball.cast_time+cast_time*buff.pyroclasm.react)\n# 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.\nactions.standard_rotation+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=!firestarter.active&!variable.fire_blast_pooling&buff.sun_kings_blessing_ready.down&(((action.fireball.executing&(action.fireball.execute_remains<0.5||!(runeforge.firestorm||talent.hyperthermia))||action.pyroblast.executing&(action.pyroblast.execute_remains<0.5||!(runeforge.firestorm||talent.hyperthermia))||(!searing_touch.active&fireball_hardcast_prevented))&buff.heating_up.react)||(searing_touch.active&(buff.heating_up.react&!action.scorch.executing||!buff.hot_streak.react&!buff.heating_up.react&action.scorch.executing&!hot_streak_spells_in_flight)))\n# Modified; changed to Hot Streak to avoid hardcasted Pyroblasts.\nactions.standard_rotation+=/pyroblast,if=prev_gcd.1.scorch&buff.hot_streak.react&searing_touch.active&active_enemies<variable.hot_streak_flamestrike\nactions.standard_rotation+=/phoenix_flames,if=!talent.alexstraszas_fury&!buff.hot_streak.react&(!variable.phoenix_pooling||set_bonus.tier30_2pc&debuff.charring_embers.remains<2*gcd.max)&(debuff.charring_embers.remains<2*gcd.max||buff.flames_fury.up)\nactions.standard_rotation+=/phoenix_flames,if=talent.alexstraszas_fury&!buff.hot_streak.react&(!variable.phoenix_pooling||set_bonus.tier30_2pc&debuff.charring_embers.remains<2*gcd.max||buff.flames_fury.up)&!hot_streak_spells_in_flight&!action.phoenix_flames.in_flight&(debuff.charring_embers.remains<2*gcd.max||buff.flames_fury.up||charges>1)\nactions.standard_rotation+=/call_action_list,name=active_talents\nactions.standard_rotation+=/dragons_breath,if=active_enemies>1\nactions.standard_rotation+=/scorch,if=searing_touch.active\nactions.standard_rotation+=/arcane_explosion,if=active_enemies>=variable.arcane_explosion&mana.pct>=variable.arcane_explosion_mana\n# With enough targets, it is a gain to cast Flamestrike as filler instead of Fireball.\nactions.standard_rotation+=/flamestrike,if=active_enemies>=variable.hard_cast_flamestrike\nactions.standard_rotation+=/pyroblast,if=talent.tempered_flames&!buff.flame_accelerant.react\nactions.standard_rotation+=/fireball",
["spec"] = 63,
},
["Beast Mastery"] = {
["source"] = "# https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230426,
["author"] = "SimC",
["desc"] = "2023-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",
}, -- [1]
{
["action"] = "tranquilizing_shot",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "cds",
}, -- [3]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "trinkets",
}, -- [4]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies < 2 || ! talent.beast_cleave.enabled & active_enemies < 3",
["list_name"] = "st",
}, -- [5]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies > 2 || talent.beast_cleave.enabled & active_enemies > 1",
["list_name"] = "cleave",
}, -- [6]
},
["precombat"] = {
{
["action"] = "summon_pet",
["enabled"] = true,
}, -- [1]
{
["action"] = "bottled_flayedwing_toxin",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["precast_time"] = "1.5",
["action"] = "steel_trap",
["criteria"] = "! talent.wailing_arrow.enabled & talent.steel_trap.enabled",
}, -- [3]
},
["cleave"] = {
{
["enabled"] = true,
["action"] = "barbed_shot",
["criteria"] = "debuff.latent_poison.stack > 9 & ( buff.frenzy.up & buff.frenzy.remains <= gcd.max + 0.25 || talent.scent_of_blood.enabled & cooldown.bestial_wrath.remains < 12 + gcd.max || full_recharge_time < gcd.max & cooldown.bestial_wrath.remains )",
["cycle_targets"] = 1,
}, -- [1]
{
["enabled"] = true,
["action"] = "barbed_shot",
["criteria"] = "buff.frenzy.up & buff.frenzy.remains <= gcd.max + 0.25 + barbed_shot_grace_period || talent.scent_of_blood.enabled & cooldown.bestial_wrath.remains < 12 + gcd.max || full_recharge_time < gcd.max & cooldown.bestial_wrath.remains",
["cycle_targets"] = 1,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.beast_cleave.remains < 0.25 + gcd.max",
["action"] = "multishot",
}, -- [3]
{
["action"] = "bestial_wrath",
["enabled"] = true,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "full_recharge_time < gcd.max & talent.alpha_predator.enabled & talent.kill_cleave.enabled",
["action"] = "kill_command",
}, -- [5]
{
["action"] = "call_of_the_wild",
["enabled"] = true,
}, -- [6]
{
["action"] = "explosive_shot",
["enabled"] = true,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "buff.bestial_wrath.up || boss & fight_remains < 15",
["action"] = "stampede",
}, -- [8]
{
["action"] = "bloodshed",
["enabled"] = true,
}, -- [9]
{
["action"] = "death_chakram",
["enabled"] = true,
}, -- [10]
{
["action"] = "steel_trap",
["enabled"] = true,
}, -- [11]
{
["action"] = "a_murder_of_crows",
["enabled"] = true,
}, -- [12]
{
["enabled"] = true,
["action"] = "barbed_shot",
["criteria"] = "debuff.latent_poison.stack > 9 & ( talent.wild_instincts.enabled & buff.call_of_the_wild.up || boss & fight_remains < 9 || talent.wild_call.enabled & charges_fractional > 1.2 )",
["cycle_targets"] = 1,
}, -- [13]
{
["enabled"] = true,
["action"] = "barbed_shot",
["criteria"] = "talent.wild_instincts.enabled & buff.call_of_the_wild.up || boss & fight_remains < 9 || talent.wild_call.enabled & charges_fractional > 1.2",
["cycle_targets"] = 1,
}, -- [14]
{
["action"] = "kill_command",
["enabled"] = true,
}, -- [15]
{
["action"] = "dire_beast",
["enabled"] = true,
}, -- [16]
{
["enabled"] = true,
["action"] = "serpent_sting",
["criteria"] = "refreshable & target.time_to_die > duration",
["cycle_targets"] = 1,
}, -- [17]
{
["enabled"] = true,
["criteria"] = "buff.frenzy.remains > execute_time",
["action"] = "barrage",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "buff.beast_cleave.remains < gcd.max * 2",
["action"] = "multishot",
}, -- [19]
{
["action"] = "aspect_of_the_wild",
["enabled"] = true,
}, -- [20]
{
["enabled"] = true,
["criteria"] = "focus.time_to_max < gcd.max * 2 || buff.aspect_of_the_wild.up & focus.time_to_max < gcd.max * 4",
["action"] = "cobra_shot",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "buff.frenzy.remains > execute_time || boss & fight_remains < 5",
["action"] = "wailing_arrow",
}, -- [22]
{
["enabled"] = true,
["criteria"] = "buff.bestial_wrath.down || boss & fight_remains < 5",
["action"] = "bag_of_tricks",
}, -- [23]
{
["enabled"] = true,
["criteria"] = "( focus + focus.regen + 30 ) < focus.max",
["action"] = "arcane_torrent",
}, -- [24]
{
["action"] = "kill_shot",
["enabled"] = true,
}, -- [25]
},
["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",
}, -- [1]
{
["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",
}, -- [2]
{
["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",
}, -- [3]
{
["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",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.call_of_the_wild.up || ! talent.call_of_the_wild.enabled & ( buff.bestial_wrath.up & ( buff.bloodlust.up || target.health.pct < 20 ) ) || boss & fight_remains < 31",
["action"] = "potion",
}, -- [5]
},
["st"] = {
{
["enabled"] = true,
["action"] = "barbed_shot",
["criteria"] = "buff.frenzy.up & buff.frenzy.remains <= gcd.max + 0.25 + barbed_shot_grace_period || talent.scent_of_blood.enabled & buff.frenzy.stack < 3 & cooldown.bestial_wrath.ready",
["cycle_targets"] = 1,
}, -- [1]
{
["enabled"] = true,
["criteria"] = "full_recharge_time < gcd.max & talent.alpha_predator.enabled",
["action"] = "kill_command",
}, -- [2]
{
["action"] = "call_of_the_wild",
["enabled"] = true,
}, -- [3]
{
["action"] = "death_chakram",
["enabled"] = true,
}, -- [4]
{
["action"] = "bloodshed",
["enabled"] = true,
}, -- [5]
{
["action"] = "stampede",
["enabled"] = true,
}, -- [6]
{
["action"] = "a_murder_of_crows",
["enabled"] = true,
}, -- [7]
{
["action"] = "steel_trap",
["enabled"] = true,
}, -- [8]
{
["action"] = "explosive_shot",
["enabled"] = true,
}, -- [9]
{
["action"] = "bestial_wrath",
["enabled"] = true,
}, -- [10]
{
["action"] = "kill_command",
["enabled"] = true,
}, -- [11]
{
["enabled"] = true,
["action"] = "barbed_shot",
["criteria"] = "talent.wild_instincts.enabled & buff.call_of_the_wild.up || talent.wild_call.enabled & charges_fractional > 1.4 || full_recharge_time < gcd.max & cooldown.bestial_wrath.remains || talent.scent_of_blood.enabled & ( cooldown.bestial_wrath.remains < 12 + gcd.max || full_recharge_time + gcd.max < 8 & cooldown.bestial_wrath.remains < 24 + ( 8 - gcd.max ) + full_recharge_time ) || boss & fight_remains < 9",
["cycle_targets"] = 1,
}, -- [12]
{
["action"] = "dire_beast",
["enabled"] = true,
}, -- [13]
{
["enabled"] = true,
["action"] = "serpent_sting",
["criteria"] = "refreshable & target.time_to_die > duration",
["cycle_targets"] = 1,
}, -- [14]
{
["action"] = "kill_shot",
["enabled"] = true,
}, -- [15]
{
["action"] = "aspect_of_the_wild",
["enabled"] = true,
}, -- [16]
{
["action"] = "cobra_shot",
["enabled"] = true,
}, -- [17]
{
["enabled"] = true,
["criteria"] = "buff.frenzy.remains > execute_time || boss & fight_remains < 5",
["action"] = "wailing_arrow",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "buff.bestial_wrath.down || boss & fight_remains < 5",
["action"] = "bag_of_tricks",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "buff.bestial_wrath.down || boss & fight_remains < 5",
["action"] = "arcane_pulse",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "( focus + focus.regen + 15 ) < focus.max",
["action"] = "arcane_torrent",
}, -- [21]
},
["trinkets"] = {
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "buff.call_of_the_wild.up || cooldown.call_of_the_wild.remains < 2 || ! talent.call_of_the_wild.enabled & ( prev_gcd.1.bestial_wrath || cooldown.bestial_wrath.remains_guess < 2 )",
["var_name"] = "sync_up",
}, -- [1]
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "sync_remains",
["criteria"] = "! talent.call_of_the_wild.enabled",
["value_else"] = "cooldown.call_of_the_wild.remains",
["value"] = "cooldown.bestial_wrath.remains_guess",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! trinket.t2.has_cooldown || 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 ) || ! trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) )",
["var_name"] = "trinket_1_stronger",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! trinket.t1.has_cooldown || trinket.t2.has_use_buff & ( ! trinket.t1.has_use_buff || trinket.t1.cooldown.duration < trinket.t2.cooldown.duration || trinket.t1.cast_time < trinket.t2.cast_time || trinket.t1.cast_time = trinket.t2.cast_time & trinket.t1.cooldown.duration = trinket.t2.cooldown.duration ) || ! trinket.t2.has_use_buff & ( ! trinket.t1.has_use_buff & ( trinket.t1.cooldown.duration < trinket.t2.cooldown.duration || trinket.t1.cast_time < trinket.t2.cast_time || trinket.t1.cast_time = trinket.t2.cast_time & trinket.t1.cooldown.duration = trinket.t2.cooldown.duration ) )",
["var_name"] = "trinket_2_stronger",
}, -- [4]
{
["enabled"] = true,
["action"] = "trinket1",
["slot"] = "trinket1",
["use_off_gcd"] = 1,
["criteria"] = "( trinket.t1.has_use_buff & ( variable.sync_up & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) || ! variable.sync_up & ( variable.trinket_1_stronger & ( variable.sync_remains > trinket.t1.cooldown.duration / 2 || trinket.t2.has_use_buff & trinket.t2.cooldown.remains > variable.sync_remains - 15 & trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 40 > 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 / 2 || 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 / 2 ) ) ) || ! trinket.t1.has_use_buff & ( ( ! 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 ) ) ) || target.time_to_die < 25 & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) ) & buff.frenzy.remains > trinket.t1.cast_time",
}, -- [5]
{
["enabled"] = true,
["action"] = "trinket2",
["slot"] = "trinket2",
["use_off_gcd"] = 1,
["criteria"] = "( trinket.t2.has_use_buff & ( variable.sync_up & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) || ! variable.sync_up & ( variable.trinket_2_stronger & ( variable.sync_remains > trinket.t2.cooldown.duration / 2 || trinket.t1.has_use_buff & trinket.t1.cooldown.remains > variable.sync_remains - 15 & trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 40 > 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 / 2 || 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 / 2 ) ) ) || ! trinket.t2.has_use_buff & ( ( ! 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 ) ) ) || target.time_to_die < 25 & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) ) & buff.frenzy.remains > trinket.t2.cast_time",
}, -- [6]
},
},
["version"] = 20230426,
["warnings"] = "The import for 'default' required some automated changes.\nLine 5: Converted 'talent.beast_cleave' to 'talent.beast_cleave.enabled' (1x).\nLine 6: Converted 'talent.beast_cleave' to 'talent.beast_cleave.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 3: Converted 'talent.wailing_arrow' to 'talent.wailing_arrow.enabled' (1x).\nLine 3: 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 2: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\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.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 4: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.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.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.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_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.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.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 4: 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.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.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.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'trinket.2.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.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.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 5: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\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.2.has_use_buff' to 'trinket.t2.has_use_buff' (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.2.has_use_buff' to 'trinket.t2.has_use_buff' (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.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'pet.main.buff.frenzy.remains' to 'buff.frenzy.remains' (1x).\nLine 5: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 5: Converted operations in '(trinket.t1.has_use_buff&(variable.sync_up&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||!variable.sync_up&(variable.trinket_1_stronger&(variable.sync_remains>trinket.t1.cooldown.duration%2||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-5<variable.sync_remains&variable.sync_remains+40>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%2||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%2)))||!trinket.t1.has_use_buff&((!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)))||target.time_to_die<25&(variable.trinket_1_stronger||trinket.t2.cooldown.remains))&buff.frenzy.remains>trinket.t1.cast_time' to '(trinket.t1.has_use_buff&(variable.sync_up&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||!variable.sync_up&(variable.trinket_1_stronger&(variable.sync_remains>trinket.t1.cooldown.duration/2||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-5<variable.sync_remains&variable.sync_remains+40>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/2||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/2)))||!trinket.t1.has_use_buff&((!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)))||target.time_to_die<25&(variable.trinket_1_stronger||trinket.t2.cooldown.remains))&buff.frenzy.remains>trinket.t1.cast_time'.\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (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.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (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.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.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.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.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.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.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 6: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (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.1.has_use_buff' to 'trinket.t1.has_use_buff' (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.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'pet.main.buff.frenzy.remains' to 'buff.frenzy.remains' (1x).\nLine 6: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 6: Converted operations in '(trinket.t2.has_use_buff&(variable.sync_up&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)||!variable.sync_up&(variable.trinket_2_stronger&(variable.sync_remains>trinket.t2.cooldown.duration%2||trinket.t1.has_use_buff&trinket.t1.cooldown.remains>variable.sync_remains-15&trinket.t1.cooldown.remains-5<variable.sync_remains&variable.sync_remains+40>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%2||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%2)))||!trinket.t2.has_use_buff&((!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)))||target.time_to_die<25&(variable.trinket_2_stronger||trinket.t1.cooldown.remains))&buff.frenzy.remains>trinket.t2.cast_time' to '(trinket.t2.has_use_buff&(variable.sync_up&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)||!variable.sync_up&(variable.trinket_2_stronger&(variable.sync_remains>trinket.t2.cooldown.duration/2||trinket.t1.has_use_buff&trinket.t1.cooldown.remains>variable.sync_remains-15&trinket.t1.cooldown.remains-5<variable.sync_remains&variable.sync_remains+40>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/2||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/2)))||!trinket.t2.has_use_buff&((!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)))||target.time_to_die<25&(variable.trinket_2_stronger||trinket.t1.cooldown.remains))&buff.frenzy.remains>trinket.t2.cast_time'.\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 'talent.scent_of_blood' to 'talent.scent_of_blood.enabled' (1x).\nLine 1: Converted 'pet.main.buff.frenzy.stack' to 'buff.frenzy.stack' (1x).\nLine 2: Converted 'talent.alpha_predator' to 'talent.alpha_predator.enabled' (1x).\nLine 12: Converted 'talent.wild_instincts' to 'talent.wild_instincts.enabled' (1x).\nLine 12: Converted 'talent.wild_call' to 'talent.wild_call.enabled' (1x).\nLine 12: Converted 'talent.scent_of_blood' to 'talent.scent_of_blood.enabled' (1x).\nLine 18: 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 'talent.scent_of_blood' to 'talent.scent_of_blood.enabled' (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 'talent.scent_of_blood' to 'talent.scent_of_blood.enabled' (1x).\nLine 3: Converted 'pet.main.buff.beast_cleave.remains' to 'buff.beast_cleave.remains' (1x).\nLine 5: Converted 'talent.alpha_predator' to 'talent.alpha_predator.enabled' (1x).\nLine 5: Converted 'talent.kill_cleave' to 'talent.kill_cleave.enabled' (1x).\nLine 13: Converted 'talent.wild_instincts' to 'talent.wild_instincts.enabled' (1x).\nLine 13: Converted 'talent.wild_call' to 'talent.wild_call.enabled' (1x).\nLine 14: Converted 'talent.wild_instincts' to 'talent.wild_instincts.enabled' (1x).\nLine 14: Converted 'talent.wild_call' to 'talent.wild_call.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 22: 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\nactions.precombat+=/steel_trap,precast_time=1.5,if=!talent.wailing_arrow&talent.steel_trap\n\n# Executed every time the actor is available.\nactions=counter_shot\nactions+=/tranquilizing_shot\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.bestial_wrath.up||cooldown.bestial_wrath.remains<30\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&(buff.bloodlust.up||target.health.pct<20))||boss&fight_remains<31\n\nactions.cleave+=/barbed_shot,cycle_targets=1,if=debuff.latent_poison.stack>9&(pet.main.buff.frenzy.up&pet.main.buff.frenzy.remains<=gcd+0.25||talent.scent_of_blood&cooldown.bestial_wrath.remains<12+gcd||full_recharge_time<gcd&cooldown.bestial_wrath.remains)\nactions.cleave+=/barbed_shot,cycle_targets=1,if=pet.main.buff.frenzy.up&pet.main.buff.frenzy.remains<=gcd+0.25+barbed_shot_grace_period||talent.scent_of_blood&cooldown.bestial_wrath.remains<12+gcd||full_recharge_time<gcd&cooldown.bestial_wrath.remains\nactions.cleave+=/multishot,if=pet.main.buff.beast_cleave.remains<0.25+gcd\nactions.cleave+=/bestial_wrath\nactions.cleave+=/kill_command,if=full_recharge_time<gcd&talent.alpha_predator&talent.kill_cleave\nactions.cleave+=/call_of_the_wild\nactions.cleave+=/explosive_shot\nactions.cleave+=/stampede,if=buff.bestial_wrath.up||boss&fight_remains<15\nactions.cleave+=/bloodshed\nactions.cleave+=/death_chakram\nactions.cleave+=/steel_trap\nactions.cleave+=/a_murder_of_crows\nactions.cleave+=/barbed_shot,cycle_targets=1,if=debuff.latent_poison.stack>9&(talent.wild_instincts&buff.call_of_the_wild.up||boss&fight_remains<9||talent.wild_call&charges_fractional>1.2)\nactions.cleave+=/barbed_shot,cycle_targets=1,if=talent.wild_instincts&buff.call_of_the_wild.up||boss&fight_remains<9||talent.wild_call&charges_fractional>1.2\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.remains<gcd*2\nactions.cleave+=/aspect_of_the_wild\nactions.cleave+=/cobra_shot,if=focus.time_to_max<gcd*2||buff.aspect_of_the_wild.up&focus.time_to_max<gcd*4\nactions.cleave+=/wailing_arrow,if=pet.main.buff.frenzy.remains>execute_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)<focus.max\nactions.cleave+=/kill_shot\n\nactions.st+=/barbed_shot,cycle_targets=1,if=pet.main.buff.frenzy.up&pet.main.buff.frenzy.remains<=gcd+0.25+barbed_shot_grace_period||talent.scent_of_blood&pet.main.buff.frenzy.stack<3&cooldown.bestial_wrath.ready\nactions.st+=/kill_command,if=full_recharge_time<gcd&talent.alpha_predator\nactions.st+=/call_of_the_wild\nactions.st+=/death_chakram\nactions.st+=/bloodshed\nactions.st+=/stampede\nactions.st+=/a_murder_of_crows\nactions.st+=/steel_trap\nactions.st+=/explosive_shot\nactions.st+=/bestial_wrath\nactions.st+=/kill_command\nactions.st+=/barbed_shot,cycle_targets=1,if=talent.wild_instincts&buff.call_of_the_wild.up||talent.wild_call&charges_fractional>1.4||full_recharge_time<gcd&cooldown.bestial_wrath.remains||talent.scent_of_blood&(cooldown.bestial_wrath.remains<12+gcd||full_recharge_time+gcd<8&cooldown.bestial_wrath.remains<24+(8-gcd)+full_recharge_time)||boss&fight_remains<9\nactions.st+=/dire_beast\nactions.st+=/serpent_sting,cycle_targets=1,if=refreshable&target.time_to_die>duration\nactions.st+=/kill_shot\nactions.st+=/aspect_of_the_wild\nactions.st+=/cobra_shot\nactions.st+=/wailing_arrow,if=pet.main.buff.frenzy.remains>execute_time||boss&fight_remains<5\nactions.st+=/bag_of_tricks,if=buff.bestial_wrath.down||boss&fight_remains<5\nactions.st+=/arcane_pulse,if=buff.bestial_wrath.down||boss&fight_remains<5\nactions.st+=/arcane_torrent,if=(focus+focus.regen+15)<focus.max\n\nactions.trinkets+=/variable,name=sync_up,value=buff.call_of_the_wild.up||cooldown.call_of_the_wild.remains<2||!talent.call_of_the_wild&(prev_gcd.1.bestial_wrath||cooldown.bestial_wrath.remains_guess<2)\nactions.trinkets+=/variable,name=sync_remains,op=setif,value=cooldown.bestial_wrath.remains_guess,value_else=cooldown.call_of_the_wild.remains,condition=!talent.call_of_the_wild\nactions.trinkets+=/variable,name=trinket_1_stronger,value=!trinket.2.has_cooldown||trinket.1.has_use_buff&(!trinket.2.has_use_buff||trinket.2.cooldown.duration<trinket.1.cooldown.duration||trinket.2.cast_time<trinket.1.cast_time||trinket.2.cast_time=trinket.1.cast_time&trinket.2.cooldown.duration=trinket.1.cooldown.duration)||!trinket.1.has_use_buff&(!trinket.2.has_use_buff&(trinket.2.cooldown.duration<trinket.1.cooldown.duration||trinket.2.cast_time<trinket.1.cast_time||trinket.2.cast_time=trinket.1.cast_time&trinket.2.cooldown.duration=trinket.1.cooldown.duration))\nactions.trinkets+=/variable,name=trinket_2_stronger,value=!trinket.1.has_cooldown||trinket.2.has_use_buff&(!trinket.1.has_use_buff||trinket.1.cooldown.duration<trinket.2.cooldown.duration||trinket.1.cast_time<trinket.2.cast_time||trinket.1.cast_time=trinket.2.cast_time&trinket.1.cooldown.duration=trinket.2.cooldown.duration)||!trinket.2.has_use_buff&(!trinket.1.has_use_buff&(trinket.1.cooldown.duration<trinket.2.cooldown.duration||trinket.1.cast_time<trinket.2.cast_time||trinket.1.cast_time=trinket.2.cast_time&trinket.1.cooldown.duration=trinket.2.cooldown.duration))\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=(trinket.1.has_use_buff&(variable.sync_up&(variable.trinket_1_stronger||trinket.2.cooldown.remains)||!variable.sync_up&(variable.trinket_1_stronger&(variable.sync_remains>trinket.1.cooldown.duration%2||trinket.2.has_use_buff&trinket.2.cooldown.remains>variable.sync_remains-15&trinket.2.cooldown.remains-5<variable.sync_remains&variable.sync_remains+40>fight_remains)||variable.trinket_2_stronger&(trinket.2.cooldown.remains&(trinket.2.cooldown.remains-5<variable.sync_remains&variable.sync_remains>=20||trinket.2.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.1.cooldown.duration%2||trinket.1.cooldown.duration<fight_remains&(variable.sync_remains+trinket.1.cooldown.duration>fight_remains)))||trinket.2.cooldown.ready&variable.sync_remains>20&variable.sync_remains<trinket.2.cooldown.duration%2)))||!trinket.1.has_use_buff&((!trinket.2.has_use_buff&(variable.trinket_1_stronger||trinket.2.cooldown.remains)||trinket.2.has_use_buff&(variable.sync_remains>20||trinket.2.cooldown.remains>20)))||target.time_to_die<25&(variable.trinket_1_stronger||trinket.2.cooldown.remains))&pet.main.buff.frenzy.remains>trinket.1.cast_time\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=(trinket.2.has_use_buff&(variable.sync_up&(variable.trinket_2_stronger||trinket.1.cooldown.remains)||!variable.sync_up&(variable.trinket_2_stronger&(variable.sync_remains>trinket.2.cooldown.duration%2||trinket.1.has_use_buff&trinket.1.cooldown.remains>variable.sync_remains-15&trinket.1.cooldown.remains-5<variable.sync_remains&variable.sync_remains+40>fight_remains)||variable.trinket_1_stronger&(trinket.1.cooldown.remains&(trinket.1.cooldown.remains-5<variable.sync_remains&variable.sync_remains>=20||trinket.1.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.2.cooldown.duration%2||trinket.2.cooldown.duration<fight_remains&(variable.sync_remains+trinket.2.cooldown.duration>fight_remains)))||trinket.1.cooldown.ready&variable.sync_remains>20&variable.sync_remains<trinket.1.cooldown.duration%2)))||!trinket.2.has_use_buff&((!trinket.1.has_use_buff&(variable.trinket_2_stronger||trinket.1.cooldown.remains)||trinket.1.has_use_buff&(variable.sync_remains>20||trinket.1.cooldown.remains>20)))||target.time_to_die<25&(variable.trinket_2_stronger||trinket.1.cooldown.remains))&pet.main.buff.frenzy.remains>trinket.2.cast_time",
["spec"] = 253,
},
["Assassination"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230325,
["author"] = "SimC",
["desc"] = "2023-02-25: Allow Envenom as CP spender against a dying target when Rupture and Crimson Tempest would otherwise not be used.\n\n2023-03-19: 10.0.7 update.\n\n2023-03-25: Add missing Shiv entry.",
["lists"] = {
["stealthed"] = {
{
["enabled"] = true,
["description"] = "Stealthed Actions",
["criteria"] = "spell_targets.fan_of_knives > desired_targets || spell_targets.fan_of_knives > 1 & raid_event.adds.in > 60",
["action"] = "indiscriminate_carnage",
}, -- [1]
{
["enabled"] = true,
["action"] = "garrote",
["cycle_targets"] = 1,
["description"] = "Improved Garrote: Apply or Refresh with buffed Garrotes",
["criteria"] = "stealthed.improved_garrote & ! will_lose_exsanguinate & ( remains < 12 / exsanguinated_rate || pmultiplier <= 1 ) & target.time_to_die - remains > 2",
}, -- [2]
{
["enabled"] = true,
["description"] = "Improved Garrote + Exsg on 1T: Refresh Garrote at the end of stealth to get max duration before Exsanguinate",
["criteria"] = "talent.exsanguinate.enabled & stealthed.improved_garrote & active_enemies = 1 & ! will_lose_exsanguinate & ( remains < 18 / exsanguinated_rate || pmultiplier <= 1 ) & variable.exsang_sync_remains < 18 & improved_garrote_remains < 1.3",
["action"] = "garrote",
}, -- [3]
},
["vanish"] = {
{
["enabled"] = true,
["description"] = "Stealth Cooldowns Vanish Sync for Improved Garrote with Deathmark",
["criteria"] = "talent.improved_garrote.enabled & cooldown.garrote.up & ! debuff.garrote.exsanguinated & ( dot.garrote.pmultiplier <= 1 || dot.garrote.refreshable ) & ( debuff.deathmark.up || cooldown.deathmark.remains < 4 ) & combo_points.deficit >= ( spell_targets.fan_of_knives >? 4 )",
["action"] = "vanish",
}, -- [1]
{
["enabled"] = true,
["description"] = "Vanish for Indiscriminate Carnage or Improved Garrote at 2-3+ targets",
["criteria"] = "talent.improved_garrote.enabled & cooldown.garrote.up & ! debuff.garrote.exsanguinated & ( dot.garrote.pmultiplier <= 1 || dot.garrote.refreshable ) & spell_targets.fan_of_knives > ( 3 - talent.indiscriminate_carnage.enabled ) & ( ! talent.indiscriminate_carnage.enabled || cooldown.indiscriminate_carnage.ready )",
["action"] = "vanish",
}, -- [2]
{
["enabled"] = true,
["description"] = "Vanish with Master Assassin: Rupture+Garrote not in refresh range, during Deathmark+Shiv. Sync with Sepsis final hit if possible.",
["criteria"] = "! talent.improved_garrote.enabled & talent.master_assassin.enabled & ! dot.rupture.refreshable & dot.garrote.remains > 3 & debuff.deathmark.up & ( debuff.shiv.up || debuff.deathmark.remains < 4 || dot.sepsis.ticking ) & dot.sepsis.remains < 3",
["action"] = "vanish",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "talent.improved_garrote.enabled & cooldown.garrote.up & ! debuff.garrote.exsanguinated & dot.garrote.pmultiplier <= 1 & ( debuff.deathmark.up || cooldown.deathmark.remains < 4 || cooldown.deathmark.remains > 60 ) & combo_points.deficit >= ( spell_targets.fan_of_knives >? 4 )",
["action"] = "shadow_dance",
}, -- [4]
{
["enabled"] = true,
["description"] = "Shadow Dance for Improved Garrote with Deathmark",
["criteria"] = "talent.improved_garrote.enabled & cooldown.garrote.up & ! debuff.garrote.exsanguinated & ( dot.garrote.pmultiplier <= 1 || dot.garrote.refreshable ) & ( debuff.deathmark.up || cooldown.deathmark.remains < 12 || cooldown.deathmark.remains > 60 ) & combo_points.deficit >= ( spell_targets.fan_of_knives >? 4 )",
["action"] = "shadow_dance",
}, -- [5]
{
["enabled"] = true,
["description"] = "Shadow Dance with Master Assassin: Rupture+Garrote not in refresh range, during Deathmark+Shiv. Sync with Sepsis final hit if possible.",
["criteria"] = "! talent.improved_garrote.enabled & talent.master_assassin.enabled & ! dot.rupture.refreshable & dot.garrote.remains > 3 & ( debuff.deathmark.up || cooldown.deathmark.remains > 60 ) & ( debuff.shiv.up || debuff.deathmark.remains < 4 || dot.sepsis.ticking ) & dot.sepsis.remains < 3",
["action"] = "shadow_dance",
}, -- [6]
},
["default"] = {
{
["enabled"] = true,
["description"] = "Restealth if possible (no vulnerable enemies in combat)",
["action"] = "stealth",
}, -- [1]
{
["enabled"] = true,
["description"] = "Interrupt on cooldown to allow simming interactions with that",
["criteria"] = "! stealthed.all",
["action"] = "kick",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "spell_targets.fan_of_knives < 2",
["var_name"] = "single_target",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "energy.regen_combined > 35",
["var_name"] = "regen_saturated",
["description"] = "Combined Energy Regen needed to saturate",
}, -- [4]
{
["enabled"] = true,
["op"] = "setif",
["description"] = "Next Exsanguinate cooldown time based on Deathmark syncing logic and remaining fight duration",
["var_name"] = "exsang_sync_remains",
["value"] = "cooldown.deathmark.remains",
["action"] = "variable",
["value_else"] = "cooldown.exsanguinate.remains",
["criteria"] = "cooldown.deathmark.remains > cooldown.exsanguinate.remains & cooldown.deathmark.remains < fight_remains",
}, -- [5]
{
["enabled"] = true,
["action"] = "call_action_list",
["criteria"] = "stealthed.rogue || stealthed.improved_garrote",
["list_name"] = "stealthed",
}, -- [6]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "cds",
}, -- [7]
{
["enabled"] = true,
["description"] = "Put SnD up initially for Cut to the Chase, refresh with Envenom if at low duration",
["criteria"] = "! buff.slice_and_dice.up & combo_points >= 2 || ! talent.cut_to_the_chase.enabled & refreshable & combo_points >= 4",
["action"] = "slice_and_dice",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "talent.cut_to_the_chase.enabled & buff.slice_and_dice.up & buff.slice_and_dice.remains < 5 & combo_points >= 4",
["action"] = "envenom",
}, -- [9]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "dot",
}, -- [10]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "direct",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "energy.deficit >= 15 + energy.regen_combined",
["action"] = "arcane_torrent",
}, -- [12]
{
["action"] = "arcane_pulse",
["enabled"] = true,
}, -- [13]
{
["action"] = "lights_judgment",
["enabled"] = true,
}, -- [14]
{
["action"] = "bag_of_tricks",
["enabled"] = true,
}, -- [15]
},
["precombat"] = {
{
["enabled"] = true,
["description"] = "Executed before combat begins. Accepts non-harmful actions only.",
["action"] = "apply_poison",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in > 15",
["action"] = "marked_for_death",
["precombat_seconds"] = "10",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["var_name"] = "trinket_sync_slot",
["value"] = "1",
["description"] = "Determine which (if any) stat buff trinket we want to attempt to sync with Deathmark.",
["criteria"] = "trinket.t1.has_stat.any_dps & ( ! trinket.t2.has_stat.any_dps || trinket.t1.cooldown.duration >= trinket.t2.cooldown.duration )",
}, -- [3]
{
["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 )",
}, -- [4]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "cp_max_spend <? ( talent.resounding_clarity.enabled * 7 )",
["var_name"] = "exsanguinate_rupture_cp",
["description"] = "Determine if we should be be casting our pre-Exsanguinate Rupture with Echoing Reprimand CP",
}, -- [5]
{
["action"] = "stealth",
["enabled"] = true,
}, -- [6]
{
["enabled"] = true,
["criteria"] = "refreshable",
["action"] = "slice_and_dice",
["precombat_seconds"] = "1",
}, -- [7]
},
["direct"] = {
{
["enabled"] = true,
["description"] = "Direct damage abilities Envenom at 4+ (5+ with DS) CP. Immediately on 2+ targets, with Deathmark, or with TB, otherwise wait for some energy. Also wait if Exsg combo is coming up. Allow as filler on a dying target if CP capped.",
["criteria"] = "effective_combo_points >= 4 + talent.deeper_stratagem.enabled & ( debuff.deathmark.up || debuff.shiv.up || debuff.amplifying_poison.stack >= 10 || energy.deficit <= 25 + energy.regen_combined || ! variable.single_target || effective_combo_points > cp_max_spend || combo_points.deficit < 1 & target.time_to_die <= 4 + ( talent.dashing_scoundrel.enabled * 5 ) + ( talent.doomblade.enabled * 5 ) + ( variable.regen_saturated * 6 ) ) & ( ! talent.exsanguinate.enabled || variable.exsang_sync_remains > 2 || talent.resounding_clarity.enabled & ( cooldown.echoing_reprimand.ready & combo_points > 2 || effective_combo_points > 5 ) )",
["action"] = "envenom",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "combo_points.deficit > 1 || energy.deficit <= 25 + energy.regen_combined || ! variable.single_target",
["var_name"] = "use_filler",
}, -- [2]
{
["enabled"] = true,
["description"] = "Apply SBS to all targets without a debuff as priority, preferring targets dying sooner after the primary target",
["criteria"] = "variable.use_filler & ! dot.serrated_bone_spike_dot.ticking",
["action"] = "serrated_bone_spike",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "variable.use_filler & ! dot.serrated_bone_spike_dot.ticking",
["action"] = "serrated_bone_spike",
["cycle_targets"] = 1,
}, -- [4]
{
["enabled"] = true,
["description"] = "Keep from capping charges or burn at the end of fights",
["criteria"] = "variable.use_filler & master_assassin_remains < 0.8 & ( boss & fight_remains <= 5 || cooldown.serrated_bone_spike.max_charges - charges_fractional <= 0.25 )",
["action"] = "serrated_bone_spike",
}, -- [5]
{
["enabled"] = true,
["description"] = "When MA is not at high duration, sync with Shiv",
["criteria"] = "variable.use_filler & master_assassin_remains < 0.8 & ! variable.single_target & debuff.shiv.up",
["action"] = "serrated_bone_spike",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "( ! talent.exsanguinate.enabled || ! talent.resounding_clarity.enabled || variable.exsang_sync_remains > 40 ) & variable.use_filler & cooldown.deathmark.remains > 10 || boss & fight_remains < 20",
["action"] = "echoing_reprimand",
}, -- [7]
{
["enabled"] = true,
["description"] = "Fan of Knives at 3+ targets or 4+ with DTB",
["criteria"] = "variable.use_filler & ( ! priority_rotation & spell_targets.fan_of_knives >= 3 + stealthed.rogue + talent.dragontempered_blades.enabled )",
["action"] = "fan_of_knives",
}, -- [8]
{
["enabled"] = true,
["action"] = "fan_of_knives",
["cycle_targets"] = 1,
["description"] = "Fan of Knives to apply poisons if inactive on any target (or any bleeding targets with priority rotation) at 3T",
["criteria"] = "variable.use_filler & spell_targets.fan_of_knives >= 3 & ! dot.deadly_poison_dot.ticking & ( ! priority_rotation || dot.garrote.ticking || dot.rupture.ticking )",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "variable.use_filler",
["action"] = "ambush",
}, -- [10]
{
["enabled"] = true,
["action"] = "mutilate",
["cycle_targets"] = 1,
["description"] = "Tab-Mutilate to apply Deadly Poison at 2 targets",
["criteria"] = "! dot.deadly_poison_dot.ticking & ! debuff.amplifying_poison.up & variable.use_filler & spell_targets.fan_of_knives = 2",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "variable.use_filler",
["action"] = "mutilate",
}, -- [12]
},
["cds"] = {
{
["enabled"] = true,
["action"] = "marked_for_death",
["line_cd"] = "1.5",
["description"] = "Cooldowns If adds are up, snipe the one with lowest TTD. Use when dying faster than CP deficit or without any CP.",
["criteria"] = "raid_event.adds.up & ( ! variable.single_target || boss & fight_remains < 30 ) & ( target.time_to_die < combo_points.deficit * 1.5 || combo_points.deficit >= cp_max_spend )",
["cycle_targets"] = 1,
}, -- [1]
{
["enabled"] = true,
["description"] = "If no adds will die within the next 30s, use MfD for max CP.",
["criteria"] = "raid_event.adds.in > 30 - raid_event.adds.duration & combo_points.deficit >= cp_max_spend",
["action"] = "marked_for_death",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! talent.exsanguinate.enabled || cooldown.exsanguinate.remains > 15 || debuff.rupture.exsanguinated || debuff.garrote.exsanguinated",
["var_name"] = "deathmark_exsanguinate_condition",
["description"] = "Sync Deathmark window with Exsanguinate if applicable",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! talent.master_assassin.enabled || dot.garrote.ticking",
["var_name"] = "deathmark_ma_condition",
["description"] = "Wait on Deathmark for Garrote with MA",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "! stealthed.rogue & ! stealthed.improved_garrote & ( ! talent.improved_garrote.enabled & dot.garrote.ticking || talent.improved_garrote.enabled & cooldown.garrote.up ) & ( target.time_to_die > 10 || boss & fight_remains < 10 )",
["action"] = "sepsis",
}, -- [5]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! stealthed.rogue & dot.rupture.ticking & ! debuff.deathmark.up & variable.deathmark_exsanguinate_condition & variable.deathmark_ma_condition",
["var_name"] = "deathmark_condition",
["description"] = "Deathmark to be used if not stealthed, Rupture is up, and all other talent conditions are satisfied",
}, -- [6]
{
["enabled"] = true,
["action"] = "algethar_puzzle_box",
["use_off_gcd"] = 1,
["criteria"] = "( ! talent.exsanguinate.enabled || cooldown.exsanguinate.remains > 15 || debuff.rupture.exsanguinated || debuff.garrote.exsanguinated ) & dot.rupture.ticking & cooldown.deathmark.remains < 2 || boss & fight_remains <= 22",
["name"] = "algethar_puzzle_box",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "( variable.trinket_sync_slot = 1 & ( debuff.deathmark.up || boss & fight_remains <= 20 ) || ( variable.trinket_sync_slot = 2 & ( ! trinket.t2.cooldown.ready || ! debuff.deathmark.up & cooldown.deathmark.remains > 20 ) ) || ! variable.trinket_sync_slot )",
["action"] = "trinket1",
["slots"] = "trinket1",
["description"] = "Sync the priority stat buff trinket with Deathmark, otherwise use on cooldown",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "( variable.trinket_sync_slot = 2 & ( debuff.deathmark.up || boss & fight_remains <= 20 ) || ( variable.trinket_sync_slot = 1 & ( ! trinket.t1.cooldown.ready || ! debuff.deathmark.up & cooldown.deathmark.remains > 20 ) ) || ! variable.trinket_sync_slot )",
["slots"] = "trinket2",
["action"] = "trinket2",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "variable.deathmark_condition",
["action"] = "deathmark",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "( debuff.shiv.up || cooldown.shiv.remains < 6 ) & buff.envenom.up & ( cooldown.deathmark.remains >= 50 || dot.deathmark.ticking )",
["action"] = "kingsbane",
}, -- [11]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.exsanguinate.enabled & ! stealthed.rogue & ! stealthed.improved_garrote & ! dot.deathmark.ticking & target.time_to_die > variable.exsang_sync_remains + 4 & variable.exsang_sync_remains < 4",
["var_name"] = "exsanguinate_condition",
["description"] = "Exsanguinate when not stealthed and both Rupture and Garrote are up for long enough. Attempt to sync with Deathmark and also Echoing Reprimand if using Resounding Clarity.",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "talent.exsanguinate.enabled & talent.resounding_clarity.enabled & ( variable.exsanguinate_condition & combo_points <= 2 & variable.exsang_sync_remains <= 2 & ! dot.garrote.refreshable & dot.rupture.remains > 9.6 )",
["action"] = "echoing_reprimand",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "variable.exsanguinate_condition & ( ! dot.garrote.refreshable & dot.rupture.remains > 4 + 4 * variable.exsanguinate_rupture_cp || dot.rupture.remains * 0.5 > target.time_to_die )",
["action"] = "exsanguinate",
}, -- [14]
{
["enabled"] = true,
["description"] = "Shiv if DoTs are up, Always Shiv with Kingsbane, otherwise attempt to sync with Sepsis or Deathmark if we won't waste more than half Shiv's cooldown",
["criteria"] = "talent.kingsbane.enabled & ! debuff.shiv.up & dot.kingsbane.ticking & dot.garrote.ticking & dot.rupture.ticking & ( ! talent.crimson_tempest.enabled || variable.single_target || dot.crimson_tempest.ticking )",
["action"] = "shiv",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "talent.arterial_precision.enabled & ! debuff.shiv.up & dot.garrote.ticking & dot.rupture.ticking & ( debuff.deathmark.up || cooldown.shiv.charges_fractional > max_charges - 0.5 & cooldown.deathmark.remains > 10 )",
["action"] = "shiv",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "talent.sepsis.enabled & ! talent.kingsbane.enabled & ! talent.arterial_precision.enabled & ! debuff.shiv.up & dot.garrote.ticking & dot.rupture.ticking & ( ( cooldown.sepsis.ready || cooldown.sepsis.remains > 12 ) + ( cooldown.deathmark.ready || cooldown.deathmark.remains > 12 ) = 2 )",
["action"] = "shiv",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "! talent.kingsbane.enabled & ! talent.arterial_precision.enabled & ! talent.sepsis.enabled & ! debuff.shiv.up & dot.garrote.ticking & dot.rupture.ticking & ( ! talent.crimson_tempest.enabled || variable.single_target || dot.crimson_tempest.ticking ) & ( ! talent.exsanguinate.enabled || variable.exsang_sync_remains > 2 )",
["action"] = "shiv",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "! buff.thistle_tea.up & ( energy.deficit >= 100 || charges = 3 & ( dot.kingsbane.ticking || debuff.deathmark.up ) || boss & fight_remains < charges * 6 )",
["action"] = "thistle_tea",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "( spell_targets.fan_of_knives > desired_targets || spell_targets.fan_of_knives > 1 & raid_event.adds.in > 60 ) & ( ! talent.improved_garrote.enabled || cooldown.vanish.remains > 45 )",
["action"] = "indiscriminate_carnage",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "buff.bloodlust.react || boss & fight_remains < 30 || debuff.deathmark.up",
["action"] = "potion",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "debuff.deathmark.up",
["action"] = "blood_fury",
}, -- [22]
{
["enabled"] = true,
["criteria"] = "debuff.deathmark.up",
["action"] = "berserking",
}, -- [23]
{
["enabled"] = true,
["criteria"] = "debuff.deathmark.up",
["action"] = "fireblood",
}, -- [24]
{
["enabled"] = true,
["criteria"] = "debuff.deathmark.up",
["action"] = "ancestral_call",
}, -- [25]
{
["enabled"] = true,
["action"] = "call_action_list",
["criteria"] = "! stealthed.all & master_assassin_remains = 0",
["list_name"] = "vanish",
}, -- [26]
{
["enabled"] = true,
["criteria"] = "combo_points >= 4",
["action"] = "cold_blood",
}, -- [27]
},
["dot"] = {
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "priority_rotation & ( dot.garrote.remains < cooldown.garrote.duration || variable.regen_saturated )",
["var_name"] = "skip_cycle_garrote",
["description"] = "Damage over time abilities Limit secondary Garrotes for priority rotation if we have 35 energy regen or Garrote will expire on the primary target",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "priority_rotation & ( debuff.shiv.up & spell_targets.fan_of_knives > 2 || variable.regen_saturated )",
["var_name"] = "skip_cycle_rupture",
["description"] = "Limit secondary Ruptures for priority rotation if we have 35 energy regen or Shiv is up on 2T+",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "0",
["var_name"] = "skip_rupture",
["description"] = "Limit Ruptures when appropriate, not currently used",
}, -- [3]
{
["enabled"] = true,
["description"] = "Special Garrote and Rupture setup prior to Exsanguinate cast",
["criteria"] = "talent.exsanguinate.enabled & ! will_lose_exsanguinate & dot.garrote.pmultiplier <= 1 & variable.exsang_sync_remains < 2 & spell_targets.fan_of_knives = 1 & raid_event.adds.in > 6 & dot.garrote.remains * 0.5 < target.time_to_die",
["action"] = "garrote",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "talent.exsanguinate.enabled & ! will_lose_exsanguinate & dot.rupture.pmultiplier <= 1 & variable.exsang_sync_remains < 1 & effective_combo_points >= variable.exsanguinate_rupture_cp & dot.rupture.remains * 0.5 < target.time_to_die",
["action"] = "rupture",
}, -- [5]
{
["enabled"] = true,
["description"] = "Garrote upkeep, also tries to use it as a special generator for the last CP before a finisher",
["criteria"] = "refreshable & combo_points.deficit >= 1 & ( pmultiplier <= 1 || remains <= tick_time & spell_targets.fan_of_knives >= 3 ) & ( ! will_lose_exsanguinate || remains <= tick_time * 2 & spell_targets.fan_of_knives >= 3 ) & ( target.time_to_die - remains ) > 4 & master_assassin_remains = 0",
["action"] = "garrote",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "! variable.skip_cycle_garrote & refreshable & combo_points.deficit >= 1 & ( pmultiplier <= 1 || remains <= tick_time & spell_targets.fan_of_knives >= 3 ) & ( ! will_lose_exsanguinate || remains <= tick_time * 2 & spell_targets.fan_of_knives >= 3 ) & ( target.time_to_die - remains ) > 12 & master_assassin_remains = 0",
["action"] = "garrote",
["cycle_targets"] = 1,
}, -- [7]
{
["enabled"] = true,
["action"] = "crimson_tempest",
["cycle_targets"] = 1,
["description"] = "Crimson Tempest on multiple targets at 4+ CP when running out in 2-5s as long as we have enough regen and aren't setting up for Deathmark",
["criteria"] = "spell_targets >= 2 & effective_combo_points >= 4 & energy.regen_combined > 20 & ( ! cooldown.deathmark.ready || dot.rupture.ticking ) & remains < ( 2 + 3 * ( spell_targets >= 4 ) )",
}, -- [8]
{
["enabled"] = true,
["description"] = "Keep up Rupture at 4+ on all targets (when living long enough and not snapshot)",
["criteria"] = "! variable.skip_rupture & effective_combo_points >= 4 & refreshable & ( pmultiplier <= 1 || remains <= tick_time & spell_targets.fan_of_knives >= 3 ) & ( ! will_lose_exsanguinate || remains <= tick_time * 2 & spell_targets.fan_of_knives >= 3 ) & target.time_to_die - remains > ( 4 + ( talent.dashing_scoundrel.enabled * 5 ) + ( talent.doomblade.enabled * 5 ) + ( variable.regen_saturated * 6 ) )",
["action"] = "rupture",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "! variable.skip_cycle_rupture & ! variable.skip_rupture & effective_combo_points >= 4 & refreshable & ( pmultiplier <= 1 || remains <= tick_time & spell_targets.fan_of_knives >= 3 ) & ( ! will_lose_exsanguinate || remains <= tick_time * 2 & spell_targets.fan_of_knives >= 3 ) & target.time_to_die - remains > ( 4 + ( talent.dashing_scoundrel.enabled * 5 ) + ( talent.doomblade.enabled * 5 ) + ( variable.regen_saturated * 6 ) )",
["action"] = "rupture",
["cycle_targets"] = 1,
}, -- [10]
{
["enabled"] = true,
["description"] = "Fallback AoE Crimson Tempest with the same logic as above, but ignoring the energy conditions if we aren't using Rupture",
["criteria"] = "spell_targets >= 2 & effective_combo_points >= 4 & remains < 2 + 3 * ( spell_targets >= 4 )",
["action"] = "crimson_tempest",
}, -- [11]
{
["enabled"] = true,
["description"] = "Crimson Tempest on ST if in pandemic and nearly max energy and if Envenom won't do more damage due to TB/MA",
["criteria"] = "spell_targets = 1 & ! talent.dashing_scoundrel.enabled & effective_combo_points >= ( cp_max_spend - 1 ) & refreshable & ! will_lose_exsanguinate & ! debuff.shiv.up & debuff.amplifying_poison.stack < 15 & ( ! talent.kingsbane.enabled || buff.envenom.up || ! cooldown.kingsbane.up ) & target.time_to_die - remains > 4",
["action"] = "crimson_tempest",
}, -- [12]
},
},
["version"] = 20230325,
["warnings"] = "The import for 'stealthed' required some automated changes.\nLine 2: Converted operations in 'stealthed.improved_garrote&!will_lose_exsanguinate&(remains<12%exsanguinated_rate||pmultiplier<=1)&target.time_to_die-remains>2' to 'stealthed.improved_garrote&!will_lose_exsanguinate&(remains<12/exsanguinated_rate||pmultiplier<=1)&target.time_to_die-remains>2'.\nLine 3: Converted operations in 'talent.exsanguinate.enabled&stealthed.improved_garrote&active_enemies=1&!will_lose_exsanguinate&(remains<18%exsanguinated_rate||pmultiplier<=1)&variable.exsang_sync_remains<18&improved_garrote_remains<1.3' to 'talent.exsanguinate.enabled&stealthed.improved_garrote&active_enemies=1&!will_lose_exsanguinate&(remains<18/exsanguinated_rate||pmultiplier<=1)&variable.exsang_sync_remains<18&improved_garrote_remains<1.3'.\n\nThe import for 'vanish' required some automated changes.\nLine 1: Converted 'talent.improved_garrote' to 'talent.improved_garrote.enabled' (1x).\nLine 1: Converted 'exsanguinated.garrote' to 'debuff.garrote.exsanguinated' (1x).\nLine 2: Converted 'talent.improved_garrote' to 'talent.improved_garrote.enabled' (1x).\nLine 2: Converted 'exsanguinated.garrote' to 'debuff.garrote.exsanguinated' (1x).\nLine 2: Converted 'talent.indiscriminate_carnage' to 'talent.indiscriminate_carnage.enabled' (1x).\nLine 2: Converted 'talent.indiscriminate_carnage' to 'talent.indiscriminate_carnage.enabled' (1x).\nLine 3: Converted 'talent.improved_garrote' to 'talent.improved_garrote.enabled' (1x).\nLine 3: Converted 'talent.master_assassin' to 'talent.master_assassin.enabled' (1x).\nLine 4: Converted 'talent.improved_garrote' to 'talent.improved_garrote.enabled' (1x).\nLine 4: Converted 'exsanguinated.garrote' to 'debuff.garrote.exsanguinated' (1x).\nLine 5: Converted 'talent.improved_garrote' to 'talent.improved_garrote.enabled' (1x).\nLine 5: Converted 'exsanguinated.garrote' to 'debuff.garrote.exsanguinated' (1x).\nLine 6: Converted 'talent.improved_garrote' to 'talent.improved_garrote.enabled' (1x).\nLine 6: Converted 'talent.master_assassin' to 'talent.master_assassin.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 8: Converted 'talent.cut_to_the_chase' to 'talent.cut_to_the_chase.enabled' (1x).\nLine 9: Converted 'talent.cut_to_the_chase' to 'talent.cut_to_the_chase.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 3: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 3: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (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.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 3: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 4: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 4: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (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 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'talent.resounding_clarity' to 'talent.resounding_clarity.enabled' (1x).\n\nThe import for 'direct' required some automated changes.\nLine 1: Converted 'talent.dashing_scoundrel' to 'talent.dashing_scoundrel.enabled' (1x).\nLine 1: Converted 'talent.doomblade' to 'talent.doomblade.enabled' (1x).\nLine 1: Converted 'talent.resounding_clarity' to 'talent.resounding_clarity.enabled' (1x).\nLine 7: Converted 'talent.exsanguinate' to 'talent.exsanguinate.enabled' (1x).\nLine 7: Converted 'talent.resounding_clarity' to 'talent.resounding_clarity.enabled' (1x).\nLine 8: Converted 'talent.dragontempered_blades' to 'talent.dragontempered_blades.enabled' (1x).\n\nThe import for 'cds' required some automated changes.\nLine 3: Converted 'talent.exsanguinate' to 'talent.exsanguinate.enabled' (1x).\nLine 3: Converted 'exsanguinated.rupture' to 'debuff.rupture.exsanguinated' (1x).\nLine 3: Converted 'exsanguinated.garrote' to 'debuff.garrote.exsanguinated' (1x).\nLine 5: Converted 'talent.improved_garrote' to 'talent.improved_garrote.enabled' (1x).\nLine 5: Converted 'talent.improved_garrote' to 'talent.improved_garrote.enabled' (1x).\nLine 7: Converted 'talent.exsanguinate' to 'talent.exsanguinate.enabled' (1x).\nLine 7: Converted 'exsanguinated.rupture' to 'debuff.rupture.exsanguinated' (1x).\nLine 7: Converted 'exsanguinated.garrote' to 'debuff.garrote.exsanguinated' (1x).\nLine 8: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 8: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 9: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 9: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 12: Converted 'talent.exsanguinate' to 'talent.exsanguinate.enabled' (1x).\nLine 13: Converted 'talent.exsanguinate' to 'talent.exsanguinate.enabled' (1x).\nLine 13: Converted 'talent.resounding_clarity' to 'talent.resounding_clarity.enabled' (1x).\nLine 15: Converted 'talent.kingsbane' to 'talent.kingsbane.enabled' (1x).\nLine 16: Converted 'talent.arterial_precision' to 'talent.arterial_precision.enabled' (1x).\nLine 17: Converted 'talent.sepsis' to 'talent.sepsis.enabled' (1x).\nLine 17: Converted 'talent.kingsbane' to 'talent.kingsbane.enabled' (1x).\nLine 17: Converted 'talent.arterial_precision' to 'talent.arterial_precision.enabled' (1x).\nLine 18: Converted 'talent.kingsbane' to 'talent.kingsbane.enabled' (1x).\nLine 18: Converted 'talent.arterial_precision' to 'talent.arterial_precision.enabled' (1x).\nLine 18: Converted 'talent.sepsis' to 'talent.sepsis.enabled' (1x).\nLine 18: Converted 'talent.exsanguinate' to 'talent.exsanguinate.enabled' (1x).\nLine 20: Converted 'talent.improved_garrote' to 'talent.improved_garrote.enabled' (1x).\n\nThe import for 'dot' required some automated changes.\nLine 9: Converted 'talent.dashing_scoundrel' to 'talent.dashing_scoundrel.enabled' (1x).\nLine 9: Converted 'talent.doomblade' to 'talent.doomblade.enabled' (1x).\nLine 10: Converted 'talent.dashing_scoundrel' to 'talent.dashing_scoundrel.enabled' (1x).\nLine 10: Converted 'talent.doomblade' to 'talent.doomblade.enabled' (1x).\nLine 12: Converted 'talent.dashing_scoundrel' to 'talent.dashing_scoundrel.enabled' (1x).\nLine 12: Converted 'talent.kingsbane' to 'talent.kingsbane.enabled' (1x).\n\nImported 7 action lists.\n",
["spec"] = 259,
["profile"] = "# Executed before combat begins. Accepts non-harmful actions only.\nactions.precombat=apply_poison\nactions.precombat+=/marked_for_death,precombat_seconds=10,if=raid_event.adds.in>15\n# Determine which (if any) stat buff trinket we want to attempt to sync with Deathmark.\nactions.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)\n# Determine if we should be be casting our pre-Exsanguinate Rupture with Echoing Reprimand CP\nactions.precombat+=/variable,name=exsanguinate_rupture_cp,value=cp_max_spend<?(talent.resounding_clarity*7)\nactions.precombat+=/stealth\nactions.precombat+=/slice_and_dice,precombat_seconds=1,if=refreshable\n\n# Executed every time the actor is available.\n# Restealth if possible (no vulnerable enemies in combat)\nactions=stealth\n# Interrupt on cooldown to allow simming interactions with that\nactions+=/kick,if=!stealthed.all\nactions+=/variable,name=single_target,value=spell_targets.fan_of_knives<2\n# Combined Energy Regen needed to saturate\nactions+=/variable,name=regen_saturated,value=energy.regen_combined>35\n# Next Exsanguinate cooldown time based on Deathmark syncing logic and remaining fight duration\nactions+=/variable,name=exsang_sync_remains,op=setif,condition=cooldown.deathmark.remains>cooldown.exsanguinate.remains&cooldown.deathmark.remains<fight_remains,value=cooldown.deathmark.remains,value_else=cooldown.exsanguinate.remains\nactions+=/call_action_list,name=stealthed,if=stealthed.rogue||stealthed.improved_garrote\nactions+=/call_action_list,name=cds\n# Put SnD up initially for Cut to the Chase, refresh with Envenom if at low duration\nactions+=/slice_and_dice,if=!buff.slice_and_dice.up&combo_points>=2||!talent.cut_to_the_chase&refreshable&combo_points>=4\nactions+=/envenom,if=talent.cut_to_the_chase&buff.slice_and_dice.up&buff.slice_and_dice.remains<5&combo_points>=4\nactions+=/call_action_list,name=dot\nactions+=/call_action_list,name=direct\nactions+=/arcane_torrent,if=energy.deficit>=15+energy.regen_combined\nactions+=/arcane_pulse\nactions+=/lights_judgment\nactions+=/bag_of_tricks\n\n# Cooldowns If adds are up, snipe the one with lowest TTD. Use when dying faster than CP deficit or without any CP.\nactions.cds=marked_for_death,line_cd=1.5,cycle_targets=1,if=raid_event.adds.up&(!variable.single_target||boss&fight_remains<30)&(target.time_to_die<combo_points.deficit*1.5||combo_points.deficit>=cp_max_spend)\n# If no adds will die within the next 30s, use MfD for max CP.\nactions.cds+=/marked_for_death,if=raid_event.adds.in>30-raid_event.adds.duration&combo_points.deficit>=cp_max_spend\n# Sync Deathmark window with Exsanguinate if applicable\nactions.cds+=/variable,name=deathmark_exsanguinate_condition,value=!talent.exsanguinate||cooldown.exsanguinate.remains>15||exsanguinated.rupture||exsanguinated.garrote\n# Wait on Deathmark for Garrote with MA\nactions.cds+=/variable,name=deathmark_ma_condition,value=!talent.master_assassin.enabled||dot.garrote.ticking\nactions.cds+=/sepsis,if=!stealthed.rogue&!stealthed.improved_garrote&(!talent.improved_garrote&dot.garrote.ticking||talent.improved_garrote&cooldown.garrote.up)&(target.time_to_die>10||boss&fight_remains<10)\n# Deathmark to be used if not stealthed, Rupture is up, and all other talent conditions are satisfied\nactions.cds+=/variable,name=deathmark_condition,value=!stealthed.rogue&dot.rupture.ticking&!debuff.deathmark.up&variable.deathmark_exsanguinate_condition&variable.deathmark_ma_condition\nactions.cds+=/use_item,name=algethar_puzzle_box,use_off_gcd=1,if=(!talent.exsanguinate||cooldown.exsanguinate.remains>15||exsanguinated.rupture||exsanguinated.garrote)&dot.rupture.ticking&cooldown.deathmark.remains<2||boss&fight_remains<=22\n# Sync the priority stat buff trinket with Deathmark, otherwise use on cooldown\nactions.cds+=/use_items,slots=trinket1,if=(variable.trinket_sync_slot=1&(debuff.deathmark.up||boss&fight_remains<=20)||(variable.trinket_sync_slot=2&(!trinket.2.cooldown.ready||!debuff.deathmark.up&cooldown.deathmark.remains>20))||!variable.trinket_sync_slot)\nactions.cds+=/use_items,slots=trinket2,if=(variable.trinket_sync_slot=2&(debuff.deathmark.up||boss&fight_remains<=20)||(variable.trinket_sync_slot=1&(!trinket.1.cooldown.ready||!debuff.deathmark.up&cooldown.deathmark.remains>20))||!variable.trinket_sync_slot)\nactions.cds+=/deathmark,if=variable.deathmark_condition\nactions.cds+=/kingsbane,if=(debuff.shiv.up||cooldown.shiv.remains<6)&buff.envenom.up&(cooldown.deathmark.remains>=50||dot.deathmark.ticking)\n# Exsanguinate when not stealthed and both Rupture and Garrote are up for long enough. Attempt to sync with Deathmark and also Echoing Reprimand if using Resounding Clarity.\nactions.cds+=/variable,name=exsanguinate_condition,value=talent.exsanguinate&!stealthed.rogue&!stealthed.improved_garrote&!dot.deathmark.ticking&target.time_to_die>variable.exsang_sync_remains+4&variable.exsang_sync_remains<4\nactions.cds+=/echoing_reprimand,if=talent.exsanguinate&talent.resounding_clarity&(variable.exsanguinate_condition&combo_points<=2&variable.exsang_sync_remains<=2&!dot.garrote.refreshable&dot.rupture.remains>9.6)\nactions.cds+=/exsanguinate,if=variable.exsanguinate_condition&(!dot.garrote.refreshable&dot.rupture.remains>4+4*variable.exsanguinate_rupture_cp||dot.rupture.remains*0.5>target.time_to_die)\n# Shiv if DoTs are up; Always Shiv with Kingsbane, otherwise attempt to sync with Sepsis or Deathmark if we won't waste more than half Shiv's cooldown\nactions.cds+=/shiv,if=talent.kingsbane&!debuff.shiv.up&dot.kingsbane.ticking&dot.garrote.ticking&dot.rupture.ticking&(!talent.crimson_tempest.enabled||variable.single_target||dot.crimson_tempest.ticking)\nactions.cds+=/shiv,if=talent.arterial_precision&!debuff.shiv.up&dot.garrote.ticking&dot.rupture.ticking&(debuff.deathmark.up||cooldown.shiv.charges_fractional>max_charges-0.5&cooldown.deathmark.remains>10)\nactions.cds+=/shiv,if=talent.sepsis&!talent.kingsbane&!talent.arterial_precision&!debuff.shiv.up&dot.garrote.ticking&dot.rupture.ticking&((cooldown.sepsis.ready||cooldown.sepsis.remains>12)+(cooldown.deathmark.ready||cooldown.deathmark.remains>12)=2)\nactions.cds+=/shiv,if=!talent.kingsbane&!talent.arterial_precision&!talent.sepsis&!debuff.shiv.up&dot.garrote.ticking&dot.rupture.ticking&(!talent.crimson_tempest.enabled||variable.single_target||dot.crimson_tempest.ticking)&(!talent.exsanguinate||variable.exsang_sync_remains>2)\nactions.cds+=/thistle_tea,if=!buff.thistle_tea.up&(energy.deficit>=100||charges=3&(dot.kingsbane.ticking||debuff.deathmark.up)||boss&fight_remains<charges*6)\nactions.cds+=/indiscriminate_carnage,if=(spell_targets.fan_of_knives>desired_targets||spell_targets.fan_of_knives>1&raid_event.adds.in>60)&(!talent.improved_garrote||cooldown.vanish.remains>45)\nactions.cds+=/potion,if=buff.bloodlust.react||boss&fight_remains<30||debuff.deathmark.up\nactions.cds+=/blood_fury,if=debuff.deathmark.up\nactions.cds+=/berserking,if=debuff.deathmark.up\nactions.cds+=/fireblood,if=debuff.deathmark.up\nactions.cds+=/ancestral_call,if=debuff.deathmark.up\nactions.cds+=/call_action_list,name=vanish,if=!stealthed.all&master_assassin_remains=0\nactions.cds+=/cold_blood,if=combo_points>=4\n\n# Direct damage abilities Envenom at 4+ (5+ with DS) CP. Immediately on 2+ targets, with Deathmark, or with TB; otherwise wait for some energy. Also wait if Exsg combo is coming up. Allow as filler on a dying target if CP capped.\nactions.direct+=/envenom,if=effective_combo_points>=4+talent.deeper_stratagem.enabled&(debuff.deathmark.up||debuff.shiv.up||debuff.amplifying_poison.stack>=10||energy.deficit<=25+energy.regen_combined||!variable.single_target||effective_combo_points>cp_max_spend||combo_points.deficit<1&target.time_to_die<=4+(talent.dashing_scoundrel*5)+(talent.doomblade*5)+(variable.regen_saturated*6))&(!talent.exsanguinate.enabled||variable.exsang_sync_remains>2||talent.resounding_clarity&(cooldown.echoing_reprimand.ready&combo_points>2||effective_combo_points>5))\nactions.direct+=/variable,name=use_filler,value=combo_points.deficit>1||energy.deficit<=25+energy.regen_combined||!variable.single_target\n# Apply SBS to all targets without a debuff as priority, preferring targets dying sooner after the primary target\nactions.direct+=/serrated_bone_spike,if=variable.use_filler&!dot.serrated_bone_spike_dot.ticking\nactions.direct+=/serrated_bone_spike,cycle_targets=1,if=variable.use_filler&!dot.serrated_bone_spike_dot.ticking\n# Keep from capping charges or burn at the end of fights\nactions.direct+=/serrated_bone_spike,if=variable.use_filler&master_assassin_remains<0.8&(boss&fight_remains<=5||cooldown.serrated_bone_spike.max_charges-charges_fractional<=0.25)\n# When MA is not at high duration, sync with Shiv\nactions.direct+=/serrated_bone_spike,if=variable.use_filler&master_assassin_remains<0.8&!variable.single_target&debuff.shiv.up\nactions.direct+=/echoing_reprimand,if=(!talent.exsanguinate||!talent.resounding_clarity||variable.exsang_sync_remains>40)&variable.use_filler&cooldown.deathmark.remains>10||boss&fight_remains<20\n# Fan of Knives at 3+ targets or 4+ with DTB\nactions.direct+=/fan_of_knives,if=variable.use_filler&(!priority_rotation&spell_targets.fan_of_knives>=3+stealthed.rogue+talent.dragontempered_blades)\n# Fan of Knives to apply poisons if inactive on any target (or any bleeding targets with priority rotation) at 3T\nactions.direct+=/fan_of_knives,cycle_targets=1,if=variable.use_filler&spell_targets.fan_of_knives>=3&!dot.deadly_poison_dot.ticking&(!priority_rotation||dot.garrote.ticking||dot.rupture.ticking)\nactions.direct+=/ambush,if=variable.use_filler\n# Tab-Mutilate to apply Deadly Poison at 2 targets\nactions.direct+=/mutilate,cycle_targets=1,if=!dot.deadly_poison_dot.ticking&!debuff.amplifying_poison.up&variable.use_filler&spell_targets.fan_of_knives=2\nactions.direct+=/mutilate,if=variable.use_filler\n\n# Damage over time abilities Limit secondary Garrotes for priority rotation if we have 35 energy regen or Garrote will expire on the primary target\nactions.dot+=/variable,name=skip_cycle_garrote,value=priority_rotation&(dot.garrote.remains<cooldown.garrote.duration||variable.regen_saturated)\n# Limit secondary Ruptures for priority rotation if we have 35 energy regen or Shiv is up on 2T+\nactions.dot+=/variable,name=skip_cycle_rupture,value=priority_rotation&(debuff.shiv.up&spell_targets.fan_of_knives>2||variable.regen_saturated)\n# Limit Ruptures when appropriate, not currently used\nactions.dot+=/variable,name=skip_rupture,value=0\n# Special Garrote and Rupture setup prior to Exsanguinate cast\nactions.dot+=/garrote,if=talent.exsanguinate.enabled&!will_lose_exsanguinate&dot.garrote.pmultiplier<=1&variable.exsang_sync_remains<2&spell_targets.fan_of_knives=1&raid_event.adds.in>6&dot.garrote.remains*0.5<target.time_to_die\nactions.dot+=/rupture,if=talent.exsanguinate.enabled&!will_lose_exsanguinate&dot.rupture.pmultiplier<=1&variable.exsang_sync_remains<1&effective_combo_points>=variable.exsanguinate_rupture_cp&dot.rupture.remains*0.5<target.time_to_die\n## actions.dot+=/pool_resource,for_next=1\n# Garrote upkeep, also tries to use it as a special generator for the last CP before a finisher\nactions.dot+=/garrote,if=refreshable&combo_points.deficit>=1&(pmultiplier<=1||remains<=tick_time&spell_targets.fan_of_knives>=3)&(!will_lose_exsanguinate||remains<=tick_time*2&spell_targets.fan_of_knives>=3)&(target.time_to_die-remains)>4&master_assassin_remains=0\n## actions.dot+=/pool_resource,for_next=1\nactions.dot+=/garrote,cycle_targets=1,if=!variable.skip_cycle_garrote&refreshable&combo_points.deficit>=1&(pmultiplier<=1||remains<=tick_time&spell_targets.fan_of_knives>=3)&(!will_lose_exsanguinate||remains<=tick_time*2&spell_targets.fan_of_knives>=3)&(target.time_to_die-remains)>12&master_assassin_remains=0\n# Crimson Tempest on multiple targets at 4+ CP when running out in 2-5s as long as we have enough regen and aren't setting up for Deathmark\nactions.dot+=/crimson_tempest,cycle_targets=1,if=spell_targets>=2&effective_combo_points>=4&energy.regen_combined>20&(!cooldown.deathmark.ready||dot.rupture.ticking)&remains<(2+3*(spell_targets>=4))\n# Keep up Rupture at 4+ on all targets (when living long enough and not snapshot)\nactions.dot+=/rupture,if=!variable.skip_rupture&effective_combo_points>=4&refreshable&(pmultiplier<=1||remains<=tick_time&spell_targets.fan_of_knives>=3)&(!will_lose_exsanguinate||remains<=tick_time*2&spell_targets.fan_of_knives>=3)&target.time_to_die-remains>(4+(talent.dashing_scoundrel*5)+(talent.doomblade*5)+(variable.regen_saturated*6))\nactions.dot+=/rupture,cycle_targets=1,if=!variable.skip_cycle_rupture&!variable.skip_rupture&effective_combo_points>=4&refreshable&(pmultiplier<=1||remains<=tick_time&spell_targets.fan_of_knives>=3)&(!will_lose_exsanguinate||remains<=tick_time*2&spell_targets.fan_of_knives>=3)&target.time_to_die-remains>(4+(talent.dashing_scoundrel*5)+(talent.doomblade*5)+(variable.regen_saturated*6))\n# Fallback AoE Crimson Tempest with the same logic as above, but ignoring the energy conditions if we aren't using Rupture\nactions.dot+=/crimson_tempest,if=spell_targets>=2&effective_combo_points>=4&remains<2+3*(spell_targets>=4)\n# Crimson Tempest on ST if in pandemic and nearly max energy and if Envenom won't do more damage due to TB/MA\nactions.dot+=/crimson_tempest,if=spell_targets=1&!talent.dashing_scoundrel&effective_combo_points>=(cp_max_spend-1)&refreshable&!will_lose_exsanguinate&!debuff.shiv.up&debuff.amplifying_poison.stack<15&(!talent.kingsbane||buff.envenom.up||!cooldown.kingsbane.up)&target.time_to_die-remains>4\n\n# Stealthed Actions\nactions.stealthed+=/indiscriminate_carnage,if=spell_targets.fan_of_knives>desired_targets||spell_targets.fan_of_knives>1&raid_event.adds.in>60\n## actions.stealthed+=/pool_resource,for_next=1\n# Improved Garrote: Apply or Refresh with buffed Garrotes\nactions.stealthed+=/garrote,cycle_targets=1,if=stealthed.improved_garrote&!will_lose_exsanguinate&(remains<12%exsanguinated_rate||pmultiplier<=1)&target.time_to_die-remains>2\n## actions.stealthed+=/pool_resource,for_next=1\n# Improved Garrote + Exsg on 1T: Refresh Garrote at the end of stealth to get max duration before Exsanguinate\nactions.stealthed+=/garrote,if=talent.exsanguinate.enabled&stealthed.improved_garrote&active_enemies=1&!will_lose_exsanguinate&(remains<18%exsanguinated_rate||pmultiplier<=1)&variable.exsang_sync_remains<18&improved_garrote_remains<1.3\n\n# Stealth Cooldowns Vanish Sync for Improved Garrote with Deathmark\nactions.vanish+=/vanish,if=talent.improved_garrote&cooldown.garrote.up&!exsanguinated.garrote&(dot.garrote.pmultiplier<=1||dot.garrote.refreshable)&(debuff.deathmark.up||cooldown.deathmark.remains<4)&combo_points.deficit>=(spell_targets.fan_of_knives>?4)\n# Vanish for Indiscriminate Carnage or Improved Garrote at 2-3+ targets\nactions.vanish+=/vanish,if=talent.improved_garrote&cooldown.garrote.up&!exsanguinated.garrote&(dot.garrote.pmultiplier<=1||dot.garrote.refreshable)&spell_targets.fan_of_knives>(3-talent.indiscriminate_carnage)&(!talent.indiscriminate_carnage||cooldown.indiscriminate_carnage.ready)\n# Vanish with Master Assassin: Rupture+Garrote not in refresh range, during Deathmark+Shiv. Sync with Sepsis final hit if possible.\nactions.vanish+=/vanish,if=!talent.improved_garrote&talent.master_assassin&!dot.rupture.refreshable&dot.garrote.remains>3&debuff.deathmark.up&(debuff.shiv.up||debuff.deathmark.remains<4||dot.sepsis.ticking)&dot.sepsis.remains<3\n## actions.vanish+=/pool_resource,for_next=1,extra_amount=45\nactions.vanish+=/shadow_dance,if=talent.improved_garrote&cooldown.garrote.up&!exsanguinated.garrote&dot.garrote.pmultiplier<=1&(debuff.deathmark.up||cooldown.deathmark.remains<4||cooldown.deathmark.remains>60)&combo_points.deficit>=(spell_targets.fan_of_knives>?4)\n# Shadow Dance for Improved Garrote with Deathmark\nactions.vanish+=/shadow_dance,if=talent.improved_garrote&cooldown.garrote.up&!exsanguinated.garrote&(dot.garrote.pmultiplier<=1||dot.garrote.refreshable)&(debuff.deathmark.up||cooldown.deathmark.remains<12||cooldown.deathmark.remains>60)&combo_points.deficit>=(spell_targets.fan_of_knives>?4)\n# Shadow Dance with Master Assassin: Rupture+Garrote not in refresh range, during Deathmark+Shiv. Sync with Sepsis final hit if possible.\nactions.vanish+=/shadow_dance,if=!talent.improved_garrote&talent.master_assassin&!dot.rupture.refreshable&dot.garrote.remains>3&(debuff.deathmark.up||cooldown.deathmark.remains>60)&(debuff.shiv.up||debuff.deathmark.remains<4||dot.sepsis.ticking)&dot.sepsis.remains<3",
},
["Balance"] = {
["source"] = "https://balance-simc.github.io/Balance-SimC/md.html?file=balance.txt",
["builtIn"] = true,
["date"] = 20230508,
["author"] = "SimC",
["desc"] = "2023-05-08: Updates from SimC impacting Starsurge usage.\n\n2023-05-06: Minor updates.\n\n2023-05-02: Updates for 10.1 from SimC.\n\n2023-04-17: Adjust on_use_trinket variable.\n\n2023-02-25: Added single-target use of Starfall with Touch the Cosmos.",
["lists"] = {
["default"] = {
{
["enabled"] = true,
["description"] = "Executed every time the actor is available.",
["action"] = "solar_beam",
}, -- [1]
{
["action"] = "soothe",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "time < gcd.max & ( eclipse.any_next || eclipse.lunar_next )",
["action"] = "wrath",
["line_cd"] = "5",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "refreshable & time < 2 * gcd.max & buff.eclipse_lunar.up",
["action"] = "stellar_flare",
["line_cd"] = "5",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "! talent.stellar_flare.enabled & time < 2 * gcd.max & buff.eclipse_lunar.up",
["action"] = "starfire",
["line_cd"] = "5",
}, -- [5]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "spell_targets.starfall > 1",
["var_name"] = "is_aoe",
}, -- [6]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "6 / spell_haste + talent.natures_balance.enabled + talent.orbit_breaker.enabled * dot.moonfire.ticking * ( buff.orbit_breaker.stack > ( 27 - 2 * buff.solstice.up ) ) * 40",
["var_name"] = "passive_asp",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "buff.ca_inc.remains >= 20 || variable.no_cd_talent || boss & fight_remains < 15",
["action"] = "berserking",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "! druid.no_cds & ( buff.ca_inc.remains >= 20 || variable.no_cd_talent || boss & fight_remains < 30 )",
["action"] = "potion",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "variable.on_use_trinket != 1 & ! trinket.t2.ready_cooldown || ( variable.on_use_trinket = 1 || variable.on_use_trinket = 3 ) & buff.ca_inc.up || variable.no_cd_talent || boss & fight_remains < 20 || variable.on_use_trinket = 0",
["slots"] = "trinket1",
["action"] = "trinket1",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "variable.on_use_trinket != 2 & ! trinket.t1.ready_cooldown || variable.on_use_trinket = 2 & buff.ca_inc.up || variable.no_cd_talent || boss & fight_remains < 20 || variable.on_use_trinket = 0",
["slots"] = "trinket2",
["action"] = "trinket2",
}, -- [11]
{
["action"] = "use_items",
["enabled"] = true,
}, -- [12]
{
["action"] = "natures_vigil",
["enabled"] = true,
}, -- [13]
{
["enabled"] = true,
["criteria"] = "variable.is_aoe",
["action"] = "run_action_list",
["list_name"] = "aoe",
}, -- [14]
{
["enabled"] = true,
["action"] = "run_action_list",
["list_name"] = "st",
}, -- [15]
},
["precombat"] = {
{
["action"] = "moonkin_form",
["enabled"] = true,
}, -- [1]
{
["action"] = "mark_of_the_wild",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! talent.celestial_alignment.enabled & ! talent.incarnation_chosen_of_elune.enabled || druid.no_cds",
["var_name"] = "no_cd_talent",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "8 + 2 * talent.wild_surges.enabled",
["var_name"] = "wrath_base_asp",
}, -- [4]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "10 + 2 * talent.wild_surges.enabled",
["var_name"] = "starfire_base_asp",
}, -- [5]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "0",
["var_name"] = "on_use_trinket",
}, -- [6]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["value"] = "1",
["criteria"] = "trinket.t1.has_use_buff & trinket.t1.cooldown.duration > 0",
["var_name"] = "on_use_trinket",
}, -- [7]
{
["enabled"] = true,
["op"] = "add",
["action"] = "variable",
["value"] = "2",
["criteria"] = "trinket.t2.has_use_buff & trinket.t2.cooldown.duration > 0",
["var_name"] = "on_use_trinket",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "( eclipse.any_next || eclipse.lunar_next )",
["action"] = "wrath",
}, -- [9]
},
["aoe"] = {
{
["enabled"] = true,
["action"] = "moonfire",
["criteria"] = "! boss & refreshable & ( target.time_to_die - remains ) > 6 & astral_power.deficit > variable.passive_asp + 3",
["cycle_targets"] = 1,
}, -- [1]
{
["enabled"] = true,
["action"] = "sunfire",
["criteria"] = "refreshable & ( target.time_to_die - remains ) > 6 - ( spell_targets / 2 ) & astral_power.deficit > variable.passive_asp + 3",
["cycle_targets"] = 1,
}, -- [2]
{
["enabled"] = true,
["action"] = "moonfire",
["criteria"] = "boss & refreshable & ( target.time_to_die - remains ) > 6 & astral_power.deficit > variable.passive_asp + 3",
["cycle_targets"] = 1,
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! druid.no_cds & ( cooldown.ca_inc.remains < 5 & ! buff.ca_inc.up & ( target.time_to_die > 10 || boss & fight_remains < 25 + 10 * talent.incarnation_chosen_of_elune.enabled ) )",
["var_name"] = "cd_condition_aoe",
}, -- [4]
{
["enabled"] = true,
["action"] = "stellar_flare",
["criteria"] = "refreshable & ( target.time_to_die - remains - spell_targets.starfire ) > 8 + spell_targets.starfire & astral_power.deficit > variable.passive_asp + 8 & spell_targets.starfire < ( 11 - talent.umbral_intensity.rank - talent.astral_smolder.rank ) & variable.cd_condition_aoe",
["cycle_targets"] = 1,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "variable.cd_condition_aoe & ( talent.orbital_strike.enabled & astral_power.deficit < variable.passive_asp + 8 * spell_targets || buff.touch_the_cosmos.up ) || astral_power.deficit < ( variable.passive_asp + 8 + 12 * ( buff.eclipse_lunar.remains < 4 || buff.eclipse_solar.remains < 4 ) )",
["action"] = "starfall",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "variable.cd_condition_aoe",
["action"] = "celestial_alignment",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "variable.cd_condition_aoe",
["action"] = "incarnation",
}, -- [8]
{
["action"] = "warrior_of_elune",
["enabled"] = true,
}, -- [9]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "spell_targets.starfire < 3",
["var_name"] = "enter_solar",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "variable.enter_solar & ( eclipse.any_next || buff.eclipse_solar.remains < action.starfire.execute_time )",
["action"] = "starfire",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "! variable.enter_solar & ( eclipse.any_next || buff.eclipse_lunar.remains < action.wrath.execute_time )",
["action"] = "wrath",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "astral_power.deficit > variable.passive_asp + 20 & ( ! talent.fungal_growth.enabled || ! talent.waning_twilight.enabled || dot.fungal_growth.remains < 2 & target.time_to_die > 7 & ! prev_gcd.1.wild_mushroom )",
["action"] = "wild_mushroom",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "astral_power.deficit > variable.passive_asp + 8 & target.time_to_die > 2",
["action"] = "fury_of_elune",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "astral_power.deficit > variable.passive_asp + 40 & ( buff.eclipse_lunar.remains > execute_time || buff.eclipse_solar.remains > execute_time )",
["action"] = "full_moon",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "target.time_to_die > 4 & ( buff.starweavers_warp.up || talent.starlord.enabled & buff.starlord.stack < 3 )",
["action"] = "starfall",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "buff.starweavers_weft.up & spell_targets.starfire < 3",
["action"] = "starsurge",
}, -- [17]
{
["enabled"] = true,
["action"] = "stellar_flare",
["criteria"] = "refreshable & ( target.time_to_die - remains - spell_targets.starfire ) > 8 + spell_targets.starfire & astral_power.deficit > variable.passive_asp + 8 & spell_targets.starfire < ( 11 - talent.umbral_intensity.rank - talent.astral_smolder.rank )",
["cycle_targets"] = 1,
}, -- [18]
{
["enabled"] = true,
["criteria"] = "astral_power.deficit > variable.passive_asp + 50",
["action"] = "astral_communion",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "astral_power < 50 & spell_targets.starfall < 3 + talent.elunes_guidance.enabled & ( buff.eclipse_lunar.remains > 4 || buff.eclipse_solar.remains > 4 )",
["action"] = "convoke_the_spirits",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "astral_power.deficit > variable.passive_asp + 10",
["action"] = "new_moon",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "astral_power.deficit > variable.passive_asp + 20 & ( buff.eclipse_lunar.remains > execute_time || buff.eclipse_solar.remains > execute_time )",
["action"] = "half_moon",
}, -- [22]
{
["enabled"] = true,
["criteria"] = "astral_power.deficit > variable.passive_asp + 20",
["action"] = "force_of_nature",
}, -- [23]
{
["enabled"] = true,
["criteria"] = "buff.starweavers_weft.up & spell_targets.starfire < 17",
["action"] = "starsurge",
}, -- [24]
{
["enabled"] = true,
["criteria"] = "spell_targets > 3 & buff.eclipse_lunar.up || eclipse.in_lunar",
["action"] = "starfire",
}, -- [25]
{
["action"] = "wrath",
["enabled"] = true,
}, -- [26]
{
["enabled"] = true,
["action"] = "run_action_list",
["list_name"] = "fallthru",
}, -- [27]
},
["fallthru"] = {
{
["enabled"] = true,
["criteria"] = "variable.is_aoe",
["action"] = "starfall",
}, -- [1]
{
["action"] = "starsurge",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["action"] = "sunfire",
["criteria"] = "dot.moonfire.remains > remains * 22 / 18",
["cycle_targets"] = 1,
}, -- [3]
{
["action"] = "moonfire",
["enabled"] = true,
}, -- [4]
},
["st"] = {
{
["enabled"] = true,
["action"] = "sunfire",
["criteria"] = "refreshable & remains < 2 & ( target.time_to_die - remains ) > 6",
["cycle_targets"] = 1,
}, -- [1]
{
["enabled"] = true,
["action"] = "moonfire",
["criteria"] = "refreshable & remains < 2 & ( target.time_to_die - remains ) > 6",
["cycle_targets"] = 1,
}, -- [2]
{
["enabled"] = true,
["action"] = "stellar_flare",
["criteria"] = "refreshable & astral_power.deficit > variable.passive_asp + 8 & remains < 2 & ( target.time_to_die - remains ) > 8",
["cycle_targets"] = 1,
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! druid.no_cds & ( cooldown.ca_inc.remains < 15 & ! buff.ca_inc.up & ( target.time_to_die > 15 || boss & fight_remains < 25 + 10 * talent.incarnation_chosen_of_elune.enabled ) )",
["var_name"] = "cd_condition_st",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.primordial_arcanic_pulsar.value >= 550 & ! buff.ca_inc.up & buff.starweavers_warp.up",
["action"] = "starfall",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "buff.primordial_arcanic_pulsar.value >= 560 & buff.starweavers_weft.up",
["action"] = "starsurge",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "variable.cd_condition_st",
["action"] = "celestial_alignment",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "variable.cd_condition_st",
["action"] = "incarnation",
}, -- [8]
{
["action"] = "warrior_of_elune",
["enabled"] = true,
}, -- [9]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "buff.primordial_arcanic_pulsar.value < 520 & cooldown.ca_inc.remains > 5",
["var_name"] = "solar_eclipse_st",
}, -- [10]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "eclipse.any_next || variable.solar_eclipse_st & buff.eclipse_solar.up & ( buff.eclipse_solar.remains < action.starfire.cast_time ) || ! variable.solar_eclipse_st & buff.eclipse_lunar.up & ( buff.eclipse_lunar.remains < action.wrath.cast_time )",
["var_name"] = "enter_eclipse",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "variable.enter_eclipse & variable.solar_eclipse_st",
["action"] = "starfire",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "variable.enter_eclipse",
["action"] = "wrath",
}, -- [13]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "buff.ca_inc.remains > 4 || ( cooldown.ca_inc.remains > 30 || variable.no_cd_talent ) & ( buff.eclipse_lunar.remains > 4 || buff.eclipse_solar.remains > 4 )",
["var_name"] = "convoke_condition",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "action.convoke_the_spirits.known & cooldown.convoke_the_spirits.ready & variable.convoke_condition",
["action"] = "starsurge",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "variable.convoke_condition",
["action"] = "convoke_the_spirits",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "astral_power.deficit > variable.passive_asp + 55",
["action"] = "astral_communion",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "astral_power.deficit > variable.passive_asp + 20",
["action"] = "force_of_nature",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "astral_power.deficit > variable.passive_asp + 8 & target.time_to_die > 2",
["action"] = "fury_of_elune",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "buff.starweavers_warp.up",
["action"] = "starfall",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "talent.starlord.enabled & buff.starlord.stack < 3 || talent.rattle_the_stars.enabled & buff.rattled_stars.up & buff.rattled_stars.remains < gcd.max",
["action"] = "starsurge",
}, -- [21]
{
["enabled"] = true,
["action"] = "sunfire",
["criteria"] = "refreshable & astral_power.deficit > variable.passive_asp + 3",
["cycle_targets"] = 1,
}, -- [22]
{
["enabled"] = true,
["action"] = "moonfire",
["criteria"] = "refreshable & astral_power.deficit > variable.passive_asp + 3",
["cycle_targets"] = 1,
}, -- [23]
{
["enabled"] = true,
["action"] = "stellar_flare",
["criteria"] = "refreshable & astral_power.deficit > variable.passive_asp + 8",
["cycle_targets"] = 1,
}, -- [24]
{
["enabled"] = true,
["criteria"] = "astral_power.deficit > variable.passive_asp + 10",
["action"] = "new_moon",
}, -- [25]
{
["enabled"] = true,
["criteria"] = "astral_power.deficit > variable.passive_asp + 20 & ( buff.eclipse_lunar.remains > execute_time || buff.eclipse_solar.remains > execute_time )",
["action"] = "half_moon",
}, -- [26]
{
["enabled"] = true,
["criteria"] = "astral_power.deficit > variable.passive_asp + 40 & ( buff.eclipse_lunar.remains > execute_time || buff.eclipse_solar.remains > execute_time )",
["action"] = "full_moon",
}, -- [27]
{
["enabled"] = true,
["criteria"] = "buff.starweavers_weft.up || astral_power.deficit < variable.passive_asp + ( variable.wrath_base_asp * ( 1 + 0.6 * talent.soul_of_the_forest.enabled * buff.eclipse_solar.up ) ) + ( variable.starfire_base_asp * ( 1 + buff.warrior_of_elune.up * 0.4 ) + variable.passive_asp ) * ( buff.eclipse_solar.remains < ( gcd.max * 3 ) ) || talent.astral_communion.enabled & cooldown.astral_communion.remains < 3 || fight_remains < 5",
["action"] = "starsurge",
}, -- [28]
{
["enabled"] = true,
["criteria"] = "talent.fungal_growth.enabled & ( boss || target.time_to_die > ( full_recharge_time - 7 ) || fight_remains < 10 )",
["action"] = "wild_mushroom",
}, -- [29]
{
["enabled"] = true,
["criteria"] = "buff.ca_inc.up & buff.warrior_of_elune.up & buff.warrior_of_elune.stack = 1",
["action"] = "starfire",
}, -- [30]
{
["action"] = "wrath",
["enabled"] = true,
}, -- [31]
{
["enabled"] = true,
["action"] = "run_action_list",
["list_name"] = "fallthru",
}, -- [32]
},
},
["version"] = 20230508,
["warnings"] = "The import for 'default' required some automated changes.\nLine 5: Converted 'talent.stellar_flare' to 'talent.stellar_flare.enabled' (1x).\nLine 7: Converted 'talent.natures_balance' to 'talent.natures_balance.enabled' (1x).\nLine 7: Converted 'talent.orbit_breaker' to 'talent.orbit_breaker.enabled' (1x).\nLine 7: Converted operations in '6%spell_haste+talent.natures_balance.enabled+talent.orbit_breaker.enabled*dot.moonfire.ticking*(buff.orbit_breaker.stack>(27-2*buff.solstice.up))*40' to '6/spell_haste+talent.natures_balance.enabled+talent.orbit_breaker.enabled*dot.moonfire.ticking*(buff.orbit_breaker.stack>(27-2*buff.solstice.up))*40'.\nLine 10: Converted 'trinket.2.ready_cooldown' to 'trinket.t2.ready_cooldown' (1x).\nLine 11: Converted 'trinket.1.ready_cooldown' to 'trinket.t1.ready_cooldown' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 3: Converted 'talent.celestial_alignment' to 'talent.celestial_alignment.enabled' (1x).\nLine 3: Converted 'talent.incarnation_chosen_of_elune' to 'talent.incarnation_chosen_of_elune.enabled' (1x).\nLine 4: Converted 'talent.wild_surges' to 'talent.wild_surges.enabled' (1x).\nLine 5: Converted 'talent.wild_surges' to 'talent.wild_surges.enabled' (1x).\nLine 7: Converted 'trinket.1.has_use_buff' to 'trinket.t1.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 8: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 8: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 8: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\n\nThe import for 'aoe' required some automated changes.\nLine 2: Converted operations in 'refreshable&(target.time_to_die-remains)>6-(spell_targets%2)&astral_power.deficit>variable.passive_asp+3' to 'refreshable&(target.time_to_die-remains)>6-(spell_targets/2)&astral_power.deficit>variable.passive_asp+3'.\nLine 4: Converted 'talent.incarnation_chosen_of_elune' to 'talent.incarnation_chosen_of_elune.enabled' (1x).\nLine 6: Converted 'talent.orbital_strike' to 'talent.orbital_strike.enabled' (1x).\nLine 13: Converted 'talent.fungal_growth' to 'talent.fungal_growth.enabled' (1x).\nLine 13: Converted 'talent.waning_twilight' to 'talent.waning_twilight.enabled' (1x).\nLine 16: Converted 'talent.starlord' to 'talent.starlord.enabled' (1x).\nLine 20: Converted 'talent.elunes_guidance' to 'talent.elunes_guidance.enabled' (1x).\n\nThe import for 'fallthru' required some automated changes.\nLine 3: Converted operations in 'dot.moonfire.remains>remains*22%18' to 'dot.moonfire.remains>remains*22/18'.\n\nThe import for 'st' required some automated changes.\nLine 4: Converted 'talent.incarnation_chosen_of_elune' to 'talent.incarnation_chosen_of_elune.enabled' (1x).\nLine 21: Converted 'talent.starlord' to 'talent.starlord.enabled' (1x).\nLine 21: Converted 'talent.rattle_the_stars' to 'talent.rattle_the_stars.enabled' (1x).\nLine 28: Converted 'talent.soul_of_the_forest' to 'talent.soul_of_the_forest.enabled' (1x).\nLine 28: Converted 'talent.astral_communion' to 'talent.astral_communion.enabled' (1x).\nLine 29: Converted 'talent.fungal_growth' to 'talent.fungal_growth.enabled' (1x).\n\nImported 5 action lists.\n",
["profile"] = "actions.precombat+=/moonkin_form\nactions.precombat+=/mark_of_the_wild\nactions.precombat+=/variable,name=no_cd_talent,value=!talent.celestial_alignment&!talent.incarnation_chosen_of_elune||druid.no_cds\nactions.precombat+=/variable,name=wrath_base_asp,value=8+2*talent.wild_surges\nactions.precombat+=/variable,name=starfire_base_asp,value=10+2*talent.wild_surges\nactions.precombat+=/variable,name=on_use_trinket,value=0\nactions.precombat+=/variable,name=on_use_trinket,op=add,value=1,if=trinket.1.has_use_buff&trinket.1.cooldown.duration>0\nactions.precombat+=/variable,name=on_use_trinket,op=add,value=2,if=trinket.2.has_use_buff&trinket.2.cooldown.duration>0\nactions.precombat+=/wrath,if=(eclipse.any_next||eclipse.lunar_next)\n\n# Executed every time the actor is available.\nactions+=/solar_beam\nactions+=/soothe\nactions+=/wrath,if=time<gcd.max&(eclipse.any_next||eclipse.lunar_next),line_cd=5\nactions+=/stellar_flare,if=refreshable&time<2*gcd.max&buff.eclipse_lunar.up,line_cd=5\nactions+=/starfire,if=!talent.stellar_flare&time<2*gcd.max&buff.eclipse_lunar.up,line_cd=5\nactions+=/variable,name=is_aoe,value=spell_targets.starfall>1\nactions+=/variable,name=passive_asp,value=6%spell_haste+talent.natures_balance+talent.orbit_breaker*dot.moonfire.ticking*(buff.orbit_breaker.stack>(27-2*buff.solstice.up))*40\nactions+=/berserking,if=buff.ca_inc.remains>=20||variable.no_cd_talent||boss&fight_remains<15\nactions+=/potion,if=!druid.no_cds&(buff.ca_inc.remains>=20||variable.no_cd_talent||boss&fight_remains<30)\nactions+=/use_items,slots=trinket1,if=variable.on_use_trinket!=1&!trinket.2.ready_cooldown||(variable.on_use_trinket=1||variable.on_use_trinket=3)&buff.ca_inc.up||variable.no_cd_talent||boss&fight_remains<20||variable.on_use_trinket=0\nactions+=/use_items,slots=trinket2,if=variable.on_use_trinket!=2&!trinket.1.ready_cooldown||variable.on_use_trinket=2&buff.ca_inc.up||variable.no_cd_talent||boss&fight_remains<20||variable.on_use_trinket=0\nactions+=/use_items\nactions+=/natures_vigil\n## actions+=/invoke_external_buff,name=power_infusion\nactions+=/run_action_list,name=aoe,if=variable.is_aoe\nactions+=/run_action_list,name=st\n\nactions.aoe+=/moonfire,cycle_targets=1,if=!boss&refreshable&(target.time_to_die-remains)>6&astral_power.deficit>variable.passive_asp+3\nactions.aoe+=/sunfire,cycle_targets=1,if=refreshable&(target.time_to_die-remains)>6-(spell_targets%2)&astral_power.deficit>variable.passive_asp+3\nactions.aoe+=/moonfire,cycle_targets=1,if=boss&refreshable&(target.time_to_die-remains)>6&astral_power.deficit>variable.passive_asp+3\nactions.aoe+=/variable,name=cd_condition_aoe,value=!druid.no_cds&(cooldown.ca_inc.remains<5&!buff.ca_inc.up&(target.time_to_die>10||boss&fight_remains<25+10*talent.incarnation_chosen_of_elune))\nactions.aoe+=/stellar_flare,cycle_targets=1,if=refreshable&(target.time_to_die-remains-spell_targets.starfire)>8+spell_targets.starfire&astral_power.deficit>variable.passive_asp+8&spell_targets.starfire<(11-talent.umbral_intensity.rank-talent.astral_smolder.rank)&variable.cd_condition_aoe\nactions.aoe+=/starfall,if=variable.cd_condition_aoe&(talent.orbital_strike&astral_power.deficit<variable.passive_asp+8*spell_targets||buff.touch_the_cosmos.up)||astral_power.deficit<(variable.passive_asp+8+12*(buff.eclipse_lunar.remains<4||buff.eclipse_solar.remains<4))\nactions.aoe+=/celestial_alignment,if=variable.cd_condition_aoe\nactions.aoe+=/incarnation,if=variable.cd_condition_aoe\nactions.aoe+=/warrior_of_elune\nactions.aoe+=/variable,name=enter_solar,value=spell_targets.starfire<3\nactions.aoe+=/starfire,if=variable.enter_solar&(eclipse.any_next||buff.eclipse_solar.remains<action.starfire.execute_time)\nactions.aoe+=/wrath,if=!variable.enter_solar&(eclipse.any_next||buff.eclipse_lunar.remains<action.wrath.execute_time)\nactions.aoe+=/wild_mushroom,if=astral_power.deficit>variable.passive_asp+20&(!talent.fungal_growth||!talent.waning_twilight||dot.fungal_growth.remains<2&target.time_to_die>7&!prev_gcd.1.wild_mushroom)\nactions.aoe+=/fury_of_elune,if=astral_power.deficit>variable.passive_asp+8&target.time_to_die>2\nactions.aoe+=/full_moon,if=astral_power.deficit>variable.passive_asp+40&(buff.eclipse_lunar.remains>execute_time||buff.eclipse_solar.remains>execute_time)\nactions.aoe+=/starfall,if=target.time_to_die>4&(buff.starweavers_warp.up||talent.starlord&buff.starlord.stack<3)\nactions.aoe+=/starsurge,if=buff.starweavers_weft.up&spell_targets.starfire<3\nactions.aoe+=/stellar_flare,cycle_targets=1,if=refreshable&(target.time_to_die-remains-spell_targets.starfire)>8+spell_targets.starfire&astral_power.deficit>variable.passive_asp+8&spell_targets.starfire<(11-talent.umbral_intensity.rank-talent.astral_smolder.rank)\nactions.aoe+=/astral_communion,if=astral_power.deficit>variable.passive_asp+50\nactions.aoe+=/convoke_the_spirits,if=astral_power<50&spell_targets.starfall<3+talent.elunes_guidance&(buff.eclipse_lunar.remains>4||buff.eclipse_solar.remains>4)\nactions.aoe+=/new_moon,if=astral_power.deficit>variable.passive_asp+10\nactions.aoe+=/half_moon,if=astral_power.deficit>variable.passive_asp+20&(buff.eclipse_lunar.remains>execute_time||buff.eclipse_solar.remains>execute_time)\nactions.aoe+=/force_of_nature,if=astral_power.deficit>variable.passive_asp+20\nactions.aoe+=/starsurge,if=buff.starweavers_weft.up&spell_targets.starfire<17\nactions.aoe+=/starfire,if=spell_targets>3&buff.eclipse_lunar.up||eclipse.in_lunar\nactions.aoe+=/wrath\nactions.aoe+=/run_action_list,name=fallthru\n\nactions.fallthru=starfall,if=variable.is_aoe\nactions.fallthru+=/starsurge\nactions.fallthru+=/sunfire,cycle_targets=1,if=dot.moonfire.remains>remains*22%18\nactions.fallthru+=/moonfire\n\nactions.st+=/sunfire,cycle_targets=1,if=refreshable&remains<2&(target.time_to_die-remains)>6\nactions.st+=/moonfire,cycle_targets=1,if=refreshable&remains<2&(target.time_to_die-remains)>6\nactions.st+=/stellar_flare,cycle_targets=1,if=refreshable&astral_power.deficit>variable.passive_asp+8&remains<2&(target.time_to_die-remains)>8\nactions.st+=/variable,name=cd_condition_st,value=!druid.no_cds&(cooldown.ca_inc.remains<15&!buff.ca_inc.up&(target.time_to_die>15||boss&fight_remains<25+10*talent.incarnation_chosen_of_elune))\nactions.st+=/starfall,if=buff.primordial_arcanic_pulsar.value>=550&!buff.ca_inc.up&buff.starweavers_warp.up\nactions.st+=/starsurge,if=buff.primordial_arcanic_pulsar.value>=560&buff.starweavers_weft.up\nactions.st+=/celestial_alignment,if=variable.cd_condition_st\nactions.st+=/incarnation,if=variable.cd_condition_st\nactions.st+=/warrior_of_elune\nactions.st+=/variable,name=solar_eclipse_st,value=buff.primordial_arcanic_pulsar.value<520&cooldown.ca_inc.remains>5\nactions.st+=/variable,name=enter_eclipse,value=eclipse.any_next||variable.solar_eclipse_st&buff.eclipse_solar.up&(buff.eclipse_solar.remains<action.starfire.cast_time)||!variable.solar_eclipse_st&buff.eclipse_lunar.up&(buff.eclipse_lunar.remains<action.wrath.cast_time)\nactions.st+=/starfire,if=variable.enter_eclipse&variable.solar_eclipse_st\nactions.st+=/wrath,if=variable.enter_eclipse\nactions.st+=/variable,name=convoke_condition,value=buff.ca_inc.remains>4||(cooldown.ca_inc.remains>30||variable.no_cd_talent)&(buff.eclipse_lunar.remains>4||buff.eclipse_solar.remains>4)\nactions.st+=/starsurge,if=action.convoke_the_spirits.known&cooldown.convoke_the_spirits.ready&variable.convoke_condition\nactions.st+=/convoke_the_spirits,if=variable.convoke_condition\nactions.st+=/astral_communion,if=astral_power.deficit>variable.passive_asp+55\nactions.st+=/force_of_nature,if=astral_power.deficit>variable.passive_asp+20\nactions.st+=/fury_of_elune,if=astral_power.deficit>variable.passive_asp+8&target.time_to_die>2\nactions.st+=/starfall,if=buff.starweavers_warp.up\nactions.st+=/starsurge,if=talent.starlord&buff.starlord.stack<3||talent.rattle_the_stars&buff.rattled_stars.up&buff.rattled_stars.remains<gcd.max\nactions.st+=/sunfire,cycle_targets=1,if=refreshable&astral_power.deficit>variable.passive_asp+3\nactions.st+=/moonfire,cycle_targets=1,if=refreshable&astral_power.deficit>variable.passive_asp+3\nactions.st+=/stellar_flare,cycle_targets=1,if=refreshable&astral_power.deficit>variable.passive_asp+8\nactions.st+=/new_moon,if=astral_power.deficit>variable.passive_asp+10\nactions.st+=/half_moon,if=astral_power.deficit>variable.passive_asp+20&(buff.eclipse_lunar.remains>execute_time||buff.eclipse_solar.remains>execute_time)\nactions.st+=/full_moon,if=astral_power.deficit>variable.passive_asp+40&(buff.eclipse_lunar.remains>execute_time||buff.eclipse_solar.remains>execute_time)\nactions.st+=/starsurge,if=buff.starweavers_weft.up||astral_power.deficit<variable.passive_asp+(variable.wrath_base_asp*(1+0.6*talent.soul_of_the_forest*buff.eclipse_solar.up))+(variable.starfire_base_asp*(1+buff.warrior_of_elune.up*0.4)+variable.passive_asp)*(buff.eclipse_solar.remains<(gcd.max*3))||talent.astral_communion&cooldown.astral_communion.remains<3||fight_remains<5\nactions.st+=/wild_mushroom,if=talent.fungal_growth&(boss||target.time_to_die>(full_recharge_time-7)||fight_remains<10)\nactions.st+=/starfire,if=buff.ca_inc.up&buff.warrior_of_elune.up&buff.warrior_of_elune.stack=1\nactions.st+=/wrath\nactions.st+=/run_action_list,name=fallthru",
["spec"] = 102,
},
["Survival"] = {
["source"] = "# https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230508,
["author"] = "SimC",
["desc"] = "2023-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,
}, -- [1]
{
["action"] = "tranquilizing_shot",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "cds",
}, -- [3]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies < 3",
["list_name"] = "st",
}, -- [4]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies > 2",
["list_name"] = "cleave",
}, -- [5]
{
["action"] = "arcane_torrent",
["enabled"] = true,
}, -- [6]
},
["cleave"] = {
{
["enabled"] = true,
["criteria"] = "debuff.shredded_armor.down & set_bonus.tier30_4pc & target.time_to_die > 6",
["action"] = "kill_command",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "full_recharge_time < gcd.max || talent.bombardier.enabled & ! cooldown.coordinated_assault.remains",
["action"] = "wildfire_bomb",
}, -- [2]
{
["action"] = "death_chakram",
["enabled"] = true,
}, -- [3]
{
["action"] = "stampede",
["enabled"] = true,
}, -- [4]
{
["action"] = "coordinated_assault",
["enabled"] = true,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "buff.coordinated_assault_empower.up",
["action"] = "kill_shot",
}, -- [6]
{
["action"] = "explosive_shot",
["enabled"] = true,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "cooldown.wildfire_bomb.full_recharge_time > spell_targets / 2",
["action"] = "carve",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "full_recharge_time < gcd.max || dot.shrapnel_bomb.ticking & ( dot.internal_bleeding.stack < 2 || dot.shrapnel_bomb.remains < gcd.max )",
["action"] = "butchery",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "! dot.wildfire_bomb.ticking",
["action"] = "wildfire_bomb",
}, -- [10]
{
["action"] = "fury_of_the_eagle",
["enabled"] = true,
}, -- [11]
{
["enabled"] = true,
["criteria"] = "dot.shrapnel_bomb.ticking",
["action"] = "carve",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "focus + cast_regen < focus.max",
["action"] = "flanking_strike",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "( ! next_wi_bomb.shrapnel || ! talent.wildfire_infusion.enabled )",
["action"] = "butchery",
}, -- [14]
{
["enabled"] = true,
["action"] = "mongoose_bite",
["criteria"] = "debuff.latent_poison.stack > 8",
["cycle_targets"] = 1,
}, -- [15]
{
["enabled"] = true,
["action"] = "raptor_strike",
["criteria"] = "debuff.latent_poison.stack > 8",
["cycle_targets"] = 1,
}, -- [16]
{
["enabled"] = true,
["action"] = "kill_command",
["criteria"] = "focus + cast_regen < focus.max & full_recharge_time < gcd.max",
["cycle_targets"] = 1,
}, -- [17]
{
["action"] = "carve",
["enabled"] = true,
}, -- [18]
{
["enabled"] = true,
["criteria"] = "! buff.coordinated_assault.up",
["action"] = "kill_shot",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "focus + cast_regen < focus.max",
["action"] = "steel_trap",
}, -- [20]
{
["action"] = "spearhead",
["enabled"] = true,
}, -- [21]
{
["enabled"] = true,
["action"] = "mongoose_bite",
["criteria"] = "buff.spearhead.remains",
["cycle_targets"] = 1,
}, -- [22]
{
["enabled"] = true,
["action"] = "serpent_sting",
["criteria"] = "refreshable & target.time_to_die > 8 & ( ! talent.vipers_venom.enabled || talent.hydras_bite.enabled )",
["cycle_targets"] = 1,
}, -- [23]
{
["enabled"] = true,
["action"] = "mongoose_bite",
["cycle_targets"] = 1,
}, -- [24]
{
["enabled"] = true,
["action"] = "raptor_strike",
["cycle_targets"] = 1,
}, -- [25]
},
["cds"] = {
{
["enabled"] = true,
["criteria"] = "buff.coordinated_assault.up || buff.spearhead.up || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
["action"] = "blood_fury",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "talent.terms_of_engagement.enabled & focus < focus.max || target.outside10",
["action"] = "harpoon",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.coordinated_assault.up || buff.spearhead.up || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
["action"] = "ancestral_call",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.coordinated_assault.up || buff.spearhead.up || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
["action"] = "fireblood",
}, -- [4]
{
["action"] = "lights_judgment",
["enabled"] = true,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "cooldown.kill_command.full_recharge_time > gcd.max",
["action"] = "bag_of_tricks",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "buff.coordinated_assault.up || buff.spearhead.up || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled || boss & fight_remains < 13",
["action"] = "berserking",
}, -- [7]
{
["action"] = "muzzle",
["enabled"] = true,
}, -- [8]
{
["enabled"] = true,
["criteria"] = "target.boss & fight_remains < 25 || buff.coordinated_assault.up || buff.spearhead.up || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
["action"] = "potion",
}, -- [9]
{
["enabled"] = true,
["action"] = "algethar_puzzle_box",
["use_off_gcd"] = 1,
["name"] = "algethar_puzzle_box",
["criteria"] = "gcd.remains > gcd.max - 0.1 || settings.gcdSync",
}, -- [10]
{
["enabled"] = true,
["action"] = "manic_grieftorch",
["use_off_gcd"] = 1,
["name"] = "manic_grieftorch",
["criteria"] = "gcd.remains > gcd.max - 0.1 & ! buff.spearhead.up",
}, -- [11]
{
["enabled"] = true,
["action"] = "use_items",
["description"] = "Sim would use off GCD just after GCD is invoked, but it is awkward to present in-game.",
["criteria"] = "! buff.spearhead.up",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "target.distance >= 6",
["action"] = "aspect_of_the_eagle",
}, -- [13]
},
["st"] = {
{
["enabled"] = true,
["criteria"] = "focus + cast_regen < focus.max || talent.spearhead.enabled & ! cooldown.spearhead.remains",
["action"] = "death_chakram",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "focus + action.kill_command.cast_regen > focus.max - 10 & ( cooldown.death_chakram.remains || ! talent.death_chakram.enabled )",
["action"] = "spearhead",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.coordinated_assault_empower.up",
["action"] = "kill_shot",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "( raid_event.adds.in > cooldown.wildfire_bomb.full_recharge_time - ( cooldown.wildfire_bomb.full_recharge_time / 3.5 ) & debuff.shredded_armor.up & ( full_recharge_time < 2 * gcd.max || talent.bombardier.enabled & ! cooldown.coordinated_assault.remains || talent.bombardier.enabled & buff.coordinated_assault.up & buff.coordinated_assault.remains < 2 * gcd.max ) || ! raid_event.adds.exists & time_to_die < 7 ) & set_bonus.tier30_4pc",
["action"] = "wildfire_bomb",
}, -- [4]
{
["enabled"] = true,
["action"] = "kill_command",
["criteria"] = "full_recharge_time < gcd.max & focus + cast_regen < focus.max & buff.deadly_duo.stack > 1",
["cycle_targets"] = 1,
}, -- [5]
{
["enabled"] = true,
["action"] = "kill_command",
["criteria"] = "cooldown.wildfire_bomb.full_recharge_time < 2 * gcd.max & debuff.shredded_armor.down & set_bonus.tier30_4pc",
["cycle_targets"] = 1,
}, -- [6]
{
["enabled"] = true,
["criteria"] = "buff.spearhead.remains",
["action"] = "mongoose_bite",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "active_enemies = 1 & boss & fight_remains < focus / ( variable.mb_rs_cost - cast_regen ) * gcd.max || buff.mongoose_fury.up & buff.mongoose_fury.remains < gcd.max",
["action"] = "mongoose_bite",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "! buff.coordinated_assault.up",
["action"] = "kill_shot",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "active_enemies = 1 & boss & fight_remains < focus / ( variable.mb_rs_cost - cast_regen ) * gcd.max",
["action"] = "raptor_strike",
}, -- [10]
{
["enabled"] = true,
["action"] = "serpent_sting",
["criteria"] = "refreshable & target.time_to_die > 7 & ! talent.vipers_venom.enabled",
["cycle_targets"] = 1,
}, -- [11]
{
["enabled"] = true,
["criteria"] = "talent.alpha_predator.enabled & buff.mongoose_fury.up & buff.mongoose_fury.remains < focus / ( variable.mb_rs_cost - cast_regen ) * gcd.max",
["action"] = "mongoose_bite",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "focus + cast_regen < focus.max",
["action"] = "flanking_strike",
}, -- [13]
{
["action"] = "stampede",
["enabled"] = true,
}, -- [14]
{
["enabled"] = true,
["criteria"] = "! talent.coordinated_kill.enabled & target.health.pct < 20 & ( ! buff.spearhead.remains & cooldown.spearhead.remains || ! talent.spearhead.enabled ) || talent.coordinated_kill.enabled & ( ! buff.spearhead.remains & cooldown.spearhead.remains || ! talent.spearhead.enabled )",
["action"] = "coordinated_assault",
}, -- [15]
{
["enabled"] = true,
["action"] = "kill_command",
["criteria"] = "full_recharge_time < gcd.max & focus + cast_regen < focus.max & ( cooldown.flanking_strike.remains || ! talent.flanking_strike.enabled ) || debuff.shredded_armor.down & set_bonus.tier30_4pc",
["cycle_targets"] = 1,
}, -- [16]
{
["enabled"] = true,
["criteria"] = "dot.shrapnel_bomb.ticking",
["action"] = "mongoose_bite",
}, -- [17]
{
["enabled"] = true,
["action"] = "serpent_sting",
["criteria"] = "refreshable & ! talent.vipers_venom.enabled",
["cycle_targets"] = 1,
}, -- [18]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in > cooldown.wildfire_bomb.full_recharge_time - ( cooldown.wildfire_bomb.full_recharge_time / 3.5 ) & full_recharge_time < gcd.max & ( ! set_bonus.tier29_2pc || active_enemies > 1 )",
["action"] = "wildfire_bomb",
}, -- [19]
{
["enabled"] = true,
["action"] = "mongoose_bite",
["criteria"] = "buff.mongoose_fury.up",
["cycle_targets"] = 1,
}, -- [20]
{
["enabled"] = true,
["criteria"] = "talent.ranger.enabled",
["action"] = "explosive_shot",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in > cooldown.wildfire_bomb.full_recharge_time - ( cooldown.wildfire_bomb.full_recharge_time / 3.5 ) & ( full_recharge_time < gcd.max || ! dot.wildfire_bomb.ticking & set_bonus.tier30_4pc )",
["action"] = "wildfire_bomb",
}, -- [22]
{
["enabled"] = true,
["action"] = "mongoose_bite",
["criteria"] = "focus + action.kill_command.cast_regen > focus.max - 10 || set_bonus.tier30_4pc",
["cycle_targets"] = 1,
}, -- [23]
{
["enabled"] = true,
["action"] = "raptor_strike",
["cycle_targets"] = 1,
}, -- [24]
{
["action"] = "steel_trap",
["enabled"] = true,
}, -- [25]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in > cooldown.wildfire_bomb.full_recharge_time - ( cooldown.wildfire_bomb.full_recharge_time / 3.5 ) & ! dot.wildfire_bomb.ticking",
["action"] = "wildfire_bomb",
}, -- [26]
{
["enabled"] = true,
["action"] = "kill_command",
["criteria"] = "focus + cast_regen < focus.max",
["cycle_targets"] = 1,
}, -- [27]
{
["enabled"] = true,
["criteria"] = "! talent.coordinated_kill.enabled & time_to_die > 140",
["action"] = "coordinated_assault",
}, -- [28]
{
["interrupt"] = "1",
["action"] = "fury_of_the_eagle",
["enabled"] = true,
}, -- [29]
},
["precombat"] = {
{
["action"] = "summon_pet",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["action"] = "algethar_puzzle_box",
["description"] = "Snapshot raid buffed stats before combat begins and pre-potting is done.",
["name"] = "algethar_puzzle_box",
}, -- [2]
{
["enabled"] = true,
["precast_time"] = "2",
["action"] = "steel_trap",
}, -- [3]
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "mb_rs_cost",
["criteria"] = "talent.mongoose_bite.enabled",
["value_else"] = "action.raptor_strike.cost",
["value"] = "action.mongoose_bite.cost",
}, -- [4]
},
},
["version"] = 20230508,
["warnings"] = "The import for 'precombat' required some automated changes.\nLine 4: Converted 'talent.mongoose_bite' to 'talent.mongoose_bite.enabled' (1x).\n\nThe import for 'cds' required some automated changes.\nLine 1: Converted 'talent.spearhead' to 'talent.spearhead.enabled' (1x).\nLine 1: Converted 'talent.coordinated_assault' to 'talent.coordinated_assault.enabled' (1x).\nLine 3: Converted 'talent.spearhead' to 'talent.spearhead.enabled' (1x).\nLine 3: Converted 'talent.coordinated_assault' to 'talent.coordinated_assault.enabled' (1x).\nLine 4: Converted 'talent.spearhead' to 'talent.spearhead.enabled' (1x).\nLine 4: Converted 'talent.coordinated_assault' to 'talent.coordinated_assault.enabled' (1x).\nLine 7: Converted 'talent.spearhead' to 'talent.spearhead.enabled' (1x).\nLine 7: Converted 'talent.coordinated_assault' to 'talent.coordinated_assault.enabled' (1x).\nLine 9: Converted 'talent.spearhead' to 'talent.spearhead.enabled' (1x).\nLine 9: Converted 'talent.coordinated_assault' to 'talent.coordinated_assault.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 1: Converted 'talent.spearhead' to 'talent.spearhead.enabled' (1x).\nLine 2: Converted 'talent.death_chakram' to 'talent.death_chakram.enabled' (1x).\nLine 4: Converted 'talent.bombardier' to 'talent.bombardier.enabled' (1x).\nLine 4: Converted 'talent.bombardier' to 'talent.bombardier.enabled' (1x).\nLine 4: Converted operations in '(raid_event.adds.in>cooldown.wildfire_bomb.full_recharge_time-(cooldown.wildfire_bomb.full_recharge_time%3.5)&debuff.shredded_armor.up&(full_recharge_time<2*gcd.max||talent.bombardier.enabled&!cooldown.coordinated_assault.remains||talent.bombardier.enabled&buff.coordinated_assault.up&buff.coordinated_assault.remains<2*gcd.max)||!raid_event.adds.exists&time_to_die<7)&set_bonus.tier30_4pc' to '(raid_event.adds.in>cooldown.wildfire_bomb.full_recharge_time-(cooldown.wildfire_bomb.full_recharge_time/3.5)&debuff.shredded_armor.up&(full_recharge_time<2*gcd.max||talent.bombardier.enabled&!cooldown.coordinated_assault.remains||talent.bombardier.enabled&buff.coordinated_assault.up&buff.coordinated_assault.remains<2*gcd.max)||!raid_event.adds.exists&time_to_die<7)&set_bonus.tier30_4pc'.\nLine 8: Converted operations in 'active_enemies=1&boss&fight_remains<focus%(variable.mb_rs_cost-cast_regen)*gcd.max||buff.mongoose_fury.up&buff.mongoose_fury.remains<gcd.max' to 'active_enemies=1&boss&fight_remains<focus/(variable.mb_rs_cost-cast_regen)*gcd.max||buff.mongoose_fury.up&buff.mongoose_fury.remains<gcd.max'.\nLine 10: Converted operations in 'active_enemies=1&boss&fight_remains<focus%(variable.mb_rs_cost-cast_regen)*gcd.max' to 'active_enemies=1&boss&fight_remains<focus/(variable.mb_rs_cost-cast_regen)*gcd.max'.\nLine 11: Converted 'talent.vipers_venom' to 'talent.vipers_venom.enabled' (1x).\nLine 12: Converted 'talent.alpha_predator' to 'talent.alpha_predator.enabled' (1x).\nLine 12: Converted operations in 'talent.alpha_predator.enabled&buff.mongoose_fury.up&buff.mongoose_fury.remains<focus%(variable.mb_rs_cost-cast_regen)*gcd.max' to 'talent.alpha_predator.enabled&buff.mongoose_fury.up&buff.mongoose_fury.remains<focus/(variable.mb_rs_cost-cast_regen)*gcd.max'.\nLine 15: Converted 'talent.coordinated_kill' to 'talent.coordinated_kill.enabled' (1x).\nLine 15: Converted 'talent.spearhead' to 'talent.spearhead.enabled' (1x).\nLine 15: Converted 'talent.coordinated_kill' to 'talent.coordinated_kill.enabled' (1x).\nLine 15: Converted 'talent.spearhead' to 'talent.spearhead.enabled' (1x).\nLine 16: Converted 'talent.flanking_strike' to 'talent.flanking_strike.enabled' (1x).\nLine 18: Converted 'talent.vipers_venom' to 'talent.vipers_venom.enabled' (1x).\nLine 19: Converted operations in 'raid_event.adds.in>cooldown.wildfire_bomb.full_recharge_time-(cooldown.wildfire_bomb.full_recharge_time%3.5)&full_recharge_time<gcd.max&(!set_bonus.tier29_2pc||active_enemies>1)' to 'raid_event.adds.in>cooldown.wildfire_bomb.full_recharge_time-(cooldown.wildfire_bomb.full_recharge_time/3.5)&full_recharge_time<gcd.max&(!set_bonus.tier29_2pc||active_enemies>1)'.\nLine 21: Converted 'talent.ranger' to 'talent.ranger.enabled' (1x).\nLine 22: Converted operations in 'raid_event.adds.in>cooldown.wildfire_bomb.full_recharge_time-(cooldown.wildfire_bomb.full_recharge_time%3.5)&(full_recharge_time<gcd.max||!dot.wildfire_bomb.ticking&set_bonus.tier30_4pc)' to 'raid_event.adds.in>cooldown.wildfire_bomb.full_recharge_time-(cooldown.wildfire_bomb.full_recharge_time/3.5)&(full_recharge_time<gcd.max||!dot.wildfire_bomb.ticking&set_bonus.tier30_4pc)'.\nLine 26: Converted operations in 'raid_event.adds.in>cooldown.wildfire_bomb.full_recharge_time-(cooldown.wildfire_bomb.full_recharge_time%3.5)&!dot.wildfire_bomb.ticking' to 'raid_event.adds.in>cooldown.wildfire_bomb.full_recharge_time-(cooldown.wildfire_bomb.full_recharge_time/3.5)&!dot.wildfire_bomb.ticking'.\nLine 28: Converted 'talent.coordinated_kill' to 'talent.coordinated_kill.enabled' (1x).\n\nThe import for 'cleave' required some automated changes.\nLine 2: Converted 'talent.bombardier' to 'talent.bombardier.enabled' (1x).\nLine 8: Converted operations in 'cooldown.wildfire_bomb.full_recharge_time>spell_targets%2' to 'cooldown.wildfire_bomb.full_recharge_time>spell_targets/2'.\nLine 14: Converted 'talent.wildfire_infusion' to 'talent.wildfire_infusion.enabled' (1x).\nLine 23: Converted 'talent.vipers_venom' to 'talent.vipers_venom.enabled' (1x).\nLine 23: Converted 'talent.hydras_bite' to 'talent.hydras_bite.enabled' (1x).\n\nImported 5 action lists.\n",
["spec"] = 255,
["profile"] = "actions.precombat+=/summon_pet\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\nactions.precombat+=/use_item,name=algethar_puzzle_box\nactions.precombat+=/steel_trap,precast_time=2\nactions.precombat+=/variable,name=mb_rs_cost,op=setif,value=action.mongoose_bite.cost,value_else=action.raptor_strike.cost,condition=talent.mongoose_bite\n\nactions+=/muzzle\nactions+=/tranquilizing_shot\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=st,strict=1,if=active_enemies<3\nactions+=/call_action_list,name=cleave,strict=1,if=active_enemies>2\nactions+=/arcane_torrent\n\nactions.cds+=/blood_fury,if=buff.coordinated_assault.up||buff.spearhead.up||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/harpoon,if=talent.terms_of_engagement.enabled&focus<focus.max||target.outside10\nactions.cds+=/ancestral_call,if=buff.coordinated_assault.up||buff.spearhead.up||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/fireblood,if=buff.coordinated_assault.up||buff.spearhead.up||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/lights_judgment\nactions.cds+=/bag_of_tricks,if=cooldown.kill_command.full_recharge_time>gcd\nactions.cds+=/berserking,if=buff.coordinated_assault.up||buff.spearhead.up||!talent.spearhead&!talent.coordinated_assault||boss&fight_remains<13\nactions.cds+=/muzzle\nactions.cds+=/potion,if=target.boss&fight_remains<25||buff.coordinated_assault.up||buff.spearhead.up||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/use_item,name=algethar_puzzle_box,use_off_gcd=1,if=gcd.remains>gcd.max-0.1||settings.gcdSync\nactions.cds+=/use_item,name=manic_grieftorch,use_off_gcd=1,if=gcd.remains>gcd.max-0.1&!buff.spearhead.up\n# Sim would use off GCD just after GCD is invoked, but it is awkward to present in-game.\nactions.cds+=/use_items,if=!buff.spearhead.up\nactions.cds+=/aspect_of_the_eagle,if=target.distance>=6\n\nactions.cleave+=/kill_command,if=debuff.shredded_armor.down&set_bonus.tier30_4pc&target.time_to_die>6\nactions.cleave+=/wildfire_bomb,if=full_recharge_time<gcd||talent.bombardier&!cooldown.coordinated_assault.remains\nactions.cleave+=/death_chakram\nactions.cleave+=/stampede\nactions.cleave+=/coordinated_assault\nactions.cleave+=/kill_shot,if=buff.coordinated_assault_empower.up\nactions.cleave+=/explosive_shot\nactions.cleave+=/carve,if=cooldown.wildfire_bomb.full_recharge_time>spell_targets%2\nactions.cleave+=/butchery,if=full_recharge_time<gcd||dot.shrapnel_bomb.ticking&(dot.internal_bleeding.stack<2||dot.shrapnel_bomb.remains<gcd)\nactions.cleave+=/wildfire_bomb,if=!dot.wildfire_bomb.ticking\nactions.cleave+=/fury_of_the_eagle\nactions.cleave+=/carve,if=dot.shrapnel_bomb.ticking\nactions.cleave+=/flanking_strike,if=focus+cast_regen<focus.max\nactions.cleave+=/butchery,if=(!next_wi_bomb.shrapnel||!talent.wildfire_infusion)\nactions.cleave+=/mongoose_bite,cycle_targets=1,if=debuff.latent_poison.stack>8\nactions.cleave+=/raptor_strike,cycle_targets=1,if=debuff.latent_poison.stack>8\nactions.cleave+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max&full_recharge_time<gcd\nactions.cleave+=/carve\nactions.cleave+=/kill_shot,if=!buff.coordinated_assault.up\nactions.cleave+=/steel_trap,if=focus+cast_regen<focus.max\nactions.cleave+=/spearhead\nactions.cleave+=/mongoose_bite,cycle_targets=1,if=buff.spearhead.remains\nactions.cleave+=/serpent_sting,cycle_targets=1,if=refreshable&target.time_to_die>8&(!talent.vipers_venom||talent.hydras_bite)\nactions.cleave+=/mongoose_bite,cycle_targets=1\nactions.cleave+=/raptor_strike,cycle_targets=1\n\nactions.st+=/death_chakram,if=focus+cast_regen<focus.max||talent.spearhead&!cooldown.spearhead.remains\nactions.st+=/spearhead,if=focus+action.kill_command.cast_regen>focus.max-10&(cooldown.death_chakram.remains||!talent.death_chakram)\nactions.st+=/kill_shot,if=buff.coordinated_assault_empower.up\nactions.st+=/wildfire_bomb,if=(raid_event.adds.in>cooldown.wildfire_bomb.full_recharge_time-(cooldown.wildfire_bomb.full_recharge_time%3.5)&debuff.shredded_armor.up&(full_recharge_time<2*gcd||talent.bombardier&!cooldown.coordinated_assault.remains||talent.bombardier&buff.coordinated_assault.up&buff.coordinated_assault.remains<2*gcd)||!raid_event.adds.exists&time_to_die<7)&set_bonus.tier30_4pc\nactions.st+=/kill_command,cycle_targets=1,if=full_recharge_time<gcd&focus+cast_regen<focus.max&buff.deadly_duo.stack>1\nactions.st+=/kill_command,cycle_targets=1,if=cooldown.wildfire_bomb.full_recharge_time<2*gcd&debuff.shredded_armor.down&set_bonus.tier30_4pc\nactions.st+=/mongoose_bite,if=buff.spearhead.remains\nactions.st+=/mongoose_bite,if=active_enemies=1&boss&fight_remains<focus%(variable.mb_rs_cost-cast_regen)*gcd||buff.mongoose_fury.up&buff.mongoose_fury.remains<gcd\nactions.st+=/kill_shot,if=!buff.coordinated_assault.up\nactions.st+=/raptor_strike,if=active_enemies=1&boss&fight_remains<focus%(variable.mb_rs_cost-cast_regen)*gcd\nactions.st+=/serpent_sting,cycle_targets=1,if=refreshable&target.time_to_die>7&!talent.vipers_venom\nactions.st+=/mongoose_bite,if=talent.alpha_predator&buff.mongoose_fury.up&buff.mongoose_fury.remains<focus%(variable.mb_rs_cost-cast_regen)*gcd\nactions.st+=/flanking_strike,if=focus+cast_regen<focus.max\nactions.st+=/stampede\nactions.st+=/coordinated_assault,if=!talent.coordinated_kill&target.health.pct<20&(!buff.spearhead.remains&cooldown.spearhead.remains||!talent.spearhead)||talent.coordinated_kill&(!buff.spearhead.remains&cooldown.spearhead.remains||!talent.spearhead)\nactions.st+=/kill_command,cycle_targets=1,if=full_recharge_time<gcd&focus+cast_regen<focus.max&(cooldown.flanking_strike.remains||!talent.flanking_strike)||debuff.shredded_armor.down&set_bonus.tier30_4pc\nactions.st+=/mongoose_bite,if=dot.shrapnel_bomb.ticking\nactions.st+=/serpent_sting,cycle_targets=1,if=refreshable&!talent.vipers_venom\nactions.st+=/wildfire_bomb,if=raid_event.adds.in>cooldown.wildfire_bomb.full_recharge_time-(cooldown.wildfire_bomb.full_recharge_time%3.5)&full_recharge_time<gcd&(!set_bonus.tier29_2pc||active_enemies>1)\nactions.st+=/mongoose_bite,cycle_targets=1,if=buff.mongoose_fury.up\nactions.st+=/explosive_shot,if=talent.ranger\nactions.st+=/wildfire_bomb,if=raid_event.adds.in>cooldown.wildfire_bomb.full_recharge_time-(cooldown.wildfire_bomb.full_recharge_time%3.5)&(full_recharge_time<gcd||!dot.wildfire_bomb.ticking&set_bonus.tier30_4pc)\nactions.st+=/mongoose_bite,cycle_targets=1,if=focus+action.kill_command.cast_regen>focus.max-10||set_bonus.tier30_4pc\nactions.st+=/raptor_strike,cycle_targets=1\nactions.st+=/steel_trap\nactions.st+=/wildfire_bomb,if=raid_event.adds.in>cooldown.wildfire_bomb.full_recharge_time-(cooldown.wildfire_bomb.full_recharge_time%3.5)&!dot.wildfire_bomb.ticking\nactions.st+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max\nactions.st+=/coordinated_assault,if=!talent.coordinated_kill&time_to_die>140\nactions.st+=/fury_of_the_eagle,interrupt=1",
},
["Demonology"] = {
["source"] = "https://github.com/simulationcraft/simc/blob/dragonflight/engine/class_modules/apl/warlock.cpp",
["builtIn"] = true,
["date"] = 20230508,
["spec"] = 266,
["desc"] = "2023-05-08: Trinket updates.\n\n2023-05-02: Update for 10.1 (but keeping my Tyrant window logic).\n\n2023-04-15: Clean up transition into Tyrant preparation phase.\n\n2023-04-09: Apply sim-tested priority updates.\n\n2023-04-05: Enable Guillotine usage without Demonic Strength talented.\n\n2023-04-04: Better priority revisions for Tyrant usage.\n\n2023-03-30: Update from SimC, including internal variable.next_tyrant calculation.",
["lists"] = {
["items"] = {
{
["enabled"] = true,
["criteria"] = "buff.demonic_power.up || ! talent.summon_demonic_tyrant.enabled & ( buff.nether_portal.up || ! talent.nether_portal.enabled ) || boss & time_to_die <= 21",
["name"] = "irideus_fragment",
["action"] = "irideus_fragment",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.demonic_power.up || ! talent.summon_demonic_tyrant.enabled & ( buff.nether_portal.up || ! talent.nether_portal.enabled ) || boss & time_to_die <= 21",
["name"] = "timebreaching_talon",
["action"] = "timebreaching_talon",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.demonic_power.up || ! talent.summon_demonic_tyrant.enabled & ( buff.nether_portal.up || ! talent.nether_portal.enabled ) || boss & time_to_die <= 21",
["name"] = "spoils_of_neltharus",
["action"] = "spoils_of_neltharus",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "! variable.shadow_timings || ( variable.shadow_timings & ( buff.demonic_power.up || ! talent.summon_demonic_tyrant.enabled & ( buff.nether_portal.up || ! talent.nether_portal.enabled ) ) )",
["name"] = "voidmenders_shadowgem",
["action"] = "voidmenders_shadowgem",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.demonic_power.up || ! talent.summon_demonic_tyrant.enabled & ( buff.nether_portal.up || ! talent.nether_portal.enabled ) || time_to_die <= 11",
["name"] = "erupting_spear_fragment",
["action"] = "erupting_spear_fragment",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "( buff.demonic_power.up || ! talent.summon_demonic_tyrant.enabled & ( buff.nether_portal.up || ! talent.nether_portal.enabled ) ) & ( ! equipped.irideus_fragment & ! equipped.timebreaching_talon & ! equipped.spoils_of_neltharus & ! equipped.erupting_spear_fragment & ! equipped.voidmenders_shadowgem )",
["action"] = "use_items",
}, -- [6]
{
["enabled"] = true,
["name"] = "rotcrusted_voodoo_doll",
["action"] = "rotcrusted_voodoo_doll",
}, -- [7]
{
["enabled"] = true,
["name"] = "beacon_to_the_beyond",
["action"] = "beacon_to_the_beyond",
}, -- [8]
},
["default"] = {
{
["action"] = "axe_toss",
["enabled"] = true,
}, -- [1]
{
["action"] = "devour_magic",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "action.summon_demonic_tyrant.cast_time * 2 + 1",
["var_name"] = "tyrant_padding",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "cooldown.nether_portal.up || buff.nether_portal.up || pet.pit_lord.active || ! talent.nether_portal.enabled || cooldown.nether_portal.remains > 30",
["var_name"] = "np_condition",
}, -- [4]
{
["enabled"] = true,
["action"] = "call_action_list",
["criteria"] = "talent.summon_demonic_tyrant.enabled & cooldown.summon_demonic_tyrant.remains_expected < variable.tyrant_prep_start & ( boss || fight_remains > cooldown.summon_demonic_tyrant.remains_expected )",
["list_name"] = "tyrant",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "boss & time_to_die < 2 * gcd.max",
["action"] = "implosion",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "! talent.summon_demonic_tyrant.enabled & soul_shard > 2 || boss & time_to_die < 30",
["action"] = "nether_portal",
}, -- [7]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "items",
}, -- [8]
{
["enabled"] = true,
["action"] = "call_action_list",
["criteria"] = "buff.demonic_power.up || ! talent.summon_demonic_tyrant.enabled & ( buff.nether_portal.up || ! talent.nether_portal.enabled )",
["list_name"] = "ogcd",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "buff.nether_portal.up",
["action"] = "hand_of_guldan",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "cooldown.summon_demonic_tyrant.remains_expected > action_cooldown",
["action"] = "call_dreadstalkers",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "! talent.summon_demonic_tyrant.enabled || time_to_die < 14",
["action"] = "call_dreadstalkers",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "! talent.summon_demonic_tyrant.enabled || boss & time_to_die < cooldown.summon_demonic_tyrant.remains_expected",
["action"] = "grimoire_felguard",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "! talent.summon_demonic_tyrant.enabled || cooldown.summon_demonic_tyrant.remains_expected > action_cooldown + variable.tyrant_prep_start || boss & time_to_die < cooldown.summon_demonic_tyrant.remains_expected",
["action"] = "summon_vilefiend",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "cooldown.demonic_strength.remains || ! talent.demonic_strength.enabled",
["action"] = "guillotine",
}, -- [15]
{
["action"] = "demonic_strength",
["enabled"] = true,
}, -- [16]
{
["enabled"] = true,
["criteria"] = "! pet.demonic_tyrant.active",
["action"] = "bilescourge_bombers",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "soul_shard < 5 & talent.fel_covenant.enabled & buff.fel_covenant.remains < 5",
["action"] = "shadow_bolt",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "two_cast_imps > 0 & buff.tyrant.down & active_enemies > 1 + ( talent.sacrificed_souls.enabled )",
["action"] = "implosion",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "buff.wild_imps.stack > 9 & buff.tyrant.up & active_enemies > 2 + ( 1 * talent.sacrificed_souls.enabled ) & cooldown.call_dreadstalkers.remains > 17 & talent.the_expendables.enabled",
["action"] = "implosion",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "soul_shard < 5 & active_enemies > 1",
["action"] = "soul_strike",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "buff.tormented_soul.stack = 10 & active_enemies > 1",
["action"] = "summon_soulkeeper",
}, -- [22]
{
["enabled"] = true,
["criteria"] = "buff.demonic_core.up & soul_shard < 4 & cooldown.summon_demonic_tyrant.remains_expected > 5",
["action"] = "demonbolt",
}, -- [23]
{
["enabled"] = true,
["criteria"] = "buff.demonic_core.stack < 2 & ( buff.dreadstalkers.remains > gcd.max * 3 || buff.dreadstalkers.down )",
["action"] = "power_siphon",
}, -- [24]
{
["enabled"] = true,
["criteria"] = "soul_shard > 2 & ( ! talent.summon_demonic_tyrant.enabled || cooldown.summon_demonic_tyrant.remains_expected > variable.tyrant_prep_start ) & ( buff.demonic_calling.up || soul_shard > 4 || cooldown.call_dreadstalkers.remains > gcd.max )",
["action"] = "hand_of_guldan",
}, -- [25]
{
["enabled"] = true,
["criteria"] = "refreshable",
["action"] = "doom",
["cycle_targets"] = 1,
}, -- [26]
{
["enabled"] = true,
["criteria"] = "soul_shard < 5",
["action"] = "soul_strike",
}, -- [27]
{
["action"] = "shadow_bolt",
["enabled"] = true,
}, -- [28]
},
["precombat"] = {
{
["enabled"] = true,
["criteria"] = "time > 0 & ! pet.alive & ! buff.grimoire_of_sacrifice.up",
["action"] = "fel_domination",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "! pet.alive & ! buff.grimoire_of_sacrifice.up",
["action"] = "summon_pet",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "12",
["var_name"] = "tyrant_prep_start",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "14 + talent.summon_vilefiend.enabled + talent.grimoire_felguard.enabled",
["var_name"] = "first_tyrant",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.wild_imps.stack > 1 & buff.demonic_core.stack < 3",
["action"] = "power_siphon",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "soul_shard < 5 & ( boss || cast_time = 0 )",
["action"] = "demonbolt",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "soul_shard < 5",
["action"] = "shadow_bolt",
}, -- [7]
},
["tyrant"] = {
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "tyrant_window_ends",
["value"] = "cooldown.summon_demonic_tyrant.remains_expected",
["value_else"] = "variable.first_tyrant - time - variable.tyrant_padding",
["criteria"] = "time > variable.first_tyrant",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "major_demon_remains - variable.tyrant_padding",
["var_name"] = "tyrant_window_ends",
["criteria"] = "major_demon_remains - variable.tyrant_padding > variable.tyrant_window_ends",
}, -- [2]
{
["enabled"] = true,
["op"] = "max",
["action"] = "variable",
["value"] = "cooldown.call_dreadstalkers.remains + action.call_dreadstalkers.cast_time + 12 - variable.tyrant_padding",
["var_name"] = "tyrant_window_ends",
["criteria"] = "buff.dreadstalkers.down",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "time < 2 & soul_shard < 5",
["action"] = "shadow_bolt",
}, -- [4]
{
["action"] = "nether_portal",
["enabled"] = true,
}, -- [5]
{
["action"] = "grimoire_felguard",
["enabled"] = true,
}, -- [6]
{
["action"] = "summon_vilefiend",
["enabled"] = true,
}, -- [7]
{
["action"] = "call_dreadstalkers",
["enabled"] = true,
}, -- [8]
{
["enabled"] = true,
["action"] = "soulburn",
["criteria"] = "buff.nether_portal.up & soul_shard >= 2",
["line_cd"] = "40",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "variable.tyrant_window_ends <= action.hand_of_guldan.cast_time & buff.dreadstalkers.up",
["action"] = "summon_demonic_tyrant",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "variable.tyrant_window_ends > cast_time & ( buff.nether_portal.up || soul_shard > 2 & variable.tyrant_window_ends > 0 || soul_shard = 5 ) & ! cooldown.call_dreadstalkers.up",
["action"] = "hand_of_guldan",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "talent.soulbound_tyrant.enabled & buff.dreadstalkers.up & variable.tyrant_window_ends < action.shadow_bolt.cast_time",
["action"] = "hand_of_guldan",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "buff.demonic_core.up",
["action"] = "demonbolt",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "buff.wild_imps.stack > 1 & ! buff.nether_portal.up",
["action"] = "power_siphon",
}, -- [14]
{
["action"] = "soul_strike",
["enabled"] = true,
}, -- [15]
{
["action"] = "shadow_bolt",
["enabled"] = true,
}, -- [16]
},
["ogcd"] = {
{
["action"] = "potion",
["enabled"] = true,
}, -- [1]
{
["action"] = "berserking",
["enabled"] = true,
}, -- [2]
{
["action"] = "blood_fury",
["enabled"] = true,
}, -- [3]
{
["action"] = "fireblood",
["enabled"] = true,
}, -- [4]
},
},
["version"] = 20230508,
["warnings"] = "The import for 'items' required some automated changes.\nLine 1: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 1: Converted 'talent.nether_portal' to 'talent.nether_portal.enabled' (1x).\nLine 2: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 2: Converted 'talent.nether_portal' to 'talent.nether_portal.enabled' (1x).\nLine 3: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 3: Converted 'talent.nether_portal' to 'talent.nether_portal.enabled' (1x).\nLine 4: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 4: Converted 'talent.nether_portal' to 'talent.nether_portal.enabled' (1x).\nLine 5: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 5: Converted 'talent.nether_portal' to 'talent.nether_portal.enabled' (1x).\nLine 6: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 6: Converted 'talent.nether_portal' to 'talent.nether_portal.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 4: Converted 'talent.nether_portal' to 'talent.nether_portal.enabled' (1x).\nLine 5: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 7: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 9: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 9: Converted 'talent.nether_portal' to 'talent.nether_portal.enabled' (1x).\nLine 12: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 13: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 14: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 15: Converted 'talent.demonic_strength' to 'talent.demonic_strength.enabled' (1x).\nLine 18: Converted 'talent.fel_covenant' to 'talent.fel_covenant.enabled' (1x).\nLine 20: Converted 'talent.the_expendables' to 'talent.the_expendables.enabled' (1x).\nLine 25: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'talent.summon_vilefiend' to 'talent.summon_vilefiend.enabled' (1x).\nLine 4: Converted 'talent.grimoire_felguard' to 'talent.grimoire_felguard.enabled' (1x).\n\nThe import for 'tyrant' required some automated changes.\nLine 12: Converted 'talent.soulbound_tyrant' to 'talent.soulbound_tyrant.enabled' (1x).\n\nImported 5 action lists.\n",
["author"] = "SimC",
["profile"] = "actions.precombat+=/fel_domination,if=time>0&!pet.alive&!buff.grimoire_of_sacrifice.up\nactions.precombat+=/summon_pet,if=!pet.alive&!buff.grimoire_of_sacrifice.up\nactions.precombat+=/variable,name=tyrant_prep_start,op=set,value=12\nactions.precombat+=/variable,name=first_tyrant,op=set,value=14+talent.summon_vilefiend+talent.grimoire_felguard\nactions.precombat+=/power_siphon,if=buff.wild_imps.stack>1&buff.demonic_core.stack<3\nactions.precombat+=/demonbolt,if=soul_shard<5&(boss||cast_time=0)\nactions.precombat+=/shadow_bolt,if=soul_shard<5\n\nactions+=/axe_toss\nactions+=/devour_magic\nactions+=/variable,name=tyrant_padding,op=set,value=action.summon_demonic_tyrant.cast_time*2+1\nactions+=/variable,name=np_condition,op=set,value=cooldown.nether_portal.up||buff.nether_portal.up||pet.pit_lord.active||!talent.nether_portal||cooldown.nether_portal.remains>30\nactions+=/call_action_list,name=tyrant,if=talent.summon_demonic_tyrant&cooldown.summon_demonic_tyrant.remains_expected<variable.tyrant_prep_start&(boss||fight_remains>cooldown.summon_demonic_tyrant.remains_expected)\n## actions+=/invoke_external_buff,name=power_infusion,if=!talent.nether_portal&!talent.summon_demonic_tyrant||boss&time_to_die<25\nactions+=/implosion,if=boss&time_to_die<2*gcd\nactions+=/nether_portal,if=!talent.summon_demonic_tyrant&soul_shard>2||boss&time_to_die<30\nactions+=/call_action_list,name=items\nactions+=/call_action_list,name=ogcd,if=buff.demonic_power.up||!talent.summon_demonic_tyrant&(buff.nether_portal.up||!talent.nether_portal)\nactions+=/hand_of_guldan,if=buff.nether_portal.up\nactions+=/call_dreadstalkers,if=cooldown.summon_demonic_tyrant.remains_expected>cooldown\nactions+=/call_dreadstalkers,if=!talent.summon_demonic_tyrant||time_to_die<14\nactions+=/grimoire_felguard,if=!talent.summon_demonic_tyrant||boss&time_to_die<cooldown.summon_demonic_tyrant.remains_expected\nactions+=/summon_vilefiend,if=!talent.summon_demonic_tyrant||cooldown.summon_demonic_tyrant.remains_expected>cooldown+variable.tyrant_prep_start||boss&time_to_die<cooldown.summon_demonic_tyrant.remains_expected\nactions+=/guillotine,if=cooldown.demonic_strength.remains||!talent.demonic_strength\nactions+=/demonic_strength\nactions+=/bilescourge_bombers,if=!pet.demonic_tyrant.active\nactions+=/shadow_bolt,if=soul_shard<5&talent.fel_covenant&buff.fel_covenant.remains<5\nactions+=/implosion,if=two_cast_imps>0&buff.tyrant.down&active_enemies>1+(talent.sacrificed_souls.enabled)\nactions+=/implosion,if=buff.wild_imps.stack>9&buff.tyrant.up&active_enemies>2+(1*talent.sacrificed_souls.enabled)&cooldown.call_dreadstalkers.remains>17&talent.the_expendables\nactions+=/soul_strike,if=soul_shard<5&active_enemies>1\nactions+=/summon_soulkeeper,if=buff.tormented_soul.stack=10&active_enemies>1\nactions+=/demonbolt,if=buff.demonic_core.up&soul_shard<4&cooldown.summon_demonic_tyrant.remains_expected>5\nactions+=/power_siphon,if=buff.demonic_core.stack<2&(buff.dreadstalkers.remains>gcd*3||buff.dreadstalkers.down)\nactions+=/hand_of_guldan,if=soul_shard>2&(!talent.summon_demonic_tyrant||cooldown.summon_demonic_tyrant.remains_expected>variable.tyrant_prep_start)&(buff.demonic_calling.up||soul_shard>4||cooldown.call_dreadstalkers.remains>gcd)\nactions+=/doom,cycle_targets=1,if=refreshable\nactions+=/soul_strike,if=soul_shard<5\nactions+=/shadow_bolt\n\nactions.items+=/use_item,name=irideus_fragment,if=buff.demonic_power.up||!talent.summon_demonic_tyrant&(buff.nether_portal.up||!talent.nether_portal)||boss&time_to_die<=21\nactions.items+=/use_item,name=timebreaching_talon,if=buff.demonic_power.up||!talent.summon_demonic_tyrant&(buff.nether_portal.up||!talent.nether_portal)||boss&time_to_die<=21\nactions.items+=/use_item,name=spoils_of_neltharus,if=buff.demonic_power.up||!talent.summon_demonic_tyrant&(buff.nether_portal.up||!talent.nether_portal)||boss&time_to_die<=21\nactions.items+=/use_item,name=voidmenders_shadowgem,if=!variable.shadow_timings||(variable.shadow_timings&(buff.demonic_power.up||!talent.summon_demonic_tyrant&(buff.nether_portal.up||!talent.nether_portal)))\nactions.items+=/use_item,name=erupting_spear_fragment,if=buff.demonic_power.up||!talent.summon_demonic_tyrant&(buff.nether_portal.up||!talent.nether_portal)||time_to_die<=11\nactions.items+=/use_items,if=(buff.demonic_power.up||!talent.summon_demonic_tyrant&(buff.nether_portal.up||!talent.nether_portal))&(!equipped.irideus_fragment&!equipped.timebreaching_talon&!equipped.spoils_of_neltharus&!equipped.erupting_spear_fragment&!equipped.voidmenders_shadowgem)\nactions.items+=/use_item,name=rotcrusted_voodoo_doll\nactions.items+=/use_item,name=beacon_to_the_beyond\n\nactions.ogcd=potion\nactions.ogcd+=/berserking\nactions.ogcd+=/blood_fury\nactions.ogcd+=/fireblood\n\nactions.tyrant=variable,name=tyrant_window_ends,op=setif,value=cooldown.summon_demonic_tyrant.remains_expected,value_else=variable.first_tyrant-time-variable.tyrant_padding,condition=time>variable.first_tyrant\n## These are currently optimal for Patchwerk and HAC in SimC, but can be simplified in the addon using major_demon_remains.\n## actions.tyrant+=/variable,name=lowest_demon_remains,op=setif,value=buff.dreadstalkers.remains,value_else=100,condition=buff.dreadstalkers.up\n## actions.tyrant+=/variable,name=lowest_demon_remains,op=min,value=buff.vilefiend.remains,if=buff.vilefiend.up&buff.vilefiend.remains<variable.lowest_demon_remains\n## actions.tyrant+=/variable,name=lowest_demon_remains,op=min,value=buff.grimoire_felguard.remains,if=buff.grimoire_felguard.up&buff.grimoire_felguard.remains<variable.lowest_demon_remains\n## actions.tyrant+=/variable,name=lowest_demon_remains,op=min,value=buff.nether_portal.remains,if=buff.nether_portal.up&buff.nether_portal.remains<variable.lowest_demon_remains\n## actions.tyrant+=/variable,name=tyrant_window_ends,op=set,value=variable.lowest_demon_remains-variable.tyrant_padding,if=time>variable.first_tyrant&variable.lowest_demon_remains<100&variable.lowest_demon_remains-variable.tyrant_padding>variable.tyrant_window_ends\nactions.tyrant+=/variable,name=tyrant_window_ends,op=set,value=major_demon_remains-variable.tyrant_padding,if=major_demon_remains-variable.tyrant_padding>variable.tyrant_window_ends\nactions.tyrant+=/variable,name=tyrant_window_ends,op=max,value=cooldown.call_dreadstalkers.remains+action.call_dreadstalkers.cast_time+12-variable.tyrant_padding,if=buff.dreadstalkers.down\nactions.tyrant+=/shadow_bolt,if=time<2&soul_shard<5\nactions.tyrant+=/nether_portal\nactions.tyrant+=/grimoire_felguard\nactions.tyrant+=/summon_vilefiend\nactions.tyrant+=/call_dreadstalkers\nactions.tyrant+=/soulburn,if=buff.nether_portal.up&soul_shard>=2,line_cd=40\nactions.tyrant+=/summon_demonic_tyrant,if=variable.tyrant_window_ends<=action.hand_of_guldan.cast_time&buff.dreadstalkers.up\nactions.tyrant+=/hand_of_guldan,if=variable.tyrant_window_ends>cast_time&(buff.nether_portal.up||soul_shard>2&variable.tyrant_window_ends>0||soul_shard=5)&!cooldown.call_dreadstalkers.up\nactions.tyrant+=/hand_of_guldan,if=talent.soulbound_tyrant&buff.dreadstalkers.up&variable.tyrant_window_ends<action.shadow_bolt.cast_time\nactions.tyrant+=/demonbolt,if=buff.demonic_core.up\nactions.tyrant+=/power_siphon,if=buff.wild_imps.stack>1&!buff.nether_portal.up\nactions.tyrant+=/soul_strike\nactions.tyrant+=/shadow_bolt",
},
["Restoration Shaman"] = {
["builtIn"] = true,
["date"] = 20230205,
["author"] = "Hekili",
["lists"] = {
["default"] = {
{
["enabled"] = true,
["enable_moving"] = true,
["action"] = "spiritwalkers_grace",
["moving"] = 1,
["criteria"] = "movement.distance > 6",
}, -- [1]
{
["enabled"] = true,
["description"] = "Interrupt of casts.",
["action"] = "wind_shear",
}, -- [2]
{
["action"] = "potion",
["enabled"] = true,
}, -- [3]
{
["action"] = "use_items",
["enabled"] = true,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "! ticking",
["action"] = "flame_shock",
}, -- [5]
{
["action"] = "earth_elemental",
["enabled"] = true,
}, -- [6]
{
["action"] = "blood_fury",
["enabled"] = true,
}, -- [7]
{
["action"] = "berserking",
["enabled"] = true,
}, -- [8]
{
["action"] = "fireblood",
["enabled"] = true,
}, -- [9]
{
["action"] = "ancestral_call",
["enabled"] = true,
}, -- [10]
{
["action"] = "bag_of_tricks",
["enabled"] = true,
}, -- [11]
{
["enabled"] = true,
["criteria"] = "dot.flame_shock.remains > cast_time & cooldown_react",
["action"] = "lava_burst",
}, -- [12]
{
["action"] = "primordial_wave",
["enabled"] = true,
}, -- [13]
{
["enabled"] = true,
["criteria"] = "spell_targets.chain_lightning < 3 || ! talent.chain_lightning.enabled",
["action"] = "lightning_bolt",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "spell_targets.chain_lightning > 2",
["action"] = "chain_lightning",
}, -- [15]
{
["moving"] = 1,
["enable_moving"] = true,
["action"] = "flame_shock",
["enabled"] = true,
}, -- [16]
{
["moving"] = 1,
["enable_moving"] = true,
["action"] = "frost_shock",
["enabled"] = true,
}, -- [17]
},
["precombat"] = {
{
["action"] = "earthliving_weapon",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.water_shield.up + buff.earth_shield.up + buff.lightning_shield.up < 1 + talent.elemental_orbit.rank",
["action"] = "water_shield",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.water_shield.up + buff.earth_shield.up + buff.lightning_shield.up < 1 + talent.elemental_orbit.rank",
["action"] = "lightning_shield",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.water_shield.up + buff.earth_shield.up + buff.lightning_shield.up < 1 + talent.elemental_orbit.rank",
["action"] = "earth_shield",
}, -- [4]
{
["action"] = "earth_elemental",
["enabled"] = true,
}, -- [5]
{
["action"] = "potion",
["enabled"] = true,
}, -- [6]
},
},
["version"] = 20230205,
["warnings"] = "The import for 'default' required some automated changes.\nLine 14: Converted 'talent.chain_lightning' to 'talent.chain_lightning.enabled' (1x).\n\nImported 2 action lists.\n",
["profile"] = "actions.precombat+=/earthliving_weapon\nactions.precombat+=/water_shield,if=buff.water_shield.up+buff.earth_shield.up+buff.lightning_shield.up<1+talent.elemental_orbit.rank\nactions.precombat+=/lightning_shield,if=buff.water_shield.up+buff.earth_shield.up+buff.lightning_shield.up<1+talent.elemental_orbit.rank\nactions.precombat+=/earth_shield,if=buff.water_shield.up+buff.earth_shield.up+buff.lightning_shield.up<1+talent.elemental_orbit.rank\nactions.precombat+=/earth_elemental\nactions.precombat+=/potion\n\nactions+=/spiritwalkers_grace,moving=1,if=movement.distance>6\n# Interrupt of casts.\nactions+=/wind_shear\nactions+=/potion\nactions+=/use_items\nactions+=/flame_shock,if=!ticking\nactions+=/earth_elemental\nactions+=/blood_fury\nactions+=/berserking\nactions+=/fireblood\nactions+=/ancestral_call\nactions+=/bag_of_tricks\nactions+=/lava_burst,if=dot.flame_shock.remains>cast_time&cooldown_react\nactions+=/primordial_wave\nactions+=/lightning_bolt,if=spell_targets.chain_lightning<3||!talent.chain_lightning\nactions+=/chain_lightning,if=spell_targets.chain_lightning>2\nactions+=/flame_shock,moving=1\nactions+=/frost_shock,moving=1",
["spec"] = 264,
},
["Mistweaver"] = {
["builtIn"] = true,
["date"] = 20230325,
["spec"] = 270,
["desc"] = "2023-02-16: Added option to avoid recasting Faeline Stomp when standing in an existing faeline (for mana efficiency).\n\n2023-03-25: Add Roll/Chi Torpedo with specialization option.",
["lists"] = {
["aoe"] = {
{
["enabled"] = true,
["criteria"] = "active_enemies <= 3",
["action"] = "thunder_focus_tea",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "active_enemies <= 3",
["action"] = "rising_sun_kick",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! talent.teachings_of_the_monastery.enabled || buff.teachings_of_the_monastery.up & active_enemies <= 3",
["action"] = "blackout_kick",
}, -- [3]
{
["action"] = "chi_wave",
["enabled"] = true,
}, -- [4]
{
["action"] = "chi_burst",
["enabled"] = true,
}, -- [5]
{
["action"] = "spinning_crane_kick",
["enabled"] = true,
}, -- [6]
},
["st"] = {
{
["action"] = "thunder_focus_tea",
["enabled"] = true,
}, -- [1]
{
["action"] = "rising_sun_kick",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! talent.teachings_of_the_monastery.enabled || buff.teachings_of_the_monastery.up & cooldown.rising_sun_kick.remains > gcd.max",
["action"] = "blackout_kick",
}, -- [3]
{
["action"] = "chi_wave",
["enabled"] = true,
}, -- [4]
{
["action"] = "chi_burst",
["enabled"] = true,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "! talent.teachings_of_the_monastery.enabled || buff.teachings_of_the_monastery.stack < 3 || buff.teachings_of_the_monastery.remains < 2",
["action"] = "tiger_palm",
}, -- [6]
},
["default"] = {
{
["action"] = "spear_hand_strike",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["criteria"] = "distance_check",
["action"] = "roll",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "distance_check",
["action"] = "chi_torpedo",
}, -- [3]
{
["action"] = "use_items",
["enabled"] = true,
}, -- [4]
{
["action"] = "blood_fury",
["enabled"] = true,
}, -- [5]
{
["action"] = "berserking",
["enabled"] = true,
}, -- [6]
{
["action"] = "lights_judgment",
["enabled"] = true,
}, -- [7]
{
["action"] = "fireblood",
["enabled"] = true,
}, -- [8]
{
["action"] = "ancestral_call",
["enabled"] = true,
}, -- [9]
{
["action"] = "bag_of_tricks",
["enabled"] = true,
}, -- [10]
{
["action"] = "potion",
["enabled"] = true,
}, -- [11]
{
["enabled"] = true,
["criteria"] = "! settings.save_faeline || ! ( buff.ancient_concordance.up || buff.awakened_faeline.up )",
["action"] = "faeline_stomp",
}, -- [12]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies >= 3",
["list_name"] = "aoe",
}, -- [13]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies < 3",
["list_name"] = "st",
}, -- [14]
},
["precombat"] = {
{
["action"] = "potion",
["enabled"] = true,
}, -- [1]
{
["action"] = "chi_burst",
["enabled"] = true,
}, -- [2]
{
["action"] = "chi_wave",
["enabled"] = true,
}, -- [3]
},
},
["version"] = 20230325,
["warnings"] = "The import for 'aoe' required some automated changes.\nLine 3: Converted 'talent.teachings_of_the_monastery' to 'talent.teachings_of_the_monastery.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 3: Converted 'talent.teachings_of_the_monastery' to 'talent.teachings_of_the_monastery.enabled' (1x).\nLine 6: Converted 'talent.teachings_of_the_monastery' to 'talent.teachings_of_the_monastery.enabled' (1x).\n\nImported 4 action lists.\n",
["profile"] = "actions.precombat+=/potion\nactions.precombat+=/chi_burst\nactions.precombat+=/chi_wave\n\nactions+=/spear_hand_strike\nactions+=/roll,if=distance_check\nactions+=/chi_torpedo,if=distance_check\nactions+=/use_items\nactions+=/blood_fury\nactions+=/berserking\nactions+=/lights_judgment\nactions+=/fireblood\nactions+=/ancestral_call\nactions+=/bag_of_tricks\nactions+=/potion\nactions+=/faeline_stomp,if=!settings.save_faeline||!(buff.ancient_concordance.up||buff.awakened_faeline.up)\nactions+=/call_action_list,name=aoe,strict=1,if=active_enemies>=3\nactions+=/call_action_list,name=st,strict=1,if=active_enemies<3\n\nactions.st+=/thunder_focus_tea\nactions.st+=/rising_sun_kick\nactions.st+=/blackout_kick,if=!talent.teachings_of_the_monastery||buff.teachings_of_the_monastery.up&cooldown.rising_sun_kick.remains>gcd.max\nactions.st+=/chi_wave\nactions.st+=/chi_burst\nactions.st+=/tiger_palm,if=!talent.teachings_of_the_monastery||buff.teachings_of_the_monastery.stack<3||buff.teachings_of_the_monastery.remains<2\n\nactions.aoe+=/thunder_focus_tea,if=active_enemies<=3\nactions.aoe+=/rising_sun_kick,if=active_enemies<=3\nactions.aoe+=/blackout_kick,if=!talent.teachings_of_the_monastery||buff.teachings_of_the_monastery.up&active_enemies<=3\nactions.aoe+=/chi_wave\nactions.aoe+=/chi_burst\nactions.aoe+=/spinning_crane_kick",
["author"] = "Aikanaka",
},
["Holy Paladin"] = {
["builtIn"] = true,
["date"] = 20230327,
["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",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "talent.awakening.enabled & group",
["action"] = "light_of_dawn",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "talent.awakening.enabled",
["action"] = "word_of_glory",
}, -- [3]
},
["default"] = {
{
["action"] = "rebuke",
["enabled"] = true,
}, -- [1]
{
["action"] = "avenging_wrath",
["enabled"] = true,
}, -- [2]
{
["action"] = "avenging_crusader",
["enabled"] = true,
}, -- [3]
{
["action"] = "blessing_of_summer",
["enabled"] = true,
}, -- [4]
{
["action"] = "blessing_of_autumn",
["enabled"] = true,
}, -- [5]
{
["action"] = "blessing_of_winter",
["enabled"] = true,
}, -- [6]
{
["action"] = "blessing_of_spring",
["enabled"] = true,
}, -- [7]
{
["action"] = "use_items",
["enabled"] = true,
}, -- [8]
{
["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",
}, -- [9]
{
["action"] = "divine_toll",
["enabled"] = true,
}, -- [10]
{
["action"] = "lights_hammer",
["enabled"] = true,
}, -- [11]
{
["action"] = "holy_prism",
["enabled"] = true,
}, -- [12]
{
["enabled"] = true,
["criteria"] = "! consecration.up & target.within10",
["action"] = "consecration",
}, -- [13]
{
["action"] = "hammer_of_wrath",
["enabled"] = true,
}, -- [14]
{
["action"] = "judgment",
["enabled"] = true,
}, -- [15]
{
["action"] = "holy_shock",
["enabled"] = true,
}, -- [16]
{
["enabled"] = true,
["criteria"] = "cooldown.holy_shock.remains > gcd.max",
["action"] = "crusader_strike",
}, -- [17]
},
},
["version"] = 20230327,
["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&target.within10\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",
},
["Outlaw"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230313,
["author"] = "SimC",
["desc"] = "2023-02-15: Added option to use Adrenaline Rush before Roll the Bones in the opener if Loaded Dice is talented, to guarantee two buffs. This would mainly be used by folks taking Count the Odds and Loaded Dice. See Outlaw specialization options (at left).\n\nAdded logic to prevent Vanish in the first 10s of combat (in case of delayed opener).\n\n2023-03-13: Update Manic Grieftorch usage.",
["lists"] = {
["build"] = {
{
["enabled"] = true,
["action"] = "sepsis",
["cycle_targets"] = 1,
["description"] = "Builders",
["criteria"] = "target.time_to_die > 11 & debuff.between_the_eyes.up || boss & fight_remains < 11",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "debuff.ghostly_strike.remains <= 3 & ( spell_targets.blade_flurry <= 2 || buff.dreadblades.up ) & ! buff.subterfuge.up & target.time_to_die >= 5",
["action"] = "ghostly_strike",
}, -- [2]
{
["enabled"] = true,
["description"] = "High priority Ambush line to apply Find Weakness or consume Audacity/Sepsis buff before Pistol Shot",
["criteria"] = "settings.ambush_anyway || ( talent.hidden_opportunity.enabled || talent.keep_it_rolling.enabled ) & ( buff.audacity.up || buff.sepsis_buff.up || buff.subterfuge.up & cooldown.keep_it_rolling.ready ) || talent.find_weakness.enabled & debuff.find_weakness.down",
["action"] = "ambush",
}, -- [3]
{
["enabled"] = true,
["description"] = "With Audacity + Hidden Opportunity + Fan the Hammer, use Pistol Shot to proc Audacity any time Ambush is not available",
["criteria"] = "talent.fan_the_hammer.enabled & talent.audacity.enabled & talent.hidden_opportunity.enabled & buff.opportunity.up & ! buff.audacity.up & ! buff.subterfuge.up & ! buff.shadow_dance.up",
["action"] = "pistol_shot",
}, -- [4]
{
["enabled"] = true,
["description"] = "Use Greenskins Wickers buff immediately with Opportunity unless running Fan the Hammer",
["criteria"] = "buff.greenskins_wickers.up & ( ! talent.fan_the_hammer.enabled & buff.opportunity.up || buff.greenskins_wickers.remains < 1.5 )",
["action"] = "pistol_shot",
}, -- [5]
{
["enabled"] = true,
["description"] = "With Fan the Hammer, consume Opportunity at max stacks or if we will get max 4+ CP and Dreadblades is not up",
["criteria"] = "talent.fan_the_hammer.enabled & buff.opportunity.up & ( buff.opportunity.stack >= buff.opportunity.max_stack || buff.opportunity.remains < 2 )",
["action"] = "pistol_shot",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "talent.fan_the_hammer.enabled & buff.opportunity.up & combo_points.deficit > ( ( 1 + talent.quick_draw.enabled ) * talent.fan_the_hammer.rank ) & ! buff.dreadblades.up & ( ! talent.hidden_opportunity.enabled || ! buff.subterfuge.up & ! buff.shadow_dance.up )",
["action"] = "pistol_shot",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "! buff.dreadblades.up",
["action"] = "echoing_reprimand",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "settings.ambush_anyway || talent.hidden_opportunity.enabled || talent.find_weakness.enabled & debuff.find_weakness.down",
["action"] = "ambush",
}, -- [9]
{
["enabled"] = true,
["description"] = "Use Pistol Shot with Opportunity if Combat Potency won't overcap energy, when it will exactly cap CP, or when using Quick Draw",
["criteria"] = "! talent.fan_the_hammer.enabled & buff.opportunity.up & ( energy.base_deficit > energy.regen * 1.5 || ! talent.weaponmaster.enabled & combo_points.deficit <= 1 + buff.broadside.up || talent.quick_draw.enabled || talent.audacity.enabled & ! buff.audacity.up )",
["action"] = "pistol_shot",
}, -- [10]
{
["action"] = "sinister_strike",
["enabled"] = true,
}, -- [11]
},
["default"] = {
{
["enabled"] = true,
["description"] = "Restealth if possible (no vulnerable enemies in combat)",
["action"] = "stealth",
}, -- [1]
{
["enabled"] = true,
["description"] = "Interrupt on cooldown to allow simming interactions with that",
["action"] = "kick",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.count_the_odds.enabled & ( stealthed.basic || buff.shadowmeld.up || buff.shadow_dance.up )",
["var_name"] = "stealthed_cto",
["description"] = "Checks if we are in an appropriate Stealth state for triggering the Count the Odds bonus",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["var_name"] = "rtb_reroll",
["value"] = "rtb_buffs < 2 & ( ! buff.broadside.up & ( ! talent.fan_the_hammer.enabled || ! buff.skull_and_crossbones.up ) & ! buff.true_bearing.up || buff.loaded_dice.up ) || rtb_buffs = 2 & ( buff.buried_treasure.up & buff.grand_melee.up || ! buff.broadside.up & ! buff.true_bearing.up & buff.loaded_dice.up )",
["description"] = "Roll the Bones Reroll Conditions",
["criteria"] = "! talent.hidden_opportunity.enabled",
}, -- [4]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["var_name"] = "rtb_reroll",
["value"] = "variable.rtb_reroll || ( ( rtb_buffs_normal = 0 & rtb_buffs_longer >= 1 ) & ! ( buff.broadside.up & buff.true_bearing.up & buff.skull_and_crossbones.up ) & ! ( buff.broadside.remains > 39 || buff.true_bearing.remains > 39 || buff.ruthless_precision.remains > 39 || buff.skull_and_crossbones.remains > 39 ) )",
["description"] = "Additional Reroll Conditions for Keep it Rolling or Count the Odds",
["criteria"] = "! talent.hidden_opportunity.enabled & ( talent.keep_it_rolling.enabled || talent.count_the_odds.enabled )",
}, -- [5]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["var_name"] = "rtb_reroll",
["value"] = "! rtb_buffs_will_lose_buff.skull_and_crossbones & ( rtb_buffs_will_lose - rtb_buffs_will_lose_buff.grand_melee ) < 2 & buff.shadow_dance.down & buff.subterfuge.down",
["description"] = "With Hidden Opportunity, prioritize rerolling for Skull and Crossbones over everything else",
["criteria"] = "talent.hidden_opportunity.enabled",
}, -- [6]
{
["enabled"] = true,
["op"] = "reset",
["action"] = "variable",
["var_name"] = "rtb_reroll",
["description"] = "Avoid rerolls when we will not have time remaining on the fight or add wave to recoup the opportunity cost of the global",
["criteria"] = "! ( raid_event.adds.remains > 12 || raid_event.adds.up & ( raid_event.adds.in - raid_event.adds.remains ) < 6 || target.time_to_die > 12 ) || boss & fight_remains < 12",
}, -- [7]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "( talent.hidden_opportunity.enabled || combo_points.deficit >= 2 + talent.improved_ambush.enabled + buff.broadside.up || buff.vicious_followup.up || settings.ambush_anyway ) & energy >= 50",
["var_name"] = "ambush_condition",
["description"] = "Ensure we want to cast Ambush prior to triggering a Stealth cooldown",
}, -- [8]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "combo_points >= ( ( cp_max_spend - 1 ) <? ( 6 - talent.summarily_dispatched.enabled ) ) || effective_combo_points >= cp_max_spend",
["var_name"] = "finish_condition",
["description"] = "Finish at 6 (5 with Summarily Dispatched talented) CP or CP Max-1, whichever is greater of the two",
}, -- [9]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "spell_targets.blade_flurry < 2 & raid_event.adds.in > 20 || buff.blade_flurry.remains > 1 + talent.killing_spree.enabled",
["var_name"] = "blade_flurry_sync",
["description"] = "With multiple targets, this variable is checked to decide whether some CDs should be synced with Blade Flurry",
}, -- [10]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "Higher priority Stealth list for Count the Odds or true Stealth/Vanish that will break in a single global",
["criteria"] = "stealthed.basic || buff.shadowmeld.up",
["list_name"] = "stealth",
}, -- [11]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "cds",
}, -- [12]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "Lower priority Stealth list for Shadow Dance",
["criteria"] = "variable.stealthed_cto",
["list_name"] = "stealth",
}, -- [13]
{
["enabled"] = true,
["action"] = "run_action_list",
["criteria"] = "variable.finish_condition",
["list_name"] = "finish",
}, -- [14]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "build",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "energy.base_deficit >= 15 + energy.regen",
["action"] = "arcane_torrent",
}, -- [16]
{
["action"] = "arcane_pulse",
["enabled"] = true,
}, -- [17]
{
["action"] = "lights_judgment",
["enabled"] = true,
}, -- [18]
{
["action"] = "bag_of_tricks",
["enabled"] = true,
}, -- [19]
},
["precombat"] = {
{
["action"] = "apply_poison",
["enabled"] = true,
}, -- [1]
{
["action"] = "bottled_flayedwing_toxin",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["name"] = "algethar_puzzle_box",
["action"] = "algethar_puzzle_box",
}, -- [3]
{
["action"] = "stealth",
["enabled"] = true,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in > 25",
["action"] = "marked_for_death",
["precombat_seconds"] = "10",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "talent.improved_adrenaline_rush.enabled || settings.use_ld_opener & cooldown.roll_the_bones.remains < 1 & ( buff.roll_the_bones.remains < 3 || rtb_buffs_normal = 0 )",
["action"] = "adrenaline_rush",
["precombat_seconds"] = "3",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "remains < 3 || rtb_buffs_normal = 0",
["action"] = "roll_the_bones",
["precombat_seconds"] = "2",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "refreshable & buff.grand_melee.down & ! settings.use_ld_opener",
["action"] = "slice_and_dice",
["precombat_seconds"] = "1",
}, -- [8]
},
["stealth"] = {
{
["enabled"] = true,
["description"] = "Stealth",
["criteria"] = "talent.subterfuge.enabled & talent.hidden_opportunity.enabled & spell_targets >= 2 & ! buff.blade_flurry.up",
["action"] = "blade_flurry",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "variable.finish_condition",
["action"] = "cold_blood",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "variable.finish_condition",
["action"] = "dispatch",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "variable.stealthed_cto || stealthed.basic & ( settings.ambush_anyway || talent.find_weakness.enabled & ! debuff.find_weakness.up || talent.hidden_opportunity.enabled )",
["action"] = "ambush",
}, -- [4]
},
["cds"] = {
{
["enabled"] = true,
["description"] = "Cooldowns",
["criteria"] = "! buff.adrenaline_rush.up & ( ! talent.improved_adrenaline_rush.enabled || combo_points <= 2 )",
["action"] = "adrenaline_rush",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "spell_targets >= 2 & buff.blade_flurry.remains < gcd.max",
["action"] = "blade_flurry",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.dreadblades.down & ( rtb_buffs = 0 || variable.rtb_reroll )",
["action"] = "roll_the_bones",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "! variable.rtb_reroll & ( buff.broadside.up + buff.true_bearing.up + buff.skull_and_crossbones.up + buff.ruthless_precision.up ) > 2 & ( buff.shadow_dance.down || rtb_buffs >= 6 )",
["action"] = "keep_it_rolling",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "variable.blade_flurry_sync & ! buff.dreadblades.up & ( energy.base_time_to_max > 4 + stealthed.rogue - spell_targets / 3 )",
["action"] = "blade_rush",
}, -- [5]
{
["enabled"] = true,
["action"] = "call_action_list",
["criteria"] = "! stealthed.all || talent.count_the_odds.enabled & ! talent.hidden_opportunity.enabled & ! variable.stealthed_cto",
["list_name"] = "stealth_cds",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "! ( variable.stealthed_cto || stealthed.basic || talent.hidden_opportunity.enabled & stealthed.rogue ) & combo_points <= 2 & ( ! talent.marked_for_death.enabled || ! cooldown.marked_for_death.ready ) & target.time_to_die >= 10",
["action"] = "dreadblades",
}, -- [7]
{
["enabled"] = true,
["action"] = "marked_for_death",
["line_cd"] = "1.5",
["description"] = "If adds are up, snipe the one with lowest TTD. Use when dying faster than CP deficit or without any CP.",
["criteria"] = "raid_event.adds.up & ( target.time_to_die < combo_points.deficit || combo_points.deficit >= cp_max_spend - 1 ) & ! buff.dreadblades.up",
["cycle_targets"] = 1,
}, -- [8]
{
["enabled"] = true,
["description"] = "If no adds will die within the next 30s, use MfD on boss without any CP.",
["criteria"] = "raid_event.adds.in > 30 - raid_event.adds.duration & combo_points.deficit >= cp_max_spend - 1 & ! buff.dreadblades.up",
["action"] = "marked_for_death",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "! buff.thistle_tea.up & ( energy.base_deficit >= 100 || boss & fight_remains < charges * 6 )",
["action"] = "thistle_tea",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "variable.blade_flurry_sync & ! stealthed.rogue & debuff.between_the_eyes.up & energy.base_time_to_max > 4",
["action"] = "killing_spree",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "! stealthed.all & ( talent.count_the_odds.enabled & variable.finish_condition || ! talent.weaponmaster.enabled & variable.ambush_condition )",
["action"] = "shadowmeld",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "buff.bloodlust.react || boss & fight_remains < 30 || buff.adrenaline_rush.up",
["action"] = "potion",
}, -- [13]
{
["action"] = "blood_fury",
["enabled"] = true,
}, -- [14]
{
["action"] = "berserking",
["enabled"] = true,
}, -- [15]
{
["action"] = "fireblood",
["enabled"] = true,
}, -- [16]
{
["action"] = "ancestral_call",
["enabled"] = true,
}, -- [17]
{
["enabled"] = true,
["action"] = "manic_grieftorch",
["use_off_gcd"] = 1,
["description"] = "Default conditions for usable items.",
["criteria"] = "! stealthed.all & debuff.between_the_eyes.up & ( ! talent.ghostly_strike.enabled || debuff.ghostly_strike.up || spell_targets.blade_flurry > 2 ) || boss & fight_remains <= 5",
["name"] = "manic_grieftorch",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "spell_targets.blade_flurry > desired_targets || raid_event.adds.in > 60 || boss & fight_remains < 10",
["name"] = "stormeaters_boon",
["action"] = "stormeaters_boon",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "spell_targets.blade_flurry > desired_targets || raid_event.adds.in > 60 || boss & fight_remains < 7",
["name"] = "windscar_whetstone",
["action"] = "windscar_whetstone",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "debuff.between_the_eyes.up || trinket.t1.has_stat.any_dps || boss & fight_remains <= 20",
["slots"] = "trinket1",
["action"] = "trinket1",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "debuff.between_the_eyes.up || trinket.t2.has_stat.any_dps || boss & fight_remains <= 20",
["slots"] = "trinket2",
["action"] = "trinket2",
}, -- [22]
},
["stealth_cds"] = {
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "time > 10 & ( talent.hidden_opportunity.enabled || ! talent.shadow_dance.enabled || ! cooldown.shadow_dance.ready )",
["var_name"] = "vanish_condition",
["description"] = "Stealth Cooldowns",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! talent.shadow_dance.enabled & talent.fan_the_hammer.rank + talent.quick_draw.enabled + talent.audacity.enabled < talent.count_the_odds.enabled + talent.keep_it_rolling.enabled",
["var_name"] = "vanish_opportunity_condition",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "talent.find_weakness.enabled & ! talent.audacity.enabled & debuff.find_weakness.down & variable.ambush_condition & variable.vanish_condition",
["action"] = "vanish",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "talent.hidden_opportunity.enabled & ! buff.audacity.up & ( variable.vanish_opportunity_condition || buff.opportunity.stack < buff.opportunity.max_stack ) & variable.ambush_condition & variable.vanish_condition",
["action"] = "vanish",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "( ! talent.find_weakness.enabled || talent.audacity.enabled ) & ! talent.hidden_opportunity.enabled & variable.finish_condition & variable.vanish_condition",
["action"] = "vanish",
}, -- [5]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.shadow_dance.enabled & debuff.between_the_eyes.up & ( ! talent.ghostly_strike.enabled || debuff.ghostly_strike.up ) & ( ! talent.dreadblades.enabled || ! cooldown.dreadblades.ready ) & ( ! talent.hidden_opportunity.enabled || ! buff.audacity.up & ( talent.fan_the_hammer.rank < 2 || ! buff.opportunity.up ) )",
["var_name"] = "shadow_dance_condition",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "! talent.keep_it_rolling.enabled & variable.shadow_dance_condition & buff.slice_and_dice.up & ( variable.finish_condition || talent.hidden_opportunity.enabled ) & ( ! talent.hidden_opportunity.enabled || ! cooldown.vanish.ready )",
["action"] = "shadow_dance",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "talent.keep_it_rolling.enabled & variable.shadow_dance_condition & ( cooldown.keep_it_rolling.remains <= 30 || cooldown.keep_it_rolling.remains > 120 & ( variable.finish_condition || talent.hidden_opportunity.enabled ) )",
["action"] = "shadow_dance",
}, -- [8]
},
["finish"] = {
{
["enabled"] = true,
["description"] = "Finishers BtE to keep the Crit debuff up, if RP is up, or for Greenskins, unless the target is about to die.",
["criteria"] = "target.time_to_die > 3 & ( debuff.between_the_eyes.remains < 4 || talent.greenskins_wickers.enabled & ! buff.greenskins_wickers.up || ! talent.greenskins_wickers.enabled & talent.improved_between_the_eyes.enabled & buff.ruthless_precision.up )",
["action"] = "between_the_eyes",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.slice_and_dice.remains < fight_remains & refreshable & buff.grand_melee.down & ( ! talent.swift_slasher.enabled || combo_points >= cp_max_spend )",
["action"] = "slice_and_dice",
}, -- [2]
{
["action"] = "cold_blood",
["enabled"] = true,
}, -- [3]
{
["action"] = "dispatch",
["enabled"] = true,
}, -- [4]
},
},
["version"] = 20230313,
["warnings"] = "The import for 'stealth' required some automated changes.\nLine 1: Converted 'talent.subterfuge' to 'talent.subterfuge.enabled' (1x).\nLine 1: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 4: Converted 'talent.find_weakness' to 'talent.find_weakness.enabled' (1x).\nLine 4: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'talent.count_the_odds' to 'talent.count_the_odds.enabled' (1x).\nLine 4: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 4: Converted 'talent.fan_the_hammer' to 'talent.fan_the_hammer.enabled' (1x).\nLine 5: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 5: Converted 'talent.keep_it_rolling' to 'talent.keep_it_rolling.enabled' (1x).\nLine 5: Converted 'talent.count_the_odds' to 'talent.count_the_odds.enabled' (1x).\nLine 6: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 6: Converted 'rtb_buffs.will_lose.skull_and_crossbones' to 'rtb_buffs_will_lose_buff.skull_and_crossbones' (1x).\nLine 6: Converted 'rtb_buffs.will_lose.grand_melee' to 'rtb_buffs_will_lose_buff.grand_melee' (1x).\nLine 8: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 8: Converted 'talent.improved_ambush' to 'talent.improved_ambush.enabled' (1x).\nLine 9: Converted 'talent.summarily_dispatched' to 'talent.summarily_dispatched.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 6: Converted 'talent.improved_adrenaline_rush' to 'talent.improved_adrenaline_rush.enabled' (1x).\n\nThe import for 'finish' required some automated changes.\nLine 1: Converted 'talent.greenskins_wickers' to 'talent.greenskins_wickers.enabled' (1x).\nLine 1: Converted 'talent.greenskins_wickers' to 'talent.greenskins_wickers.enabled' (1x).\nLine 1: Converted 'talent.improved_between_the_eyes' to 'talent.improved_between_the_eyes.enabled' (1x).\nLine 2: Converted 'talent.swift_slasher' to 'talent.swift_slasher.enabled' (1x).\n\nThe import for 'cds' required some automated changes.\nLine 1: Converted 'talent.improved_adrenaline_rush' to 'talent.improved_adrenaline_rush.enabled' (1x).\nLine 5: Converted operations in 'variable.blade_flurry_sync&!buff.dreadblades.up&(energy.base_time_to_max>4+stealthed.rogue-spell_targets%3)' to 'variable.blade_flurry_sync&!buff.dreadblades.up&(energy.base_time_to_max>4+stealthed.rogue-spell_targets/3)'.\nLine 6: Converted 'talent.count_the_odds' to 'talent.count_the_odds.enabled' (1x).\nLine 6: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 7: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 7: Converted 'talent.marked_for_death' to 'talent.marked_for_death.enabled' (1x).\nLine 12: Converted 'talent.count_the_odds' to 'talent.count_the_odds.enabled' (1x).\nLine 18: Converted 'talent.ghostly_strike' to 'talent.ghostly_strike.enabled' (1x).\nLine 21: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 22: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\n\nThe import for 'stealth_cds' required some automated changes.\nLine 1: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 1: Converted 'talent.shadow_dance' to 'talent.shadow_dance.enabled' (1x).\nLine 2: Converted 'talent.shadow_dance' to 'talent.shadow_dance.enabled' (1x).\nLine 2: Converted 'talent.quick_draw' to 'talent.quick_draw.enabled' (1x).\nLine 2: Converted 'talent.audacity' to 'talent.audacity.enabled' (1x).\nLine 2: Converted 'talent.count_the_odds' to 'talent.count_the_odds.enabled' (1x).\nLine 2: Converted 'talent.keep_it_rolling' to 'talent.keep_it_rolling.enabled' (1x).\nLine 3: Converted 'talent.find_weakness' to 'talent.find_weakness.enabled' (1x).\nLine 3: Converted 'talent.audacity' to 'talent.audacity.enabled' (1x).\nLine 4: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 5: Converted 'talent.find_weakness' to 'talent.find_weakness.enabled' (1x).\nLine 5: Converted 'talent.audacity' to 'talent.audacity.enabled' (1x).\nLine 5: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 6: Converted 'talent.shadow_dance' to 'talent.shadow_dance.enabled' (1x).\nLine 6: Converted 'talent.ghostly_strike' to 'talent.ghostly_strike.enabled' (1x).\nLine 6: Converted 'talent.dreadblades' to 'talent.dreadblades.enabled' (1x).\nLine 6: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 7: Converted 'talent.keep_it_rolling' to 'talent.keep_it_rolling.enabled' (1x).\nLine 7: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 7: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 8: Converted 'talent.keep_it_rolling' to 'talent.keep_it_rolling.enabled' (1x).\nLine 8: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\n\nThe import for 'build' required some automated changes.\nLine 3: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 3: Converted 'talent.keep_it_rolling' to 'talent.keep_it_rolling.enabled' (1x).\nLine 3: Converted 'talent.find_weakness' to 'talent.find_weakness.enabled' (1x).\nLine 4: Converted 'talent.fan_the_hammer' to 'talent.fan_the_hammer.enabled' (1x).\nLine 4: Converted 'talent.audacity' to 'talent.audacity.enabled' (1x).\nLine 4: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 5: Converted 'talent.fan_the_hammer' to 'talent.fan_the_hammer.enabled' (1x).\nLine 6: Converted 'talent.fan_the_hammer' to 'talent.fan_the_hammer.enabled' (1x).\nLine 7: Converted 'talent.fan_the_hammer' to 'talent.fan_the_hammer.enabled' (1x).\nLine 7: Converted 'talent.quick_draw' to 'talent.quick_draw.enabled' (1x).\nLine 7: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 9: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 9: Converted 'talent.find_weakness' to 'talent.find_weakness.enabled' (1x).\nLine 10: Converted 'talent.fan_the_hammer' to 'talent.fan_the_hammer.enabled' (1x).\nLine 10: Converted 'talent.weaponmaster' to 'talent.weaponmaster.enabled' (1x).\n\nImported 7 action lists.\n",
["spec"] = 260,
["profile"] = "actions.precombat+=/apply_poison\nactions.precombat+=/bottled_flayedwing_toxin\nactions.precombat+=/use_item,name=algethar_puzzle_box\nactions.precombat+=/stealth\nactions.precombat+=/marked_for_death,precombat_seconds=10,if=raid_event.adds.in>25\nactions.precombat+=/adrenaline_rush,precombat_seconds=3,if=talent.improved_adrenaline_rush||settings.use_ld_opener&cooldown.roll_the_bones.remains<1&(buff.roll_the_bones.remains<3||rtb_buffs.normal=0)\nactions.precombat+=/roll_the_bones,precombat_seconds=2,if=remains<3||rtb_buffs.normal=0\nactions.precombat+=/slice_and_dice,precombat_seconds=1,if=refreshable&buff.grand_melee.down&!settings.use_ld_opener\n\n# Restealth if possible (no vulnerable enemies in combat)\nactions+=/stealth\n# Interrupt on cooldown to allow simming interactions with that\nactions+=/kick\n# Checks if we are in an appropriate Stealth state for triggering the Count the Odds bonus\nactions+=/variable,name=stealthed_cto,value=talent.count_the_odds&(stealthed.basic||buff.shadowmeld.up||buff.shadow_dance.up)\n# Roll the Bones Reroll Conditions\nactions+=/variable,name=rtb_reroll,if=!talent.hidden_opportunity,value=rtb_buffs<2&(!buff.broadside.up&(!talent.fan_the_hammer||!buff.skull_and_crossbones.up)&!buff.true_bearing.up||buff.loaded_dice.up)||rtb_buffs=2&(buff.buried_treasure.up&buff.grand_melee.up||!buff.broadside.up&!buff.true_bearing.up&buff.loaded_dice.up)\n# Additional Reroll Conditions for Keep it Rolling or Count the Odds\nactions+=/variable,name=rtb_reroll,if=!talent.hidden_opportunity&(talent.keep_it_rolling||talent.count_the_odds),value=variable.rtb_reroll||((rtb_buffs.normal=0&rtb_buffs.longer>=1)&!(buff.broadside.up&buff.true_bearing.up&buff.skull_and_crossbones.up)&!(buff.broadside.remains>39||buff.true_bearing.remains>39||buff.ruthless_precision.remains>39||buff.skull_and_crossbones.remains>39))\n# With Hidden Opportunity, prioritize rerolling for Skull and Crossbones over everything else\nactions+=/variable,name=rtb_reroll,if=talent.hidden_opportunity,value=!rtb_buffs.will_lose.skull_and_crossbones&(rtb_buffs.will_lose-rtb_buffs.will_lose.grand_melee)<2&buff.shadow_dance.down&buff.subterfuge.down\n# Avoid rerolls when we will not have time remaining on the fight or add wave to recoup the opportunity cost of the global\nactions+=/variable,name=rtb_reroll,op=reset,if=!(raid_event.adds.remains>12||raid_event.adds.up&(raid_event.adds.in-raid_event.adds.remains)<6||target.time_to_die>12)||boss&fight_remains<12\n# Ensure we want to cast Ambush prior to triggering a Stealth cooldown\nactions+=/variable,name=ambush_condition,value=(talent.hidden_opportunity||combo_points.deficit>=2+talent.improved_ambush+buff.broadside.up||buff.vicious_followup.up||settings.ambush_anyway)&energy>=50\n# Finish at 6 (5 with Summarily Dispatched talented) CP or CP Max-1, whichever is greater of the two\nactions+=/variable,name=finish_condition,value=combo_points>=((cp_max_spend-1)<?(6-talent.summarily_dispatched))||effective_combo_points>=cp_max_spend\n# With multiple targets, this variable is checked to decide whether some CDs should be synced with Blade Flurry\nactions+=/variable,name=blade_flurry_sync,value=spell_targets.blade_flurry<2&raid_event.adds.in>20||buff.blade_flurry.remains>1+talent.killing_spree.enabled\n# Higher priority Stealth list for Count the Odds or true Stealth/Vanish that will break in a single global\nactions+=/call_action_list,name=stealth,if=stealthed.basic||buff.shadowmeld.up\nactions+=/call_action_list,name=cds\n# Lower priority Stealth list for Shadow Dance\nactions+=/call_action_list,name=stealth,if=variable.stealthed_cto\nactions+=/run_action_list,name=finish,if=variable.finish_condition\nactions+=/call_action_list,name=build\nactions+=/arcane_torrent,if=energy.base_deficit>=15+energy.regen\nactions+=/arcane_pulse\nactions+=/lights_judgment\nactions+=/bag_of_tricks\n\n# Builders\nactions.build+=/sepsis,cycle_targets=1,if=target.time_to_die>11&debuff.between_the_eyes.up||boss&fight_remains<11\nactions.build+=/ghostly_strike,if=debuff.ghostly_strike.remains<=3&(spell_targets.blade_flurry<=2||buff.dreadblades.up)&!buff.subterfuge.up&target.time_to_die>=5\n# High priority Ambush line to apply Find Weakness or consume Audacity/Sepsis buff before Pistol Shot\nactions.build+=/ambush,if=settings.ambush_anyway||(talent.hidden_opportunity||talent.keep_it_rolling)&(buff.audacity.up||buff.sepsis_buff.up||buff.subterfuge.up&cooldown.keep_it_rolling.ready)||talent.find_weakness&debuff.find_weakness.down\n# With Audacity + Hidden Opportunity + Fan the Hammer, use Pistol Shot to proc Audacity any time Ambush is not available\nactions.build+=/pistol_shot,if=talent.fan_the_hammer&talent.audacity&talent.hidden_opportunity&buff.opportunity.up&!buff.audacity.up&!buff.subterfuge.up&!buff.shadow_dance.up\n# Use Greenskins Wickers buff immediately with Opportunity unless running Fan the Hammer\nactions.build+=/pistol_shot,if=buff.greenskins_wickers.up&(!talent.fan_the_hammer&buff.opportunity.up||buff.greenskins_wickers.remains<1.5)\n# With Fan the Hammer, consume Opportunity at max stacks or if we will get max 4+ CP and Dreadblades is not up\nactions.build+=/pistol_shot,if=talent.fan_the_hammer&buff.opportunity.up&(buff.opportunity.stack>=buff.opportunity.max_stack||buff.opportunity.remains<2)\nactions.build+=/pistol_shot,if=talent.fan_the_hammer&buff.opportunity.up&combo_points.deficit>((1+talent.quick_draw)*talent.fan_the_hammer.rank)&!buff.dreadblades.up&(!talent.hidden_opportunity||!buff.subterfuge.up&!buff.shadow_dance.up)\nactions.build+=/echoing_reprimand,if=!buff.dreadblades.up\n## actions.build+=/pool_resource,for_next=1\nactions.build+=/ambush,if=settings.ambush_anyway||talent.hidden_opportunity||talent.find_weakness&debuff.find_weakness.down\n# Use Pistol Shot with Opportunity if Combat Potency won't overcap energy, when it will exactly cap CP, or when using Quick Draw\nactions.build+=/pistol_shot,if=!talent.fan_the_hammer&buff.opportunity.up&(energy.base_deficit>energy.regen*1.5||!talent.weaponmaster&combo_points.deficit<=1+buff.broadside.up||talent.quick_draw.enabled||talent.audacity.enabled&!buff.audacity.up)\nactions.build+=/sinister_strike\n\n# Cooldowns\nactions.cds+=/adrenaline_rush,if=!buff.adrenaline_rush.up&(!talent.improved_adrenaline_rush||combo_points<=2)\nactions.cds+=/blade_flurry,if=spell_targets>=2&buff.blade_flurry.remains<gcd\nactions.cds+=/roll_the_bones,if=buff.dreadblades.down&(rtb_buffs.total=0||variable.rtb_reroll)\nactions.cds+=/keep_it_rolling,if=!variable.rtb_reroll&(buff.broadside.up+buff.true_bearing.up+buff.skull_and_crossbones.up+buff.ruthless_precision.up)>2&(buff.shadow_dance.down||rtb_buffs>=6)\nactions.cds+=/blade_rush,if=variable.blade_flurry_sync&!buff.dreadblades.up&(energy.base_time_to_max>4+stealthed.rogue-spell_targets%3)\nactions.cds+=/call_action_list,name=stealth_cds,if=!stealthed.all||talent.count_the_odds&!talent.hidden_opportunity&!variable.stealthed_cto\nactions.cds+=/dreadblades,if=!(variable.stealthed_cto||stealthed.basic||talent.hidden_opportunity&stealthed.rogue)&combo_points<=2&(!talent.marked_for_death||!cooldown.marked_for_death.ready)&target.time_to_die>=10\n# If adds are up, snipe the one with lowest TTD. Use when dying faster than CP deficit or without any CP.\nactions.cds+=/marked_for_death,line_cd=1.5,cycle_targets=1,if=raid_event.adds.up&(target.time_to_die<combo_points.deficit||combo_points.deficit>=cp_max_spend-1)&!buff.dreadblades.up\n# If no adds will die within the next 30s, use MfD on boss without any CP.\nactions.cds+=/marked_for_death,if=raid_event.adds.in>30-raid_event.adds.duration&combo_points.deficit>=cp_max_spend-1&!buff.dreadblades.up\nactions.cds+=/thistle_tea,if=!buff.thistle_tea.up&(energy.base_deficit>=100||boss&fight_remains<charges*6)\nactions.cds+=/killing_spree,if=variable.blade_flurry_sync&!stealthed.rogue&debuff.between_the_eyes.up&energy.base_time_to_max>4\nactions.cds+=/shadowmeld,if=!stealthed.all&(talent.count_the_odds&variable.finish_condition||!talent.weaponmaster.enabled&variable.ambush_condition)\nactions.cds+=/potion,if=buff.bloodlust.react||boss&fight_remains<30||buff.adrenaline_rush.up\nactions.cds+=/blood_fury\nactions.cds+=/berserking\nactions.cds+=/fireblood\nactions.cds+=/ancestral_call\n# Default conditions for usable items.\nactions.cds+=/use_item,name=manic_grieftorch,use_off_gcd=1,if=!stealthed.all&debuff.between_the_eyes.up&(!talent.ghostly_strike||debuff.ghostly_strike.up||spell_targets.blade_flurry>2)||boss&fight_remains<=5\nactions.cds+=/use_item,name=stormeaters_boon,if=spell_targets.blade_flurry>desired_targets||raid_event.adds.in>60||boss&fight_remains<10\nactions.cds+=/use_item,name=windscar_whetstone,if=spell_targets.blade_flurry>desired_targets||raid_event.adds.in>60||boss&fight_remains<7\nactions.cds+=/use_items,slots=trinket1,if=debuff.between_the_eyes.up||trinket.1.has_stat.any_dps||boss&fight_remains<=20\nactions.cds+=/use_items,slots=trinket2,if=debuff.between_the_eyes.up||trinket.2.has_stat.any_dps||boss&fight_remains<=20\n\n# Stealth Cooldowns\nactions.stealth_cds+=/variable,name=vanish_condition,value=time>10&(talent.hidden_opportunity||!talent.shadow_dance||!cooldown.shadow_dance.ready)\nactions.stealth_cds+=/variable,name=vanish_opportunity_condition,value=!talent.shadow_dance&talent.fan_the_hammer.rank+talent.quick_draw+talent.audacity<talent.count_the_odds+talent.keep_it_rolling\nactions.stealth_cds+=/vanish,if=talent.find_weakness&!talent.audacity&debuff.find_weakness.down&variable.ambush_condition&variable.vanish_condition\nactions.stealth_cds+=/vanish,if=talent.hidden_opportunity&!buff.audacity.up&(variable.vanish_opportunity_condition||buff.opportunity.stack<buff.opportunity.max_stack)&variable.ambush_condition&variable.vanish_condition\nactions.stealth_cds+=/vanish,if=(!talent.find_weakness||talent.audacity)&!talent.hidden_opportunity&variable.finish_condition&variable.vanish_condition\nactions.stealth_cds+=/variable,name=shadow_dance_condition,value=talent.shadow_dance&debuff.between_the_eyes.up&(!talent.ghostly_strike||debuff.ghostly_strike.up)&(!talent.dreadblades||!cooldown.dreadblades.ready)&(!talent.hidden_opportunity||!buff.audacity.up&(talent.fan_the_hammer.rank<2||!buff.opportunity.up))\nactions.stealth_cds+=/shadow_dance,if=!talent.keep_it_rolling&variable.shadow_dance_condition&buff.slice_and_dice.up&(variable.finish_condition||talent.hidden_opportunity)&(!talent.hidden_opportunity||!cooldown.vanish.ready)\nactions.stealth_cds+=/shadow_dance,if=talent.keep_it_rolling&variable.shadow_dance_condition&(cooldown.keep_it_rolling.remains<=30||cooldown.keep_it_rolling.remains>120&(variable.finish_condition||talent.hidden_opportunity))\n\n# Finishers BtE to keep the Crit debuff up, if RP is up, or for Greenskins, unless the target is about to die.\nactions.finish+=/between_the_eyes,if=target.time_to_die>3&(debuff.between_the_eyes.remains<4||talent.greenskins_wickers&!buff.greenskins_wickers.up||!talent.greenskins_wickers&talent.improved_between_the_eyes&buff.ruthless_precision.up)\nactions.finish+=/slice_and_dice,if=buff.slice_and_dice.remains<fight_remains&refreshable&buff.grand_melee.down&(!talent.swift_slasher||combo_points>=cp_max_spend)\nactions.finish+=/cold_blood\nactions.finish+=/dispatch\n\n# Stealth\nactions.stealth+=/blade_flurry,if=talent.subterfuge&talent.hidden_opportunity&spell_targets>=2&!buff.blade_flurry.up\nactions.stealth+=/cold_blood,if=variable.finish_condition\nactions.stealth+=/dispatch,if=variable.finish_condition\nactions.stealth+=/ambush,if=variable.stealthed_cto||stealthed.basic&(settings.ambush_anyway||talent.find_weakness&!debuff.find_weakness.up||talent.hidden_opportunity)",
},
["Devastation"] = {
["source"] = "https://github.com/simulationcraft/simc/blob/dragonflight/engine/class_modules/apl/apl_evoker.cpp",
["builtIn"] = true,
["date"] = 20230308,
["spec"] = 1467,
["desc"] = "2023-02-14: Added Dragonrage Animosity Padding (dr_padding) setting.\n\n2023-03-08: Routine update from SimulationCraft refining Pyre usage at different target counts and stacks of Charged Blast.",
["lists"] = {
["es"] = {
{
["enabled"] = true,
["action"] = "eternity_surge",
["empower_to"] = 1,
["description"] = "Eternity Surge, use rank most applicable to targets.",
["criteria"] = "spell_targets.pyre <= 1 + talent.eternitys_span.enabled || buff.dragonrage.remains < dr_padding + 1.75 * spell_haste & buff.dragonrage.remains >= 1 * spell_haste",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "spell_targets.pyre <= 2 + 2 * talent.eternitys_span.enabled || buff.dragonrage.remains < dr_padding + 2.5 * spell_haste & buff.dragonrage.remains >= 1.75 * spell_haste",
["action"] = "eternity_surge",
["empower_to"] = 2,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "spell_targets.pyre <= 3 + 3 * talent.eternitys_span.enabled || ! talent.font_of_magic.enabled || buff.dragonrage.remains <= dr_padding + 3.25 * spell_haste & buff.dragonrage.remains >= 2.5 * spell_haste",
["action"] = "eternity_surge",
["empower_to"] = 3,
}, -- [3]
{
["enabled"] = true,
["action"] = "eternity_surge",
["empower_to"] = 4,
}, -- [4]
},
["default"] = {
{
["action"] = "quell",
["enabled"] = true,
}, -- [1]
{
["action"] = "unravel",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.dragonrage.up || boss & fight_remains < 35",
["action"] = "potion",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "cooldown.dragonrage.remains",
["var_name"] = "next_dragonrage",
["description"] = "Variable that evaluates when next dragonrage is by working out the maximum between the dragonrage cd and your empowers, ignoring CDR effect estimates.",
}, -- [4]
{
["enabled"] = true,
["op"] = "max",
["action"] = "variable",
["value"] = "cooldown.eternity_surge.remains - 2 * gcd.max",
["var_name"] = "next_dragonrage",
}, -- [5]
{
["enabled"] = true,
["op"] = "max",
["action"] = "variable",
["value"] = "cooldown.fire_breath.remains - gcd.max",
["var_name"] = "next_dragonrage",
}, -- [6]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "1.3 * spell_haste",
["var_name"] = "r1_cast_time",
["description"] = "Rank 1 empower spell cast time TODO: multiplier should be 1.0 but 1.3 results in more dps for EBF builds",
}, -- [7]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "trinkets",
}, -- [8]
{
["enabled"] = true,
["action"] = "run_action_list",
["strict"] = 1,
["criteria"] = "spell_targets.pyre >= 3",
["list_name"] = "aoe",
}, -- [9]
{
["enabled"] = true,
["action"] = "run_action_list",
["strict"] = 1,
["criteria"] = "spell_targets.pyre < 3",
["list_name"] = "st",
}, -- [10]
},
["precombat"] = {
{
["action"] = "blessing_of_the_bronze",
["enabled"] = true,
}, -- [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",
["var_name"] = "trinket_1_buffs",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff",
["var_name"] = "trinket_2_buffs",
}, -- [3]
{
["enabled"] = true,
["op"] = "setif",
["description"] = "Decide which trinket to pair with Dragonrage, prefer 2 minute and 1 minute trinkets",
["value"] = "1",
["var_name"] = "trinket_1_sync",
["action"] = "variable",
["value_else"] = "0.5",
["criteria"] = "variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % cooldown.dragonrage.duration = 0 || cooldown.dragonrage.duration % trinket.t1.cooldown.duration = 0 )",
}, -- [4]
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "trinket_2_sync",
["value"] = "1",
["value_else"] = "0.5",
["criteria"] = "variable.trinket_2_buffs & ( trinket.t2.cooldown.duration % cooldown.dragonrage.duration = 0 || cooldown.dragonrage.duration % trinket.t2.cooldown.duration = 0 )",
}, -- [5]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t1.is.spoils_of_neltharus",
["var_name"] = "trinket_1_manual",
["description"] = "Estimates a trinkets value by comparing the cooldown of the trinket, divided by the duration of the buff it provides. Has a intellect modifier (currently 1.5x) to give a higher priority to intellect trinkets. The intellect modifier should be changed as intellect priority increases or decreases. As well as a modifier for if a trinket will or will not sync with cooldowns.",
}, -- [6]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t2.is.spoils_of_neltharus",
["var_name"] = "trinket_2_manual",
}, -- [7]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t1.is.ruby_whelp_shell || trinket.t1.is.whispering_incarnate_icon",
["var_name"] = "trinket_1_exclude",
}, -- [8]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t2.is.ruby_whelp_shell || trinket.t2.is.whispering_incarnate_icon",
["var_name"] = "trinket_2_exclude",
}, -- [9]
{
["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 ) )",
}, -- [10]
{
["enabled"] = true,
["name"] = "shadowed_orb_of_torment",
["action"] = "shadowed_orb_of_torment",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "talent.firestorm.enabled",
["action"] = "firestorm",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "! talent.firestorm.enabled",
["action"] = "living_flame",
}, -- [13]
},
["aoe"] = {
{
["enabled"] = true,
["description"] = "AOE action list, also a mess.",
["criteria"] = "cooldown.fire_breath.remains <= gcd.max & cooldown.eternity_surge.remains < 3 * gcd.max",
["action"] = "dragonrage",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.dragonrage.up & ( spell_targets.pyre <= 6 || ! cooldown.fire_breath.up )",
["action"] = "tip_the_scales",
}, -- [2]
{
["enabled"] = true,
["action"] = "call_action_list",
["criteria"] = "buff.dragonrage.up || ! talent.dragonrage.enabled || cooldown.dragonrage.remains > 10 & talent.everburning_flame.enabled",
["list_name"] = "fb",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "cooldown.dragonrage.remains > 10 & spell_targets.pyre >= 7",
["action"] = "fire_breath",
["empower_to"] = 1,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "cooldown.dragonrage.remains > 10 & spell_targets.pyre >= 6",
["action"] = "fire_breath",
["empower_to"] = 2,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "cooldown.dragonrage.remains > 10 & spell_targets.pyre >= 4",
["action"] = "fire_breath",
["empower_to"] = 3,
}, -- [6]
{
["enabled"] = true,
["criteria"] = "cooldown.dragonrage.remains > 10 || empowering.fire_breath",
["action"] = "fire_breath",
["empower_to"] = 2,
}, -- [7]
{
["enabled"] = true,
["action"] = "call_action_list",
["criteria"] = "buff.dragonrage.up || ! talent.dragonrage.enabled || cooldown.dragonrage.remains > 15 || empowering.eternity_surge",
["list_name"] = "es",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "buff.dragonrage.up & buff.dragonrage.remains < ( buff.essence_burst.max_stack - buff.essence_burst.stack ) * gcd.max",
["action"] = "azure_strike",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "! buff.dragonrage.up",
["action"] = "deep_breath",
}, -- [10]
{
["action"] = "firestorm",
["enabled"] = true,
}, -- [11]
{
["action"] = "shattering_star",
["enabled"] = true,
}, -- [12]
{
["enabled"] = true,
["criteria"] = "cooldown.dragonrage.remains < gcd.max * 6 & cooldown.fire_breath.remains < 6 * gcd.max & cooldown.eternity_surge.remains < 6 * gcd.max",
["action"] = "azure_strike",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "talent.volatility.enabled & buff.charged_blast.stack >= 10",
["action"] = "pyre",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "talent.volatility.enabled & spell_targets.pyre >= 4",
["action"] = "pyre",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "buff.burnout.up & buff.leaping_flames.up & ! buff.essence_burst.up",
["action"] = "living_flame",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "cooldown.dragonrage.remains >= 10 & spell_targets.pyre >= 6",
["action"] = "pyre",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "cooldown.dragonrage.remains >= 10 & spell_targets.pyre >= 5 & buff.charged_blast.stack >= 3",
["action"] = "pyre",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "cooldown.dragonrage.remains >= 10 & spell_targets.pyre >= 4 & buff.charged_blast.stack >= 12",
["action"] = "pyre",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "cooldown.dragonrage.remains >= 10 & spell_targets.pyre = 3 & buff.charged_blast.stack >= 16",
["action"] = "pyre",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "! talent.shattering_star.enabled || cooldown.shattering_star.remains > 5 || essence > essence.max - 1 || buff.essence_burst.stack = buff.essence_burst.max_stack",
["chain"] = "1",
["action"] = "disintegrate",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "talent.snapfire.enabled & buff.burnout.up",
["action"] = "living_flame",
}, -- [22]
{
["action"] = "azure_strike",
["enabled"] = true,
}, -- [23]
},
["trinkets"] = {
{
["enabled"] = true,
["name"] = "spoils_of_neltharus",
["action"] = "spoils_of_neltharus",
["criteria"] = "buff.dragonrage.up & ( buff.spoils_of_neltharus_mastery.up || buff.spoils_of_neltharus_haste.up || buff.dragonrage.remains + 6 * ( ( cooldown.eternity_surge.remains <= gcd.max * 2 ) + ( cooldown.fire_breath.remains <= gcd.max * 2 ) ) <= 18 ) || boss & fight_remains <= 20",
["description"] = "Try and get spoils to prvide haste or mastery stats, but if dragonrage gets too short just use it anyway.",
}, -- [1]
{
["enabled"] = true,
["action"] = "trinket1",
["slot"] = "trinket1",
["description"] = "The trinket with the highest estimated value, will be used first and paired with Dragonrage.",
["criteria"] = "buff.dragonrage.up & ( ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 || variable.trinket_2_exclude ) & ! variable.trinket_1_manual || trinket.t1.buff_duration >= fight_remains || trinket.t1.cooldown.duration <= 60 & ( variable.next_dragonrage > 20 || ! talent.dragonrage.enabled ) & ( ! buff.dragonrage.up || variable.trinket_priority = 1 )",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.dragonrage.up & ( ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 || variable.trinket_1_exclude ) & ! variable.trinket_2_manual || trinket.t2.buff_duration >= fight_remains || trinket.t2.cooldown.duration <= 60 & ( variable.next_dragonrage > 20 || ! talent.dragonrage.enabled ) & ( ! buff.dragonrage.up || variable.trinket_priority = 2 )",
["action"] = "trinket2",
["slot"] = "trinket2",
}, -- [3]
{
["enabled"] = true,
["action"] = "trinket1",
["slot"] = "trinket1",
["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 & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) & ( variable.next_dragonrage > 20 || ! talent.dragonrage.enabled ) & ! variable.trinket_1_manual",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) & ( variable.next_dragonrage > 20 || ! talent.dragonrage.enabled ) & ! variable.trinket_2_manual",
["action"] = "trinket2",
["slot"] = "trinket2",
}, -- [5]
},
["st"] = {
{
["enabled"] = true,
["name"] = "kharnalex_the_first_light",
["action"] = "kharnalex_the_first_light",
["criteria"] = "! buff.dragonrage.up & debuff.shattering_star_debuff.down",
["description"] = "ST Action List, it's a mess",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "cooldown.fire_breath.remains < gcd.max & cooldown.eternity_surge.remains < 2 * gcd.max || boss & fight_remains < 30",
["action"] = "dragonrage",
}, -- [2]
{
["enabled"] = true,
["description"] = "Use to extend DR when an empower cast won't fit inside the DR window anymore. When running FTF use on ES at the start of DR to maximize uses",
["criteria"] = "buff.dragonrage.up & ( buff.dragonrage.remains < variable.r1_cast_time & ( buff.dragonrage.remains > cooldown.fire_breath.remains || buff.dragonrage.remains > cooldown.eternity_surge.remains ) || talent.feed_the_flames.enabled & ! cooldown.fire_breath.up )",
["action"] = "tip_the_scales",
}, -- [3]
{
["enabled"] = true,
["action"] = "call_action_list",
["criteria"] = "! talent.dragonrage.enabled || variable.next_dragonrage > 15 || ! talent.animosity.enabled || empowering.fire_breath",
["list_name"] = "fb",
}, -- [4]
{
["enabled"] = true,
["action"] = "call_action_list",
["criteria"] = "! talent.dragonrage.enabled || variable.next_dragonrage > 15 || ! talent.animosity.enabled || empowering.eternity_surge",
["list_name"] = "es",
}, -- [5]
{
["enabled"] = true,
["action"] = "wait",
["sec"] = "cooldown.fire_breath.remains",
["criteria"] = "talent.animosity.enabled & buff.dragonrage.up & buff.dragonrage.remains < gcd.max + variable.r1_cast_time * buff.tip_the_scales.down & buff.dragonrage.remains - cooldown.fire_breath.remains >= variable.r1_cast_time * buff.tip_the_scales.down",
["description"] = "Wait for FB/ES to be ready if spending another GCD would result in the cast no longer fitting inside of DR",
}, -- [6]
{
["enabled"] = true,
["sec"] = "cooldown.eternity_surge.remains",
["action"] = "wait",
["criteria"] = "talent.animosity.enabled & buff.dragonrage.up & buff.dragonrage.remains < gcd.max + variable.r1_cast_time & buff.dragonrage.remains - cooldown.eternity_surge.remains > variable.r1_cast_time * buff.tip_the_scales.down",
}, -- [7]
{
["enabled"] = true,
["description"] = "Wait for 2 EBs to use SS while inside DR, otherwise use on CD",
["criteria"] = "! buff.dragonrage.up || buff.essence_burst.stack = buff.essence_burst.max_stack || talent.eye_of_infinity.enabled",
["action"] = "shattering_star",
}, -- [8]
{
["enabled"] = true,
["description"] = "Spend the last 1 or 2 GCDs of DR on fillers to exit with 2 EBs",
["criteria"] = "buff.dragonrage.up & buff.dragonrage.remains < ( buff.essence_burst.max_stack - buff.essence_burst.stack ) * gcd.max & buff.burnout.up",
["action"] = "living_flame",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "buff.dragonrage.up & buff.dragonrage.remains < ( buff.essence_burst.max_stack - buff.essence_burst.stack ) * gcd.max",
["action"] = "azure_strike",
}, -- [10]
{
["enabled"] = true,
["description"] = "Hard cast only outside of SS and DR windows, always spend snapfire procs",
["criteria"] = "! buff.dragonrage.up & debuff.shattering_star_debuff.down || buff.snapfire.up",
["action"] = "firestorm",
}, -- [11]
{
["enabled"] = true,
["description"] = "Spend burnout procs without overcapping resources",
["criteria"] = "buff.burnout.up & buff.essence_burst.stack < buff.essence_burst.max_stack & essence < essence.max - 1",
["action"] = "living_flame",
}, -- [12]
{
["enabled"] = true,
["description"] = "Ensure we clip Disintegrate inside DR even with our fillers, Pool 1-2 GCDs before SS is up inside DR",
["criteria"] = "buff.dragonrage.up & ( essence < 3 & ! buff.essence_burst.up || ( talent.shattering_star.enabled & cooldown.shattering_star.remains <= ( buff.essence_burst.max_stack - buff.essence_burst.stack ) * gcd.max ) )",
["action"] = "azure_strike",
}, -- [13]
{
["enabled"] = true,
["chain"] = "1",
["action"] = "disintegrate",
["interrupt_if"] = "buff.dragonrage.up&ticks>=2&(evoker.use_clipping||cooldown.fire_breath.up||cooldown.eternity_surge.up)",
["early_chain_if"] = "evoker.use_early_chaining&buff.dragonrage.up&ticks>=2",
["criteria"] = "buff.dragonrage.up || ( ! talent.shattering_star.enabled || cooldown.shattering_star.remains > 6 || essence > essence.max - 1 || buff.essence_burst.stack = buff.essence_burst.max_stack )",
["description"] = "In DR chain/clip after the 3rd damage tick, Outside of DR pool 6 seconds before SS unless it would result in overcapping resources TODO: revisit pooling conditions",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "! buff.dragonrage.up & spell_targets.deep_breath > 1",
["action"] = "deep_breath",
}, -- [15]
{
["action"] = "living_flame",
["enabled"] = true,
}, -- [16]
},
["fb"] = {
{
["enabled"] = true,
["action"] = "fire_breath",
["empower_to"] = 1,
["description"] = "Use Firebreath with some really weird criteria. Override it for st because its not actually useful? Idk. TODO: Someone look at this it's a mess.",
["criteria"] = "( 20 + 2 * talent.blast_furnace.rank ) + dot.fire_breath_damage.remains < ( 20 + 2 * talent.blast_furnace.rank ) * 1.3 || buff.dragonrage.remains < dr_padding + 1.75 * spell_haste & buff.dragonrage.remains >= 1 * spell_haste || active_enemies <= 2",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "( 14 + 2 * talent.blast_furnace.rank ) + dot.fire_breath_damage.remains < ( 20 + 2 * talent.blast_furnace.rank ) * 1.3 || buff.dragonrage.remains < dr_padding + 2.5 * spell_haste & buff.dragonrage.remains >= 1.75 * spell_haste",
["action"] = "fire_breath",
["empower_to"] = 2,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "( 8 + 2 * talent.blast_furnace.rank ) + dot.fire_breath_damage.remains < ( 20 + 2 * talent.blast_furnace.rank ) * 1.3 || ! talent.font_of_magic.enabled || buff.dragonrage.remains <= dr_padding + 3.25 * spell_haste & buff.dragonrage.remains >= 2.5 * spell_haste",
["action"] = "fire_breath",
["empower_to"] = 3,
}, -- [3]
{
["enabled"] = true,
["action"] = "fire_breath",
["empower_to"] = 4,
}, -- [4]
},
},
["version"] = 20230308,
["warnings"] = "The import for 'es' required some automated changes.\nLine 1: Converted 'talent.eternitys_span' to 'talent.eternitys_span.enabled' (1x).\nLine 2: Converted 'talent.eternitys_span' to 'talent.eternitys_span.enabled' (1x).\nLine 3: Converted 'talent.eternitys_span' to 'talent.eternitys_span.enabled' (1x).\nLine 3: Converted 'talent.font_of_magic' to 'talent.font_of_magic.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 2: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 2: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 2: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 2: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 2: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 2: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 3: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 3: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 3: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 3: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 3: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.dragonrage.duration=0||cooldown.dragonrage.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.dragonrage.duration=0||cooldown.dragonrage.duration%trinket.t1.cooldown.duration=0)'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.dragonrage.duration=0||cooldown.dragonrage.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.dragonrage.duration=0||cooldown.dragonrage.duration%trinket.t2.cooldown.duration=0)'.\nLine 6: Converted 'trinket.1.is.spoils_of_neltharus' to 'trinket.t1.is.spoils_of_neltharus' (1x).\nLine 7: Converted 'trinket.2.is.spoils_of_neltharus' to 'trinket.t2.is.spoils_of_neltharus' (1x).\nLine 8: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 8: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 9: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 9: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (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.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 10: Converted 'trinket.2.has_buff.intellect' 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.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 10: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 10: 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 12: Converted 'talent.firestorm' to 'talent.firestorm.enabled' (1x).\nLine 13: Converted 'talent.firestorm' to 'talent.firestorm.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 'aoe' required some automated changes.\nLine 3: Converted 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 3: Converted 'talent.everburning_flame' to 'talent.everburning_flame.enabled' (1x).\nLine 8: Converted 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 14: Converted 'talent.volatility' to 'talent.volatility.enabled' (1x).\nLine 15: Converted 'talent.volatility' to 'talent.volatility.enabled' (1x).\nLine 21: Converted 'talent.shattering_star' to 'talent.shattering_star.enabled' (1x).\nLine 22: Converted 'talent.snapfire' to 'talent.snapfire.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\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 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 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 3: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.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 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 'talent.dragonrage' to 'talent.dragonrage.enabled' (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 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 3: Converted 'talent.feed_the_flames' to 'talent.feed_the_flames.enabled' (1x).\nLine 4: Converted 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 4: Converted 'talent.animosity' to 'talent.animosity.enabled' (1x).\nLine 5: Converted 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 5: Converted 'talent.animosity' to 'talent.animosity.enabled' (1x).\nLine 6: Converted 'talent.animosity' to 'talent.animosity.enabled' (1x).\nLine 7: Converted 'talent.animosity' to 'talent.animosity.enabled' (1x).\nLine 8: Converted 'talent.eye_of_infinity' to 'talent.eye_of_infinity.enabled' (1x).\nLine 8: Converted operations in '!buff.dragonrage.up||buff.essence_burst.stack==buff.essence_burst.max_stack||talent.eye_of_infinity.enabled' to '!buff.dragonrage.up||buff.essence_burst.stack=buff.essence_burst.max_stack||talent.eye_of_infinity.enabled'.\nLine 13: Converted 'talent.shattering_star' to 'talent.shattering_star.enabled' (1x).\nLine 14: Converted 'talent.shattering_star' to 'talent.shattering_star.enabled' (1x).\nLine 14: Converted operations in 'buff.dragonrage.up||(!talent.shattering_star.enabled||cooldown.shattering_star.remains>6||essence>essence.max-1||buff.essence_burst.stack==buff.essence_burst.max_stack)' to 'buff.dragonrage.up||(!talent.shattering_star.enabled||cooldown.shattering_star.remains>6||essence>essence.max-1||buff.essence_burst.stack=buff.essence_burst.max_stack)'.\n\nThe import for 'fb' required some automated changes.\nLine 3: Converted 'talent.font_of_magic' to 'talent.font_of_magic.enabled' (1x).\n\nImported 7 action lists.\n",
["author"] = "SimC",
["profile"] = "actions.precombat+=/blessing_of_the_bronze\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_buff.intellect||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.intellect||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit\n# Decide which trinket to pair with Dragonrage, prefer 2 minute and 1 minute trinkets\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.dragonrage.duration=0||cooldown.dragonrage.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.dragonrage.duration=0||cooldown.dragonrage.duration%%trinket.2.cooldown.duration=0)\n# Estimates a trinkets value by comparing the cooldown of the trinket, divided by the duration of the buff it provides. Has a intellect modifier (currently 1.5x) to give a higher priority to intellect trinkets. The intellect modifier should be changed as intellect priority increases or decreases. As well as a modifier for if a trinket will or will not sync with cooldowns.\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.spoils_of_neltharus\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.spoils_of_neltharus\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\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.intellect)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.intellect)*(variable.trinket_1_sync))\nactions.precombat+=/use_item,name=shadowed_orb_of_torment\nactions.precombat+=/firestorm,if=talent.firestorm\nactions.precombat+=/living_flame,if=!talent.firestorm\n\nactions+=/quell\nactions+=/unravel\nactions+=/potion,if=buff.dragonrage.up||boss&fight_remains<35\n# Variable that evaluates when next dragonrage is by working out the maximum between the dragonrage cd and your empowers, ignoring CDR effect estimates.\nactions+=/variable,name=next_dragonrage,value=cooldown.dragonrage.remains\nactions+=/variable,name=next_dragonrage,op=max,value=cooldown.eternity_surge.remains-2*gcd.max\nactions+=/variable,name=next_dragonrage,op=max,value=cooldown.fire_breath.remains-gcd.max\n# Rank 1 empower spell cast time TODO: multiplier should be 1.0 but 1.3 results in more dps for EBF builds\nactions+=/variable,name=r1_cast_time,value=1.3*spell_haste\nactions+=/call_action_list,name=trinkets\nactions+=/run_action_list,name=aoe,strict=1,if=spell_targets.pyre>=3\nactions+=/run_action_list,name=st,strict=1,if=spell_targets.pyre<3\n\n# ST Action List, it's a mess\nactions.st+=/use_item,name=kharnalex_the_first_light,if=!buff.dragonrage.up&debuff.shattering_star_debuff.down\nactions.st+=/dragonrage,if=cooldown.fire_breath.remains<gcd.max&cooldown.eternity_surge.remains<2*gcd.max||boss&fight_remains<30\n# Use to extend DR when an empower cast won't fit inside the DR window anymore. When running FTF use on ES at the start of DR to maximize uses\nactions.st+=/tip_the_scales,if=buff.dragonrage.up&(buff.dragonrage.remains<variable.r1_cast_time&(buff.dragonrage.remains>cooldown.fire_breath.remains||buff.dragonrage.remains>cooldown.eternity_surge.remains)||talent.feed_the_flames&!cooldown.fire_breath.up)\nactions.st+=/call_action_list,name=fb,if=!talent.dragonrage||variable.next_dragonrage>15||!talent.animosity||empowering.fire_breath\nactions.st+=/call_action_list,name=es,if=!talent.dragonrage||variable.next_dragonrage>15||!talent.animosity||empowering.eternity_surge\n# Wait for FB/ES to be ready if spending another GCD would result in the cast no longer fitting inside of DR\nactions.st+=/wait,sec=cooldown.fire_breath.remains,if=talent.animosity&buff.dragonrage.up&buff.dragonrage.remains<gcd.max+variable.r1_cast_time*buff.tip_the_scales.down&buff.dragonrage.remains-cooldown.fire_breath.remains>=variable.r1_cast_time*buff.tip_the_scales.down\nactions.st+=/wait,sec=cooldown.eternity_surge.remains,if=talent.animosity&buff.dragonrage.up&buff.dragonrage.remains<gcd.max+variable.r1_cast_time&buff.dragonrage.remains-cooldown.eternity_surge.remains>variable.r1_cast_time*buff.tip_the_scales.down\n# Wait for 2 EBs to use SS while inside DR, otherwise use on CD\nactions.st+=/shattering_star,if=!buff.dragonrage.up||buff.essence_burst.stack==buff.essence_burst.max_stack||talent.eye_of_infinity\n# Spend the last 1 or 2 GCDs of DR on fillers to exit with 2 EBs\nactions.st+=/living_flame,if=buff.dragonrage.up&buff.dragonrage.remains<(buff.essence_burst.max_stack-buff.essence_burst.stack)*gcd.max&buff.burnout.up\nactions.st+=/azure_strike,if=buff.dragonrage.up&buff.dragonrage.remains<(buff.essence_burst.max_stack-buff.essence_burst.stack)*gcd.max\n# Hard cast only outside of SS and DR windows, always spend snapfire procs\nactions.st+=/firestorm,if=!buff.dragonrage.up&debuff.shattering_star_debuff.down||buff.snapfire.up\n# Spend burnout procs without overcapping resources\nactions.st+=/living_flame,if=buff.burnout.up&buff.essence_burst.stack<buff.essence_burst.max_stack&essence<essence.max-1\n# Ensure we clip Disintegrate inside DR even with our fillers, Pool 1-2 GCDs before SS is up inside DR\nactions.st+=/azure_strike,if=buff.dragonrage.up&(essence<3&!buff.essence_burst.up||(talent.shattering_star&cooldown.shattering_star.remains<=(buff.essence_burst.max_stack-buff.essence_burst.stack)*gcd.max))\n# In DR chain/clip after the 3rd damage tick, Outside of DR pool 6 seconds before SS unless it would result in overcapping resources TODO: revisit pooling conditions\nactions.st+=/disintegrate,chain=1,early_chain_if=evoker.use_early_chaining&buff.dragonrage.up&ticks>=2,interrupt_if=buff.dragonrage.up&ticks>=2&(evoker.use_clipping||cooldown.fire_breath.up||cooldown.eternity_surge.up),if=buff.dragonrage.up||(!talent.shattering_star||cooldown.shattering_star.remains>6||essence>essence.max-1||buff.essence_burst.stack==buff.essence_burst.max_stack)\nactions.st+=/deep_breath,if=!buff.dragonrage.up&spell_targets.deep_breath>1\nactions.st+=/living_flame\n\n# AOE action list, also a mess.\nactions.aoe+=/dragonrage,if=cooldown.fire_breath.remains<=gcd.max&cooldown.eternity_surge.remains<3*gcd.max\nactions.aoe+=/tip_the_scales,if=buff.dragonrage.up&(spell_targets.pyre<=6||!cooldown.fire_breath.up)\nactions.aoe+=/call_action_list,name=fb,if=buff.dragonrage.up||!talent.dragonrage||cooldown.dragonrage.remains>10&talent.everburning_flame\nactions.aoe+=/fire_breath,empower_to=1,if=cooldown.dragonrage.remains>10&spell_targets.pyre>=7\nactions.aoe+=/fire_breath,empower_to=2,if=cooldown.dragonrage.remains>10&spell_targets.pyre>=6\nactions.aoe+=/fire_breath,empower_to=3,if=cooldown.dragonrage.remains>10&spell_targets.pyre>=4\nactions.aoe+=/fire_breath,empower_to=2,if=cooldown.dragonrage.remains>10||empowering.fire_breath\nactions.aoe+=/call_action_list,name=es,if=buff.dragonrage.up||!talent.dragonrage||cooldown.dragonrage.remains>15||empowering.eternity_surge\nactions.aoe+=/azure_strike,if=buff.dragonrage.up&buff.dragonrage.remains<(buff.essence_burst.max_stack-buff.essence_burst.stack)*gcd.max\nactions.aoe+=/deep_breath,if=!buff.dragonrage.up\nactions.aoe+=/firestorm\nactions.aoe+=/shattering_star\nactions.aoe+=/azure_strike,if=cooldown.dragonrage.remains<gcd.max*6&cooldown.fire_breath.remains<6*gcd.max&cooldown.eternity_surge.remains<6*gcd.max\nactions.aoe+=/pyre,if=talent.volatility&buff.charged_blast.stack>=10\nactions.aoe+=/pyre,if=talent.volatility&spell_targets.pyre>=4\nactions.aoe+=/living_flame,if=buff.burnout.up&buff.leaping_flames.up&!buff.essence_burst.up\nactions.aoe+=/pyre,if=cooldown.dragonrage.remains>=10&spell_targets.pyre>=6\nactions.aoe+=/pyre,if=cooldown.dragonrage.remains>=10&spell_targets.pyre>=5&buff.charged_blast.stack>=3\nactions.aoe+=/pyre,if=cooldown.dragonrage.remains>=10&spell_targets.pyre>=4&buff.charged_blast.stack>=12\nactions.aoe+=/pyre,if=cooldown.dragonrage.remains>=10&spell_targets.pyre=3&buff.charged_blast.stack>=16\nactions.aoe+=/disintegrate,chain=1,if=!talent.shattering_star||cooldown.shattering_star.remains>5||essence>essence.max-1||buff.essence_burst.stack=buff.essence_burst.max_stack\nactions.aoe+=/living_flame,if=talent.snapfire&buff.burnout.up\nactions.aoe+=/azure_strike\n\n# Use Firebreath with some really weird criteria. Override it for st because its not actually useful? Idk. TODO: Someone look at this it's a mess.\nactions.fb+=/fire_breath,empower_to=1,if=(20+2*talent.blast_furnace.rank)+dot.fire_breath_damage.remains<(20+2*talent.blast_furnace.rank)*1.3||buff.dragonrage.remains<dr_padding+1.75*spell_haste&buff.dragonrage.remains>=1*spell_haste||active_enemies<=2\nactions.fb+=/fire_breath,empower_to=2,if=(14+2*talent.blast_furnace.rank)+dot.fire_breath_damage.remains<(20+2*talent.blast_furnace.rank)*1.3||buff.dragonrage.remains<dr_padding+2.5*spell_haste&buff.dragonrage.remains>=1.75*spell_haste\nactions.fb+=/fire_breath,empower_to=3,if=(8+2*talent.blast_furnace.rank)+dot.fire_breath_damage.remains<(20+2*talent.blast_furnace.rank)*1.3||!talent.font_of_magic||buff.dragonrage.remains<=dr_padding+3.25*spell_haste&buff.dragonrage.remains>=2.5*spell_haste\nactions.fb+=/fire_breath,empower_to=4\n\n# Eternity Surge, use rank most applicable to targets.\nactions.es+=/eternity_surge,empower_to=1,if=spell_targets.pyre<=1+talent.eternitys_span||buff.dragonrage.remains<dr_padding+1.75*spell_haste&buff.dragonrage.remains>=1*spell_haste\nactions.es+=/eternity_surge,empower_to=2,if=spell_targets.pyre<=2+2*talent.eternitys_span||buff.dragonrage.remains<dr_padding+2.5*spell_haste&buff.dragonrage.remains>=1.75*spell_haste\nactions.es+=/eternity_surge,empower_to=3,if=spell_targets.pyre<=3+3*talent.eternitys_span||!talent.font_of_magic||buff.dragonrage.remains<=dr_padding+3.25*spell_haste&buff.dragonrage.remains>=2.5*spell_haste\nactions.es+=/eternity_surge,empower_to=4\n\n# Try and get spoils to prvide haste or mastery stats, but if dragonrage gets too short just use it anyway.\nactions.trinkets+=/use_item,name=spoils_of_neltharus,if=buff.dragonrage.up&(buff.spoils_of_neltharus_mastery.up||buff.spoils_of_neltharus_haste.up||buff.dragonrage.remains+6*((cooldown.eternity_surge.remains<=gcd.max*2)+(cooldown.fire_breath.remains<=gcd.max*2))<=18)||boss&fight_remains<=20\n# The trinket with the highest estimated value, will be used first and paired with Dragonrage.\nactions.trinkets+=/use_item,slot=trinket1,if=buff.dragonrage.up&(!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1||variable.trinket_2_exclude)&!variable.trinket_1_manual||trinket.1.proc.any_dps.duration>=fight_remains||trinket.1.cooldown.duration<=60&(variable.next_dragonrage>20||!talent.dragonrage)&(!buff.dragonrage.up||variable.trinket_priority=1)\nactions.trinkets+=/use_item,slot=trinket2,if=buff.dragonrage.up&(!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2||variable.trinket_1_exclude)&!variable.trinket_2_manual||trinket.2.proc.any_dps.duration>=fight_remains||trinket.2.cooldown.duration<=60&(variable.next_dragonrage>20||!talent.dragonrage)&(!buff.dragonrage.up||variable.trinket_priority=2)\n# If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.\nactions.trinkets+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs)&(variable.next_dragonrage>20||!talent.dragonrage)&!variable.trinket_1_manual\nactions.trinkets+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs)&(variable.next_dragonrage>20||!talent.dragonrage)&!variable.trinket_2_manual",
},
["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.",
}, -- [1]
{
["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.",
}, -- [2]
{
["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.",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "( buff.bone_shield.remains <= 4 || buff.bone_shield.stack < variable.bone_shield_refresh_value ) & runic_power.deficit > 20",
["action"] = "marrowrend",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "active_enemies = 1 & target.time_to_pct_35 < 5 & target.time_to_die > ( dot.soul_reaper.remains + 5 )",
["action"] = "soul_reaper",
}, -- [5]
{
["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,
}, -- [6]
{
["enabled"] = true,
["criteria"] = "! death_and_decay.ticking & ( talent.sanguine_ground.enabled || talent.unholy_ground.enabled )",
["action"] = "death_and_decay",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "spell_targets.blood_boil > 2 & charges_fractional >= 1.1",
["action"] = "blood_boil",
}, -- [8]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "( 25 + spell_targets.heart_strike * talent.heartbreaker.enabled * 2 )",
["var_name"] = "heart_strike_rp_drw",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "runic_power.deficit <= variable.heart_strike_rp_drw || runic_power >= variable.death_strike_dump_amount",
["action"] = "death_strike",
}, -- [10]
{
["action"] = "consumption",
["enabled"] = true,
}, -- [11]
{
["enabled"] = true,
["criteria"] = "charges_fractional >= 1.1 & buff.hemostasis.stack < 5",
["action"] = "blood_boil",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "rune.time_to_2 < gcd.max || runic_power.deficit >= variable.heart_strike_rp_drw",
["action"] = "heart_strike",
}, -- [13]
},
["default"] = {
{
["enabled"] = true,
["description"] = "Interrupt.",
["action"] = "mind_freeze",
}, -- [1]
{
["enabled"] = true,
["description"] = "Interrupt.",
["action"] = "strangulate",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "65",
["var_name"] = "death_strike_dump_amount",
["description"] = "Death Strike at 65+ Runic Power.",
}, -- [3]
{
["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.",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.dancing_rune_weapon.up",
["action"] = "potion",
["description"] = "Use a Potion during Dancing Rune Weapon.",
}, -- [5]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "Call the trinkets action list.",
["list_name"] = "trinkets",
}, -- [6]
{
["enabled"] = true,
["description"] = "Raise Dead if it's off cooldown.",
["action"] = "raise_dead",
}, -- [7]
{
["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.",
}, -- [8]
{
["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.",
}, -- [9]
{
["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.",
}, -- [10]
{
["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.",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "! buff.bone_shield.up",
["action"] = "deaths_caress",
["description"] = "Use Death's Caress if Bone Shield is not up.",
}, -- [12]
{
["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.",
}, -- [13]
{
["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.",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "! buff.dancing_rune_weapon.up",
["action"] = "blooddrinker",
["description"] = "Use Blooddrinker if Dancing Rune Weapon is not up.",
}, -- [15]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "Call the racials action list.",
["list_name"] = "racials",
}, -- [16]
{
["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.",
}, -- [17]
{
["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",
}, -- [18]
{
["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.",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "talent.tightening_grasp.enabled",
["action"] = "gorefiends_grasp",
["description"] = "Use Gorefiend's Grasp if Tightening Grasp is talented.",
}, -- [20]
{
["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.",
}, -- [21]
{
["enabled"] = true,
["description"] = "Use Abomination's Limb on cooldown.",
["action"] = "abomination_limb",
}, -- [22]
{
["enabled"] = true,
["criteria"] = "! buff.dancing_rune_weapon.up",
["action"] = "dancing_rune_weapon",
["description"] = "Use Dancing Rune Weapon if it is not already active.",
}, -- [23]
{
["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",
}, -- [24]
{
["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",
}, -- [25]
},
["precombat"] = {
{
["action"] = "fleshcraft",
["enabled"] = true,
}, -- [1]
},
["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",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "( 10 + spell_targets.heart_strike * talent.heartbreaker.enabled * 2 )",
["var_name"] = "heart_strike_rp",
}, -- [2]
{
["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",
}, -- [3]
{
["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",
}, -- [4]
{
["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",
}, -- [5]
{
["action"] = "consumption",
["enabled"] = true,
}, -- [6]
{
["enabled"] = true,
["criteria"] = "active_enemies = 1 & target.time_to_pct_35 < 5 & target.time_to_die > ( dot.soul_reaper.remains + 5 )",
["action"] = "soul_reaper",
}, -- [7]
{
["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,
}, -- [8]
{
["enabled"] = true,
["criteria"] = "runic_power >= 100",
["action"] = "bonestorm",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "charges_fractional >= 1.8 & ( buff.hemostasis.stack <= ( 5 - spell_targets.blood_boil ) || spell_targets.blood_boil > 2 )",
["action"] = "blood_boil",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "rune.time_to_4 < gcd.max",
["action"] = "heart_strike",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "charges_fractional >= 1.1",
["action"] = "blood_boil",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "( rune > 1 & ( rune.time_to_3 < gcd.max || buff.bone_shield.stack > 7 ) )",
["action"] = "heart_strike",
}, -- [13]
},
["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",
}, -- [1]
{
["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",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t1.is.ruby_whelp_shell || trinket.t1.is.whispering_incarnate_icon",
["var_name"] = "trinket_1_exclude",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t2.is.ruby_whelp_shell || trinket.t2.is.whispering_incarnate_icon",
["var_name"] = "trinket_2_exclude",
}, -- [4]
{
["enabled"] = true,
["action"] = "trinket1",
["slot"] = "trinket1",
["use_off_gcd"] = 1,
["criteria"] = "! variable.trinket_1_buffs",
}, -- [5]
{
["enabled"] = true,
["action"] = "trinket2",
["slot"] = "trinket2",
["use_off_gcd"] = 1,
["criteria"] = "! variable.trinket_2_buffs",
}, -- [6]
{
["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 )",
}, -- [7]
{
["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 )",
}, -- [8]
{
["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 )",
}, -- [9]
},
["racials"] = {
{
["enabled"] = true,
["criteria"] = "cooldown.dancing_rune_weapon.ready & ( ! cooldown.blooddrinker.ready || ! talent.blooddrinker.enabled )",
["action"] = "blood_fury",
}, -- [1]
{
["action"] = "berserking",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "active_enemies >= 2 || rune < 1 & runic_power.deficit > 60",
["action"] = "arcane_pulse",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.unholy_strength.up",
["action"] = "lights_judgment",
}, -- [4]
{
["action"] = "ancestral_call",
["enabled"] = true,
}, -- [5]
{
["action"] = "fireblood",
["enabled"] = true,
}, -- [6]
{
["action"] = "bag_of_tricks",
["enabled"] = true,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "runic_power.deficit > 20",
["action"] = "arcane_torrent",
}, -- [8]
},
["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.",
}, -- [1]
{
["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).",
}, -- [2]
{
["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",
}, -- [3]
{
["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.",
}, -- [4]
},
},
["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_remains<gcd)\n# Call the covenants action list if they are active and valid.\nactions+=/call_action_list,name=covenants,strict=1,if=!covenant.none\n# 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.\nactions+=/blood_tap,if=(rune<=2&rune.time_to_4>gcd&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.stack<variable.bone_shield_refresh_value)&runic_power.deficit>20\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<gcd||runic_power.deficit>=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.stack<variable.bone_shield_refresh_value+1))&runic_power.deficit>10&!(talent.insatiable_blade&cooldown.dancing_rune_weapon.remains<buff.bone_shield.remains)&!talent.consumption.enabled&!talent.blooddrinker.enabled&rune.time_to_3>gcd\nactions.standard+=/marrowrend,if=(buff.bone_shield.remains<=4||buff.bone_shield.stack<variable.bone_shield_refresh_value)&runic_power.deficit>20&!(talent.insatiable_blade&cooldown.dancing_rune_weapon.remains<buff.bone_shield.remains)\nactions.standard+=/consumption\nactions.standard+=/soul_reaper,if=active_enemies=1&target.time_to_pct_35<5&target.time_to_die>(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<gcd\nactions.standard+=/blood_boil,if=charges_fractional>=1.1\nactions.standard+=/heart_strike,if=(rune>1&(rune.time_to_3<gcd||buff.bone_shield.stack>7))\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)",
},
["Destruction"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230504,
["author"] = "SimC",
["desc"] = "2023-05-04: Channel Demonfire and Immolate conditions updated.\n\n2023-04-11: Update for Tier 30.\n\n2023-04-04: Adjust Incinerate per SimC update.\n\n2023-03-14: Respect cycle_enemies when multidotting Immolate.\n\n2023-03-13: Routine update from SimulationCraft.\n\n2023-02-20: Setting added to Destruction options for Funnel Damage in AOE. This uses the cleave action list instead of the AOE action list. It continues to recommend Chaos Bolt rather than spending Soul Shards on Rain of Fire.",
["lists"] = {
["items"] = {
{
["enabled"] = true,
["criteria"] = "pet.infernal.active || ! talent.summon_infernal.enabled || boss & fight_remains < 21 || trinket.t1.cooldown.duration < cooldown.summon_infernal.remains + 5",
["action"] = "trinket1",
["slot"] = "trinket1",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "pet.infernal.active || ! talent.summon_infernal.enabled || boss & fight_remains < 21 || trinket.t2.cooldown.duration < cooldown.summon_infernal.remains + 5",
["action"] = "trinket2",
["slot"] = "trinket2",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "( ! talent.rain_of_chaos.enabled & fight_remains < cooldown.summon_infernal.remains + trinket.t1.cooldown.duration & fight_remains > trinket.t1.cooldown.duration ) || boss & fight_remains < cooldown.summon_infernal.remains || ( trinket.t2.cooldown.remains > 0 & trinket.t2.cooldown.remains < cooldown.summon_infernal.remains )",
["action"] = "trinket1",
["slot"] = "trinket1",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "( ! talent.rain_of_chaos.enabled & fight_remains < cooldown.summon_infernal.remains + trinket.t2.cooldown.duration & fight_remains > trinket.t2.cooldown.duration ) || boss & fight_remains < cooldown.summon_infernal.remains || ( trinket.t1.cooldown.remains > 0 & trinket.t1.cooldown.remains < cooldown.summon_infernal.remains )",
["action"] = "trinket2",
["slot"] = "trinket2",
}, -- [4]
{
["enabled"] = true,
["action"] = "erupting_spear_fragment",
["criteria"] = "( ! talent.rain_of_chaos.enabled & fight_remains < cooldown.summon_infernal.remains + cooldown.erupting_spear_fragment.duration & fight_remains > cooldown.erupting_spear_fragment.duration ) || boss & fight_remains < cooldown.summon_infernal.remains || cooldown.erupting_spear_fragment.duration < cooldown.summon_infernal.remains + 5",
["name"] = "erupting_spear_fragment",
}, -- [5]
{
["enabled"] = true,
["name"] = "desperate_invokers_codex",
["action"] = "desperate_invokers_codex",
}, -- [6]
{
["enabled"] = true,
["name"] = "iceblood_deathsnare",
["action"] = "iceblood_deathsnare",
}, -- [7]
{
["enabled"] = true,
["name"] = "conjured_chillglobe",
["action"] = "conjured_chillglobe",
}, -- [8]
},
["default"] = {
{
["action"] = "spell_lock",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "items",
}, -- [2]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "ogcd",
}, -- [3]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "! settings.cleave_apl & ( active_enemies >= 3 - ( talent.inferno.enabled & ! talent.madness_of_the_azjaqir.enabled ) ) & ! ( ! talent.inferno.enabled & talent.madness_of_the_azjaqir.enabled & talent.chaos_incarnate.enabled & active_enemies < 4 )",
["list_name"] = "aoe",
}, -- [4]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "settings.cleave_apl & active_enemies > 1",
["list_name"] = "cleave",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "( talent.roaring_blaze.enabled & debuff.conflagrate.remains < 1.5 ) || charges = max_charges",
["action"] = "conflagrate",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "soul_shard < 4.7 & ( charges > 2 || boss & fight_remains < cooldown.dimensional_rift.duration )",
["action"] = "dimensional_rift",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in > 15",
["action"] = "cataclysm",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "talent.raging_demonfire.enabled & ( dot.immolate.remains - 5 * ( action.chaos_bolt.in_flight & talent.internal_combustion.enabled ) ) > cast_time & ( debuff.conflagrate.remains > execute_time || ! talent.roaring_blaze.enabled )",
["action"] = "channel_demonfire",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "soul_shard <= 3.5 & ( debuff.conflagrate.remains > cast_time + travel_time || ! talent.roaring_blaze.enabled & buff.backdraft.up )",
["action"] = "soul_fire",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "( ( ( dot.immolate.remains - 5 * ( action.chaos_bolt.in_flight & talent.internal_combustion.enabled ) ) < dot.immolate.duration * 0.3 ) || dot.immolate.remains < 3 || ( dot.immolate.remains - action.chaos_bolt.execute_time ) < 5 & talent.infernal_combustion.enabled & action.chaos_bolt.usable ) & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.immolate.remains ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + action.soul_fire.cast_time > ( dot.immolate.remains - 5 * talent.internal_combustion.enabled ) ) & target.time_to_die > 8",
["action"] = "immolate",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "talent.cry_havoc.enabled & ( ( buff.ritual_of_ruin.up & pet.infernal.active & talent.burn_to_ashes.enabled ) || ( ( buff.ritual_of_ruin.up || pet.infernal.active ) & ! talent.burn_to_ashes.enabled ) )",
["action"] = "havoc",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "dot.immolate.remains > cast_time & set_bonus.tier30_4pc",
["action"] = "channel_demonfire",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "pet.infernal.active || pet.blasphemy.active || soul_shard >= 4",
["action"] = "chaos_bolt",
}, -- [14]
{
["action"] = "summon_infernal",
["enabled"] = true,
}, -- [15]
{
["enabled"] = true,
["criteria"] = "talent.ruin.rank > 1 & ! ( talent.diabolic_embers.enabled & talent.avatar_of_destruction.enabled & ( talent.burn_to_ashes.enabled || talent.chaos_incarnate.enabled ) ) & dot.immolate.remains > cast_time",
["action"] = "channel_demonfire",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "buff.backdraft.down & soul_shard >= 1.5 & ! talent.roaring_blaze.enabled",
["action"] = "conflagrate",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "cast_time + action.chaos_bolt.cast_time < buff.madness_cb.remains",
["action"] = "incinerate",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "buff.rain_of_chaos.remains > cast_time",
["action"] = "chaos_bolt",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "buff.backdraft.up & ! talent.eradication.enabled & ! talent.madness_of_the_azjaqir.enabled",
["action"] = "chaos_bolt",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "buff.madness_cb.up",
["action"] = "chaos_bolt",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "! ( talent.diabolic_embers.enabled & talent.avatar_of_destruction.enabled & ( talent.burn_to_ashes.enabled || talent.chaos_incarnate.enabled ) ) & dot.immolate.remains > cast_time",
["action"] = "channel_demonfire",
}, -- [22]
{
["action"] = "dimensional_rift",
["enabled"] = true,
}, -- [23]
{
["enabled"] = true,
["criteria"] = "soul_shard > 3.5",
["action"] = "chaos_bolt",
}, -- [24]
{
["enabled"] = true,
["criteria"] = "talent.soul_conduit.enabled & ! talent.madness_of_the_azjaqir.enabled || ! talent.backdraft.enabled",
["action"] = "chaos_bolt",
}, -- [25]
{
["enabled"] = true,
["criteria"] = "boss & fight_remains < 5 & fight_remains > cast_time + travel_time",
["action"] = "chaos_bolt",
}, -- [26]
{
["enabled"] = true,
["criteria"] = "charges > ( max_charges - 1 ) || time_to_die < gcd.max * charges",
["action"] = "conflagrate",
}, -- [27]
{
["action"] = "incinerate",
["enabled"] = true,
}, -- [28]
},
["precombat"] = {
{
["enabled"] = true,
["criteria"] = "time > 0 & ! pet.alive",
["action"] = "fel_domination",
}, -- [1]
{
["action"] = "summon_pet",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["name"] = "tome_of_monstrous_constructions",
["action"] = "tome_of_monstrous_constructions",
}, -- [3]
{
["enabled"] = true,
["name"] = "soleahs_secret_technique",
["action"] = "soleahs_secret_technique",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "talent.grimoire_of_sacrifice.enabled",
["action"] = "grimoire_of_sacrifice",
}, -- [5]
{
["enabled"] = true,
["name"] = "shadowed_orb_of_torment",
["action"] = "shadowed_orb_of_torment",
}, -- [6]
{
["action"] = "soul_fire",
["enabled"] = true,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in > 15",
["action"] = "cataclysm",
}, -- [8]
{
["action"] = "incinerate",
["enabled"] = true,
}, -- [9]
},
["aoe"] = {
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "havoc_active & havoc_remains > gcd.max & active_enemies < 5 + ( talent.cry_havoc.enabled & ! talent.inferno.enabled ) & ( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled )",
["list_name"] = "havoc",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "pet.infernal.active || pet.blasphemy.active",
["action"] = "rain_of_fire",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "fight_remains < 12",
["action"] = "rain_of_fire",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "gcd.max > buff.madness_rof.remains & buff.madness_rof.up",
["action"] = "rain_of_fire",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "soul_shard >= ( 4.5 - 0.1 * active_dot.immolate ) & time > 5",
["action"] = "rain_of_fire",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "soul_shard > 3.5 - ( 0.1 * active_enemies ) & ! talent.rain_of_fire.enabled",
["action"] = "chaos_bolt",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in > 15",
["action"] = "cataclysm",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "dot.immolate.remains > cast_time & talent.raging_demonfire.enabled",
["action"] = "channel_demonfire",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "cycle_enemies > 1 & ( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled || ( talent.inferno.enabled & active_enemies > 4 ) )",
["action"] = "havoc",
["cycle_targets"] = 1,
}, -- [9]
{
["enabled"] = true,
["criteria"] = "dot.immolate.refreshable & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.immolate.remains ) & ( ! talent.raging_demonfire.enabled || cooldown.channel_demonfire.remains > remains ) & active_dot.immolate <= cycle_enemies & ! havoc_active & target.time_to_die > 18",
["action"] = "immolate",
["cycle_targets"] = 1,
}, -- [10]
{
["enabled"] = true,
["criteria"] = "buff.tormented_soul.stack = 10 || buff.tormented_soul.stack > 3 & boss & fight_remains < 10",
["action"] = "summon_soulkeeper",
}, -- [11]
{
["action"] = "summon_infernal",
["enabled"] = true,
}, -- [12]
{
["enabled"] = true,
["criteria"] = "debuff.pyrogenics.down & active_enemies <= 4",
["action"] = "rain_of_fire",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "dot.immolate.remains > cast_time",
["action"] = "channel_demonfire",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "( ( dot.immolate.refreshable & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.immolate.remains ) ) || cycle_enemies > active_dot.immolate ) & target.time_to_die > 10 & ! havoc_active",
["action"] = "immolate",
["cycle_targets"] = 1,
}, -- [15]
{
["enabled"] = true,
["criteria"] = "( dot.immolate.refreshable || ( dot.immolate.remains < 2 & dot.immolate.remains < havoc_remains ) || ! dot.immolate.ticking ) & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.immolate.remains ) & target.time_to_die > 11",
["action"] = "immolate",
["cycle_targets"] = 1,
}, -- [16]
{
["enabled"] = true,
["criteria"] = "buff.backdraft.up",
["action"] = "soul_fire",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "talent.fire_and_brimstone.enabled & buff.backdraft.up",
["action"] = "incinerate",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "buff.backdraft.stack < 2 || ! talent.backdraft.enabled",
["action"] = "conflagrate",
}, -- [19]
{
["action"] = "dimensional_rift",
["enabled"] = true,
}, -- [20]
{
["action"] = "incinerate",
["enabled"] = true,
}, -- [21]
},
["havoc"] = {
{
["enabled"] = true,
["criteria"] = "talent.backdraft.enabled & buff.backdraft.down & soul_shard >= 1 & soul_shard <= 4",
["action"] = "conflagrate",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "cast_time < havoc_remains & soul_shard < 2.5",
["action"] = "soul_fire",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "soul_shard < 4.5 & talent.raging_demonfire.rank = 2 & active_enemies > 2",
["action"] = "channel_demonfire",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "( ( dot.immolate.refreshable & target.time_to_die > 5 ) || ( ( dot.immolate.remains < 2 & dot.immolate.remains < havoc_remains ) || ! dot.immolate.ticking ) & target.time_to_die > 11 ) & soul_shard < 4.5",
["action"] = "immolate",
["cycle_targets"] = 1,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "( ( talent.cry_havoc.enabled & ! talent.inferno.enabled ) || ! talent.rain_of_fire.enabled ) & cast_time < havoc_remains",
["action"] = "chaos_bolt",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "cast_time < havoc_remains & ( active_enemies <= 3 - talent.inferno.enabled + ( talent.madness_of_the_azjaqir.enabled & ! talent.inferno.enabled ) )",
["action"] = "chaos_bolt",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "active_enemies >= 3 & talent.inferno.enabled",
["action"] = "rain_of_fire",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "( active_enemies >= 4 - talent.inferno.enabled + talent.madness_of_the_azjaqir.enabled )",
["action"] = "rain_of_fire",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "active_enemies > 2 & ( talent.avatar_of_destruction.enabled || talent.rain_of_chaos.enabled & buff.rain_of_chaos.up ) & talent.inferno.enabled",
["action"] = "rain_of_fire",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "! talent.backdraft.enabled",
["action"] = "conflagrate",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "cast_time < havoc_remains",
["action"] = "incinerate",
}, -- [11]
},
["cleave"] = {
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "havoc_active & havoc_remains > gcd.max",
["list_name"] = "havoc",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "cooldown.havoc.remains <= 10 || talent.mayhem.enabled",
["var_name"] = "pool_soul_shards",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "( talent.roaring_blaze.enabled & debuff.conflagrate.remains < 1.5 ) || charges = max_charges",
["action"] = "conflagrate",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "soul_shard < 4.7 & ( charges > 2 || boss & fight_remains < cooldown.dimensional_rift.duration )",
["action"] = "dimensional_rift",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in > 15",
["action"] = "cataclysm",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "talent.raging_demonfire.enabled",
["action"] = "channel_demonfire",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "soul_shard <= 3.5 & ( debuff.conflagrate.remains > cast_time + travel_time || ! talent.roaring_blaze.enabled & buff.backdraft.up ) & ! variable.pool_soul_shards",
["action"] = "soul_fire",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "refreshable & ( dot.immolate.remains < cooldown.havoc.remains || ! dot.immolate.ticking ) & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > remains ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + ( ! talent.mayhem.enabled * action.soul_fire.cast_time ) > dot.immolate.remains ) & target.time_to_die > 15",
["action"] = "immolate",
["cycle_targets"] = 1,
}, -- [8]
{
["enabled"] = true,
["criteria"] = "( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled ) & target.time_to_die > 8",
["action"] = "havoc",
["cycle_targets"] = 1,
}, -- [9]
{
["enabled"] = true,
["criteria"] = "pet.infernal.active || pet.blasphemy.active || soul_shard >= 4",
["action"] = "chaos_bolt",
}, -- [10]
{
["action"] = "summon_infernal",
["enabled"] = true,
}, -- [11]
{
["enabled"] = true,
["criteria"] = "talent.ruin.rank > 1 & ! ( talent.diabolic_embers.enabled & talent.avatar_of_destruction.enabled & ( talent.burn_to_ashes.enabled || talent.chaos_incarnate.enabled ) )",
["action"] = "channel_demonfire",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "buff.backdraft.down & soul_shard >= 1.5 & ! variable.pool_soul_shards",
["action"] = "conflagrate",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "cast_time + action.chaos_bolt.cast_time < buff.madness_cb.remains",
["action"] = "incinerate",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "buff.rain_of_chaos.remains > cast_time",
["action"] = "chaos_bolt",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "buff.backdraft.up & ! variable.pool_soul_shards",
["action"] = "chaos_bolt",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "talent.eradication.enabled & ! variable.pool_soul_shards & debuff.eradication.remains < cast_time & ! action.chaos_bolt.in_flight",
["action"] = "chaos_bolt",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "buff.madness_cb.up & ( ! variable.pool_soul_shards || talent.burn_to_ashes.enabled & buff.burn_to_ashes.stack = 0 || talent.soul_fire.enabled )",
["action"] = "chaos_bolt",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "soul_shard <= 4 & talent.mayhem.enabled",
["action"] = "soul_fire",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "! ( talent.diabolic_embers.enabled & talent.avatar_of_destruction.enabled & ( talent.burn_to_ashes.enabled || talent.chaos_incarnate.enabled ) )",
["action"] = "channel_demonfire",
}, -- [20]
{
["action"] = "dimensional_rift",
["enabled"] = true,
}, -- [21]
{
["enabled"] = true,
["criteria"] = "soul_shard > 3.5 & ! variable.pool_soul_shards",
["action"] = "chaos_bolt",
}, -- [22]
{
["enabled"] = true,
["criteria"] = "! variable.pool_soul_shards & ( talent.soul_conduit.enabled & ! talent.madness_of_the_azjaqir.enabled || ! talent.backdraft.enabled )",
["action"] = "chaos_bolt",
}, -- [23]
{
["enabled"] = true,
["criteria"] = "boss & fight_remains < 5 & time_to_die > cast_time + travel_time",
["action"] = "chaos_bolt",
}, -- [24]
{
["enabled"] = true,
["criteria"] = "buff.tormented_soul.stack = 10 || buff.tormented_soul.stack > 3 & boss & fight_remains < 10",
["action"] = "summon_soulkeeper",
}, -- [25]
{
["enabled"] = true,
["criteria"] = "charges > ( max_charges - 1 ) || time_to_die < gcd.max * charges",
["action"] = "conflagrate",
}, -- [26]
{
["action"] = "incinerate",
["enabled"] = true,
}, -- [27]
},
["ogcd"] = {
{
["enabled"] = true,
["criteria"] = "pet.infernal.active || ! talent.summon_infernal.enabled",
["action"] = "potion",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "pet.infernal.active || ! talent.summon_infernal.enabled || ( fight_remains < ( cooldown.summon_infernal.remains + cooldown.berserking.duration ) & ( fight_remains > cooldown.berserking.duration ) ) || boss & fight_remains < cooldown.summon_infernal.remains",
["action"] = "berserking",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "pet.infernal.active || ! talent.summon_infernal.enabled || ( fight_remains < cooldown.summon_infernal.remains + 10 + cooldown.blood_fury.duration & fight_remains > cooldown.blood_fury.duration ) || boss & fight_remains < cooldown.summon_infernal.remains",
["action"] = "blood_fury",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "pet.infernal.active || ! talent.summon_infernal.enabled || ( fight_remains < cooldown.summon_infernal.remains + 10 + cooldown.fireblood.duration & fight_remains > cooldown.fireblood.duration ) || boss & fight_remains < cooldown.summon_infernal.remains",
["action"] = "fireblood",
}, -- [4]
},
},
["version"] = 20230504,
["warnings"] = "The import for 'items' required some automated changes.\nLine 1: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (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 2: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (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 3: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.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.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.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.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 '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.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 5: Converted 'trinket.erupting_spear_fragment.cooldown.duration' to 'cooldown.erupting_spear_fragment.duration'.\nLine 5: Converted 'trinket.erupting_spear_fragment.cooldown.duration' to 'cooldown.erupting_spear_fragment.duration'.\nLine 5: Converted 'trinket.erupting_spear_fragment.cooldown.duration' to 'cooldown.erupting_spear_fragment.duration'.\n\nThe import for 'default' required some automated changes.\nLine 4: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 4: Converted 'talent.madness_of_the_azjaqir' to 'talent.madness_of_the_azjaqir.enabled' (1x).\nLine 4: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 4: Converted 'talent.madness_of_the_azjaqir' to 'talent.madness_of_the_azjaqir.enabled' (1x).\nLine 4: Converted 'talent.chaos_incarnate' to 'talent.chaos_incarnate.enabled' (1x).\nLine 6: Converted 'talent.roaring_blaze' to 'talent.roaring_blaze.enabled' (1x).\nLine 9: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 9: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 9: Converted 'talent.roaring_blaze' to 'talent.roaring_blaze.enabled' (1x).\nLine 10: Converted 'talent.roaring_blaze' to 'talent.roaring_blaze.enabled' (1x).\nLine 11: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 11: Converted 'talent.infernal_combustion' to 'talent.infernal_combustion.enabled' (1x).\nLine 11: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 11: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 12: Converted 'talent.cry_havoc' to 'talent.cry_havoc.enabled' (1x).\nLine 12: Converted 'talent.burn_to_ashes' to 'talent.burn_to_ashes.enabled' (1x).\nLine 12: Converted 'talent.burn_to_ashes' to 'talent.burn_to_ashes.enabled' (1x).\nLine 16: Converted 'talent.diabolic_embers' to 'talent.diabolic_embers.enabled' (1x).\nLine 16: Converted 'talent.avatar_of_destruction' to 'talent.avatar_of_destruction.enabled' (1x).\nLine 16: Converted 'talent.burn_to_ashes' to 'talent.burn_to_ashes.enabled' (1x).\nLine 16: Converted 'talent.chaos_incarnate' to 'talent.chaos_incarnate.enabled' (1x).\nLine 17: Converted 'talent.roaring_blaze' to 'talent.roaring_blaze.enabled' (1x).\nLine 20: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 20: Converted 'talent.madness_of_the_azjaqir' to 'talent.madness_of_the_azjaqir.enabled' (1x).\nLine 22: Converted 'talent.diabolic_embers' to 'talent.diabolic_embers.enabled' (1x).\nLine 22: Converted 'talent.avatar_of_destruction' to 'talent.avatar_of_destruction.enabled' (1x).\nLine 22: Converted 'talent.burn_to_ashes' to 'talent.burn_to_ashes.enabled' (1x).\nLine 22: Converted 'talent.chaos_incarnate' to 'talent.chaos_incarnate.enabled' (1x).\nLine 25: Converted 'talent.soul_conduit' to 'talent.soul_conduit.enabled' (1x).\nLine 25: Converted 'talent.madness_of_the_azjaqir' to 'talent.madness_of_the_azjaqir.enabled' (1x).\nLine 25: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 1: Converted 'talent.cry_havoc' to 'talent.cry_havoc.enabled' (1x).\nLine 1: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 1: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 6: Converted 'talent.rain_of_fire' to 'talent.rain_of_fire.enabled' (1x).\nLine 8: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 9: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 9: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 10: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 19: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\n\nThe import for 'cleave' required some automated changes.\nLine 2: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 6: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 7: Converted 'talent.roaring_blaze' to 'talent.roaring_blaze.enabled' (1x).\nLine 8: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 8: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 8: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 9: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 12: Converted 'talent.diabolic_embers' to 'talent.diabolic_embers.enabled' (1x).\nLine 12: Converted 'talent.avatar_of_destruction' to 'talent.avatar_of_destruction.enabled' (1x).\nLine 12: Converted 'talent.burn_to_ashes' to 'talent.burn_to_ashes.enabled' (1x).\nLine 12: Converted 'talent.chaos_incarnate' to 'talent.chaos_incarnate.enabled' (1x).\nLine 17: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 18: Converted 'talent.burn_to_ashes' to 'talent.burn_to_ashes.enabled' (1x).\nLine 18: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 19: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 20: Converted 'talent.diabolic_embers' to 'talent.diabolic_embers.enabled' (1x).\nLine 20: Converted 'talent.avatar_of_destruction' to 'talent.avatar_of_destruction.enabled' (1x).\nLine 20: Converted 'talent.burn_to_ashes' to 'talent.burn_to_ashes.enabled' (1x).\nLine 20: Converted 'talent.chaos_incarnate' to 'talent.chaos_incarnate.enabled' (1x).\nLine 23: Converted 'talent.soul_conduit' to 'talent.soul_conduit.enabled' (1x).\nLine 23: Converted 'talent.madness_of_the_azjaqir' to 'talent.madness_of_the_azjaqir.enabled' (1x).\nLine 23: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\n\nThe import for 'havoc' required some automated changes.\nLine 1: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\nLine 5: Converted 'talent.cry_havoc' to 'talent.cry_havoc.enabled' (1x).\nLine 5: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 5: Converted 'talent.rain_of_fire' to 'talent.rain_of_fire.enabled' (1x).\nLine 6: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 6: Converted 'talent.madness_of_the_azjaqir' to 'talent.madness_of_the_azjaqir.enabled' (1x).\nLine 6: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 7: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 8: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 8: Converted 'talent.madness_of_the_azjaqir' to 'talent.madness_of_the_azjaqir.enabled' (1x).\nLine 9: Converted 'talent.avatar_of_destruction' to 'talent.avatar_of_destruction.enabled' (1x).\nLine 9: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 10: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\n\nThe import for 'ogcd' required some automated changes.\nLine 1: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 2: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 3: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\n\nImported 7 action lists.\n",
["spec"] = 267,
["profile"] = "actions.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+=/grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice.enabled\nactions.precombat+=/use_item,name=shadowed_orb_of_torment\nactions.precombat+=/soul_fire\nactions.precombat+=/cataclysm,if=raid_event.adds.in>15\nactions.precombat+=/incinerate\n\nactions=spell_lock\nactions+=/call_action_list,name=items\nactions+=/call_action_list,name=ogcd\n## actions+=/variable,name=havoc_immo_time,op=set,condition=active_havoc,value=dot.immolate.remains,value_else=0\n## actions+=/cycling_variable,name=havoc_immo_time,op=add,value=dot.immolate.remains*debuff.havoc.up\nactions+=/call_action_list,name=aoe,strict=1,if=!settings.cleave_apl&(active_enemies>=3-(talent.inferno&!talent.madness_of_the_azjaqir))&!(!talent.inferno&talent.madness_of_the_azjaqir&talent.chaos_incarnate&active_enemies<4)\nactions+=/call_action_list,name=cleave,strict=1,if=settings.cleave_apl&active_enemies>1\nactions+=/conflagrate,if=(talent.roaring_blaze&debuff.conflagrate.remains<1.5)||charges=max_charges\nactions+=/dimensional_rift,if=soul_shard<4.7&(charges>2||boss&fight_remains<cooldown.dimensional_rift.duration)\nactions+=/cataclysm,if=raid_event.adds.in>15\nactions+=/channel_demonfire,if=talent.raging_demonfire&(dot.immolate.remains-5*(action.chaos_bolt.in_flight&talent.internal_combustion))>cast_time&(debuff.conflagrate.remains>execute_time||!talent.roaring_blaze)\nactions+=/soul_fire,if=soul_shard<=3.5&(debuff.conflagrate.remains>cast_time+travel_time||!talent.roaring_blaze&buff.backdraft.up)\nactions+=/immolate,if=(((dot.immolate.remains-5*(action.chaos_bolt.in_flight&talent.internal_combustion))<dot.immolate.duration*0.3)||dot.immolate.remains<3||(dot.immolate.remains-action.chaos_bolt.execute_time)<5&talent.infernal_combustion&action.chaos_bolt.usable)&(!talent.cataclysm||cooldown.cataclysm.remains>dot.immolate.remains)&(!talent.soul_fire||cooldown.soul_fire.remains+action.soul_fire.cast_time>(dot.immolate.remains-5*talent.internal_combustion))&target.time_to_die>8\nactions+=/havoc,if=talent.cry_havoc&((buff.ritual_of_ruin.up&pet.infernal.active&talent.burn_to_ashes)||((buff.ritual_of_ruin.up||pet.infernal.active)&!talent.burn_to_ashes))\nactions+=/channel_demonfire,if=dot.immolate.remains>cast_time&set_bonus.tier30_4pc\nactions+=/chaos_bolt,if=pet.infernal.active||pet.blasphemy.active||soul_shard>=4\nactions+=/summon_infernal\nactions+=/channel_demonfire,if=talent.ruin.rank>1&!(talent.diabolic_embers&talent.avatar_of_destruction&(talent.burn_to_ashes||talent.chaos_incarnate))&dot.immolate.remains>cast_time\nactions+=/conflagrate,if=buff.backdraft.down&soul_shard>=1.5&!talent.roaring_blaze\nactions+=/incinerate,if=cast_time+action.chaos_bolt.cast_time<buff.madness_cb.remains\nactions+=/chaos_bolt,if=buff.rain_of_chaos.remains>cast_time\nactions+=/chaos_bolt,if=buff.backdraft.up&!talent.eradication&!talent.madness_of_the_azjaqir\nactions+=/chaos_bolt,if=buff.madness_cb.up\nactions+=/channel_demonfire,if=!(talent.diabolic_embers&talent.avatar_of_destruction&(talent.burn_to_ashes||talent.chaos_incarnate))&dot.immolate.remains>cast_time\nactions+=/dimensional_rift\nactions+=/chaos_bolt,if=soul_shard>3.5\nactions+=/chaos_bolt,if=talent.soul_conduit&!talent.madness_of_the_azjaqir||!talent.backdraft\nactions+=/chaos_bolt,if=boss&fight_remains<5&fight_remains>cast_time+travel_time\nactions+=/conflagrate,if=charges>(max_charges-1)||time_to_die<gcd.max*charges\nactions+=/incinerate\n\nactions.aoe+=/call_action_list,name=havoc,strict=1,if=havoc_active&havoc_remains>gcd.max&active_enemies<5+(talent.cry_havoc&!talent.inferno)&(!cooldown.summon_infernal.up||!talent.summon_infernal)\nactions.aoe+=/rain_of_fire,if=pet.infernal.active||pet.blasphemy.active\nactions.aoe+=/rain_of_fire,if=fight_remains<12\nactions.aoe+=/rain_of_fire,if=gcd.max>buff.madness_rof.remains&buff.madness_rof.up\nactions.aoe+=/rain_of_fire,if=soul_shard>=(4.5-0.1*active_dot.immolate)&time>5\nactions.aoe+=/chaos_bolt,if=soul_shard>3.5-(0.1*active_enemies)&!talent.rain_of_fire\nactions.aoe+=/cataclysm,if=raid_event.adds.in>15\nactions.aoe+=/channel_demonfire,if=dot.immolate.remains>cast_time&talent.raging_demonfire\nactions.aoe+=/havoc,cycle_targets=1,if=cycle_enemies>1&(!cooldown.summon_infernal.up||!talent.summon_infernal||(talent.inferno&active_enemies>4))\nactions.aoe+=/immolate,cycle_targets=1,if=dot.immolate.refreshable&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.immolate.remains)&(!talent.raging_demonfire||cooldown.channel_demonfire.remains>remains)&active_dot.immolate<=cycle_enemies&!havoc_active&target.time_to_die>18\nactions.aoe+=/summon_soulkeeper,if=buff.tormented_soul.stack=10||buff.tormented_soul.stack>3&boss&fight_remains<10\nactions.aoe+=/summon_infernal\nactions.aoe+=/rain_of_fire,if=debuff.pyrogenics.down&active_enemies<=4\nactions.aoe+=/channel_demonfire,if=dot.immolate.remains>cast_time\nactions.aoe+=/immolate,cycle_targets=1,if=((dot.immolate.refreshable&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.immolate.remains))||cycle_enemies>active_dot.immolate)&target.time_to_die>10&!havoc_active\nactions.aoe+=/immolate,cycle_targets=1,if=(dot.immolate.refreshable||(dot.immolate.remains<2&dot.immolate.remains<havoc_remains)||!dot.immolate.ticking)&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.immolate.remains)&target.time_to_die>11\nactions.aoe+=/soul_fire,if=buff.backdraft.up\nactions.aoe+=/incinerate,if=talent.fire_and_brimstone.enabled&buff.backdraft.up\nactions.aoe+=/conflagrate,if=buff.backdraft.stack<2||!talent.backdraft\nactions.aoe+=/dimensional_rift\nactions.aoe+=/incinerate\n\nactions.cleave=call_action_list,name=havoc,strict=1,if=havoc_active&havoc_remains>gcd.max\nactions.cleave+=/variable,name=pool_soul_shards,value=cooldown.havoc.remains<=10||talent.mayhem\nactions.cleave+=/conflagrate,if=(talent.roaring_blaze.enabled&debuff.conflagrate.remains<1.5)||charges=max_charges\nactions.cleave+=/dimensional_rift,if=soul_shard<4.7&(charges>2||boss&fight_remains<cooldown.dimensional_rift.duration)\nactions.cleave+=/cataclysm,if=raid_event.adds.in>15\nactions.cleave+=/channel_demonfire,if=talent.raging_demonfire\nactions.cleave+=/soul_fire,if=soul_shard<=3.5&(debuff.conflagrate.remains>cast_time+travel_time||!talent.roaring_blaze&buff.backdraft.up)&!variable.pool_soul_shards\nactions.cleave+=/immolate,cycle_targets=1,if=refreshable&(dot.immolate.remains<cooldown.havoc.remains||!dot.immolate.ticking)&(!talent.cataclysm||cooldown.cataclysm.remains>remains)&(!talent.soul_fire||cooldown.soul_fire.remains+(!talent.mayhem*action.soul_fire.cast_time)>dot.immolate.remains)&target.time_to_die>15\nactions.cleave+=/havoc,cycle_targets=1,if=(!cooldown.summon_infernal.up||!talent.summon_infernal)&target.time_to_die>8\nactions.cleave+=/chaos_bolt,if=pet.infernal.active||pet.blasphemy.active||soul_shard>=4\nactions.cleave+=/summon_infernal\nactions.cleave+=/channel_demonfire,if=talent.ruin.rank>1&!(talent.diabolic_embers&talent.avatar_of_destruction&(talent.burn_to_ashes||talent.chaos_incarnate))\nactions.cleave+=/conflagrate,if=buff.backdraft.down&soul_shard>=1.5&!variable.pool_soul_shards\nactions.cleave+=/incinerate,if=cast_time+action.chaos_bolt.cast_time<buff.madness_cb.remains\nactions.cleave+=/chaos_bolt,if=buff.rain_of_chaos.remains>cast_time\nactions.cleave+=/chaos_bolt,if=buff.backdraft.up&!variable.pool_soul_shards\nactions.cleave+=/chaos_bolt,if=talent.eradication&!variable.pool_soul_shards&debuff.eradication.remains<cast_time&!action.chaos_bolt.in_flight\nactions.cleave+=/chaos_bolt,if=buff.madness_cb.up&(!variable.pool_soul_shards||talent.burn_to_ashes&buff.burn_to_ashes.stack=0||talent.soul_fire)\nactions.cleave+=/soul_fire,if=soul_shard<=4&talent.mayhem\nactions.cleave+=/channel_demonfire,if=!(talent.diabolic_embers&talent.avatar_of_destruction&(talent.burn_to_ashes||talent.chaos_incarnate))\nactions.cleave+=/dimensional_rift\nactions.cleave+=/chaos_bolt,if=soul_shard>3.5&!variable.pool_soul_shards\nactions.cleave+=/chaos_bolt,if=!variable.pool_soul_shards&(talent.soul_conduit&!talent.madness_of_the_azjaqir||!talent.backdraft)\nactions.cleave+=/chaos_bolt,if=boss&fight_remains<5&time_to_die>cast_time+travel_time\nactions.cleave+=/summon_soulkeeper,if=buff.tormented_soul.stack=10||buff.tormented_soul.stack>3&boss&fight_remains<10\nactions.cleave+=/conflagrate,if=charges>(max_charges-1)||time_to_die<gcd.max*charges\nactions.cleave+=/incinerate\n\nactions.havoc=conflagrate,if=talent.backdraft&buff.backdraft.down&soul_shard>=1&soul_shard<=4\nactions.havoc+=/soul_fire,if=cast_time<havoc_remains&soul_shard<2.5\nactions.havoc+=/channel_demonfire,if=soul_shard<4.5&talent.raging_demonfire.rank=2&active_enemies>2\nactions.havoc+=/immolate,cycle_targets=1,if=((dot.immolate.refreshable&target.time_to_die>5)||((dot.immolate.remains<2&dot.immolate.remains<havoc_remains)||!dot.immolate.ticking)&target.time_to_die>11)&soul_shard<4.5\nactions.havoc+=/chaos_bolt,if=((talent.cry_havoc&!talent.inferno)||!talent.rain_of_fire)&cast_time<havoc_remains\nactions.havoc+=/chaos_bolt,if=cast_time<havoc_remains&(active_enemies<=3-talent.inferno+(talent.madness_of_the_azjaqir&!talent.inferno))\nactions.havoc+=/rain_of_fire,if=active_enemies>=3&talent.inferno\nactions.havoc+=/rain_of_fire,if=(active_enemies>=4-talent.inferno+talent.madness_of_the_azjaqir)\nactions.havoc+=/rain_of_fire,if=active_enemies>2&(talent.avatar_of_destruction||talent.rain_of_chaos&buff.rain_of_chaos.up)&talent.inferno.enabled\nactions.havoc+=/conflagrate,if=!talent.backdraft\nactions.havoc+=/incinerate,if=cast_time<havoc_remains\n\nactions.items+=/use_item,slot=trinket1,if=pet.infernal.active||!talent.summon_infernal||boss&fight_remains<21||trinket.1.cooldown.duration<cooldown.summon_infernal.remains+5\nactions.items+=/use_item,slot=trinket2,if=pet.infernal.active||!talent.summon_infernal||boss&fight_remains<21||trinket.2.cooldown.duration<cooldown.summon_infernal.remains+5\nactions.items+=/use_item,slot=trinket1,if=(!talent.rain_of_chaos&fight_remains<cooldown.summon_infernal.remains+trinket.1.cooldown.duration&fight_remains>trinket.1.cooldown.duration)||boss&fight_remains<cooldown.summon_infernal.remains||(trinket.2.cooldown.remains>0&trinket.2.cooldown.remains<cooldown.summon_infernal.remains)\nactions.items+=/use_item,slot=trinket2,if=(!talent.rain_of_chaos&fight_remains<cooldown.summon_infernal.remains+trinket.2.cooldown.duration&fight_remains>trinket.2.cooldown.duration)||boss&fight_remains<cooldown.summon_infernal.remains||(trinket.1.cooldown.remains>0&trinket.1.cooldown.remains<cooldown.summon_infernal.remains)\nactions.items+=/use_item,name=erupting_spear_fragment,if=(!talent.rain_of_chaos&fight_remains<cooldown.summon_infernal.remains+trinket.erupting_spear_fragment.cooldown.duration&fight_remains>trinket.erupting_spear_fragment.cooldown.duration)||boss&fight_remains<cooldown.summon_infernal.remains||trinket.erupting_spear_fragment.cooldown.duration<cooldown.summon_infernal.remains+5\nactions.items+=/use_item,name=desperate_invokers_codex\nactions.items+=/use_item,name=iceblood_deathsnare\nactions.items+=/use_item,name=conjured_chillglobe\n\nactions.ogcd=potion,if=pet.infernal.active||!talent.summon_infernal\nactions.ogcd+=/berserking,if=pet.infernal.active||!talent.summon_infernal||(fight_remains<(cooldown.summon_infernal.remains+cooldown.berserking.duration)&(fight_remains>cooldown.berserking.duration))||boss&fight_remains<cooldown.summon_infernal.remains\nactions.ogcd+=/blood_fury,if=pet.infernal.active||!talent.summon_infernal||(fight_remains<cooldown.summon_infernal.remains+10+cooldown.blood_fury.duration&fight_remains>cooldown.blood_fury.duration)||boss&fight_remains<cooldown.summon_infernal.remains\nactions.ogcd+=/fireblood,if=pet.infernal.active||!talent.summon_infernal||(fight_remains<cooldown.summon_infernal.remains+10+cooldown.fireblood.duration&fight_remains>cooldown.fireblood.duration)||boss&fight_remains<cooldown.summon_infernal.remains",
},
["Affliction"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230411,
["spec"] = 265,
["desc"] = "2023-03-05: Routine update that adds Unstable Affliction and Malefic Rapture (with Malefic Affliction + Doom Blossom) to AOE action list.\n\n2023-03-19: Update for 10.0.7.\n\n2023-04-11: Use Phantom Singularity if Soul Rot will be on CD for a while.",
["profile"] = "actions.precombat=fel_domination,if=time>0&!pet.alive&!buff.grimoire_of_sacrifice.up\nactions.precombat+=/summon_pet\nactions.precombat+=/variable,name=cleave_apl,default=0,op=reset\nactions.precombat+=/grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice.enabled\nactions.precombat+=/seed_of_corruption,if=spell_targets.seed_of_corruption_aoe>3\nactions.precombat+=/haunt\nactions.precombat+=/unstable_affliction,if=active_dot.unstable_affliction=0&!ticking&!talent.soul_swap\nactions.precombat+=/shadow_bolt\n\nactions+=/call_action_list,name=variables\nactions+=/call_action_list,name=ogcd\nactions+=/call_action_list,name=items\nactions+=/call_action_list,name=cleave,strict=1,if=active_enemies>1&active_enemies<4||variable.cleave_apl\nactions+=/call_action_list,name=aoe,strict=1,if=active_enemies>3\nactions+=/malefic_rapture,if=talent.dread_touch&talent.malefic_affliction&debuff.dread_touch.remains<2&buff.malefic_affliction.stack=3\nactions+=/soul_swap_exhale,if=buff.soul_swap.up&buff.soul_swap.unstable_affliction&(active_dot.unstable_affliction=0&!dot.unstable_affliction.ticking||!dot.unstable_affliction.ticking&dot.unstable_affliction.remains<5)\nactions+=/unstable_affliction,if=active_dot.unstable_affliction=0&!ticking||ticking&remains<5\nactions+=/agony,if=remains<5\nactions+=/corruption,if=remains<5\nactions+=/siphon_life,if=remains<5\nactions+=/haunt\nactions+=/drain_soul,if=talent.shadow_embrace&(debuff.shadow_embrace.stack<3||debuff.shadow_embrace.remains<3)\nactions+=/shadow_bolt,if=talent.shadow_embrace&(debuff.shadow_embrace.stack<3||debuff.shadow_embrace.remains<3)\nactions+=/phantom_singularity,if=!talent.soul_rot||cooldown.soul_rot.remains<=execute_time||cooldown.soul_rot.remains>=25\nactions+=/vile_taint,if=!talent.soul_rot||cooldown.soul_rot.remains<=execute_time||talent.souleaters_gluttony.rank<2&cooldown.soul_rot.remains>=12\nactions+=/soul_rot,if=variable.vt_up&variable.ps_up\nactions+=/summon_darkglare,if=variable.ps_up&variable.vt_up&variable.sr_up||!talent.soul_rot\nactions+=/malefic_rapture,if=soul_shard>4||(talent.tormented_crescendo&buff.tormented_crescendo.stack=1&soul_shard>3)\nactions+=/malefic_rapture,if=talent.malefic_affliction&buff.malefic_affliction.stack<3\nactions+=/malefic_rapture,if=talent.tormented_crescendo&buff.tormented_crescendo.react&!debuff.dread_touch.react\nactions+=/malefic_rapture,if=talent.tormented_crescendo&buff.tormented_crescendo.stack=2\nactions+=/malefic_rapture,if=variable.cd_dots_up||variable.vt_up&soul_shard>1\nactions+=/malefic_rapture,if=talent.tormented_crescendo&talent.nightfall&buff.tormented_crescendo.react&buff.nightfall.react\nactions+=/drain_life,if=buff.inevitable_demise.stack>48||buff.inevitable_demise.stack>20&time_to_die<4\nactions+=/drain_soul,if=buff.nightfall.react\nactions+=/shadow_bolt,if=buff.nightfall.react\nactions+=/agony,if=refreshable\nactions+=/corruption,if=refreshable\nactions+=/drain_soul,interrupt=1\nactions+=/shadow_bolt\n\nactions.aoe+=/haunt\nactions.aoe+=/vile_taint\nactions.aoe+=/phantom_singularity\nactions.aoe+=/soul_rot\nactions.aoe+=/unstable_affliction,if=active_dot.unstable_affliction=0&!ticking||ticking&remains<5\nactions.aoe+=/seed_of_corruption,if=dot.corruption.remains<5\nactions.aoe+=/malefic_rapture,if=talent.malefic_affliction&buff.malefic_affliction.stack<3&talent.doom_blossom\nactions.aoe+=/agony,cycle_targets=1,if=remains<5&active_dot.agony<5\nactions.aoe+=/summon_darkglare\nactions.aoe+=/seed_of_corruption,if=talent.sow_the_seeds\nactions.aoe+=/malefic_rapture\nactions.aoe+=/drain_life,if=(buff.soul_rot.up||!talent.soul_rot)&buff.inevitable_demise.stack>10\nactions.aoe+=/summon_soulkeeper,if=buff.tormented_soul.stack=10||buff.tormented_soul.stack>3&boss&fight_remains<10\nactions.aoe+=/siphon_life,cycle_targets=1,if=remains<5&active_dot.siphon_life<3\nactions.aoe+=/drain_soul,interrupt_global=1\nactions.aoe+=/shadow_bolt\n\nactions.cleave+=/malefic_rapture,if=soul_shard=5\nactions.cleave+=/haunt\nactions.cleave+=/soul_swap_exhale,if=buff.soul_swap.up&buff.soul_swap.unstable_affliction&(active_dot.unstable_affliction=0&!dot.unstable_affliction.ticking||!dot.unstable_affliction.ticking&dot.unstable_affliction.remains<5)\n# Note: For some reason, Unstable Affliction dot count is not always accurate. This is a workaround.\nactions.cleave+=/unstable_affliction,if=active_dot.unstable_affliction=0&!ticking||ticking&remains<5\nactions.cleave+=/agony,if=remains<5\nactions.cleave+=/agony,cycle_targets=1,if=remains<5\nactions.cleave+=/siphon_life,if=remains<5\nactions.cleave+=/siphon_life,cycle_targets=1,if=remains<3\nactions.cleave+=/seed_of_corruption,if=!talent.absolute_corruption&dot.corruption.remains<5\nactions.cleave+=/corruption,cycle_targets=1,if=remains<5&(talent.absolute_corruption||!talent.seed_of_corruption)\nactions.cleave+=/phantom_singularity\nactions.cleave+=/vile_taint\nactions.cleave+=/soul_rot\nactions.cleave+=/summon_darkglare\nactions.cleave+=/malefic_rapture,if=talent.malefic_affliction&buff.malefic_affliction.stack<3\nactions.cleave+=/malefic_rapture,if=talent.dread_touch&debuff.dread_touch.remains<gcd\nactions.cleave+=/malefic_rapture,if=!talent.dread_touch&buff.tormented_crescendo.up\nactions.cleave+=/malefic_rapture,if=!talent.dread_touch&(dot.soul_rot.remains>cast_time||dot.phantom_singularity.remains>cast_time||dot.vile_taint_dot.remains>cast_time||pet.darkglare.active)\nactions.cleave+=/drain_soul,if=buff.nightfall.react\nactions.cleave+=/shadow_bolt,if=buff.nightfall.react\nactions.cleave+=/drain_life,if=buff.inevitable_demise.stack>48||buff.inevitable_demise.stack>20&boss&fight_remains<4\nactions.cleave+=/drain_life,if=buff.soul_rot.up&buff.inevitable_demise.stack>10\nactions.cleave+=/agony,cycle_targets=1,if=refreshable\nactions.cleave+=/corruption,cycle_targets=1,if=refreshable\nactions.cleave+=/drain_soul,interrupt_global=1\nactions.cleave+=/shadow_bolt\n\nactions.items+=/use_items,if=variable.cds_active\nactions.items+=/use_item,name=desperate_invokers_codex\nactions.items+=/use_item,name=conjured_chillglobe\n\nactions.ogcd+=/potion,if=variable.cds_active\nactions.ogcd+=/berserking,if=variable.cds_active\nactions.ogcd+=/blood_fury,if=variable.cds_active\n## actions.ogcd+=/invoke_external_buff,name=power_infusion,if=variable.cds_active\nactions.ogcd+=/fireblood,if=variable.cds_active\n\nactions.variables+=/variable,name=ps_up,op=set,value=dot.phantom_singularity.ticking||!talent.phantom_singularity\nactions.variables+=/variable,name=vt_up,op=set,value=dot.vile_taint_dot.ticking||!talent.vile_taint\nactions.variables+=/variable,name=sr_up,op=set,value=dot.soul_rot.ticking||!talent.soul_rot\nactions.variables+=/variable,name=cd_dots_up,op=set,value=variable.ps_up&variable.vt_up&variable.sr_up\nactions.variables+=/variable,name=has_cds,op=set,value=talent.phantom_singularity||talent.vile_taint||talent.soul_rot||talent.summon_darkglare\nactions.variables+=/variable,name=cds_active,op=set,value=!variable.has_cds||(pet.darkglare.active||variable.cd_dots_up||buff.power_infusion.react)",
["version"] = 20230411,
["warnings"] = "The import for 'default' required some automated changes.\nLine 6: Converted 'talent.dread_touch' to 'talent.dread_touch.enabled' (1x).\nLine 6: Converted 'talent.malefic_affliction' to 'talent.malefic_affliction.enabled' (1x).\nLine 13: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 14: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 15: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 16: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 18: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 19: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 20: Converted 'talent.malefic_affliction' to 'talent.malefic_affliction.enabled' (1x).\nLine 21: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 22: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 24: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 24: Converted 'talent.nightfall' to 'talent.nightfall.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 7: Converted 'talent.soul_swap' to 'talent.soul_swap.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 7: Converted 'talent.malefic_affliction' to 'talent.malefic_affliction.enabled' (1x).\nLine 7: Converted 'talent.doom_blossom' to 'talent.doom_blossom.enabled' (1x).\nLine 10: Converted 'talent.sow_the_seeds' to 'talent.sow_the_seeds.enabled' (1x).\nLine 12: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\n\nThe import for 'variables' required some automated changes.\nLine 1: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 2: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 3: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 5: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 5: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 5: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 5: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\n\nThe import for 'cleave' required some automated changes.\nLine 9: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 10: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 10: Converted 'talent.seed_of_corruption' to 'talent.seed_of_corruption.enabled' (1x).\nLine 15: Converted 'talent.malefic_affliction' to 'talent.malefic_affliction.enabled' (1x).\nLine 16: Converted 'talent.dread_touch' to 'talent.dread_touch.enabled' (1x).\nLine 17: Converted 'talent.dread_touch' to 'talent.dread_touch.enabled' (1x).\nLine 18: Converted 'talent.dread_touch' to 'talent.dread_touch.enabled' (1x).\n\nImported 7 action lists.\n",
["author"] = "SimC",
["lists"] = {
["items"] = {
{
["enabled"] = true,
["criteria"] = "variable.cds_active",
["action"] = "use_items",
}, -- [1]
{
["enabled"] = true,
["name"] = "desperate_invokers_codex",
["action"] = "desperate_invokers_codex",
}, -- [2]
{
["enabled"] = true,
["name"] = "conjured_chillglobe",
["action"] = "conjured_chillglobe",
}, -- [3]
},
["default"] = {
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "variables",
}, -- [1]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "ogcd",
}, -- [2]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "items",
}, -- [3]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies > 1 & active_enemies < 4 || variable.cleave_apl",
["list_name"] = "cleave",
}, -- [4]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies > 3",
["list_name"] = "aoe",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "talent.dread_touch.enabled & talent.malefic_affliction.enabled & debuff.dread_touch.remains < 2 & buff.malefic_affliction.stack = 3",
["action"] = "malefic_rapture",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "buff.soul_swap.up & buff.soul_swap.unstable_affliction & ( active_dot.unstable_affliction = 0 & ! dot.unstable_affliction.ticking || ! dot.unstable_affliction.ticking & dot.unstable_affliction.remains < 5 )",
["action"] = "soul_swap_exhale",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "active_dot.unstable_affliction = 0 & ! ticking || ticking & remains < 5",
["action"] = "unstable_affliction",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "remains < 5",
["action"] = "agony",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "remains < 5",
["action"] = "corruption",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "remains < 5",
["action"] = "siphon_life",
}, -- [11]
{
["action"] = "haunt",
["enabled"] = true,
}, -- [12]
{
["enabled"] = true,
["criteria"] = "talent.shadow_embrace.enabled & ( debuff.shadow_embrace.stack < 3 || debuff.shadow_embrace.remains < 3 )",
["action"] = "drain_soul",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "talent.shadow_embrace.enabled & ( debuff.shadow_embrace.stack < 3 || debuff.shadow_embrace.remains < 3 )",
["action"] = "shadow_bolt",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "! talent.soul_rot.enabled || cooldown.soul_rot.remains <= execute_time || cooldown.soul_rot.remains >= 25",
["action"] = "phantom_singularity",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "! talent.soul_rot.enabled || cooldown.soul_rot.remains <= execute_time || talent.souleaters_gluttony.rank < 2 & cooldown.soul_rot.remains >= 12",
["action"] = "vile_taint",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "variable.vt_up & variable.ps_up",
["action"] = "soul_rot",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "variable.ps_up & variable.vt_up & variable.sr_up || ! talent.soul_rot.enabled",
["action"] = "summon_darkglare",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "soul_shard > 4 || ( talent.tormented_crescendo.enabled & buff.tormented_crescendo.stack = 1 & soul_shard > 3 )",
["action"] = "malefic_rapture",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "talent.malefic_affliction.enabled & buff.malefic_affliction.stack < 3",
["action"] = "malefic_rapture",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "talent.tormented_crescendo.enabled & buff.tormented_crescendo.react & ! debuff.dread_touch.react",
["action"] = "malefic_rapture",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "talent.tormented_crescendo.enabled & buff.tormented_crescendo.stack = 2",
["action"] = "malefic_rapture",
}, -- [22]
{
["enabled"] = true,
["criteria"] = "variable.cd_dots_up || variable.vt_up & soul_shard > 1",
["action"] = "malefic_rapture",
}, -- [23]
{
["enabled"] = true,
["criteria"] = "talent.tormented_crescendo.enabled & talent.nightfall.enabled & buff.tormented_crescendo.react & buff.nightfall.react",
["action"] = "malefic_rapture",
}, -- [24]
{
["enabled"] = true,
["criteria"] = "buff.inevitable_demise.stack > 48 || buff.inevitable_demise.stack > 20 & time_to_die < 4",
["action"] = "drain_life",
}, -- [25]
{
["enabled"] = true,
["criteria"] = "buff.nightfall.react",
["action"] = "drain_soul",
}, -- [26]
{
["enabled"] = true,
["criteria"] = "buff.nightfall.react",
["action"] = "shadow_bolt",
}, -- [27]
{
["enabled"] = true,
["criteria"] = "refreshable",
["action"] = "agony",
}, -- [28]
{
["enabled"] = true,
["criteria"] = "refreshable",
["action"] = "corruption",
}, -- [29]
{
["interrupt"] = "1",
["action"] = "drain_soul",
["enabled"] = true,
}, -- [30]
{
["action"] = "shadow_bolt",
["enabled"] = true,
}, -- [31]
},
["cleave"] = {
{
["enabled"] = true,
["criteria"] = "soul_shard = 5",
["action"] = "malefic_rapture",
}, -- [1]
{
["action"] = "haunt",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.soul_swap.up & buff.soul_swap.unstable_affliction & ( active_dot.unstable_affliction = 0 & ! dot.unstable_affliction.ticking || ! dot.unstable_affliction.ticking & dot.unstable_affliction.remains < 5 )",
["action"] = "soul_swap_exhale",
}, -- [3]
{
["enabled"] = true,
["action"] = "unstable_affliction",
["description"] = "Note: For some reason, Unstable Affliction dot count is not always accurate. This is a workaround.",
["criteria"] = "active_dot.unstable_affliction = 0 & ! ticking || ticking & remains < 5",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "remains < 5",
["action"] = "agony",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "remains < 5",
["action"] = "agony",
["cycle_targets"] = 1,
}, -- [6]
{
["enabled"] = true,
["criteria"] = "remains < 5",
["action"] = "siphon_life",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "remains < 3",
["action"] = "siphon_life",
["cycle_targets"] = 1,
}, -- [8]
{
["enabled"] = true,
["criteria"] = "! talent.absolute_corruption.enabled & dot.corruption.remains < 5",
["action"] = "seed_of_corruption",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "remains < 5 & ( talent.absolute_corruption.enabled || ! talent.seed_of_corruption.enabled )",
["action"] = "corruption",
["cycle_targets"] = 1,
}, -- [10]
{
["action"] = "phantom_singularity",
["enabled"] = true,
}, -- [11]
{
["action"] = "vile_taint",
["enabled"] = true,
}, -- [12]
{
["action"] = "soul_rot",
["enabled"] = true,
}, -- [13]
{
["action"] = "summon_darkglare",
["enabled"] = true,
}, -- [14]
{
["enabled"] = true,
["criteria"] = "talent.malefic_affliction.enabled & buff.malefic_affliction.stack < 3",
["action"] = "malefic_rapture",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "talent.dread_touch.enabled & debuff.dread_touch.remains < gcd.max",
["action"] = "malefic_rapture",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "! talent.dread_touch.enabled & buff.tormented_crescendo.up",
["action"] = "malefic_rapture",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "! talent.dread_touch.enabled & ( dot.soul_rot.remains > cast_time || dot.phantom_singularity.remains > cast_time || dot.vile_taint_dot.remains > cast_time || pet.darkglare.active )",
["action"] = "malefic_rapture",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "buff.nightfall.react",
["action"] = "drain_soul",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "buff.nightfall.react",
["action"] = "shadow_bolt",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "buff.inevitable_demise.stack > 48 || buff.inevitable_demise.stack > 20 & boss & fight_remains < 4",
["action"] = "drain_life",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "buff.soul_rot.up & buff.inevitable_demise.stack > 10",
["action"] = "drain_life",
}, -- [22]
{
["enabled"] = true,
["criteria"] = "refreshable",
["action"] = "agony",
["cycle_targets"] = 1,
}, -- [23]
{
["enabled"] = true,
["criteria"] = "refreshable",
["action"] = "corruption",
["cycle_targets"] = 1,
}, -- [24]
{
["enabled"] = true,
["action"] = "drain_soul",
["interrupt_global"] = "1",
}, -- [25]
{
["action"] = "shadow_bolt",
["enabled"] = true,
}, -- [26]
},
["aoe"] = {
{
["action"] = "haunt",
["enabled"] = true,
}, -- [1]
{
["action"] = "vile_taint",
["enabled"] = true,
}, -- [2]
{
["action"] = "phantom_singularity",
["enabled"] = true,
}, -- [3]
{
["action"] = "soul_rot",
["enabled"] = true,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "active_dot.unstable_affliction = 0 & ! ticking || ticking & remains < 5",
["action"] = "unstable_affliction",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "dot.corruption.remains < 5",
["action"] = "seed_of_corruption",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "talent.malefic_affliction.enabled & buff.malefic_affliction.stack < 3 & talent.doom_blossom.enabled",
["action"] = "malefic_rapture",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "remains < 5 & active_dot.agony < 5",
["action"] = "agony",
["cycle_targets"] = 1,
}, -- [8]
{
["action"] = "summon_darkglare",
["enabled"] = true,
}, -- [9]
{
["enabled"] = true,
["criteria"] = "talent.sow_the_seeds.enabled",
["action"] = "seed_of_corruption",
}, -- [10]
{
["action"] = "malefic_rapture",
["enabled"] = true,
}, -- [11]
{
["enabled"] = true,
["criteria"] = "( buff.soul_rot.up || ! talent.soul_rot.enabled ) & buff.inevitable_demise.stack > 10",
["action"] = "drain_life",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "buff.tormented_soul.stack = 10 || buff.tormented_soul.stack > 3 & boss & fight_remains < 10",
["action"] = "summon_soulkeeper",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "remains < 5 & active_dot.siphon_life < 3",
["action"] = "siphon_life",
["cycle_targets"] = 1,
}, -- [14]
{
["enabled"] = true,
["action"] = "drain_soul",
["interrupt_global"] = "1",
}, -- [15]
{
["action"] = "shadow_bolt",
["enabled"] = true,
}, -- [16]
},
["variables"] = {
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "dot.phantom_singularity.ticking || ! talent.phantom_singularity.enabled",
["var_name"] = "ps_up",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "dot.vile_taint_dot.ticking || ! talent.vile_taint.enabled",
["var_name"] = "vt_up",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "dot.soul_rot.ticking || ! talent.soul_rot.enabled",
["var_name"] = "sr_up",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "variable.ps_up & variable.vt_up & variable.sr_up",
["var_name"] = "cd_dots_up",
}, -- [4]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.phantom_singularity.enabled || talent.vile_taint.enabled || talent.soul_rot.enabled || talent.summon_darkglare.enabled",
["var_name"] = "has_cds",
}, -- [5]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! variable.has_cds || ( pet.darkglare.active || variable.cd_dots_up || buff.power_infusion.react )",
["var_name"] = "cds_active",
}, -- [6]
},
["precombat"] = {
{
["enabled"] = true,
["criteria"] = "time > 0 & ! pet.alive & ! buff.grimoire_of_sacrifice.up",
["action"] = "fel_domination",
}, -- [1]
{
["action"] = "summon_pet",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["op"] = "reset",
["action"] = "variable",
["var_name"] = "cleave_apl",
["default"] = "0",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "talent.grimoire_of_sacrifice.enabled",
["action"] = "grimoire_of_sacrifice",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "spell_targets.seed_of_corruption_aoe > 3",
["action"] = "seed_of_corruption",
}, -- [5]
{
["action"] = "haunt",
["enabled"] = true,
}, -- [6]
{
["enabled"] = true,
["criteria"] = "active_dot.unstable_affliction = 0 & ! ticking & ! talent.soul_swap.enabled",
["action"] = "unstable_affliction",
}, -- [7]
{
["action"] = "shadow_bolt",
["enabled"] = true,
}, -- [8]
},
["ogcd"] = {
{
["enabled"] = true,
["criteria"] = "variable.cds_active",
["action"] = "potion",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "variable.cds_active",
["action"] = "berserking",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "variable.cds_active",
["action"] = "blood_fury",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "variable.cds_active",
["action"] = "fireblood",
}, -- [4]
},
},
},
["Preservation"] = {
["builtIn"] = true,
["date"] = 20230205,
["author"] = "Hekili",
["profile"] = "actions.precombat+=/blessing_of_the_bronze\n\nactions+=/quell\nactions+=/cauterizing_flame\nactions+=/unravel\nactions+=/deep_breath\nactions+=/potion\nactions+=/use_items\nactions+=/fire_breath,empower_to=1,if=fight_remains>14+cast_time\nactions+=/fire_breath,empower_to=2,if=fight_remains>8+cast_time\nactions+=/fire_breath,empower_to=3,if=fight_remains>2+cast_time\nactions+=/fire_breath,empower_to=4,if=fight_remains>cast_time\nactions+=/hover,if=moving\nactions+=/disintegrate,if=buff.essence_burst.up&(!moving||buff.hover.remains>cast_time)\nactions+=/living_flame,if=!moving||buff.hover.remains>cast_time\nactions+=/azure_strike,if=moving&buff.hover.down",
["version"] = 20230205,
["warnings"] = "Imported 2 action lists.\n",
["lists"] = {
["default"] = {
{
["action"] = "quell",
["enabled"] = true,
}, -- [1]
{
["action"] = "cauterizing_flame",
["enabled"] = true,
}, -- [2]
{
["action"] = "unravel",
["enabled"] = true,
}, -- [3]
{
["action"] = "deep_breath",
["enabled"] = true,
}, -- [4]
{
["action"] = "potion",
["enabled"] = true,
}, -- [5]
{
["action"] = "use_items",
["enabled"] = true,
}, -- [6]
{
["enabled"] = true,
["criteria"] = "fight_remains > 14 + cast_time",
["action"] = "fire_breath",
["empower_to"] = 1,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "fight_remains > 8 + cast_time",
["action"] = "fire_breath",
["empower_to"] = 2,
}, -- [8]
{
["enabled"] = true,
["criteria"] = "fight_remains > 2 + cast_time",
["action"] = "fire_breath",
["empower_to"] = 3,
}, -- [9]
{
["enabled"] = true,
["criteria"] = "fight_remains > cast_time",
["action"] = "fire_breath",
["empower_to"] = 4,
}, -- [10]
{
["enabled"] = true,
["criteria"] = "moving",
["action"] = "hover",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "buff.essence_burst.up & ( ! moving || buff.hover.remains > cast_time )",
["action"] = "disintegrate",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "! moving || buff.hover.remains > cast_time",
["action"] = "living_flame",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "moving & buff.hover.down",
["action"] = "azure_strike",
}, -- [14]
},
["precombat"] = {
{
["action"] = "blessing_of_the_bronze",
["enabled"] = true,
}, -- [1]
},
},
["spec"] = 1468,
},
["Fury"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230504,
["author"] = "SimC",
["desc"] = "2023-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\n\nactions+=/charge,if=time<=0.5||movement.distance>8\n## actions+=/heroic_leap,if=(raid_event.movement.distance>25&raid_event.movement.in>45)\nactions+=/pummel\nactions+=/spell_reflection\nactions+=/potion\nactions+=/conquerors_banner\nactions+=/algethar_puzzle_box,if=cooldown.recklessness.remains<3||(talent.anger_management&cooldown.avatar.remains<3)\nactions+=/irideus_fragment,if=buff.recklessness.up\nactions+=/manic_grieftorch,if=buff.avatar.down\nactions+=/gladiators_badge,if=cooldown.recklessness.remains>10&(buff.recklessness.up||boss&fight_remains<11||boss&fight_remains>65)\nactions+=/use_items\nactions+=/ravager,if=cooldown.recklessness.remains<3||buff.recklessness.up\nactions+=/arcane_torrent,if=rage<40&!buff.recklessness.up\nactions+=/lights_judgment,if=buff.recklessness.down\nactions+=/berserking,if=buff.recklessness.up\nactions+=/blood_fury\nactions+=/ancestral_call\nactions+=/fireblood\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.titans_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||boss&fight_remains<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.remains<gcd\nactions.multi_target+=/thunderous_roar,if=buff.enrage.up&(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\nactions.multi_target+=/bloodthirst,if=set_bonus.tier30_4pc&action.bloodthirst.crit_pct_current>=95\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.remains<gcd||(rage>110&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.remains<gcd\nactions.single_target+=/thunderous_roar,if=buff.enrage.up&(spell_targets.whirlwind>1||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.remains<gcd||rage.pct>85)\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\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.remains<gcd||rage.pct>85)\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"] = 20230504,
["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 6: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 18: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 18: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 19: Converted 'talent.annihilator' to 'talent.annihilator.enabled' (1x).\nLine 19: Converted 'talent.avatar' to 'talent.avatar.enabled' (1x).\nLine 20: 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",
["spec"] = 72,
["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",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "buff.ashen_juggernaut.up & buff.ashen_juggernaut.remains < gcd.max",
["action"] = "execute",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.enrage.up & ( spell_targets.whirlwind > 1 || raid_event.adds.in > 15 )",
["action"] = "thunderous_roar",
}, -- [3]
{
["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",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "talent.anger_management.enabled & ( buff.recklessness.up || buff.enrage.remains < gcd.max || rage.pct > 85 )",
["action"] = "rampage",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "set_bonus.tier30_4pc & action.bloodthirst.crit_pct_current >= 95",
["action"] = "bloodbath",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "set_bonus.tier30_4pc & action.bloodthirst.crit_pct_current >= 95",
["action"] = "bloodthirst",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "buff.enrage.up",
["action"] = "execute",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "buff.enrage.up || talent.tenderize.enabled",
["action"] = "onslaught",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "talent.wrath_and_fury.enabled & buff.enrage.up",
["action"] = "crushing_blow",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "talent.reckless_abandon.enabled & ( buff.recklessness.up || buff.enrage.remains < gcd.max || rage.pct > 85 )",
["action"] = "rampage",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "talent.anger_management.enabled",
["action"] = "rampage",
}, -- [12]
{
["action"] = "execute",
["enabled"] = true,
}, -- [13]
{
["enabled"] = true,
["criteria"] = "buff.enrage.up & talent.reckless_abandon.enabled & ! talent.wrath_and_fury.enabled",
["action"] = "bloodbath",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "buff.enrage.down || ( talent.annihilator.enabled & ! buff.recklessness.up )",
["action"] = "bloodthirst",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "charges > 1 & talent.wrath_and_fury.enabled",
["action"] = "raging_blow",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "charges > 1 & talent.wrath_and_fury.enabled",
["action"] = "crushing_blow",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "buff.enrage.down || ! talent.wrath_and_fury.enabled",
["action"] = "bloodbath",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "buff.enrage.up & talent.reckless_abandon.enabled",
["action"] = "crushing_blow",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "! talent.wrath_and_fury.enabled",
["action"] = "bloodthirst",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "charges > 1",
["action"] = "raging_blow",
}, -- [21]
{
["action"] = "rampage",
["enabled"] = true,
}, -- [22]
{
["enabled"] = true,
["criteria"] = "talent.annihilator.enabled",
["action"] = "slam",
}, -- [23]
{
["action"] = "bloodbath",
["enabled"] = true,
}, -- [24]
{
["action"] = "raging_blow",
["enabled"] = true,
}, -- [25]
{
["action"] = "crushing_blow",
["enabled"] = true,
}, -- [26]
{
["action"] = "bloodthirst",
["enabled"] = true,
}, -- [27]
{
["action"] = "whirlwind",
["enabled"] = true,
}, -- [28]
{
["action"] = "wrecking_throw",
["enabled"] = true,
}, -- [29]
{
["action"] = "storm_bolt",
["enabled"] = true,
}, -- [30]
},
["precombat"] = {
{
["action"] = "berserker_stance",
["enabled"] = true,
}, -- [1]
{
["action"] = "battle_shout",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["name"] = "algethar_puzzle_box",
["action"] = "algethar_puzzle_box",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "! talent.titans_torment.enabled",
["action"] = "avatar",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "! talent.reckless_abandon.enabled",
["action"] = "recklessness",
}, -- [5]
},
["default"] = {
{
["enabled"] = true,
["criteria"] = "time <= 0.5 || movement.distance > 8",
["action"] = "charge",
}, -- [1]
{
["action"] = "pummel",
["enabled"] = true,
}, -- [2]
{
["action"] = "spell_reflection",
["enabled"] = true,
}, -- [3]
{
["action"] = "potion",
["enabled"] = true,
}, -- [4]
{
["action"] = "conquerors_banner",
["enabled"] = true,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "cooldown.recklessness.remains < 3 || ( talent.anger_management.enabled & cooldown.avatar.remains < 3 )",
["action"] = "algethar_puzzle_box",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "buff.recklessness.up",
["action"] = "irideus_fragment",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "buff.avatar.down",
["action"] = "manic_grieftorch",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "cooldown.recklessness.remains > 10 & ( buff.recklessness.up || boss & fight_remains < 11 || boss & fight_remains > 65 )",
["action"] = "gladiators_badge",
}, -- [9]
{
["action"] = "use_items",
["enabled"] = true,
}, -- [10]
{
["enabled"] = true,
["criteria"] = "cooldown.recklessness.remains < 3 || buff.recklessness.up",
["action"] = "ravager",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "rage < 40 & ! buff.recklessness.up",
["action"] = "arcane_torrent",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "buff.recklessness.down",
["action"] = "lights_judgment",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "buff.recklessness.up",
["action"] = "berserking",
}, -- [14]
{
["action"] = "blood_fury",
["enabled"] = true,
}, -- [15]
{
["action"] = "ancestral_call",
["enabled"] = true,
}, -- [16]
{
["action"] = "fireblood",
["enabled"] = true,
}, -- [17]
{
["enabled"] = true,
["criteria"] = "talent.titans_torment.enabled & buff.enrage.up & raid_event.adds.in > 15 || ! talent.titans_torment.enabled & ( buff.recklessness.up || boss & fight_remains < 20 )",
["action"] = "avatar",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "! raid_event.adds.exists & ( talent.annihilator.enabled & cooldown.avatar.remains < 1 || cooldown.avatar.remains > 40 || ! talent.avatar.enabled || boss & fight_remains < 12 )",
["action"] = "recklessness",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "! raid_event.adds.exists & ! talent.annihilator.enabled || boss & fight_remains < 12",
["action"] = "recklessness",
}, -- [20]
{
["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",
}, -- [21]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "active_enemies > 2",
["list_name"] = "multi_target",
}, -- [22]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "single_target",
}, -- [23]
},
["multi_target"] = {
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in > 15 || active_enemies > 1 || boss & fight_remains < 12",
["action"] = "recklessness",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "active_enemies > 1 & talent.titanic_rage.enabled & ( ! buff.meat_cleaver.up || buff.avatar.up || buff.recklessness.up )",
["action"] = "odyns_fury",
}, -- [2]
{
["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",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.ashen_juggernaut.up & buff.ashen_juggernaut.remains < gcd.max",
["action"] = "execute",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.enrage.up & ( spell_targets.whirlwind > 1 || raid_event.adds.in > 15 )",
["action"] = "thunderous_roar",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "active_enemies > 1 & buff.enrage.up & raid_event.adds.in > 15",
["action"] = "odyns_fury",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "set_bonus.tier30_4pc & action.bloodthirst.crit_pct_current >= 95",
["action"] = "bloodbath",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "set_bonus.tier30_4pc & action.bloodthirst.crit_pct_current >= 95",
["action"] = "bloodthirst",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "talent.wrath_and_fury.enabled & buff.enrage.up",
["action"] = "crushing_blow",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "buff.enrage.up",
["action"] = "execute",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "buff.enrage.up & raid_event.adds.in > 15",
["action"] = "odyns_fury",
}, -- [11]
{
["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",
}, -- [12]
{
["action"] = "execute",
["enabled"] = true,
}, -- [13]
{
["enabled"] = true,
["criteria"] = "buff.enrage.up & talent.reckless_abandon.enabled & ! talent.wrath_and_fury.enabled",
["action"] = "bloodbath",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "buff.enrage.down || ( talent.annihilator.enabled & ! buff.recklessness.up )",
["action"] = "bloodthirst",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "! talent.annihilator.enabled & buff.enrage.up || talent.tenderize.enabled",
["action"] = "onslaught",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "charges > 1 & talent.wrath_and_fury.enabled",
["action"] = "raging_blow",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "charges > 1 & talent.wrath_and_fury.enabled",
["action"] = "crushing_blow",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "buff.enrage.down || ! talent.wrath_and_fury.enabled",
["action"] = "bloodbath",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "buff.enrage.up & talent.reckless_abandon.enabled",
["action"] = "crushing_blow",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "! talent.wrath_and_fury.enabled",
["action"] = "bloodthirst",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "charges >= 1",
["action"] = "raging_blow",
}, -- [22]
{
["action"] = "rampage",
["enabled"] = true,
}, -- [23]
{
["enabled"] = true,
["criteria"] = "talent.annihilator.enabled",
["action"] = "slam",
}, -- [24]
{
["action"] = "bloodbath",
["enabled"] = true,
}, -- [25]
{
["action"] = "raging_blow",
["enabled"] = true,
}, -- [26]
{
["action"] = "crushing_blow",
["enabled"] = true,
}, -- [27]
{
["action"] = "whirlwind",
["enabled"] = true,
}, -- [28]
},
},
},
["Brewmaster"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230508,
["author"] = "SimC",
["desc"] = "2023-05-08: SCK and Beacon to the Beyond changes.\n\n2023-02-26: Added Touch of Death back to the priority (appears to be missing from SimC).\n\nThe SimC Brewmaster priority uses Purifying Brew and Celestial Brew aggressively for DPS. The addon has pared this back to support survivability.",
["lists"] = {
["cooldowns_niuzao_woo"] = {
{
["enabled"] = true,
["criteria"] = "( talent.weapons_of_order.enabled ) & ( ( equipped.beacon_to_the_beyond & cooldown.beacon_to_the_beyond.remains < 30 ) || ( ! equipped.beacon_to_the_beyond ) )",
["action"] = "weapons_of_order",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "! buff.bonedust_brew.up & debuff.weapons_of_order_debuff.stack > 3",
["action"] = "bonedust_brew",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! buff.bonedust_brew.up & ! buff.weapons_of_order.up & cooldown.weapons_of_order.remains > 10",
["action"] = "bonedust_brew",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.bonedust_brew.up",
["action"] = "exploding_keg",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.weapons_of_order.remains <= 16 & talent.weapons_of_order.enabled",
["action"] = "invoke_niuzao_the_black_ox",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "! talent.weapons_of_order.enabled",
["action"] = "invoke_niuzao_the_black_ox",
}, -- [6]
},
["cooldowns_improved_niuzao_cta"] = {
{
["enabled"] = true,
["criteria"] = "( time - action.purifying_brew.last_used <= 5 ) & ( ( equipped.beacon_to_the_beyond & cooldown.beacon_to_the_beyond.remains < 30 ) || ( ! equipped.beacon_to_the_beyond ) )",
["action"] = "weapons_of_order",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "! buff.bonedust_brew.up & debuff.weapons_of_order_debuff.stack > 3",
["action"] = "bonedust_brew",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! buff.bonedust_brew.up & ! buff.weapons_of_order.up & cooldown.weapons_of_order.remains > 10",
["action"] = "bonedust_brew",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.bonedust_brew.up",
["action"] = "exploding_keg",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "buff.weapons_of_order.remains <= 30 - 17 & action.purifying_brew.last_used > action.weapons_of_order.last_used + 10 + 2 * 0.05",
["action"] = "invoke_niuzao_the_black_ox",
}, -- [5]
},
["rotation_boc_dfb"] = {
{
["action"] = "blackout_kick",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["criteria"] = "talent.rising_sun_kick.enabled",
["action"] = "rising_sun_kick",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "talent.rushing_jade_wind.enabled & buff.rushing_jade_wind.remains < 1",
["action"] = "rushing_jade_wind",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.blackout_combo.up",
["action"] = "breath_of_fire",
}, -- [4]
{
["action"] = "keg_smash",
["enabled"] = true,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "energy + energy.regen * ( cooldown.keg_smash.full_recharge_time * ( 1 - cooldown.keg_smash.charges_fractional ) ) >= 65 & talent.black_ox_brew.enabled",
["action"] = "black_ox_brew",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "talent.rushing_jade_wind.enabled",
["action"] = "rushing_jade_wind",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "active_enemies > 1 & energy + energy.regen * ( cooldown.keg_smash.full_recharge_time * ( 1 - cooldown.keg_smash.charges_fractional ) ) >= 65",
["action"] = "spinning_crane_kick",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "active_enemies > 1 || ( talent.walk_with_the_ox.enabled & talent.charred_passions.enabled )",
["action"] = "spinning_crane_kick",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "energy + energy.regen * ( cooldown.keg_smash.full_recharge_time * ( 1 - cooldown.keg_smash.charges_fractional ) ) >= 65",
["action"] = "expel_harm",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "active_enemies = 1",
["action"] = "tiger_palm",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "talent.celestial_brew.enabled & ! buff.blackout_combo.up",
["action"] = "celestial_brew",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "talent.chi_wave.enabled",
["action"] = "chi_wave",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "talent.chi_burst.enabled",
["action"] = "chi_burst",
}, -- [14]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "rotation_fallback",
}, -- [15]
},
["rotation_chp"] = {
{
["enabled"] = true,
["criteria"] = "! buff.charred_passions.up",
["action"] = "breath_of_fire",
}, -- [1]
{
["action"] = "blackout_kick",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "talent.rising_sun_kick.enabled",
["action"] = "rising_sun_kick",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "talent.rushing_jade_wind.enabled & buff.rushing_jade_wind.remains < 1",
["action"] = "rushing_jade_wind",
}, -- [4]
{
["action"] = "keg_smash",
["enabled"] = true,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "energy + energy.regen * ( cooldown.keg_smash.full_recharge_time * ( 1 - cooldown.keg_smash.charges_fractional ) ) >= 65 & talent.black_ox_brew.enabled",
["action"] = "black_ox_brew",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "talent.rushing_jade_wind.enabled",
["action"] = "rushing_jade_wind",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "active_enemies > 1 || ( talent.walk_with_the_ox.enabled & talent.charred_passions.enabled )",
["action"] = "spinning_crane_kick",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "energy + energy.regen * ( cooldown.keg_smash.full_recharge_time * ( 1 - cooldown.keg_smash.charges_fractional ) ) >= 65",
["action"] = "expel_harm",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "active_enemies = 1",
["action"] = "tiger_palm",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "talent.celestial_brew.enabled & ! buff.blackout_combo.up",
["action"] = "celestial_brew",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "talent.chi_wave.enabled",
["action"] = "chi_wave",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "talent.chi_burst.enabled",
["action"] = "chi_burst",
}, -- [13]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "rotation_fallback",
}, -- [14]
},
["default"] = {
{
["action"] = "spear_hand_strike",
["enabled"] = true,
}, -- [1]
{
["action"] = "diffuse_magic",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "settings.purify_for_celestial & ( time_to_max_charges < gcd.max || buff.purified_chi.up & buff.purified_chi.remains < 1.5 * gcd.max ) || cooldown.celestial_brew.remains < 2 * gcd.max & charges_fractional > 1.5",
["action"] = "purifying_brew",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "tanking & ( ! talent.improved_celestial_brew.enabled || buff.purified_chi.up ) & buff.blackout_combo.down",
["action"] = "celestial_brew",
}, -- [4]
{
["enabled"] = true,
["action"] = "purifying_brew",
["criteria"] = "talent.improved_invoke_niuzao_the_black_ox.enabled & settings.purify_for_niuzao & pet.niuzao_the_black_ox.active",
["line_cd"] = "5",
}, -- [5]
{
["enabled"] = true,
["description"] = "Use configured purify_stagger_currhp from Brewmaster options.",
["criteria"] = "group & buff.blackout_combo.down & settings.purify_stagger_currhp > 0 & stagger.pct >= settings.purify_stagger_currhp",
["action"] = "purifying_brew",
}, -- [6]
{
["enabled"] = true,
["description"] = "Use configured purify_stagger_currhp from Brewmaster options.",
["criteria"] = "solo & buff.blackout_combo.down & settings.purify_stagger_currhp > 0 & stagger.pct >= settings.purify_stagger_currhp * 0.5",
["action"] = "purifying_brew",
}, -- [7]
{
["enabled"] = true,
["description"] = "Use configured purify_stagger_maxhp from Brewmaster options.",
["criteria"] = "group & buff.blackout_combo.down & settings.purify_stagger_maxhp > 0 & stagger.pct >= settings.purify_stagger_maxhp",
["action"] = "purifying_brew",
}, -- [8]
{
["enabled"] = true,
["description"] = "Use configured purify_stagger_maxhp from Brewmaster options.",
["criteria"] = "solo & buff.blackout_combo.down & settings.purify_stagger_maxhp > 0 & stagger.pct >= settings.purify_stagger_maxhp * 0.5",
["action"] = "purifying_brew",
}, -- [9]
{
["enabled"] = true,
["description"] = "Stagger % of 20 will kill you in 2.5 seconds without healing or purifying. Used when purify_stagger_currhp and maxhp are disabled.",
["criteria"] = "group & buff.blackout_combo.down & settings.purify_stagger_currhp = 0 & settings.purify_stagger_maxhp = 0 & stagger.pct > 20",
["action"] = "purifying_brew",
}, -- [10]
{
["enabled"] = true,
["description"] = "Stagger % of 10 will kill you in 5 seconds without healing or purifying. Used when purify_stagger_currhp and maxhp are disabled.",
["criteria"] = "solo & buff.blackout_combo.down & settings.purify_stagger_currhp = 0 & settings.purify_stagger_maxhp = 0 & stagger.pct > 10",
["action"] = "purifying_brew",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "health.pct < 75 & incoming_damage_3s > health.max * ( 0.2 + ( 0.2 * group ) ) & buff.fortifying_brew.down",
["action"] = "dampen_harm",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "health.pct < 50 & incoming_damage_3s > health.max * ( 0.2 + ( 0.2 * group ) ) & ( buff.dampen_harm.down )",
["action"] = "fortifying_brew",
}, -- [13]
{
["action"] = "potion",
["enabled"] = true,
}, -- [14]
{
["enabled"] = true,
["criteria"] = "talent.summon_white_tiger_statue.enabled",
["action"] = "summon_white_tiger_statue",
}, -- [15]
{
["action"] = "touch_of_death",
["enabled"] = true,
}, -- [16]
{
["enabled"] = true,
["criteria"] = "debuff.weapons_of_order_debuff.stack > 3 || talent.weapons_of_order.enabled || boss & fight_remains < 25",
["action"] = "use_items",
}, -- [17]
{
["action"] = "blood_fury",
["enabled"] = true,
}, -- [18]
{
["action"] = "berserking",
["enabled"] = true,
}, -- [19]
{
["action"] = "lights_judgment",
["enabled"] = true,
}, -- [20]
{
["action"] = "fireblood",
["enabled"] = true,
}, -- [21]
{
["action"] = "ancestral_call",
["enabled"] = true,
}, -- [22]
{
["action"] = "bag_of_tricks",
["enabled"] = true,
}, -- [23]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "( talent.invoke_niuzao_the_black_ox.rank + talent.improved_invoke_niuzao_the_black_ox.rank ) = 2 & ( talent.weapons_of_order.rank + talent.call_to_arms.rank ) <= 1",
["list_name"] = "cooldowns_improved_niuzao_woo",
}, -- [24]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "( talent.invoke_niuzao_the_black_ox.rank + talent.improved_invoke_niuzao_the_black_ox.rank ) = 2 & ( talent.weapons_of_order.rank + talent.call_to_arms.rank ) = 2",
["list_name"] = "cooldowns_improved_niuzao_cta",
}, -- [25]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "( talent.invoke_niuzao_the_black_ox.rank + talent.improved_invoke_niuzao_the_black_ox.rank ) <= 1",
["list_name"] = "cooldowns_niuzao_woo",
}, -- [26]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "talent.blackout_combo.enabled & talent.dragonfire_brew.enabled & talent.salsalabims_strength.enabled",
["list_name"] = "rotation_boc_dfb",
}, -- [27]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "talent.dragonfire_brew.enabled & talent.salsalabims_strength.enabled",
["list_name"] = "rotation_dfb",
}, -- [28]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "talent.charred_passions.enabled & talent.salsalabims_strength.enabled",
["list_name"] = "rotation_chp",
}, -- [29]
},
["precombat"] = {
{
["action"] = "potion",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["criteria"] = "talent.chi_burst.enabled",
["action"] = "chi_burst",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "talent.chi_wave.enabled",
["action"] = "chi_wave",
}, -- [3]
},
["rotation_fallback"] = {
{
["enabled"] = true,
["criteria"] = "talent.rising_sun_kick.enabled",
["action"] = "rising_sun_kick",
}, -- [1]
{
["action"] = "keg_smash",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "talent.breath_of_fire.enabled",
["action"] = "breath_of_fire",
}, -- [3]
{
["action"] = "blackout_kick",
["enabled"] = true,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "energy + energy.regen * ( cooldown.keg_smash.remains + execute_time ) >= 65 & talent.black_ox_brew.enabled",
["action"] = "black_ox_brew",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "talent.rushing_jade_wind.enabled",
["action"] = "rushing_jade_wind",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "active_enemies > 1 || ( talent.walk_with_the_ox.enabled & talent.charred_passions.enabled )",
["action"] = "spinning_crane_kick",
}, -- [7]
{
["action"] = "expel_harm",
["enabled"] = true,
}, -- [8]
{
["enabled"] = true,
["criteria"] = "active_enemies = 1",
["action"] = "tiger_palm",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "! buff.blackout_combo.up & talent.celestial_brew.enabled",
["action"] = "celestial_brew",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "talent.chi_wave.enabled",
["action"] = "chi_wave",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "talent.chi_burst.enabled",
["action"] = "chi_burst",
}, -- [12]
},
["cooldowns_improved_niuzao_woo"] = {
{
["enabled"] = true,
["criteria"] = "( talent.weapons_of_order.enabled ) & ( ( equipped.beacon_to_the_beyond & cooldown.beacon_to_the_beyond.remains < 30 ) || ( ! equipped.beacon_to_the_beyond ) )",
["action"] = "weapons_of_order",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "! buff.bonedust_brew.up & debuff.weapons_of_order_debuff.stack > 3",
["action"] = "bonedust_brew",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! buff.bonedust_brew.up & ! buff.weapons_of_order.up & cooldown.weapons_of_order.remains > 10",
["action"] = "bonedust_brew",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.bonedust_brew.up",
["action"] = "exploding_keg",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "time - action.purifying_brew.last_used <= 5",
["action"] = "invoke_niuzao_the_black_ox",
}, -- [5]
},
["rotation_dfb"] = {
{
["action"] = "blackout_kick",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["criteria"] = "talent.rising_sun_kick.enabled",
["action"] = "rising_sun_kick",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "talent.rushing_jade_wind.enabled & buff.rushing_jade_wind.remains < 1",
["action"] = "rushing_jade_wind",
}, -- [3]
{
["action"] = "breath_of_fire",
["enabled"] = true,
}, -- [4]
{
["action"] = "keg_smash",
["enabled"] = true,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "energy + energy.regen * ( cooldown.keg_smash.full_recharge_time * ( 1 - cooldown.keg_smash.charges_fractional ) ) >= 65 & talent.black_ox_brew.enabled",
["action"] = "black_ox_brew",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "talent.rushing_jade_wind.enabled",
["action"] = "rushing_jade_wind",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "active_enemies > 1 || ( talent.walk_with_the_ox.enabled & talent.charred_passions.enabled )",
["action"] = "spinning_crane_kick",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "energy + energy.regen * ( cooldown.keg_smash.full_recharge_time * ( 1 - cooldown.keg_smash.charges_fractional ) ) >= 65",
["action"] = "expel_harm",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "active_enemies = 1",
["action"] = "tiger_palm",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "talent.celestial_brew.enabled",
["action"] = "celestial_brew",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "talent.chi_wave.enabled",
["action"] = "chi_wave",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "talent.chi_burst.enabled",
["action"] = "chi_burst",
}, -- [13]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "rotation_fallback",
}, -- [14]
},
},
["version"] = 20230508,
["warnings"] = "The import for 'cooldowns_niuzao_woo' required some automated changes.\nLine 1: Converted 'trinket.beacon_to_the_beyond.cooldown.remains' to 'cooldown.beacon_to_the_beyond.remains'.\n\nThe import for 'cooldowns_improved_niuzao_cta' required some automated changes.\nLine 1: Converted 'trinket.beacon_to_the_beyond.cooldown.remains' to 'cooldown.beacon_to_the_beyond.remains'.\n\nThe import for 'default' required some automated changes.\nLine 4: Converted 'talent.improved_celestial_brew' to 'talent.improved_celestial_brew.enabled' (1x).\nLine 5: Converted 'talent.improved_invoke_niuzao_the_black_ox' to 'talent.improved_invoke_niuzao_the_black_ox.enabled' (1x).\nLine 17: Converted 'talent.weapons_of_order' to 'talent.weapons_of_order.enabled' (1x).\n\nThe import for 'cooldowns_improved_niuzao_woo' required some automated changes.\nLine 1: Converted 'trinket.beacon_to_the_beyond.cooldown.remains' to 'cooldown.beacon_to_the_beyond.remains'.\n\nImported 9 action lists.\n",
["profile"] = "actions.precombat+=/potion\nactions.precombat+=/chi_burst,if=talent.chi_burst.enabled\nactions.precombat+=/chi_wave,if=talent.chi_wave.enabled\n## Blackout Combo\n## actions.precombat+=/variable,name=boc_count,op=set,value=0\n\nactions+=/spear_hand_strike\nactions+=/diffuse_magic\nactions+=/purifying_brew,if=settings.purify_for_celestial&(time_to_max_charges<gcd.max||buff.purified_chi.up&buff.purified_chi.remains<1.5*gcd.max)||cooldown.celestial_brew.remains<2*gcd.max&charges_fractional>1.5\nactions+=/celestial_brew,if=tanking&(!talent.improved_celestial_brew||buff.purified_chi.up)&buff.blackout_combo.down\nactions+=/purifying_brew,line_cd=5,if=talent.improved_invoke_niuzao_the_black_ox&settings.purify_for_niuzao&pet.niuzao_the_black_ox.active\n# Use configured purify_stagger_currhp from Brewmaster options.\nactions+=/purifying_brew,if=group&buff.blackout_combo.down&settings.purify_stagger_currhp>0&stagger.pct>=settings.purify_stagger_currhp\n# Use configured purify_stagger_currhp from Brewmaster options.\nactions+=/purifying_brew,if=solo&buff.blackout_combo.down&settings.purify_stagger_currhp>0&stagger.pct>=settings.purify_stagger_currhp*0.5\n# Use configured purify_stagger_maxhp from Brewmaster options.\nactions+=/purifying_brew,if=group&buff.blackout_combo.down&settings.purify_stagger_maxhp>0&stagger.pct>=settings.purify_stagger_maxhp\n# Use configured purify_stagger_maxhp from Brewmaster options.\nactions+=/purifying_brew,if=solo&buff.blackout_combo.down&settings.purify_stagger_maxhp>0&stagger.pct>=settings.purify_stagger_maxhp*0.5\n# Stagger % of 20 will kill you in 2.5 seconds without healing or purifying. Used when purify_stagger_currhp and maxhp are disabled.\nactions+=/purifying_brew,if=group&buff.blackout_combo.down&settings.purify_stagger_currhp=0&settings.purify_stagger_maxhp=0&stagger.pct>20\n# Stagger % of 10 will kill you in 5 seconds without healing or purifying. Used when purify_stagger_currhp and maxhp are disabled.\nactions+=/purifying_brew,if=solo&buff.blackout_combo.down&settings.purify_stagger_currhp=0&settings.purify_stagger_maxhp=0&stagger.pct>10\nactions+=/dampen_harm,if=health.pct<75&incoming_damage_3s>health.max*(0.2+(0.2*group))&buff.fortifying_brew.down\nactions+=/fortifying_brew,if=health.pct<50&incoming_damage_3s>health.max*(0.2+(0.2*group))&(buff.dampen_harm.down)\nactions+=/potion\nactions+=/summon_white_tiger_statue,if=talent.summon_white_tiger_statue.enabled\nactions+=/touch_of_death\nactions+=/use_items,if=debuff.weapons_of_order_debuff.stack>3||talent.weapons_of_order||boss&fight_remains<25\nactions+=/blood_fury\nactions+=/berserking\nactions+=/lights_judgment\nactions+=/fireblood\nactions+=/ancestral_call\nactions+=/bag_of_tricks\nactions+=/call_action_list,name=cooldowns_improved_niuzao_woo,strict=1,if=(talent.invoke_niuzao_the_black_ox.rank+talent.improved_invoke_niuzao_the_black_ox.rank)=2&(talent.weapons_of_order.rank+talent.call_to_arms.rank)<=1\nactions+=/call_action_list,name=cooldowns_improved_niuzao_cta,strict=1,if=(talent.invoke_niuzao_the_black_ox.rank+talent.improved_invoke_niuzao_the_black_ox.rank)=2&(talent.weapons_of_order.rank+talent.call_to_arms.rank)=2\nactions+=/call_action_list,name=cooldowns_niuzao_woo,strict=1,if=(talent.invoke_niuzao_the_black_ox.rank+talent.improved_invoke_niuzao_the_black_ox.rank)<=1\nactions+=/call_action_list,name=rotation_boc_dfb,strict=1,if=talent.blackout_combo.enabled&talent.dragonfire_brew.enabled&talent.salsalabims_strength.enabled\nactions+=/call_action_list,name=rotation_dfb,strict=1,if=talent.dragonfire_brew.enabled&talent.salsalabims_strength.enabled\nactions+=/call_action_list,name=rotation_chp,strict=1,if=talent.charred_passions.enabled&talent.salsalabims_strength.enabled\n\n## Use <a href='https://www.wowhead.com/spell=10060/power-infusion'>Power Infusion</a> when <a href='https://www.wowhead.com/spell=387184/weapons-of-order'>Weapons of Order</a> reaches 4 stacks.\n## actions.cooldowns_niuzao_woo+=/invoke_external_buff,name=power_infusion,if=buff.weapons_of_order.remains<=20\nactions.cooldowns_niuzao_woo+=/weapons_of_order,if=(talent.weapons_of_order.enabled)&((equipped.beacon_to_the_beyond&trinket.beacon_to_the_beyond.cooldown.remains<30)||(!equipped.beacon_to_the_beyond))\nactions.cooldowns_niuzao_woo+=/bonedust_brew,if=!buff.bonedust_brew.up&debuff.weapons_of_order_debuff.stack>3\nactions.cooldowns_niuzao_woo+=/bonedust_brew,if=!buff.bonedust_brew.up&!buff.weapons_of_order.up&cooldown.weapons_of_order.remains>10\nactions.cooldowns_niuzao_woo+=/exploding_keg,if=buff.bonedust_brew.up\nactions.cooldowns_niuzao_woo+=/invoke_niuzao_the_black_ox,if=buff.weapons_of_order.remains<=16&talent.weapons_of_order.enabled\nactions.cooldowns_niuzao_woo+=/invoke_niuzao_the_black_ox,if=!talent.weapons_of_order.enabled\n## actions.cooldowns_niuzao_woo+=/purifying_brew,if=stagger.amounttototalpct>=0.7&!buff.blackout_combo.up\n## actions.cooldowns_niuzao_woo+=/purifying_brew,if=cooldown.purifying_brew.remains_expected<5&!buff.blackout_combo.up\n\n## Use <a href='https://www.wowhead.com/spell=10060/power-infusion'>Power Infusion</a> when <a href='https://www.wowhead.com/spell=387184/weapons-of-order'>Weapons of Order</a> reaches 4 stacks.\n## actions.cooldowns_improved_niuzao_woo+=/invoke_external_buff,name=power_infusion,if=buff.weapons_of_order.remains<=20\n## actions.cooldowns_improved_niuzao_woo+=/variable,name=pb_in_window,op=set,value=floor(cooldown.purifying_brew.charges_fractional+(20+4*0.05)%cooldown.purifying_brew.duration%0.65),if=prev.invoke_niuzao_the_black_ox\n## actions.cooldowns_improved_niuzao_woo+=/variable,name=pb_in_window,op=sub,value=1,if=prev.purifying_brew&time-action.invoke_niuzao_the_black_ox.last_used<=20+4*0.05\n## actions.cooldowns_improved_niuzao_woo+=/purifying_brew,if=(time-action.purifying_brew.last_used>=20+4*0.05-time+action.invoke_niuzao_the_black_ox.last_used%variable.pb_in_window&time-action.invoke_niuzao_the_black_ox.last_used<=20+4*0.05)\n## actions.cooldowns_improved_niuzao_woo+=/purifying_brew,use_off_gcd=1,if=(variable.pb_in_window=0&20+4*0.05-time+action.invoke_niuzao_the_black_ox.last_used<1&20+4*0.05-time+action.invoke_niuzao_the_black_ox.last_used>0)\nactions.cooldowns_improved_niuzao_woo+=/weapons_of_order,if=(talent.weapons_of_order.enabled)&((equipped.beacon_to_the_beyond&trinket.beacon_to_the_beyond.cooldown.remains<30)||(!equipped.beacon_to_the_beyond))\nactions.cooldowns_improved_niuzao_woo+=/bonedust_brew,if=!buff.bonedust_brew.up&debuff.weapons_of_order_debuff.stack>3\nactions.cooldowns_improved_niuzao_woo+=/bonedust_brew,if=!buff.bonedust_brew.up&!buff.weapons_of_order.up&cooldown.weapons_of_order.remains>10\nactions.cooldowns_improved_niuzao_woo+=/exploding_keg,if=buff.bonedust_brew.up\n## actions.cooldowns_improved_niuzao_woo+=/purifying_brew,if=cooldown.invoke_niuzao_the_black_ox.remains<=3.5&time-action.purifying_brew.last_used>=3.5+cooldown.invoke_niuzao_the_black_ox.remains\nactions.cooldowns_improved_niuzao_woo+=/invoke_niuzao_the_black_ox,if=time-action.purifying_brew.last_used<=5\n## actions.cooldowns_improved_niuzao_woo+=/purifying_brew,if=cooldown.purifying_brew.full_recharge_time*2<=cooldown.invoke_niuzao_the_black_ox.remains-3.5\n\n## Use <a href='https://www.wowhead.com/spell=10060/power-infusion'>Power Infusion</a> when <a href='https://www.wowhead.com/spell=387184/weapons-of-order'>Weapons of Order</a> reaches 4 stacks.\n## actions.cooldowns_improved_niuzao_cta+=/invoke_external_buff,name=power_infusion,if=buff.weapons_of_order.remains<=20\n## actions.cooldowns_improved_niuzao_cta+=/variable,name=pb_in_window,op=set,value=floor(cooldown.purifying_brew.charges_fractional+(10+2*0.05)%cooldown.purifying_brew.duration%0.65),if=prev.weapons_of_order\n## actions.cooldowns_improved_niuzao_cta+=/variable,name=pb_in_window,op=set,value=floor(cooldown.purifying_brew.charges_fractional+(20+4*0.05)%cooldown.purifying_brew.duration%0.65),if=prev.invoke_niuzao_the_black_ox\n## actions.cooldowns_improved_niuzao_cta+=/variable,name=pb_in_window,op=sub,value=1,if=prev.purifying_brew&(time-action.weapons_of_order.last_used<=10+2*0.05||time-action.invoke_niuzao_the_black_ox.last_used<=20+4*0.05)\n## actions.cooldowns_improved_niuzao_cta+=/purifying_brew,if=(time-action.purifying_brew.last_used>=10+2*0.05-time+action.weapons_of_order.last_used%variable.pb_in_window&time-action.weapons_of_order.last_used<=10+2*0.05)\n## actions.cooldowns_improved_niuzao_cta+=/purifying_brew,if=(time-action.purifying_brew.last_used>=20+4*0.05-time+action.invoke_niuzao_the_black_ox.last_used%variable.pb_in_window&time-action.invoke_niuzao_the_black_ox.last_used<=20+4*0.05)\n## actions.cooldowns_improved_niuzao_cta+=/purifying_brew,use_off_gcd=1,if=(variable.pb_in_window=0&20+4*0.05-time+action.invoke_niuzao_the_black_ox.last_used<1&20+4*0.05-time+action.invoke_niuzao_the_black_ox.last_used>0)\n## actions.cooldowns_improved_niuzao_cta+=/purifying_brew,if=cooldown.weapons_of_order.remains<=3.5&time-action.purifying_brew.last_used>=3.5+cooldown.weapons_of_order.remains\nactions.cooldowns_improved_niuzao_cta+=/weapons_of_order,if=(time-action.purifying_brew.last_used<=5)&((equipped.beacon_to_the_beyond&trinket.beacon_to_the_beyond.cooldown.remains<30)||(!equipped.beacon_to_the_beyond))\nactions.cooldowns_improved_niuzao_cta+=/bonedust_brew,if=!buff.bonedust_brew.up&debuff.weapons_of_order_debuff.stack>3\nactions.cooldowns_improved_niuzao_cta+=/bonedust_brew,if=!buff.bonedust_brew.up&!buff.weapons_of_order.up&cooldown.weapons_of_order.remains>10\nactions.cooldowns_improved_niuzao_cta+=/exploding_keg,if=buff.bonedust_brew.up\n## actions.cooldowns_improved_niuzao_cta+=/purifying_brew,if=cooldown.invoke_niuzao_the_black_ox.remains<=3.5&time-action.purifying_brew.last_used>=3.5+cooldown.invoke_niuzao_the_black_ox.remains&buff.weapons_of_order.remains<=30-17\nactions.cooldowns_improved_niuzao_cta+=/invoke_niuzao_the_black_ox,if=buff.weapons_of_order.remains<=30-17&action.purifying_brew.last_used>action.weapons_of_order.last_used+10+2*0.05\n## actions.cooldowns_improved_niuzao_cta+=/purifying_brew,if=cooldown.purifying_brew.full_recharge_time*2<=cooldown.weapons_of_order.remains-3.5&cooldown.purifying_brew.full_recharge_time*2<=cooldown.invoke_niuzao_the_black_ox.remains-3.5\n\nactions.rotation_boc_dfb+=/blackout_kick\nactions.rotation_boc_dfb+=/rising_sun_kick,if=talent.rising_sun_kick.enabled\nactions.rotation_boc_dfb+=/rushing_jade_wind,if=talent.rushing_jade_wind.enabled&buff.rushing_jade_wind.remains<1\nactions.rotation_boc_dfb+=/breath_of_fire,if=buff.blackout_combo.up\nactions.rotation_boc_dfb+=/keg_smash\nactions.rotation_boc_dfb+=/black_ox_brew,if=energy+energy.regen*(cooldown.keg_smash.full_recharge_time*(1-cooldown.keg_smash.charges_fractional))>=65&talent.black_ox_brew.enabled\nactions.rotation_boc_dfb+=/rushing_jade_wind,if=talent.rushing_jade_wind.enabled\nactions.rotation_boc_dfb+=/spinning_crane_kick,if=active_enemies>1&energy+energy.regen*(cooldown.keg_smash.full_recharge_time*(1-cooldown.keg_smash.charges_fractional))>=65\nactions.rotation_boc_dfb+=/spinning_crane_kick,if=active_enemies>1||(talent.walk_with_the_ox.enabled&talent.charred_passions.enabled)\nactions.rotation_boc_dfb+=/expel_harm,if=energy+energy.regen*(cooldown.keg_smash.full_recharge_time*(1-cooldown.keg_smash.charges_fractional))>=65\nactions.rotation_boc_dfb+=/tiger_palm,if=active_enemies=1\nactions.rotation_boc_dfb+=/celestial_brew,if=talent.celestial_brew.enabled&!buff.blackout_combo.up\nactions.rotation_boc_dfb+=/chi_wave,if=talent.chi_wave.enabled\nactions.rotation_boc_dfb+=/chi_burst,if=talent.chi_burst.enabled\nactions.rotation_boc_dfb+=/call_action_list,name=rotation_fallback\n\nactions.rotation_dfb+=/blackout_kick\nactions.rotation_dfb+=/rising_sun_kick,if=talent.rising_sun_kick.enabled\nactions.rotation_dfb+=/rushing_jade_wind,if=talent.rushing_jade_wind.enabled&buff.rushing_jade_wind.remains<1\nactions.rotation_dfb+=/breath_of_fire\nactions.rotation_dfb+=/keg_smash\nactions.rotation_dfb+=/black_ox_brew,if=energy+energy.regen*(cooldown.keg_smash.full_recharge_time*(1-cooldown.keg_smash.charges_fractional))>=65&talent.black_ox_brew.enabled\nactions.rotation_dfb+=/rushing_jade_wind,if=talent.rushing_jade_wind.enabled\nactions.rotation_dfb+=/spinning_crane_kick,if=active_enemies>1||(talent.walk_with_the_ox.enabled&talent.charred_passions.enabled)\nactions.rotation_dfb+=/expel_harm,if=energy+energy.regen*(cooldown.keg_smash.full_recharge_time*(1-cooldown.keg_smash.charges_fractional))>=65\nactions.rotation_dfb+=/tiger_palm,if=active_enemies=1\nactions.rotation_dfb+=/celestial_brew,if=talent.celestial_brew.enabled\nactions.rotation_dfb+=/chi_wave,if=talent.chi_wave.enabled\nactions.rotation_dfb+=/chi_burst,if=talent.chi_burst.enabled\nactions.rotation_dfb+=/call_action_list,name=rotation_fallback\n\nactions.rotation_chp+=/breath_of_fire,if=!buff.charred_passions.up\nactions.rotation_chp+=/blackout_kick\nactions.rotation_chp+=/rising_sun_kick,if=talent.rising_sun_kick.enabled\nactions.rotation_chp+=/rushing_jade_wind,if=talent.rushing_jade_wind.enabled&buff.rushing_jade_wind.remains<1\nactions.rotation_chp+=/keg_smash\nactions.rotation_chp+=/black_ox_brew,if=energy+energy.regen*(cooldown.keg_smash.full_recharge_time*(1-cooldown.keg_smash.charges_fractional))>=65&talent.black_ox_brew.enabled\nactions.rotation_chp+=/rushing_jade_wind,if=talent.rushing_jade_wind.enabled\nactions.rotation_chp+=/spinning_crane_kick,if=active_enemies>1||(talent.walk_with_the_ox.enabled&talent.charred_passions.enabled)\nactions.rotation_chp+=/expel_harm,if=energy+energy.regen*(cooldown.keg_smash.full_recharge_time*(1-cooldown.keg_smash.charges_fractional))>=65\nactions.rotation_chp+=/tiger_palm,if=active_enemies=1\nactions.rotation_chp+=/celestial_brew,if=talent.celestial_brew.enabled&!buff.blackout_combo.up\nactions.rotation_chp+=/chi_wave,if=talent.chi_wave.enabled\nactions.rotation_chp+=/chi_burst,if=talent.chi_burst.enabled\nactions.rotation_chp+=/call_action_list,name=rotation_fallback\n\nactions.rotation_fallback+=/rising_sun_kick,if=talent.rising_sun_kick.enabled\nactions.rotation_fallback+=/keg_smash\nactions.rotation_fallback+=/breath_of_fire,if=talent.breath_of_fire.enabled\nactions.rotation_fallback+=/blackout_kick\nactions.rotation_fallback+=/black_ox_brew,if=energy+energy.regen*(cooldown.keg_smash.remains+execute_time)>=65&talent.black_ox_brew.enabled\nactions.rotation_fallback+=/rushing_jade_wind,if=talent.rushing_jade_wind.enabled\nactions.rotation_fallback+=/spinning_crane_kick,if=active_enemies>1||(talent.walk_with_the_ox.enabled&talent.charred_passions.enabled)\nactions.rotation_fallback+=/expel_harm\nactions.rotation_fallback+=/tiger_palm,if=active_enemies=1\nactions.rotation_fallback+=/celestial_brew,if=!buff.blackout_combo.up&talent.celestial_brew.enabled\nactions.rotation_fallback+=/chi_wave,if=talent.chi_wave.enabled\nactions.rotation_fallback+=/chi_burst,if=talent.chi_burst.enabled",
["spec"] = 268,
},
["Havoc"] = {
["source"] = "SimulationCraft",
["builtIn"] = true,
["date"] = 20230227,
["spec"] = 577,
["desc"] = "2023-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.\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.",
["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,if=fury.deficit>15\nactions.precombat+=/use_item,name=algethar_puzzle_box,if=cooldown.metamorphosis.remains<5\nactions.precombat+=/sigil_of_flame\nactions.precombat+=/immolation_aura\n\nactions=disrupt\nactions+=/consume_magic\n# Blade Dance with First Blood, Trail of Ruin, or at 2+ targets\nactions+=/variable,name=blade_dance,value=talent.first_blood||talent.trail_of_ruin||talent.chaos_theory&buff.chaos_theory.down||spell_targets.blade_dance1>1\nactions+=/variable,name=pooling_for_blade_dance,value=variable.blade_dance&fury<(75-talent.demon_blades*20)&cooldown.blade_dance.remains<gcd.max\nactions+=/variable,name=pooling_for_eye_beam,value=talent.demonic&!talent.blind_fury&cooldown.eye_beam.remains<(gcd.max*2)&fury.deficit>20\nactions+=/variable,name=waiting_for_momentum,value=talent.momentum&!buff.momentum.up\nactions+=/call_action_list,name=cooldown,if=gcd.remains=0\n## actions+=/pick_up_fragment,type=demon,if=demon_soul_fragments>0\n## actions+=/pick_up_fragment,mode=nearest,if=talent.demonic_appetite&fury.deficit>=35&(!cooldown.eye_beam.ready||fury<30)\nactions+=/annihilation,if=buff.inner_demon.up&cooldown.metamorphosis.remains<=gcd*3\nactions+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&talent.essence_break&time>1&gcd.remains<0.4&(cooldown.essence_break.remains>15||cooldown.essence_break.remains<gcd.max&(!talent.demonic||buff.metamorphosis.up||cooldown.eye_beam.remains>15+(10*talent.cycle_of_hatred)))\nactions+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&!talent.essence_break&time>1&!buff.momentum.up\nactions+=/fel_rush,if=(buff.unbound_chaos.up||variable.waiting_for_momentum&(!talent.unbound_chaos||!cooldown.immolation_aura.ready))&(charges=2||(raid_event.movement.in>10&raid_event.adds.in>10))\n# Essence Break allowed without Momentum/Tactical Retreat if Fel Rush and Vengeful Retreat are disabled.\nactions+=/essence_break,if=(active_enemies>desired_targets||raid_event.adds.in>40)&(!variable.waiting_for_momentum||action.fel_rush.disabled&action.vengeful_retreat.disabled)&fury>40&(cooldown.eye_beam.remains>8||buff.metamorphosis.up)&(!talent.tactical_retreat||buff.tactical_retreat.up||action.vengeful_retreat.disabled)\nactions+=/death_sweep,if=variable.blade_dance&(!talent.essence_break||cooldown.essence_break.remains>(cooldown.death_sweep.duration-4))\nactions+=/fel_barrage,if=active_enemies>desired_targets||raid_event.adds.in>30\nactions+=/glaive_tempest,if=active_enemies>desired_targets||raid_event.adds.in>10\nactions+=/annihilation,if=buff.inner_demon.up&cooldown.eye_beam.remains<=gcd\nactions+=/eye_beam,if=active_enemies>desired_targets||raid_event.adds.in>(40-talent.cycle_of_hatred*15)&!debuff.essence_break.up\nactions+=/blade_dance,if=variable.blade_dance&(cooldown.eye_beam.remains>5||!talent.demonic||(raid_event.adds.in>cooldown&raid_event.adds.in<25))\nactions+=/throw_glaive,if=talent.soulrend&(active_enemies>desired_targets||raid_event.adds.in>full_recharge_time+9)&spell_targets>=(2-talent.furious_throws)&!debuff.essence_break.up\nactions+=/annihilation,if=!variable.pooling_for_blade_dance\nactions+=/throw_glaive,if=talent.serrated_glaive&cooldown.eye_beam.remains<4&!debuff.serrated_glaive.up&!debuff.essence_break.up\nactions+=/immolation_aura,if=!buff.immolation_aura.up&(!talent.ragefire||active_enemies>desired_targets||raid_event.adds.in>15)\nactions+=/fel_rush,if=talent.isolated_prey&active_enemies=1&fury.deficit>=35\nactions+=/felblade,if=fury.deficit>=40\nactions+=/sigil_of_flame,if=active_enemies>desired_targets\nactions+=/chaos_strike,if=!variable.pooling_for_blade_dance&!variable.pooling_for_eye_beam\nactions+=/fel_rush,if=settings.fel_rush_filler&!talent.momentum&talent.demon_blades&!cooldown.eye_beam.ready&(charges=2||(raid_event.movement.in>10&raid_event.adds.in>10))\nactions+=/demons_bite,cycle_targets=1,if=talent.burning_wound&debuff.burning_wound.remains<4&active_dot.burning_wound<(spell_targets>?3)\nactions+=/fel_rush,if=settings.fel_rush_filler&!talent.momentum&!talent.demon_blades&spell_targets>1&(charges=2||(raid_event.movement.in>10&raid_event.adds.in>10))\nactions+=/sigil_of_flame,if=raid_event.adds.in>15&fury.deficit>=30\nactions+=/demons_bite\nactions+=/fel_rush,if=settings.fel_rush_filler&(movement.distance>15||(buff.out_of_range.up&!talent.momentum))\nactions+=/vengeful_retreat,if=settings.retreat_filler&!talent.initiative&movement.distance>15\nactions+=/throw_glaive,if=(talent.demon_blades||buff.out_of_range.up)&!debuff.essence_break.up\n\nactions.cooldown+=/sigil_of_misery,if=talent.misery_in_defeat&!target.is_boss&target.time_to_die>10&(cooldown.metamorphosis.remains<6||talent.demonic&cooldown.eye_beam.remains<6||buff.metamorphosis.remains>10)\n# Cast Metamorphosis if we will get a full Eye Beam refresh or if the encounter is almost over\nactions.cooldown+=/metamorphosis,if=!talent.demonic&((!talent.chaotic_transformation||cooldown.eye_beam.remains>20)&active_enemies>desired_targets||raid_event.adds.in>60||boss&fight_remains<25)\nactions.cooldown+=/metamorphosis,if=talent.demonic&(!talent.chaotic_transformation||cooldown.eye_beam.remains>20&(!variable.blade_dance||cooldown.blade_dance.remains>gcd.max)||boss&fight_remains<25)\nactions.cooldown+=/potion,if=buff.metamorphosis.remains>25||buff.metamorphosis.up&cooldown.metamorphosis.ready||boss&fight_remains<60\n# Default use item logic\nactions.cooldown+=/use_items,slots=trinket1,if=variable.trinket_sync_slot=1&(buff.metamorphosis.up||(!talent.demonic.enabled&cooldown.metamorphosis.remains>(fight_remains>?trinket.1.cooldown.duration%2))||fight_remains<=20)||(variable.trinket_sync_slot=2&!trinket.2.cooldown.ready)||!variable.trinket_sync_slot\nactions.cooldown+=/use_items,slots=trinket2,if=variable.trinket_sync_slot=2&(buff.metamorphosis.up||(!talent.demonic.enabled&cooldown.metamorphosis.remains>(fight_remains>?trinket.2.cooldown.duration%2))||fight_remains<=20)||(variable.trinket_sync_slot=1&!trinket.1.cooldown.ready)||!variable.trinket_sync_slot\nactions.cooldown+=/the_hunt,if=(!talent.momentum||!buff.momentum.up)\nactions.cooldown+=/elysian_decree,if=(active_enemies>desired_targets||raid_event.adds.in>30)",
["version"] = 20230227,
["warnings"] = "The import for 'cooldown' required some automated changes.\nLine 1: Converted 'talent.misery_in_defeat' to 'talent.misery_in_defeat.enabled' (1x).\nLine 1: Converted 'talent.demonic' to 'talent.demonic.enabled' (1x).\nLine 2: Converted 'talent.demonic' to 'talent.demonic.enabled' (1x).\nLine 2: Converted 'talent.chaotic_transformation' to 'talent.chaotic_transformation.enabled' (1x).\nLine 3: Converted 'talent.demonic' to 'talent.demonic.enabled' (1x).\nLine 3: Converted 'talent.chaotic_transformation' to 'talent.chaotic_transformation.enabled' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 5: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 5: Converted operations in 'variable.trinket_sync_slot=1&(buff.metamorphosis.up||(!talent.demonic.enabled&cooldown.metamorphosis.remains>(fight_remains>?trinket.t1.cooldown.duration%2))||fight_remains<=20)||(variable.trinket_sync_slot=2&!trinket.t2.cooldown.ready)||!variable.trinket_sync_slot' to 'variable.trinket_sync_slot=1&(buff.metamorphosis.up||(!talent.demonic.enabled&cooldown.metamorphosis.remains>(fight_remains>?trinket.t1.cooldown.duration/2))||fight_remains<=20)||(variable.trinket_sync_slot=2&!trinket.t2.cooldown.ready)||!variable.trinket_sync_slot'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 6: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 6: Converted operations in 'variable.trinket_sync_slot=2&(buff.metamorphosis.up||(!talent.demonic.enabled&cooldown.metamorphosis.remains>(fight_remains>?trinket.t2.cooldown.duration%2))||fight_remains<=20)||(variable.trinket_sync_slot=1&!trinket.t1.cooldown.ready)||!variable.trinket_sync_slot' to 'variable.trinket_sync_slot=2&(buff.metamorphosis.up||(!talent.demonic.enabled&cooldown.metamorphosis.remains>(fight_remains>?trinket.t2.cooldown.duration/2))||fight_remains<=20)||(variable.trinket_sync_slot=1&!trinket.t1.cooldown.ready)||!variable.trinket_sync_slot'.\nLine 7: Converted 'talent.momentum' to 'talent.momentum.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'talent.first_blood' to 'talent.first_blood.enabled' (1x).\nLine 3: Converted 'talent.trail_of_ruin' to 'talent.trail_of_ruin.enabled' (1x).\nLine 3: Converted 'talent.chaos_theory' to 'talent.chaos_theory.enabled' (1x).\nLine 4: Converted 'talent.demon_blades' to 'talent.demon_blades.enabled' (1x).\nLine 5: Converted 'talent.demonic' to 'talent.demonic.enabled' (1x).\nLine 5: Converted 'talent.blind_fury' to 'talent.blind_fury.enabled' (1x).\nLine 6: Converted 'talent.momentum' to 'talent.momentum.enabled' (1x).\nLine 9: Converted 'talent.initiative' to 'talent.initiative.enabled' (1x).\nLine 9: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 9: Converted 'talent.demonic' to 'talent.demonic.enabled' (1x).\nLine 9: Converted 'talent.cycle_of_hatred' to 'talent.cycle_of_hatred.enabled' (1x).\nLine 10: Converted 'talent.initiative' to 'talent.initiative.enabled' (1x).\nLine 10: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 11: Converted 'talent.unbound_chaos' to 'talent.unbound_chaos.enabled' (1x).\nLine 12: Converted 'talent.tactical_retreat' to 'talent.tactical_retreat.enabled' (1x).\nLine 13: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 17: Converted 'talent.cycle_of_hatred' to 'talent.cycle_of_hatred.enabled' (1x).\nLine 18: Converted 'talent.demonic' to 'talent.demonic.enabled' (1x).\nLine 19: Converted 'talent.soulrend' to 'talent.soulrend.enabled' (1x).\nLine 19: Converted 'talent.furious_throws' to 'talent.furious_throws.enabled' (1x).\nLine 21: Converted 'talent.serrated_glaive' to 'talent.serrated_glaive.enabled' (1x).\nLine 22: Converted 'talent.ragefire' to 'talent.ragefire.enabled' (1x).\nLine 23: Converted 'talent.isolated_prey' to 'talent.isolated_prey.enabled' (1x).\nLine 27: Converted 'talent.momentum' to 'talent.momentum.enabled' (1x).\nLine 27: Converted 'talent.demon_blades' to 'talent.demon_blades.enabled' (1x).\nLine 28: Converted 'talent.burning_wound' to 'talent.burning_wound.enabled' (1x).\nLine 29: Converted 'talent.momentum' to 'talent.momentum.enabled' (1x).\nLine 29: Converted 'talent.demon_blades' to 'talent.demon_blades.enabled' (1x).\nLine 32: Converted 'talent.momentum' to 'talent.momentum.enabled' (1x).\nLine 33: Converted 'talent.initiative' to 'talent.initiative.enabled' (1x).\nLine 34: Converted 'talent.demon_blades' to 'talent.demon_blades.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\nImported 3 action lists.\n",
["lists"] = {
["default"] = {
{
["action"] = "disrupt",
["enabled"] = true,
}, -- [1]
{
["action"] = "consume_magic",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.first_blood.enabled || talent.trail_of_ruin.enabled || talent.chaos_theory.enabled & buff.chaos_theory.down || spell_targets.blade_dance1 > 1",
["description"] = "Blade Dance with First Blood, Trail of Ruin, or at 2+ targets",
["var_name"] = "blade_dance",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "variable.blade_dance & fury < ( 75 - talent.demon_blades.enabled * 20 ) & cooldown.blade_dance.remains < gcd.max",
["var_name"] = "pooling_for_blade_dance",
}, -- [4]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.demonic.enabled & ! talent.blind_fury.enabled & cooldown.eye_beam.remains < ( gcd.max * 2 ) & fury.deficit > 20",
["var_name"] = "pooling_for_eye_beam",
}, -- [5]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.momentum.enabled & ! buff.momentum.up",
["var_name"] = "waiting_for_momentum",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "gcd.remains = 0",
["action"] = "call_action_list",
["list_name"] = "cooldown",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "buff.inner_demon.up & cooldown.metamorphosis.remains <= gcd.max * 3",
["action"] = "annihilation",
}, -- [8]
{
["enabled"] = true,
["action"] = "vengeful_retreat",
["criteria"] = "talent.initiative.enabled & talent.essence_break.enabled & time > 1 & gcd.remains < 0.4 & ( cooldown.essence_break.remains > 15 || cooldown.essence_break.remains < gcd.max & ( ! talent.demonic.enabled || buff.metamorphosis.up || cooldown.eye_beam.remains > 15 + ( 10 * talent.cycle_of_hatred.enabled ) ) )",
["use_off_gcd"] = 1,
}, -- [9]
{
["enabled"] = true,
["action"] = "vengeful_retreat",
["criteria"] = "talent.initiative.enabled & ! talent.essence_break.enabled & time > 1 & ! buff.momentum.up",
["use_off_gcd"] = 1,
}, -- [10]
{
["enabled"] = true,
["criteria"] = "( buff.unbound_chaos.up || variable.waiting_for_momentum & ( ! talent.unbound_chaos.enabled || ! cooldown.immolation_aura.ready ) ) & ( charges = 2 || ( raid_event.movement.in > 10 & raid_event.adds.in > 10 ) )",
["action"] = "fel_rush",
}, -- [11]
{
["enabled"] = true,
["description"] = "Essence Break allowed without Momentum/Tactical Retreat if Fel Rush and Vengeful Retreat are disabled.",
["criteria"] = "( active_enemies > desired_targets || raid_event.adds.in > 40 ) & ( ! variable.waiting_for_momentum || action.fel_rush.disabled & action.vengeful_retreat.disabled ) & fury > 40 & ( cooldown.eye_beam.remains > 8 || buff.metamorphosis.up ) & ( ! talent.tactical_retreat.enabled || buff.tactical_retreat.up || action.vengeful_retreat.disabled )",
["action"] = "essence_break",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "variable.blade_dance & ( ! talent.essence_break.enabled || cooldown.essence_break.remains > ( cooldown.death_sweep.duration - 4 ) )",
["action"] = "death_sweep",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "active_enemies > desired_targets || raid_event.adds.in > 30",
["action"] = "fel_barrage",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "active_enemies > desired_targets || raid_event.adds.in > 10",
["action"] = "glaive_tempest",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "buff.inner_demon.up & cooldown.eye_beam.remains <= gcd.max",
["action"] = "annihilation",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "active_enemies > desired_targets || raid_event.adds.in > ( 40 - talent.cycle_of_hatred.enabled * 15 ) & ! debuff.essence_break.up",
["action"] = "eye_beam",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "variable.blade_dance & ( cooldown.eye_beam.remains > 5 || ! talent.demonic.enabled || ( raid_event.adds.in > action_cooldown & raid_event.adds.in < 25 ) )",
["action"] = "blade_dance",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "talent.soulrend.enabled & ( active_enemies > desired_targets || raid_event.adds.in > full_recharge_time + 9 ) & spell_targets >= ( 2 - talent.furious_throws.enabled ) & ! debuff.essence_break.up",
["action"] = "throw_glaive",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "! variable.pooling_for_blade_dance",
["action"] = "annihilation",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "talent.serrated_glaive.enabled & cooldown.eye_beam.remains < 4 & ! debuff.serrated_glaive.up & ! debuff.essence_break.up",
["action"] = "throw_glaive",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "! buff.immolation_aura.up & ( ! talent.ragefire.enabled || active_enemies > desired_targets || raid_event.adds.in > 15 )",
["action"] = "immolation_aura",
}, -- [22]
{
["enabled"] = true,
["criteria"] = "talent.isolated_prey.enabled & active_enemies = 1 & fury.deficit >= 35",
["action"] = "fel_rush",
}, -- [23]
{
["enabled"] = true,
["criteria"] = "fury.deficit >= 40",
["action"] = "felblade",
}, -- [24]
{
["enabled"] = true,
["criteria"] = "active_enemies > desired_targets",
["action"] = "sigil_of_flame",
}, -- [25]
{
["enabled"] = true,
["criteria"] = "! variable.pooling_for_blade_dance & ! variable.pooling_for_eye_beam",
["action"] = "chaos_strike",
}, -- [26]
{
["enabled"] = true,
["criteria"] = "settings.fel_rush_filler & ! talent.momentum.enabled & talent.demon_blades.enabled & ! cooldown.eye_beam.ready & ( charges = 2 || ( raid_event.movement.in > 10 & raid_event.adds.in > 10 ) )",
["action"] = "fel_rush",
}, -- [27]
{
["enabled"] = true,
["action"] = "demons_bite",
["criteria"] = "talent.burning_wound.enabled & debuff.burning_wound.remains < 4 & active_dot.burning_wound < ( spell_targets >? 3 )",
["cycle_targets"] = 1,
}, -- [28]
{
["enabled"] = true,
["criteria"] = "settings.fel_rush_filler & ! talent.momentum.enabled & ! talent.demon_blades.enabled & spell_targets > 1 & ( charges = 2 || ( raid_event.movement.in > 10 & raid_event.adds.in > 10 ) )",
["action"] = "fel_rush",
}, -- [29]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in > 15 & fury.deficit >= 30",
["action"] = "sigil_of_flame",
}, -- [30]
{
["action"] = "demons_bite",
["enabled"] = true,
}, -- [31]
{
["enabled"] = true,
["criteria"] = "settings.fel_rush_filler & ( movement.distance > 15 || ( buff.out_of_range.up & ! talent.momentum.enabled ) )",
["action"] = "fel_rush",
}, -- [32]
{
["enabled"] = true,
["criteria"] = "settings.retreat_filler & ! talent.initiative.enabled & movement.distance > 15",
["action"] = "vengeful_retreat",
}, -- [33]
{
["enabled"] = true,
["criteria"] = "( talent.demon_blades.enabled || buff.out_of_range.up ) & ! debuff.essence_break.up",
["action"] = "throw_glaive",
}, -- [34]
},
["cooldown"] = {
{
["enabled"] = true,
["criteria"] = "talent.misery_in_defeat.enabled & ! target.is_boss & target.time_to_die > 10 & ( cooldown.metamorphosis.remains < 6 || talent.demonic.enabled & cooldown.eye_beam.remains < 6 || buff.metamorphosis.remains > 10 )",
["action"] = "sigil_of_misery",
}, -- [1]
{
["enabled"] = true,
["description"] = "Cast Metamorphosis if we will get a full Eye Beam refresh or if the encounter is almost over",
["criteria"] = "! talent.demonic.enabled & ( ( ! talent.chaotic_transformation.enabled || cooldown.eye_beam.remains > 20 ) & active_enemies > desired_targets || raid_event.adds.in > 60 || boss & fight_remains < 25 )",
["action"] = "metamorphosis",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "talent.demonic.enabled & ( ! talent.chaotic_transformation.enabled || cooldown.eye_beam.remains > 20 & ( ! variable.blade_dance || cooldown.blade_dance.remains > gcd.max ) || boss & fight_remains < 25 )",
["action"] = "metamorphosis",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.metamorphosis.remains > 25 || buff.metamorphosis.up & cooldown.metamorphosis.ready || boss & fight_remains < 60",
["action"] = "potion",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "variable.trinket_sync_slot = 1 & ( buff.metamorphosis.up || ( ! talent.demonic.enabled & cooldown.metamorphosis.remains > ( fight_remains >? trinket.t1.cooldown.duration / 2 ) ) || fight_remains <= 20 ) || ( variable.trinket_sync_slot = 2 & ! trinket.t2.cooldown.ready ) || ! variable.trinket_sync_slot",
["description"] = "Default use item logic",
["slots"] = "trinket1",
["action"] = "trinket1",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "variable.trinket_sync_slot = 2 & ( buff.metamorphosis.up || ( ! talent.demonic.enabled & cooldown.metamorphosis.remains > ( fight_remains >? trinket.t2.cooldown.duration / 2 ) ) || fight_remains <= 20 ) || ( variable.trinket_sync_slot = 1 & ! trinket.t1.cooldown.ready ) || ! variable.trinket_sync_slot",
["slots"] = "trinket2",
["action"] = "trinket2",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "( ! talent.momentum.enabled || ! buff.momentum.up )",
["action"] = "the_hunt",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "( active_enemies > desired_targets || raid_event.adds.in > 30 )",
["action"] = "elysian_decree",
}, -- [8]
},
["precombat"] = {
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "1",
["criteria"] = "trinket.t1.has_stat.any_dps & ( ! trinket.t2.has_stat.any_dps || trinket.t1.cooldown.duration >= trinket.t2.cooldown.duration )",
["var_name"] = "trinket_sync_slot",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "2",
["criteria"] = "trinket.t2.has_stat.any_dps & ( ! trinket.t1.has_stat.any_dps || trinket.t2.cooldown.duration > trinket.t1.cooldown.duration )",
["var_name"] = "trinket_sync_slot",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "fury.deficit > 15",
["action"] = "arcane_torrent",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "cooldown.metamorphosis.remains < 5",
["name"] = "algethar_puzzle_box",
["action"] = "algethar_puzzle_box",
}, -- [4]
{
["action"] = "sigil_of_flame",
["enabled"] = true,
}, -- [5]
{
["action"] = "immolation_aura",
["enabled"] = true,
}, -- [6]
},
},
["author"] = "SimC",
},
["Subtlety"] = {
["builtIn"] = true,
["date"] = 20230405,
["spec"] = 261,
["desc"] = "2023-03-19: 10.0.7 update.\n\n2023-03-28: Optimize efficiency.\n\n2023-04-05: Move precombat Al'gethar Puzzle Box before Stealth.",
["lists"] = {
["stealthed"] = {
{
["enabled"] = true,
["criteria"] = "( buff.stealth.up || buff.vanish.up ) & ( spell_targets.shuriken_storm < 4 || variable.priority_rotation )",
["action"] = "shadowstrike",
["description"] = "Stealthed Rotation If Stealth/vanish are up, use Shadowstrike to benefit from the passive bonus and Find Weakness, even if we are at max CP (unless using Master Assassin)",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "buff.danse_macabre.stack < 5 & ( combo_points.deficit = 2 || combo_points.deficit = 3 ) & ( buff.premeditation.up || effective_combo_points < 7 ) & ( spell_targets.shuriken_storm <= 8 || talent.lingering_shadow.enabled )",
["description"] = "Variable to Gloomblade / Backstab when on 4 or 5 combo points with premediation and when the combo point is not anima charged",
["var_name"] = "gloomblade_condition",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "variable.gloomblade_condition & buff.silent_storm.up & ! debuff.find_weakness.remains & talent.improved_shuriken_storm.enabled || combo_points <= 1 & ! used_for_danse & spell_targets.shuriken_storm = 2 & talent.danse_macabre.enabled",
["action"] = "shuriken_storm",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "variable.gloomblade_condition & ( ! used_for_danse || spell_targets.shuriken_storm != 2 )",
["action"] = "gloomblade",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "variable.gloomblade_condition & talent.danse_macabre.enabled & buff.danse_macabre.stack <= 2 & spell_targets.shuriken_storm <= 2",
["action"] = "backstab",
}, -- [5]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "variable.effective_combo_points >= cp_max_spend",
["list_name"] = "finish",
}, -- [6]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "Finish earlier with Shuriken tornado up.",
["strict"] = 1,
["criteria"] = "buff.shuriken_tornado.up & combo_points.deficit <= 2",
["list_name"] = "finish",
}, -- [7]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "Also safe to finish at 4+ CP with exactly 4 targets. (Same as outside stealth.)",
["strict"] = 1,
["criteria"] = "spell_targets.shuriken_storm >= 4 - talent.seal_fate.enabled & variable.effective_combo_points >= 4",
["list_name"] = "finish",
}, -- [8]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "Finish at lower combo points if you are talented in DS, SS or Seal Fate",
["strict"] = 1,
["criteria"] = "combo_points.deficit <= 1 + ( talent.seal_fate.enabled || talent.deeper_stratagem.enabled || talent.secret_stratagem.enabled )",
["list_name"] = "finish",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "buff.perforated_veins.stack >= 5 & spell_targets.shuriken_storm < 3",
["action"] = "gloomblade",
["description"] = "Use Gloomblade or Backstab when close to hitting max PV stacks",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "buff.perforated_veins.stack >= 5 & spell_targets.shuriken_storm < 3",
["action"] = "backstab",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "stealthed.sepsis & spell_targets.shuriken_storm < 4",
["action"] = "shadowstrike",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "spell_targets >= 3 + buff.the_rotten.up & ( ! buff.premeditation.up || spell_targets >= 7 & ! variable.priority_rotation )",
["action"] = "shuriken_storm",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "debuff.find_weakness.remains <= 1 || cooldown.symbols_of_death.remains < 18 & debuff.find_weakness.remains < cooldown.symbols_of_death.remains",
["action"] = "shadowstrike",
["description"] = "Shadowstrike to refresh Find Weakness and to ensure we can carry over a full FW into the next SoD if possible.",
}, -- [14]
{
["action"] = "shadowstrike",
["enabled"] = true,
}, -- [15]
},
["default"] = {
{
["enabled"] = true,
["description"] = "Restealth if possible (no vulnerable enemies in combat)",
["action"] = "stealth",
}, -- [1]
{
["enabled"] = true,
["description"] = "Interrupt on cooldown to allow simming interactions with that",
["action"] = "kick",
}, -- [2]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "buff.slice_and_dice.up || spell_targets.shuriken_storm >= cp_max_spend",
["description"] = "Used to determine whether cooldowns wait for SnD based on targets.",
["var_name"] = "snd_condition",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["var_name"] = "is_next_cp_animacharged",
["criteria"] = "talent.echoing_reprimand.enabled",
["description"] = "Check to see if the next CP (in the event of a ShT proc) is Animacharged",
["value"] = "combo_points = 1 & buff.echoing_reprimand_2.up || combo_points = 2 & buff.echoing_reprimand_3.up || combo_points = 3 & buff.echoing_reprimand_4.up || combo_points = 4 & buff.echoing_reprimand_5.up",
}, -- [4]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "effective_combo_points",
["description"] = "Account for ShT reaction time by ignoring low-CP animacharged matches in the 0.5s preceeding a potential ShT proc",
["var_name"] = "effective_combo_points",
}, -- [5]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "combo_points",
["criteria"] = "talent.echoing_reprimand.enabled & effective_combo_points > combo_points & combo_points.deficit > 2 & time_to_sht_plus.4 < 0.5 & ! variable.is_next_cp_animacharged",
["var_name"] = "effective_combo_points",
}, -- [6]
{
["enabled"] = true,
["description"] = "Check CDs at first",
["action"] = "call_action_list",
["list_name"] = "cds",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "spell_targets.shuriken_storm < cp_max_spend & buff.slice_and_dice.remains < gcd.max & fight_remains > 6 & combo_points >= 4",
["action"] = "slice_and_dice",
["description"] = "Apply Slice and Dice at 4+ CP if it expires within the next GCD or is not up",
}, -- [8]
{
["enabled"] = true,
["action"] = "run_action_list",
["description"] = "Run fully switches to the Stealthed Rotation (by doing so, it forces pooling if nothing is available).",
["strict"] = 1,
["criteria"] = "stealthed.all",
["list_name"] = "stealthed",
}, -- [9]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "25 + talent.vigor.enabled * 20 + talent.master_of_shadows.enabled * 20 + talent.shadow_focus.enabled * 25 + talent.alacrity.enabled * 20 + 25 * ( spell_targets.shuriken_storm >= 4 )",
["description"] = "Used to define when to use stealth CDs or builders",
["var_name"] = "stealth_threshold",
}, -- [10]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "Consider using a Stealth CD when reaching the energy threshold",
["strict"] = 1,
["criteria"] = "energy.deficit <= variable.stealth_threshold",
["list_name"] = "stealth_cds",
}, -- [11]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "Finish at maximum or close to maximum combo point value or at 4+ against 4 targets (outside stealth)",
["strict"] = 1,
["criteria"] = "variable.effective_combo_points >= cp_max_spend || combo_points.deficit <= 1 + buff.the_rotten.up || boss & fight_remains <= 1 & variable.effective_combo_points >= 3 || spell_targets.shuriken_storm >= ( 4 - talent.seal_fate.enabled ) & variable.effective_combo_points >= 4",
["list_name"] = "finish",
}, -- [12]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "Use a builder when reaching the energy threshold",
["criteria"] = "energy.deficit <= variable.stealth_threshold",
["list_name"] = "build",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "energy.deficit >= 15 + energy.regen",
["action"] = "arcane_torrent",
["description"] = "Lowest priority in all of the APL because it causes a GCD",
}, -- [14]
{
["action"] = "arcane_pulse",
["enabled"] = true,
}, -- [15]
{
["action"] = "lights_judgment",
["enabled"] = true,
}, -- [16]
{
["action"] = "bag_of_tricks",
["enabled"] = true,
}, -- [17]
},
["precombat"] = {
{
["action"] = "apply_poison",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["name"] = "algethar_puzzle_box",
["action"] = "algethar_puzzle_box",
}, -- [2]
{
["action"] = "stealth",
["enabled"] = true,
}, -- [3]
{
["enabled"] = true,
["action"] = "marked_for_death",
["precombat_seconds"] = "15",
}, -- [4]
{
["enabled"] = true,
["action"] = "slice_and_dice",
["criteria"] = "refreshable",
["precombat_seconds"] = "1",
}, -- [5]
},
["finish"] = {
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.premeditation.enabled & spell_targets.shuriken_storm < 5",
["description"] = "Finishers While using Premeditation, avoid casting Slice and Dice when Shadow Dance is soon to be used, except for Kyrian",
["var_name"] = "premed_snd_condition",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "buff.shadow_dance.up & ( buff.danse_macabre.stack >= 3 || ! talent.danse_macabre.enabled ) & ( ! buff.premeditation.up || spell_targets.shuriken_storm != 2 )",
["var_name"] = "secret_condition",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! variable.premed_snd_condition & spell_targets.shuriken_storm < 6 & ! buff.shadow_dance.up & buff.slice_and_dice.remains < fight_remains & refreshable",
["action"] = "slice_and_dice",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "variable.premed_snd_condition & cooldown.shadow_dance.charges_fractional < 1.75 & buff.slice_and_dice.remains < cooldown.symbols_of_death.remains & ( cooldown.shadow_dance.ready & buff.symbols_of_death.remains - buff.shadow_dance.remains < 1.2 )",
["action"] = "slice_and_dice",
}, -- [4]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "buff.thistle_tea.up & spell_targets.shuriken_storm = 1 || buff.shadow_dance.up & ( spell_targets.shuriken_storm = 1 || dot.rupture.ticking & spell_targets.shuriken_storm >= 2 )",
["var_name"] = "skip_rupture",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "( ! variable.skip_rupture || variable.priority_rotation ) & target.time_to_die - remains > 6 & refreshable",
["action"] = "rupture",
["description"] = "Keep up Rupture if it is about to run out.",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "! variable.skip_rupture & buff.finality_rupture.up & cooldown.shadow_dance.remains < 12 & cooldown.shadow_dance.charges_fractional <= 1 & spell_targets.shuriken_storm = 1 & ( talent.dark_brew.enabled || talent.danse_macabre.enabled )",
["action"] = "rupture",
["description"] = "Refresh Rupture early for Finality",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "variable.secret_condition & cooldown.secret_technique.ready",
["action"] = "cold_blood",
["description"] = "Sync Cold Blood with Secret Technique when possible",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "variable.secret_condition & ( ! talent.cold_blood.enabled || cooldown.cold_blood.remains > buff.shadow_dance.remains - 2 )",
["action"] = "secret_technique",
}, -- [9]
{
["enabled"] = true,
["action"] = "rupture",
["cycle_targets"] = 1,
["criteria"] = "! variable.skip_rupture & ! variable.priority_rotation & spell_targets.shuriken_storm >= 2 & target.time_to_die >= ( 2 * combo_points ) & refreshable",
["description"] = "Multidotting targets that will live for the duration of Rupture, refresh during pandemic.",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "! variable.skip_rupture & remains < cooldown.symbols_of_death.remains + 10 & cooldown.symbols_of_death.remains <= 5 & target.time_to_die - remains > cooldown.symbols_of_death.remains + 5",
["action"] = "rupture",
["description"] = "Refresh Rupture early if it will expire during Symbols. Do that refresh if SoD gets ready in the next 5s.",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "! variable.priority_rotation & spell_targets >= 3 || ! used_for_danse & buff.shadow_dance.up & spell_targets.shuriken_storm = 2 & talent.danse_macabre.enabled",
["action"] = "black_powder",
}, -- [12]
{
["action"] = "eviscerate",
["enabled"] = true,
}, -- [13]
},
["cds"] = {
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! buff.premeditation.up & spell_targets.shuriken_storm = 1 || ! talent.the_rotten.enabled || spell_targets.shuriken_storm > 1",
["description"] = "Cooldowns",
["var_name"] = "rotten_condition",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "! buff.shadow_dance.up & buff.shuriken_tornado.up & buff.shuriken_tornado.remains <= 3.5",
["use_off_gcd"] = 1,
["action"] = "shadow_dance",
["description"] = "Use Dance off-gcd before the first Shuriken Storm from Tornado comes in.",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.shuriken_tornado.up & buff.shuriken_tornado.remains <= 3.5",
["use_off_gcd"] = 1,
["action"] = "symbols_of_death",
["description"] = "(Unless already up because we took Shadow Focus) use Symbols off-gcd before the first Shuriken Storm from Tornado comes in.",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.danse_macabre.stack > 3 & combo_points <= 2 & ( cooldown.secret_technique.remains >= 30 || ! talent.secret_technique.enabled )",
["action"] = "vanish",
["description"] = "Vanish for Shadowstrike with Danse Macabre at adaquate stacks",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "! talent.secret_technique.enabled & combo_points >= 5",
["action"] = "cold_blood",
["description"] = "Cold Blood on 5 combo points when not playing Secret Technique",
}, -- [5]
{
["enabled"] = true,
["action"] = "flagellation",
["criteria"] = "variable.snd_condition & combo_points >= 5 & target.time_to_die > 10",
["cycle_targets"] = 1,
}, -- [6]
{
["enabled"] = true,
["for_next"] = 1,
["description"] = "Pool for Tornado pre-SoD with ShD ready when not running SF.",
["criteria"] = "talent.shuriken_tornado.enabled & ! talent.shadow_focus.enabled",
["action"] = "pool_resource",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "spell_targets.shuriken_storm <= 1 & energy >= 60 & variable.snd_condition & cooldown.symbols_of_death.up & cooldown.shadow_dance.charges >= 1 & ( ! talent.flagellation.enabled & ! cooldown.flagellation.up || buff.flagellation_buff.up || spell_targets.shuriken_storm >= 5 ) & combo_points <= 2 & ! buff.premeditation.up",
["action"] = "shuriken_tornado",
["description"] = "Use Tornado pre SoD when we have the energy whether from pooling without SF or just generally.",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "variable.snd_condition & combo_points.deficit >= 1 & target.time_to_die >= 16",
["action"] = "sepsis",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "variable.rotten_condition & variable.snd_condition & ( ! talent.flagellation.enabled & ( combo_points <= 1 || ! talent.the_rotten.enabled ) || cooldown.flagellation.remains > 10 || cooldown.flagellation.up & combo_points >= 5 )",
["action"] = "symbols_of_death",
["description"] = "Use Symbols on cooldown (after first SnD) unless we are going to pop Tornado and do not have Shadow Focus.",
}, -- [10]
{
["enabled"] = true,
["action"] = "marked_for_death",
["line_cd"] = "1.5",
["cycle_targets"] = 1,
["criteria"] = "raid_event.adds.up & ( target.time_to_die < combo_points.deficit || ! stealthed.all & combo_points.deficit >= cp_max_spend )",
["description"] = "If adds are up, snipe the one with lowest TTD. Use when dying faster than CP deficit or not stealthed without any CP.",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "raid_event.adds.in > 30 - raid_event.adds.duration & combo_points.deficit >= cp_max_spend",
["action"] = "marked_for_death",
["description"] = "If no adds will die within the next 30s, use MfD on boss without any CP.",
}, -- [12]
{
["enabled"] = true,
["criteria"] = "variable.snd_condition & combo_points.deficit >= 2 & target.time_to_die >= 10 & ( dot.sepsis.ticking || cooldown.sepsis.remains <= 8 || ! talent.sepsis.enabled ) || boss & fight_remains <= 20",
["action"] = "shadow_blades",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "variable.snd_condition & combo_points.deficit >= 3 & ( variable.priority_rotation || spell_targets.shuriken_storm <= 4 || talent.resounding_clarity.enabled ) & ( buff.shadow_dance.up || ! talent.danse_macabre.enabled )",
["action"] = "echoing_reprimand",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "variable.snd_condition & buff.symbols_of_death.up & combo_points <= 2 & ( ! buff.premeditation.up || spell_targets.shuriken_storm > 4 )",
["action"] = "shuriken_tornado",
["description"] = "With SF, if not already done, use Tornado with SoD up.",
}, -- [15]
{
["enabled"] = true,
["criteria"] = "cooldown.shadow_dance.ready & ! stealthed.all & spell_targets.shuriken_storm >= 3 & ! talent.flagellation.enabled",
["action"] = "shuriken_tornado",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "! buff.shadow_dance.up & boss & fight_remains <= 8 + talent.subterfuge.enabled",
["action"] = "shadow_dance",
}, -- [17]
{
["enabled"] = true,
["criteria"] = "cooldown.symbols_of_death.remains >= 3 & ! buff.thistle_tea.up & ( energy.deficit >= 100 & ( combo_points.deficit >= 2 || spell_targets.shuriken_storm >= 3 ) || cooldown.thistle_tea.charges_fractional >= 2.75 & buff.shadow_dance.up ) || buff.shadow_dance.remains >= 4 & ! buff.thistle_tea.up & spell_targets.shuriken_storm >= 3 || ! buff.thistle_tea.up & boss & fight_remains <= ( 6 * cooldown.thistle_tea.charges )",
["action"] = "thistle_tea",
}, -- [18]
{
["enabled"] = true,
["criteria"] = "buff.bloodlust.react || boss & fight_remains < 30 || buff.symbols_of_death.up & ( buff.shadow_blades.up || cooldown.shadow_blades.remains <= 10 )",
["action"] = "potion",
}, -- [19]
{
["enabled"] = true,
["criteria"] = "buff.symbols_of_death.up",
["action"] = "blood_fury",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "buff.symbols_of_death.up",
["action"] = "berserking",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "buff.symbols_of_death.up",
["action"] = "fireblood",
}, -- [22]
{
["enabled"] = true,
["criteria"] = "buff.symbols_of_death.up",
["action"] = "ancestral_call",
}, -- [23]
{
["enabled"] = true,
["criteria"] = "! stealthed.all & ( ! raid_event.adds.up || ! equipped.stormeaters_boon )",
["action"] = "manic_grieftorch",
["use_off_gcd"] = 1,
}, -- [24]
{
["enabled"] = true,
["criteria"] = "buff.symbols_of_death.up || boss & fight_remains < 20",
["action"] = "use_items",
["description"] = "Default fallback for usable items: Use with Symbols of Death.",
}, -- [25]
},
["stealth_cds"] = {
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "cooldown.shadow_dance.charges_fractional >= 0.75 + talent.shadow_dance.enabled",
["description"] = "Stealth Cooldowns Helper Variable",
["var_name"] = "shd_threshold",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! buff.the_rotten.up || spell_targets.shuriken_storm > 1",
["var_name"] = "rotten_threshold",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "( ! talent.danse_macabre.enabled || spell_targets.shuriken_storm >= 3 ) & ! variable.shd_threshold & combo_points.deficit > 1",
["action"] = "vanish",
}, -- [3]
{
["enabled"] = true,
["for_next"] = 1,
["description"] = "Pool for Shadowmeld + Shadowstrike unless we are about to cap on Dance charges. Only when Find Weakness is about to run out.",
["criteria"] = "race.night_elf",
["extra_amount"] = "40",
["action"] = "pool_resource",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "energy >= 40 & energy.deficit >= 10 & ! variable.shd_threshold & combo_points.deficit > 4",
["action"] = "shadowmeld",
}, -- [5]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "combo_points <= 1",
["description"] = "CP thresholds for entering Shadow Dance Default to start dance with 0 or 1 combo point",
["var_name"] = "shd_combo_points",
}, -- [6]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["var_name"] = "shd_combo_points",
["criteria"] = "spell_targets.shuriken_storm > ( 4 - 2 * talent.shuriken_tornado.enabled ) || variable.priority_rotation & spell_targets.shuriken_storm >= 4",
["description"] = "Use stealth cooldowns with high combo points when playing shuriken tornado or with high target counts",
["value"] = "combo_points.deficit <= 1",
}, -- [7]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["var_name"] = "shd_combo_points",
["criteria"] = "spell_targets.shuriken_storm = ( 4 - talent.seal_fate.enabled )",
["description"] = "Use stealth cooldowns on any combo point on 4 targets",
["value"] = "1",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "( variable.shd_combo_points & ( ! talent.shadow_dance.enabled & buff.symbols_of_death.remains >= ( 2.2 - talent.flagellation.enabled ) || variable.shd_threshold ) || talent.shadow_dance.enabled & cooldown.secret_technique.remains <= 9 & ( spell_targets.shuriken_storm <= 3 || talent.danse_macabre.enabled ) || buff.flagellation.up || buff.flagellation_persist.remains >= 6 || spell_targets.shuriken_storm >= 4 & cooldown.symbols_of_death.remains > 10 ) & variable.rotten_threshold",
["action"] = "shadow_dance",
["description"] = "Dance during Symbols or above threshold.",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "variable.shd_combo_points & fight_remains < cooldown.symbols_of_death.remains || ! talent.shadow_dance.enabled & dot.rupture.ticking & spell_targets.shuriken_storm <= 4 & variable.rotten_threshold",
["action"] = "shadow_dance",
["description"] = "Burn Dances charges if before the fight ends if SoD won't be ready in time.",
}, -- [10]
},
["build"] = {
{
["enabled"] = true,
["criteria"] = "spell_targets >= 2 + ( talent.gloomblade.enabled & buff.lingering_shadow.remains >= 6 || buff.perforated_veins.up )",
["action"] = "shuriken_storm",
["description"] = "Builders",
}, -- [1]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "! talent.echoing_reprimand.enabled || ! ( variable.is_next_cp_animacharged & ( time_to_sht_plus.3 < 0.5 || time_to_sht_plus.4 < 1 ) & energy < 60 )",
["description"] = "Build immediately unless the next CP is Animacharged and we won't cap energy waiting for it.",
["var_name"] = "anima_helper",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "variable.anima_helper",
["action"] = "gloomblade",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "variable.anima_helper",
["action"] = "backstab",
}, -- [4]
},
},
["version"] = 20230405,
["warnings"] = "The import for 'stealthed' required some automated changes.\nLine 2: Converted 'talent.lingering_shadow' to 'talent.lingering_shadow.enabled' (1x).\nLine 3: Converted 'talent.danse_macabre' to 'talent.danse_macabre.enabled' (1x).\nLine 5: Converted 'talent.danse_macabre' to 'talent.danse_macabre.enabled' (1x).\nLine 8: Converted 'talent.seal_fate' to 'talent.seal_fate.enabled' (1x).\nLine 9: Converted 'talent.seal_fate' to 'talent.seal_fate.enabled' (1x).\nLine 9: Converted 'talent.deeper_stratagem' to 'talent.deeper_stratagem.enabled' (1x).\nLine 9: Converted 'talent.secret_stratagem' to 'talent.secret_stratagem.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 6: Converted 'time_to_sht.4.plus' to 'time_to_sht_plus.4' (1x).\nLine 12: Converted 'talent.seal_fate' to 'talent.seal_fate.enabled' (1x).\n\nThe import for 'finish' required some automated changes.\nLine 2: Converted 'talent.danse_macabre' to 'talent.danse_macabre.enabled' (1x).\nLine 7: Converted 'talent.dark_brew' to 'talent.dark_brew.enabled' (1x).\nLine 7: Converted 'talent.danse_macabre' to 'talent.danse_macabre.enabled' (1x).\nLine 9: Converted 'talent.cold_blood' to 'talent.cold_blood.enabled' (1x).\nLine 12: Converted 'talent.danse_macabre' to 'talent.danse_macabre.enabled' (1x).\n\nThe import for 'cds' required some automated changes.\nLine 1: Converted 'talent.the_rotten' to 'talent.the_rotten.enabled' (1x).\nLine 4: Converted 'talent.secret_technique' to 'talent.secret_technique.enabled' (1x).\nLine 5: Converted 'talent.secret_technique' to 'talent.secret_technique.enabled' (1x).\nLine 10: Converted 'talent.flagellation' to 'talent.flagellation.enabled' (1x).\nLine 10: Converted 'talent.the_rotten' to 'talent.the_rotten.enabled' (1x).\nLine 13: Converted 'talent.sepsis' to 'talent.sepsis.enabled' (1x).\nLine 14: Converted 'talent.resounding_clarity' to 'talent.resounding_clarity.enabled' (1x).\nLine 14: Converted 'talent.danse_macabre' to 'talent.danse_macabre.enabled' (1x).\n\nThe import for 'stealth_cds' required some automated changes.\nLine 1: Converted 'talent.shadow_dance' to 'talent.shadow_dance.enabled' (1x).\nLine 3: Converted 'talent.danse_macabre' to 'talent.danse_macabre.enabled' (1x).\nLine 8: Converted 'talent.seal_fate' to 'talent.seal_fate.enabled' (1x).\nLine 9: Converted 'talent.shadow_dance' to 'talent.shadow_dance.enabled' (1x).\nLine 9: Converted 'talent.shadow_dance' to 'talent.shadow_dance.enabled' (1x).\nLine 9: Converted 'talent.danse_macabre' to 'talent.danse_macabre.enabled' (1x).\nLine 10: Converted 'talent.shadow_dance' to 'talent.shadow_dance.enabled' (1x).\n\nThe import for 'build' required some automated changes.\nLine 1: Converted 'talent.gloomblade' to 'talent.gloomblade.enabled' (1x).\nLine 2: Converted 'time_to_sht.3.plus' to 'time_to_sht_plus.3' (1x).\nLine 2: Converted 'time_to_sht.4.plus' to 'time_to_sht_plus.4' (1x).\n\nImported 7 action lists.\n",
["profile"] = "actions.precombat+=/apply_poison\nactions.precombat+=/use_item,name=algethar_puzzle_box\nactions.precombat+=/stealth\nactions.precombat+=/marked_for_death,precombat_seconds=15\nactions.precombat+=/slice_and_dice,precombat_seconds=1,if=refreshable\n\n# Restealth if possible (no vulnerable enemies in combat)\nactions+=/stealth\n# Interrupt on cooldown to allow simming interactions with that\nactions+=/kick\n# Used to determine whether cooldowns wait for SnD based on targets.\nactions+=/variable,name=snd_condition,value=buff.slice_and_dice.up||spell_targets.shuriken_storm>=cp_max_spend\n# Check to see if the next CP (in the event of a ShT proc) is Animacharged\nactions+=/variable,name=is_next_cp_animacharged,if=talent.echoing_reprimand.enabled,value=combo_points=1&buff.echoing_reprimand_2.up||combo_points=2&buff.echoing_reprimand_3.up||combo_points=3&buff.echoing_reprimand_4.up||combo_points=4&buff.echoing_reprimand_5.up\n# Account for ShT reaction time by ignoring low-CP animacharged matches in the 0.5s preceeding a potential ShT proc\nactions+=/variable,name=effective_combo_points,value=effective_combo_points\nactions+=/variable,name=effective_combo_points,if=talent.echoing_reprimand.enabled&effective_combo_points>combo_points&combo_points.deficit>2&time_to_sht.4.plus<0.5&!variable.is_next_cp_animacharged,value=combo_points\n# Check CDs at first\nactions+=/call_action_list,name=cds\n# Apply Slice and Dice at 4+ CP if it expires within the next GCD or is not up\nactions+=/slice_and_dice,if=spell_targets.shuriken_storm<cp_max_spend&buff.slice_and_dice.remains<gcd.max&fight_remains>6&combo_points>=4\n# Run fully switches to the Stealthed Rotation (by doing so, it forces pooling if nothing is available).\nactions+=/run_action_list,name=stealthed,strict=1,if=stealthed.all\n## Only change rotation if we have priority_rotation set.\n## actions+=/variable,name=priority_rotation,value=priority_rotation\n# Used to define when to use stealth CDs or builders\nactions+=/variable,name=stealth_threshold,value=25+talent.vigor.enabled*20+talent.master_of_shadows.enabled*20+talent.shadow_focus.enabled*25+talent.alacrity.enabled*20+25*(spell_targets.shuriken_storm>=4)\n# Consider using a Stealth CD when reaching the energy threshold\nactions+=/call_action_list,name=stealth_cds,strict=1,if=energy.deficit<=variable.stealth_threshold\n# Finish at maximum or close to maximum combo point value or at 4+ against 4 targets (outside stealth)\nactions+=/call_action_list,name=finish,strict=1,if=variable.effective_combo_points>=cp_max_spend||combo_points.deficit<=1+buff.the_rotten.up||boss&fight_remains<=1&variable.effective_combo_points>=3||spell_targets.shuriken_storm>=(4-talent.seal_fate)&variable.effective_combo_points>=4\n# Use a builder when reaching the energy threshold\nactions+=/call_action_list,name=build,if=energy.deficit<=variable.stealth_threshold\n# Lowest priority in all of the APL because it causes a GCD\nactions+=/arcane_torrent,if=energy.deficit>=15+energy.regen\nactions+=/arcane_pulse\nactions+=/lights_judgment\nactions+=/bag_of_tricks\n\n# Builders\nactions.build+=/shuriken_storm,if=spell_targets>=2+(talent.gloomblade&buff.lingering_shadow.remains>=6||buff.perforated_veins.up)\n# Build immediately unless the next CP is Animacharged and we won't cap energy waiting for it.\nactions.build+=/variable,name=anima_helper,value=!talent.echoing_reprimand.enabled||!(variable.is_next_cp_animacharged&(time_to_sht.3.plus<0.5||time_to_sht.4.plus<1)&energy<60)\nactions.build+=/gloomblade,if=variable.anima_helper\nactions.build+=/backstab,if=variable.anima_helper\n\n# Cooldowns\nactions.cds+=/variable,name=rotten_condition,value=!buff.premeditation.up&spell_targets.shuriken_storm=1||!talent.the_rotten||spell_targets.shuriken_storm>1\n# Use Dance off-gcd before the first Shuriken Storm from Tornado comes in.\nactions.cds+=/shadow_dance,use_off_gcd=1,if=!buff.shadow_dance.up&buff.shuriken_tornado.up&buff.shuriken_tornado.remains<=3.5\n# (Unless already up because we took Shadow Focus) use Symbols off-gcd before the first Shuriken Storm from Tornado comes in.\nactions.cds+=/symbols_of_death,use_off_gcd=1,if=buff.shuriken_tornado.up&buff.shuriken_tornado.remains<=3.5\n# Vanish for Shadowstrike with Danse Macabre at adaquate stacks\nactions.cds+=/vanish,if=buff.danse_macabre.stack>3&combo_points<=2&(cooldown.secret_technique.remains>=30||!talent.secret_technique)\n# Cold Blood on 5 combo points when not playing Secret Technique\nactions.cds+=/cold_blood,if=!talent.secret_technique&combo_points>=5\nactions.cds+=/flagellation,cycle_targets=1,if=variable.snd_condition&combo_points>=5&target.time_to_die>10\n# Pool for Tornado pre-SoD with ShD ready when not running SF.\nactions.cds+=/pool_resource,for_next=1,if=talent.shuriken_tornado.enabled&!talent.shadow_focus.enabled\n# Use Tornado pre SoD when we have the energy whether from pooling without SF or just generally.\nactions.cds+=/shuriken_tornado,if=spell_targets.shuriken_storm<=1&energy>=60&variable.snd_condition&cooldown.symbols_of_death.up&cooldown.shadow_dance.charges>=1&(!talent.flagellation.enabled&!cooldown.flagellation.up||buff.flagellation_buff.up||spell_targets.shuriken_storm>=5)&combo_points<=2&!buff.premeditation.up\nactions.cds+=/sepsis,if=variable.snd_condition&combo_points.deficit>=1&target.time_to_die>=16\n# Use Symbols on cooldown (after first SnD) unless we are going to pop Tornado and do not have Shadow Focus.\nactions.cds+=/symbols_of_death,if=variable.rotten_condition&variable.snd_condition&(!talent.flagellation&(combo_points<=1||!talent.the_rotten)||cooldown.flagellation.remains>10||cooldown.flagellation.up&combo_points>=5)\n# If adds are up, snipe the one with lowest TTD. Use when dying faster than CP deficit or not stealthed without any CP.\nactions.cds+=/marked_for_death,line_cd=1.5,cycle_targets=1,if=raid_event.adds.up&(target.time_to_die<combo_points.deficit||!stealthed.all&combo_points.deficit>=cp_max_spend)\n# If no adds will die within the next 30s, use MfD on boss without any CP.\nactions.cds+=/marked_for_death,if=raid_event.adds.in>30-raid_event.adds.duration&combo_points.deficit>=cp_max_spend\nactions.cds+=/shadow_blades,if=variable.snd_condition&combo_points.deficit>=2&target.time_to_die>=10&(dot.sepsis.ticking||cooldown.sepsis.remains<=8||!talent.sepsis)||boss&fight_remains<=20\nactions.cds+=/echoing_reprimand,if=variable.snd_condition&combo_points.deficit>=3&(variable.priority_rotation||spell_targets.shuriken_storm<=4||talent.resounding_clarity)&(buff.shadow_dance.up||!talent.danse_macabre)\n# With SF, if not already done, use Tornado with SoD up.\nactions.cds+=/shuriken_tornado,if=variable.snd_condition&buff.symbols_of_death.up&combo_points<=2&(!buff.premeditation.up||spell_targets.shuriken_storm>4)\nactions.cds+=/shuriken_tornado,if=cooldown.shadow_dance.ready&!stealthed.all&spell_targets.shuriken_storm>=3&!talent.flagellation.enabled\nactions.cds+=/shadow_dance,if=!buff.shadow_dance.up&boss&fight_remains<=8+talent.subterfuge.enabled\nactions.cds+=/thistle_tea,if=cooldown.symbols_of_death.remains>=3&!buff.thistle_tea.up&(energy.deficit>=100&(combo_points.deficit>=2||spell_targets.shuriken_storm>=3)||cooldown.thistle_tea.charges_fractional>=2.75&buff.shadow_dance.up)||buff.shadow_dance.remains>=4&!buff.thistle_tea.up&spell_targets.shuriken_storm>=3||!buff.thistle_tea.up&boss&fight_remains<=(6*cooldown.thistle_tea.charges)\nactions.cds+=/potion,if=buff.bloodlust.react||boss&fight_remains<30||buff.symbols_of_death.up&(buff.shadow_blades.up||cooldown.shadow_blades.remains<=10)\nactions.cds+=/blood_fury,if=buff.symbols_of_death.up\nactions.cds+=/berserking,if=buff.symbols_of_death.up\nactions.cds+=/fireblood,if=buff.symbols_of_death.up\nactions.cds+=/ancestral_call,if=buff.symbols_of_death.up\nactions.cds+=/manic_grieftorch,use_off_gcd=1,if=!stealthed.all&(!raid_event.adds.up||!equipped.stormeaters_boon)\n# Default fallback for usable items: Use with Symbols of Death.\nactions.cds+=/use_items,if=buff.symbols_of_death.up||boss&fight_remains<20\n\n# Finishers While using Premeditation, avoid casting Slice and Dice when Shadow Dance is soon to be used, except for Kyrian\nactions.finish+=/variable,name=premed_snd_condition,value=talent.premeditation.enabled&spell_targets.shuriken_storm<5\nactions.finish+=/variable,name=secret_condition,value=buff.shadow_dance.up&(buff.danse_macabre.stack>=3||!talent.danse_macabre)&(!buff.premeditation.up||spell_targets.shuriken_storm!=2)\nactions.finish+=/slice_and_dice,if=!variable.premed_snd_condition&spell_targets.shuriken_storm<6&!buff.shadow_dance.up&buff.slice_and_dice.remains<fight_remains&refreshable\nactions.finish+=/slice_and_dice,if=variable.premed_snd_condition&cooldown.shadow_dance.charges_fractional<1.75&buff.slice_and_dice.remains<cooldown.symbols_of_death.remains&(cooldown.shadow_dance.ready&buff.symbols_of_death.remains-buff.shadow_dance.remains<1.2)\nactions.finish+=/variable,name=skip_rupture,value=buff.thistle_tea.up&spell_targets.shuriken_storm=1||buff.shadow_dance.up&(spell_targets.shuriken_storm=1||dot.rupture.ticking&spell_targets.shuriken_storm>=2)\n# Keep up Rupture if it is about to run out.\nactions.finish+=/rupture,if=(!variable.skip_rupture||variable.priority_rotation)&target.time_to_die-remains>6&refreshable\n# Refresh Rupture early for Finality\nactions.finish+=/rupture,if=!variable.skip_rupture&buff.finality_rupture.up&cooldown.shadow_dance.remains<12&cooldown.shadow_dance.charges_fractional<=1&spell_targets.shuriken_storm=1&(talent.dark_brew||talent.danse_macabre)\n# Sync Cold Blood with Secret Technique when possible\nactions.finish+=/cold_blood,if=variable.secret_condition&cooldown.secret_technique.ready\nactions.finish+=/secret_technique,if=variable.secret_condition&(!talent.cold_blood||cooldown.cold_blood.remains>buff.shadow_dance.remains-2)\n# Multidotting targets that will live for the duration of Rupture, refresh during pandemic.\nactions.finish+=/rupture,cycle_targets=1,if=!variable.skip_rupture&!variable.priority_rotation&spell_targets.shuriken_storm>=2&target.time_to_die>=(2*combo_points)&refreshable\n# Refresh Rupture early if it will expire during Symbols. Do that refresh if SoD gets ready in the next 5s.\nactions.finish+=/rupture,if=!variable.skip_rupture&remains<cooldown.symbols_of_death.remains+10&cooldown.symbols_of_death.remains<=5&target.time_to_die-remains>cooldown.symbols_of_death.remains+5\nactions.finish+=/black_powder,if=!variable.priority_rotation&spell_targets>=3||!used_for_danse&buff.shadow_dance.up&spell_targets.shuriken_storm=2&talent.danse_macabre\nactions.finish+=/eviscerate\n\n# Stealth Cooldowns Helper Variable\nactions.stealth_cds+=/variable,name=shd_threshold,value=cooldown.shadow_dance.charges_fractional>=0.75+talent.shadow_dance\nactions.stealth_cds+=/variable,name=rotten_threshold,value=!buff.the_rotten.up||spell_targets.shuriken_storm>1\nactions.stealth_cds+=/vanish,if=(!talent.danse_macabre||spell_targets.shuriken_storm>=3)&!variable.shd_threshold&combo_points.deficit>1\n# Pool for Shadowmeld + Shadowstrike unless we are about to cap on Dance charges. Only when Find Weakness is about to run out.\nactions.stealth_cds+=/pool_resource,for_next=1,extra_amount=40,if=race.night_elf\nactions.stealth_cds+=/shadowmeld,if=energy>=40&energy.deficit>=10&!variable.shd_threshold&combo_points.deficit>4\n# CP thresholds for entering Shadow Dance Default to start dance with 0 or 1 combo point\nactions.stealth_cds+=/variable,name=shd_combo_points,value=combo_points<=1\n# Use stealth cooldowns with high combo points when playing shuriken tornado or with high target counts\nactions.stealth_cds+=/variable,name=shd_combo_points,value=combo_points.deficit<=1,if=spell_targets.shuriken_storm>(4-2*talent.shuriken_tornado.enabled)||variable.priority_rotation&spell_targets.shuriken_storm>=4\n# Use stealth cooldowns on any combo point on 4 targets\nactions.stealth_cds+=/variable,name=shd_combo_points,value=1,if=spell_targets.shuriken_storm=(4-talent.seal_fate)\n# Dance during Symbols or above threshold.\nactions.stealth_cds+=/shadow_dance,if=(variable.shd_combo_points&(!talent.shadow_dance&buff.symbols_of_death.remains>=(2.2-talent.flagellation.enabled)||variable.shd_threshold)||talent.shadow_dance&cooldown.secret_technique.remains<=9&(spell_targets.shuriken_storm<=3||talent.danse_macabre)||buff.flagellation.up||buff.flagellation_persist.remains>=6||spell_targets.shuriken_storm>=4&cooldown.symbols_of_death.remains>10)&variable.rotten_threshold\n# Burn Dances charges if before the fight ends if SoD won't be ready in time.\nactions.stealth_cds+=/shadow_dance,if=variable.shd_combo_points&fight_remains<cooldown.symbols_of_death.remains||!talent.shadow_dance&dot.rupture.ticking&spell_targets.shuriken_storm<=4&variable.rotten_threshold\n\n# Stealthed Rotation If Stealth/vanish are up, use Shadowstrike to benefit from the passive bonus and Find Weakness, even if we are at max CP (unless using Master Assassin)\nactions.stealthed+=/shadowstrike,if=(buff.stealth.up||buff.vanish.up)&(spell_targets.shuriken_storm<4||variable.priority_rotation)\n# Variable to Gloomblade / Backstab when on 4 or 5 combo points with premediation and when the combo point is not anima charged\nactions.stealthed+=/variable,name=gloomblade_condition,value=buff.danse_macabre.stack<5&(combo_points.deficit=2||combo_points.deficit=3)&(buff.premeditation.up||effective_combo_points<7)&(spell_targets.shuriken_storm<=8||talent.lingering_shadow)\nactions.stealthed+=/shuriken_storm,if=variable.gloomblade_condition&buff.silent_storm.up&!debuff.find_weakness.remains&talent.improved_shuriken_storm.enabled||combo_points<=1&!used_for_danse&spell_targets.shuriken_storm=2&talent.danse_macabre\nactions.stealthed+=/gloomblade,if=variable.gloomblade_condition&(!used_for_danse||spell_targets.shuriken_storm!=2)\nactions.stealthed+=/backstab,if=variable.gloomblade_condition&talent.danse_macabre&buff.danse_macabre.stack<=2&spell_targets.shuriken_storm<=2\nactions.stealthed+=/call_action_list,name=finish,strict=1,if=variable.effective_combo_points>=cp_max_spend\n# Finish earlier with Shuriken tornado up.\nactions.stealthed+=/call_action_list,name=finish,strict=1,if=buff.shuriken_tornado.up&combo_points.deficit<=2\n# Also safe to finish at 4+ CP with exactly 4 targets. (Same as outside stealth.)\nactions.stealthed+=/call_action_list,name=finish,strict=1,if=spell_targets.shuriken_storm>=4-talent.seal_fate&variable.effective_combo_points>=4\n# Finish at lower combo points if you are talented in DS, SS or Seal Fate\nactions.stealthed+=/call_action_list,name=finish,strict=1,if=combo_points.deficit<=1+(talent.seal_fate||talent.deeper_stratagem||talent.secret_stratagem)\n# Use Gloomblade or Backstab when close to hitting max PV stacks\nactions.stealthed+=/gloomblade,if=buff.perforated_veins.stack>=5&spell_targets.shuriken_storm<3\nactions.stealthed+=/backstab,if=buff.perforated_veins.stack>=5&spell_targets.shuriken_storm<3\nactions.stealthed+=/shadowstrike,if=stealthed.sepsis&spell_targets.shuriken_storm<4\nactions.stealthed+=/shuriken_storm,if=spell_targets>=3+buff.the_rotten.up&(!buff.premeditation.up||spell_targets>=7&!variable.priority_rotation)\n# Shadowstrike to refresh Find Weakness and to ensure we can carry over a full FW into the next SoD if possible.\nactions.stealthed+=/shadowstrike,if=debuff.find_weakness.remains<=1||cooldown.symbols_of_death.remains<18&debuff.find_weakness.remains<cooldown.symbols_of_death.remains\nactions.stealthed+=/shadowstrike",
["author"] = "SimC",
},
["Protection Paladin"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230327,
["author"] = "SimC",
["desc"] = "2023-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",
}, -- [1]
{
["action"] = "cleanse_toxins",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "cooldowns",
}, -- [3]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "mitigation",
}, -- [4]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "trinkets",
}, -- [5]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "standard",
}, -- [6]
},
["precombat"] = {
{
["enabled"] = true,
["criteria"] = "buff.paladin_aura.down",
["action"] = "devotion_aura",
}, -- [1]
{
["action"] = "lights_judgment",
["enabled"] = true,
}, -- [2]
{
["action"] = "arcane_torrent",
["enabled"] = true,
}, -- [3]
{
["action"] = "consecration",
["enabled"] = true,
}, -- [4]
},
["mitigation"] = {
{
["enabled"] = true,
["criteria"] = "tanking & buff.shield_of_the_righteous.down & ( holy_power.deficit = 0 || buff.divine_purpose.up )",
["action"] = "shield_of_the_righteous",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "health.pct < wog_health & ( holy_power.deficit = 0 || buff.divine_purpose.up || buff.shining_light_free.up )",
["action"] = "word_of_glory",
}, -- [2]
{
["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",
}, -- [3]
{
["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",
}, -- [4]
{
["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",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "health.pct < 15",
["action"] = "lay_on_hands",
}, -- [6]
},
["trinkets"] = {
{
["enabled"] = true,
["op"] = "setif",
["description"] = "Evaluates a trinkets cooldown, divided by moment of glory or avenging wraths'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.moment_of_glory.enabled & trinket.t1.cooldown.duration % cooldown.moment_of_glory.duration = 0 ) || ( ! talent.moment_of_glory.enabled & trinket.t1.cooldown.duration % cooldown.avenging_wrath.duration = 0 ) )",
}, -- [1]
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "trinket_2_sync",
["value"] = "1",
["value_else"] = "0.5",
["criteria"] = "trinket.t2.has_use_buff & ( ( talent.moment_of_glory.enabled & trinket.t2.cooldown.duration % cooldown.moment_of_glory.duration = 0 ) || ( ! talent.moment_of_glory.enabled & trinket.t2.cooldown.duration % cooldown.avenging_wrath.duration = 0 ) )",
}, -- [2]
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "trinket_priority",
["value"] = "2",
["value_else"] = "1",
["criteria"] = "! trinket.t1.has_use_buff & trinket.t2.has_use_buff || trinket.t2.has_use_buff & ( ( 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 ) )",
}, -- [3]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff",
["var_name"] = "trinket_1_buffs",
}, -- [4]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff",
["var_name"] = "trinket_2_buffs",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "( buff.moment_of_glory.up || ! talent.moment_of_glory_enabled.enabled & buff.aw_sentinel.up ) & ( ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || boss & trinket.t1.buff_duration >= fight_remains",
["action"] = "trinket1",
["slot"] = "trinket1",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "( buff.moment_of_glory.up || ! talent.moment_of_glory_enabled.enabled & buff.aw_sentinel.up ) & ( ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || boss & trinket.t2.buff_duration >= fight_remains",
["action"] = "trinket2",
["slot"] = "trinket2",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs || ( cooldown.moment_of_glory.remains > 20 || ( ! talent.moment_of_glory.enabled & ( cooldown.sentinel.remains > 20 || cooldown.avenging_wrath.remains > 20 ) ) ) )",
["action"] = "trinket1",
["slot"] = "trinket1",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs || ( cooldown.moment_of_glory.remains > 20 || ( ! talent.moment_of_glory.enabled & ( cooldown.sentinel.remains > 20 || cooldown.avenging_wrath.remains > 20 ) ) ) )",
["action"] = "trinket2",
["slot"] = "trinket2",
}, -- [9]
{
["action"] = "use_items",
["enabled"] = true,
}, -- [10]
},
["standard"] = {
{
["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)",
["criteria"] = "( ( ! talent.righteous_protector.enabled || buff.righteous_protector_icd.down ) & holy_power > 2 ) || buff.bastion_of_light.up || buff.divine_purpose.up",
["action"] = "shield_of_the_righteous",
}, -- [1]
{
["enabled"] = true,
["description"] = "Use Avenger's Shield as First Priority when 2pc buff is missing.",
["criteria"] = "buff.moment_of_glory.up || ( set_bonus.tier29_2pc & ( ! buff.ally_of_the_light.up || buff.ally_of_the_light.remains < gcd.max ) )",
["action"] = "avengers_shield",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.aw_sentinel.up",
["action"] = "hammer_of_wrath",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "charges = 2 || ! talent.crusaders_judgment.enabled",
["action"] = "judgment",
["cycle_targets"] = 1,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "time > 20 || ( ( buff.aw_sentinel.up || ! talent.avenging_wrath.enabled & ! talent.sentinel.enabled ) & ( buff.moment_of_glory.up || ! talent.moment_of_glory.enabled ) )",
["action"] = "divine_toll",
}, -- [5]
{
["action"] = "avengers_shield",
["enabled"] = true,
}, -- [6]
{
["action"] = "hammer_of_wrath",
["enabled"] = true,
}, -- [7]
{
["enabled"] = true,
["action"] = "judgment",
["cycle_targets"] = 1,
}, -- [8]
{
["enabled"] = true,
["criteria"] = "! consecration.up",
["action"] = "consecration",
}, -- [9]
{
["action"] = "eye_of_tyr",
["enabled"] = true,
}, -- [10]
{
["action"] = "blessed_hammer",
["enabled"] = true,
}, -- [11]
{
["action"] = "hammer_of_the_righteous",
["enabled"] = true,
}, -- [12]
{
["action"] = "crusader_strike",
["enabled"] = true,
}, -- [13]
{
["enabled"] = true,
["criteria"] = "buff.shining_light_free.up",
["action"] = "word_of_glory",
}, -- [14]
{
["enabled"] = true,
["criteria"] = "holy_power < 5",
["action"] = "arcane_torrent",
}, -- [15]
{
["action"] = "lights_judgment",
["enabled"] = true,
}, -- [16]
{
["action"] = "consecration",
["enabled"] = true,
}, -- [17]
},
["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",
}, -- [1]
{
["action"] = "avenging_wrath",
["enabled"] = true,
}, -- [2]
{
["action"] = "avenging_wrath",
["enabled"] = true,
}, -- [3]
{
["enabled"] = true,
["criteria"] = "buff.aw_sentinel.up",
["action"] = "potion",
}, -- [4]
{
["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",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "buff.aw_sentinel.up",
["action"] = "bastion_of_light",
}, -- [6]
},
},
["version"] = 20230327,
["warnings"] = "The 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.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 1: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\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 operations in 'trinket.t1.has_use_buff&((talent.moment_of_glory.enabled&trinket.t1.cooldown.duration%%cooldown.moment_of_glory.duration=0)||(!talent.moment_of_glory.enabled&trinket.t1.cooldown.duration%%cooldown.avenging_wrath.duration=0))' to 'trinket.t1.has_use_buff&((talent.moment_of_glory.enabled&trinket.t1.cooldown.duration%cooldown.moment_of_glory.duration=0)||(!talent.moment_of_glory.enabled&trinket.t1.cooldown.duration%cooldown.avenging_wrath.duration=0))'.\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.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted operations in 'trinket.t2.has_use_buff&((talent.moment_of_glory.enabled&trinket.t2.cooldown.duration%%cooldown.moment_of_glory.duration=0)||(!talent.moment_of_glory.enabled&trinket.t2.cooldown.duration%%cooldown.avenging_wrath.duration=0))' to 'trinket.t2.has_use_buff&((talent.moment_of_glory.enabled&trinket.t2.cooldown.duration%cooldown.moment_of_glory.duration=0)||(!talent.moment_of_glory.enabled&trinket.t2.cooldown.duration%cooldown.avenging_wrath.duration=0))'.\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.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.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 3: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 3: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.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.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 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 operations in '!trinket.t1.has_use_buff&trinket.t2.has_use_buff||trinket.t2.has_use_buff&((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 '!trinket.t1.has_use_buff&trinket.t2.has_use_buff||trinket.t2.has_use_buff&((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 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_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 'talent.moment_of_glory_enabled' to 'talent.moment_of_glory_enabled.enabled' (1x).\nLine 6: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 7: Converted 'talent.moment_of_glory_enabled' to 'talent.moment_of_glory_enabled.enabled' (1x).\nLine 7: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 7: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\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 5: Converted 'talent.avenging_wrath' to 'talent.avenging_wrath.enabled' (1x).\nLine 5: Converted 'talent.sentinel' to 'talent.sentinel.enabled' (1x).\n\nImported 6 action lists.\n",
["spec"] = 66,
["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+=/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+=/bastion_of_light,if=buff.aw_sentinel.up\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.pct<wog_health&(holy_power.deficit=0||buff.divine_purpose.up||buff.shining_light_free.up)\nactions.mitigation+=/guardian_of_ancient_kings,if=tanking&incoming_damage_5s>goak_damage&!(buff.ardent_defender.up||buff.guardian_of_ancient_kings.up||buff.divine_shield.up||buff.potion.up)\nactions.mitigation+=/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\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)\nactions.standard+=/shield_of_the_righteous,if=((!talent.righteous_protector.enabled||buff.righteous_protector_icd.down)&holy_power>2)||buff.bastion_of_light.up||buff.divine_purpose.up\n# Use Avenger's Shield as First Priority when 2pc buff is missing.\nactions.standard+=/avengers_shield,if=buff.moment_of_glory.up||(set_bonus.tier29_2pc&(!buff.ally_of_the_light.up||buff.ally_of_the_light.remains<gcd))\nactions.standard+=/hammer_of_wrath,if=buff.aw_sentinel.up\nactions.standard+=/judgment,cycle_targets=1,if=charges=2||!talent.crusaders_judgment.enabled\nactions.standard+=/divine_toll,if=time>20||((buff.aw_sentinel.up||!talent.avenging_wrath&!talent.sentinel)&(buff.moment_of_glory.up||!talent.moment_of_glory.enabled))\nactions.standard+=/avengers_shield\nactions.standard+=/hammer_of_wrath\nactions.standard+=/judgment,cycle_targets=1\nactions.standard+=/consecration,if=!consecration.up\nactions.standard+=/eye_of_tyr\nactions.standard+=/blessed_hammer\nactions.standard+=/hammer_of_the_righteous\nactions.standard+=/crusader_strike\nactions.standard+=/word_of_glory,if=buff.shining_light_free.up\nactions.standard+=/arcane_torrent,if=holy_power<5\nactions.standard+=/lights_judgment\nactions.standard+=/consecration\n\n# Evaluates a trinkets cooldown, divided by moment of glory or avenging wraths's cooldown. If it's value has no remainder return 1, else return 0.5.\nactions.trinkets+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=trinket.1.has_use_buff&((talent.moment_of_glory.enabled&trinket.1.cooldown.duration%%cooldown.moment_of_glory.duration=0)||(!talent.moment_of_glory.enabled&trinket.1.cooldown.duration%%cooldown.avenging_wrath.duration=0))\nactions.trinkets+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=trinket.2.has_use_buff&((talent.moment_of_glory.enabled&trinket.2.cooldown.duration%%cooldown.moment_of_glory.duration=0)||(!talent.moment_of_glory.enabled&trinket.2.cooldown.duration%%cooldown.avenging_wrath.duration=0))\nactions.trinkets+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!trinket.1.has_use_buff&trinket.2.has_use_buff||trinket.2.has_use_buff&((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+=/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.trinkets+=/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.trinkets+=/use_item,slot=trinket1,if=(buff.moment_of_glory.up||!talent.moment_of_glory_enabled&buff.aw_sentinel.up)&(!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,slot=trinket2,if=(buff.moment_of_glory.up||!talent.moment_of_glory_enabled&buff.aw_sentinel.up)&(!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||boss&trinket.2.proc.any_dps.duration>=fight_remains\nactions.trinkets+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs||(cooldown.moment_of_glory.remains>20||(!talent.moment_of_glory.enabled&(cooldown.sentinel.remains>20||cooldown.avenging_wrath.remains>20))))\nactions.trinkets+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs||(cooldown.moment_of_glory.remains>20||(!talent.moment_of_glory.enabled&(cooldown.sentinel.remains>20||cooldown.avenging_wrath.remains>20))))\nactions.trinkets+=/use_items",
},
["Feral"] = {
["builtIn"] = true,
["date"] = 20230508.1,
["author"] = "SimC",
["desc"] = "2023-05-08: Incremental updates from SimC.\n\n2023-05-06: Minor updates.\n\n2023-05-03: Restore missing aoe_builder action list.\n\n2023-05-03: Update again from SimC.\n\n2023-03-27: Test updates from SimC.\n\n2023-02-27: Adjust funneling to use PW if there are multiple un-Ripped targets.\n\n2023-02-25: Testing a funnel option (spend CP on Ferocious Bite instead of Primal Wrath if Rip won't fall off).\n\n2023-02-21: Adjusted Berserk logic to prevent freezing/errors.\n\n2023-02-15: Priority will use finishers at 4+ Combo Points when Lion's Strength is talented, consistent with latest SimulationCraft updates.",
["lists"] = {
["aoe_builder"] = {
{
["enabled"] = true,
["action"] = "brutal_slash",
["cycle_targets"] = 1,
["criteria"] = "cooldown.brutal_slash.full_recharge_time < 4 || target.time_to_die < 5",
["description"] = "avoid capping brs charges, and in the event of adds, offload charges within reason",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "refreshable & ( buff.clearcasting.react || ( spell_targets.thrash_cat > 10 || ( spell_targets.thrash_cat > 5 & ! talent.double_clawed_rake.enabled ) ) & ! talent.thrashing_claws.enabled )",
["action"] = "thrash_cat",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "action.rake.ready & ! buff.sudden_ambush.up & ( dot.rake.refreshable || dot.rake.pmultiplier < 1.4 ) & ! buff.prowl.up & ! buff.apex_predators_craving.up",
["action"] = "shadowmeld",
}, -- [3]
{
["enabled"] = true,
["description"] = "this line checks if theres an upgradeable rake",
["criteria"] = "action.rake.ready & ! buff.sudden_ambush.up & dot.rake.pmultiplier < 1.4 & ! buff.prowl.up & ! buff.apex_predators_craving.up",
["action"] = "shadowmeld",
}, -- [4]
{
["enabled"] = true,
["action"] = "rake",
["cycle_targets"] = 1,
["criteria"] = "buff.sudden_ambush.up & persistent_multiplier > dot.rake.pmultiplier",
["description"] = "not a perfect solution, but it checks lowest dot for pandemic/stealth snapshot first",
}, -- [5]
{
["enabled"] = true,
["action"] = "rake",
["cycle_targets"] = 1,
["criteria"] = "buff.sudden_ambush.up & persistent_multiplier > dot.rake.pmultiplier || refreshable",
["description"] = "and if lowest dot is fine, it checks the remaining dots and targets a mob without stealth snapshot (not necessarily 2nd lowest)",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "refreshable",
["action"] = "thrash_cat",
}, -- [7]
{
["action"] = "brutal_slash",
["enabled"] = true,
}, -- [8]
{
["enabled"] = true,
["action"] = "lunar_inspiration",
["criteria"] = "refreshable & spell_targets.swipe_cat < 5",
["cycle_targets"] = 1,
}, -- [9]
{
["action"] = "swipe_cat",
["enabled"] = true,
}, -- [10]
{
["enabled"] = true,
["action"] = "lunar_inspiration",
["criteria"] = "refreshable",
["cycle_targets"] = 1,
}, -- [11]
{
["enabled"] = true,
["action"] = "shred",
["cycle_targets"] = 1,
["criteria"] = "action.shred.damage > action.thrash_cat.damage & ! buff.sudden_ambush.up",
["description"] = "if we have brs and nothing better to cast, check if thrash DD beats shred (or if SA is up)",
}, -- [12]
{
["action"] = "thrash_cat",
["enabled"] = true,
}, -- [13]
},
["finisher"] = {
{
["enabled"] = true,
["criteria"] = "( ( dot.primal_wrath.refreshable & ! talent.circle_of_life_and_death.enabled ) || dot.primal_wrath.remains < 6 || talent.tear_open_wounds.enabled ) & spell_targets.primal_wrath > 1 & talent.primal_wrath.enabled",
["action"] = "primal_wrath",
}, -- [1]
{
["enabled"] = true,
["action"] = "rip",
["criteria"] = "refreshable",
["cycle_targets"] = 1,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "! action.tigers_fury.ready & buff.apex_predators_craving.down",
["for_next"] = 1,
["action"] = "pool_resource",
}, -- [3]
{
["enabled"] = true,
["action"] = "ferocious_bite",
["cycle_targets"] = 1,
["criteria"] = "buff.apex_predators_craving.down & ( ! buff.bs_inc.up || ( buff.bs_inc.up & ! talent.soul_of_the_forest.enabled ) )",
["max_energy"] = 1,
}, -- [4]
{
["enabled"] = true,
["action"] = "ferocious_bite",
["criteria"] = "( buff.bs_inc.up & talent.soul_of_the_forest.enabled ) || buff.apex_predators_craving.up",
["cycle_targets"] = 1,
}, -- [5]
},
["clearcasting"] = {
{
["enabled"] = true,
["criteria"] = "refreshable & ! talent.thrashing_claws.enabled",
["action"] = "thrash_cat",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "spell_targets.swipe_cat > 1",
["action"] = "swipe_cat",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "spell_targets.brutal_slash > 2",
["action"] = "brutal_slash",
}, -- [3]
{
["action"] = "shred",
["enabled"] = true,
}, -- [4]
},
["builder"] = {
{
["enabled"] = true,
["action"] = "run_action_list",
["strict"] = 1,
["criteria"] = "buff.clearcasting.react",
["list_name"] = "clearcasting",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "cooldown.brutal_slash.full_recharge_time < 4",
["action"] = "brutal_slash",
}, -- [2]
{
["enabled"] = true,
["description"] = "this isn't perfect, as it only checks the target with lowest remaining dot. Feel free to improve",
["criteria"] = "action.rake.ready & ! buff.sudden_ambush.up & ( dot.rake.refreshable || dot.rake.pmultiplier < 1.4 ) & ! buff.prowl.up & ! buff.apex_predators_craving.up",
["action"] = "shadowmeld",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "refreshable || ( buff.sudden_ambush.up & persistent_multiplier > dot.rake.pmultiplier & dot.rake.remains > 6 )",
["action"] = "rake",
}, -- [4]
{
["enabled"] = true,
["action"] = "lunar_inspiration",
["criteria"] = "refreshable",
["cycle_targets"] = 1,
}, -- [5]
{
["enabled"] = true,
["action"] = "thrash_cat",
["criteria"] = "refreshable & ! talent.thrashing_claws.enabled",
["cycle_targets"] = 1,
}, -- [6]
{
["action"] = "brutal_slash",
["enabled"] = true,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "spell_targets.swipe_cat > 1 || talent.wild_slashes.enabled",
["action"] = "swipe_cat",
}, -- [8]
{
["action"] = "shred",
["enabled"] = true,
}, -- [9]
},
["berserk"] = {
{
["enabled"] = true,
["action"] = "ferocious_bite",
["criteria"] = "combo_points = 5 & dot.rip.remains > 8 & variable.zerk_biteweave & spell_targets.swipe_cat > 1",
["cycle_targets"] = 1,
}, -- [1]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "proc bt if 0/1 stack if 5/6 combo points",
["strict"] = 1,
["criteria"] = "combo_points = 5 & ! ( buff.overflowing_power.stack <= 1 & active_bt_triggers = 2 & buff.bloodtalons.stack <= 1 )",
["list_name"] = "finisher",
}, -- [2]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "its currently a gain to just contiuously try to proc bt in aoe",
["strict"] = 1,
["criteria"] = "spell_targets.swipe_cat > 1",
["list_name"] = "bloodtalons",
}, -- [3]
{
["enabled"] = true,
["description"] = "go into stealth to buff rake snapshot-- feral frenzy line is to eliminate an edge case involving ff being casted instead due to higher prio",
["criteria"] = "! ( buff.bt_rake.up & active_bt_triggers = 2 ) & ( action.rake.ready & gcd.remains = 0 & ! buff.sudden_ambush.up & ( dot.rake.refreshable || dot.rake.pmultiplier < 1.4 ) & ! buff.shadowmeld.up & cooldown.feral_frenzy.remains < 44 & ! buff.apex_predators_craving.up )",
["action"] = "prowl",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "! ( buff.bt_rake.up & active_bt_triggers = 2 ) & action.rake.ready & ! buff.sudden_ambush.up & ( dot.rake.refreshable || dot.rake.pmultiplier < 1.4 ) & ! buff.prowl.up & ! buff.apex_predators_craving.up",
["action"] = "shadowmeld",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "! ( buff.bt_rake.up & active_bt_triggers = 2 ) & ( refreshable || ( buff.sudden_ambush.up & persistent_multiplier > dot.rake.pmultiplier & ! dot.rake.refreshable ) )",
["action"] = "rake",
}, -- [6]
{
["enabled"] = true,
["description"] = "in single target, you just proc bt when an opportunity arises",
["criteria"] = "active_bt_triggers = 2 & buff.bt_shred.down",
["action"] = "shred",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "active_bt_triggers = 2 & buff.bt_brutal_slash.down",
["action"] = "brutal_slash",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "active_bt_triggers = 2 & buff.bt_moonfire.down",
["action"] = "lunar_inspiration",
}, -- [9]
{
["enabled"] = true,
["criteria"] = "active_bt_triggers = 2 & buff.bt_thrash.down & ! talent.thrashing_claws.enabled & variable.need_bt & ( refreshable || talent.brutal_slash.enabled )",
["action"] = "thrash_cat",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "refreshable",
["action"] = "lunar_inspiration",
}, -- [11]
{
["enabled"] = true,
["description"] = "don't overcap brs charges, but keep it available for bt",
["criteria"] = "cooldown.brutal_slash.charges > 1",
["action"] = "brutal_slash",
}, -- [12]
{
["action"] = "shred",
["enabled"] = true,
}, -- [13]
},
["owlweaving"] = {
{
["enabled"] = true,
["action"] = "sunfire",
["line_cd"] = "4*gcd",
}, -- [1]
},
["default"] = {
{
["action"] = "skull_bash",
["enabled"] = true,
}, -- [1]
{
["action"] = "soothe",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "buff.bs_inc.down & ! buff.prowl.up",
["action"] = "prowl",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "! buff.cat_form.up",
["action"] = "cat_form",
}, -- [4]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.bloodtalons.enabled & buff.bloodtalons.stack < 2",
["var_name"] = "need_bt",
}, -- [5]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "spell_targets.swipe_cat = 1",
["var_name"] = "align_3minutes",
}, -- [6]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "fight_remains > cooldown.convoke_the_spirits.remains + 3 & ( ( talent.ashamanes_guidance.enabled & fight_remains < ( cooldown.convoke_the_spirits.remains + 60 ) ) || ( ! talent.ashamanes_guidance.enabled & fight_remains < ( cooldown.convoke_the_spirits.remains + 120 ) ) )",
["var_name"] = "lastconvoke",
}, -- [7]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "fight_remains > ( 30 + ( cooldown.bs_inc.remains / 1.6 ) ) & ( ( talent.berserk_heart_of_the_lion.enabled & fight_remains < ( 90 + ( cooldown.bs_inc.remains / 1.6 ) ) ) || ( ! talent.berserk_heart_of_the_lion.enabled & fight_remains < ( 180 + cooldown.bs_inc.remains ) ) )",
["var_name"] = "lastzerk",
}, -- [8]
{
["var_name"] = "zerk_biteweave",
["op"] = "reset",
["action"] = "variable",
["enabled"] = true,
}, -- [9]
{
["enabled"] = true,
["criteria"] = "! talent.convoke_the_spirits.enabled & ( ! buff.tigers_fury.up || energy.deficit > 65 )",
["action"] = "tigers_fury",
}, -- [10]
{
["enabled"] = true,
["criteria"] = "talent.convoke_the_spirits.enabled & ( ! variable.lastconvoke || ( variable.lastconvoke & ! buff.tigers_fury.up ) )",
["action"] = "tigers_fury",
}, -- [11]
{
["enabled"] = true,
["action"] = "rake",
["criteria"] = "1.4 * persistent_multiplier > dot.rake.pmultiplier & ( buff.prowl.up || buff.shadowmeld.up )",
["cycle_targets"] = 1,
}, -- [12]
{
["action"] = "natures_vigil",
["enabled"] = true,
}, -- [13]
{
["enabled"] = true,
["action"] = "adaptive_swarm",
["criteria"] = "( ( ! dot.adaptive_swarm_damage.ticking || dot.adaptive_swarm_damage.remains < 2 ) & ( dot.adaptive_swarm_damage.stack < 3 || ! dot.adaptive_swarm_heal.stack > 1 ) & ! action.adaptive_swarm_heal.in_flight & ! action.adaptive_swarm_damage.in_flight & ! action.adaptive_swarm.in_flight ) & target.time_to_die > 5 || active_enemies > 2 & ! dot.adaptive_swarm_damage.ticking & energy < 35 & target.time_to_die > 5 & ! ( variable.need_bt & active_bt_triggers = 2 )",
["cycle_targets"] = 1,
}, -- [14]
{
["enabled"] = true,
["action"] = "call_action_list",
["list_name"] = "cooldown",
}, -- [15]
{
["enabled"] = true,
["action"] = "feral_frenzy",
["criteria"] = "combo_points < 2 || combo_points < 3 & buff.bs_inc.up",
["cycle_targets"] = 1,
}, -- [16]
{
["enabled"] = true,
["action"] = "ferocious_bite",
["criteria"] = "buff.apex_predators_craving.up & ( spell_targets.swipe_cat = 1 || ! talent.primal_wrath.enabled || ! buff.sabertooth.up ) & ! ( variable.need_bt & active_bt_triggers = 2 )",
["cycle_targets"] = 1,
}, -- [17]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "buff.bs_inc.up",
["list_name"] = "berserk",
}, -- [18]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "combo_points >= 4 & spell_targets.swipe_cat > 1",
["list_name"] = "finisher",
}, -- [19]
{
["enabled"] = true,
["action"] = "call_action_list",
["strict"] = 1,
["criteria"] = "combo_points >= 4",
["list_name"] = "finisher",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "variable.need_bt & ! buff.bs_inc.up & combo_points < 5",
["action"] = "call_action_list",
["list_name"] = "bloodtalons",
}, -- [21]
{
["enabled"] = true,
["action"] = "run_action_list",
["strict"] = 1,
["criteria"] = "spell_targets.swipe_cat > 1 & talent.primal_wrath.enabled",
["list_name"] = "aoe_builder",
}, -- [22]
{
["enabled"] = true,
["criteria"] = "combo_points < 5 & ! buff.bs_inc.up",
["action"] = "call_action_list",
["list_name"] = "builder",
}, -- [23]
},
["precombat"] = {
{
["enabled"] = true,
["criteria"] = "buff.prowl.down",
["action"] = "mark_of_the_wild",
}, -- [1]
{
["enabled"] = true,
["name"] = "algethar_puzzle_box",
["action"] = "algethar_puzzle_box",
}, -- [2]
{
["action"] = "heart_of_the_wild",
["enabled"] = true,
}, -- [3]
{
["action"] = "prowl",
["enabled"] = true,
}, -- [4]
{
["action"] = "cat_form",
["enabled"] = true,
}, -- [5]
},
["bloodtalons"] = {
{
["enabled"] = true,
["criteria"] = "( cooldown.brutal_slash.full_recharge_time < 4 || target.time_to_die < 5 ) & ( buff.bt_brutal_slash.down & ( buff.bs_inc.up || variable.need_bt ) )",
["action"] = "brutal_slash",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "action.rake.ready & gcd.remains = 0 & ! buff.sudden_ambush.up & ( dot.rake.refreshable || dot.rake.pmultiplier < 1.4 ) & ! buff.shadowmeld.up & buff.bt_rake.down & ! buff.prowl.up & ! buff.apex_predators_craving.up",
["action"] = "prowl",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "action.rake.ready & ! buff.sudden_ambush.up & ( dot.rake.refreshable || dot.rake.pmultiplier < 1.4 ) & ! buff.prowl.up & buff.bt_rake.down & cooldown.feral_frenzy.remains < 44 & ! buff.apex_predators_craving.up",
["action"] = "shadowmeld",
}, -- [3]
{
["enabled"] = true,
["action"] = "rake",
["criteria"] = "( refreshable || buff.sudden_ambush.up & persistent_multiplier > dot.rake.pmultiplier ) & buff.bt_rake.down",
["cycle_targets"] = 1,
}, -- [4]
{
["enabled"] = true,
["action"] = "rake",
["criteria"] = "buff.sudden_ambush.up & persistent_multiplier > dot.rake.pmultiplier & buff.bt_rake.down",
["cycle_targets"] = 1,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "buff.bt_shred.down & buff.clearcasting.react & spell_targets.swipe_cat = 1",
["action"] = "shred",
}, -- [6]
{
["enabled"] = true,
["action"] = "thrash_cat",
["criteria"] = "refreshable & buff.bt_thrash.down & buff.clearcasting.react & spell_targets.swipe_cat = 1 & ! talent.thrashing_claws.enabled",
["cycle_targets"] = 1,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "buff.bt_brutal_slash.down",
["action"] = "brutal_slash",
}, -- [8]
{
["enabled"] = true,
["criteria"] = "refreshable & buff.bt_moonfire.down & spell_targets.swipe_cat = 1",
["action"] = "lunar_inspiration",
}, -- [9]
{
["enabled"] = true,
["action"] = "thrash_cat",
["criteria"] = "refreshable & buff.bt_thrash.down & ! talent.thrashing_claws.enabled",
["cycle_targets"] = 1,
}, -- [10]
{
["enabled"] = true,
["criteria"] = "buff.bt_shred.down & spell_targets.swipe_cat = 1 & ! talent.wild_slashes.enabled",
["action"] = "shred",
}, -- [11]
{
["enabled"] = true,
["criteria"] = "buff.bt_swipe.down & talent.wild_slashes.enabled",
["action"] = "swipe_cat",
}, -- [12]
{
["enabled"] = true,
["action"] = "lunar_inspiration",
["cycle_targets"] = 1,
["max_cycle_targets"] = "3",
["criteria"] = "buff.bt_moonfire.down & spell_targets.swipe_cat < 5",
}, -- [13]
{
["enabled"] = true,
["criteria"] = "buff.bt_swipe.down",
["action"] = "swipe_cat",
}, -- [14]
{
["enabled"] = true,
["action"] = "lunar_inspiration",
["criteria"] = "buff.bt_moonfire.down",
["cycle_targets"] = 1,
}, -- [15]
{
["enabled"] = true,
["action"] = "shred",
["cycle_targets"] = 1,
["criteria"] = "action.shred.damage > action.thrash_cat.damage & buff.bt_shred.down & ! buff.sudden_ambush.up",
["description"] = "If we have BrS and nothing better to cast, check if shred beats thrash DD (or if SA is up)",
}, -- [16]
{
["enabled"] = true,
["criteria"] = "buff.bt_thrash.down",
["action"] = "thrash_cat",
}, -- [17]
},
["cooldown"] = {
{
["enabled"] = true,
["criteria"] = "boss & fight_remains < 35 || ( ! variable.align_3minutes )",
["name"] = "algethar_puzzle_box",
["action"] = "algethar_puzzle_box",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "variable.align_3minutes & ( cooldown.bs_inc.remains < 3 & ( ! variable.lastzerk || ! variable.lastconvoke || ( variable.lastconvoke & cooldown.convoke_the_spirits.remains < 13 ) ) )",
["name"] = "algethar_puzzle_box",
["action"] = "algethar_puzzle_box",
}, -- [2]
{
["action"] = "incarnation",
["enabled"] = true,
}, -- [3]
{
["enabled"] = true,
["criteria"] = "( ! variable.lastzerk ) || ( boss & fight_remains < 23 ) || ( variable.lastzerk & ! variable.lastconvoke )",
["action"] = "berserk",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "( variable.lastconvoke & cooldown.convoke_the_spirits.remains < 10 )",
["action"] = "berserk",
}, -- [5]
{
["enabled"] = true,
["criteria"] = "! variable.align_3minutes || buff.bs_inc.up",
["action"] = "berserking",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "buff.bs_inc.up || boss & fight_remains < 32 || ( boss & fight_remains < cooldown.bs_inc.remains & variable.lastconvoke & cooldown.convoke_the_spirits.remains < 10 )",
["action"] = "potion",
}, -- [7]
{
["enabled"] = true,
["criteria"] = "boss & fight_remains < 5 || ( dot.rip.remains > 5 & buff.tigers_fury.up & ( combo_points < 2 || ( buff.bs_inc.up & combo_points = 2 ) ) & ( ! variable.lastconvoke || ! variable.lastzerk || buff.bs_inc.up ) )",
["action"] = "convoke_the_spirits",
}, -- [8]
{
["enabled"] = true,
["name"] = "manic_grieftorch",
["cycle_targets"] = 1,
["action"] = "manic_grieftorch",
["criteria"] = "energy.deficit > 40",
}, -- [9]
{
["action"] = "use_items",
["enabled"] = true,
}, -- [10]
},
["berserk_builders"] = {
{
["enabled"] = true,
["action"] = "rake",
["criteria"] = "refreshable",
["cycle_targets"] = 1,
}, -- [1]
{
["enabled"] = true,
["criteria"] = "spell_targets.swipe_cat > 1",
["action"] = "swipe_cat",
}, -- [2]
{
["enabled"] = true,
["criteria"] = "active_bt_triggers = 2 & buff.bt_brutal_slash.down",
["action"] = "brutal_slash",
}, -- [3]
{
["action"] = "shred",
["enabled"] = true,
}, -- [4]
},
},
["version"] = 20230508.1,
["warnings"] = "The import for 'berserk' required some automated changes.\nLine 10: Converted 'talent.thrashing_claws' to 'talent.thrashing_claws.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 8: Converted operations in 'fight_remains>(30+(cooldown.bs_inc.remains%1.6))&((talent.berserk_heart_of_the_lion.enabled&fight_remains<(90+(cooldown.bs_inc.remains%1.6)))||(!talent.berserk_heart_of_the_lion.enabled&fight_remains<(180+cooldown.bs_inc.remains)))' to 'fight_remains>(30+(cooldown.bs_inc.remains/1.6))&((talent.berserk_heart_of_the_lion.enabled&fight_remains<(90+(cooldown.bs_inc.remains/1.6)))||(!talent.berserk_heart_of_the_lion.enabled&fight_remains<(180+cooldown.bs_inc.remains)))'.\n\nThe import for 'aoe_builder' required some automated changes.\nLine 2: Converted 'talent.thrashing_claws' to 'talent.thrashing_claws.enabled' (1x).\n\nImported 11 action lists.\n",
["spec"] = 103,
["profile"] = "actions.precombat+=/mark_of_the_wild,if=buff.prowl.down\nactions.precombat+=/use_item,name=algethar_puzzle_box\nactions.precombat+=/heart_of_the_wild\nactions.precombat+=/prowl\nactions.precombat+=/cat_form\n\nactions+=/skull_bash\nactions+=/soothe\nactions+=/prowl,if=buff.bs_inc.down&!buff.prowl.up\nactions+=/cat_form,if=!buff.cat_form.up\n## berserk and power infusion cds dont line up very well, so we are better off just sending on cooldown\n## actions+=/invoke_external_buff,name=power_infusion\nactions+=/variable,name=need_bt,value=talent.bloodtalons.enabled&buff.bloodtalons.stack<2\nactions+=/variable,name=align_3minutes,value=spell_targets.swipe_cat=1\nactions+=/variable,name=lastconvoke,value=fight_remains>cooldown.convoke_the_spirits.remains+3&((talent.ashamanes_guidance.enabled&fight_remains<(cooldown.convoke_the_spirits.remains+60))||(!talent.ashamanes_guidance.enabled&fight_remains<(cooldown.convoke_the_spirits.remains+120)))\nactions+=/variable,name=lastzerk,value=fight_remains>(30+(cooldown.bs_inc.remains%1.6))&((talent.berserk_heart_of_the_lion.enabled&fight_remains<(90+(cooldown.bs_inc.remains%1.6)))||(!talent.berserk_heart_of_the_lion.enabled&fight_remains<(180+cooldown.bs_inc.remains)))\nactions+=/variable,name=zerk_biteweave,op=reset\nactions+=/tigers_fury,if=!talent.convoke_the_spirits.enabled&(!buff.tigers_fury.up||energy.deficit>65)\nactions+=/tigers_fury,if=talent.convoke_the_spirits.enabled&(!variable.lastconvoke||(variable.lastconvoke&!buff.tigers_fury.up))\nactions+=/rake,cycle_targets=1,if=1.4*persistent_multiplier>dot.rake.pmultiplier&(buff.prowl.up||buff.shadowmeld.up)\nactions+=/natures_vigil\nactions+=/adaptive_swarm,cycle_targets=1,if=((!dot.adaptive_swarm_damage.ticking||dot.adaptive_swarm_damage.remains<2)&(dot.adaptive_swarm_damage.stack<3||!dot.adaptive_swarm_heal.stack>1)&!action.adaptive_swarm_heal.in_flight&!action.adaptive_swarm_damage.in_flight&!action.adaptive_swarm.in_flight)&target.time_to_die>5||active_enemies>2&!dot.adaptive_swarm_damage.ticking&energy<35&target.time_to_die>5&!(variable.need_bt&active_bt_triggers=2)\nactions+=/call_action_list,name=cooldown\nactions+=/feral_frenzy,cycle_targets=1,if=combo_points<2||combo_points<3&buff.bs_inc.up\nactions+=/ferocious_bite,cycle_targets=1,if=buff.apex_predators_craving.up&(spell_targets.swipe_cat=1||!talent.primal_wrath.enabled||!buff.sabertooth.up)&!(variable.need_bt&active_bt_triggers=2)\nactions+=/call_action_list,name=berserk,strict=1,if=buff.bs_inc.up\nactions+=/call_action_list,name=finisher,strict=1,if=combo_points>=4&spell_targets.swipe_cat>1\n## Hekili: This doesn't make sense; if you have 4 combo points, then combo_points=5 will evaluate to 0.\n## actions+=/wait,sec=combo_points=5,if=combo_points=4&buff.predator_revealed.react&energy.deficit>40\nactions+=/call_action_list,name=finisher,strict=1,if=combo_points>=4\nactions+=/call_action_list,name=bloodtalons,if=variable.need_bt&!buff.bs_inc.up&combo_points<5\nactions+=/run_action_list,name=aoe_builder,strict=1,if=spell_targets.swipe_cat>1&talent.primal_wrath.enabled\nactions+=/call_action_list,name=builder,if=combo_points<5&!buff.bs_inc.up\n\n# avoid capping brs charges, and in the event of adds, offload charges within reason\nactions.aoe_builder+=/brutal_slash,cycle_targets=1,if=cooldown.brutal_slash.full_recharge_time<4||target.time_to_die<5\nactions.aoe_builder+=/thrash_cat,if=refreshable&(buff.clearcasting.react||(spell_targets.thrash_cat>10||(spell_targets.thrash_cat>5&!talent.double_clawed_rake.enabled))&!talent.thrashing_claws)\nactions.aoe_builder+=/shadowmeld,if=action.rake.ready&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)&!buff.prowl.up&!buff.apex_predators_craving.up\n# this line checks if theres an upgradeable rake\nactions.aoe_builder+=/shadowmeld,if=action.rake.ready&!buff.sudden_ambush.up&dot.rake.pmultiplier<1.4&!buff.prowl.up&!buff.apex_predators_craving.up\n# not a perfect solution, but it checks lowest dot for pandemic/stealth snapshot first\nactions.aoe_builder+=/rake,cycle_targets=1,if=buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier\n# and if lowest dot is fine, it checks the remaining dots and targets a mob without stealth snapshot (not necessarily 2nd lowest)\nactions.aoe_builder+=/rake,cycle_targets=1,if=buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier||refreshable\nactions.aoe_builder+=/thrash_cat,if=refreshable\nactions.aoe_builder+=/brutal_slash\nactions.aoe_builder+=/moonfire_cat,cycle_targets=1,if=refreshable&spell_targets.swipe_cat<5\nactions.aoe_builder+=/swipe_cat\nactions.aoe_builder+=/moonfire_cat,cycle_targets=1,if=refreshable\n# if we have brs and nothing better to cast, check if thrash DD beats shred (or if SA is up)\nactions.aoe_builder+=/shred,cycle_targets=1,if=action.shred.damage>action.thrash_cat.damage&!buff.sudden_ambush.up\nactions.aoe_builder+=/thrash_cat\n\nactions.berserk+=/ferocious_bite,cycle_targets=1,if=combo_points=5&dot.rip.remains>8&variable.zerk_biteweave&spell_targets.swipe_cat>1\n# proc bt if 0/1 stack if 5/6 combo points\nactions.berserk+=/call_action_list,name=finisher,strict=1,if=combo_points=5&!(buff.overflowing_power.stack<=1&active_bt_triggers=2&buff.bloodtalons.stack<=1)\n# its currently a gain to just contiuously try to proc bt in aoe\nactions.berserk+=/call_action_list,name=bloodtalons,strict=1,if=spell_targets.swipe_cat>1\n# go into stealth to buff rake snapshot-- feral frenzy line is to eliminate an edge case involving ff being casted instead due to higher prio\nactions.berserk+=/prowl,if=!(buff.bt_rake.up&active_bt_triggers=2)&(action.rake.ready&gcd.remains=0&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)&!buff.shadowmeld.up&cooldown.feral_frenzy.remains<44&!buff.apex_predators_craving.up)\nactions.berserk+=/shadowmeld,if=!(buff.bt_rake.up&active_bt_triggers=2)&action.rake.ready&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)&!buff.prowl.up&!buff.apex_predators_craving.up\nactions.berserk+=/rake,if=!(buff.bt_rake.up&active_bt_triggers=2)&(refreshable||(buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier&!dot.rake.refreshable))\n# in single target, you just proc bt when an opportunity arises\nactions.berserk+=/shred,if=active_bt_triggers=2&buff.bt_shred.down\nactions.berserk+=/brutal_slash,if=active_bt_triggers=2&buff.bt_brutal_slash.down\nactions.berserk+=/moonfire_cat,if=active_bt_triggers=2&buff.bt_moonfire.down\nactions.berserk+=/thrash_cat,if=active_bt_triggers=2&buff.bt_thrash.down&!talent.thrashing_claws&variable.need_bt&(refreshable||talent.brutal_slash.enabled)\nactions.berserk+=/moonfire_cat,if=refreshable\n# don't overcap brs charges, but keep it available for bt\nactions.berserk+=/brutal_slash,if=cooldown.brutal_slash.charges>1\nactions.berserk+=/shred\n\nactions.berserk_builders+=/rake,cycle_targets=1,if=refreshable\nactions.berserk_builders+=/swipe_cat,if=spell_targets.swipe_cat>1\nactions.berserk_builders+=/brutal_slash,if=active_bt_triggers=2&buff.bt_brutal_slash.down\nactions.berserk_builders+=/shred\n\nactions.bloodtalons+=/brutal_slash,if=(cooldown.brutal_slash.full_recharge_time<4||target.time_to_die<5)&(buff.bt_brutal_slash.down&(buff.bs_inc.up||variable.need_bt))\nactions.bloodtalons+=/prowl,if=action.rake.ready&gcd.remains=0&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)&!buff.shadowmeld.up&buff.bt_rake.down&!buff.prowl.up&!buff.apex_predators_craving.up\nactions.bloodtalons+=/shadowmeld,if=action.rake.ready&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)&!buff.prowl.up&buff.bt_rake.down&cooldown.feral_frenzy.remains<44&!buff.apex_predators_craving.up\nactions.bloodtalons+=/rake,cycle_targets=1,if=(refreshable||buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier)&buff.bt_rake.down\nactions.bloodtalons+=/rake,cycle_targets=1,if=buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier&buff.bt_rake.down\nactions.bloodtalons+=/shred,if=buff.bt_shred.down&buff.clearcasting.react&spell_targets.swipe_cat=1\nactions.bloodtalons+=/thrash_cat,cycle_targets=1,if=refreshable&buff.bt_thrash.down&buff.clearcasting.react&spell_targets.swipe_cat=1&!talent.thrashing_claws.enabled\nactions.bloodtalons+=/brutal_slash,if=buff.bt_brutal_slash.down\nactions.bloodtalons+=/moonfire_cat,if=refreshable&buff.bt_moonfire.down&spell_targets.swipe_cat=1\nactions.bloodtalons+=/thrash_cat,cycle_targets=1,if=refreshable&buff.bt_thrash.down&!talent.thrashing_claws.enabled\nactions.bloodtalons+=/shred,if=buff.bt_shred.down&spell_targets.swipe_cat=1&!talent.wild_slashes.enabled\nactions.bloodtalons+=/swipe_cat,if=buff.bt_swipe.down&talent.wild_slashes.enabled\nactions.bloodtalons+=/moonfire_cat,cycle_targets=1,max_cycle_targets=3,if=buff.bt_moonfire.down&spell_targets.swipe_cat<5\nactions.bloodtalons+=/swipe_cat,if=buff.bt_swipe.down\nactions.bloodtalons+=/moonfire_cat,cycle_targets=1,if=buff.bt_moonfire.down\n# If we have BrS and nothing better to cast, check if shred beats thrash DD (or if SA is up)\nactions.bloodtalons+=/shred,cycle_targets=1,if=action.shred.damage>action.thrash_cat.damage&buff.bt_shred.down&!buff.sudden_ambush.up\nactions.bloodtalons+=/thrash_cat,if=buff.bt_thrash.down\n\nactions.builder+=/run_action_list,name=clearcasting,strict=1,if=buff.clearcasting.react\nactions.builder+=/brutal_slash,if=cooldown.brutal_slash.full_recharge_time<4\n## TODO: edit this to use wait instead; stop pooling if we can use a clearcasting proc\n## actions.builder+=/pool_resource,if=!action.rake.ready&(dot.rake.refreshable||(buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier&dot.rake.remains>6))&!buff.clearcasting.react\n# this isn't perfect, as it only checks the target with lowest remaining dot. Feel free to improve\nactions.builder+=/shadowmeld,if=action.rake.ready&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)&!buff.prowl.up&!buff.apex_predators_craving.up\nactions.builder+=/rake,if=refreshable||(buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier&dot.rake.remains>6)\n## repeating here is necessary, otherwise moonfire will occassionally be casted instead\n## actions.builder+=/run_action_list,name=clearcasting,strict=1,if=buff.clearcasting.react\nactions.builder+=/moonfire_cat,cycle_targets=1,if=refreshable\nactions.builder+=/thrash_cat,cycle_targets=1,if=refreshable&!talent.thrashing_claws.enabled\nactions.builder+=/brutal_slash\nactions.builder+=/swipe_cat,if=spell_targets.swipe_cat>1||talent.wild_slashes.enabled\nactions.builder+=/shred\n\nactions.clearcasting+=/thrash_cat,if=refreshable&!talent.thrashing_claws.enabled\nactions.clearcasting+=/swipe_cat,if=spell_targets.swipe_cat>1\nactions.clearcasting+=/brutal_slash,if=spell_targets.brutal_slash>2\nactions.clearcasting+=/shred\n\nactions.cooldown+=/use_item,name=algethar_puzzle_box,if=boss&fight_remains<35||(!variable.align_3minutes)\nactions.cooldown+=/use_item,name=algethar_puzzle_box,if=variable.align_3minutes&(cooldown.bs_inc.remains<3&(!variable.lastzerk||!variable.lastconvoke||(variable.lastconvoke&cooldown.convoke_the_spirits.remains<13)))\nactions.cooldown+=/incarnation\nactions.cooldown+=/berserk,if=(!variable.lastzerk)||(boss&fight_remains<23)||(variable.lastzerk&!variable.lastconvoke)\nactions.cooldown+=/berserk,if=(variable.lastconvoke&cooldown.convoke_the_spirits.remains<10)\nactions.cooldown+=/berserking,if=!variable.align_3minutes||buff.bs_inc.up\nactions.cooldown+=/potion,if=buff.bs_inc.up||boss&fight_remains<32||(boss&fight_remains<cooldown.bs_inc.remains&variable.lastconvoke&cooldown.convoke_the_spirits.remains<10)\nactions.cooldown+=/convoke_the_spirits,if=boss&fight_remains<5||(dot.rip.remains>5&buff.tigers_fury.up&(combo_points<2||(buff.bs_inc.up&combo_points=2))&(!variable.lastconvoke||!variable.lastzerk||buff.bs_inc.up))\nactions.cooldown+=/use_item,name=manic_grieftorch,cycle_targets=1,if=energy.deficit>40\nactions.cooldown+=/use_items\n\nactions.finisher+=/primal_wrath,if=((dot.primal_wrath.refreshable&!talent.circle_of_life_and_death.enabled)||dot.primal_wrath.remains<6||talent.tear_open_wounds.enabled)&spell_targets.primal_wrath>1&talent.primal_wrath.enabled\nactions.finisher+=/rip,cycle_targets=1,if=refreshable\nactions.finisher+=/pool_resource,for_next=1,if=!action.tigers_fury.ready&buff.apex_predators_craving.down\nactions.finisher+=/ferocious_bite,max_energy=1,cycle_targets=1,if=buff.apex_predators_craving.down&(!buff.bs_inc.up||(buff.bs_inc.up&!talent.soul_of_the_forest.enabled))\nactions.finisher+=/ferocious_bite,cycle_targets=1,if=(buff.bs_inc.up&talent.soul_of_the_forest.enabled)||buff.apex_predators_craving.up\n\nactions.owlweaving+=/sunfire,line_cd=4*gcd",
},
["Holy Priest"] = {
["builtIn"] = true,
["date"] = 20230504,
["spec"] = 257,
["desc"] = "2023-05-03: Updated from SimC.\n\n2023-04-05: Updated from SimC.",
["profile"] = "actions.precombat+=/power_word_fortitude\n\n# Always use HF if we have empyreal blaze (dot extension) or harmonious apparatus (cd reduction) or if it's not currently ticking. Otherwise, only use when refreshable to be sure we get the longest duration possible. It's worth it to cast even when the target will die soon based on just the initial hit damage. We also don't want to cast immediately once empyreal blaze is up when we are prepping divine word\nactions+=/holy_fire,cycle_targets=1,if=(talent.empyreal_blaze||talent.harmonious_apparatus||!ticking||refreshable)&!(buff.empyreal_blaze.up&(cooldown.divine_word.up||buff.divine_word.up)&cooldown.holy_word_chastise.up)\n# Don't cast SW:P during apotheosis or divine favor: chastise. We also don't cycle targets because it isn't worth the GCDs, since Smite deals slightly more damage than a full SW:P.\nactions+=/shadow_word_pain,if=(refreshable||!ticking)&(target.time_to_die>=dot.shadow_word_pain.duration)&!buff.divine_favor_chastise.up&!buff.apotheosis.up\n# Prepare to enter divine favor: chastise\nactions+=/call_action_list,name=divine_favor_chastise_prep,if=talent.divine_word&talent.holy_word_chastise&buff.divine_favor_chastise.down\n# Enter Divine Favor rotation with divine favor: chastise buff up\nactions+=/run_action_list,name=divine_favor_chastise_active,strict=1,if=buff.divine_favor_chastise.up\n# Run divine favor fillers rotation with buff down\nactions+=/run_action_list,name=divine_favor_filler,if=talent.divine_word&talent.holy_word_chastise&buff.divine_favor_chastise.down\n# Run divine image rotation with divine image talented\nactions+=/run_action_list,name=divine_image,strict=1,if=talent.divine_image\n# Otherwise generic rotation\nactions+=/run_action_list,name=generic\n\nactions.divine_favor_chastise_prep+=/variable,name=empyreal_exec_time,op=setif,condition=talent.empyreal_blaze,value=action.empyreal_blaze.execute_time,value_else=0\n# apotheosis_exec_time: Store how long Apotheosis will take to execute\nactions.divine_favor_chastise_prep+=/variable,name=apotheosis_exec_time,op=setif,condition=talent.apotheosis,value=action.apotheosis.execute_time,value_else=0\n# Use apotheosis to get Chastise back if its on cooldown and Divine Word will be up soon. We can use Apotheosis (2min CD) to reset Chastise for every other Divine Word (1min CD).\nactions.divine_favor_chastise_prep+=/apotheosis,if=(cooldown.holy_word_chastise.remains>cooldown.divine_word.remains)&(cooldown.divine_word.remains<=(variable.empyreal_exec_time+variable.apotheosis_exec_time))\n# If we're about to cast divine favor, cast empyreal blaze first so we don't waste a GCD on non-damage during the buff window\nactions.divine_favor_chastise_prep+=/empyreal_blaze,if=cooldown.divine_word.remains<=action.empyreal_blaze.execute_time\n# Divine Word only if we can sync with Chastise and (if talented) Empyreal Blaze\nactions.divine_favor_chastise_prep+=/divine_word,if=cooldown.holy_word_chastise.up&(!talent.empyreal_blaze||buff.empyreal_blaze.up)\n# Holy word chastise to trigger divine favor: chastise\nactions.divine_favor_chastise_prep+=/holy_word_chastise,if=buff.divine_word.up\n\nactions.divine_favor_chastise_active+=/halo,if=spell_targets.halo>=2\nactions.divine_favor_chastise_active+=/divine_star,if=spell_targets.divine_star>=2\n# There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do\nactions.divine_favor_chastise_active+=/holy_nova,if=(spell_targets.holy_nova>=2&buff.rhapsody.stack>=18)||(spell_targets.holy_nova>=3&buff.rhapsody.stack>=9)||(spell_targets.holy_nova>=4&buff.rhapsody.stack>=4)||spell_targets.holy_nova>=5\nactions.divine_favor_chastise_active+=/mindgames\nactions.divine_favor_chastise_active+=/shadow_word_death,if=target.health.pct<20\nactions.divine_favor_chastise_active+=/holy_word_chastise\n# We want to cycle smite to different targets to spread holy fire dots in AOE situations, this will buff holy nova's damage\nactions.divine_favor_chastise_active+=/smite,cycle_targets=1,if=spell_targets.holy_nova>=2\nactions.divine_favor_chastise_active+=/smite\n\nactions.divine_favor_filler+=/halo,if=spell_targets.halo>=2\nactions.divine_favor_filler+=/divine_star,if=spell_targets.divine_star>=2\n# There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do\nactions.divine_favor_filler+=/holy_nova,if=(spell_targets.holy_nova>=2&buff.rhapsody.stack>=18)||(spell_targets.holy_nova>=3&buff.rhapsody.stack>=9)||(spell_targets.holy_nova>=4&buff.rhapsody.stack>=4)||spell_targets.holy_nova>=5\nactions.divine_favor_filler+=/mindgames\nactions.divine_favor_filler+=/shadow_word_death,if=target.health.pct<20\n# We can use chastise for damage as long as we will have apotheosis available before the next divine word, otherwise only use it when it will be back up at the same time as divine word\nactions.divine_favor_filler+=/holy_word_chastise,if=(cooldown.apotheosis.remains<cooldown.divine_word.remains)||(cooldown.holy_word_chastise.duration_expected<=cooldown.divine_word.remains)\nactions.divine_favor_filler+=/smite\n\nactions.divine_image+=/apotheosis,if=buff.answered_prayers.down&!(cooldown.holy_word_sanctify.up||cooldown.holy_word_serenity.up||cooldown.holy_word_chastise.up)\n# line_cd prevents re-casting sanctify and serenity right away, wasting GCDs that could be used to proc divine image damage. In testing, the sweet spot balance between adding more divine images, triggering apotheosis, and casting damage CDs was to let the image from each healing holy word expire before re-casting\nactions.divine_image+=/holy_word_sanctify,line_cd=9\nactions.divine_image+=/holy_word_serenity,line_cd=9\nactions.divine_image+=/holy_word_chastise\nactions.divine_image+=/empyreal_blaze\nactions.divine_image+=/halo,if=spell_targets.halo>=2\nactions.divine_image+=/divine_star,if=spell_targets.divine_star>=2\n# There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do\nactions.divine_image+=/holy_nova,if=(spell_targets.holy_nova>=2&buff.rhapsody.stack>=18)||(spell_targets.holy_nova>=3&buff.rhapsody.stack>=9)||(spell_targets.holy_nova>=4&buff.rhapsody.stack>=4)||spell_targets.holy_nova>=5\nactions.divine_image+=/mindgames\nactions.divine_image+=/shadow_word_death,if=target.health.pct<20\nactions.divine_image+=/smite\n\nactions.generic+=/holy_word_chastise\nactions.generic+=/empyreal_blaze\n# Hold Apotheosis if chastise will be up soon\nactions.generic+=/apotheosis,if=cooldown.holy_word_chastise.remains>(gcd.max*3)\nactions.generic+=/halo,if=spell_targets.halo>=2\nactions.generic+=/divine_star,if=spell_targets.divine_star>=2\n# There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do\nactions.generic+=/holy_nova,if=(spell_targets.holy_nova>=2&buff.rhapsody.stack>=18)||(spell_targets.holy_nova>=3&buff.rhapsody.stack>=9)||(spell_targets.holy_nova>=4&buff.rhapsody.stack>=4)||spell_targets.holy_nova>=5\nactions.generic+=/mindgames\nactions.generic+=/shadow_word_death,if=target.health.pct<20\nactions.generic+=/smite\n\nactions.cooldowns+=/shadowfiend\n# Sync PI with divine favor: chastise if we took divine word\nactions.cooldowns+=/power_infusion,if=(!talent.divine_word||(cooldown.divine_word.up&cooldown.holy_word_chastise.up))\n# Only potion in sync with power infusion\nactions.cooldowns+=/potion,if=buff.power_infusion.up\n# hold trinkets to use with PI\nactions.cooldowns+=/use_items,if=buff.power_infusion.up",
["version"] = 20230504,
["warnings"] = "The import for 'cooldowns' required some automated changes.\nLine 2: Converted 'talent.divine_word' to 'talent.divine_word.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 1: Converted 'talent.empyreal_blaze' to 'talent.empyreal_blaze.enabled' (1x).\nLine 1: Converted 'talent.harmonious_apparatus' to 'talent.harmonious_apparatus.enabled' (1x).\nLine 3: Converted 'talent.divine_word' to 'talent.divine_word.enabled' (1x).\nLine 3: Converted 'talent.holy_word_chastise' to 'talent.holy_word_chastise.enabled' (1x).\nLine 5: Converted 'talent.divine_word' to 'talent.divine_word.enabled' (1x).\nLine 5: Converted 'talent.holy_word_chastise' to 'talent.holy_word_chastise.enabled' (1x).\nLine 6: Converted 'talent.divine_image' to 'talent.divine_image.enabled' (1x).\n\nThe import for 'divine_favor_chastise_prep' required some automated changes.\nLine 1: Converted 'talent.empyreal_blaze' to 'talent.empyreal_blaze.enabled' (1x).\nLine 2: Converted 'talent.apotheosis' to 'talent.apotheosis.enabled' (1x).\nLine 5: Converted 'talent.empyreal_blaze' to 'talent.empyreal_blaze.enabled' (1x).\n\nImported 8 action lists.\n",
["lists"] = {
["divine_favor_chastise_prep"] = {
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "empyreal_exec_time",
["criteria"] = "talent.empyreal_blaze.enabled",
["value_else"] = "0",
["value"] = "action.empyreal_blaze.execute_time",
}, -- [1]
{
["enabled"] = true,
["op"] = "setif",
["description"] = "apotheosis_exec_time: Store how long Apotheosis will take to execute",
["criteria"] = "talent.apotheosis.enabled",
["value"] = "action.apotheosis.execute_time",
["action"] = "variable",
["value_else"] = "0",
["var_name"] = "apotheosis_exec_time",
}, -- [2]
{
["enabled"] = true,
["description"] = "Use apotheosis to get Chastise back if its on cooldown and Divine Word will be up soon. We can use Apotheosis (2min CD) to reset Chastise for every other Divine Word (1min CD).",
["criteria"] = "( cooldown.holy_word_chastise.remains > cooldown.divine_word.remains ) & ( cooldown.divine_word.remains <= ( variable.empyreal_exec_time + variable.apotheosis_exec_time ) )",
["action"] = "apotheosis",
}, -- [3]
{
["enabled"] = true,
["description"] = "If we're about to cast divine favor, cast empyreal blaze first so we don't waste a GCD on non-damage during the buff window",
["criteria"] = "cooldown.divine_word.remains <= action.empyreal_blaze.execute_time",
["action"] = "empyreal_blaze",
}, -- [4]
{
["enabled"] = true,
["description"] = "Divine Word only if we can sync with Chastise and (if talented) Empyreal Blaze",
["criteria"] = "cooldown.holy_word_chastise.up & ( ! talent.empyreal_blaze.enabled || buff.empyreal_blaze.up )",
["action"] = "divine_word",
}, -- [5]
{
["enabled"] = true,
["description"] = "Holy word chastise to trigger divine favor: chastise",
["criteria"] = "buff.divine_word.up",
["action"] = "holy_word_chastise",
}, -- [6]
},
["divine_image"] = {
{
["enabled"] = true,
["criteria"] = "buff.answered_prayers.down & ! ( cooldown.holy_word_sanctify.up || cooldown.holy_word_serenity.up || cooldown.holy_word_chastise.up )",
["action"] = "apotheosis",
}, -- [1]
{
["enabled"] = true,
["action"] = "holy_word_sanctify",
["description"] = "line_cd prevents re-casting sanctify and serenity right away, wasting GCDs that could be used to proc divine image damage. In testing, the sweet spot balance between adding more divine images, triggering apotheosis, and casting damage CDs was to let the image from each healing holy word expire before re-casting",
["line_cd"] = "9",
}, -- [2]
{
["enabled"] = true,
["action"] = "holy_word_serenity",
["line_cd"] = "9",
}, -- [3]
{
["action"] = "holy_word_chastise",
["enabled"] = true,
}, -- [4]
{
["action"] = "empyreal_blaze",
["enabled"] = true,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "spell_targets.halo >= 2",
["action"] = "halo",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "spell_targets.divine_star >= 2",
["action"] = "divine_star",
}, -- [7]
{
["enabled"] = true,
["description"] = "There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do",
["criteria"] = "( spell_targets.holy_nova >= 2 & buff.rhapsody.stack >= 18 ) || ( spell_targets.holy_nova >= 3 & buff.rhapsody.stack >= 9 ) || ( spell_targets.holy_nova >= 4 & buff.rhapsody.stack >= 4 ) || spell_targets.holy_nova >= 5",
["action"] = "holy_nova",
}, -- [8]
{
["action"] = "mindgames",
["enabled"] = true,
}, -- [9]
{
["enabled"] = true,
["criteria"] = "target.health.pct < 20",
["action"] = "shadow_word_death",
}, -- [10]
{
["action"] = "smite",
["enabled"] = true,
}, -- [11]
},
["default"] = {
{
["enabled"] = true,
["action"] = "holy_fire",
["cycle_targets"] = 1,
["criteria"] = "( talent.empyreal_blaze.enabled || talent.harmonious_apparatus.enabled || ! ticking || refreshable ) & ! ( buff.empyreal_blaze.up & ( cooldown.divine_word.up || buff.divine_word.up ) & cooldown.holy_word_chastise.up )",
["description"] = "Always use HF if we have empyreal blaze (dot extension) or harmonious apparatus (cd reduction) or if it's not currently ticking. Otherwise, only use when refreshable to be sure we get the longest duration possible. It's worth it to cast even when the target will die soon based on just the initial hit damage. We also don't want to cast immediately once empyreal blaze is up when we are prepping divine word",
}, -- [1]
{
["enabled"] = true,
["description"] = "Don't cast SW:P during apotheosis or divine favor: chastise. We also don't cycle targets because it isn't worth the GCDs, since Smite deals slightly more damage than a full SW:P.",
["criteria"] = "( refreshable || ! ticking ) & ( target.time_to_die >= dot.shadow_word_pain.duration ) & ! buff.divine_favor_chastise.up & ! buff.apotheosis.up",
["action"] = "shadow_word_pain",
}, -- [2]
{
["enabled"] = true,
["action"] = "call_action_list",
["description"] = "Prepare to enter divine favor: chastise",
["criteria"] = "talent.divine_word.enabled & talent.holy_word_chastise.enabled & buff.divine_favor_chastise.down",
["list_name"] = "divine_favor_chastise_prep",
}, -- [3]
{
["enabled"] = true,
["action"] = "run_action_list",
["description"] = "Enter Divine Favor rotation with divine favor: chastise buff up",
["strict"] = 1,
["criteria"] = "buff.divine_favor_chastise.up",
["list_name"] = "divine_favor_chastise_active",
}, -- [4]
{
["enabled"] = true,
["action"] = "run_action_list",
["description"] = "Run divine favor fillers rotation with buff down",
["criteria"] = "talent.divine_word.enabled & talent.holy_word_chastise.enabled & buff.divine_favor_chastise.down",
["list_name"] = "divine_favor_filler",
}, -- [5]
{
["enabled"] = true,
["action"] = "run_action_list",
["description"] = "Run divine image rotation with divine image talented",
["strict"] = 1,
["criteria"] = "talent.divine_image.enabled",
["list_name"] = "divine_image",
}, -- [6]
{
["enabled"] = true,
["description"] = "Otherwise generic rotation",
["action"] = "run_action_list",
["list_name"] = "generic",
}, -- [7]
},
["precombat"] = {
{
["action"] = "power_word_fortitude",
["enabled"] = true,
}, -- [1]
},
["divine_favor_chastise_active"] = {
{
["enabled"] = true,
["criteria"] = "spell_targets.halo >= 2",
["action"] = "halo",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "spell_targets.divine_star >= 2",
["action"] = "divine_star",
}, -- [2]
{
["enabled"] = true,
["description"] = "There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do",
["criteria"] = "( spell_targets.holy_nova >= 2 & buff.rhapsody.stack >= 18 ) || ( spell_targets.holy_nova >= 3 & buff.rhapsody.stack >= 9 ) || ( spell_targets.holy_nova >= 4 & buff.rhapsody.stack >= 4 ) || spell_targets.holy_nova >= 5",
["action"] = "holy_nova",
}, -- [3]
{
["action"] = "mindgames",
["enabled"] = true,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "target.health.pct < 20",
["action"] = "shadow_word_death",
}, -- [5]
{
["action"] = "holy_word_chastise",
["enabled"] = true,
}, -- [6]
{
["enabled"] = true,
["action"] = "smite",
["cycle_targets"] = 1,
["criteria"] = "spell_targets.holy_nova >= 2",
["description"] = "We want to cycle smite to different targets to spread holy fire dots in AOE situations, this will buff holy nova's damage",
}, -- [7]
{
["action"] = "smite",
["enabled"] = true,
}, -- [8]
},
["cooldowns"] = {
{
["action"] = "shadowfiend",
["enabled"] = true,
}, -- [1]
{
["enabled"] = true,
["description"] = "Sync PI with divine favor: chastise if we took divine word",
["criteria"] = "( ! talent.divine_word.enabled || ( cooldown.divine_word.up & cooldown.holy_word_chastise.up ) )",
["action"] = "power_infusion",
}, -- [2]
{
["enabled"] = true,
["description"] = "Only potion in sync with power infusion",
["criteria"] = "buff.power_infusion.up",
["action"] = "potion",
}, -- [3]
{
["enabled"] = true,
["description"] = "hold trinkets to use with PI",
["criteria"] = "buff.power_infusion.up",
["action"] = "use_items",
}, -- [4]
},
["generic"] = {
{
["action"] = "holy_word_chastise",
["enabled"] = true,
}, -- [1]
{
["action"] = "empyreal_blaze",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["description"] = "Hold Apotheosis if chastise will be up soon",
["criteria"] = "cooldown.holy_word_chastise.remains > ( gcd.max * 3 )",
["action"] = "apotheosis",
}, -- [3]
{
["enabled"] = true,
["criteria"] = "spell_targets.halo >= 2",
["action"] = "halo",
}, -- [4]
{
["enabled"] = true,
["criteria"] = "spell_targets.divine_star >= 2",
["action"] = "divine_star",
}, -- [5]
{
["enabled"] = true,
["description"] = "There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do",
["criteria"] = "( spell_targets.holy_nova >= 2 & buff.rhapsody.stack >= 18 ) || ( spell_targets.holy_nova >= 3 & buff.rhapsody.stack >= 9 ) || ( spell_targets.holy_nova >= 4 & buff.rhapsody.stack >= 4 ) || spell_targets.holy_nova >= 5",
["action"] = "holy_nova",
}, -- [6]
{
["action"] = "mindgames",
["enabled"] = true,
}, -- [7]
{
["enabled"] = true,
["criteria"] = "target.health.pct < 20",
["action"] = "shadow_word_death",
}, -- [8]
{
["action"] = "smite",
["enabled"] = true,
}, -- [9]
},
["divine_favor_filler"] = {
{
["enabled"] = true,
["criteria"] = "spell_targets.halo >= 2",
["action"] = "halo",
}, -- [1]
{
["enabled"] = true,
["criteria"] = "spell_targets.divine_star >= 2",
["action"] = "divine_star",
}, -- [2]
{
["enabled"] = true,
["description"] = "There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do",
["criteria"] = "( spell_targets.holy_nova >= 2 & buff.rhapsody.stack >= 18 ) || ( spell_targets.holy_nova >= 3 & buff.rhapsody.stack >= 9 ) || ( spell_targets.holy_nova >= 4 & buff.rhapsody.stack >= 4 ) || spell_targets.holy_nova >= 5",
["action"] = "holy_nova",
}, -- [3]
{
["action"] = "mindgames",
["enabled"] = true,
}, -- [4]
{
["enabled"] = true,
["criteria"] = "target.health.pct < 20",
["action"] = "shadow_word_death",
}, -- [5]
{
["enabled"] = true,
["description"] = "We can use chastise for damage as long as we will have apotheosis available before the next divine word, otherwise only use it when it will be back up at the same time as divine word",
["criteria"] = "( cooldown.apotheosis.remains < cooldown.divine_word.remains ) || ( cooldown.holy_word_chastise.duration_expected <= cooldown.divine_word.remains )",
["action"] = "holy_word_chastise",
}, -- [6]
{
["action"] = "smite",
["enabled"] = true,
}, -- [7]
},
},
["author"] = "Kapulani",
},
["Vengeance"] = {
["source"] = "https://github.com/simulationcraft/simc/",
["builtIn"] = true,
["date"] = 20230209,
["spec"] = 581,
["desc"] = "",
["profile"] = "actions.precombat+=/variable,name=spirit_bomb_soul_fragments_not_in_meta,op=setif,value=4,value_else=5,condition=talent.fracture\nactions.precombat+=/variable,name=spirit_bomb_soul_fragments_in_meta,op=setif,value=3,value_else=4,condition=talent.fracture\n## actions.precombat+=/variable,name=vulnerability_frailty_stack,op=setif,value=1,value_else=0,condition=talent.vulnerability\n## actions.precombat+=/variable,name=cooldown_frailty_requirement_st,op=setif,value=6*variable.vulnerability_frailty_stack,value_else=variable.vulnerability_frailty_stack,condition=talent.soulcrush\n## actions.precombat+=/variable,name=cooldown_frailty_requirement_aoe,op=setif,value=5*variable.vulnerability_frailty_stack,value_else=variable.vulnerability_frailty_stack,condition=talent.soulcrush\nactions.precombat+=/sigil_of_flame\nactions.precombat+=/immolation_aura,if=active_enemies=1||!talent.fallout\n\nactions+=/disrupt\nactions+=/consume_magic\nactions+=/infernal_strike,use_off_gcd=1,if=charges=max_charges&target.distance>10\nactions+=/demon_spikes,use_off_gcd=1,if=!buff.demon_spikes.up&tanking\nactions+=/metamorphosis\nactions+=/fel_devastation,if=!talent.fiery_demise.enabled\nactions+=/fiery_brand,if=!talent.fiery_demise.enabled&!dot.fiery_brand.ticking\nactions+=/bulk_extraction\nactions+=/potion\nactions+=/use_item,slot=trinket1\nactions+=/use_item,slot=trinket2\nactions+=/variable,name=the_hunt_on_cooldown,value=talent.the_hunt&cooldown.the_hunt.remains||!talent.the_hunt\nactions+=/variable,name=elysian_decree_on_cooldown,value=talent.elysian_decree&cooldown.elysian_decree.remains||!talent.elysian_decree\nactions+=/variable,name=soul_carver_on_cooldown,value=talent.soul_carver&cooldown.soul_carver.remains||!talent.soul_carver\nactions+=/variable,name=fel_devastation_on_cooldown,value=talent.fel_devastation&cooldown.fel_devastation.remains||!talent.fel_devastation\nactions+=/variable,name=fiery_demise_fiery_brand_is_ticking_on_current_target,value=talent.fiery_brand&talent.fiery_demise&dot.fiery_brand.ticking\nactions+=/variable,name=fiery_demise_fiery_brand_is_not_ticking_on_current_target,value=talent.fiery_brand&((talent.fiery_demise&!dot.fiery_brand.ticking)||!talent.fiery_demise)\nactions+=/variable,name=fiery_demise_fiery_brand_is_ticking_on_any_target,value=talent.fiery_brand&talent.fiery_demise&active_dot.fiery_brand_dot>0\nactions+=/variable,name=fiery_demise_fiery_brand_is_not_ticking_on_any_target,value=talent.fiery_brand&((talent.fiery_demise&active_dot.fiery_brand_dot=0)||!talent.fiery_demise)\nactions+=/variable,name=spirit_bomb_soul_fragments,op=setif,value=variable.spirit_bomb_soul_fragments_in_meta,value_else=variable.spirit_bomb_soul_fragments_not_in_meta,condition=buff.metamorphosis.up\n## actions+=/variable,name=cooldown_frailty_requirement,op=setif,value=variable.cooldown_frailty_requirement_aoe,value_else=variable.cooldown_frailty_requirement_st,condition=talent.spirit_bomb&(spell_targets.spirit_bomb>1||variable.fiery_demise_fiery_brand_is_ticking_on_any_target)\nactions+=/the_hunt,if=variable.fiery_demise_fiery_brand_is_not_ticking_on_current_target&frailty_threshold_met\nactions+=/elysian_decree,if=variable.fiery_demise_fiery_brand_is_not_ticking_on_current_target&frailty_threshold_met\nactions+=/soul_carver,if=!talent.fiery_demise&soul_fragments<=3&frailty_threshold_met\nactions+=/soul_carver,if=variable.fiery_demise_fiery_brand_is_ticking_on_current_target&soul_fragments<=3&frailty_threshold_met\nactions+=/fel_devastation,if=variable.fiery_demise_fiery_brand_is_ticking_on_current_target&dot.fiery_brand.remains<3\nactions+=/fiery_brand,if=variable.fiery_demise_fiery_brand_is_not_ticking_on_any_target&variable.the_hunt_on_cooldown&variable.elysian_decree_on_cooldown&((talent.soul_carver&(cooldown.soul_carver.up||cooldown.soul_carver.remains<10))||(talent.fel_devastation&(cooldown.fel_devastation.up||cooldown.fel_devastation.remains<10)))\nactions+=/immolation_aura,if=talent.fiery_demise&variable.fiery_demise_fiery_brand_is_ticking_on_any_target\nactions+=/sigil_of_flame,if=talent.fiery_demise&variable.fiery_demise_fiery_brand_is_ticking_on_any_target\nactions+=/spirit_bomb,if=soul_fragments>=variable.spirit_bomb_soul_fragments&(spell_targets>1||variable.fiery_demise_fiery_brand_is_ticking_on_any_target)\nactions+=/soul_cleave,if=(soul_fragments<=1&spell_targets>1)||spell_targets=1\nactions+=/sigil_of_flame\nactions+=/immolation_aura\nactions+=/fracture\nactions+=/shear\nactions+=/throw_glaive\nactions+=/felblade",
["version"] = 20230209,
["warnings"] = "The import for 'default' required some automated changes.\nLine 12: Converted 'talent.the_hunt' to 'talent.the_hunt.enabled' (1x).\nLine 12: Converted 'talent.the_hunt' to 'talent.the_hunt.enabled' (1x).\nLine 13: Converted 'talent.elysian_decree' to 'talent.elysian_decree.enabled' (1x).\nLine 13: Converted 'talent.elysian_decree' to 'talent.elysian_decree.enabled' (1x).\nLine 14: Converted 'talent.soul_carver' to 'talent.soul_carver.enabled' (1x).\nLine 14: Converted 'talent.soul_carver' to 'talent.soul_carver.enabled' (1x).\nLine 15: Converted 'talent.fel_devastation' to 'talent.fel_devastation.enabled' (1x).\nLine 15: Converted 'talent.fel_devastation' to 'talent.fel_devastation.enabled' (1x).\nLine 16: Converted 'talent.fiery_brand' to 'talent.fiery_brand.enabled' (1x).\nLine 16: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 17: Converted 'talent.fiery_brand' to 'talent.fiery_brand.enabled' (1x).\nLine 17: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 17: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 18: Converted 'talent.fiery_brand' to 'talent.fiery_brand.enabled' (1x).\nLine 18: Converted 'talent.fiery_demise' to 'talent.fiery_demise.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).\nLine 19: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 23: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 26: Converted 'talent.soul_carver' to 'talent.soul_carver.enabled' (1x).\nLine 26: Converted 'talent.fel_devastation' to 'talent.fel_devastation.enabled' (1x).\nLine 27: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 28: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 1: Converted 'talent.fracture' to 'talent.fracture.enabled' (1x).\nLine 2: Converted 'talent.fracture' to 'talent.fracture.enabled' (1x).\nLine 4: Converted 'talent.fallout' to 'talent.fallout.enabled' (1x).\n\nImported 2 action lists.\n",
["author"] = "SimC",
["lists"] = {
["default"] = {
{
["action"] = "disrupt",
["enabled"] = true,
}, -- [1]
{
["action"] = "consume_magic",
["enabled"] = true,
}, -- [2]
{
["enabled"] = true,
["criteria"] = "charges = max_charges & target.distance > 10",
["action"] = "infernal_strike",
["use_off_gcd"] = 1,
}, -- [3]
{
["enabled"] = true,
["criteria"] = "! buff.demon_spikes.up & tanking",
["action"] = "demon_spikes",
["use_off_gcd"] = 1,
}, -- [4]
{
["action"] = "metamorphosis",
["enabled"] = true,
}, -- [5]
{
["enabled"] = true,
["criteria"] = "! talent.fiery_demise.enabled",
["action"] = "fel_devastation",
}, -- [6]
{
["enabled"] = true,
["criteria"] = "! talent.fiery_demise.enabled & ! dot.fiery_brand.ticking",
["action"] = "fiery_brand",
}, -- [7]
{
["action"] = "bulk_extraction",
["enabled"] = true,
}, -- [8]
{
["action"] = "potion",
["enabled"] = true,
}, -- [9]
{
["enabled"] = true,
["action"] = "trinket1",
["slot"] = "trinket1",
}, -- [10]
{
["enabled"] = true,
["action"] = "trinket2",
["slot"] = "trinket2",
}, -- [11]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.the_hunt.enabled & cooldown.the_hunt.remains || ! talent.the_hunt.enabled",
["var_name"] = "the_hunt_on_cooldown",
}, -- [12]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.elysian_decree.enabled & cooldown.elysian_decree.remains || ! talent.elysian_decree.enabled",
["var_name"] = "elysian_decree_on_cooldown",
}, -- [13]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.soul_carver.enabled & cooldown.soul_carver.remains || ! talent.soul_carver.enabled",
["var_name"] = "soul_carver_on_cooldown",
}, -- [14]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.fel_devastation.enabled & cooldown.fel_devastation.remains || ! talent.fel_devastation.enabled",
["var_name"] = "fel_devastation_on_cooldown",
}, -- [15]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.fiery_brand.enabled & talent.fiery_demise.enabled & dot.fiery_brand.ticking",
["var_name"] = "fiery_demise_fiery_brand_is_ticking_on_current_target",
}, -- [16]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.fiery_brand.enabled & ( ( talent.fiery_demise.enabled & ! dot.fiery_brand.ticking ) || ! talent.fiery_demise.enabled )",
["var_name"] = "fiery_demise_fiery_brand_is_not_ticking_on_current_target",
}, -- [17]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.fiery_brand.enabled & talent.fiery_demise.enabled & active_dot.fiery_brand_dot > 0",
["var_name"] = "fiery_demise_fiery_brand_is_ticking_on_any_target",
}, -- [18]
{
["enabled"] = true,
["op"] = "set",
["action"] = "variable",
["value"] = "talent.fiery_brand.enabled & ( ( talent.fiery_demise.enabled & active_dot.fiery_brand_dot = 0 ) || ! talent.fiery_demise.enabled )",
["var_name"] = "fiery_demise_fiery_brand_is_not_ticking_on_any_target",
}, -- [19]
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "spirit_bomb_soul_fragments",
["criteria"] = "buff.metamorphosis.up",
["value_else"] = "variable.spirit_bomb_soul_fragments_not_in_meta",
["value"] = "variable.spirit_bomb_soul_fragments_in_meta",
}, -- [20]
{
["enabled"] = true,
["criteria"] = "variable.fiery_demise_fiery_brand_is_not_ticking_on_current_target & frailty_threshold_met",
["action"] = "the_hunt",
}, -- [21]
{
["enabled"] = true,
["criteria"] = "variable.fiery_demise_fiery_brand_is_not_ticking_on_current_target & frailty_threshold_met",
["action"] = "elysian_decree",
}, -- [22]
{
["enabled"] = true,
["criteria"] = "! talent.fiery_demise.enabled & soul_fragments <= 3 & frailty_threshold_met",
["action"] = "soul_carver",
}, -- [23]
{
["enabled"] = true,
["criteria"] = "variable.fiery_demise_fiery_brand_is_ticking_on_current_target & soul_fragments <= 3 & frailty_threshold_met",
["action"] = "soul_carver",
}, -- [24]
{
["enabled"] = true,
["criteria"] = "variable.fiery_demise_fiery_brand_is_ticking_on_current_target & dot.fiery_brand.remains < 3",
["action"] = "fel_devastation",
}, -- [25]
{
["enabled"] = true,
["criteria"] = "variable.fiery_demise_fiery_brand_is_not_ticking_on_any_target & variable.the_hunt_on_cooldown & variable.elysian_decree_on_cooldown & ( ( talent.soul_carver.enabled & ( cooldown.soul_carver.up || cooldown.soul_carver.remains < 10 ) ) || ( talent.fel_devastation.enabled & ( cooldown.fel_devastation.up || cooldown.fel_devastation.remains < 10 ) ) )",
["action"] = "fiery_brand",
}, -- [26]
{
["enabled"] = true,
["criteria"] = "talent.fiery_demise.enabled & variable.fiery_demise_fiery_brand_is_ticking_on_any_target",
["action"] = "immolation_aura",
}, -- [27]
{
["enabled"] = true,
["criteria"] = "talent.fiery_demise.enabled & variable.fiery_demise_fiery_brand_is_ticking_on_any_target",
["action"] = "sigil_of_flame",
}, -- [28]
{
["enabled"] = true,
["criteria"] = "soul_fragments >= variable.spirit_bomb_soul_fragments & ( spell_targets > 1 || variable.fiery_demise_fiery_brand_is_ticking_on_any_target )",
["action"] = "spirit_bomb",
}, -- [29]
{
["enabled"] = true,
["criteria"] = "( soul_fragments <= 1 & spell_targets > 1 ) || spell_targets = 1",
["action"] = "soul_cleave",
}, -- [30]
{
["action"] = "sigil_of_flame",
["enabled"] = true,
}, -- [31]
{
["action"] = "immolation_aura",
["enabled"] = true,
}, -- [32]
{
["action"] = "fracture",
["enabled"] = true,
}, -- [33]
{
["action"] = "shear",
["enabled"] = true,
}, -- [34]
{
["action"] = "throw_glaive",
["enabled"] = true,
}, -- [35]
{
["action"] = "felblade",
["enabled"] = true,
}, -- [36]
},
["precombat"] = {
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "spirit_bomb_soul_fragments_not_in_meta",
["criteria"] = "talent.fracture.enabled",
["value_else"] = "5",
["value"] = "4",
}, -- [1]
{
["enabled"] = true,
["op"] = "setif",
["action"] = "variable",
["var_name"] = "spirit_bomb_soul_fragments_in_meta",
["criteria"] = "talent.fracture.enabled",
["value_else"] = "4",
["value"] = "3",
}, -- [2]
{
["action"] = "sigil_of_flame",
["enabled"] = true,
}, -- [3]
{
["enabled"] = true,
["criteria"] = "active_enemies = 1 || ! talent.fallout.enabled",
["action"] = "immolation_aura",
}, -- [4]
},
},
},
},
["toggles"] = {
["interrupts"] = {
["value"] = true,
},
["cooldowns"] = {
["value"] = true,
},
},
["iconStore"] = {
["minimapPos"] = 137.5528731943385,
["hide"] = true,
},
["minimapIcon"] = true,
["notifications"] = {
["y"] = 506.9998474121094,
["x"] = -6.999880790710449,
},
},
},
}