22698 lines
1.6 MiB
22698 lines
1.6 MiB
|
|
HekiliDB = {
|
|
["namespaces"] = {
|
|
["LibDualSpec-1.0"] = {
|
|
},
|
|
},
|
|
["profileKeys"] = {
|
|
["Helnen - Draenor"] = "Default",
|
|
["Sorapriest - Argent Dawn"] = "Default",
|
|
["Sorastab - Argent Dawn"] = "Default",
|
|
["Helfara - Ravencrest"] = "Default",
|
|
["Heltha - Ravencrest"] = "Default",
|
|
["Helcel - Ravencrest"] = "Default",
|
|
["Helca - Draenor"] = "Default",
|
|
["Helfurr - Draenor"] = "Default",
|
|
["Helsora - Ravencrest"] = "Default",
|
|
["Helfael - Ravencrest"] = "Default",
|
|
["Helë - Ravencrest"] = "Default",
|
|
["Helmenel - Ravencrest"] = "Default",
|
|
["Helsora - Draenor"] = "Default",
|
|
["Helnen - Ravencrest"] = "Default",
|
|
["Cuteifread - Shattered Hand"] = "Default",
|
|
["Helarx - Draenor"] = "Default",
|
|
["Helca - Ravencrest"] = "Default",
|
|
["Sorarms - Argent Dawn"] = "Default",
|
|
["Soramonk - Argent Dawn"] = "Default",
|
|
["Sorarcana - Argent Dawn"] = "Default",
|
|
["Soralock - Argent Dawn"] = "Default",
|
|
["Helefir - Ravencrest"] = "Default",
|
|
["Helom - Ravencrest"] = "Default",
|
|
["Soradk - Argent Dawn"] = "Default",
|
|
["Heloce - Ravencrest"] = "Default",
|
|
["Soraefir - Draenor"] = "Default",
|
|
["Helfël - Draenor"] = "Default",
|
|
["Helefir - Draenor"] = "Default",
|
|
["Sorahunt - Argent Dawn"] = "Default",
|
|
["Hexcel - Ravencrest"] = "Default",
|
|
["Hellë - Ravencrest"] = "Default",
|
|
},
|
|
["profiles"] = {
|
|
["Default"] = {
|
|
["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,
|
|
},
|
|
},
|
|
["iconStore"] = {
|
|
["minimapPos"] = 137.5528731943385,
|
|
["hide"] = true,
|
|
},
|
|
["minimapIcon"] = true,
|
|
["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_257"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_72"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_259"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_263"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_1467"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
["removeOldThrottles_20241115"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_103"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_1473"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_73"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_105"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_261"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_62"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_260"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_267"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_577"] = true,
|
|
["forceEnableEnhancedRecheckBoomkin_20210712"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_255"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_256"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_265"] = 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_266"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_1468"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_64"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_264"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_251"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_253"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_104"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_270"] = true,
|
|
},
|
|
["notifications"] = {
|
|
["y"] = 506.9998474121094,
|
|
["x"] = -6.999880790710449,
|
|
},
|
|
["specs"] = {
|
|
[62] = {
|
|
["settings"] = {
|
|
["cancel_pom"] = false,
|
|
["check_explosion_range"] = true,
|
|
},
|
|
},
|
|
[1467] = {
|
|
["settings"] = {
|
|
["use_early_chain"] = false,
|
|
["use_clipping"] = false,
|
|
["fire_breath_fixed"] = 0,
|
|
["use_unravel"] = false,
|
|
["use_deep_breath"] = true,
|
|
["dragonrage_pad"] = 0.5,
|
|
["use_verdant_embrace"] = false,
|
|
},
|
|
},
|
|
[63] = {
|
|
["settings"] = {
|
|
["prevent_hardcasts"] = false,
|
|
["check_explosion_range"] = true,
|
|
["pyroblast_pull"] = false,
|
|
},
|
|
},
|
|
[250] = {
|
|
["settings"] = {
|
|
["rt_damage"] = 30,
|
|
["save_blood_shield"] = true,
|
|
["vb_damage"] = 50,
|
|
["ibf_damage"] = 40,
|
|
["death_strike_pool_amount"] = 65,
|
|
},
|
|
},
|
|
[251] = {
|
|
["settings"] = {
|
|
["bos_rp"] = 50,
|
|
["ams_usage"] = "damage",
|
|
},
|
|
},
|
|
[252] = {
|
|
["settings"] = {
|
|
["dps_shell"] = false,
|
|
["disable_iqd_execute"] = false,
|
|
},
|
|
},
|
|
[1468] = {
|
|
["settings"] = {
|
|
["spend_essence"] = false,
|
|
["use_deep_breath"] = true,
|
|
["fire_breath_fixed"] = 0,
|
|
["use_unravel"] = false,
|
|
},
|
|
},
|
|
[253] = {
|
|
["settings"] = {
|
|
["check_pet_range"] = false,
|
|
["avoid_bw_overlap"] = false,
|
|
["pet_healing"] = 0,
|
|
["barbed_shot_grace_period"] = 0.5,
|
|
["mark_any"] = false,
|
|
},
|
|
},
|
|
[254] = {
|
|
["settings"] = {
|
|
["prevent_hardcasts"] = false,
|
|
["trueshot_rapid_fire"] = true,
|
|
["mark_any"] = false,
|
|
["pet_healing"] = 0,
|
|
["eagletalon_swap"] = false,
|
|
},
|
|
},
|
|
[255] = {
|
|
["settings"] = {
|
|
["mark_any"] = false,
|
|
["pet_healing"] = 0,
|
|
["use_harpoon"] = true,
|
|
["allow_focus_overcap"] = false,
|
|
},
|
|
["cycle"] = true,
|
|
},
|
|
[66] = {
|
|
["settings"] = {
|
|
["sentinel_def"] = false,
|
|
["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"] = {
|
|
["vanish_charges_reserved"] = 0,
|
|
["mfd_points"] = 3,
|
|
["fok_critical_cp_prediction"] = "predict",
|
|
["max_garrote_spread"] = 10,
|
|
["dot_threshold"] = 7,
|
|
["priority_rotation"] = false,
|
|
["envenom_pool_pct"] = 50,
|
|
["solo_vanish"] = true,
|
|
},
|
|
},
|
|
[260] = {
|
|
["settings"] = {
|
|
["vanish_charges_reserved"] = 0,
|
|
["no_rtb_in_dance_cto"] = true,
|
|
["stealth_padding"] = 0.1,
|
|
["ambush_anyway"] = false,
|
|
["never_roll_in_window"] = false,
|
|
["mfd_points"] = 3,
|
|
["use_ld_opener"] = false,
|
|
["allow_shadowmeld"] = false,
|
|
["solo_vanish"] = true,
|
|
["check_blade_rush_range"] = true,
|
|
["sinister_clash"] = -0.5,
|
|
["crackshot_lock"] = false,
|
|
},
|
|
},
|
|
[261] = {
|
|
["settings"] = {
|
|
["rupture_duration"] = 12,
|
|
["mfd_points"] = 3,
|
|
["solo_vanish"] = true,
|
|
["priority_rotation"] = false,
|
|
["vanish_charges_reserved"] = 0,
|
|
},
|
|
},
|
|
[262] = {
|
|
["settings"] = {
|
|
["purge_icd"] = 12,
|
|
["hostile_dispel"] = false,
|
|
["stack_buffer"] = 1.1,
|
|
},
|
|
},
|
|
[581] = {
|
|
["settings"] = {
|
|
["frailty_stacks"] = 1,
|
|
["brand_charges"] = 0,
|
|
["infernal_charges"] = 1,
|
|
},
|
|
},
|
|
[264] = {
|
|
["settings"] = {
|
|
["second_shield"] = "earth_shield",
|
|
["healing_mode"] = false,
|
|
},
|
|
},
|
|
[265] = {
|
|
["settings"] = {
|
|
["default_pet"] = "summon_sayaad",
|
|
["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"] = {
|
|
["bof_percent"] = 50,
|
|
["purify_for_celestial"] = true,
|
|
["max_damage"] = true,
|
|
["vivify_percent"] = 65,
|
|
["purify_for_niuzao"] = true,
|
|
["purify_stagger_maxhp"] = 6,
|
|
["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"] = {
|
|
["aoe_rsk"] = false,
|
|
["single_zen_pulse"] = false,
|
|
["save_faeline"] = false,
|
|
["roll_movement"] = 5,
|
|
},
|
|
},
|
|
[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,
|
|
["spell_reflection_filter"] = true,
|
|
["heroic_charge"] = false,
|
|
},
|
|
},
|
|
[103] = {
|
|
["settings"] = {
|
|
["delay_berserking"] = false,
|
|
["regrowth"] = true,
|
|
["frenzy_cp"] = 2,
|
|
["filler_regrowth"] = false,
|
|
["allow_crit_prediction"] = true,
|
|
["rip_duration"] = 9,
|
|
["owlweave_cat"] = false,
|
|
["use_funnel"] = false,
|
|
["lazy_swipe"] = false,
|
|
["vigil_damage"] = 50,
|
|
["zerk_biteweave"] = false,
|
|
["solo_prowl"] = false,
|
|
},
|
|
},
|
|
[72] = {
|
|
["settings"] = {
|
|
["check_ww_range"] = false,
|
|
["charge_min_range"] = 10,
|
|
["spell_reflection_filter"] = true,
|
|
["shockwave_interrupt"] = true,
|
|
["t30_bloodthirst_crit"] = 95,
|
|
["heroic_charge"] = false,
|
|
},
|
|
},
|
|
[104] = {
|
|
["settings"] = {
|
|
["maul_anyway"] = true,
|
|
["ironfur_damage_threshold"] = 5,
|
|
["vigil_damage"] = 50,
|
|
["catweave_bear"] = false,
|
|
["max_ironfur"] = 1,
|
|
["maul_rage"] = 20,
|
|
["mangle_more"] = false,
|
|
["owlweave_bear"] = false,
|
|
["shift_for_convoke"] = false,
|
|
},
|
|
},
|
|
[73] = {
|
|
["settings"] = {
|
|
["spell_block_amount"] = 25,
|
|
["rallying_cry_health"] = 50,
|
|
["spell_reflection_filter"] = true,
|
|
["stack_shield_block"] = false,
|
|
["stance_weaving"] = false,
|
|
["last_stand_amount"] = 50,
|
|
["rallying_cry_condition"] = false,
|
|
["shield_wall_amount"] = 50,
|
|
["last_stand_condition"] = false,
|
|
["spell_block_health"] = 75,
|
|
["shield_wall_condition"] = false,
|
|
["shield_wall_health"] = 50,
|
|
["reserve_rage"] = 35,
|
|
["victory_rush_health"] = 75,
|
|
["last_stand_offensively"] = false,
|
|
["shockwave_interrupt"] = true,
|
|
["last_stand_health"] = 50,
|
|
["rallying_cry_amount"] = 50,
|
|
["overlap_ignore_pain"] = false,
|
|
},
|
|
},
|
|
[1473] = {
|
|
["settings"] = {
|
|
["use_early_chain"] = false,
|
|
["manage_attunement"] = false,
|
|
["fire_breath_fixed"] = 0,
|
|
["use_unravel"] = false,
|
|
["use_clipping"] = false,
|
|
["manage_source_of_magic"] = false,
|
|
["use_verdant_embrace"] = false,
|
|
},
|
|
},
|
|
[105] = {
|
|
["settings"] = {
|
|
["healing_mode"] = false,
|
|
},
|
|
},
|
|
[256] = {
|
|
["settings"] = {
|
|
["sw_death_protection"] = 50,
|
|
},
|
|
},
|
|
[577] = {
|
|
["settings"] = {
|
|
["retreat_and_return"] = "off",
|
|
["retreat_filler"] = false,
|
|
["fel_rush_charges"] = 0,
|
|
["demon_blades_acknowledged"] = false,
|
|
["throw_glaive_charges"] = 0,
|
|
["recommend_movement"] = true,
|
|
["fel_rush_filler"] = true,
|
|
["unbound_movement"] = false,
|
|
},
|
|
},
|
|
[64] = {
|
|
["settings"] = {
|
|
["manual_water_jet"] = false,
|
|
["check_explosion_range"] = true,
|
|
["limit_ice_lance"] = false,
|
|
["prevent_hardcasts"] = false,
|
|
},
|
|
},
|
|
[263] = {
|
|
["settings"] = {
|
|
["filler_shock"] = true,
|
|
["purge_icd"] = 12,
|
|
["hostile_dispel"] = false,
|
|
["pwave_gcds"] = 4,
|
|
["pad_lava_lash"] = true,
|
|
["pad_windstrike"] = true,
|
|
["funnel_priority"] = false,
|
|
["pwave_targets"] = 0,
|
|
["burn_before_wave"] = true,
|
|
["project_windfury"] = 0,
|
|
},
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Windwalker"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewrwithin/profiles/PreRaids/PR_Monk_Windwalker.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20240928.2,
|
|
["spec"] = 269,
|
|
["desc"] = "2024-09-28: SimC update, address SEF issue in-game vs. sims\n\n2024-09-24: Xuen fix\n\n2024-09-01, 09-22: SimC update\n\n2024-08-30: Allow Tiger Palm to break Hit Combo sometimes\n\n2024-08-29: SimC update\n\n2024-08-25: Relax opener outside of boss fights\n\n2024-08-22: SimC update\n\n2024-07-26: The War Within",
|
|
["lists"] = {
|
|
["default_cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rising_sun_kick",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "buff.pressure_point.up & active_enemies < 4 & cooldown.fists_of_fury.remains > 4",
|
|
["description"] = "2-4 targets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "spinning_crane_kick",
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.stack = 2 & active_enemies > 3",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "( energy > 55 & talent.inner_peace.enabled || energy > 60 & ! talent.inner_peace.enabled ) & combo_strike & chi.max - chi >= 2 & buff.teachings_of_the_monastery.stack < buff.teachings_of_the_monastery.max_stack & ( talent.energy_burst.enabled & ! buff.bok_proc.up || ! talent.energy_burst.enabled ) & ! buff.ordered_elements.up || ( talent.energy_burst.enabled & ! buff.bok_proc.up || ! talent.energy_burst.enabled ) & ! buff.ordered_elements.up & ! cooldown.fists_of_fury.remains & chi < 3 || ( prev.strike_of_the_windlord || cooldown.strike_of_the_windlord.remains ) & cooldown.celestial_conduit.remains < 2 & buff.ordered_elements.up & chi < 5 & combo_strike || ( ! buff.heart_of_the_jade_serpent_cdr.up || ! buff.heart_of_the_jade_serpent_cdr_celestial.up ) & combo_strike & chi.deficit >= 2 & ! buff.ordered_elements.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "touch_of_death",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "celestial_conduit",
|
|
["criteria"] = "buff.storm_earth_and_fire.up & cooldown.strike_of_the_windlord.remains & ( talent.xuens_bond.enabled || ! talent.xuens_bond.enabled & buff.invokers_delight.up ) || boss & fight_remains < 15",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rising_sun_kick",
|
|
["criteria"] = "! pet.xuen_the_white_tiger.active & prev.tiger_palm & time < 5 || buff.heart_of_the_jade_serpent_cdr_celestial.up & buff.pressure_point.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fists_of_fury",
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr_celestial.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "whirling_dragon_punch",
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr_celestial.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "strike_of_the_windlord",
|
|
["criteria"] = "talent.gale_force.enabled & buff.invokers_delight.up & ( buff.bloodlust.up || cooldown.celestial_conduit.remains & ! buff.heart_of_the_jade_serpent_cdr_celestial.up )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fists_of_fury",
|
|
["criteria"] = "buff.power_infusion.up & buff.bloodlust.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rising_sun_kick",
|
|
["criteria"] = "buff.power_infusion.up & buff.bloodlust.up & active_enemies < 3",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "buff.teachings_of_the_monastery.stack = 8 & ( active_enemies < 3 || talent.shadowboxing_treads.enabled )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "whirling_dragon_punch",
|
|
["criteria"] = "! talent.revolving_whirl.enabled || talent.revolving_whirl.enabled & buff.dance_of_chiji.stack < 2 & active_enemies > 2 || active_enemies < 3",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "strike_of_the_windlord",
|
|
["criteria"] = "time > 5 & ( cooldown.invoke_xuen_the_white_tiger.remains > 15 || talent.flurry_strikes.enabled )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "crackling_jade_lightning",
|
|
["criteria"] = "buff.the_emperors_capacitor.stack > 19 & combo_strike & talent.power_of_the_thunder_king.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "spinning_crane_kick",
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.stack = 2",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & active_enemies < 5 & buff.wisdom_of_the_wall_flurry.up & active_enemies < 4",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fists_of_fury",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & active_enemies < 5 & buff.wisdom_of_the_wall_flurry.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "spinning_crane_kick",
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.up & buff.chi_energy.stack > 29",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rising_sun_kick",
|
|
["criteria"] = "chi > 4 & ( active_enemies < 3 || talent.glory_of_the_dawn.enabled ) || chi > 2 & energy > 50 & ( active_enemies < 3 || talent.glory_of_the_dawn.enabled ) || cooldown.fists_of_fury.remains > 2 & ( active_enemies < 3 || talent.glory_of_the_dawn.enabled )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "buff.teachings_of_the_monastery.stack = 4 & ! talent.knowledge_of_the_broken_temple.enabled & talent.shadowboxing_treads.enabled & active_enemies < 3",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "spinning_crane_kick",
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "spinning_crane_kick",
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & talent.crane_vortex.enabled & active_enemies > 2",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & active_enemies < 5",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "combo_strike & chi.deficit >= 2 & ( ! buff.ordered_elements.up || energy.time_to_max <= gcd.max * 3 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains & buff.teachings_of_the_monastery.stack > 3 & cooldown.rising_sun_kick.remains",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "jadefire_stomp",
|
|
["criteria"] = "talent.singularly_focused_jade.enabled || talent.jadefire_harmony.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains & ( buff.teachings_of_the_monastery.stack > 3 || buff.ordered_elements.up ) & ( talent.shadowboxing_treads.enabled || buff.bok_proc.up || buff.ordered_elements.up )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "spinning_crane_kick",
|
|
["criteria"] = "combo_strike & ! buff.ordered_elements.up & talent.crane_vortex.enabled & active_enemies > 2 & chi > 4",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.ordered_elements.up",
|
|
["action"] = "chi_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "combo_strike & ( buff.ordered_elements.up || buff.bok_proc.up & chi.deficit >= 1 & talent.energy_burst.enabled ) & cooldown.fists_of_fury.remains",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains & ( chi > 2 || energy > 60 || buff.bok_proc.up )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "jadefire_stomp",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & chi.deficit >= 1",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "chi_burst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & talent.hit_combo.enabled",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "buff.ordered_elements.up & ! talent.hit_combo.enabled & cooldown.fists_of_fury.remains",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! combo_strike & chi < 3 & ! cooldown.fists_of_fury.remains",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
},
|
|
["aoe_opener"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "chi < 6 & ( combo_strike || ! talent.hit_combo.enabled )",
|
|
["description"] = "Hekili: Modified to check Hit Combo since you will go pack-to-pack in dungeons (vs. single-encounter sims).",
|
|
},
|
|
},
|
|
["default_st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rising_sun_kick",
|
|
["description"] = "1 target",
|
|
["criteria"] = "buff.pressure_point.up || buff.ordered_elements.remains <= gcd.max * 3 & buff.storm_earth_and_fire.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "( energy > 55 & talent.inner_peace.enabled || energy > 60 & ! talent.inner_peace.enabled ) & combo_strike & chi.max - chi >= 2 & buff.teachings_of_the_monastery.stack < buff.teachings_of_the_monastery.max_stack & ( talent.energy_burst.enabled & ! buff.bok_proc.up || ! talent.energy_burst.enabled ) & ! buff.ordered_elements.up || ( talent.energy_burst.enabled & ! buff.bok_proc.up || ! talent.energy_burst.enabled ) & ! buff.ordered_elements.up & ! cooldown.fists_of_fury.remains & chi < 3 || ( prev.strike_of_the_windlord || cooldown.strike_of_the_windlord.remains ) & cooldown.celestial_conduit.remains < 2 & buff.ordered_elements.up & chi < 5 & combo_strike || ( ! buff.heart_of_the_jade_serpent_cdr.up || ! buff.heart_of_the_jade_serpent_cdr_celestial.up ) & combo_strike & chi.deficit >= 2 & ! buff.ordered_elements.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "touch_of_death",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rising_sun_kick",
|
|
["criteria"] = "buff.invokers_delight.up & ! buff.storm_earth_and_fire.up & talent.ordered_elements.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.up & ( ! talent.ordered_elements.enabled || buff.ordered_elements.up ) & cooldown.strike_of_the_windlord.remains & ( talent.xuens_bond.enabled || ! talent.xuens_bond.enabled & buff.invokers_delight.up ) || boss & fight_remains < 15",
|
|
["action"] = "celestial_conduit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rising_sun_kick",
|
|
["criteria"] = "! pet.xuen_the_white_tiger.active & prev.tiger_palm & time < 5 || buff.storm_earth_and_fire.up & talent.ordered_elements.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.gale_force.enabled & buff.invokers_delight.up & ( buff.bloodlust.up || cooldown.celestial_conduit.remains & ! buff.heart_of_the_jade_serpent_cdr_celestial.up )",
|
|
["action"] = "strike_of_the_windlord",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rising_sun_kick",
|
|
["criteria"] = "buff.power_infusion.up & buff.bloodlust.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fists_of_fury",
|
|
["criteria"] = "buff.power_infusion.up & buff.bloodlust.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "buff.teachings_of_the_monastery.stack > 3 & buff.ordered_elements.up & cooldown.rising_sun_kick.remains > 1 & cooldown.fists_of_fury.remains > 2",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dance_of_chiji.stack = 2 & combo_strike & buff.power_infusion.up & buff.bloodlust.up",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up & buff.bloodlust.up",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & buff.power_infusion.up & buff.bloodlust.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "buff.teachings_of_the_monastery.stack > 4 & cooldown.rising_sun_kick.remains > 1 & cooldown.fists_of_fury.remains > 2",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.heart_of_the_jade_serpent_cdr_celestial.up & ! buff.dance_of_chiji.stack = 2 || buff.ordered_elements.up || talent.knowledge_of_the_broken_temple.enabled",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time > 5 & ( cooldown.invoke_xuen_the_white_tiger.remains > 15 || talent.flurry_strikes.enabled )",
|
|
["action"] = "strike_of_the_windlord",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rising_sun_kick",
|
|
["criteria"] = "chi > 4 || chi > 2 & energy > 50 || cooldown.fists_of_fury.remains > 2",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & buff.wisdom_of_the_wall_flurry.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "combo_strike & chi.deficit >= 2 & energy.time_to_max <= gcd.max * 3",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "buff.teachings_of_the_monastery.stack > 7 & talent.memory_of_the_monastery.enabled & ! buff.memory_of_the_monastery.up & cooldown.fists_of_fury.remains",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "fists_of_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.dance_of_chiji.stack = 2 || buff.dance_of_chiji.remains < 2 & buff.dance_of_chiji.up ) & combo_strike & ! buff.ordered_elements.up",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["action"] = "whirling_dragon_punch",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "buff.teachings_of_the_monastery.stack = 4 & ! talent.knowledge_of_the_broken_temple.enabled & cooldown.rising_sun_kick.remains > 1 & cooldown.fists_of_fury.remains > 2",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dance_of_chiji.stack = 2 & combo_strike",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & cooldown.rising_sun_kick.remains > 1 & cooldown.fists_of_fury.remains > 2",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.up & ( buff.ordered_elements.up || energy.time_to_max >= gcd.max * 3 & talent.sequenced_strikes.enabled & talent.energy_burst.enabled || ! talent.sequenced_strikes.enabled || ! talent.energy_burst.enabled || buff.dance_of_chiji.remains <= gcd.max * 3 )",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.singularly_focused_jade.enabled || talent.jadefire_harmony.enabled",
|
|
["action"] = "jadefire_stomp",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.ordered_elements.up",
|
|
["action"] = "chi_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "combo_strike & ( buff.ordered_elements.up || buff.bok_proc.up & chi.deficit >= 1 & talent.energy_burst.enabled ) & cooldown.fists_of_fury.remains",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.the_emperors_capacitor.stack > 19 & ! buff.ordered_elements.up & combo_strike",
|
|
["action"] = "crackling_jade_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains & ( chi > 2 || energy > 60 || buff.bok_proc.up )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "jadefire_stomp",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & chi.deficit >= 1",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "chi_burst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & talent.hit_combo.enabled",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "buff.ordered_elements.up & ! talent.hit_combo.enabled & cooldown.fists_of_fury.remains",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev.tiger_palm & chi < 3 & ! cooldown.fists_of_fury.remains",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.debuff.casting.react",
|
|
["action"] = "spear_hand_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "potion",
|
|
["description"] = "Potion",
|
|
["criteria"] = "buff.storm_earth_and_fire.up & ( ! talent.invoke_xuen.enabled || pet.xuen_the_white_tiger.active ) || boss & fight_remains <= 30",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "false",
|
|
["description"] = "Enable PI if available",
|
|
["var_name"] = "has_external_pi",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Trinkets",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Openers",
|
|
["strict"] = 1,
|
|
["criteria"] = "time < 3 & active_enemies > 2 & chi.deficit > 0",
|
|
["list_name"] = "aoe_opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "time < 4 & active_enemies < 3 & chi.deficit > 0",
|
|
["list_name"] = "normal_opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Use Cooldowns",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.storm_earth_and_fire.enabled",
|
|
["list_name"] = "cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Default Priority",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies >= 5",
|
|
["list_name"] = "default_aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ( ! boss || chi.deficit = 0 || time > 7 || ! talent.celestial_conduit.enabled ) & active_enemies < 5",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "default_cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies < 2",
|
|
["list_name"] = "default_st",
|
|
},
|
|
},
|
|
["default_aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "( energy > 55 & talent.inner_peace.enabled || energy > 60 & ! talent.inner_peace.enabled ) & combo_strike & chi.max - chi >= 2 & buff.teachings_of_the_monastery.stack < buff.teachings_of_the_monastery.max_stack & ( talent.energy_burst.enabled & ! buff.bok_proc.up ) & ! buff.ordered_elements.up || ( talent.energy_burst.enabled & ! buff.bok_proc.up ) & ! buff.ordered_elements.up & ! cooldown.fists_of_fury.remains & chi < 3 || ( prev.strike_of_the_windlord || cooldown.strike_of_the_windlord.remains ) & cooldown.celestial_conduit.remains < 2 & buff.ordered_elements.up & chi < 5 & combo_strike",
|
|
["description"] = ">=5 Targets",
|
|
},
|
|
{
|
|
["action"] = "touch_of_death",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "spinning_crane_kick",
|
|
["criteria"] = "buff.dance_of_chiji.stack = 2 & combo_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "spinning_crane_kick",
|
|
["criteria"] = "combo_strike & buff.chi_energy.stack > 29 & cooldown.fists_of_fury.remains < 5",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "celestial_conduit",
|
|
["criteria"] = "buff.storm_earth_and_fire.up & cooldown.strike_of_the_windlord.remains & ( talent.xuens_bond.enabled || ! talent.xuens_bond.enabled & buff.invokers_delight.up ) || boss & fight_remains < 15",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rising_sun_kick",
|
|
["criteria"] = "! talent.xuens_battlegear.enabled & ! cooldown.whirling_dragon_punch.remains & cooldown.fists_of_fury.remains > 1 & ( ! talent.revolving_whirl.enabled || talent.revolving_whirl.enabled & buff.dance_of_chiji.stack < 2 & active_enemies > 2 ) || ! buff.storm_earth_and_fire.up & buff.pressure_point.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "whirling_dragon_punch",
|
|
["criteria"] = "! talent.revolving_whirl.enabled || talent.revolving_whirl.enabled & buff.dance_of_chiji.stack < 2 & active_enemies > 2",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "combo_strike & buff.bok_proc.up & chi < 2 & talent.energy_burst.enabled & energy < 55",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "strike_of_the_windlord",
|
|
["criteria"] = "time > 5 & ( cooldown.invoke_xuen_the_white_tiger.remains > 15 || talent.flurry_strikes.enabled )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "buff.teachings_of_the_monastery.stack = 8 & talent.shadowboxing_treads.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "crackling_jade_lightning",
|
|
["criteria"] = "buff.the_emperors_capacitor.stack > 19 & combo_strike & talent.power_of_the_thunder_king.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fists_of_fury",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & buff.wisdom_of_the_wall_flurry.up & chi < 6",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "spinning_crane_kick",
|
|
["criteria"] = "combo_strike & chi > 5",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "spinning_crane_kick",
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.up & buff.chi_energy.stack > 29 & cooldown.fists_of_fury.remains < 5",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rising_sun_kick",
|
|
["criteria"] = "buff.pressure_point.up & cooldown.fists_of_fury.remains > 2",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "spinning_crane_kick",
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.up & spinning_crane_kick.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "spinning_crane_kick",
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & talent.crane_vortex.enabled & active_enemies > 2 & spinning_crane_kick.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & buff.ordered_elements.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "combo_strike & chi.deficit >= 2 & ( ! buff.ordered_elements.up || energy.time_to_max <= gcd.max * 3 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "jadefire_stomp",
|
|
["criteria"] = "talent.singularly_focused_jade.enabled || talent.jadefire_harmony.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "spinning_crane_kick",
|
|
["criteria"] = "combo_strike & ! buff.ordered_elements.up & talent.crane_vortex.enabled & active_enemies > 2 & chi > 4 & spinning_crane_kick.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains & ( buff.teachings_of_the_monastery.stack > 3 || buff.ordered_elements.up ) & ( talent.shadowboxing_treads.enabled || buff.bok_proc.up )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "combo_strike & ! cooldown.fists_of_fury.remains & chi < 3",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & ( chi > 3 || energy > 55 )",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "combo_strike & ( buff.ordered_elements.up || buff.bok_proc.up & chi.deficit >= 1 & talent.energy_burst.enabled ) & cooldown.fists_of_fury.remains",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains & ( chi > 2 || energy > 60 || buff.bok_proc.up )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "jadefire_stomp",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & chi.deficit >= 1",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.ordered_elements.up",
|
|
["action"] = "chi_burst",
|
|
},
|
|
{
|
|
["action"] = "chi_burst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & talent.hit_combo.enabled & spinning_crane_kick.max",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blackout_kick",
|
|
["criteria"] = "buff.ordered_elements.up & ! talent.hit_combo.enabled & cooldown.fists_of_fury.remains",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! combo_strike & chi < 3 & ! cooldown.fists_of_fury.remains",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["criteria"] = "debuff.mark_of_the_crane.refreshable & ( fight_remains > 14 & boss || fight_remains > 22 ) & ! cooldown.invoke_xuen_the_white_tiger.remains & ( chi < 5 & ! talent.ordered_elements.enabled || chi < 3 ) & ( combo_strike || ! talent.hit_combo.enabled )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "invoke_xuen",
|
|
["criteria"] = "( ! boss & active_enemies = 1 & ( time < 10 || talent.xuens_bond.enabled & talent.celestial_conduit.enabled ) || boss || active_enemies > 1 ) & cooldown.storm_earth_and_fire.ready & ( fight_remains > 14 & boss || fight_remains > 22 ) & ( active_enemies > 2 || debuff.acclamation.up || ! talent.ordered_elements.enabled & time < 5 ) & ( chi > 2 & talent.ordered_elements.enabled || chi > 5 || chi > 3 & energy < 50 || energy < 50 & active_enemies = 1 || prev.tiger_palm & ! talent.ordered_elements.enabled & time < 5 ) || boss & fight_remains < 30",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "storm_earth_and_fire",
|
|
["criteria"] = "( fight_remains > 14 & boss || fight_remains > 22 ) & ( active_enemies > 2 || cooldown.rising_sun_kick.remains || ! talent.ordered_elements.enabled ) & ( ( buff.invokers_delight.remains > 10 & ! buff.bloodlust.up || buff.bloodlust.up & cooldown.storm_earth_and_fire.full_recharge_time < 1 ) || cooldown.storm_earth_and_fire.full_recharge_time <= cooldown.invoke_xuen_the_white_tiger.true_remains & ! buff.bloodlust.up & ( active_enemies > 1 || cooldown.strike_of_the_windlord.remains < 2 & ( talent.flurry_strikes.enabled || buff.heart_of_the_jade_serpent.up ) ) & ( chi > 3 || chi > 1 & talent.ordered_elements.enabled ) || cooldown.storm_earth_and_fire.full_recharge_time < 10 & ( chi > 3 || chi > 1 & talent.ordered_elements.enabled ) ) || boss & fight_remains < 30 || prev.invoke_xuen_the_white_tiger || buff.invokers_delight.remains > 10 & ! boss & ( cooldown.rising_sun_kick.remains || ! talent.ordered_elements.enabled || active_enemies > 2 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "touch_of_karma",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "algethar_puzzle_box",
|
|
["description"] = "Use Power Infusion while Invoke Xuen, the White Tiger is active.",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "erupting_spear_fragment",
|
|
["criteria"] = "buff.storm_earth_and_fire.up",
|
|
["name"] = "erupting_spear_fragment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! trinket.t1.has_use_buff & ! trinket.t2.has_use_buff & ! buff.storm_earth_and_fire.up & ! pet.xuen_the_white_tiger.active || ( trinket.t1.has_use_buff || trinket.t2.has_use_buff ) & cooldown.invoke_xuen_the_white_tiger.remains > 30 || boss & fight_remains < 5",
|
|
["action"] = "manic_grieftorch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! trinket.t1.has_use_buff & ! trinket.t2.has_use_buff & ! buff.storm_earth_and_fire.up & ! pet.xuen_the_white_tiger.active || ( trinket.t1.has_use_buff || trinket.t2.has_use_buff ) & cooldown.invoke_xuen_the_white_tiger.remains > 30 || boss & fight_remains < 10",
|
|
["action"] = "beacon_to_the_beyond",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.fists_of_fury.remains < 2 & cooldown.invoke_xuen_the_white_tiger.remains > 10 || boss & fight_remains < 12",
|
|
["action"] = "djaruun_pillar_of_the_elder_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! trinket.t1.has_use_buff & ! trinket.t2.has_use_buff || ( trinket.t1.has_use_buff || trinket.t2.has_use_buff ) & cooldown.invoke_xuen_the_white_tiger.remains > 10 || boss & fight_remains < 10",
|
|
["action"] = "dragonfire_bomb_dispenser",
|
|
},
|
|
{
|
|
["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"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! trinket.t1.has_use_buff & ! trinket.t2.has_use_buff || ( trinket.t1.has_use_buff || trinket.t2.has_use_buff ) & cooldown.invoke_xuen_the_white_tiger.remains > 30",
|
|
["action"] = "trinket1",
|
|
},
|
|
{
|
|
["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"] = "mydas_talisman",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! trinket.t1.has_use_buff & ! trinket.t2.has_use_buff || ( trinket.t1.has_use_buff || trinket.t2.has_use_buff ) & cooldown.invoke_xuen_the_white_tiger.remains > 30",
|
|
["action"] = "mydas_talisman",
|
|
},
|
|
},
|
|
["normal_opener"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "chi < 6 & ( combo_strike || ! talent.hit_combo.enabled )",
|
|
["description"] = "normal opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rising_sun_kick",
|
|
["criteria"] = "talent.ordered_elements.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20240928.2,
|
|
["warnings"] = "The import for 'default_cleave' required some automated changes.\nLine 3: Converted 'talent.inner_peace' to 'talent.inner_peace.enabled' (1x).\nLine 3: Converted 'talent.inner_peace' to 'talent.inner_peace.enabled' (1x).\nLine 3: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 3: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 3: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 3: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 5: Converted 'talent.xuens_bond' to 'talent.xuens_bond.enabled' (1x).\nLine 5: Converted 'talent.xuens_bond' to 'talent.xuens_bond.enabled' (1x).\nLine 9: Converted 'talent.gale_force' to 'talent.gale_force.enabled' (1x).\nLine 12: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 13: Converted 'talent.revolving_whirl' to 'talent.revolving_whirl.enabled' (1x).\nLine 13: Converted 'talent.revolving_whirl' to 'talent.revolving_whirl.enabled' (1x).\nLine 14: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 15: Converted 'talent.power_of_the_thunder_king' to 'talent.power_of_the_thunder_king.enabled' (1x).\nLine 17: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 19: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 21: Converted 'talent.glory_of_the_dawn' to 'talent.glory_of_the_dawn.enabled' (1x).\nLine 21: Converted 'talent.glory_of_the_dawn' to 'talent.glory_of_the_dawn.enabled' (1x).\nLine 21: Converted 'talent.glory_of_the_dawn' to 'talent.glory_of_the_dawn.enabled' (1x).\nLine 22: Converted 'talent.knowledge_of_the_broken_temple' to 'talent.knowledge_of_the_broken_temple.enabled' (1x).\nLine 22: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 24: Converted 'talent.crane_vortex' to 'talent.crane_vortex.enabled' (1x).\nLine 25: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 28: Converted 'talent.singularly_focused_jade' to 'talent.singularly_focused_jade.enabled' (1x).\nLine 28: Converted 'talent.jadefire_harmony' to 'talent.jadefire_harmony.enabled' (1x).\nLine 29: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 30: Converted 'talent.crane_vortex' to 'talent.crane_vortex.enabled' (1x).\nLine 32: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 37: Converted 'talent.hit_combo' to 'talent.hit_combo.enabled' (1x).\nLine 38: Converted 'talent.hit_combo' to 'talent.hit_combo.enabled' (1x).\n\nThe import for 'aoe_opener' required some automated changes.\nLine 1: Converted 'talent.hit_combo' to 'talent.hit_combo.enabled' (1x).\n\nThe import for 'default_st' required some automated changes.\nLine 2: Converted 'talent.inner_peace' to 'talent.inner_peace.enabled' (1x).\nLine 2: Converted 'talent.inner_peace' to 'talent.inner_peace.enabled' (1x).\nLine 2: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 2: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 2: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 2: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 4: Converted 'talent.ordered_elements' to 'talent.ordered_elements.enabled' (1x).\nLine 5: Converted 'talent.ordered_elements' to 'talent.ordered_elements.enabled' (1x).\nLine 5: Converted 'talent.xuens_bond' to 'talent.xuens_bond.enabled' (1x).\nLine 5: Converted 'talent.xuens_bond' to 'talent.xuens_bond.enabled' (1x).\nLine 6: Converted 'talent.ordered_elements' to 'talent.ordered_elements.enabled' (1x).\nLine 7: Converted 'talent.gale_force' to 'talent.gale_force.enabled' (1x).\nLine 13: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 15: Converted 'talent.knowledge_of_the_broken_temple' to 'talent.knowledge_of_the_broken_temple.enabled' (1x).\nLine 16: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 18: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 20: Converted 'talent.memory_of_the_monastery' to 'talent.memory_of_the_monastery.enabled' (1x).\nLine 24: Converted 'talent.knowledge_of_the_broken_temple' to 'talent.knowledge_of_the_broken_temple.enabled' (1x).\nLine 27: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 28: Converted 'talent.sequenced_strikes' to 'talent.sequenced_strikes.enabled' (1x).\nLine 28: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 28: Converted 'talent.sequenced_strikes' to 'talent.sequenced_strikes.enabled' (1x).\nLine 28: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 29: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 30: Converted 'talent.singularly_focused_jade' to 'talent.singularly_focused_jade.enabled' (1x).\nLine 30: Converted 'talent.jadefire_harmony' to 'talent.jadefire_harmony.enabled' (1x).\nLine 32: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 38: Converted 'talent.hit_combo' to 'talent.hit_combo.enabled' (1x).\nLine 39: Converted 'talent.hit_combo' to 'talent.hit_combo.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 2: Converted 'talent.invoke_xuen' to 'talent.invoke_xuen.enabled' (1x).\nLine 7: Converted 'talent.storm_earth_and_fire' to 'talent.storm_earth_and_fire.enabled' (1x).\nLine 9: Converted 'talent.celestial_conduit' to 'talent.celestial_conduit.enabled' (1x).\n\nThe import for 'cooldowns' required some automated changes.\nLine 1: Converted 'talent.ordered_elements' to 'talent.ordered_elements.enabled' (1x).\nLine 1: Converted 'talent.hit_combo' to 'talent.hit_combo.enabled' (1x).\nLine 2: Converted 'talent.xuens_bond' to 'talent.xuens_bond.enabled' (1x).\nLine 2: Converted 'talent.celestial_conduit' to 'talent.celestial_conduit.enabled' (1x).\nLine 2: Converted 'talent.ordered_elements' to 'talent.ordered_elements.enabled' (1x).\nLine 2: Converted 'talent.ordered_elements' to 'talent.ordered_elements.enabled' (1x).\nLine 2: Converted 'talent.ordered_elements' to 'talent.ordered_elements.enabled' (1x).\nLine 3: Converted 'talent.ordered_elements' to 'talent.ordered_elements.enabled' (1x).\nLine 3: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 3: Converted 'talent.ordered_elements' to 'talent.ordered_elements.enabled' (1x).\nLine 3: Converted 'talent.ordered_elements' to 'talent.ordered_elements.enabled' (1x).\nLine 3: Converted 'talent.ordered_elements' to 'talent.ordered_elements.enabled' (1x).\n\nThe import for 'normal_opener' required some automated changes.\nLine 1: Converted 'talent.hit_combo' to 'talent.hit_combo.enabled' (1x).\nLine 2: Converted 'talent.ordered_elements' to 'talent.ordered_elements.enabled' (1x).\n\nThe import for 'default_aoe' required some automated changes.\nLine 1: Converted 'talent.inner_peace' to 'talent.inner_peace.enabled' (1x).\nLine 1: Converted 'talent.inner_peace' to 'talent.inner_peace.enabled' (1x).\nLine 1: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 1: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 5: Converted 'talent.xuens_bond' to 'talent.xuens_bond.enabled' (1x).\nLine 5: Converted 'talent.xuens_bond' to 'talent.xuens_bond.enabled' (1x).\nLine 6: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\nLine 6: Converted 'talent.revolving_whirl' to 'talent.revolving_whirl.enabled' (1x).\nLine 6: Converted 'talent.revolving_whirl' to 'talent.revolving_whirl.enabled' (1x).\nLine 7: Converted 'talent.revolving_whirl' to 'talent.revolving_whirl.enabled' (1x).\nLine 7: Converted 'talent.revolving_whirl' to 'talent.revolving_whirl.enabled' (1x).\nLine 8: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 9: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 10: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 11: Converted 'talent.power_of_the_thunder_king' to 'talent.power_of_the_thunder_king.enabled' (1x).\nLine 13: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 18: Converted 'talent.crane_vortex' to 'talent.crane_vortex.enabled' (1x).\nLine 19: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 21: Converted 'talent.singularly_focused_jade' to 'talent.singularly_focused_jade.enabled' (1x).\nLine 21: Converted 'talent.jadefire_harmony' to 'talent.jadefire_harmony.enabled' (1x).\nLine 22: Converted 'talent.crane_vortex' to 'talent.crane_vortex.enabled' (1x).\nLine 23: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 26: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 32: Converted 'talent.hit_combo' to 'talent.hit_combo.enabled' (1x).\nLine 33: Converted 'talent.hit_combo' to 'talent.hit_combo.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 1: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 3: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.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 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.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 6: Converted 'trinket.1.has_use_buff' 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.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 7: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 8: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 8: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 8: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 8: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 9: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 10: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 10: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 10: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 10: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\n\nThis profile is missing support for generic trinkets. It is recommended that every priority includes either:\n - [Use Items], which includes any trinkets not explicitly included in the priority; or\n - [Trinket 1] and [Trinket 2], which will recommend the trinket for the numbered slot.\nImported 9 action lists.\n",
|
|
["profile"] = "actions.precombat+=/use_item,name=imperfect_ascendancy_serum\n\nactions+=/spear_hand_strike,if=target.debuff.casting.react\n# Potion\nactions+=/potion,if=buff.storm_earth_and_fire.up&(!talent.invoke_xuen||pet.xuen_the_white_tiger.active)||boss&fight_remains<=30\n# Enable PI if available\nactions+=/variable,name=has_external_pi,value=false\n# Use Trinkets\nactions+=/call_action_list,name=trinkets\n# Openers\nactions+=/call_action_list,name=aoe_opener,strict=1,if=time<3&active_enemies>2&chi.deficit>0\nactions+=/call_action_list,name=normal_opener,strict=1,if=time<4&active_enemies<3&chi.deficit>0\n# Use Cooldowns\nactions+=/call_action_list,name=cooldowns,strict=1,if=talent.storm_earth_and_fire\n# Default Priority\nactions+=/call_action_list,name=default_aoe,strict=1,if=active_enemies>=5\nactions+=/call_action_list,name=default_cleave,if=active_enemies>1&(!boss||chi.deficit=0||time>7||!talent.celestial_conduit)&active_enemies<5\nactions+=/call_action_list,name=default_st,strict=1,if=active_enemies<2\n\n# Use Power Infusion while Invoke Xuen, the White Tiger is active.\nactions.trinkets+=/use_item,name=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.trinkets+=/use_item,name=erupting_spear_fragment,if=buff.storm_earth_and_fire.up\nactions.trinkets+=/manic_grieftorch,if=!trinket.1.has_use_buff&!trinket.2.has_use_buff&!buff.storm_earth_and_fire.up&!pet.xuen_the_white_tiger.active||(trinket.1.has_use_buff||trinket.2.has_use_buff)&cooldown.invoke_xuen_the_white_tiger.remains>30||boss&fight_remains<5\nactions.trinkets+=/beacon_to_the_beyond,if=!trinket.1.has_use_buff&!trinket.2.has_use_buff&!buff.storm_earth_and_fire.up&!pet.xuen_the_white_tiger.active||(trinket.1.has_use_buff||trinket.2.has_use_buff)&cooldown.invoke_xuen_the_white_tiger.remains>30||boss&fight_remains<10\nactions.trinkets+=/djaruun_pillar_of_the_elder_flame,if=cooldown.fists_of_fury.remains<2&cooldown.invoke_xuen_the_white_tiger.remains>10||boss&fight_remains<12\nactions.trinkets+=/dragonfire_bomb_dispenser,if=!trinket.1.has_use_buff&!trinket.2.has_use_buff||(trinket.1.has_use_buff||trinket.2.has_use_buff)&cooldown.invoke_xuen_the_white_tiger.remains>10||boss&fight_remains<10\nactions.trinkets+=/trinket1,if=(pet.xuen_the_white_tiger.active||!talent.invoke_xuen_the_white_tiger)&buff.storm_earth_and_fire.up||boss&fight_remains<25\nactions.trinkets+=/trinket1,if=!trinket.1.has_use_buff&!trinket.2.has_use_buff||(trinket.1.has_use_buff||trinket.2.has_use_buff)&cooldown.invoke_xuen_the_white_tiger.remains>30\nactions.trinkets+=/trinket2,if=(pet.xuen_the_white_tiger.active||!talent.invoke_xuen_the_white_tiger)&buff.storm_earth_and_fire.up||boss&fight_remains<25\nactions.trinkets+=/trinket2,if=!trinket.1.has_use_buff&!trinket.2.has_use_buff||(trinket.1.has_use_buff||trinket.2.has_use_buff)&cooldown.invoke_xuen_the_white_tiger.remains>30\n\nactions.cooldowns+=/tiger_palm,cycle_targets=1,if=debuff.mark_of_the_crane.refreshable&(fight_remains>14&boss||fight_remains>22)&!cooldown.invoke_xuen_the_white_tiger.remains&(chi<5&!talent.ordered_elements||chi<3)&(combo_strike||!talent.hit_combo)\nactions.cooldowns+=/invoke_xuen_the_white_tiger,cycle_targets=1,if=(!boss&active_enemies=1&(time<10||talent.xuens_bond&talent.celestial_conduit)||boss||active_enemies>1)&cooldown.storm_earth_and_fire.ready&(fight_remains>14&boss||fight_remains>22)&(active_enemies>2||debuff.acclamation.up||!talent.ordered_elements&time<5)&(chi>2&talent.ordered_elements||chi>5||chi>3&energy<50||energy<50&active_enemies=1||prev.tiger_palm&!talent.ordered_elements&time<5)||boss&fight_remains<30\nactions.cooldowns+=/storm_earth_and_fire,cycle_targets=1,if=(fight_remains>14&boss||fight_remains>22)&(active_enemies>2||cooldown.rising_sun_kick.remains||!talent.ordered_elements)&((buff.invokers_delight.remains>10&!buff.bloodlust.up||buff.bloodlust.up&cooldown.storm_earth_and_fire.full_recharge_time<1)||cooldown.storm_earth_and_fire.full_recharge_time<=cooldown.invoke_xuen_the_white_tiger.true_remains&!buff.bloodlust.up&(active_enemies>1||cooldown.strike_of_the_windlord.remains<2&(talent.flurry_strikes||buff.heart_of_the_jade_serpent.up))&(chi>3||chi>1&talent.ordered_elements)||cooldown.storm_earth_and_fire.full_recharge_time<10&(chi>3||chi>1&talent.ordered_elements))||boss&fight_remains<30||prev.invoke_xuen_the_white_tiger||buff.invokers_delight.remains>10&!boss&(cooldown.rising_sun_kick.remains||!talent.ordered_elements||active_enemies>2)\nactions.cooldowns+=/touch_of_karma\n\n## aoe opener\n# Hekili: Modified to check Hit Combo since you will go pack-to-pack in dungeons (vs. single-encounter sims).\nactions.aoe_opener+=/tiger_palm,cycle_targets=1,if=chi<6&(combo_strike||!talent.hit_combo)\n\n# normal opener\nactions.normal_opener+=/tiger_palm,cycle_targets=1,if=chi<6&(combo_strike||!talent.hit_combo)\nactions.normal_opener+=/rising_sun_kick,cycle_targets=1,if=talent.ordered_elements\n\n# >=5 Targets\nactions.default_aoe+=/tiger_palm,cycle_targets=1,if=(energy>55&talent.inner_peace||energy>60&!talent.inner_peace)&combo_strike&chi.max-chi>=2&buff.teachings_of_the_monastery.stack<buff.teachings_of_the_monastery.max_stack&(talent.energy_burst&!buff.bok_proc.up)&!buff.ordered_elements.up||(talent.energy_burst&!buff.bok_proc.up)&!buff.ordered_elements.up&!cooldown.fists_of_fury.remains&chi<3||(prev.strike_of_the_windlord||cooldown.strike_of_the_windlord.remains)&cooldown.celestial_conduit.remains<2&buff.ordered_elements.up&chi<5&combo_strike\nactions.default_aoe+=/touch_of_death\nactions.default_aoe+=/spinning_crane_kick,cycle_targets=1,if=buff.dance_of_chiji.stack=2&combo_strike\nactions.default_aoe+=/spinning_crane_kick,cycle_targets=1,if=combo_strike&buff.chi_energy.stack>29&cooldown.fists_of_fury.remains<5\nactions.default_aoe+=/celestial_conduit,cycle_targets=1,if=buff.storm_earth_and_fire.up&cooldown.strike_of_the_windlord.remains&(talent.xuens_bond||!talent.xuens_bond&buff.invokers_delight.up)||boss&fight_remains<15\nactions.default_aoe+=/rising_sun_kick,,cycle_targets=1,if=!talent.xuens_battlegear&!cooldown.whirling_dragon_punch.remains&cooldown.fists_of_fury.remains>1&(!talent.revolving_whirl||talent.revolving_whirl&buff.dance_of_chiji.stack<2&active_enemies>2)||!buff.storm_earth_and_fire.up&buff.pressure_point.up\nactions.default_aoe+=/whirling_dragon_punch,cycle_targets=1,if=!talent.revolving_whirl||talent.revolving_whirl&buff.dance_of_chiji.stack<2&active_enemies>2\nactions.default_aoe+=/blackout_kick,cycle_targets=1,if=combo_strike&buff.bok_proc.up&chi<2&talent.energy_burst&energy<55\nactions.default_aoe+=/strike_of_the_windlord,cycle_targets=1,if=time>5&(cooldown.invoke_xuen_the_white_tiger.remains>15||talent.flurry_strikes)\nactions.default_aoe+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=8&talent.shadowboxing_treads\nactions.default_aoe+=/crackling_jade_lightning,cycle_targets=1,if=buff.the_emperors_capacitor.stack>19&combo_strike&talent.power_of_the_thunder_king\nactions.default_aoe+=/fists_of_fury,cycle_targets=1\nactions.default_aoe+=/tiger_palm,cycle_targets=1,if=combo_strike&energy.time_to_max<=gcd.max*3&talent.flurry_strikes&buff.wisdom_of_the_wall_flurry.up&chi<6\nactions.default_aoe+=/spinning_crane_kick,cycle_targets=1,if=combo_strike&chi>5\nactions.default_aoe+=/spinning_crane_kick,cycle_targets=1,if=combo_strike&buff.dance_of_chiji.up&buff.chi_energy.stack>29&cooldown.fists_of_fury.remains<5\nactions.default_aoe+=/rising_sun_kick,cycle_targets=1,if=buff.pressure_point.up&cooldown.fists_of_fury.remains>2\nactions.default_aoe+=/spinning_crane_kick,cycle_targets=1,if=combo_strike&buff.dance_of_chiji.up&spinning_crane_kick.max\nactions.default_aoe+=/spinning_crane_kick,cycle_targets=1,if=combo_strike&buff.ordered_elements.up&talent.crane_vortex&active_enemies>2&spinning_crane_kick.max\nactions.default_aoe+=/tiger_palm,cycle_targets=1,if=combo_strike&energy.time_to_max<=gcd.max*3&talent.flurry_strikes&buff.ordered_elements.up\nactions.default_aoe+=/tiger_palm,cycle_targets=1,if=combo_strike&chi.deficit>=2&(!buff.ordered_elements.up||energy.time_to_max<=gcd.max*3)\nactions.default_aoe+=/jadefire_stomp,cycle_targets=1,if=talent.singularly_focused_jade||talent.jadefire_harmony\nactions.default_aoe+=/spinning_crane_kick,cycle_targets=1,if=combo_strike&!buff.ordered_elements.up&talent.crane_vortex&active_enemies>2&chi>4&spinning_crane_kick.max\nactions.default_aoe+=/blackout_kick,cycle_targets=1,if=combo_strike&cooldown.fists_of_fury.remains&(buff.teachings_of_the_monastery.stack>3||buff.ordered_elements.up)&(talent.shadowboxing_treads||buff.bok_proc.up)\nactions.default_aoe+=/blackout_kick,cycle_targets=1,if=combo_strike&!cooldown.fists_of_fury.remains&chi<3\nactions.default_aoe+=/spinning_crane_kick,if=combo_strike&(chi>3||energy>55)\nactions.default_aoe+=/blackout_kick,cycle_targets=1,if=combo_strike&(buff.ordered_elements.up||buff.bok_proc.up&chi.deficit>=1&talent.energy_burst)&cooldown.fists_of_fury.remains\nactions.default_aoe+=/blackout_kick,cycle_targets=1,if=combo_strike&cooldown.fists_of_fury.remains&(chi>2||energy>60||buff.bok_proc.up)\nactions.default_aoe+=/jadefire_stomp,cycle_targets=1\nactions.default_aoe+=/tiger_palm,cycle_targets=1,if=combo_strike&buff.ordered_elements.up&chi.deficit>=1\nactions.default_aoe+=/chi_burst,if=!buff.ordered_elements.up\nactions.default_aoe+=/chi_burst\nactions.default_aoe+=/spinning_crane_kick,if=combo_strike&buff.ordered_elements.up&talent.hit_combo&spinning_crane_kick.max\nactions.default_aoe+=/blackout_kick,cycle_targets=1,if=buff.ordered_elements.up&!talent.hit_combo&cooldown.fists_of_fury.remains\nactions.default_aoe+=/tiger_palm,if=!combo_strike&chi<3&!cooldown.fists_of_fury.remains\n\n# 2-4 targets\nactions.default_cleave+=/rising_sun_kick,cycle_targets=1,if=buff.pressure_point.up&active_enemies<4&cooldown.fists_of_fury.remains>4\nactions.default_cleave+=/spinning_crane_kick,cycle_targets=1,if=combo_strike&buff.dance_of_chiji.stack=2&active_enemies>3\nactions.default_cleave+=/tiger_palm,cycle_targets=1,if=(energy>55&talent.inner_peace||energy>60&!talent.inner_peace)&combo_strike&chi.max-chi>=2&buff.teachings_of_the_monastery.stack<buff.teachings_of_the_monastery.max_stack&(talent.energy_burst&!buff.bok_proc.up||!talent.energy_burst)&!buff.ordered_elements.up||(talent.energy_burst&!buff.bok_proc.up||!talent.energy_burst)&!buff.ordered_elements.up&!cooldown.fists_of_fury.remains&chi<3||(prev.strike_of_the_windlord||cooldown.strike_of_the_windlord.remains)&cooldown.celestial_conduit.remains<2&buff.ordered_elements.up&chi<5&combo_strike||(!buff.heart_of_the_jade_serpent_cdr.up||!buff.heart_of_the_jade_serpent_cdr_celestial.up)&combo_strike&chi.deficit>=2&!buff.ordered_elements.up\nactions.default_cleave+=/touch_of_death\nactions.default_cleave+=/celestial_conduit,cycle_targets=1,if=buff.storm_earth_and_fire.up&cooldown.strike_of_the_windlord.remains&(talent.xuens_bond||!talent.xuens_bond&buff.invokers_delight.up)||boss&fight_remains<15\nactions.default_cleave+=/rising_sun_kick,cycle_targets=1,if=!pet.xuen_the_white_tiger.active&prev.tiger_palm&time<5||buff.heart_of_the_jade_serpent_cdr_celestial.up&buff.pressure_point.up\nactions.default_cleave+=/fists_of_fury,cycle_targets=1,if=buff.heart_of_the_jade_serpent_cdr_celestial.up\nactions.default_cleave+=/whirling_dragon_punch,cycle_targets=1,if=buff.heart_of_the_jade_serpent_cdr_celestial.up\nactions.default_cleave+=/strike_of_the_windlord,cycle_targets=1,if=talent.gale_force&buff.invokers_delight.up&(buff.bloodlust.up||cooldown.celestial_conduit.remains&!buff.heart_of_the_jade_serpent_cdr_celestial.up)\nactions.default_cleave+=/fists_of_fury,cycle_targets=1,if=buff.power_infusion.up&buff.bloodlust.up\nactions.default_cleave+=/rising_sun_kick,cycle_targets=1,if=buff.power_infusion.up&buff.bloodlust.up&active_enemies<3\nactions.default_cleave+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=8&(active_enemies<3||talent.shadowboxing_treads)\nactions.default_cleave+=/whirling_dragon_punch,cycle_targets=1,if=!talent.revolving_whirl||talent.revolving_whirl&buff.dance_of_chiji.stack<2&active_enemies>2||active_enemies<3\nactions.default_cleave+=/strike_of_the_windlord,cycle_targets=1,if=time>5&(cooldown.invoke_xuen_the_white_tiger.remains>15||talent.flurry_strikes)\nactions.default_cleave+=/crackling_jade_lightning,cycle_targets=1,if=buff.the_emperors_capacitor.stack>19&combo_strike&talent.power_of_the_thunder_king\nactions.default_cleave+=/spinning_crane_kick,cycle_targets=1,if=combo_strike&buff.dance_of_chiji.stack=2\nactions.default_cleave+=/tiger_palm,cycle_targets=1,if=combo_strike&energy.time_to_max<=gcd.max*3&talent.flurry_strikes&active_enemies<5&buff.wisdom_of_the_wall_flurry.up&active_enemies<4\nactions.default_cleave+=/fists_of_fury,cycle_targets=1\nactions.default_cleave+=/tiger_palm,cycle_targets=1,if=combo_strike&energy.time_to_max<=gcd.max*3&talent.flurry_strikes&active_enemies<5&buff.wisdom_of_the_wall_flurry.up\nactions.default_cleave+=/spinning_crane_kick,cycle_targets=1,if=combo_strike&buff.dance_of_chiji.up&buff.chi_energy.stack>29\nactions.default_cleave+=/rising_sun_kick,cycle_targets=1,if=chi>4&(active_enemies<3||talent.glory_of_the_dawn)||chi>2&energy>50&(active_enemies<3||talent.glory_of_the_dawn)||cooldown.fists_of_fury.remains>2&(active_enemies<3||talent.glory_of_the_dawn)\nactions.default_cleave+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=4&!talent.knowledge_of_the_broken_temple&talent.shadowboxing_treads&active_enemies<3\nactions.default_cleave+=/spinning_crane_kick,cycle_targets=1,if=combo_strike&buff.dance_of_chiji.up\nactions.default_cleave+=/spinning_crane_kick,cycle_targets=1,if=combo_strike&buff.ordered_elements.up&talent.crane_vortex&active_enemies>2\nactions.default_cleave+=/tiger_palm,cycle_targets=1,if=combo_strike&energy.time_to_max<=gcd.max*3&talent.flurry_strikes&active_enemies<5\nactions.default_cleave+=/tiger_palm,cycle_targets=1,if=combo_strike&chi.deficit>=2&(!buff.ordered_elements.up||energy.time_to_max<=gcd.max*3)\nactions.default_cleave+=/blackout_kick,cycle_targets=1,if=combo_strike&cooldown.fists_of_fury.remains&buff.teachings_of_the_monastery.stack>3&cooldown.rising_sun_kick.remains\nactions.default_cleave+=/jadefire_stomp,cycle_targets=1,if=talent.singularly_focused_jade||talent.jadefire_harmony\nactions.default_cleave+=/blackout_kick,cycle_targets=1,if=combo_strike&cooldown.fists_of_fury.remains&(buff.teachings_of_the_monastery.stack>3||buff.ordered_elements.up)&(talent.shadowboxing_treads||buff.bok_proc.up||buff.ordered_elements.up)\nactions.default_cleave+=/spinning_crane_kick,cycle_targets=1,if=combo_strike&!buff.ordered_elements.up&talent.crane_vortex&active_enemies>2&chi>4\nactions.default_cleave+=/chi_burst,if=!buff.ordered_elements.up\nactions.default_cleave+=/blackout_kick,cycle_targets=1,if=combo_strike&(buff.ordered_elements.up||buff.bok_proc.up&chi.deficit>=1&talent.energy_burst)&cooldown.fists_of_fury.remains\nactions.default_cleave+=/blackout_kick,cycle_targets=1,if=combo_strike&cooldown.fists_of_fury.remains&(chi>2||energy>60||buff.bok_proc.up)\nactions.default_cleave+=/jadefire_stomp,cycle_targets=1\nactions.default_cleave+=/tiger_palm,cycle_targets=1,if=combo_strike&buff.ordered_elements.up&chi.deficit>=1\nactions.default_cleave+=/chi_burst\nactions.default_cleave+=/spinning_crane_kick,if=combo_strike&buff.ordered_elements.up&talent.hit_combo\nactions.default_cleave+=/blackout_kick,cycle_targets=1,if=buff.ordered_elements.up&!talent.hit_combo&cooldown.fists_of_fury.remains\nactions.default_cleave+=/tiger_palm,if=!combo_strike&chi<3&!cooldown.fists_of_fury.remains\n\n# 1 target\nactions.default_st+=/rising_sun_kick,if=buff.pressure_point.up||buff.ordered_elements.remains<=gcd.max*3&buff.storm_earth_and_fire.up\nactions.default_st+=/tiger_palm,cycle_targets=1,if=(energy>55&talent.inner_peace||energy>60&!talent.inner_peace)&combo_strike&chi.max-chi>=2&buff.teachings_of_the_monastery.stack<buff.teachings_of_the_monastery.max_stack&(talent.energy_burst&!buff.bok_proc.up||!talent.energy_burst)&!buff.ordered_elements.up||(talent.energy_burst&!buff.bok_proc.up||!talent.energy_burst)&!buff.ordered_elements.up&!cooldown.fists_of_fury.remains&chi<3||(prev.strike_of_the_windlord||cooldown.strike_of_the_windlord.remains)&cooldown.celestial_conduit.remains<2&buff.ordered_elements.up&chi<5&combo_strike||(!buff.heart_of_the_jade_serpent_cdr.up||!buff.heart_of_the_jade_serpent_cdr_celestial.up)&combo_strike&chi.deficit>=2&!buff.ordered_elements.up\nactions.default_st+=/touch_of_death\nactions.default_st+=/rising_sun_kick,cycle_targets=1,if=buff.invokers_delight.up&!buff.storm_earth_and_fire.up&talent.ordered_elements\nactions.default_st+=/celestial_conduit,if=buff.storm_earth_and_fire.up&(!talent.ordered_elements||buff.ordered_elements.up)&cooldown.strike_of_the_windlord.remains&(talent.xuens_bond||!talent.xuens_bond&buff.invokers_delight.up)||boss&fight_remains<15\nactions.default_st+=/rising_sun_kick,cycle_targets=1,if=!pet.xuen_the_white_tiger.active&prev.tiger_palm&time<5||buff.storm_earth_and_fire.up&talent.ordered_elements\nactions.default_st+=/strike_of_the_windlord,if=talent.gale_force&buff.invokers_delight.up&(buff.bloodlust.up||cooldown.celestial_conduit.remains&!buff.heart_of_the_jade_serpent_cdr_celestial.up)\nactions.default_st+=/rising_sun_kick,cycle_targets=1,if=buff.power_infusion.up&buff.bloodlust.up\nactions.default_st+=/fists_of_fury,cycle_targets=1,if=buff.power_infusion.up&buff.bloodlust.up\nactions.default_st+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack>3&buff.ordered_elements.up&cooldown.rising_sun_kick.remains>1&cooldown.fists_of_fury.remains>2\nactions.default_st+=/spinning_crane_kick,if=buff.dance_of_chiji.stack=2&combo_strike&buff.power_infusion.up&buff.bloodlust.up\nactions.default_st+=/whirling_dragon_punch,if=buff.power_infusion.up&buff.bloodlust.up\nactions.default_st+=/tiger_palm,cycle_targets=1,if=combo_strike&energy.time_to_max<=gcd.max*3&talent.flurry_strikes&buff.power_infusion.up&buff.bloodlust.up\nactions.default_st+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack>4&cooldown.rising_sun_kick.remains>1&cooldown.fists_of_fury.remains>2\nactions.default_st+=/whirling_dragon_punch,if=!buff.heart_of_the_jade_serpent_cdr_celestial.up&!buff.dance_of_chiji.stack=2||buff.ordered_elements.up||talent.knowledge_of_the_broken_temple\nactions.default_st+=/strike_of_the_windlord,if=time>5&(cooldown.invoke_xuen_the_white_tiger.remains>15||talent.flurry_strikes)\nactions.default_st+=/rising_sun_kick,cycle_targets=1,if=chi>4||chi>2&energy>50||cooldown.fists_of_fury.remains>2\nactions.default_st+=/tiger_palm,cycle_targets=1,if=combo_strike&energy.time_to_max<=gcd.max*3&talent.flurry_strikes&buff.wisdom_of_the_wall_flurry.up\nactions.default_st+=/tiger_palm,cycle_targets=1,if=combo_strike&chi.deficit>=2&energy.time_to_max<=gcd.max*3\nactions.default_st+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack>7&talent.memory_of_the_monastery&!buff.memory_of_the_monastery.up&cooldown.fists_of_fury.remains\nactions.default_st+=/fists_of_fury\nactions.default_st+=/spinning_crane_kick,if=(buff.dance_of_chiji.stack=2||buff.dance_of_chiji.remains<2&buff.dance_of_chiji.up)&combo_strike&!buff.ordered_elements.up\nactions.default_st+=/whirling_dragon_punch\nactions.default_st+=/blackout_kick,cycle_targets=1,if=buff.teachings_of_the_monastery.stack=4&!talent.knowledge_of_the_broken_temple&cooldown.rising_sun_kick.remains>1&cooldown.fists_of_fury.remains>2\nactions.default_st+=/spinning_crane_kick,if=buff.dance_of_chiji.stack=2&combo_strike\nactions.default_st+=/blackout_kick,cycle_targets=1,if=combo_strike&buff.ordered_elements.up&cooldown.rising_sun_kick.remains>1&cooldown.fists_of_fury.remains>2\nactions.default_st+=/tiger_palm,cycle_targets=1,if=combo_strike&energy.time_to_max<=gcd.max*3&talent.flurry_strikes\nactions.default_st+=/spinning_crane_kick,if=combo_strike&buff.dance_of_chiji.up&(buff.ordered_elements.up||energy.time_to_max>=gcd.max*3&talent.sequenced_strikes&talent.energy_burst||!talent.sequenced_strikes||!talent.energy_burst||buff.dance_of_chiji.remains<=gcd.max*3)\nactions.default_st+=/tiger_palm,cycle_targets=1,if=combo_strike&energy.time_to_max<=gcd.max*3&talent.flurry_strikes\nactions.default_st+=/jadefire_stomp,if=talent.singularly_focused_jade||talent.jadefire_harmony\nactions.default_st+=/chi_burst,if=!buff.ordered_elements.up\nactions.default_st+=/blackout_kick,cycle_targets=1,if=combo_strike&(buff.ordered_elements.up||buff.bok_proc.up&chi.deficit>=1&talent.energy_burst)&cooldown.fists_of_fury.remains\nactions.default_st+=/crackling_jade_lightning,if=buff.the_emperors_capacitor.stack>19&!buff.ordered_elements.up&combo_strike\nactions.default_st+=/blackout_kick,cycle_targets=1,if=combo_strike&cooldown.fists_of_fury.remains&(chi>2||energy>60||buff.bok_proc.up)\nactions.default_st+=/jadefire_stomp\nactions.default_st+=/tiger_palm,cycle_targets=1,if=combo_strike&buff.ordered_elements.up&chi.deficit>=1\nactions.default_st+=/chi_burst\nactions.default_st+=/spinning_crane_kick,if=combo_strike&buff.ordered_elements.up&talent.hit_combo\nactions.default_st+=/blackout_kick,cycle_targets=1,if=buff.ordered_elements.up&!talent.hit_combo&cooldown.fists_of_fury.remains\nactions.default_st+=/tiger_palm,if=prev.tiger_palm&chi<3&!cooldown.fists_of_fury.remains",
|
|
["author"] = "SimC",
|
|
},
|
|
["Shadow"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241102,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-11-02: Unfurling Darkness adjustments\n\n2024-10-29: SimC update\n\n2024-10-27: Work on VT/Shadow Crash\n\n2024-10-22: 11.0.5 update\n\n2024-10-21: SimC update\n\n2024-10-06: PI; Don't VT with Shadow Crash in flight (Whispering Shadows)\n\n2024-09-08, 10-06: SimC update\n\n2024-09-06: Modified to enable DP/VT with CDs toggled off\n\n2024-09-05: SimC update\n\n2024-08-22: Trinket update\n\n2024-08-11: Buff Power Word: Fortitude\n\n2024-08-01: Add SW:Death entry from sim update; another sim update\n\n2024-07-29: Tweak target swap logic\n\n2024-07-28: The War Within",
|
|
["lists"] = {
|
|
["filler"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Consume empowered fillers",
|
|
["strict"] = 1,
|
|
["criteria"] = "( buff.mind_spike_insanity.up || buff.mind_flay_insanity.up ) & dot.devouring_plague.remains > action.mind_spike.cast_time || ! talent.mind_spike.enabled",
|
|
["list_name"] = "empowered_filler",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Cast Vampiric Touch to proc Unfurling Darkness",
|
|
["criteria"] = "talent.unfurling_darkness.enabled & buff.unfurling_darkness_cd.remains < ( execute_time - 0.2 ) & talent.inner_quietus.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 20 || ( buff.deathspeaker.up || set_bonus.tier31_2pc ) & dot.devouring_plague.ticking",
|
|
["action"] = "shadow_word_death",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inescapable_torment.enabled & pet.fiend.active",
|
|
["action"] = "shadow_word_death",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.empowered_surges.enabled & buff.surge_of_insanity.up || buff.voidform.up & talent.void_eruption.enabled",
|
|
["action"] = "devouring_plague",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unfurling_darkness.enabled & buff.unfurling_darkness_cd.remains < ( execute_time - 0.2 )",
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets > 1",
|
|
["action"] = "halo",
|
|
["description"] = "Save up to 20s if adds are coming soon.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "buff.mind_spike_insanity.up || buff.mind_flay_insanity.up",
|
|
["list_name"] = "empowered_filler",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mind_spike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mind_flay",
|
|
["cycle_targets"] = 1,
|
|
["interrupt_if"] = "ticks>=2",
|
|
["interrupt_immediate"] = "1",
|
|
["chain"] = "1",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["action"] = "divine_star",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! set_bonus.tier31_4pc",
|
|
["action"] = "shadow_crash",
|
|
["description"] = "Use Shadow Crash while moving as a low-priority action when adds will not come in 20 seconds.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_word_death",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Use Shadow Word: Death while moving as a low-priority action in execute",
|
|
["criteria"] = "target.health.pct < 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Shadow Word: Death while moving as a low-priority action",
|
|
["action"] = "shadow_word_death",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_word_pain",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Use Shadow Word: Pain while moving as a low-priority action with T31 4pc",
|
|
["criteria"] = "set_bonus.tier31_4pc",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_word_pain",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Use Shadow Word: Pain while moving as a low-priority action without T31 4pc",
|
|
["criteria"] = "! set_bonus.tier31_4pc",
|
|
},
|
|
},
|
|
["aoe_variables"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "spell_targets.vampiric_touch >? 12",
|
|
["var_name"] = "max_vts",
|
|
["default"] = "12",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "is_vt_possible",
|
|
["default"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "is_vt_possible",
|
|
["criteria"] = "target.time_to_die >= 18 & dot.vampiric_touch.refreshable",
|
|
},
|
|
{
|
|
["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",
|
|
["var_name"] = "dots_up",
|
|
["description"] = "TODO: Revamp to fix undesired behaviour with unstacked fights",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( variable.max_vts - active_dot.vampiric_touch ) < 4",
|
|
["var_name"] = "holding_crash",
|
|
["criteria"] = "variable.holding_crash & talent.whispering_shadows.enabled & active_enemies > 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( active_dot.vampiric_touch + 8 * ! variable.holding_crash ) >= variable.max_vts || ! variable.is_vt_possible",
|
|
["var_name"] = "manual_vts_applied",
|
|
},
|
|
},
|
|
["empowered_filler"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mind_spike_insanity.up",
|
|
["action"] = "mind_spike_insanity",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mind_flay_insanity.up",
|
|
["action"] = "mind_flay",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "silence",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "false",
|
|
["var_name"] = "holding_crash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( cooldown.void_eruption.remains <= gcd.max * 3 & talent.void_eruption.enabled || cooldown.dark_ascension.up & talent.dark_ascension.enabled ) || talent.void_torrent.enabled & talent.psychic_link.enabled & cooldown.void_torrent.remains <= 4 & ! variable.holding_crash & ! buff.voidform.up",
|
|
["var_name"] = "pool_for_cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 2",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "main",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "power_word_fortitude",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.shadowform.up",
|
|
["action"] = "shadowform",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "dr_force_prio",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "me_force_prio",
|
|
["default"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "max_vts",
|
|
["default"] = "12",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "is_vt_possible",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "pooling_mindblasts",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & active_enemies <= 4 & ( fight_remains >= 120 || active_enemies <= 2 )",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.shadow_crash <= 8 & ( ! set_bonus.tier31_4pc || spell_targets.shadow_crash > 1 )",
|
|
["action"] = "shadow_crash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.whispering_shadows.enabled || ! action.shadow_crash.in_flight ) & ( ! talent.shadow_crash.enabled || spell_targets.shadow_crash > 8 || ! boss || set_bonus.tier31_4pc & spell_targets.shadow_crash = 1 )",
|
|
["action"] = "vampiric_touch",
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "spell_targets.vampiric_touch >? 12",
|
|
["var_name"] = "max_vts",
|
|
["default"] = "12",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "is_vt_possible",
|
|
["default"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "is_vt_possible",
|
|
["criteria"] = "target.time_to_die >= 18 & dot.vampiric_touch.refreshable",
|
|
},
|
|
{
|
|
["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",
|
|
["var_name"] = "dots_up",
|
|
["description"] = "TODO: Revamp to fix undesired behaviour with unstacked fights",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( variable.max_vts - active_dot.vampiric_touch ) < 4",
|
|
["var_name"] = "holding_crash",
|
|
["criteria"] = "variable.holding_crash & talent.whispering_shadows.enabled & active_enemies > 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( active_dot.vampiric_touch + 8 * ! variable.holding_crash ) >= variable.max_vts || ! variable.is_vt_possible",
|
|
["var_name"] = "manual_vts_applied",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
["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",
|
|
["criteria"] = "( buff.unfurling_darkness.up || buff.unfurling_darkness_cd.down || buff.unfurling_darkness_cd.remains > 2 * gcd.max ) & ( target.time_to_die >= 18 & ( dot.vampiric_touch.ticking || ! variable.dots_up ) ) & ( ( variable.max_vts > 0 & ! variable.manual_vts_applied & ! action.shadow_crash.in_flight || ! talent.whispering_shadows.enabled ) & ! buff.entropic_rift.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_crash",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Use Shadow Crash to apply Vampiric Touch to as many adds as possible while being efficient with Vampiric Touch refresh windows",
|
|
["criteria"] = "! variable.holding_crash & ( dot.vampiric_touch.refreshable || dot.vampiric_touch.remains <= target.time_to_die & ! buff.voidform.up )",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.voidform.up || buff.power_infusion.up || buff.dark_ascension.up & ( boss & fight_remains <= cooldown.power_infusion.remains + 15 ) ) & ( fight_remains >= 320 || buff.bloodlust.react ) || boss & fight_remains <= 30",
|
|
["action"] = "potion",
|
|
["description"] = "TODO: Check VE/DA enter conditions based on dots",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up || boss & fight_remains <= 8",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up || boss & fight_remains <= 12",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up || boss & fight_remains <= 15",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up || boss & fight_remains <= 15",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.voidform.up || buff.dark_ascension.up",
|
|
["action"] = "power_infusion",
|
|
["description"] = "Sync Power Infusion with Voidform or Dark Ascension",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.power_surge.enabled & ( pet.fiend.active & cooldown.fiend.remains >= 4 & talent.mindbender.enabled || ! talent.mindbender.enabled & ! cooldown.fiend.up || active_enemies > 2 & ! talent.inescapable_torment.enabled || ! talent.dark_ascension.enabled ) & ( cooldown.mind_blast.charges = 0 || ! talent.void_eruption.enabled || cooldown.void_eruption.remains >= gcd.max * 4 )",
|
|
["action"] = "halo",
|
|
["description"] = "Make sure Mindbender is active before popping Dark Ascension unless you have insignificant talent points or too many targets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( pet.fiend.active & cooldown.fiend.remains >= 4 || ! talent.mindbender.enabled & ! cooldown.fiend.up || active_enemies > 2 & ! talent.inescapable_torment.enabled ) & ( cooldown.mind_blast.charges = 0 || time > 15 )",
|
|
["action"] = "void_eruption",
|
|
["description"] = "Make sure Mindbender is active before popping Void Eruption and dump charges of Mind Blast before casting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( pet.fiend.active & cooldown.fiend.remains >= 4 || ! talent.mindbender.enabled & ! cooldown.fiend.up || active_enemies > 2 & ! talent.inescapable_torment.enabled ) & ( active_dot.devouring_plague >= 1 || insanity >= ( 15 + 5 * ! talent.minds_eye.enabled + 5 * talent.distorted_reality.enabled - pet.fiend.active * 6 ) )",
|
|
["action"] = "dark_ascension",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "health.pct <= 75",
|
|
["action"] = "desperate_prayer",
|
|
["description"] = "Use Desperate Prayer to heal up should Shadow Word: Death or other damage bring you below 75%",
|
|
},
|
|
},
|
|
["main"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_dot.vampiric_touch >= cycle_enemies || action.shadow_crash.in_flight & talent.whispering_shadows.enabled",
|
|
["var_name"] = "dots_up",
|
|
["criteria"] = "active_enemies < 3",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Are we pooling mindblasts? Currently only used for Voidweaver, [Hekili] modified to still allow us to build Insanity when CDs are toggled off.",
|
|
["var_name"] = "pooling_mindblasts",
|
|
["value"] = "1",
|
|
["action"] = "variable",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.void_blast.enabled & cooldown.void_torrent.remains <= gcd.max * ( 1 + talent.mind_melt.enabled ) & insanity > action.devouring_plague.cost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "boss & fight_remains < 30 || target.time_to_die > 15 & ( ! variable.holding_crash || active_enemies > 2 )",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "High priority action to consume Unfurling Darkness during the opener with Voidweaver",
|
|
["criteria"] = "buff.unfurling_darkness.up & talent.mind_melt.enabled & talent.void_blast.enabled & buff.mind_melt.stack < 2 & cooldown.mindbender.up & cooldown.dark_ascension.up & time <= 4",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.mind_melt.enabled & talent.void_blast.enabled & ( buff.mind_melt.stack < ( 1 * talent.distorted_reality.enabled + 1 - talent.unfurling_darkness.enabled - talent.minds_eye.enabled * 1 ) & talent.halo.enabled || ! talent.halo.enabled & buff.mind_melt.stack < 2 ) & cooldown.mindbender.up & cooldown.dark_ascension.up & time <= 4 & insanity <= 20",
|
|
["action"] = "mind_spike",
|
|
["description"] = "High priority action to Mind Spike to get to enough Insanity during the opener with Voidweaver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( dot.shadow_word_pain.ticking & variable.dots_up || action.shadow_crash.in_flight & talent.whispering_shadows.enabled ) & ( boss & fight_remains < 30 || target.time_to_die > 15 ) & ( ! talent.dark_ascension.enabled || cooldown.dark_ascension.remains < gcd.max || boss & fight_remains < 15 )",
|
|
["action"] = "mindbender",
|
|
["description"] = "Use Shadowfiend and Mindbender on cooldown as long as Vampiric Touch and Shadow Word: Pain are active and sync with Dark Ascension",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_word_death",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "High Priority Shadow Word: Death when you are forcing the bonus from Devour Matter",
|
|
["criteria"] = "priest.force_devour_matter & talent.devour_matter.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "void_blast",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Blast more burst :wicked:",
|
|
["criteria"] = "( dot.devouring_plague.remains >= execute_time || buff.entropic_rift.remains <= gcd.max || action.void_torrent.channeling & talent.void_empowerment.enabled ) & ( insanity.deficit >= 16 || cooldown.mind_blast.full_recharge_time <= gcd.max || buff.entropic_rift.remains <= gcd.max ) & ( ! talent.mind_devourer.enabled || ! buff.mind_devourer.up || buff.entropic_rift.remains <= gcd.max )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "devouring_plague",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Do not let Voidform Expire if you can avoid it.",
|
|
["criteria"] = "( dot.devouring_plague.remains <= gcd.max || variable.dr_force_prio || ! talent.distorted_reality.enabled & variable.me_force_prio ) & buff.voidform.up & talent.perfected_form.enabled & buff.voidform.remains <= gcd.max & talent.void_eruption.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["sec"] = "cooldown.mind_blast.recharge_time",
|
|
["action"] = "wait",
|
|
["criteria"] = "cooldown.mind_blast.recharge_time < buff.entropic_rift.remains & buff.entropic_rift.up & buff.entropic_rift.remains < gcd.max & cooldown.mind_blast.charges < 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mind_blast",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Complicated do not overcap mindblast and use it to protect against void bolt cd desync",
|
|
["criteria"] = "talent.void_eruption.enabled & buff.voidform.up & full_recharge_time <= gcd.max & ( ! talent.insidious_ire.enabled || dot.devouring_plague.remains >= execute_time ) & ( cooldown.void_bolt.remains / gcd.max - cooldown.void_bolt.remains % gcd.max ) * gcd.max <= 0.25 & ( cooldown.void_bolt.remains / gcd.max - cooldown.void_bolt.remains % gcd.max ) >= 0.01",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "void_bolt",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Use Voidbolt on the enemy with the largest time to die. We do no care about dots because Voidbolt is only accessible inside voidform which guarantees maximum effect",
|
|
["criteria"] = "insanity.deficit > 16 & cooldown.void_bolt.remains <= 0.1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "devouring_plague",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Do not overcap on insanity",
|
|
["criteria"] = "active_dot.devouring_plague <= 1 & dot.devouring_plague.remains <= gcd.max & ( ! talent.void_eruption.enabled || cooldown.void_eruption.remains >= gcd.max * 3 ) || insanity.deficit <= 16",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "void_torrent",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Cast Void Torrent at very high priority if Voidweaver",
|
|
["criteria"] = "( dot.devouring_plague.ticking || talent.void_eruption.enabled & cooldown.void_eruption.up ) & talent.entropic_rift.enabled & ! variable.holding_crash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_word_death",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Snipe SWDs with Depth of Shadows to spawn pets. Prefer targets with Devouring Plague on them.",
|
|
["criteria"] = "talent.depth_of_shadows.enabled & ( target.health.pct <= 20 || buff.deathspeaker.up & talent.deathspeaker.enabled ) & talent.inescapable_torment.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mind_blast",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Use Mind Blasts if using Inescapable Torment and you are capping charges or it will expire soon. Do not use if pooling Mindblast.",
|
|
["criteria"] = "( cooldown.mind_blast.full_recharge_time <= gcd.max + execute_time || pet.fiend.remains <= execute_time + gcd.max ) & pet.fiend.active & talent.inescapable_torment.enabled & pet.fiend.remains >= execute_time & active_enemies <= 7 & ( ! buff.mind_devourer.up || ! talent.mind_devourer.enabled ) & dot.devouring_plague.remains > execute_time & ! variable.pooling_mindblasts",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_word_death",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "High Priority Shadow Word: Death is Mindbender is expiring in less than a gcd plus wiggle room",
|
|
["criteria"] = "pet.fiend.remains <= ( gcd.max + 1 ) & pet.fiend.active & talent.inescapable_torment.enabled & active_enemies <= 7",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "void_bolt",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Use Voidbolt on the enemy with the largest time to die. Force a cooldown check here to make sure SimC doesn't wait too long (i.e. weird MF:I desync with GCD)",
|
|
["criteria"] = "cooldown.void_bolt.remains <= 0.1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Spend UFD as a high priority action",
|
|
["criteria"] = "buff.unfurling_darkness.up & active_dot.vampiric_touch <= 5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Do not overcap MSI or MFI during Empowered Surges (Archon).",
|
|
["strict"] = 1,
|
|
["criteria"] = "( buff.mind_spike_insanity.stack > 2 & talent.mind_spike.enabled || buff.mind_flay_insanity.stack > 2 & ! talent.mind_spike.enabled ) & talent.empowered_surges.enabled & ! cooldown.void_eruption.up",
|
|
["list_name"] = "empowered_filler",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains <= duration + 4",
|
|
["action"] = "devouring_plague",
|
|
["description"] = "Spend your Insanity on Devouring Plague at will if the fight will end in less than 10s",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "devouring_plague",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Use Devouring Plague to maximize uptime. Short circuit if you are capping on Insanity within 35 With Distorted Reality can maintain more than one at a time in multi-target.",
|
|
["criteria"] = "( dot.devouring_plague.remains <= gcd.max || variable.dr_force_prio || ! talent.distorted_reality.enabled & variable.me_force_prio ) & ( insanity.deficit <= 35 & talent.distorted_reality.enabled || buff.mind_devourer.up & cooldown.mind_blast.up & ( cooldown.void_eruption.remains >= 3 * gcd.max || ! talent.void_eruption.enabled ) & talent.mind_devourer.enabled || buff.entropic_rift.up || buff.voidform.up & talent.perfected_form.enabled & talent.void_eruption.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "void_torrent",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Use Void Torrent if it will get near full Mastery Value and you have Cthun and Void Eruption. Prune this action for Entropic Rift Builds.",
|
|
["criteria"] = "! variable.holding_crash & ! talent.entropic_rift.enabled & dot.devouring_plague.remains >= 2.5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_crash",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Use Shadow Crash as long as you are not holding for adds and Vampiric Touch is within pandemic range",
|
|
["criteria"] = "dot.vampiric_touch.refreshable & ! variable.holding_crash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Acquire UFD",
|
|
["criteria"] = "refreshable & buff.unfurling_darkness_cd.remains < ( execute_time - 0.2 ) & talent.unfurling_darkness.enabled & ! buff.dark_ascension.up & talent.inner_quietus.enabled & active_dot.vampiric_touch <= 5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Put out Vampiric Touch on enemies that will live at least 12s and Shadow Crash is not available soon",
|
|
["criteria"] = "refreshable & target.time_to_die > 12 & ( dot.vampiric_touch.ticking || ! variable.dots_up ) & ( variable.max_vts > 0 || active_enemies = 1 ) & ( cooldown.shadow_crash.remains >= dot.vampiric_touch.remains || variable.holding_crash || ! talent.whispering_shadows.enabled ) & ( ! action.shadow_crash.in_flight || ! talent.whispering_shadows.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_word_death",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Spend Deathspeaker Procs",
|
|
["criteria"] = "variable.dots_up & buff.deathspeaker.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mind_blast",
|
|
["cycle_targets"] = 1,
|
|
["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"] = "( ! buff.mind_devourer.up || ! talent.mind_devourer.enabled || cooldown.void_eruption.up & talent.void_eruption.enabled ) & ! variable.pooling_mindblasts",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "filler",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "aberrant_spellforge",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "gcd.remains > 0 & buff.aberrant_spellforge.stack <= 4",
|
|
["action"] = "aberrant_spellforge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "spymasters_web",
|
|
["action"] = "spymasters_web",
|
|
["criteria"] = "( buff.power_infusion.up & buff.spymasters_report.stack >= 40 & fight_remains > 240 ) || ( buff.power_infusion.up & buff.bloodlust.up & buff.spymasters_report.stack >= 10 ) || buff.power_infusion.up & ( fight_remains < 120 ) || ( fight_remains <= 20 || buff.dark_ascension.up & fight_remains <= 60 || buff.entropic_rift.up & talent.entropic_rift.enabled & fight_remains <= 30 ) & ! buff.spymasters_web.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.voidform.up || buff.power_infusion.up || buff.dark_ascension.up || ( cooldown.void_eruption.remains > 10 & trinket.cooldown.duration <= 60 ) ) || boss & fight_remains < 20",
|
|
["action"] = "use_items",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241102,
|
|
["warnings"] = "The import for 'filler' required some automated changes.\nLine 1: Converted 'talent.mind_spike' to 'talent.mind_spike.enabled' (1x).\nLine 2: Converted 'talent.unfurling_darkness' to 'talent.unfurling_darkness.enabled' (1x).\nLine 2: Converted 'talent.inner_quietus' to 'talent.inner_quietus.enabled' (1x).\nLine 4: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 5: Converted 'talent.empowered_surges' to 'talent.empowered_surges.enabled' (1x).\nLine 5: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 6: Converted 'talent.unfurling_darkness' to 'talent.unfurling_darkness.enabled' (1x).\n\nThe import for 'aoe_variables' required some automated changes.\nLine 4: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 5: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\n\nThe import for 'main' required some automated changes.\nLine 1: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 2: Converted 'talent.void_blast' to 'talent.void_blast.enabled' (1x).\nLine 2: Converted 'talent.mind_melt' to 'talent.mind_melt.enabled' (1x).\nLine 4: Converted 'talent.mind_melt' to 'talent.mind_melt.enabled' (1x).\nLine 4: Converted 'talent.void_blast' to 'talent.void_blast.enabled' (1x).\nLine 5: Converted 'talent.mind_melt' to 'talent.mind_melt.enabled' (1x).\nLine 5: Converted 'talent.void_blast' to 'talent.void_blast.enabled' (1x).\nLine 5: Converted 'talent.distorted_reality' to 'talent.distorted_reality.enabled' (1x).\nLine 5: Converted 'talent.unfurling_darkness' to 'talent.unfurling_darkness.enabled' (1x).\nLine 5: Converted 'talent.minds_eye' to 'talent.minds_eye.enabled' (1x).\nLine 5: Converted 'talent.halo' to 'talent.halo.enabled' (1x).\nLine 5: Converted 'talent.halo' to 'talent.halo.enabled' (1x).\nLine 6: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 6: Converted 'talent.dark_ascension' to 'talent.dark_ascension.enabled' (1x).\nLine 7: Converted 'talent.devour_matter' to 'talent.devour_matter.enabled' (1x).\nLine 8: Converted 'talent.void_empowerment' to 'talent.void_empowerment.enabled' (1x).\nLine 8: Converted 'talent.mind_devourer' to 'talent.mind_devourer.enabled' (1x).\nLine 9: Converted 'talent.distorted_reality' to 'talent.distorted_reality.enabled' (1x).\nLine 9: Converted 'talent.perfected_form' to 'talent.perfected_form.enabled' (1x).\nLine 9: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 11: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 11: Converted 'talent.insidious_ire' to 'talent.insidious_ire.enabled' (1x).\nLine 11: Converted operations in 'talent.void_eruption.enabled&buff.voidform.up&full_recharge_time<=gcd.max&(!talent.insidious_ire.enabled||dot.devouring_plague.remains>=execute_time)&(cooldown.void_bolt.remains%gcd.max-cooldown.void_bolt.remains%%gcd.max)*gcd.max<=0.25&(cooldown.void_bolt.remains%gcd.max-cooldown.void_bolt.remains%%gcd.max)>=0.01' to 'talent.void_eruption.enabled&buff.voidform.up&full_recharge_time<=gcd.max&(!talent.insidious_ire.enabled||dot.devouring_plague.remains>=execute_time)&(cooldown.void_bolt.remains/gcd.max-cooldown.void_bolt.remains%gcd.max)*gcd.max<=0.25&(cooldown.void_bolt.remains/gcd.max-cooldown.void_bolt.remains%gcd.max)>=0.01'.\nLine 13: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 14: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 14: Converted 'talent.entropic_rift' to 'talent.entropic_rift.enabled' (1x).\nLine 15: Converted 'talent.depth_of_shadows' to 'talent.depth_of_shadows.enabled' (1x).\nLine 15: Converted 'talent.deathspeaker' to 'talent.deathspeaker.enabled' (1x).\nLine 15: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 16: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 16: Converted 'talent.mind_devourer' to 'talent.mind_devourer.enabled' (1x).\nLine 17: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 20: Converted 'talent.mind_spike' to 'talent.mind_spike.enabled' (1x).\nLine 20: Converted 'talent.mind_spike' to 'talent.mind_spike.enabled' (1x).\nLine 20: Converted 'talent.empowered_surges' to 'talent.empowered_surges.enabled' (1x).\nLine 22: Converted 'talent.distorted_reality' to 'talent.distorted_reality.enabled' (1x).\nLine 22: Converted 'talent.distorted_reality' to 'talent.distorted_reality.enabled' (1x).\nLine 22: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 22: Converted 'talent.mind_devourer' to 'talent.mind_devourer.enabled' (1x).\nLine 22: Converted 'talent.perfected_form' to 'talent.perfected_form.enabled' (1x).\nLine 22: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 23: Converted 'talent.entropic_rift' to 'talent.entropic_rift.enabled' (1x).\nLine 25: Converted 'talent.unfurling_darkness' to 'talent.unfurling_darkness.enabled' (1x).\nLine 25: Converted 'talent.inner_quietus' to 'talent.inner_quietus.enabled' (1x).\nLine 26: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 26: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 28: Converted 'talent.mind_devourer' to 'talent.mind_devourer.enabled' (1x).\nLine 28: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 11: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 4: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 5: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 7: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\n\nThe import for 'cds' required some automated changes.\nLine 7: Converted 'talent.power_surge' to 'talent.power_surge.enabled' (1x).\nLine 7: Converted 'talent.mindbender' to 'talent.mindbender.enabled' (1x).\nLine 7: Converted 'talent.mindbender' to 'talent.mindbender.enabled' (1x).\nLine 7: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 7: Converted 'talent.dark_ascension' to 'talent.dark_ascension.enabled' (1x).\nLine 7: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 8: Converted 'talent.mindbender' to 'talent.mindbender.enabled' (1x).\nLine 8: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 9: Converted 'talent.mindbender' to 'talent.mindbender.enabled' (1x).\nLine 9: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 9: Converted 'talent.minds_eye' to 'talent.minds_eye.enabled' (1x).\nLine 9: Converted 'talent.distorted_reality' to 'talent.distorted_reality.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 2: Converted 'talent.entropic_rift' to 'talent.entropic_rift.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 3: Converted 'talent.dark_ascension' to 'talent.dark_ascension.enabled' (1x).\nLine 3: Converted 'talent.void_torrent' to 'talent.void_torrent.enabled' (1x).\nLine 3: Converted 'talent.psychic_link' to 'talent.psychic_link.enabled' (1x).\n\nImported 9 action lists.\n",
|
|
["spec"] = 258,
|
|
["profile"] = "actions.precombat+=/power_word_fortitude\nactions.precombat+=/shadowform,if=!buff.shadowform.up\nactions.precombat+=/variable,name=dr_force_prio,default=0,op=reset\nactions.precombat+=/variable,name=me_force_prio,default=1,op=reset\nactions.precombat+=/variable,name=max_vts,default=12,op=reset\nactions.precombat+=/variable,name=is_vt_possible,default=0,op=reset\nactions.precombat+=/variable,name=pooling_mindblasts,default=0,op=reset\nactions.precombat+=/arcane_torrent\n## actions.precombat+=/use_item,name=aberrant_spellforge\nactions.precombat+=/halo,if=boss&active_enemies<=4&(fight_remains>=120||active_enemies<=2)\nactions.precombat+=/shadow_crash,if=spell_targets.shadow_crash<=8&(!set_bonus.tier31_4pc||spell_targets.shadow_crash>1)\nactions.precombat+=/vampiric_touch,if=(!talent.whispering_shadows||!action.shadow_crash.in_flight)&(!talent.shadow_crash.enabled||spell_targets.shadow_crash>8||!boss||set_bonus.tier31_4pc&spell_targets.shadow_crash=1)\n\nactions+=/silence\nactions+=/variable,name=holding_crash,op=set,value=false\nactions+=/variable,name=pool_for_cds,op=set,value=(cooldown.void_eruption.remains<=gcd.max*3&talent.void_eruption||cooldown.dark_ascension.up&talent.dark_ascension)||talent.void_torrent&talent.psychic_link&cooldown.void_torrent.remains<=4&!variable.holding_crash&!buff.voidform.up\nactions+=/call_action_list,name=aoe,strict=1,if=active_enemies>2\nactions+=/run_action_list,name=main\n\nactions.aoe+=/variable,name=max_vts,op=set,default=12,value=spell_targets.vampiric_touch>?12\nactions.aoe+=/variable,name=is_vt_possible,op=set,value=0,default=1\nactions.aoe+=/variable,name=is_vt_possible,op=set,value=1,if=target.time_to_die>=18&dot.vampiric_touch.refreshable\n# TODO: Revamp to fix undesired behaviour with unstacked fights\nactions.aoe+=/variable,name=dots_up,op=set,value=(active_dot.vampiric_touch+8*(action.shadow_crash.in_flight&talent.whispering_shadows))>=variable.max_vts||!variable.is_vt_possible\nactions.aoe+=/variable,name=holding_crash,op=set,value=(variable.max_vts-active_dot.vampiric_touch)<4,if=variable.holding_crash&talent.whispering_shadows&active_enemies>1\nactions.aoe+=/variable,name=manual_vts_applied,op=set,value=(active_dot.vampiric_touch+8*!variable.holding_crash)>=variable.max_vts||!variable.is_vt_possible\n# High Priority action to put out Vampiric Touch on enemies that will live at least 18 seconds, up to 12 targets manually while prepping AoE\nactions.aoe+=/vampiric_touch,cycle_targets=1,if=(buff.unfurling_darkness.up||buff.unfurling_darkness_cd.down||buff.unfurling_darkness_cd.remains>2*gcd)&(target.time_to_die>=18&(dot.vampiric_touch.ticking||!variable.dots_up))&((variable.max_vts>0&!variable.manual_vts_applied&!action.shadow_crash.in_flight||!talent.whispering_shadows)&!buff.entropic_rift.up)\n# Use Shadow Crash to apply Vampiric Touch to as many adds as possible while being efficient with Vampiric Touch refresh windows\nactions.aoe+=/shadow_crash,cycle_targets=1,if=!variable.holding_crash&(dot.vampiric_touch.refreshable||dot.vampiric_touch.remains<=target.time_to_die&!buff.voidform.up)\n\nactions.main+=/variable,name=dots_up,op=set,value=active_dot.vampiric_touch>=cycle_enemies||action.shadow_crash.in_flight&talent.whispering_shadows,if=active_enemies<3\n# Are we pooling mindblasts? Currently only used for Voidweaver; [Hekili] modified to still allow us to build Insanity when CDs are toggled off.\nactions.main+=/variable,name=pooling_mindblasts,op=setif,value=1,value_else=0,condition=talent.void_blast&cooldown.void_torrent.remains<=gcd.max*(1+talent.mind_melt)&insanity>action.devouring_plague.cost\nactions.main+=/call_action_list,name=cds,if=boss&fight_remains<30||target.time_to_die>15&(!variable.holding_crash||active_enemies>2)\n# High priority action to consume Unfurling Darkness during the opener with Voidweaver\nactions.main+=/vampiric_touch,cycle_targets=1,if=buff.unfurling_darkness.up&talent.mind_melt&talent.void_blast&buff.mind_melt.stack<2&cooldown.mindbender.up&cooldown.dark_ascension.up&time<=4\n# High priority action to Mind Spike to get to enough Insanity during the opener with Voidweaver\nactions.main+=/mind_spike,if=talent.mind_melt&talent.void_blast&(buff.mind_melt.stack<(1*talent.distorted_reality+1-talent.unfurling_darkness-talent.minds_eye*1)&talent.halo||!talent.halo&buff.mind_melt.stack<2)&cooldown.mindbender.up&cooldown.dark_ascension.up&time<=4&insanity<=20\n# Use Shadowfiend and Mindbender on cooldown as long as Vampiric Touch and Shadow Word: Pain are active and sync with Dark Ascension\nactions.main+=/mindbender,if=(dot.shadow_word_pain.ticking&variable.dots_up||action.shadow_crash.in_flight&talent.whispering_shadows)&(boss&fight_remains<30||target.time_to_die>15)&(!talent.dark_ascension||cooldown.dark_ascension.remains<gcd.max||boss&fight_remains<15)\n# High Priority Shadow Word: Death when you are forcing the bonus from Devour Matter\nactions.main+=/shadow_word_death,cycle_targets=1,if=priest.force_devour_matter&talent.devour_matter\n# Blast more burst :wicked:\nactions.main+=/void_blast,cycle_targets=1,if=(dot.devouring_plague.remains>=execute_time||buff.entropic_rift.remains<=gcd.max||action.void_torrent.channeling&talent.void_empowerment)&(insanity.deficit>=16||cooldown.mind_blast.full_recharge_time<=gcd.max||buff.entropic_rift.remains<=gcd.max)&(!talent.mind_devourer||!buff.mind_devourer.up||buff.entropic_rift.remains<=gcd.max)\n# Do not let Voidform Expire if you can avoid it.\nactions.main+=/devouring_plague,cycle_targets=1,if=(dot.devouring_plague.remains<=gcd.max||variable.dr_force_prio||!talent.distorted_reality&variable.me_force_prio)&buff.voidform.up&talent.perfected_form&buff.voidform.remains<=gcd.max&talent.void_eruption\nactions.main+=/wait,sec=cooldown.mind_blast.recharge_time,if=cooldown.mind_blast.recharge_time<buff.entropic_rift.remains&buff.entropic_rift.up&buff.entropic_rift.remains<gcd.max&cooldown.mind_blast.charges<1\n# Complicated do not overcap mindblast and use it to protect against void bolt cd desync\nactions.main+=/mind_blast,cycle_targets=1,if=talent.void_eruption&buff.voidform.up&full_recharge_time<=gcd.max&(!talent.insidious_ire||dot.devouring_plague.remains>=execute_time)&(cooldown.void_bolt.remains%gcd.max-cooldown.void_bolt.remains%%gcd.max)*gcd.max<=0.25&(cooldown.void_bolt.remains%gcd.max-cooldown.void_bolt.remains%%gcd.max)>=0.01\n# Use Voidbolt on the enemy with the largest time to die. We do no care about dots because Voidbolt is only accessible inside voidform which guarantees maximum effect\nactions.main+=/void_bolt,cycle_targets=1,if=insanity.deficit>16&cooldown.void_bolt.remains<=0.1\n# Do not overcap on insanity\nactions.main+=/devouring_plague,cycle_targets=1,if=active_dot.devouring_plague<=1&dot.devouring_plague.remains<=gcd.max&(!talent.void_eruption||cooldown.void_eruption.remains>=gcd.max*3)||insanity.deficit<=16\n# Cast Void Torrent at very high priority if Voidweaver\nactions.main+=/void_torrent,cycle_targets=1,if=(dot.devouring_plague.ticking||talent.void_eruption&cooldown.void_eruption.up)&talent.entropic_rift&!variable.holding_crash\n# Snipe SWDs with Depth of Shadows to spawn pets. Prefer targets with Devouring Plague on them.\nactions.main+=/shadow_word_death,cycle_targets=1,if=talent.depth_of_shadows&(target.health.pct<=20||buff.deathspeaker.up&talent.deathspeaker)&talent.inescapable_torment\n# Use Mind Blasts if using Inescapable Torment and you are capping charges or it will expire soon. Do not use if pooling Mindblast.\nactions.main+=/mind_blast,cycle_targets=1,if=(cooldown.mind_blast.full_recharge_time<=gcd.max+execute_time||pet.fiend.remains<=execute_time+gcd.max)&pet.fiend.active&talent.inescapable_torment&pet.fiend.remains>=execute_time&active_enemies<=7&(!buff.mind_devourer.up||!talent.mind_devourer)&dot.devouring_plague.remains>execute_time&!variable.pooling_mindblasts\n# High Priority Shadow Word: Death is Mindbender is expiring in less than a gcd plus wiggle room\nactions.main+=/shadow_word_death,cycle_targets=1,if=pet.fiend.remains<=(gcd.max+1)&pet.fiend.active&talent.inescapable_torment&active_enemies<=7\n# Use Voidbolt on the enemy with the largest time to die. Force a cooldown check here to make sure SimC doesn't wait too long (i.e. weird MF:I desync with GCD)\nactions.main+=/void_bolt,cycle_targets=1,if=cooldown.void_bolt.remains<=0.1\n# Spend UFD as a high priority action\nactions.main+=/vampiric_touch,cycle_targets=1,if=buff.unfurling_darkness.up&active_dot.vampiric_touch<=5\n# Do not overcap MSI or MFI during Empowered Surges (Archon).\nactions.main+=/call_action_list,name=empowered_filler,strict=1,if=(buff.mind_spike_insanity.stack>2&talent.mind_spike||buff.mind_flay_insanity.stack>2&!talent.mind_spike)&talent.empowered_surges&!cooldown.void_eruption.up\n### Hyper cringe optimisations that fish for TOF using heals. Set priest.twist_of_fate_heal_rppm=<rppm> to make this be used.\n## actions.main+=/call_action_list,name=heal_for_tof,if=!buff.twist_of_fate.up&buff.twist_of_fate_can_trigger_on_ally_heal.up&(talent.rhapsody||talent.divine_star||talent.halo)\n# Spend your Insanity on Devouring Plague at will if the fight will end in less than 10s\nactions.main+=/devouring_plague,if=boss&fight_remains<=duration+4\n# Use Devouring Plague to maximize uptime. Short circuit if you are capping on Insanity within 35 With Distorted Reality can maintain more than one at a time in multi-target.\nactions.main+=/devouring_plague,cycle_targets=1,if=(dot.devouring_plague.remains<=gcd.max||variable.dr_force_prio||!talent.distorted_reality&variable.me_force_prio)&(insanity.deficit<=35&talent.distorted_reality||buff.mind_devourer.up&cooldown.mind_blast.up&(cooldown.void_eruption.remains>=3*gcd.max||!talent.void_eruption)&talent.mind_devourer||buff.entropic_rift.up||buff.voidform.up&talent.perfected_form&talent.void_eruption)\n# Use Void Torrent if it will get near full Mastery Value and you have Cthun and Void Eruption. Prune this action for Entropic Rift Builds.\nactions.main+=/void_torrent,cycle_targets=1,if=!variable.holding_crash&!talent.entropic_rift&dot.devouring_plague.remains>=2.5\n# Use Shadow Crash as long as you are not holding for adds and Vampiric Touch is within pandemic range\nactions.main+=/shadow_crash,cycle_targets=1,if=dot.vampiric_touch.refreshable&!variable.holding_crash\n# Acquire UFD\nactions.main+=/vampiric_touch,cycle_targets=1,if=refreshable&buff.unfurling_darkness_cd.remains<(execute_time-0.2)&talent.unfurling_darkness&!buff.dark_ascension.up&talent.inner_quietus&active_dot.vampiric_touch<=5\n# Put out Vampiric Touch on enemies that will live at least 12s and Shadow Crash is not available soon\nactions.main+=/vampiric_touch,cycle_targets=1,if=refreshable&target.time_to_die>12&(dot.vampiric_touch.ticking||!variable.dots_up)&(variable.max_vts>0||active_enemies=1)&(cooldown.shadow_crash.remains>=dot.vampiric_touch.remains||variable.holding_crash||!talent.whispering_shadows)&(!action.shadow_crash.in_flight||!talent.whispering_shadows)\n# Spend Deathspeaker Procs\nactions.main+=/shadow_word_death,cycle_targets=1,if=variable.dots_up&buff.deathspeaker.up\n# Use all charges of Mind Blast if Vampiric Touch and Shadow Word: Pain are active and Mind Devourer is not active or you are prepping Void Eruption\nactions.main+=/mind_blast,cycle_targets=1,if=(!buff.mind_devourer.up||!talent.mind_devourer||cooldown.void_eruption.up&talent.void_eruption)&!variable.pooling_mindblasts\nactions.main+=/call_action_list,name=filler\n\nactions.aoe_variables+=/variable,name=max_vts,op=set,default=12,value=spell_targets.vampiric_touch>?12\nactions.aoe_variables+=/variable,name=is_vt_possible,op=set,value=0,default=1\nactions.aoe_variables+=/variable,name=is_vt_possible,op=set,value=1,if=target.time_to_die>=18&dot.vampiric_touch.refreshable\n# TODO: Revamp to fix undesired behaviour with unstacked fights\nactions.aoe_variables+=/variable,name=dots_up,op=set,value=(active_dot.vampiric_touch+8*(action.shadow_crash.in_flight&talent.whispering_shadows))>=variable.max_vts||!variable.is_vt_possible\nactions.aoe_variables+=/variable,name=holding_crash,op=set,value=(variable.max_vts-active_dot.vampiric_touch)<4,if=variable.holding_crash&talent.whispering_shadows&active_enemies>1\nactions.aoe_variables+=/variable,name=manual_vts_applied,op=set,value=(active_dot.vampiric_touch+8*!variable.holding_crash)>=variable.max_vts||!variable.is_vt_possible\n\n# TODO: Check VE/DA enter conditions based on dots\nactions.cds+=/potion,if=(buff.voidform.up||buff.power_infusion.up||buff.dark_ascension.up&(boss&fight_remains<=cooldown.power_infusion.remains+15))&(fight_remains>=320||buff.bloodlust.react)||boss&fight_remains<=30\nactions.cds+=/fireblood,if=buff.power_infusion.up||boss&fight_remains<=8\nactions.cds+=/berserking,if=buff.power_infusion.up||boss&fight_remains<=12\nactions.cds+=/blood_fury,if=buff.power_infusion.up||boss&fight_remains<=15\nactions.cds+=/ancestral_call,if=buff.power_infusion.up||boss&fight_remains<=15\n# Sync Power Infusion with Voidform or Dark Ascension\nactions.cds+=/power_infusion,if=buff.voidform.up||buff.dark_ascension.up\n## Use <a href='https://www.wowhead.com/spell=10060/power-infusion'>Power Infusion</a> while <a href='https://www.wowhead.com/spell=194249/voidform'>Voidform</a> or <a href='https://www.wowhead.com/spell=391109/dark-ascension'>Dark Ascension</a> is active. Chain directly after your own <a href='https://www.wowhead.com/spell=10060/power-infusion'>Power Infusion</a>.\n## actions.cds+=/invoke_external_buff,name=power_infusion,if=(buff.voidform.up||buff.dark_ascension.up)&!buff.power_infusion.up\n## actions.cds+=/invoke_external_buff,name=bloodlust,if=buff.power_infusion.up&fight_remains<120||fight_remains<=40\n# Make sure Mindbender is active before popping Dark Ascension unless you have insignificant talent points or too many targets\nactions.cds+=/halo,if=talent.power_surge&(pet.fiend.active&cooldown.fiend.remains>=4&talent.mindbender||!talent.mindbender&!cooldown.fiend.up||active_enemies>2&!talent.inescapable_torment||!talent.dark_ascension)&(cooldown.mind_blast.charges=0||!talent.void_eruption||cooldown.void_eruption.remains>=gcd.max*4)\n# Make sure Mindbender is active before popping Void Eruption and dump charges of Mind Blast before casting\nactions.cds+=/void_eruption,if=(pet.fiend.active&cooldown.fiend.remains>=4||!talent.mindbender&!cooldown.fiend.up||active_enemies>2&!talent.inescapable_torment)&(cooldown.mind_blast.charges=0||time>15)\nactions.cds+=/dark_ascension,if=(pet.fiend.active&cooldown.fiend.remains>=4||!talent.mindbender&!cooldown.fiend.up||active_enemies>2&!talent.inescapable_torment)&(active_dot.devouring_plague>=1||insanity>=(15+5*!talent.minds_eye+5*talent.distorted_reality-pet.fiend.active*6))\nactions.cds+=/call_action_list,name=trinkets\n# Use Desperate Prayer to heal up should Shadow Word: Death or other damage bring you below 75%\nactions.cds+=/desperate_prayer,if=health.pct<=75\n\n### Healing spell action list for proccing Twist of Fate\n## actions.filler+=/call_action_list,name=heal_for_tof,if=!buff.twist_of_fate.up&buff.twist_of_fate_can_trigger_on_ally_heal.up&(talent.rhapsody||talent.divine_star||talent.halo)\n## Use PWS with CR talented to trigger TOF if there are no better alternatives available to do this as we still get insanity for a PWS cast.\n## actions.filler+=/power_word_shield,if=!buff.twist_of_fate.up&buff.twist_of_fate_can_trigger_on_ally_heal.up&talent.crystalline_reflection\n# Consume empowered fillers\nactions.filler+=/call_action_list,name=empowered_filler,strict=1,if=(buff.mind_spike_insanity.up||buff.mind_flay_insanity.up)&dot.devouring_plague.remains>action.mind_spike.cast_time||!talent.mind_spike\n# Cast Vampiric Touch to proc Unfurling Darkness\nactions.filler+=/vampiric_touch,cycle_targets=1,if=talent.unfurling_darkness&buff.unfurling_darkness_cd.remains<(execute_time-0.2)&talent.inner_quietus\nactions.filler+=/shadow_word_death,cycle_targets=1,if=target.health.pct<20||(buff.deathspeaker.up||set_bonus.tier31_2pc)&dot.devouring_plague.ticking\nactions.filler+=/shadow_word_death,cycle_targets=1,if=talent.inescapable_torment&pet.fiend.active\nactions.filler+=/devouring_plague,if=talent.empowered_surges&buff.surge_of_insanity.up||buff.voidform.up&talent.void_eruption\nactions.filler+=/vampiric_touch,cycle_targets=1,if=talent.unfurling_darkness&buff.unfurling_darkness_cd.remains<(execute_time-0.2)\n# Save up to 20s if adds are coming soon.\nactions.filler+=/halo,if=spell_targets>1\n## Using a heal with no damage kickbacks for TOF is damage neutral, so we will do it.\n## actions.filler+=/power_word_life,if=!buff.twist_of_fate.up&buff.twist_of_fate_can_trigger_on_ally_heal.up\nactions.filler+=/call_action_list,name=empowered_filler,strict=1,if=buff.mind_spike_insanity.up||buff.mind_flay_insanity.up\n## actions.filler+=/call_action_list,name=heal_for_tof,if=equipped.rashoks_molten_heart&(active_allies-(10-buff.molten_radiance.value))>=10&buff.molten_radiance.up,line_cd=5\nactions.filler+=/mind_spike,cycle_targets=1\nactions.filler+=/mind_flay,cycle_targets=1,chain=1,interrupt_immediate=1,interrupt_if=ticks>=2,interrupt_global=1\nactions.filler+=/divine_star\n# Use Shadow Crash while moving as a low-priority action when adds will not come in 20 seconds.\nactions.filler+=/shadow_crash,if=!set_bonus.tier31_4pc\n# Use Shadow Word: Death while moving as a low-priority action in execute\nactions.filler+=/shadow_word_death,cycle_targets=1,if=target.health.pct<20\n# Use Shadow Word: Death while moving as a low-priority action\nactions.filler+=/shadow_word_death,cycle_targets=1\n# Use Shadow Word: Pain while moving as a low-priority action with T31 4pc\nactions.filler+=/shadow_word_pain,cycle_targets=1,if=set_bonus.tier31_4pc\n# Use Shadow Word: Pain while moving as a low-priority action without T31 4pc\nactions.filler+=/shadow_word_pain,cycle_targets=1,if=!set_bonus.tier31_4pc\n\nactions.empowered_filler+=/mind_spike_insanity,cycle_targets=1,if=buff.mind_spike_insanity.up\nactions.empowered_filler+=/mind_flay_insanity,cycle_targets=1,if=buff.mind_flay_insanity.up\n\n## Use Halo to acquire Twist of Fate if an ally can be healed for it and it is not currently up.\n## actions.heal_for_tof+=/halo\n## Use Divine Star to acquire Twist of Fate if an ally can be healed for it and it is not currently up.\n## actions.heal_for_tof+=/divine_star\n## Use Holy Nova when Rhapsody is fully stacked to acquire Twist of Fate if an ally can be healed for it and it is not currently up.\n## actions.heal_for_tof+=/holy_nova,if=buff.rhapsody.stack=20&talent.rhapsody\n\nactions.trinkets+=/use_item,use_off_gcd=1,name=aberrant_spellforge,if=gcd.remains>0&buff.aberrant_spellforge.stack<=4\nactions.trinkets+=/use_item,name=spymasters_web,if=(buff.power_infusion.up&buff.spymasters_report.stack>=40&fight_remains>240)||(buff.power_infusion.up&buff.bloodlust.up&buff.spymasters_report.stack>=10)||buff.power_infusion.up&(fight_remains<120)||(fight_remains<=20||buff.dark_ascension.up&fight_remains<=60||buff.entropic_rift.up&talent.entropic_rift&fight_remains<=30)&!buff.spymasters_web.up\nactions.trinkets+=/use_items,if=(buff.voidform.up||buff.power_infusion.up||buff.dark_ascension.up||(cooldown.void_eruption.remains>10&trinket.cooldown.duration<=60))||boss&fight_remains<20",
|
|
},
|
|
["Unholy"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241109,
|
|
["spec"] = 252,
|
|
["desc"] = "2024-11-09: Revise variables\n\n2024-11-05: SimC update (Death Coil)\n\n2024-10-23, 10-25: SimC update\n\n2024-10-22: 11.0.5\n\n2024-10-11: SimC update; Festering Scythe update\n\n2024-10-06: Use UA more in AOE\n\n2024-10-01: SimC update\n\n2024-08-28, 09-05, 09-15: SimC update\n\n2024-08-07, 09, 11: Updated priority from SimC\n\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["san_fishing"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "antimagic_shell",
|
|
["description"] = "San'layn Fishing",
|
|
["criteria"] = "death_knight.ams_absorb_percent > 0 & runic_power < 40",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.death_and_decay.up & ! buff.vampiric_strike.up",
|
|
["action"] = "any_dnd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_doom.up & talent.doomed_bidding.enabled",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct <= 35 & fight_remains > 5",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.vampiric_strike.up",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( debuff.festering_wound.stack >= 3 - pet.abomination.active & cooldown.apocalypse.remains > variable.apoc_timing ) || buff.vampiric_strike.up",
|
|
["action"] = "wound_spender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.festering_wound.stack < 3 - pet.abomination.active",
|
|
["action"] = "festering_strike",
|
|
},
|
|
},
|
|
["aoe_setup"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "festering_strike",
|
|
["description"] = "AoE Setup",
|
|
["criteria"] = "buff.festering_scythe.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! death_and_decay.ticking & ( ! talent.bursting_sores.enabled & ! talent.vile_contagion.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 || ! buff.death_and_decay.up & talent.defile.enabled )",
|
|
["action"] = "any_dnd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.chains_of_ice_trollbane_slow.up",
|
|
["action"] = "wound_spender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.vile_contagion.enabled",
|
|
["action"] = "festering_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.vile_contagion.remains < 5 || death_knight.fwounded_targets >= cycle_enemies & debuff.festering_wound.stack <= 4",
|
|
["action"] = "festering_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & buff.sudden_doom.react & active_enemies < variable.epidemic_targets",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & buff.sudden_doom.up",
|
|
["action"] = "epidemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.apocalypse.remains < gcd.max & debuff.festering_wound.stack = 0 || death_knight.fwounded_targets < cycle_enemies",
|
|
["action"] = "festering_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & active_enemies < variable.epidemic_targets",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power",
|
|
["action"] = "epidemic",
|
|
},
|
|
},
|
|
["cds_aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ( cooldown.vile_contagion.remains < 3 || cooldown.vile_contagion.remains > 40 || ! talent.vile_contagion.enabled )",
|
|
["action"] = "unholy_assault",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.festering_wound.stack >= 4 & ( raid_event.adds.remains > 4 || ! raid_event.adds.exists & fight_remains > 4 ) & ( raid_event.adds.exists & raid_event.adds.remains <= 11 || cooldown.any_dnd.remains < 3 || buff.death_and_decay.up & debuff.festering_wound.stack >= 4 ) || active_enemies > 1 & debuff.festering_wound.stack = 6",
|
|
["action"] = "vile_contagion",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ( cooldown.vile_contagion.remains > 5 || ! talent.vile_contagion.enabled || death_and_decay.ticking || cooldown.death_and_decay.remains < 3 )",
|
|
["action"] = "dark_transformation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.virulent_plague.ticks_remain < 5 & ( dot.virulent_plague.refreshable || talent.morbidity.enabled & ! buff.gift_of_the_sanlayn.up & talent.superstrain.enabled & dot.frost_fever.refreshable & dot.blood_plague.refreshable ) & ( ! talent.unholy_blight.enabled || talent.unholy_blight.enabled & cooldown.dark_transformation.remains ) & ( ! talent.raise_abomination.enabled || talent.raise_abomination.enabled & cooldown.raise_abomination.remains )",
|
|
["action"] = "outbreak",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & rune <= 3",
|
|
["action"] = "apocalypse",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
},
|
|
["cds_aoe_san"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "dark_transformation",
|
|
["description"] = "San'layn AoE Cooldowns",
|
|
["criteria"] = "active_enemies > 1 & buff.death_and_decay.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ( cooldown.vile_contagion.remains < 6 || cooldown.vile_contagion.remains > 40 || ! talent.vile_contagion.enabled ) || boss & fight_remains < 20",
|
|
["action"] = "unholy_assault",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.festering_wound.stack >= 4 & ( raid_event.adds.remains > 4 || ! raid_event.adds.exists & fight_remains > 4 ) & ( raid_event.adds.exists & raid_event.adds.remains <= 11 || cooldown.any_dnd.remains < 3 || buff.death_and_decay.up & debuff.festering_wound.stack >= 4 ) || active_enemies > 1 & debuff.festering_wound.stack = 6",
|
|
["action"] = "vile_contagion",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( dot.virulent_plague.refreshable || talent.morbidity.enabled & ! buff.gift_of_the_sanlayn.up & talent.superstrain.enabled & dot.frost_fever.refreshable & dot.blood_plague.refreshable ) & ( ! talent.unholy_blight.enabled || talent.unholy_blight.enabled & cooldown.dark_transformation.remains > 15 / ( ( 2 * talent.superstrain.enabled ) + ( 2 * talent.ebon_fever.enabled ) + ( 2 * talent.plaguebringer.enabled ) ) ) & ( ! talent.raise_abomination.enabled || talent.raise_abomination.enabled & cooldown.raise_abomination.remains > 15 / ( ( 2 * talent.superstrain.enabled ) + ( 2 * talent.ebon_fever.enabled ) + ( 2 * talent.plaguebringer.enabled ) ) )",
|
|
["action"] = "outbreak",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & rune <= 3",
|
|
["action"] = "apocalypse",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
},
|
|
["san_st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "any_dnd",
|
|
["description"] = "Single Target San'layn",
|
|
["criteria"] = "! death_and_decay.ticking & talent.unholy_ground.enabled & cooldown.dark_transformation.remains < 5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_doom.up & buff.gift_of_the_sanlayn.remains & ( talent.doomed_bidding.enabled || talent.rotten_touch.enabled ) || rune < 3 & ! buff.runic_corruption.up",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.gift_of_the_sanlayn.up & buff.vampiric_strike.up || talent.gift_of_the_sanlayn.enabled & buff.dark_transformation.up & buff.dark_transformation.remains < gcd.max",
|
|
["action"] = "wound_spender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct <= 35 & ! buff.gift_of_the_sanlayn.up & fight_remains > 5",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vampiric_strike.up & debuff.festering_wound.stack >= 1",
|
|
["action"] = "wound_spender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( debuff.festering_wound.stack = 0 & cooldown.apocalypse.remains < variable.apoc_timing ) || ( talent.gift_of_the_sanlayn.enabled & ! buff.gift_of_the_sanlayn.up || ! talent.gift_of_the_sanlayn.enabled ) & ( buff.festering_scythe.up || debuff.festering_wound.stack <= 1 )",
|
|
["action"] = "festering_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.apocalypse.enabled || cooldown.apocalypse.remains > variable.apoc_timing ) & ( debuff.festering_wound.stack >= 3 - pet.abomination.active || buff.vampiric_strike.up )",
|
|
["action"] = "wound_spender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & debuff.death_rot.remains < gcd.max || ( buff.sudden_doom.up & debuff.festering_wound.stack >= 1 || rune < 2 )",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.festering_wound.stack > 4",
|
|
["action"] = "wound_spender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power",
|
|
["action"] = "death_coil",
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "soul_reaper",
|
|
["description"] = "Single Taget Non-San'layn",
|
|
["criteria"] = "target.health.pct <= 35 & fight_remains > 5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.chains_of_ice_trollbane_slow.up",
|
|
["action"] = "wound_spender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unholy_ground.enabled & ! buff.death_and_decay.up & ( pet.apoc_ghoul.active || pet.abomination.active || pet.gargoyle.active )",
|
|
["action"] = "any_dnd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & variable.spend_rp || boss & fight_remains < 10",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.festering_wound.stack < 4 & ( ! variable.pop_wounds || buff.festering_scythe.up )",
|
|
["action"] = "festering_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.pop_wounds",
|
|
["action"] = "wound_spender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pop_wounds & debuff.festering_wound.stack >= 4",
|
|
["action"] = "wound_spender",
|
|
},
|
|
},
|
|
["cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "any_dnd",
|
|
["description"] = "Cleave",
|
|
["criteria"] = "! death_and_decay.ticking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pop_wounds & debuff.festering_wound.stack < 4 || buff.festering_scythe.up",
|
|
["action"] = "festering_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.apocalypse.remains < variable.apoc_timing & debuff.festering_wound.stack < 4",
|
|
["action"] = "festering_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.pop_wounds",
|
|
["action"] = "wound_spender",
|
|
},
|
|
},
|
|
["san_trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "fyralath_the_dreamrender",
|
|
["action"] = "fyralath_the_dreamrender",
|
|
["criteria"] = "dot.mark_of_fyralath.ticking & ( active_enemies < 5 || active_enemies > 21 || boss & fight_remains < 4 ) & ( pet.abomination.active || pet.army_ghoul.active || ! talent.raise_abomination.enabled & ! talent.army_of_the_dead.enabled || time > 15 )",
|
|
["description"] = "Trinkets San'layn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "treacherous_transmitter",
|
|
["criteria"] = "( active_enemies > 1 || active_enemies = 1 ) & cooldown.dark_transformation.remains < 10",
|
|
["name"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.trinket_1_buffs & ( buff.dark_transformation.up & buff.dark_transformation.remains < variable.trinket_1_duration * 0.73 & ( variable.trinket_priority = 1 || trinket.t2.cooldown.remains || ! trinket.t2.has_cooldown ) ) || variable.trinket_1_duration >= fight_remains & boss",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.trinket_2_buffs & ( buff.dark_transformation.up & buff.dark_transformation.remains < variable.trinket_2_duration * 0.73 & ( variable.trinket_priority = 2 || trinket.t1.cooldown.remains || ! trinket.t1.has_cooldown ) ) || variable.trinket_2_duration >= fight_remains & boss",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_1_buffs & ( trinket.t1.cast_time > 0 & ! buff.gift_of_the_sanlayn.up || ! trinket.t1.cast_time > 0 ) & ( variable.damage_trinket_priority = 1 || trinket.t2.cooldown.remains || ! trinket.t2.has_cooldown || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_dead.enabled & ! talent.raise_abomination.enabled || ! talent.summon_gargoyle.enabled & talent.army_of_the_dead.enabled & ( ! talent.raise_abomination.enabled & cooldown.army_of_the_dead.remains > 20 || talent.raise_abomination.enabled & cooldown.raise_abomination.remains > 20 ) || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_dead.enabled & ! talent.raise_abomination.enabled & cooldown.dark_transformation.remains > 20 || talent.summon_gargoyle.enabled & cooldown.summon_gargoyle.remains > 20 & ! pet.gargoyle.active ) || boss & fight_remains < 15",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_2_buffs & ( trinket.t2.cast_time > 0 & ! buff.gift_of_the_sanlayn.up || ! trinket.t2.cast_time > 0 ) & ( variable.damage_trinket_priority = 2 || trinket.t1.cooldown.remains || ! trinket.t1.has_cooldown || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_dead.enabled & ! talent.raise_abomination.enabled || ! talent.summon_gargoyle.enabled & talent.army_of_the_dead.enabled & ( ! talent.raise_abomination.enabled & cooldown.army_of_the_dead.remains > 20 || talent.raise_abomination.enabled & cooldown.raise_abomination.remains > 20 ) || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_dead.enabled & ! talent.raise_abomination.enabled & cooldown.dark_transformation.remains > 20 || talent.summon_gargoyle.enabled & cooldown.summon_gargoyle.remains > 20 & ! pet.gargoyle.active ) || boss & fight_remains < 15",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "fyralath_the_dreamrender",
|
|
["action"] = "fyralath_the_dreamrender",
|
|
["criteria"] = "dot.mark_of_fyralath.ticking & ( active_enemies < 5 || active_enemies > 21 || boss & fight_remains < 4 ) & ( pet.abomination.active || pet.army_ghoul.active || ! talent.raise_abomination.enabled & ! talent.army_of_the_dead.enabled || time > 15 )",
|
|
["description"] = "Trinkets Non-San'layn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "treacherous_transmitter",
|
|
["criteria"] = "( active_enemies > 1 || active_enemies = 1 ) & cooldown.dark_transformation.remains < 10",
|
|
["name"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.trinket_1_buffs & ( variable.trinket_priority = 1 || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains > 20 & ( ! talent.apocalypse.enabled & buff.dark_transformation.up || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= variable.trinket_1_duration & pet.apoc_ghoul.remains > 5 ) ) & ( talent.army_of_the_dead.enabled & ! talent.raise_abomination.enabled & pet.army_ghoul.active & pet.army_ghoul.remains <= variable.trinket_1_duration & pet.army_ghoul.remains > 10 || talent.raise_abomination.enabled & pet.abomination.active & pet.abomination.remains <= variable.trinket_1_duration & pet.abomination.remains > 10 || talent.apocalypse.enabled & pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= variable.trinket_1_duration + 3 & pet.apoc_ghoul.remains > 5 || ! talent.raise_abomination.enabled & ! talent.apocalypse.enabled & buff.dark_transformation.up || trinket.t2.cooldown.remains ) || fight_remains <= variable.trinket_1_duration & boss",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.trinket_2_buffs & ( variable.trinket_priority = 2 || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains > 20 & ( ! talent.apocalypse.enabled & buff.dark_transformation.up || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= variable.trinket_2_duration & pet.apoc_ghoul.remains > 5 ) ) & ( talent.army_of_the_dead.enabled & ! talent.raise_abomination.enabled & pet.army_ghoul.active & pet.army_ghoul.remains <= variable.trinket_2_duration & pet.army_ghoul.remains > 10 || talent.raise_abomination.enabled & pet.abomination.active & pet.abomination.remains <= variable.trinket_2_duration & pet.abomination.remains > 10 || talent.apocalypse.enabled & pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= variable.trinket_2_duration + 3 & pet.apoc_ghoul.remains > 5 || ! talent.raise_abomination.enabled & ! talent.apocalypse.enabled & buff.dark_transformation.up || trinket.t1.cooldown.remains ) || fight_remains <= variable.trinket_2_duration & boss",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_1_buffs & ( variable.damage_trinket_priority = 1 || trinket.t2.cooldown.remains || ! trinket.t2.has_cooldown || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_dead.enabled & ! talent.raise_abomination.enabled || ! talent.summon_gargoyle.enabled & talent.army_of_the_dead.enabled & ( ! talent.raise_abomination.enabled & cooldown.army_of_the_dead.remains > 20 || talent.raise_abomination.enabled & cooldown.raise_abomination.remains > 20 ) || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_dead.enabled & ! talent.raise_abomination.enabled & cooldown.dark_transformation.remains > 20 || talent.summon_gargoyle.enabled & cooldown.summon_gargoyle.remains > 20 & ! pet.gargoyle.active ) || boss & fight_remains < 15",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_2_buffs & ( variable.damage_trinket_priority = 2 || trinket.t1.cooldown.remains || ! trinket.t1.has_cooldown || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_dead.enabled & ! talent.raise_abomination.enabled || ! talent.summon_gargoyle.enabled & talent.army_of_the_dead.enabled & ( ! talent.raise_abomination.enabled & cooldown.army_of_the_dead.remains > 20 || talent.raise_abomination.enabled & cooldown.raise_abomination.remains > 20 ) || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_dead.enabled & ! talent.raise_abomination.enabled & cooldown.dark_transformation.remains > 20 || talent.summon_gargoyle.enabled & cooldown.summon_gargoyle.remains > 20 & ! pet.gargoyle.active ) || boss & fight_remains < 15",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "mind_freeze",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "apoc_timing",
|
|
["value"] = "3",
|
|
["value_else"] = "0",
|
|
["criteria"] = "cooldown.apocalypse.remains < 5 & debuff.festering_wound.stack < 1 & cooldown.unholy_assault.remains > 5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( cooldown.apocalypse.remains > variable.apoc_timing || ! talent.apocalypse.enabled ) & ( debuff.festering_wound.stack >= 1 & cooldown.unholy_assault.remains < 20 & talent.unholy_assault.enabled & active_enemies = 1 || debuff.rotten_touch.up & debuff.festering_wound.stack >= 1 || debuff.festering_wound.stack >= 4 - pet.abomination.active ) || fight_remains < 5 & debuff.festering_wound.stack >= 1",
|
|
["var_name"] = "pop_wounds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.vile_contagion.enabled & cooldown.vile_contagion.remains < 5 & runic_power < 30",
|
|
["var_name"] = "pooling_runic_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["value"] = "( ! talent.rotten_touch.enabled || talent.rotten_touch.enabled & ! debuff.rotten_touch.up || runic_power.deficit < 20 ) & ( ( talent.improved_death_coil.enabled & ( active_enemies = 2 || talent.coil_of_devastation.enabled ) || rune < 3 || pet.gargoyle.active || buff.sudden_doom.up || ! variable.pop_wounds & debuff.festering_wound.stack >= 4 ) )",
|
|
["var_name"] = "spend_rp",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "3 + talent.improved_death_coil.enabled + ( talent.frenzied_bloodthirst.enabled & buff.essence_of_the_blood_queen.stack > 5 ) + ( talent.hungering_thirst.enabled & talent.harbinger_of_doom.enabled & buff.sudden_doom.up )",
|
|
["var_name"] = "epidemic_targets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Call Action Lists",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.vampiric_strike.enabled",
|
|
["list_name"] = "san_trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.vampiric_strike.enabled",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_torrent",
|
|
["description"] = "Racials",
|
|
["criteria"] = "runic_power < 20 & rune < 2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.blood_fury.duration + 3 >= pet.gargoyle.remains & pet.gargoyle.active ) || ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 ) & ( pet.army_ghoul.active & pet.army_ghoul.remains <= buff.blood_fury.duration + 3 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= buff.blood_fury.duration + 3 || active_enemies >= 2 & death_and_decay.ticking ) || boss & fight_remains <= buff.blood_fury.duration + 3",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.berserking.duration + 3 >= pet.gargoyle.remains & pet.gargoyle.active ) || ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 ) & ( pet.army_ghoul.active & pet.army_ghoul.remains <= buff.berserking.duration + 3 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= buff.berserking.duration + 3 || active_enemies >= 2 & death_and_decay.ticking ) || boss & fight_remains <= buff.berserking.duration + 3",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unholy_strength.up & ( ! talent.festermight.enabled || buff.festermight.remains < target.time_to_die || buff.unholy_strength.remains < target.time_to_die )",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( 18 >= pet.gargoyle.remains & pet.gargoyle.active ) || ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 ) & ( pet.army_ghoul.active & pet.army_ghoul.remains <= 18 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= 18 || active_enemies >= 2 & death_and_decay.ticking ) || boss & fight_remains <= 18",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 2 || ( rune.deficit >= 5 & runic_power.deficit >= 60 )",
|
|
["action"] = "arcane_pulse",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.fireblood.duration + 3 >= pet.gargoyle.remains & pet.gargoyle.active ) || ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 ) & ( pet.army_ghoul.active & pet.army_ghoul.remains <= buff.fireblood.duration + 3 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= buff.fireblood.duration + 3 || active_enemies >= 2 & death_and_decay.ticking ) || boss & fight_remains <= buff.fireblood.duration + 3",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & ( buff.unholy_strength.up || boss & fight_remains < 5 )",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "potion",
|
|
["description"] = "Shared Cooldowns",
|
|
["criteria"] = "active_enemies >= 1 & ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 ) & ( buff.dark_transformation.up & 30 >= buff.dark_transformation.remains || pet.army_ghoul.active & pet.army_ghoul.remains <= 30 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= 30 || pet.abomination.active & pet.abomination.remains <= 30 ) || boss & fight_remains <= 30",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.commander_of_the_dead.enabled & cooldown.dark_transformation.remains < 5 || ! talent.commander_of_the_dead.enabled & active_enemies >= 1 ) || boss & fight_remains < 35",
|
|
["action"] = "army_of_the_dead",
|
|
},
|
|
{
|
|
["action"] = "army_of_the_dead",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "summon_gargoyle",
|
|
["criteria"] = "( buff.commander_of_the_dead.up || ! talent.commander_of_the_dead.enabled & active_enemies >= 1 ) || boss & fight_remains < 25",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "death_knight.ams_absorb_percent > 0 & runic_power < 30 & rune < 2",
|
|
["action"] = "antimagic_shell",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.vampiric_strike.enabled & active_enemies >= 2",
|
|
["list_name"] = "cds_aoe_san",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.vampiric_strike.enabled & active_enemies >= 2",
|
|
["list_name"] = "cds_aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.vampiric_strike.enabled & active_enemies = 1",
|
|
["list_name"] = "cds_san",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.vampiric_strike.enabled & active_enemies = 1",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies = 2",
|
|
["list_name"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies >= 3 & ! death_and_decay.ticking & cooldown.death_and_decay.remains < 10",
|
|
["list_name"] = "aoe_setup",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies >= 3 & ( death_and_decay.ticking || buff.death_and_decay.up & death_knight.fwounded_targets >= ( cycle_enemies * 0.5 ) )",
|
|
["list_name"] = "aoe_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies >= 3 & ! death_and_decay.ticking",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "active_enemies = 1 & talent.gift_of_the_sanlayn.enabled & ! cooldown.dark_transformation.ready & ! buff.gift_of_the_sanlayn.up & buff.essence_of_the_blood_queen.remains < cooldown.dark_transformation.remains + 2",
|
|
["list_name"] = "san_fishing",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies = 1 & talent.vampiric_strike.enabled",
|
|
["list_name"] = "san_st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies = 1 & ! talent.vampiric_strike.enabled",
|
|
["list_name"] = "st",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "raise_dead",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "army_of_the_dead",
|
|
["precombat_time"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || trinket.t1.is.mirror_of_fractured_tomorrows || trinket.t1.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || trinket.t2.is.mirror_of_fractured_tomorrows || trinket.t2.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_1_duration",
|
|
["value"] = "20",
|
|
["value_else"] = "trinket.t1.buff_duration",
|
|
["criteria"] = "trinket.t1.is.mirror_of_fractured_tomorrows || trinket.t1.is.treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_duration",
|
|
["value"] = "20",
|
|
["value_else"] = "trinket.t2.buff_duration",
|
|
["criteria"] = "trinket.t2.is.mirror_of_fractured_tomorrows || trinket.t2.is.treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_1_high_value",
|
|
["value"] = "2",
|
|
["value_else"] = "1",
|
|
["criteria"] = "trinket.t1.is.treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_high_value",
|
|
["value"] = "2",
|
|
["value_else"] = "1",
|
|
["criteria"] = "trinket.t2.is.treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_1_sync",
|
|
["value"] = "1",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "variable.trinket_1_buffs & ( talent.apocalypse.enabled & trinket.t1.cooldown.duration % cooldown.apocalypse.duration = 0 || talent.dark_transformation.enabled & trinket.t1.cooldown.duration % cooldown.dark_transformation.duration = 0 ) || trinket.t1.is.treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["value"] = "1",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "variable.trinket_2_buffs & ( talent.apocalypse.enabled & trinket.t2.cooldown.duration % cooldown.apocalypse.duration = 0 || talent.dark_transformation.enabled & trinket.t2.cooldown.duration % cooldown.dark_transformation.duration = 0 ) || trinket.t2.is.treacherous_transmitter",
|
|
},
|
|
{
|
|
["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 || ! trinket.t1.has_cooldown ) || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / variable.trinket_2_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) * ( variable.trinket_2_high_value ) * ( 1 + ( ( trinket.t2.ilvl - trinket.t1.ilvl ) / 100 ) ) ) > ( ( trinket.t1.cooldown.duration / variable.trinket_1_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) * ( variable.trinket_1_high_value ) * ( 1 + ( ( trinket.t1.ilvl - trinket.t2.ilvl ) / 100 ) ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "damage_trinket_priority",
|
|
["value"] = "2",
|
|
["value_else"] = "1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_2_buffs & trinket.t2.ilvl >= trinket.t1.ilvl",
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "festering_strike",
|
|
["description"] = "AOE",
|
|
["criteria"] = "buff.festering_scythe.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.festering_wound.stack >= 1 & buff.death_and_decay.up & talent.bursting_sores.enabled & cooldown.apocalypse.remains > variable.apoc_timing",
|
|
["action"] = "wound_spender",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & active_enemies < variable.epidemic_targets",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power",
|
|
["action"] = "epidemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.chains_of_ice_trollbane_slow.up",
|
|
["action"] = "wound_spender",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.apocalypse.remains < variable.apoc_timing || buff.festering_scythe.up",
|
|
["action"] = "festering_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.festering_wound.stack < 2",
|
|
["action"] = "festering_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.festering_wound.stack >= 1 & cooldown.apocalypse.remains > gcd.max || buff.vampiric_strike.up & dot.virulent_plague.ticking",
|
|
["action"] = "wound_spender",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "dark_transformation",
|
|
["description"] = "Non-San'layn Cooldowns",
|
|
["criteria"] = "active_enemies = 1 & ( cooldown.apocalypse.remains < 8 || ! talent.apocalypse.enabled || active_enemies >= 1 ) || boss & fight_remains < 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & ( cooldown.apocalypse.remains < gcd.max * 2 || ! talent.apocalypse.enabled || active_enemies >= 2 & buff.dark_transformation.up ) || boss & fight_remains < 20",
|
|
["action"] = "unholy_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 || fight_remains < 20",
|
|
["action"] = "apocalypse",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.time_to_die > dot.virulent_plague.remains & dot.virulent_plague.ticks_remain < 5 & ( dot.virulent_plague.refreshable || talent.superstrain.enabled & ( dot.frost_fever.refreshable || dot.blood_plague.refreshable ) ) & ( ! talent.unholy_blight.enabled || talent.plaguebringer.enabled ) & ( ! talent.raise_abomination.enabled || talent.raise_abomination.enabled & cooldown.raise_abomination.remains > dot.virulent_plague.ticks_remain * 3 )",
|
|
["action"] = "outbreak",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & ! buff.sudden_doom.up & ( buff.festermight.up & buff.festermight.stack > 8 || ! talent.festermight.enabled ) & ( pet.apoc_ghoul.remains < 5 || ! talent.apocalypse.enabled ) & debuff.festering_wound.stack <= 2 || boss & fight_remains < 12",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
},
|
|
["cds_san"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "dark_transformation",
|
|
["description"] = "San'layn Cooldowns",
|
|
["criteria"] = "active_enemies >= 1 & active_enemies = 1 & ( talent.apocalypse.enabled & pet.apoc_ghoul.active || ! talent.apocalypse.enabled ) || boss & fight_remains < 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & ( buff.dark_transformation.up & buff.dark_transformation.remains < 12 ) || boss & fight_remains < 20",
|
|
["action"] = "unholy_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 || fight_remains < 20",
|
|
["action"] = "apocalypse",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.time_to_die > dot.virulent_plague.remains & dot.virulent_plague.ticks_remain < 5 & ( dot.virulent_plague.refreshable || talent.morbidity.enabled & buff.infliction_of_sorrow.up & talent.superstrain.enabled & dot.frost_fever.refreshable & dot.blood_plague.refreshable ) & ( ! talent.unholy_blight.enabled || talent.unholy_blight.enabled & cooldown.dark_transformation.remains ) & ( ! talent.raise_abomination.enabled || talent.raise_abomination.enabled & cooldown.raise_abomination.remains )",
|
|
["action"] = "outbreak",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 1 & active_enemies = 1 & ! buff.gift_of_the_sanlayn.up & ! buff.sudden_doom.up & buff.festermight.up & debuff.festering_wound.stack <= 2 || ! buff.gift_of_the_sanlayn.up & fight_remains < 12",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
},
|
|
["aoe_burst"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "festering_strike",
|
|
["description"] = "AoE Burst",
|
|
["criteria"] = "buff.festering_scythe.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.vampiric_strike.react & active_enemies < variable.epidemic_targets & ( ! talent.bursting_sores.enabled || talent.bursting_sores.enabled & death_knight.fwounded_targets < active_enemies & death_knight.fwounded_targets < active_enemies * 0.4 & buff.sudden_doom.react || buff.sudden_doom.react & ( talent.doomed_bidding.enabled & talent.menacing_magus.enabled || talent.rotten_touch.enabled || debuff.death_rot.remains < gcd.max ) )",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.vampiric_strike.up & ( ! talent.bursting_sores.enabled || talent.bursting_sores.enabled & death_knight.fwounded_targets < cycle_enemies & death_knight.fwounded_targets < active_enemies * 0.4 & buff.sudden_doom.up || buff.sudden_doom.up & ( buff.a_feast_of_souls.up || debuff.death_rot.remains < gcd.max || debuff.death_rot.stack < 10 ) )",
|
|
["action"] = "epidemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.chains_of_ice_trollbane_slow.up",
|
|
["action"] = "wound_spender",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.festering_wound.stack >= 1 || buff.vampiric_strike.up",
|
|
["action"] = "wound_spender",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < variable.epidemic_targets",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["action"] = "epidemic",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.festering_wound.stack <= 2",
|
|
["action"] = "festering_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wound_spender",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241109,
|
|
["warnings"] = "The import for 'san_fishing' required some automated changes.\nLine 3: Converted 'talent.doomed_bidding' to 'talent.doomed_bidding.enabled' (1x).\n\nThe import for 'aoe_setup' required some automated changes.\nLine 2: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 2: Converted 'talent.vile_contagion' to 'talent.vile_contagion.enabled' (1x).\nLine 2: Converted 'talent.defile' to 'talent.defile.enabled' (1x).\nLine 4: Converted 'talent.vile_contagion' to 'talent.vile_contagion.enabled' (1x).\n\nThe import for 'cds_aoe' required some automated changes.\nLine 1: Converted 'talent.vile_contagion' to 'talent.vile_contagion.enabled' (1x).\nLine 3: Converted 'talent.vile_contagion' to 'talent.vile_contagion.enabled' (1x).\nLine 4: Converted 'talent.morbidity' to 'talent.morbidity.enabled' (1x).\nLine 4: Converted 'talent.superstrain' to 'talent.superstrain.enabled' (1x).\nLine 4: Converted 'talent.unholy_blight' to 'talent.unholy_blight.enabled' (1x).\nLine 4: Converted 'talent.unholy_blight' to 'talent.unholy_blight.enabled' (1x).\nLine 4: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 4: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\n\nThe import for 'cds_aoe_san' required some automated changes.\nLine 2: Converted 'talent.vile_contagion' to 'talent.vile_contagion.enabled' (1x).\nLine 4: Converted 'talent.morbidity' to 'talent.morbidity.enabled' (1x).\nLine 4: Converted 'talent.superstrain' to 'talent.superstrain.enabled' (1x).\nLine 4: Converted 'talent.unholy_blight' to 'talent.unholy_blight.enabled' (1x).\nLine 4: Converted 'talent.unholy_blight' to 'talent.unholy_blight.enabled' (1x).\nLine 4: Converted 'talent.superstrain' to 'talent.superstrain.enabled' (1x).\nLine 4: Converted 'talent.ebon_fever' to 'talent.ebon_fever.enabled' (1x).\nLine 4: Converted 'talent.plaguebringer' to 'talent.plaguebringer.enabled' (1x).\nLine 4: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 4: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 4: Converted 'talent.superstrain' to 'talent.superstrain.enabled' (1x).\nLine 4: Converted 'talent.ebon_fever' to 'talent.ebon_fever.enabled' (1x).\nLine 4: Converted 'talent.plaguebringer' to 'talent.plaguebringer.enabled' (1x).\nLine 4: Converted operations in '(dot.virulent_plague.refreshable||talent.morbidity.enabled&!buff.gift_of_the_sanlayn.up&talent.superstrain.enabled&dot.frost_fever.refreshable&dot.blood_plague.refreshable)&(!talent.unholy_blight.enabled||talent.unholy_blight.enabled&cooldown.dark_transformation.remains>15%((2*talent.superstrain.enabled)+(2*talent.ebon_fever.enabled)+(2*talent.plaguebringer.enabled)))&(!talent.raise_abomination.enabled||talent.raise_abomination.enabled&cooldown.raise_abomination.remains>15%((2*talent.superstrain.enabled)+(2*talent.ebon_fever.enabled)+(2*talent.plaguebringer.enabled)))' to '(dot.virulent_plague.refreshable||talent.morbidity.enabled&!buff.gift_of_the_sanlayn.up&talent.superstrain.enabled&dot.frost_fever.refreshable&dot.blood_plague.refreshable)&(!talent.unholy_blight.enabled||talent.unholy_blight.enabled&cooldown.dark_transformation.remains>15/((2*talent.superstrain.enabled)+(2*talent.ebon_fever.enabled)+(2*talent.plaguebringer.enabled)))&(!talent.raise_abomination.enabled||talent.raise_abomination.enabled&cooldown.raise_abomination.remains>15/((2*talent.superstrain.enabled)+(2*talent.ebon_fever.enabled)+(2*talent.plaguebringer.enabled)))'.\n\nThe import for 'trinkets' required some automated changes.\nLine 1: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 1: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 3: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 3: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 3: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 3: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 3: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 3: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 3: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 4: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 4: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 4: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 4: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 4: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 4: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted '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_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 5: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 5: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 5: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 5: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 5: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 5: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 5: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.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.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 6: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 6: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 6: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 6: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 6: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 6: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 6: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 6: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 6: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 6: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 6: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\n\nThe import for 'aoe_burst' required some automated changes.\nLine 2: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 2: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 2: Converted 'talent.doomed_bidding' to 'talent.doomed_bidding.enabled' (1x).\nLine 2: Converted 'talent.menacing_magus' to 'talent.menacing_magus.enabled' (1x).\nLine 2: Converted 'talent.rotten_touch' to 'talent.rotten_touch.enabled' (1x).\nLine 3: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 3: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 3: Converted 'talent.unholy_ground' to 'talent.unholy_ground.enabled' (1x).\n\nThe import for 'san_trinkets' required some automated changes.\nLine 1: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 1: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (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.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 5: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 5: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 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_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 5: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 5: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 5: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 5: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 5: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 5: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 5: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 6: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 6: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 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_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 6: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 6: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 6: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 6: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 6: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 6: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 6: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 6: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 6: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 6: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 6: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\n\nThe import for 'san_st' required some automated changes.\nLine 1: Converted 'talent.unholy_ground' to 'talent.unholy_ground.enabled' (1x).\nLine 2: Converted 'talent.doomed_bidding' to 'talent.doomed_bidding.enabled' (1x).\nLine 2: Converted 'talent.rotten_touch' to 'talent.rotten_touch.enabled' (1x).\nLine 3: Converted 'talent.gift_of_the_sanlayn' to 'talent.gift_of_the_sanlayn.enabled' (1x).\nLine 6: Converted 'talent.gift_of_the_sanlayn' to 'talent.gift_of_the_sanlayn.enabled' (1x).\nLine 6: Converted 'talent.gift_of_the_sanlayn' to 'talent.gift_of_the_sanlayn.enabled' (1x).\nLine 7: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 3: Converted 'talent.unholy_assault' to 'talent.unholy_assault.enabled' (1x).\nLine 4: Converted 'talent.vile_contagion' to 'talent.vile_contagion.enabled' (1x).\nLine 5: Converted 'talent.rotten_touch' to 'talent.rotten_touch.enabled' (1x).\nLine 5: Converted 'talent.rotten_touch' to 'talent.rotten_touch.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 6: Converted 'talent.improved_death_coil' to 'talent.improved_death_coil.enabled' (1x).\nLine 6: Converted 'talent.frenzied_bloodthirst' to 'talent.frenzied_bloodthirst.enabled' (1x).\nLine 6: Converted 'talent.hungering_thirst' to 'talent.hungering_thirst.enabled' (1x).\nLine 6: Converted 'talent.harbinger_of_doom' to 'talent.harbinger_of_doom.enabled' (1x).\nLine 7: Converted 'talent.vampiric_strike' to 'talent.vampiric_strike.enabled' (1x).\nLine 8: Converted 'talent.vampiric_strike' to 'talent.vampiric_strike.enabled' (1x).\nLine 10: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 11: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 12: Converted 'talent.festermight' to 'talent.festermight.enabled' (1x).\nLine 13: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 15: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 17: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 18: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 18: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 20: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 22: Converted 'talent.vampiric_strike' to 'talent.vampiric_strike.enabled' (1x).\nLine 23: Converted 'talent.vampiric_strike' to 'talent.vampiric_strike.enabled' (1x).\nLine 24: Converted 'talent.vampiric_strike' to 'talent.vampiric_strike.enabled' (1x).\nLine 25: Converted 'talent.vampiric_strike' to 'talent.vampiric_strike.enabled' (1x).\nLine 30: Converted 'talent.gift_of_the_sanlayn' to 'talent.gift_of_the_sanlayn.enabled' (1x).\nLine 31: Converted 'talent.vampiric_strike' to 'talent.vampiric_strike.enabled' (1x).\nLine 32: Converted 'talent.vampiric_strike' to 'talent.vampiric_strike.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 3: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 3: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 4: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\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 5: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 5: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 6: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 6: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 6: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 6: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 7: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 8: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 9: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (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 'talent.dark_transformation' to 'talent.dark_transformation.enabled' (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.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 9: Converted operations in 'variable.trinket_1_buffs&(talent.apocalypse.enabled&trinket.t1.cooldown.duration%%cooldown.apocalypse.duration=0||talent.dark_transformation.enabled&trinket.t1.cooldown.duration%%cooldown.dark_transformation.duration=0)||trinket.t1.is.treacherous_transmitter' to 'variable.trinket_1_buffs&(talent.apocalypse.enabled&trinket.t1.cooldown.duration%cooldown.apocalypse.duration=0||talent.dark_transformation.enabled&trinket.t1.cooldown.duration%cooldown.dark_transformation.duration=0)||trinket.t1.is.treacherous_transmitter'.\nLine 10: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (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 'talent.dark_transformation' to 'talent.dark_transformation.enabled' (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.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 10: Converted operations in 'variable.trinket_2_buffs&(talent.apocalypse.enabled&trinket.t2.cooldown.duration%%cooldown.apocalypse.duration=0||talent.dark_transformation.enabled&trinket.t2.cooldown.duration%%cooldown.dark_transformation.duration=0)||trinket.t2.is.treacherous_transmitter' to 'variable.trinket_2_buffs&(talent.apocalypse.enabled&trinket.t2.cooldown.duration%cooldown.apocalypse.duration=0||talent.dark_transformation.enabled&trinket.t2.cooldown.duration%cooldown.dark_transformation.duration=0)||trinket.t2.is.treacherous_transmitter'.\nLine 11: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 11: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 11: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 11: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 11: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 11: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 11: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 11: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nLine 11: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 11: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 11: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 11: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 11: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nLine 11: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 11: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs&(trinket.t2.has_cooldown||!trinket.t1.has_cooldown)||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%variable.trinket_2_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync)*(variable.trinket_2_high_value)*(1+((trinket.t2.ilvl-trinket.t1.ilvl)%100)))>((trinket.t1.cooldown.duration%variable.trinket_1_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync)*(variable.trinket_1_high_value)*(1+((trinket.t1.ilvl-trinket.t2.ilvl)%100)))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs&(trinket.t2.has_cooldown||!trinket.t1.has_cooldown)||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/variable.trinket_2_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync)*(variable.trinket_2_high_value)*(1+((trinket.t2.ilvl-trinket.t1.ilvl)/100)))>((trinket.t1.cooldown.duration/variable.trinket_1_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync)*(variable.trinket_1_high_value)*(1+((trinket.t1.ilvl-trinket.t2.ilvl)/100)))'.\nLine 12: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 12: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 2: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\n\nThe import for 'cds' required some automated changes.\nLine 1: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 2: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 4: Converted 'talent.superstrain' to 'talent.superstrain.enabled' (1x).\nLine 4: Converted 'talent.unholy_blight' to 'talent.unholy_blight.enabled' (1x).\nLine 4: Converted 'talent.plaguebringer' to 'talent.plaguebringer.enabled' (1x).\nLine 4: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 4: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 5: Converted 'talent.festermight' to 'talent.festermight.enabled' (1x).\nLine 5: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\n\nThe import for 'cds_san' required some automated changes.\nLine 1: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 1: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 4: Converted 'talent.morbidity' to 'talent.morbidity.enabled' (1x).\nLine 4: Converted 'talent.superstrain' to 'talent.superstrain.enabled' (1x).\nLine 4: Converted 'talent.unholy_blight' to 'talent.unholy_blight.enabled' (1x).\nLine 4: Converted 'talent.unholy_blight' to 'talent.unholy_blight.enabled' (1x).\nLine 4: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\nLine 4: Converted 'talent.raise_abomination' to 'talent.raise_abomination.enabled' (1x).\n\nImported 15 action lists.\n",
|
|
["profile"] = "actions.precombat+=/raise_dead\nactions.precombat+=/army_of_the_dead,precombat_time=2\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||trinket.1.is.mirror_of_fractured_tomorrows||trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||trinket.2.is.mirror_of_fractured_tomorrows||trinket.2.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_1_duration,op=setif,value=20,value_else=trinket.1.proc.any_dps.duration,condition=trinket.1.is.mirror_of_fractured_tomorrows||trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_duration,op=setif,value=20,value_else=trinket.2.proc.any_dps.duration,condition=trinket.2.is.mirror_of_fractured_tomorrows||trinket.2.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_1_high_value,op=setif,value=2,value_else=1,condition=trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_high_value,op=setif,value=2,value_else=1,condition=trinket.2.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(talent.apocalypse&trinket.1.cooldown.duration%%cooldown.apocalypse.duration=0||talent.dark_transformation&trinket.1.cooldown.duration%%cooldown.dark_transformation.duration=0)||trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(talent.apocalypse&trinket.2.cooldown.duration%%cooldown.apocalypse.duration=0||talent.dark_transformation&trinket.2.cooldown.duration%%cooldown.dark_transformation.duration=0)||trinket.2.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs&(trinket.2.has_cooldown||!trinket.1.has_cooldown)||variable.trinket_2_buffs&((trinket.2.cooldown.duration%variable.trinket_2_duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync)*(variable.trinket_2_high_value)*(1+((trinket.2.ilvl-trinket.1.ilvl)%100)))>((trinket.1.cooldown.duration%variable.trinket_1_duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync)*(variable.trinket_1_high_value)*(1+((trinket.1.ilvl-trinket.2.ilvl)%100)))\nactions.precombat+=/variable,name=damage_trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&!variable.trinket_2_buffs&trinket.2.ilvl>=trinket.1.ilvl\n\nactions+=/mind_freeze\n## actions+=/variable,name=st_planning,op=set,value=active_enemies=1\n## actions+=/variable,name=adds_remain,op=set,value=active_enemies>1\nactions+=/variable,name=apoc_timing,op=set,value=3,value_else=0,condition=cooldown.apocalypse.remains<5&debuff.festering_wound.stack<1&cooldown.unholy_assault.remains>5\nactions+=/variable,name=pop_wounds,op=set,value=(cooldown.apocalypse.remains>variable.apoc_timing||!talent.apocalypse)&(debuff.festering_wound.stack>=1&cooldown.unholy_assault.remains<20&talent.unholy_assault&active_enemies=1||debuff.rotten_touch.up&debuff.festering_wound.stack>=1||debuff.festering_wound.stack>=4-pet.abomination.active)||fight_remains<5&debuff.festering_wound.stack>=1\nactions+=/variable,name=pooling_runic_power,op=set,value=talent.vile_contagion&cooldown.vile_contagion.remains<5&runic_power<30\nactions+=/variable,name=spend_rp,op=setif,value=(!talent.rotten_touch||talent.rotten_touch&!debuff.rotten_touch.up||runic_power.deficit<20)&((talent.improved_death_coil&(active_enemies=2||talent.coil_of_devastation)||rune<3||pet.gargoyle.active||buff.sudden_doom.up||!variable.pop_wounds&debuff.festering_wound.stack>=4))\nactions+=/variable,name=epidemic_targets,value=3+talent.improved_death_coil+(talent.frenzied_bloodthirst&buff.essence_of_the_blood_queen.stack>5)+(talent.hungering_thirst&talent.harbinger_of_doom&buff.sudden_doom.up)\n# Call Action Lists\nactions+=/call_action_list,name=san_trinkets,strict=1,if=talent.vampiric_strike\nactions+=/call_action_list,name=trinkets,strict=1,if=!talent.vampiric_strike\n# Racials\nactions+=/arcane_torrent,if=runic_power<20&rune<2\nactions+=/blood_fury,if=(buff.blood_fury.duration+3>=pet.gargoyle.remains&pet.gargoyle.active)||(!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>60)&(pet.army_ghoul.active&pet.army_ghoul.remains<=buff.blood_fury.duration+3||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=buff.blood_fury.duration+3||active_enemies>=2&death_and_decay.ticking)||boss&fight_remains<=buff.blood_fury.duration+3\nactions+=/berserking,if=(buff.berserking.duration+3>=pet.gargoyle.remains&pet.gargoyle.active)||(!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>60)&(pet.army_ghoul.active&pet.army_ghoul.remains<=buff.berserking.duration+3||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=buff.berserking.duration+3||active_enemies>=2&death_and_decay.ticking)||boss&fight_remains<=buff.berserking.duration+3\nactions+=/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+=/ancestral_call,if=(18>=pet.gargoyle.remains&pet.gargoyle.active)||(!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>60)&(pet.army_ghoul.active&pet.army_ghoul.remains<=18||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=18||active_enemies>=2&death_and_decay.ticking)||boss&fight_remains<=18\nactions+=/arcane_pulse,if=active_enemies>=2||(rune.deficit>=5&runic_power.deficit>=60)\nactions+=/fireblood,if=(buff.fireblood.duration+3>=pet.gargoyle.remains&pet.gargoyle.active)||(!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>60)&(pet.army_ghoul.active&pet.army_ghoul.remains<=buff.fireblood.duration+3||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=buff.fireblood.duration+3||active_enemies>=2&death_and_decay.ticking)||boss&fight_remains<=buff.fireblood.duration+3\nactions+=/bag_of_tricks,if=active_enemies=1&(buff.unholy_strength.up||boss&fight_remains<5)\n# Shared Cooldowns\nactions+=/potion,if=active_enemies>=1&(!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>60)&(buff.dark_transformation.up&30>=buff.dark_transformation.remains||pet.army_ghoul.active&pet.army_ghoul.remains<=30||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=30||pet.abomination.active&pet.abomination.remains<=30)||boss&fight_remains<=30\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=active_enemies>=1&(pet.gargoyle.active&pet.gargoyle.remains<=22||!talent.summon_gargoyle&talent.army_of_the_dead&(talent.raise_abomination&pet.abomination.active&pet.abomination.remains<18||!talent.raise_abomination&pet.army_ghoul.active&pet.army_ghoul.remains<=18)||!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+10>cooldown.invoke_external_buff_power_infusion.duration||active_enemies>=3&(buff.dark_transformation.up||death_and_decay.ticking))\nactions+=/army_of_the_dead,if=(talent.commander_of_the_dead&cooldown.dark_transformation.remains<5||!talent.commander_of_the_dead&active_enemies>=1)||boss&fight_remains<35\nactions+=/raise_abomination\nactions+=/summon_gargoyle,use_off_gcd=1,if=(buff.commander_of_the_dead.up||!talent.commander_of_the_dead&active_enemies>=1)||boss&fight_remains<25\nactions+=/antimagic_shell,if=death_knight.ams_absorb_percent>0&runic_power<30&rune<2\nactions+=/call_action_list,name=cds_aoe_san,strict=1,if=talent.vampiric_strike&active_enemies>=2\nactions+=/call_action_list,name=cds_aoe,strict=1,if=!talent.vampiric_strike&active_enemies>=2\nactions+=/call_action_list,name=cds_san,strict=1,if=talent.vampiric_strike&active_enemies=1\nactions+=/call_action_list,name=cds,strict=1,if=!talent.vampiric_strike&active_enemies=1\nactions+=/call_action_list,name=cleave,strict=1,if=active_enemies=2\nactions+=/call_action_list,name=aoe_setup,if=active_enemies>=3&!death_and_decay.ticking&cooldown.death_and_decay.remains<10\nactions+=/call_action_list,name=aoe_burst,strict=1,if=active_enemies>=3&(death_and_decay.ticking||buff.death_and_decay.up&death_knight.fwounded_targets>=(cycle_enemies*0.5))\nactions+=/call_action_list,name=aoe,if=active_enemies>=3&!death_and_decay.ticking\nactions+=/run_action_list,name=san_fishing,if=active_enemies=1&talent.gift_of_the_sanlayn&!cooldown.dark_transformation.ready&!buff.gift_of_the_sanlayn.up&buff.essence_of_the_blood_queen.remains<cooldown.dark_transformation.remains+2\nactions+=/call_action_list,name=san_st,strict=1,if=active_enemies=1&talent.vampiric_strike\nactions+=/call_action_list,name=st,strict=1,if=active_enemies=1&!talent.vampiric_strike\n\n# AOE\nactions.aoe+=/festering_strike,if=buff.festering_scythe.up\nactions.aoe+=/wound_spender,cycle_targets=1,if=debuff.festering_wound.stack>=1&buff.death_and_decay.up&talent.bursting_sores&cooldown.apocalypse.remains>variable.apoc_timing\nactions.aoe+=/death_coil,if=!variable.pooling_runic_power&active_enemies<variable.epidemic_targets\nactions.aoe+=/epidemic,if=!variable.pooling_runic_power\nactions.aoe+=/wound_spender,cycle_targets=1,if=debuff.chains_of_ice_trollbane_slow.up\nactions.aoe+=/festering_strike,cycle_targets=1,if=cooldown.apocalypse.remains<variable.apoc_timing||buff.festering_scythe.up\nactions.aoe+=/festering_strike,cycle_targets=1,if=debuff.festering_wound.stack<2\nactions.aoe+=/wound_spender,cycle_targets=1,if=debuff.festering_wound.stack>=1&cooldown.apocalypse.remains>gcd||buff.vampiric_strike.up&dot.virulent_plague.ticking\n\n# AoE Burst\nactions.aoe_burst+=/festering_strike,if=buff.festering_scythe.up\nactions.aoe_burst+=/death_coil,if=!buff.vampiric_strike.react&active_enemies<variable.epidemic_targets&(!talent.bursting_sores||talent.bursting_sores&death_knight.fwounded_targets<active_enemies&death_knight.fwounded_targets<active_enemies*0.4&buff.sudden_doom.react||buff.sudden_doom.react&(talent.doomed_bidding&talent.menacing_magus||talent.rotten_touch||debuff.death_rot.remains<gcd))\nactions.aoe_burst+=/epidemic,if=!buff.vampiric_strike.up&(!talent.bursting_sores||talent.bursting_sores&death_knight.fwounded_targets<cycle_enemies&death_knight.fwounded_targets<active_enemies*0.4&buff.sudden_doom.up||buff.sudden_doom.up&(buff.a_feast_of_souls.up||debuff.death_rot.remains<gcd||debuff.death_rot.stack<10))\nactions.aoe_burst+=/wound_spender,cycle_targets=1,if=debuff.chains_of_ice_trollbane_slow.up\nactions.aoe_burst+=/wound_spender,cycle_targets=1,if=debuff.festering_wound.stack>=1||buff.vampiric_strike.up\nactions.aoe_burst+=/death_coil,if=active_enemies<variable.epidemic_targets\nactions.aoe_burst+=/epidemic\nactions.aoe_burst+=/festering_strike,cycle_targets=1,if=debuff.festering_wound.stack<=2\nactions.aoe_burst+=/wound_spender,cycle_targets=1\n\n# AoE Setup\nactions.aoe_setup+=/festering_strike,if=buff.festering_scythe.up\nactions.aoe_setup+=/any_dnd,if=!death_and_decay.ticking&(!talent.bursting_sores&!talent.vile_contagion||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||!buff.death_and_decay.up&talent.defile)\nactions.aoe_setup+=/wound_spender,target_if=debuff.chains_of_ice_trollbane_slow.up\nactions.aoe_setup+=/festering_strike,cycle_targets=1,if=!talent.vile_contagion\nactions.aoe_setup+=/festering_strike,cycle_targets=1,if=cooldown.vile_contagion.remains<5||death_knight.fwounded_targets>=cycle_enemies&debuff.festering_wound.stack<=4\nactions.aoe_setup+=/death_coil,if=!variable.pooling_runic_power&buff.sudden_doom.react&active_enemies<variable.epidemic_targets\nactions.aoe_setup+=/epidemic,if=!variable.pooling_runic_power&buff.sudden_doom.up\nactions.aoe_setup+=/festering_strike,cycle_targets=1,if=cooldown.apocalypse.remains<gcd&debuff.festering_wound.stack=0||death_knight.fwounded_targets<cycle_enemies\nactions.aoe_setup+=/death_coil,if=!variable.pooling_runic_power&active_enemies<variable.epidemic_targets\nactions.aoe_setup+=/epidemic,if=!variable.pooling_runic_power\n\n# Non-San'layn Cooldowns\nactions.cds+=/dark_transformation,if=active_enemies=1&(cooldown.apocalypse.remains<8||!talent.apocalypse||active_enemies>=1)||boss&fight_remains<20\nactions.cds+=/unholy_assault,if=active_enemies=1&(cooldown.apocalypse.remains<gcd*2||!talent.apocalypse||active_enemies>=2&buff.dark_transformation.up)||boss&fight_remains<20\nactions.cds+=/apocalypse,if=active_enemies=1||fight_remains<20\nactions.cds+=/outbreak,cycle_targets=1,if=target.time_to_die>dot.virulent_plague.remains&dot.virulent_plague.ticks_remain<5&(dot.virulent_plague.refreshable||talent.superstrain&(dot.frost_fever.refreshable||dot.blood_plague.refreshable))&(!talent.unholy_blight||talent.plaguebringer)&(!talent.raise_abomination||talent.raise_abomination&cooldown.raise_abomination.remains>dot.virulent_plague.ticks_remain*3)\nactions.cds+=/abomination_limb,if=active_enemies=1&!buff.sudden_doom.up&(buff.festermight.up&buff.festermight.stack>8||!talent.festermight)&(pet.apoc_ghoul.remains<5||!talent.apocalypse)&debuff.festering_wound.stack<=2||boss&fight_remains<12\n\n### Non-San'layn AoE Cooldowns\nactions.cds_aoe+=/unholy_assault,cycle_targets=1,if=active_enemies>1&(cooldown.vile_contagion.remains<3||cooldown.vile_contagion.remains>40||!talent.vile_contagion)\nactions.cds_aoe+=/vile_contagion,cycle_targets=1,if=debuff.festering_wound.stack>=4&(raid_event.adds.remains>4||!raid_event.adds.exists&fight_remains>4)&(raid_event.adds.exists&raid_event.adds.remains<=11||cooldown.any_dnd.remains<3||buff.death_and_decay.up&debuff.festering_wound.stack>=4)||active_enemies>1&debuff.festering_wound.stack=6\nactions.cds_aoe+=/dark_transformation,if=active_enemies>1&(cooldown.vile_contagion.remains>5||!talent.vile_contagion||death_and_decay.ticking||cooldown.death_and_decay.remains<3)\nactions.cds_aoe+=/outbreak,if=dot.virulent_plague.ticks_remain<5&(dot.virulent_plague.refreshable||talent.morbidity&!buff.gift_of_the_sanlayn.up&talent.superstrain&dot.frost_fever.refreshable&dot.blood_plague.refreshable)&(!talent.unholy_blight||talent.unholy_blight&cooldown.dark_transformation.remains)&(!talent.raise_abomination||talent.raise_abomination&cooldown.raise_abomination.remains)\nactions.cds_aoe+=/apocalypse,cycle_targets=1,if=active_enemies>1&rune<=3\nactions.cds_aoe+=/abomination_limb,if=active_enemies>1\n\n# San'layn AoE Cooldowns\nactions.cds_aoe_san+=/dark_transformation,if=active_enemies>1&buff.death_and_decay.up\nactions.cds_aoe_san+=/unholy_assault,cycle_targets=1,if=active_enemies>1&(cooldown.vile_contagion.remains<6||cooldown.vile_contagion.remains>40||!talent.vile_contagion)||boss&fight_remains<20\nactions.cds_aoe_san+=/vile_contagion,cycle_targets=1,if=debuff.festering_wound.stack>=4&(raid_event.adds.remains>4||!raid_event.adds.exists&fight_remains>4)&(raid_event.adds.exists&raid_event.adds.remains<=11||cooldown.any_dnd.remains<3||buff.death_and_decay.up&debuff.festering_wound.stack>=4)||active_enemies>1&debuff.festering_wound.stack=6\nactions.cds_aoe_san+=/outbreak,if=(dot.virulent_plague.refreshable||talent.morbidity&!buff.gift_of_the_sanlayn.up&talent.superstrain&dot.frost_fever.refreshable&dot.blood_plague.refreshable)&(!talent.unholy_blight||talent.unholy_blight&cooldown.dark_transformation.remains>15%((2*talent.superstrain)+(2*talent.ebon_fever)+(2*talent.plaguebringer)))&(!talent.raise_abomination||talent.raise_abomination&cooldown.raise_abomination.remains>15%((2*talent.superstrain)+(2*talent.ebon_fever)+(2*talent.plaguebringer)))\nactions.cds_aoe_san+=/apocalypse,cycle_targets=1,if=active_enemies>1&rune<=3\nactions.cds_aoe_san+=/abomination_limb,if=active_enemies>1\n\n# San'layn Cooldowns\nactions.cds_san+=/dark_transformation,if=active_enemies>=1&active_enemies=1&(talent.apocalypse&pet.apoc_ghoul.active||!talent.apocalypse)||boss&fight_remains<20\nactions.cds_san+=/unholy_assault,if=active_enemies=1&(buff.dark_transformation.up&buff.dark_transformation.remains<12)||boss&fight_remains<20\nactions.cds_san+=/apocalypse,if=active_enemies=1||fight_remains<20\nactions.cds_san+=/outbreak,cycle_targets=1,if=target.time_to_die>dot.virulent_plague.remains&dot.virulent_plague.ticks_remain<5&(dot.virulent_plague.refreshable||talent.morbidity&buff.infliction_of_sorrow.up&talent.superstrain&dot.frost_fever.refreshable&dot.blood_plague.refreshable)&(!talent.unholy_blight||talent.unholy_blight&cooldown.dark_transformation.remains)&(!talent.raise_abomination||talent.raise_abomination&cooldown.raise_abomination.remains)\nactions.cds_san+=/abomination_limb,if=active_enemies>=1&active_enemies=1&!buff.gift_of_the_sanlayn.up&!buff.sudden_doom.up&buff.festermight.up&debuff.festering_wound.stack<=2||!buff.gift_of_the_sanlayn.up&fight_remains<12\n\n# Cleave\nactions.cleave+=/any_dnd,if=!death_and_decay.ticking\nactions.cleave+=/death_coil,if=!variable.pooling_runic_power\nactions.cleave+=/festering_strike,cycle_targets=1,if=!variable.pop_wounds&debuff.festering_wound.stack<4||buff.festering_scythe.up\nactions.cleave+=/festering_strike,cycle_targets=1,if=cooldown.apocalypse.remains<variable.apoc_timing&debuff.festering_wound.stack<4\nactions.cleave+=/wound_spender,if=variable.pop_wounds\n\n# San'layn Fishing\nactions.san_fishing+=/antimagic_shell,if=death_knight.ams_absorb_percent>0&runic_power<40\nactions.san_fishing+=/any_dnd,if=!buff.death_and_decay.up&!buff.vampiric_strike.up\nactions.san_fishing+=/death_coil,if=buff.sudden_doom.up&talent.doomed_bidding\nactions.san_fishing+=/soul_reaper,if=target.health.pct<=35&fight_remains>5\nactions.san_fishing+=/death_coil,if=!buff.vampiric_strike.up\nactions.san_fishing+=/wound_spender,if=(debuff.festering_wound.stack>=3-pet.abomination.active&cooldown.apocalypse.remains>variable.apoc_timing)||buff.vampiric_strike.up\nactions.san_fishing+=/festering_strike,if=debuff.festering_wound.stack<3-pet.abomination.active\n\n# Single Target San'layn\nactions.san_st+=/any_dnd,if=!death_and_decay.ticking&talent.unholy_ground&cooldown.dark_transformation.remains<5\nactions.san_st+=/death_coil,if=buff.sudden_doom.up&buff.gift_of_the_sanlayn.remains&(talent.doomed_bidding||talent.rotten_touch)||rune<3&!buff.runic_corruption.up\nactions.san_st+=/wound_spender,if=buff.gift_of_the_sanlayn.up&buff.vampiric_strike.up||talent.gift_of_the_sanlayn&buff.dark_transformation.up&buff.dark_transformation.remains<gcd\nactions.san_st+=/soul_reaper,if=target.health.pct<=35&!buff.gift_of_the_sanlayn.up&fight_remains>5\nactions.san_st+=/wound_spender,if=buff.vampiric_strike.up&debuff.festering_wound.stack>=1\nactions.san_st+=/festering_strike,if=(debuff.festering_wound.stack=0&cooldown.apocalypse.remains<variable.apoc_timing)||(talent.gift_of_the_sanlayn&!buff.gift_of_the_sanlayn.up||!talent.gift_of_the_sanlayn)&(buff.festering_scythe.up||debuff.festering_wound.stack<=1)\nactions.san_st+=/wound_spender,if=(!talent.apocalypse||cooldown.apocalypse.remains>variable.apoc_timing)&(debuff.festering_wound.stack>=3-pet.abomination.active||buff.vampiric_strike.up)\nactions.san_st+=/death_coil,if=!variable.pooling_runic_power&debuff.death_rot.remains<gcd||(buff.sudden_doom.up&debuff.festering_wound.stack>=1||rune<2)\nactions.san_st+=/wound_spender,if=debuff.festering_wound.stack>4\nactions.san_st+=/death_coil,if=!variable.pooling_runic_power\n\n# Trinkets San'layn\nactions.san_trinkets+=/use_item,name=fyralath_the_dreamrender,if=dot.mark_of_fyralath.ticking&(active_enemies<5||active_enemies>21||boss&fight_remains<4)&(pet.abomination.active||pet.army_ghoul.active||!talent.raise_abomination&!talent.army_of_the_dead||time>15)\n## actions.san_trinkets+=/do_treacherous_transmitter_task,use_off_gcd=1,if=buff.errant_manaforge_emission.up&buff.dark_transformation.up&buff.errant_manaforge_emission.remains<2||buff.cryptic_instructions.up&buff.dark_transformation.up&buff.cryptic_instructions.remains<2||buff.realigning_nexus_convergence_divergence.up&buff.dark_transformation.up&buff.realigning_nexus_convergence_divergence.remains<2\nactions.san_trinkets+=/use_item,name=treacherous_transmitter,if=(active_enemies>1||active_enemies=1)&cooldown.dark_transformation.remains<10\nactions.san_trinkets+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&(buff.dark_transformation.up&buff.dark_transformation.remains<variable.trinket_1_duration*0.73&(variable.trinket_priority=1||trinket.2.cooldown.remains||!trinket.2.has_cooldown))||variable.trinket_1_duration>=fight_remains&boss\nactions.san_trinkets+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&(buff.dark_transformation.up&buff.dark_transformation.remains<variable.trinket_2_duration*0.73&(variable.trinket_priority=2||trinket.1.cooldown.remains||!trinket.1.has_cooldown))||variable.trinket_2_duration>=fight_remains&boss\nactions.san_trinkets+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.1.cast_time>0&!buff.gift_of_the_sanlayn.up||!trinket.1.cast_time>0)&(variable.damage_trinket_priority=1||trinket.2.cooldown.remains||!trinket.2.has_cooldown||!talent.summon_gargoyle&!talent.army_of_the_dead&!talent.raise_abomination||!talent.summon_gargoyle&talent.army_of_the_dead&(!talent.raise_abomination&cooldown.army_of_the_dead.remains>20||talent.raise_abomination&cooldown.raise_abomination.remains>20)||!talent.summon_gargoyle&!talent.army_of_the_dead&!talent.raise_abomination&cooldown.dark_transformation.remains>20||talent.summon_gargoyle&cooldown.summon_gargoyle.remains>20&!pet.gargoyle.active)||boss&fight_remains<15\nactions.san_trinkets+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.2.cast_time>0&!buff.gift_of_the_sanlayn.up||!trinket.2.cast_time>0)&(variable.damage_trinket_priority=2||trinket.1.cooldown.remains||!trinket.1.has_cooldown||!talent.summon_gargoyle&!talent.army_of_the_dead&!talent.raise_abomination||!talent.summon_gargoyle&talent.army_of_the_dead&(!talent.raise_abomination&cooldown.army_of_the_dead.remains>20||talent.raise_abomination&cooldown.raise_abomination.remains>20)||!talent.summon_gargoyle&!talent.army_of_the_dead&!talent.raise_abomination&cooldown.dark_transformation.remains>20||talent.summon_gargoyle&cooldown.summon_gargoyle.remains>20&!pet.gargoyle.active)||boss&fight_remains<15\n\n# Single Taget Non-San'layn\nactions.st+=/soul_reaper,if=target.health.pct<=35&fight_remains>5\nactions.st+=/wound_spender,if=debuff.chains_of_ice_trollbane_slow.up\nactions.st+=/any_dnd,if=talent.unholy_ground&!buff.death_and_decay.up&(pet.apoc_ghoul.active||pet.abomination.active||pet.gargoyle.active)\nactions.st+=/death_coil,if=!variable.pooling_runic_power&variable.spend_rp||boss&fight_remains<10\nactions.st+=/festering_strike,if=debuff.festering_wound.stack<4&(!variable.pop_wounds||buff.festering_scythe.up)\nactions.st+=/wound_spender,if=variable.pop_wounds\nactions.st+=/death_coil,if=!variable.pooling_runic_power\nactions.st+=/wound_spender,if=!variable.pop_wounds&debuff.festering_wound.stack>=4\n\n# Trinkets Non-San'layn\nactions.trinkets+=/use_item,name=fyralath_the_dreamrender,if=dot.mark_of_fyralath.ticking&(active_enemies<5||active_enemies>21||boss&fight_remains<4)&(pet.abomination.active||pet.army_ghoul.active||!talent.raise_abomination&!talent.army_of_the_dead||time>15)\n## actions.trinkets+=/do_treacherous_transmitter_task,use_off_gcd=1,if=buff.errant_manaforge_emission.up&(pet.apoc_ghoul.active||!talent.apocalypse&buff.dark_transformation.up)||buff.cryptic_instructions.up&(pet.apoc_ghoul.active||!talent.apocalypse&buff.dark_transformation.up)||buff.realigning_nexus_convergence_divergence.up&(pet.apoc_ghoul.active||!talent.apocalypse&buff.dark_transformation.up)\nactions.trinkets+=/use_item,name=treacherous_transmitter,if=(active_enemies>1||active_enemies=1)&cooldown.dark_transformation.remains<10\nactions.trinkets+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&(variable.trinket_priority=1||!trinket.2.has_cooldown||trinket.2.cooldown.remains>20&(!talent.apocalypse&buff.dark_transformation.up||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=variable.trinket_1_duration&pet.apoc_ghoul.remains>5))&(talent.army_of_the_dead&!talent.raise_abomination&pet.army_ghoul.active&pet.army_ghoul.remains<=variable.trinket_1_duration&pet.army_ghoul.remains>10||talent.raise_abomination&pet.abomination.active&pet.abomination.remains<=variable.trinket_1_duration&pet.abomination.remains>10||talent.apocalypse&pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=variable.trinket_1_duration+3&pet.apoc_ghoul.remains>5||!talent.raise_abomination&!talent.apocalypse&buff.dark_transformation.up||trinket.2.cooldown.remains)||fight_remains<=variable.trinket_1_duration&boss\nactions.trinkets+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&(variable.trinket_priority=2||!trinket.1.has_cooldown||trinket.1.cooldown.remains>20&(!talent.apocalypse&buff.dark_transformation.up||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=variable.trinket_2_duration&pet.apoc_ghoul.remains>5))&(talent.army_of_the_dead&!talent.raise_abomination&pet.army_ghoul.active&pet.army_ghoul.remains<=variable.trinket_2_duration&pet.army_ghoul.remains>10||talent.raise_abomination&pet.abomination.active&pet.abomination.remains<=variable.trinket_2_duration&pet.abomination.remains>10||talent.apocalypse&pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=variable.trinket_2_duration+3&pet.apoc_ghoul.remains>5||!talent.raise_abomination&!talent.apocalypse&buff.dark_transformation.up||trinket.1.cooldown.remains)||fight_remains<=variable.trinket_2_duration&boss\nactions.trinkets+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(variable.damage_trinket_priority=1||trinket.2.cooldown.remains||!trinket.2.has_cooldown||!talent.summon_gargoyle&!talent.army_of_the_dead&!talent.raise_abomination||!talent.summon_gargoyle&talent.army_of_the_dead&(!talent.raise_abomination&cooldown.army_of_the_dead.remains>20||talent.raise_abomination&cooldown.raise_abomination.remains>20)||!talent.summon_gargoyle&!talent.army_of_the_dead&!talent.raise_abomination&cooldown.dark_transformation.remains>20||talent.summon_gargoyle&cooldown.summon_gargoyle.remains>20&!pet.gargoyle.active)||boss&fight_remains<15\nactions.trinkets+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(variable.damage_trinket_priority=2||trinket.1.cooldown.remains||!trinket.1.has_cooldown||!talent.summon_gargoyle&!talent.army_of_the_dead&!talent.raise_abomination||!talent.summon_gargoyle&talent.army_of_the_dead&(!talent.raise_abomination&cooldown.army_of_the_dead.remains>20||talent.raise_abomination&cooldown.raise_abomination.remains>20)||!talent.summon_gargoyle&!talent.army_of_the_dead&!talent.raise_abomination&cooldown.dark_transformation.remains>20||talent.summon_gargoyle&cooldown.summon_gargoyle.remains>20&!pet.gargoyle.active)||boss&fight_remains<15",
|
|
["author"] = "SimulationCraft",
|
|
},
|
|
["Frost DK"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241206,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-12-06: SimC update\n\n2024-11-21: Implement State Expression \"breath_ticks_left\" to help prevent dropping out of breath list prematurely\n\n2024-11-01: Update APL to remove nested actions\n\n2024-10-30.2: Merge SimC update with Refactor inline with WoWHead\n\n2024-10-30: SimC update\n\n2024-10-29: Allow trinket use with PoF disabled; don't waste Reaper's Mark\n\n2024-10-23: Fix Soul Reaper\n\n2024-10-22: 11.0.5\n\n2024-10-21: SimC update\n\n2024-10-11: Update from SimC; handle PoF/BoS desyncs\n\n2024-09-28: Minor adjustments\n\n2024-09-14, 09-21: SimC update\n\n2024-09-10: Fix pooling_runes\n\n2024-08-26, 08-28, 09-04, 09-05, 09-08, 09-09: Sim update\n\n2024-07-30, 08-14, 08-15, 08-24: Sim update\n\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["single_target"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "frost_strike",
|
|
["description"] = "Single Target Rotation",
|
|
["criteria"] = "talent.a_feast_of_souls.enabled & debuff.razorice.stack = 5 & talent.shattering_blade.enabled & buff.a_feast_of_souls.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.stack = 2 || buff.exterminate.up",
|
|
["action"] = "obliterate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( debuff.razorice.stack = 5 & talent.shattering_blade.enabled ) || ( rune < 2 & ! talent.icebreaker.enabled )",
|
|
["action"] = "frost_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.rime_buffs & talent.icebreaker.enabled",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.up & ! variable.pooling_runes",
|
|
["action"] = "obliterate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > 5 & target.time_to_pct_35 < 5 & target.time_to_pct_0 > 5 & rune > 2",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & ( variable.rp_buffs || ( ! talent.shattering_blade.enabled & runic_power.deficit < 20 ) )",
|
|
["action"] = "frost_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rime.up & ( ! talent.breath_of_sindragosa.enabled || talent.rage_of_the_frozen_champion.enabled || cooldown.breath_of_sindragosa.remains )",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & ! ( main_hand.2h || talent.shattering_blade.enabled )",
|
|
["action"] = "frost_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runes & main_hand.2h",
|
|
["action"] = "obliterate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power",
|
|
["action"] = "frost_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runes",
|
|
["action"] = "obliterate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.frost_fever.ticking",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune < 2 & runic_power.deficit > 25 & ( ! talent.breath_of_sindragosa.enabled || variable.true_breath_cooldown > cooldown.horn_of_winter.duration - 15 )",
|
|
["action"] = "horn_of_winter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.breath_of_sindragosa.enabled & runic_power.deficit > 20",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
["cold_heart"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "chains_of_ice",
|
|
["description"] = "Cold Heart",
|
|
["criteria"] = "fight_remains < gcd.max & ( rune < 2 || ! buff.killing_machine.up & ( ! main_hand.2h & buff.cold_heart.stack >= 4 || main_hand.2h & buff.cold_heart.stack > 8 ) || buff.killing_machine.up & ( ! main_hand.2h & buff.cold_heart.stack > 8 || main_hand.2h & buff.cold_heart.stack > 10 ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.obliteration.enabled & buff.pillar_of_frost.up & buff.cold_heart.stack >= 10 & ( buff.pillar_of_frost.remains < gcd.max * ( 1 + ( talent.frostwyrms_fury.enabled & cooldown.frostwyrms_fury.ready ) ) || buff.unholy_strength.up & buff.unholy_strength.remains < gcd.max )",
|
|
["action"] = "chains_of_ice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.obliteration.enabled & death_knight.runeforge.fallen_crusader & ! buff.pillar_of_frost.up & cooldown.pillar_of_frost.remains > 15 & ( buff.cold_heart.stack >= 10 & buff.unholy_strength.up || buff.cold_heart.stack >= 13 )",
|
|
["action"] = "chains_of_ice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.obliteration.enabled & ! death_knight.runeforge.fallen_crusader & buff.cold_heart.stack >= 10 & ! buff.pillar_of_frost.up & cooldown.pillar_of_frost.remains > 20",
|
|
["action"] = "chains_of_ice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.obliteration.enabled & ! buff.pillar_of_frost.up & ( buff.cold_heart.stack >= 14 & buff.unholy_strength.up || buff.cold_heart.stack >= 19 || cooldown.pillar_of_frost.remains < 3 & buff.cold_heart.stack >= 14 )",
|
|
["action"] = "chains_of_ice",
|
|
},
|
|
},
|
|
["obliteration"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "obliterate",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "buff.killing_machine.up & ( buff.exterminate.up || fight_remains < gcd.max * 2 )",
|
|
["description"] = "Obliteration Active Rotation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.stack < 2 & buff.pillar_of_frost.remains < gcd.max & variable.rime_buffs",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.stack < 2 & buff.pillar_of_frost.remains < gcd.max & ! buff.death_and_decay.up & variable.ga_priority",
|
|
["action"] = "glacial_advance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "frost_strike",
|
|
["criteria"] = "buff.killing_machine.stack < 2 & buff.pillar_of_frost.remains < gcd.max & ! buff.death_and_decay.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "frost_strike",
|
|
["criteria"] = "debuff.razorice.stack = 5 & talent.shattering_blade.enabled & talent.a_feast_of_souls.enabled & buff.a_feast_of_souls.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "obliterate",
|
|
["criteria"] = "buff.killing_machine.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > 5 & target.time_to_pct_35 < 5 & target.time_to_pct_0 > 5 & rune > 2",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "howling_blast",
|
|
["criteria"] = "! buff.killing_machine.up & ( ! dot.frost_fever.ticking )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "glacial_advance",
|
|
["criteria"] = "( variable.ga_priority || debuff.razorice.stack < 5 ) & ( ! death_knight.runeforge.razorice & ( debuff.razorice.stack < 5 || debuff.razorice.remains < gcd.max * 3 ) || ( ( variable.rp_buffs || rune < 2 ) & active_enemies > 1 ) )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "frost_strike",
|
|
["criteria"] = "( rune < 2 || variable.rp_buffs || debuff.razorice.stack = 5 & talent.shattering_blade.enabled ) & ! variable.pooling_runic_power & ( ! talent.glacial_advance.enabled || active_enemies = 1 || talent.shattered_frost.enabled )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rime.up",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "frost_strike",
|
|
["criteria"] = "! variable.pooling_runic_power & ( ! talent.glacial_advance.enabled || active_enemies = 1 || talent.shattered_frost.enabled )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "glacial_advance",
|
|
["criteria"] = "! variable.pooling_runic_power & variable.ga_priority",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "frost_strike",
|
|
["criteria"] = "! variable.pooling_runic_power",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune < 3",
|
|
["action"] = "horn_of_winter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune < 1 & runic_power < 30",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.killing_machine.up",
|
|
["action"] = "howling_blast",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["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.",
|
|
["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 ) )",
|
|
["value"] = "1",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["var_name"] = "trinket_1_sync",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["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 ) )",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_cooldown & ( 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 ) || trinket.t1.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_cooldown & ( 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 ) || trinket.t2.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_1_duration",
|
|
["criteria"] = "trinket.t1.is.treacherous_transmitter",
|
|
["value_else"] = "trinket.t1.buff_duration",
|
|
["value"] = "15",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_duration",
|
|
["criteria"] = "trinket.t2.is.treacherous_transmitter",
|
|
["value_else"] = "trinket.t2.buff_duration",
|
|
["value"] = "15",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs & ( trinket.t2.has_cooldown || ! trinket.t1.has_cooldown ) || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / variable.trinket_2_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) * ( 1 + ( ( trinket.t2.ilvl - trinket.t1.ilvl ) / 100 ) ) ) > ( ( trinket.t1.cooldown.duration / variable.trinket_1_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) * ( 1 + ( ( trinket.t1.ilvl - trinket.t2.ilvl ) / 100 ) ) )",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "damage_trinket_priority",
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_2_buffs & trinket.t2.ilvl >= trinket.t1.ilvl",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.algethar_puzzle_box || trinket.t1.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_1_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.algethar_puzzle_box || trinket.t2.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_2_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.gathering_storm.enabled || talent.biting_cold.enabled",
|
|
["var_name"] = "rw_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "17",
|
|
["var_name"] = "breath_rp_cost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.rage_of_the_frozen_champion.enabled || talent.icebreaker.enabled || talent.bind_in_darkness.enabled",
|
|
["var_name"] = "static_rime_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "breath_rp_threshold",
|
|
["default"] = "settings.bos_rp",
|
|
["description"] = "APL Variable Option: How much Runic Power to pool before casting Breath of Sindragosa",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "erw_breath_rp_trigger",
|
|
["default"] = "70",
|
|
["description"] = "APL Variable Option: Used with erw_breath_rune_trigger to determine when resources are low enough to use Empower Rune Weapon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "erw_breath_rune_trigger",
|
|
["default"] = "3",
|
|
["description"] = "APL Variable Option: Used with erw_breath_rp_trigger to determine when resources are low enough to use Empower Rune Weapon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "oblit_rune_pooling",
|
|
["default"] = "4",
|
|
["description"] = "APL Variable Option: How many Runes the APL will try to pool for Pillar of Frost with Obliteration. It is not a guarantee, just a goal.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "breath_rime_rp_threshold",
|
|
["default"] = "60",
|
|
["description"] = "APL Variable Option: Amount of Runic Power pooled during Breath of Sindragosa to be able to use Rime",
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "obliterate",
|
|
["description"] = "AoE Action List",
|
|
["criteria"] = "buff.killing_machine.up & talent.cleaving_strikes.enabled & buff.death_and_decay.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "frost_strike",
|
|
["criteria"] = "! variable.pooling_runic_power & debuff.razorice.stack = 5 & talent.shattering_blade.enabled & ( talent.shattered_frost.enabled || active_enemies < 4 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "howling_blast",
|
|
["criteria"] = "! dot.frost_fever.ticking",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rime.up",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.stack > 0",
|
|
["action"] = "obliterate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "glacial_advance",
|
|
["criteria"] = "! variable.pooling_runic_power & ( variable.ga_priority || debuff.razorice.stack < 5 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "frost_strike",
|
|
["criteria"] = "! variable.pooling_runic_power",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "obliterate",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune < 2 & runic_power.deficit > 25 & ( ! talent.breath_of_sindragosa.enabled || variable.true_breath_cooldown > cooldown.horn_of_winter.duration - 15 )",
|
|
["action"] = "horn_of_winter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit > 25",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
["breath"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "obliterate",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "buff.killing_machine.stack = 2",
|
|
["description"] = "Breath Active Rotation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > 5 & target.time_to_pct_35 < 5 & target.time_to_pct_0 > 5 & runic_power > 50",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.rime_buffs || ! buff.killing_machine.up & buff.pillar_of_frost.up & talent.obliteration.enabled & ! buff.bonegrinder_frost.up ) & runic_power > ( variable.breath_rime_rp_threshold - ( talent.rage_of_the_frozen_champion.enabled * 6 ) ) || ! dot.frost_fever.ticking",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune < 2 & runic_power.deficit > 30 & ( ! buff.empower_rune_weapon.up || runic_power < variable.breath_rp_cost * 2 * gcd.max )",
|
|
["action"] = "horn_of_winter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "obliterate",
|
|
["criteria"] = "buff.killing_machine.up || runic_power.deficit > 20",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.breath_dying",
|
|
["action"] = "remorseless_winter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! death_and_decay.ticking & ( variable.st_planning & talent.unholy_ground.enabled & runic_power.deficit >= 10 & ! talent.obliteration.enabled || variable.breath_dying )",
|
|
["action"] = "any_dnd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.breath_dying",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power < 60",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rime.up",
|
|
["action"] = "howling_blast",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Interrupt",
|
|
["action"] = "mind_freeze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies = 1",
|
|
["description"] = "Variables",
|
|
["var_name"] = "st_planning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies > 1",
|
|
["var_name"] = "adds_remain",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( variable.st_planning || variable.adds_remain )",
|
|
["var_name"] = "sending_cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.rime.up & ( variable.static_rime_buffs || talent.avalanche.enabled & ! talent.arctic_assault.enabled & debuff.razorice.stack < 5 )",
|
|
["var_name"] = "rime_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.unleashed_frenzy.enabled & ( buff.unleashed_frenzy.remains < gcd.max * 3 || buff.unleashed_frenzy.stack < 3 ) || talent.icy_talons.enabled & ( buff.icy_talons.remains < gcd.max * 3 || buff.icy_talons.stack < ( 3 + ( 2 * talent.smothering_offense.enabled ) + ( 2 * talent.dark_talons.enabled ) ) )",
|
|
["var_name"] = "rp_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.pillar_of_frost.enabled & buff.pillar_of_frost.up & ( talent.obliteration.enabled & buff.pillar_of_frost.remains > 10 || ! talent.obliteration.enabled ) || ! talent.pillar_of_frost.enabled & buff.empower_rune_weapon.up || ! talent.pillar_of_frost.enabled & ! talent.empower_rune_weapon.enabled || active_enemies >= 2 & buff.pillar_of_frost.up",
|
|
["var_name"] = "cooldown_check",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "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.",
|
|
["criteria"] = "cooldown.breath_of_sindragosa.remains > cooldown.pillar_of_frost.remains",
|
|
["value"] = "cooldown.breath_of_sindragosa.remains",
|
|
["action"] = "variable",
|
|
["value_else"] = "cooldown.pillar_of_frost.remains",
|
|
["var_name"] = "true_breath_cooldown",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "oblit_pooling_time",
|
|
["criteria"] = "runic_power < 35 & rune < 2 & cooldown.pillar_of_frost.remains_expected < 10",
|
|
["value_else"] = "3",
|
|
["value"] = "( ( cooldown.pillar_of_frost.remains_expected + 1 ) / gcd.max ) / ( ( rune + 1 ) * ( ( runic_power + 5 ) ) ) * 100",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "breath_pooling_time",
|
|
["criteria"] = "runic_power.deficit > 10 & variable.true_breath_cooldown < 10",
|
|
["value_else"] = "2",
|
|
["value"] = "( ( variable.true_breath_cooldown + 1 ) / gcd.max ) / ( ( rune + 1 ) * ( runic_power + 20 ) ) * 100",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "rune < variable.oblit_rune_pooling & talent.obliteration.enabled & ( ! talent.breath_of_sindragosa.enabled || variable.true_breath_cooldown > 0 ) & cooldown.pillar_of_frost.remains_expected < variable.oblit_pooling_time",
|
|
["var_name"] = "pooling_runes",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.breath_of_sindragosa.enabled & ( variable.true_breath_cooldown < variable.breath_pooling_time || fight_remains < 30 & ! cooldown.breath_of_sindragosa.remains ) || talent.obliteration.enabled & ( ! talent.breath_of_sindragosa.enabled || cooldown.breath_of_sindragosa.remains > 30 ) & runic_power < 35 & cooldown.pillar_of_frost.remains < variable.oblit_pooling_time",
|
|
["var_name"] = "pooling_runic_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( ! talent.shattered_frost.enabled & talent.shattering_blade.enabled & active_enemies >= 4 ) || ( ! talent.shattered_frost.enabled & ! talent.shattering_blade.enabled & active_enemies >= 2 )",
|
|
["var_name"] = "ga_priority",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "runic_power < variable.breath_rp_cost * 2 * gcd.max & rune.time_to_2 > runic_power / variable.breath_rp_cost",
|
|
["var_name"] = "breath_dying",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( buff.pillar_of_frost.remains < gcd.max || ( buff.unholy_strength.up & buff.unholy_strength.remains < gcd.max ) || ( talent.bonegrinder.rank = 2 & buff.bonegrinder_frost.up & buff.bonegrinder_frost.remains < gcd.max ) ) & ( active_enemies > 1 || debuff.razorice.stack = 5 || ! death_knight.runeforge.razorice & ( ! talent.glacial_advance.enabled || ! talent.avalanche.enabled || ! talent.arctic_assault.enabled ) || talent.shattering_blade.enabled )",
|
|
["var_name"] = "fwf_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit > 40 & death_knight.first_ams_cast < time & ( ! talent.breath_of_sindragosa.enabled || talent.breath_of_sindragosa.enabled & variable.true_breath_cooldown > cooldown.antimagic_shell.duration )",
|
|
["action"] = "antimagic_shell",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "treacherous_transmitter",
|
|
["criteria"] = "cooldown.pillar_of_frost.remains < 6 & variable.sending_cds & ( variable.trinket_1_buffs & variable.trinket_2_buffs || ! talent.breath_of_sindragosa.enabled || cooldown.breath_of_sindragosa.remains < 6 ) || boss & fight_remains < 30",
|
|
["description"] = "Trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["criteria"] = "! trinket.t1.cast_time > 0 & variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ( ! variable.trinket_2_buffs & buff.breath_of_sindragosa.up || ! talent.breath_of_sindragosa.enabled || variable.trinket_2_buffs ) & buff.pillar_of_frost.remains > variable.trinket_1_duration / 2 ) & ( ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 )",
|
|
["description"] = "Trinkets The trinket with the highest estimated value, will be used first and paired with Pillar of Frost.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! trinket.t2.cast_time > 0 & variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ( ! variable.trinket_1_buffs & buff.breath_of_sindragosa.up || ! talent.breath_of_sindragosa.enabled || variable.trinket_2_buffs ) & buff.pillar_of_frost.remains > variable.trinket_2_duration / 2 ) & ( ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "trinket.t1.cast_time > 0 & variable.trinket_1_buffs & ! variable.trinket_1_manual & ! buff.pillar_of_frost.up & ( ! talent.breath_of_sindragosa.enabled || ! buff.breath_of_sindragosa.up & runic_power > variable.breath_rp_threshold & ( ( buff.pillar_of_frost.remains > 6 || cooldown.pillar_of_frost.ready ) & variable.sending_cds ) ) & ( ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || variable.trinket_1_duration >= fight_remains & boss",
|
|
["description"] = "Channeled buff trinkets will be used before cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "trinket.t2.cast_time > 0 & variable.trinket_2_buffs & ! variable.trinket_2_manual & ! buff.pillar_of_frost.up & ( ! talent.breath_of_sindragosa.enabled || ! buff.breath_of_sindragosa.up & runic_power > variable.breath_rp_threshold & ( ( buff.pillar_of_frost.remains > 6 || cooldown.pillar_of_frost.ready ) & variable.sending_cds ) ) & ( ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || variable.trinket_2_duration >= fight_remains & boss",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & ( variable.damage_trinket_priority = 1 || ( ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains ) ) & ( ( trinket.t1.cast_time > 0 & ( ! talent.breath_of_sindragosa.enabled || ! buff.breath_of_sindragosa.up || ! variable.breath_dying ) & ! buff.pillar_of_frost.up || ! trinket.t1.cast_time > 0 ) & ( ! variable.trinket_2_buffs || cooldown.pillar_of_frost.remains > 20 ) || ! talent.pillar_of_frost.enabled ) || boss & fight_remains < 15",
|
|
["description"] = "If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.trinket_2_buffs & ! variable.trinket_2_manual & ( variable.damage_trinket_priority = 2 || ( ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains ) ) & ( ( trinket.t2.cast_time > 0 & ( ! talent.breath_of_sindragosa.enabled || ! buff.breath_of_sindragosa.up || ! variable.breath_dying ) & ! buff.pillar_of_frost.up || ! trinket.t2.cast_time > 0 ) & ( ! variable.trinket_1_buffs || cooldown.pillar_of_frost.remains > 20 ) || ! talent.pillar_of_frost.enabled ) || boss & fight_remains < 15",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "howling_blast",
|
|
["description"] = "Maintain Frost Fever, Icy Talons and Unleashed Frenzy",
|
|
["criteria"] = "! dot.frost_fever.ticking & active_enemies >= 2 & ( ! talent.breath_of_sindragosa.enabled || ! buff.breath_of_sindragosa.up ) & ( ! talent.obliteration.enabled || talent.wither_away.enabled || talent.obliteration.enabled & ( ! cooldown.pillar_of_frost.ready || buff.pillar_of_frost.up & ! buff.killing_machine.up ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "potion",
|
|
["description"] = "Cooldowns",
|
|
["criteria"] = "( 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 || active_enemies >= 2 & buff.pillar_of_frost.up ) || boss & fight_remains < 25",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.obliteration.enabled & ! buff.pillar_of_frost.up & variable.sending_cds & ( ! hero_tree.deathbringer || cooldown.reapers_mark.remains < 5 ) || boss & fight_remains < 15",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.obliteration.enabled & variable.sending_cds",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.rw_buffs & variable.sending_cds & ( ! talent.arctic_assault.enabled || ! buff.pillar_of_frost.up ) & ( cooldown.pillar_of_frost.remains > 20 || cooldown.pillar_of_frost.remains < 4 || ( buff.gathering_storm.stack = 10 & buff.remorseless_winter.remains < gcd.max ) ) & fight_remains > 10",
|
|
["action"] = "remorseless_winter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.sending_cds & ( ! talent.arctic_assault.enabled || ! buff.pillar_of_frost.up )",
|
|
["action"] = "chill_streak",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.obliteration.enabled & ! talent.breath_of_sindragosa.enabled & buff.pillar_of_frost.up || boss & fight_remains < 20",
|
|
["action"] = "empower_rune_weapon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.breath_of_sindragosa.up & ( runic_power < 40 || runic_power < variable.erw_breath_rp_trigger & rune < variable.erw_breath_rune_trigger )",
|
|
["action"] = "empower_rune_weapon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.breath_of_sindragosa.enabled & ! talent.obliteration.enabled & ! buff.empower_rune_weapon.up & rune < 5 & ( cooldown.pillar_of_frost.remains < 7 || buff.pillar_of_frost.up || ! talent.pillar_of_frost.enabled )",
|
|
["action"] = "empower_rune_weapon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.obliteration.enabled & ! talent.breath_of_sindragosa.enabled & variable.sending_cds || boss & fight_remains < 20",
|
|
["action"] = "pillar_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.breath_of_sindragosa.enabled & variable.sending_cds & cooldown.breath_of_sindragosa.remains & buff.unleashed_frenzy.up & ( ! hero_tree.deathbringer || rune > 1 )",
|
|
["action"] = "pillar_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.obliteration.enabled & ! talent.breath_of_sindragosa.enabled & variable.sending_cds",
|
|
["action"] = "pillar_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "breath_of_sindragosa",
|
|
["criteria"] = "! buff.breath_of_sindragosa.up & runic_power > variable.breath_rp_threshold & ( rune < 2 || runic_power > 80 ) & ( ( buff.pillar_of_frost.up || cooldown.pillar_of_frost.remains > 30 || cooldown.pillar_of_frost.ready ) & variable.sending_cds || fight_remains < 30 ) || ( time < 10 & rune < 1 )",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "reapers_mark",
|
|
["criteria"] = "( boss || target.time_to_die > 13 ) & debuff.reapers_mark_debuff.down & ( buff.pillar_of_frost.up || cooldown.pillar_of_frost.remains > 5 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hero_tree.rider_of_the_apocalypse & talent.apocalypse_now.enabled & variable.sending_cds & ( ! talent.breath_of_sindragosa.enabled & buff.pillar_of_frost.up || buff.breath_of_sindragosa.up ) || boss & fight_remains < 20",
|
|
["action"] = "frostwyrms_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.apocalypse_now.enabled & active_enemies = 1 & ( talent.pillar_of_frost.enabled & buff.pillar_of_frost.up & ! talent.obliteration.enabled || ! talent.pillar_of_frost.enabled ) & ( ! raid_event.adds.exists || raid_event.adds.in > cooldown.frostwyrms_fury.duration + raid_event.adds.duration ) & variable.fwf_buffs || fight_remains < 3",
|
|
["action"] = "frostwyrms_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.apocalypse_now.enabled & 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 - raid_event.adds.in - raid_event.adds.duration ) & variable.fwf_buffs",
|
|
["action"] = "frostwyrms_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.apocalypse_now.enabled & talent.obliteration.enabled & ( talent.pillar_of_frost.enabled & buff.pillar_of_frost.up & ! main_hand.two_hand || ! buff.pillar_of_frost.up & main_hand.2h & cooldown.pillar_of_frost.remains || ! talent.pillar_of_frost.enabled ) & variable.fwf_buffs & ( ! raid_event.adds.exists || raid_event.adds.in > cooldown.frostwyrms_fury.duration + raid_event.adds.duration )",
|
|
["action"] = "frostwyrms_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raise_dead",
|
|
["criteria"] = "buff.pillar_of_frost.up",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.killing_machine.up & ! buff.pillar_of_frost.up",
|
|
["action"] = "frostscythe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hero_tree.deathbringer & ! buff.death_and_decay.up & variable.st_planning & cooldown.reapers_mark.remains < gcd.max * 2",
|
|
["action"] = "any_dnd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.death_and_decay.up & variable.adds_remain & ( buff.pillar_of_frost.up & buff.killing_machine.up & ( talent.enduring_strength.enabled || buff.pillar_of_frost.remains > 5 ) || ! buff.pillar_of_frost.up & ( cooldown.death_and_decay.charges = 2 || cooldown.pillar_of_frost.remains > cooldown.death_and_decay.duration || ! talent.the_long_winter.enabled & cooldown.pillar_of_frost.remains < gcd.max * 2 ) || fight_remains < 15 ) & ( active_enemies > 5 || talent.cleaving_strikes.enabled & active_enemies >= 2 )",
|
|
["action"] = "any_dnd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blood_fury",
|
|
["description"] = "Racial Abilities",
|
|
["criteria"] = "variable.cooldown_check",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cooldown_check",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cooldown_check",
|
|
["action"] = "arcane_pulse",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cooldown_check",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cooldown_check",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cooldown_check",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.obliteration.enabled & ! buff.pillar_of_frost.up & buff.unholy_strength.up",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.obliteration.enabled & buff.pillar_of_frost.up & ( buff.unholy_strength.up & buff.unholy_strength.remains < gcd.max * 3 || buff.pillar_of_frost.remains < gcd.max * 3 )",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 & ! talent.arctic_assault.enabled ) || boss & fight_remains <= gcd.max )",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cold_heart",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "buff.breath_of_sindragosa.up || breath_ticks_left > 0",
|
|
["list_name"] = "breath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.obliteration.enabled & buff.pillar_of_frost.up & ! buff.breath_of_sindragosa.up",
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "obliteration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies >= 2",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies = 1",
|
|
["list_name"] = "single_target",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241206,
|
|
["warnings"] = "The import for 'single_target' required some automated changes.\nLine 1: Converted 'talent.a_feast_of_souls' to 'talent.a_feast_of_souls.enabled' (1x).\nLine 1: Converted 'talent.shattering_blade' to 'talent.shattering_blade.enabled' (1x).\nLine 3: Converted 'talent.shattering_blade' to 'talent.shattering_blade.enabled' (1x).\nLine 3: Converted 'talent.icebreaker' to 'talent.icebreaker.enabled' (1x).\nLine 4: Converted 'talent.icebreaker' to 'talent.icebreaker.enabled' (1x).\nLine 7: Converted 'talent.shattering_blade' to 'talent.shattering_blade.enabled' (1x).\nLine 8: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 8: Converted 'talent.rage_of_the_frozen_champion' to 'talent.rage_of_the_frozen_champion.enabled' (1x).\nLine 9: Converted 'talent.shattering_blade' to 'talent.shattering_blade.enabled' (1x).\nLine 14: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 15: 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 'default' required some automated changes.\nLine 5: Converted 'talent.avalanche' to 'talent.avalanche.enabled' (1x).\nLine 5: Converted 'talent.arctic_assault' to 'talent.arctic_assault.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 6: Converted 'talent.smothering_offense' to 'talent.smothering_offense.enabled' (1x).\nLine 6: Converted 'talent.dark_talons' to 'talent.dark_talons.enabled' (1x).\nLine 7: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 7: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 7: Converted 'talent.obliteration' to 'talent.obliteration.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 9: Converted operations in '((cooldown.pillar_of_frost.remains_expected+1)%gcd.max)%((rune+1)*((runic_power+5)))*100' to '((cooldown.pillar_of_frost.remains_expected+1)/gcd.max)/((rune+1)*((runic_power+5)))*100'.\nLine 10: Converted operations in '((variable.true_breath_cooldown+1)%gcd.max)%((rune+1)*(runic_power+20))*100' to '((variable.true_breath_cooldown+1)/gcd.max)/((rune+1)*(runic_power+20))*100'.\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 12: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 12: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 12: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 13: Converted 'talent.shattered_frost' to 'talent.shattered_frost.enabled' (1x).\nLine 13: Converted 'talent.shattering_blade' to 'talent.shattering_blade.enabled' (1x).\nLine 13: Converted 'talent.shattered_frost' to 'talent.shattered_frost.enabled' (1x).\nLine 13: Converted 'talent.shattering_blade' to 'talent.shattering_blade.enabled' (1x).\nLine 14: Converted operations in 'runic_power<variable.breath_rp_cost*2*gcd.max&rune.time_to_2>runic_power%variable.breath_rp_cost' to 'runic_power<variable.breath_rp_cost*2*gcd.max&rune.time_to_2>runic_power/variable.breath_rp_cost'.\nLine 15: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 15: Converted 'talent.avalanche' to 'talent.avalanche.enabled' (1x).\nLine 15: Converted 'talent.arctic_assault' to 'talent.arctic_assault.enabled' (1x).\nLine 15: Converted 'talent.shattering_blade' to 'talent.shattering_blade.enabled' (1x).\nLine 16: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.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 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 18: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 18: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 18: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 18: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 18: Converted operations in '!trinket.t1.cast_time>0&variable.trinket_1_buffs&!variable.trinket_1_manual&((!variable.trinket_2_buffs&buff.breath_of_sindragosa.up||!talent.breath_of_sindragosa.enabled||variable.trinket_2_buffs)&buff.pillar_of_frost.remains>variable.trinket_1_duration%2)&(!trinket.t2.has_cooldown||trinket.t2.cooldown.remains||variable.trinket_priority=1)' to '!trinket.t1.cast_time>0&variable.trinket_1_buffs&!variable.trinket_1_manual&((!variable.trinket_2_buffs&buff.breath_of_sindragosa.up||!talent.breath_of_sindragosa.enabled||variable.trinket_2_buffs)&buff.pillar_of_frost.remains>variable.trinket_1_duration/2)&(!trinket.t2.has_cooldown||trinket.t2.cooldown.remains||variable.trinket_priority=1)'.\nLine 19: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 19: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 19: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 19: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 19: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 19: Converted operations in '!trinket.t2.cast_time>0&variable.trinket_2_buffs&!variable.trinket_2_manual&((!variable.trinket_1_buffs&buff.breath_of_sindragosa.up||!talent.breath_of_sindragosa.enabled||variable.trinket_2_buffs)&buff.pillar_of_frost.remains>variable.trinket_2_duration%2)&(!trinket.t1.has_cooldown||trinket.t1.cooldown.remains||variable.trinket_priority=2)' to '!trinket.t2.cast_time>0&variable.trinket_2_buffs&!variable.trinket_2_manual&((!variable.trinket_1_buffs&buff.breath_of_sindragosa.up||!talent.breath_of_sindragosa.enabled||variable.trinket_2_buffs)&buff.pillar_of_frost.remains>variable.trinket_2_duration/2)&(!trinket.t1.has_cooldown||trinket.t1.cooldown.remains||variable.trinket_priority=2)'.\nLine 20: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 20: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 20: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 20: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 20: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 21: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 21: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 21: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 21: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 21: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 22: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 22: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 22: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 22: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 22: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 22: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 22: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 23: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 23: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 23: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 23: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 23: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 23: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 23: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 24: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 24: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 24: Converted 'talent.wither_away' to 'talent.wither_away.enabled' (1x).\nLine 24: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 25: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 25: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 25: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 25: Converted 'talent.empower_rune_weapon' to 'talent.empower_rune_weapon.enabled' (1x).\nLine 26: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 27: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 28: Converted 'talent.arctic_assault' to 'talent.arctic_assault.enabled' (1x).\nLine 29: Converted 'talent.arctic_assault' to 'talent.arctic_assault.enabled' (1x).\nLine 30: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 30: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 32: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 32: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 32: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 33: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 33: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 34: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 35: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 35: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 38: Converted 'talent.apocalypse_now' to 'talent.apocalypse_now.enabled' (1x).\nLine 38: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 39: Converted 'talent.apocalypse_now' to 'talent.apocalypse_now.enabled' (1x).\nLine 39: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 39: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 39: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 40: Converted 'talent.apocalypse_now' to 'talent.apocalypse_now.enabled' (1x).\nLine 40: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 41: Converted 'talent.apocalypse_now' to 'talent.apocalypse_now.enabled' (1x).\nLine 41: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 41: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 41: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 45: Converted 'talent.enduring_strength' to 'talent.enduring_strength.enabled' (1x).\nLine 45: Converted 'talent.the_long_winter' to 'talent.the_long_winter.enabled' (1x).\nLine 45: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\nLine 52: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 53: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 54: Converted 'talent.cold_heart' to 'talent.cold_heart.enabled' (1x).\nLine 54: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 54: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 54: Converted 'talent.avalanche' to 'talent.avalanche.enabled' (1x).\nLine 54: Converted 'talent.arctic_assault' to 'talent.arctic_assault.enabled' (1x).\nLine 56: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 1: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 1: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 1: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.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 1: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.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 1: 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 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 2: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.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 2: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.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 2: 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 3: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 3: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (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 3: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 4: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.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 4: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\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 5: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 6: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 6: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 6: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 7: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 7: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (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.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.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 7: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (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.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 7: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 7: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nLine 7: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 7: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs&(trinket.t2.has_cooldown||!trinket.t1.has_cooldown)||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%variable.trinket_2_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync)*(1+((trinket.t2.ilvl-trinket.t1.ilvl)%100)))>((trinket.t1.cooldown.duration%variable.trinket_1_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync)*(1+((trinket.t1.ilvl-trinket.t2.ilvl)%100)))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs&(trinket.t2.has_cooldown||!trinket.t1.has_cooldown)||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/variable.trinket_2_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync)*(1+((trinket.t2.ilvl-trinket.t1.ilvl)/100)))>((trinket.t1.cooldown.duration/variable.trinket_1_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync)*(1+((trinket.t1.ilvl-trinket.t2.ilvl)/100)))'.\nLine 8: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 8: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nLine 9: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 9: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 10: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\nLine 10: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 11: Converted 'talent.gathering_storm' to 'talent.gathering_storm.enabled' (1x).\nLine 11: Converted 'talent.biting_cold' to 'talent.biting_cold.enabled' (1x).\nLine 13: Converted 'talent.rage_of_the_frozen_champion' to 'talent.rage_of_the_frozen_champion.enabled' (1x).\nLine 13: Converted 'talent.icebreaker' to 'talent.icebreaker.enabled' (1x).\nLine 13: Converted 'talent.bind_in_darkness' to 'talent.bind_in_darkness.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 1: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\nLine 2: Converted 'talent.shattering_blade' to 'talent.shattering_blade.enabled' (1x).\nLine 2: Converted 'talent.shattered_frost' to 'talent.shattered_frost.enabled' (1x).\nLine 9: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\n\nThe import for 'breath' required some automated changes.\nLine 3: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 3: Converted 'talent.rage_of_the_frozen_champion' to 'talent.rage_of_the_frozen_champion.enabled' (1x).\nLine 7: Converted 'talent.unholy_ground' to 'talent.unholy_ground.enabled' (1x).\nLine 7: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\n\nThe import for 'obliteration' required some automated changes.\nLine 5: Converted 'talent.shattering_blade' to 'talent.shattering_blade.enabled' (1x).\nLine 5: Converted 'talent.a_feast_of_souls' to 'talent.a_feast_of_souls.enabled' (1x).\nLine 10: Converted 'talent.shattering_blade' to 'talent.shattering_blade.enabled' (1x).\nLine 10: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 10: Converted 'talent.shattered_frost' to 'talent.shattered_frost.enabled' (1x).\nLine 12: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 12: Converted 'talent.shattered_frost' to 'talent.shattered_frost.enabled' (1x).\n\nImported 7 action lists.\n",
|
|
["spec"] = 251,
|
|
["profile"] = "# 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_cooldown&(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)||trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_cooldown&(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)||trinket.2.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_1_duration,op=setif,value=15,value_else=trinket.1.proc.any_dps.duration,condition=trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_duration,op=setif,value=15,value_else=trinket.2.proc.any_dps.duration,condition=trinket.2.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs&(trinket.2.has_cooldown||!trinket.1.has_cooldown)||variable.trinket_2_buffs&((trinket.2.cooldown.duration%variable.trinket_2_duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync)*(1+((trinket.2.ilvl-trinket.1.ilvl)%100)))>((trinket.1.cooldown.duration%variable.trinket_1_duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync)*(1+((trinket.1.ilvl-trinket.2.ilvl)%100)))\nactions.precombat+=/variable,name=damage_trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&!variable.trinket_2_buffs&trinket.2.ilvl>=trinket.1.ilvl\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.algethar_puzzle_box||trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.algethar_puzzle_box||trinket.2.is.treacherous_transmitter\nactions.precombat+=/variable,name=rw_buffs,value=talent.gathering_storm||talent.biting_cold\nactions.precombat+=/variable,name=breath_rp_cost,value=17\nactions.precombat+=/variable,name=static_rime_buffs,value=talent.rage_of_the_frozen_champion||talent.icebreaker||talent.bind_in_darkness\n# APL Variable Option: How much Runic Power to pool before casting Breath of Sindragosa\nactions.precombat+=/variable,name=breath_rp_threshold,default=settings.bos_rp,op=reset\n# APL Variable Option: Used with erw_breath_rune_trigger to determine when resources are low enough to use Empower Rune Weapon\nactions.precombat+=/variable,name=erw_breath_rp_trigger,default=70,op=reset\n# APL Variable Option: Used with erw_breath_rp_trigger to determine when resources are low enough to use Empower Rune Weapon\nactions.precombat+=/variable,name=erw_breath_rune_trigger,default=3,op=reset\n# APL Variable Option: How many Runes the APL will try to pool for Pillar of Frost with Obliteration. It is not a guarantee, just a goal.\nactions.precombat+=/variable,name=oblit_rune_pooling,default=4,op=reset\n# APL Variable Option: Amount of Runic Power pooled during Breath of Sindragosa to be able to use Rime\nactions.precombat+=/variable,name=breath_rime_rp_threshold,default=60,op=reset\n\n# Interrupt\nactions+=/mind_freeze\n\n# Variables\nactions+=/variable,name=st_planning,value=active_enemies=1\nactions+=/variable,name=adds_remain,value=active_enemies>1\nactions+=/variable,name=sending_cds,value=(variable.st_planning||variable.adds_remain)\nactions+=/variable,name=rime_buffs,value=buff.rime.up&(variable.static_rime_buffs||talent.avalanche&!talent.arctic_assault&debuff.razorice.stack<5)\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+(2*talent.smothering_offense)+(2*talent.dark_talons)))\nactions+=/variable,name=cooldown_check,value=talent.pillar_of_frost&buff.pillar_of_frost.up&(talent.obliteration&buff.pillar_of_frost.remains>10||!talent.obliteration)||!talent.pillar_of_frost&buff.empower_rune_weapon.up||!talent.pillar_of_frost&!talent.empower_rune_weapon||active_enemies>=2&buff.pillar_of_frost.up\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=true_breath_cooldown,op=setif,value=cooldown.breath_of_sindragosa.remains,value_else=cooldown.pillar_of_frost.remains,condition=cooldown.breath_of_sindragosa.remains>cooldown.pillar_of_frost.remains\nactions+=/variable,name=oblit_pooling_time,op=setif,value=((cooldown.pillar_of_frost.remains_expected+1)%gcd.max)%((rune+1)*((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=((variable.true_breath_cooldown+1)%gcd.max)%((rune+1)*(runic_power+20))*100,value_else=2,condition=runic_power.deficit>10&variable.true_breath_cooldown<10\nactions+=/variable,name=pooling_runes,value=rune<variable.oblit_rune_pooling&talent.obliteration&(!talent.breath_of_sindragosa||variable.true_breath_cooldown>0)&cooldown.pillar_of_frost.remains_expected<variable.oblit_pooling_time\nactions+=/variable,name=pooling_runic_power,value=talent.breath_of_sindragosa&(variable.true_breath_cooldown<variable.breath_pooling_time||fight_remains<30&!cooldown.breath_of_sindragosa.remains)||talent.obliteration&(!talent.breath_of_sindragosa||cooldown.breath_of_sindragosa.remains>30)&runic_power<35&cooldown.pillar_of_frost.remains<variable.oblit_pooling_time\nactions+=/variable,name=ga_priority,value=(!talent.shattered_frost&talent.shattering_blade&active_enemies>=4)||(!talent.shattered_frost&!talent.shattering_blade&active_enemies>=2)\nactions+=/variable,name=breath_dying,value=runic_power<variable.breath_rp_cost*2*gcd.max&rune.time_to_2>runic_power%variable.breath_rp_cost\nactions+=/variable,name=fwf_buffs,value=(buff.pillar_of_frost.remains<gcd.max||(buff.unholy_strength.up&buff.unholy_strength.remains<gcd.max)||(talent.bonegrinder.rank=2&buff.bonegrinder_frost.up&buff.bonegrinder_frost.remains<gcd.max))&(active_enemies>1||debuff.razorice.stack=5||!death_knight.runeforge.razorice&(!talent.glacial_advance||!talent.avalanche||!talent.arctic_assault)||talent.shattering_blade)\n\n## High Priority Actions 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.high_prio+=/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&death_knight.first_ams_cast<time&(!talent.breath_of_sindragosa||talent.breath_of_sindragosa&variable.true_breath_cooldown>cooldown.antimagic_shell.duration)\n# Trinkets\nactions+=/use_item,use_off_gcd=1,name=treacherous_transmitter,if=cooldown.pillar_of_frost.remains<6&variable.sending_cds&(variable.trinket_1_buffs&variable.trinket_2_buffs||!talent.breath_of_sindragosa||cooldown.breath_of_sindragosa.remains<6)||boss&fight_remains<30\n### When to complete the Tracherous Transmitter task given.\n## actions+=/do_treacherous_transmitter_task,use_off_gcd=1,if=buff.pillar_of_frost.up||fight_remains<15\n# Trinkets The trinket with the highest estimated value, will be used first and paired with Pillar of Frost.\nactions+=/use_item,slot=trinket1,if=!trinket.1.cast_time>0&variable.trinket_1_buffs&!variable.trinket_1_manual&((!variable.trinket_2_buffs&buff.breath_of_sindragosa.up||!talent.breath_of_sindragosa||variable.trinket_2_buffs)&buff.pillar_of_frost.remains>variable.trinket_1_duration%2)&(!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)\nactions+=/use_item,slot=trinket2,if=!trinket.2.cast_time>0&variable.trinket_2_buffs&!variable.trinket_2_manual&((!variable.trinket_1_buffs&buff.breath_of_sindragosa.up||!talent.breath_of_sindragosa||variable.trinket_2_buffs)&buff.pillar_of_frost.remains>variable.trinket_2_duration%2)&(!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)\n# Channeled buff trinkets will be used before cooldowns\nactions+=/use_item,slot=trinket1,use_off_gcd=1,if=trinket.1.cast_time>0&variable.trinket_1_buffs&!variable.trinket_1_manual&!buff.pillar_of_frost.up&(!talent.breath_of_sindragosa||!buff.breath_of_sindragosa.up&runic_power>variable.breath_rp_threshold&((buff.pillar_of_frost.remains>6||cooldown.pillar_of_frost.ready)&variable.sending_cds))&(!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||variable.trinket_1_duration>=fight_remains&boss\nactions+=/use_item,slot=trinket2,use_off_gcd=1,if=trinket.2.cast_time>0&variable.trinket_2_buffs&!variable.trinket_2_manual&!buff.pillar_of_frost.up&(!talent.breath_of_sindragosa||!buff.breath_of_sindragosa.up&runic_power>variable.breath_rp_threshold&((buff.pillar_of_frost.remains>6||cooldown.pillar_of_frost.ready)&variable.sending_cds))&(!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||variable.trinket_2_duration>=fight_remains&boss\n# If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.\nactions+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&(variable.damage_trinket_priority=1||(!trinket.2.has_cooldown||trinket.2.cooldown.remains))&((trinket.1.cast_time>0&(!talent.breath_of_sindragosa||!buff.breath_of_sindragosa.up||!variable.breath_dying)&!buff.pillar_of_frost.up||!trinket.1.cast_time>0)&(!variable.trinket_2_buffs||cooldown.pillar_of_frost.remains>20)||!talent.pillar_of_frost)||boss&fight_remains<15\nactions+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&(variable.damage_trinket_priority=2||(!trinket.1.has_cooldown||trinket.1.cooldown.remains))&((trinket.2.cast_time>0&(!talent.breath_of_sindragosa||!buff.breath_of_sindragosa.up||!variable.breath_dying)&!buff.pillar_of_frost.up||!trinket.2.cast_time>0)&(!variable.trinket_1_buffs||cooldown.pillar_of_frost.remains>20)||!talent.pillar_of_frost)||boss&fight_remains<15\n# Maintain Frost Fever, Icy Talons and Unleashed Frenzy\nactions+=/howling_blast,if=!dot.frost_fever.ticking&active_enemies>=2&(!talent.breath_of_sindragosa||!buff.breath_of_sindragosa.up)&(!talent.obliteration||talent.wither_away||talent.obliteration&(!cooldown.pillar_of_frost.ready||buff.pillar_of_frost.up&!buff.killing_machine.up))\n\n# Cooldowns\nactions+=/potion,if=(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||active_enemies>=2&buff.pillar_of_frost.up)||boss&fight_remains<25\nactions+=/abomination_limb,if=talent.obliteration&!buff.pillar_of_frost.up&variable.sending_cds&(!hero_tree.deathbringer||cooldown.reapers_mark.remains<5)||boss&fight_remains<15\nactions+=/abomination_limb,if=!talent.obliteration&variable.sending_cds\nactions+=/remorseless_winter,if=variable.rw_buffs&variable.sending_cds&(!talent.arctic_assault||!buff.pillar_of_frost.up)&(cooldown.pillar_of_frost.remains>20||cooldown.pillar_of_frost.remains<4||(buff.gathering_storm.stack=10&buff.remorseless_winter.remains<gcd.max))&fight_remains>10\nactions+=/chill_streak,if=variable.sending_cds&(!talent.arctic_assault||!buff.pillar_of_frost.up)\nactions+=/empower_rune_weapon,if=talent.obliteration&!talent.breath_of_sindragosa&buff.pillar_of_frost.up||boss&fight_remains<20\nactions+=/empower_rune_weapon,if=buff.breath_of_sindragosa.up&(runic_power<40||runic_power<variable.erw_breath_rp_trigger&rune<variable.erw_breath_rune_trigger)\nactions+=/empower_rune_weapon,if=!talent.breath_of_sindragosa&!talent.obliteration&!buff.empower_rune_weapon.up&rune<5&(cooldown.pillar_of_frost.remains<7||buff.pillar_of_frost.up||!talent.pillar_of_frost)\nactions+=/pillar_of_frost,if=talent.obliteration&!talent.breath_of_sindragosa&variable.sending_cds||boss&fight_remains<20\nactions+=/pillar_of_frost,if=talent.breath_of_sindragosa&variable.sending_cds&cooldown.breath_of_sindragosa.remains&buff.unleashed_frenzy.up&(!hero_tree.deathbringer||rune>1)\nactions+=/pillar_of_frost,if=!talent.obliteration&!talent.breath_of_sindragosa&variable.sending_cds\nactions+=/breath_of_sindragosa,use_off_gcd=1,if=!buff.breath_of_sindragosa.up&runic_power>variable.breath_rp_threshold&(rune<2||runic_power>80)&((buff.pillar_of_frost.up||cooldown.pillar_of_frost.remains>30||cooldown.pillar_of_frost.ready)&variable.sending_cds||fight_remains<30)||(time<10&rune<1)\nactions+=/reapers_mark,cycle_targets=1,if=(boss||target.time_to_die>13)&debuff.reapers_mark_debuff.down&(buff.pillar_of_frost.up||cooldown.pillar_of_frost.remains>5)\nactions+=/frostwyrms_fury,if=hero_tree.rider_of_the_apocalypse&talent.apocalypse_now&variable.sending_cds&(!talent.breath_of_sindragosa&buff.pillar_of_frost.up||buff.breath_of_sindragosa.up)||boss&fight_remains<20\nactions+=/frostwyrms_fury,if=!talent.apocalypse_now&active_enemies=1&(talent.pillar_of_frost&buff.pillar_of_frost.up&!talent.obliteration||!talent.pillar_of_frost)&(!raid_event.adds.exists||raid_event.adds.in>cooldown.frostwyrms_fury.duration+raid_event.adds.duration)&variable.fwf_buffs||fight_remains<3\nactions+=/frostwyrms_fury,if=!talent.apocalypse_now&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-raid_event.adds.in-raid_event.adds.duration)&variable.fwf_buffs\nactions+=/frostwyrms_fury,if=!talent.apocalypse_now&talent.obliteration&(talent.pillar_of_frost&buff.pillar_of_frost.up&!main_hand.two_hand||!buff.pillar_of_frost.up&main_hand.2h&cooldown.pillar_of_frost.remains||!talent.pillar_of_frost)&variable.fwf_buffs&(!raid_event.adds.exists||raid_event.adds.in>cooldown.frostwyrms_fury.duration+raid_event.adds.duration)\nactions+=/raise_dead,use_off_gcd=1,if=buff.pillar_of_frost.up\nactions+=/frostscythe,if=!buff.killing_machine.up&!buff.pillar_of_frost.up\nactions+=/any_dnd,if=hero_tree.deathbringer&!buff.death_and_decay.up&variable.st_planning&cooldown.reapers_mark.remains<gcd.max*2\nactions+=/any_dnd,if=!buff.death_and_decay.up&variable.adds_remain&(buff.pillar_of_frost.up&buff.killing_machine.up&(talent.enduring_strength||buff.pillar_of_frost.remains>5)||!buff.pillar_of_frost.up&(cooldown.death_and_decay.charges=2||cooldown.pillar_of_frost.remains>cooldown.death_and_decay.duration||!talent.the_long_winter&cooldown.pillar_of_frost.remains<gcd.max*2)||fight_remains<15)&(active_enemies>5||talent.cleaving_strikes&active_enemies>=2)\n\n\n# Racial Abilities\nactions+=/blood_fury,if=variable.cooldown_check\nactions+=/berserking,if=variable.cooldown_check\nactions+=/arcane_pulse,if=variable.cooldown_check\nactions+=/lights_judgment,if=variable.cooldown_check\nactions+=/ancestral_call,if=variable.cooldown_check\nactions+=/fireblood,if=variable.cooldown_check\nactions+=/bag_of_tricks,if=talent.obliteration&!buff.pillar_of_frost.up&buff.unholy_strength.up\nactions+=/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\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&!talent.arctic_assault)||boss&fight_remains<=gcd)\nactions+=/run_action_list,name=breath,strict=1,if=buff.breath_of_sindragosa.up||breath_ticks_left>0\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,strict=1,if=active_enemies>=2\nactions+=/call_action_list,name=single_target,strict=1,if=active_enemies=1\n\n\n# Cold Heart\nactions.cold_heart+=/chains_of_ice,if=fight_remains<gcd&(rune<2||!buff.killing_machine.up&(!main_hand.2h&buff.cold_heart.stack>=4||main_hand.2h&buff.cold_heart.stack>8)||buff.killing_machine.up&(!main_hand.2h&buff.cold_heart.stack>8||main_hand.2h&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>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>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.cold_heart.stack>=19||cooldown.pillar_of_frost.remains<3&buff.cold_heart.stack>=14)\n\n\n# Breath Active Rotation\nactions.breath+=/obliterate,cycle_targets=1,if=buff.killing_machine.stack=2\nactions.breath+=/soul_reaper,if=fight_remains>5&target.time_to_pct_35<5&target.time_to_pct_0>5&runic_power>50\nactions.breath+=/howling_blast,if=(variable.rime_buffs||!buff.killing_machine.up&buff.pillar_of_frost.up&talent.obliteration&!buff.bonegrinder_frost.up)&runic_power>(variable.breath_rime_rp_threshold-(talent.rage_of_the_frozen_champion*6))||!dot.frost_fever.ticking\nactions.breath+=/horn_of_winter,if=rune<2&runic_power.deficit>30&(!buff.empower_rune_weapon.up||runic_power<variable.breath_rp_cost*2*gcd.max)\nactions.breath+=/obliterate,cycle_targets=1,if=buff.killing_machine.up||runic_power.deficit>20\nactions.breath+=/remorseless_winter,if=variable.breath_dying\nactions.breath+=/any_dnd,if=!death_and_decay.ticking&(variable.st_planning&talent.unholy_ground&runic_power.deficit>=10&!talent.obliteration||variable.breath_dying)\nactions.breath+=/howling_blast,if=variable.breath_dying\nactions.breath+=/arcane_torrent,if=runic_power<60\nactions.breath+=/howling_blast,if=buff.rime.up\n\n\n# Obliteration Active Rotation\nactions.obliteration+=/obliterate,cycle_targets=1,if=buff.killing_machine.up&(buff.exterminate.up||fight_remains<gcd*2)\nactions.obliteration+=/howling_blast,if=buff.killing_machine.stack<2&buff.pillar_of_frost.remains<gcd&variable.rime_buffs\nactions.obliteration+=/glacial_advance,if=buff.killing_machine.stack<2&buff.pillar_of_frost.remains<gcd&!buff.death_and_decay.up&variable.ga_priority\nactions.obliteration+=/frost_strike,cycle_targets=1,if=buff.killing_machine.stack<2&buff.pillar_of_frost.remains<gcd&!buff.death_and_decay.up\nactions.obliteration+=/frost_strike,cycle_targets=1,if=debuff.razorice.stack=5&talent.shattering_blade&talent.a_feast_of_souls&buff.a_feast_of_souls.up\nactions.obliteration+=/obliterate,cycle_targets=1,if=buff.killing_machine.up\nactions.obliteration+=/soul_reaper,if=fight_remains>5&target.time_to_pct_35<5&target.time_to_pct_0>5&rune>2\nactions.obliteration+=/howling_blast,cycle_targets=1,if=!buff.killing_machine.up&(!dot.frost_fever.ticking)\nactions.obliteration+=/glacial_advance,cycle_targets=1,if=(variable.ga_priority||debuff.razorice.stack<5)&(!death_knight.runeforge.razorice&(debuff.razorice.stack<5||debuff.razorice.remains<gcd*3)||((variable.rp_buffs||rune<2)&active_enemies>1))\nactions.obliteration+=/frost_strike,cycle_targets=1,if=(rune<2||variable.rp_buffs||debuff.razorice.stack=5&talent.shattering_blade)&!variable.pooling_runic_power&(!talent.glacial_advance||active_enemies=1||talent.shattered_frost)\nactions.obliteration+=/howling_blast,if=buff.rime.up\nactions.obliteration+=/frost_strike,cycle_targets=1,if=!variable.pooling_runic_power&(!talent.glacial_advance||active_enemies=1||talent.shattered_frost)\nactions.obliteration+=/glacial_advance,cycle_targets=1,if=!variable.pooling_runic_power&variable.ga_priority\nactions.obliteration+=/frost_strike,cycle_targets=1,if=!variable.pooling_runic_power\nactions.obliteration+=/horn_of_winter,if=rune<3\nactions.obliteration+=/arcane_torrent,if=rune<1&runic_power<30\nactions.obliteration+=/howling_blast,if=!buff.killing_machine.up\n\n\n# AoE Action List\nactions.aoe+=/obliterate,if=buff.killing_machine.up&talent.cleaving_strikes&buff.death_and_decay.up\nactions.aoe+=/frost_strike,cycle_targets=1,if=!variable.pooling_runic_power&debuff.razorice.stack=5&talent.shattering_blade&(talent.shattered_frost||active_enemies<4)\nactions.aoe+=/howling_blast,cycle_targets=1,if=!dot.frost_fever.ticking\nactions.aoe+=/howling_blast,if=buff.rime.up\nactions.aoe+=/obliterate,if=buff.killing_machine.stack>0\nactions.aoe+=/glacial_advance,cycle_targets=1,if=!variable.pooling_runic_power&(variable.ga_priority||debuff.razorice.stack<5)\nactions.aoe+=/frost_strike,cycle_targets=1,if=!variable.pooling_runic_power\nactions.aoe+=/obliterate\nactions.aoe+=/horn_of_winter,if=rune<2&runic_power.deficit>25&(!talent.breath_of_sindragosa||variable.true_breath_cooldown>cooldown.horn_of_winter.duration-15)\nactions.aoe+=/arcane_torrent,if=runic_power.deficit>25\n\n\n# Single Target Rotation\nactions.single_target+=/frost_strike,if=talent.a_feast_of_souls&debuff.razorice.stack=5&talent.shattering_blade&buff.a_feast_of_souls.up\nactions.single_target+=/obliterate,if=buff.killing_machine.stack=2||buff.exterminate.up\nactions.single_target+=/frost_strike,if=(debuff.razorice.stack=5&talent.shattering_blade)||(rune<2&!talent.icebreaker)\nactions.single_target+=/howling_blast,if=variable.rime_buffs&talent.icebreaker\nactions.single_target+=/obliterate,if=buff.killing_machine.up&!variable.pooling_runes\nactions.single_target+=/soul_reaper,if=fight_remains>5&target.time_to_pct_35<5&target.time_to_pct_0>5&rune>2\nactions.single_target+=/frost_strike,if=!variable.pooling_runic_power&(variable.rp_buffs||(!talent.shattering_blade&runic_power.deficit<20))\nactions.single_target+=/howling_blast,if=buff.rime.up&(!talent.breath_of_sindragosa||talent.rage_of_the_frozen_champion||cooldown.breath_of_sindragosa.remains)\nactions.single_target+=/frost_strike,if=!variable.pooling_runic_power&!(main_hand.2h||talent.shattering_blade)\nactions.single_target+=/obliterate,if=!variable.pooling_runes&main_hand.2h\nactions.single_target+=/frost_strike,if=!variable.pooling_runic_power\nactions.single_target+=/obliterate,if=!variable.pooling_runes\nactions.single_target+=/howling_blast,if=!dot.frost_fever.ticking\nactions.single_target+=/horn_of_winter,if=rune<2&runic_power.deficit>25&(!talent.breath_of_sindragosa||variable.true_breath_cooldown>cooldown.horn_of_winter.duration-15)\nactions.single_target+=/arcane_torrent,if=!talent.breath_of_sindragosa&runic_power.deficit>20",
|
|
},
|
|
["Arcane"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241125,
|
|
["spec"] = 62,
|
|
["desc"] = "2024-11-03, 11-25: SimC update\n\n2024-10-27: SimC update\n\n2024-10-22: 11.0.5, fixes\n\n2024-09-22, 09-28: SimC update\n\n2024-09-10: Tweak opener\n\n2024-09-01, 09-03, 09-08: SimC update\n\n2024-08-29: SimC update\n\n2024-07-28: The War Within",
|
|
["lists"] = {
|
|
["sunfury_aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "This list is only used with a variable for extra information, it is not a default list called and is generally worse in every way",
|
|
["criteria"] = "( buff.arcane_soul.up & ( ( buff.clearcasting.stack < 3 ) || buff.arcane_soul.remains < gcd.max ) )",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_missiles",
|
|
["chain"] = "1",
|
|
["interrupt_if"] = "tick_time>gcd.remains&buff.aether_attunement.down",
|
|
["interrupt_immediate"] = "1",
|
|
["criteria"] = "buff.arcane_soul.up",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.arcane_surge.down & buff.siphon_storm.down & debuff.touch_of_the_magi.down & cooldown.evocation.remains > 15 & cooldown.touch_of_the_magi.remains > 15 ) & ( cooldown.arcane_orb.remains & action.arcane_orb.charges = 0 ) & fight_remains > 10",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_charge.stack < 2 & ( ! talent.high_voltage.enabled || ! buff.clearcasting.up )",
|
|
["action"] = "arcane_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( debuff.magis_spark_arcane_blast.up || buff.burden_of_power.up || buff.leydrinker.up ) & ! prev_gcd.1.arcane_blast )",
|
|
["action"] = "arcane_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.arcane_charge.stack = 4 || buff.glorious_incandescence.up || buff.aethervision.stack = 2 || buff.intuition.up ) & ( buff.nether_precision.up || buff.clearcasting.down )",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_missiles",
|
|
["chain"] = "1",
|
|
["interrupt_if"] = "tick_time>gcd.remains&buff.aether_attunement.down",
|
|
["interrupt_immediate"] = "1",
|
|
["criteria"] = "buff.clearcasting.up & ( buff.aether_attunement.up || talent.arcane_harmony.enabled )",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_charge.stack = 3 || buff.arcane_charge.stack = 2",
|
|
["action"] = "presence_of_mind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.reverberate.enabled || buff.arcane_charge.stack < 1",
|
|
["action"] = "arcane_explosion",
|
|
},
|
|
{
|
|
["action"] = "arcane_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_barrage",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "counterspell",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spellsteal",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! equipped.spymasters_web & ( buff.siphon_storm.up || ( ! talent.evocation.enabled & cooldown.arcane_surge.ready ) ) || equipped.spymasters_web & ( buff.spymasters_web.up || ( fight_remains > 330 & buff.siphon_storm.up ) )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.arcane_surge.down & debuff.touch_of_the_magi.down & active_enemies >= 2 )",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( prev_gcd.1.arcane_surge & variable.opener ) || ( ( prev_gcd.1.arcane_surge & ( fight_remains < 80 || target.health.pct < 35 || ! talent.arcane_bombardment.enabled || buff.spymasters_web.up ) ) || ( prev_gcd.1.arcane_surge & ! equipped.spymasters_web ) )",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( prev_gcd.1.arcane_surge & variable.opener ) || ( ( prev_gcd.1.arcane_surge & ( fight_remains < 80 || target.health.pct < 35 || ! talent.arcane_bombardment.enabled || buff.spymasters_web.up ) ) || ( prev_gcd.1.arcane_surge & ! equipped.spymasters_web ) )",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( prev_gcd.1.arcane_surge & variable.opener ) || ( ( prev_gcd.1.arcane_surge & ( fight_remains < 80 || target.health.pct < 35 || ! talent.arcane_bombardment.enabled || buff.spymasters_web.up ) ) || ( prev_gcd.1.arcane_surge & ! equipped.spymasters_web ) )",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( prev_gcd.1.arcane_surge & variable.opener ) || ( ( prev_gcd.1.arcane_surge & ( fight_remains < 80 || target.health.pct < 35 || ! talent.arcane_bombardment.enabled || buff.spymasters_web.up ) ) || ( prev_gcd.1.arcane_surge & ! equipped.spymasters_web ) )",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Trinket specific use cases vary, default is just with cooldowns",
|
|
["criteria"] = "prev_gcd.1.arcane_surge || prev_gcd.1.evocation || fight_remains < 20 || ! variable.steroid_trinket_equipped",
|
|
["action"] = "use_items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.spymasters_report.stack < 40",
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( prev_gcd.1.arcane_surge || prev_gcd.1.evocation ) & ( fight_remains < 80 || target.health.pct < 35 || ! talent.arcane_bombardment.enabled || ( buff.spymasters_report.stack = 40 & fight_remains > 240 ) ) || fight_remains < 20 )",
|
|
["name"] = "spymasters_web",
|
|
["action"] = "spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( prev_gcd.1.arcane_surge || prev_gcd.1.evocation || ( buff.siphon_storm.up & variable.opener ) || cooldown.evocation.remains < 4 || boss & fight_remains < 20 ) & ( buff.spymasters_report.stack < 35 )",
|
|
["name"] = "high_speakers_accretion",
|
|
["action"] = "high_speakers_accretion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.evocation.ready || cooldown.arcane_surge.ready || fight_remains < 20",
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.evocation.remains < 7 & cooldown.evocation.remains ) || buff.siphon_storm.remains > 15 || fight_remains < 20",
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.steroid_trinket_equipped || buff.siphon_storm.down || ( equipped.spymasters_web & target.health.pct > 35 )",
|
|
["name"] = "aberrant_spellforge",
|
|
["action"] = "aberrant_spellforge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.steroid_trinket_equipped || buff.siphon_storm.down",
|
|
["name"] = "mad_queens_mandate",
|
|
["action"] = "mad_queens_mandate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.steroid_trinket_equipped || buff.siphon_storm.down",
|
|
["name"] = "fearbreakers_echo",
|
|
["action"] = "fearbreakers_echo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.steroid_trinket_equipped || buff.siphon_storm.down",
|
|
["name"] = "mereldars_toll",
|
|
["action"] = "mereldars_toll",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "opener",
|
|
["criteria"] = "debuff.touch_of_the_magi.up & variable.opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 2",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Enter cooldowns, then action list depending on your hero talent choices",
|
|
["criteria"] = "variable.opener",
|
|
["list_name"] = "cd_opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.spellfire_spheres.enabled",
|
|
["list_name"] = "sunfury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.spellfire_spheres.enabled",
|
|
["list_name"] = "spellslinger",
|
|
},
|
|
{
|
|
["action"] = "arcane_barrage",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "arcane_intellect",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "aoe_target_count",
|
|
["default"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "9",
|
|
["var_name"] = "aoe_target_count",
|
|
["criteria"] = "! talent.arcing_cleave.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( cooldown.touch_of_the_magi.remains <= action.evocation.execution_time ) & ( cooldown.arcane_surge.remains <= action.evocation.execution_time || action.arcane_surge.time_since < 5 || cooldown.arcane_surge.remains > 15 ) & ( cooldown.evocation.up || action.evocation.time_since < 5 || cooldown.evocation.remains > 15 )",
|
|
["var_name"] = "opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.opener & ( buff.arcane_surge.up || cooldown.arcane_surge.remains > 30 ) || ( prev_gcd.1.arcane_surge & buff.arcane_charge.stack < 4 )",
|
|
["var_name"] = "touch_ready",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "equipped.gladiators_badge || equipped.signet_of_the_priory || equipped.high_speakers_accretion || equipped.spymasters_web || equipped.treacherous_transmitter || equipped.imperfect_ascendancy_serum || equipped.quickwick_candlestick",
|
|
["var_name"] = "steroid_trinket_equipped",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( equipped.gladiators_badge || equipped.signet_of_the_priory || equipped.high_speakers_accretion || equipped.spymasters_web || equipped.imperfect_ascendancy_serum || equipped.quickwick_candlestick ) & equipped.treacherous_transmitter",
|
|
["var_name"] = "transmitter_double_on_use",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "11",
|
|
["var_name"] = "treacherous_transmitter_precombat_cast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["action"] = "mirror_image",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.evocation.enabled",
|
|
["action"] = "arcane_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.evocation.enabled",
|
|
["action"] = "evocation",
|
|
},
|
|
},
|
|
["cd_opener"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.arcane_barrage & ( action.arcane_barrage.in_flight_remains <= 0.5 || gcd.remains <= 0.5 ) & ( buff.arcane_surge.up || cooldown.arcane_surge.remains > 30 ) || ( prev_gcd.1.arcane_surge & buff.arcane_charge.stack < 4 )",
|
|
["use_off_gcd"] = 1,
|
|
["description"] = "Touch of the Magi used when Arcane Barrage is mid-flight or if you just used Arcane Surge and you don't have 4 Arcane Charges, the wait simulates the time it takes to queue another spell after Touch when you Surge into Touch",
|
|
["action"] = "touch_of_the_magi",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.presence_of_mind.up",
|
|
["action"] = "arcane_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Orb for Charges on the opener if you have High Voltage as the Missiles will generate the remaining Charge you need",
|
|
["criteria"] = "talent.high_voltage.enabled",
|
|
["action"] = "arcane_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Barrage before Evocation if Tempo will expire",
|
|
["criteria"] = "buff.arcane_tempo.up & cooldown.evocation.ready & buff.arcane_tempo.remains < gcd.max * 5",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.arcane_surge.remains < ( gcd.max * 3 ) & cooldown.touch_of_the_magi.remains < ( gcd.max * 5 )",
|
|
["action"] = "evocation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["chain"] = "1",
|
|
["action"] = "arcane_missiles",
|
|
["line_cd"] = "30",
|
|
["interrupt_if"] = "tick_time>gcd.remains&buff.aether_attunement.down",
|
|
["interrupt_immediate"] = "1",
|
|
["criteria"] = "( ( prev_gcd.1.evocation || prev_gcd.1.arcane_surge ) || variable.opener ) & buff.nether_precision.down & buff.aether_attunement.down",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.touch_of_the_magi.remains < ( action.arcane_surge.execute_time + ( gcd.max * ( buff.arcane_charge.stack = 4 ) ) )",
|
|
["action"] = "arcane_surge",
|
|
},
|
|
},
|
|
["sunfury"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "For Sunfury, Shifting Power only when you're not under the effect of any cooldowns",
|
|
["criteria"] = "( ( buff.arcane_surge.down & buff.siphon_storm.down & debuff.touch_of_the_magi.down & cooldown.evocation.remains > 15 & cooldown.touch_of_the_magi.remains > 10 ) & fight_remains > 10 ) & buff.arcane_soul.down",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cancel_buff",
|
|
["use_off_gcd"] = 1,
|
|
["buff_name"] = "presence_of_mind",
|
|
["criteria"] = "( prev_gcd.1.arcane_blast & buff.presence_of_mind.stack = 1 ) || active_enemies < 4",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.touch_of_the_magi.remains <= gcd.max & buff.nether_precision.up & active_enemies < 4",
|
|
["action"] = "presence_of_mind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "AOE Barrage is optimized for funnel, tries to make sure you have Clearcasting if you have High Voltage or an Orb charge ready, second condition covers Aether Attunement optimizations with High Voltage, last condition is to Barrage anytime you have a refunder and are in execute in AOE.",
|
|
["criteria"] = "( buff.arcane_charge.stack = 4 & buff.burden_of_power.down & buff.nether_precision.up & active_enemies > 2 & ( ( talent.arcane_bombardment.enabled & target.health.pct < 35 ) || active_enemies > 4 ) & talent.arcing_cleave.enabled & ( ( talent.high_voltage.enabled & buff.clearcasting.up ) || ( cooldown.arcane_orb.remains < gcd.max || action.arcane_orb.charges > 0 ) ) ) || ( buff.aether_attunement.up & talent.high_voltage.enabled & buff.clearcasting.up & buff.arcane_charge.stack > 1 & active_enemies > 2 & ( target.health.pct < 35 || ! talent.arcane_bombardment.enabled || active_enemies > 4 ) ) || ( active_enemies > 2 & ( buff.aethervision.stack = 2 || buff.glorious_incandescence.up || buff.intuition.up ) & ( buff.nether_precision.up || ( target.health.pct < 35 & talent.arcane_bombardment.enabled & buff.clearcasting.down ) ) )",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Orb if you don't have High Voltage and a Clearcasting in AOE",
|
|
["criteria"] = "buff.arcane_charge.stack < 2 & buff.arcane_soul.down & ( ! talent.high_voltage.enabled || buff.clearcasting.down )",
|
|
["action"] = "arcane_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Soul changes missile priority a bit and allows for clipping Aether Attunement",
|
|
["action"] = "arcane_missiles",
|
|
["chain"] = "1",
|
|
["interrupt_if"] = "tick_time>gcd.remains",
|
|
["interrupt_immediate"] = "1",
|
|
["criteria"] = "buff.nether_precision.down & buff.clearcasting.up & ( buff.arcane_soul.up & buff.arcane_soul.remains > gcd.max * ( 4 - buff.clearcasting.stack ) )",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Barrage when you can restore charges, overlap buffs as much as possible, if you have no way to generate Nether Precision you can also send if under Enlightened threshold or during execute",
|
|
["criteria"] = "( buff.intuition.up || buff.aethervision.stack = 2 || buff.glorious_incandescence.up ) & ( ( ( target.health.pct < 35 & talent.arcane_bombardment.enabled ) || ( mana.pct < 70 & talent.enlightened.enabled & buff.arcane_surge.down & active_enemies < 3 ) ) || buff.glorious_incandescence.up ) & ( buff.nether_precision.up || buff.clearcasting.down ) & ( cooldown.touch_of_the_magi.remains > 6 || ! variable.touch_ready ) || ( buff.arcane_soul.up & ( ( buff.clearcasting.stack < 3 ) || buff.arcane_soul.remains < gcd.max ) ) || ( buff.arcane_charge.stack = 4 & variable.touch_ready )",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Missiles when it won't impact various Barrage conditions, interrupt the channel immediately after the GCD if you do not have Aether Attunement",
|
|
["action"] = "arcane_missiles",
|
|
["chain"] = "1",
|
|
["interrupt_if"] = "tick_time>gcd.remains&buff.aether_attunement.down",
|
|
["interrupt_immediate"] = "1",
|
|
["criteria"] = "buff.clearcasting.up & ( ( buff.nether_precision.down || buff.clearcasting.stack = 3 || ( talent.high_voltage.enabled & buff.arcane_charge.stack < 3 ) ) )",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.arcane_charge.stack = 3 || buff.arcane_charge.stack = 2 ) & active_enemies >= 3",
|
|
["action"] = "presence_of_mind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Explosion to build the first charge if you have none",
|
|
["criteria"] = "( talent.reverberate.enabled || buff.arcane_charge.stack < 1 ) & active_enemies >= 4",
|
|
["action"] = "arcane_explosion",
|
|
},
|
|
{
|
|
["action"] = "arcane_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_barrage",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["spellslinger_aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "This section is only called with a variable to aggressively AOE instead of focus funnel into one target, the overall dps is slightly higher but the priority dps is much longer",
|
|
["criteria"] = "buff.unerring_proficiency.stack = 30",
|
|
["action"] = "supernova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( buff.arcane_surge.down & buff.siphon_storm.down & debuff.touch_of_the_magi.down & cooldown.evocation.remains > 15 & cooldown.touch_of_the_magi.remains > 10 ) & ( cooldown.arcane_orb.remains & action.arcane_orb.charges = 0 ) & fight_remains > 10 ) || ( prev_gcd.1.arcane_barrage & ( buff.arcane_surge.up || debuff.touch_of_the_magi.up || cooldown.evocation.remains < 20 ) & talent.shifting_shards.enabled )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_charge.stack < 3",
|
|
["action"] = "arcane_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( debuff.magis_spark_arcane_blast.up || buff.leydrinker.up ) & ! prev_gcd.1.arcane_blast )",
|
|
["action"] = "arcane_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Clearcasting is exclusively spent on Arcane Missiles in AOE and always interrupted after the global cooldown ends except for Aether Attunement",
|
|
["criteria"] = "buff.aether_attunement.up & talent.high_voltage.enabled & buff.clearcasting.up & buff.arcane_charge.stack > 1",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_missiles",
|
|
["chain"] = "1",
|
|
["interrupt_if"] = "tick_time>gcd.remains&buff.aether_attunement.down",
|
|
["interrupt_immediate"] = "1",
|
|
["criteria"] = "buff.clearcasting.up & ( ( talent.high_voltage.enabled & buff.arcane_charge.stack < 4 ) || buff.nether_precision.down )",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Only use Presence of Mind at low charges, use these to get to 4 Charges quicker",
|
|
["criteria"] = "buff.arcane_charge.stack = 3 || buff.arcane_charge.stack = 2",
|
|
["action"] = "presence_of_mind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_charge.stack = 4",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.reverberate.enabled || buff.arcane_charge.stack < 1 )",
|
|
["action"] = "arcane_explosion",
|
|
},
|
|
{
|
|
["action"] = "arcane_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_barrage",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["spellslinger"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With Shifting Shards we can use Shifting Power whenever basically favoring cooldowns slightly, without it though we want to use it outside of cooldowns",
|
|
["criteria"] = "( ( ( ( ( action.arcane_orb.charges = talent.charged_orb.enabled ) & cooldown.arcane_orb.remains ) || cooldown.touch_of_the_magi.remains < 23 ) & buff.arcane_surge.down & buff.siphon_storm.down & debuff.touch_of_the_magi.down & cooldown.touch_of_the_magi.remains > ( 12 + 6 * gcd.max ) ) || ( prev_gcd.1.arcane_barrage & talent.shifting_shards.enabled & ( buff.arcane_surge.up || debuff.touch_of_the_magi.up || cooldown.evocation.remains < 20 ) ) ) & fight_remains > 10 & ( buff.arcane_tempo.remains > gcd.max * 2.5 || buff.arcane_tempo.down )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cancel_buff",
|
|
["use_off_gcd"] = 1,
|
|
["buff_name"] = "presence_of_mind",
|
|
["description"] = "In single target, use Presence of Mind at the very end of Touch of the Magi, then cancelaura the buff to start the cooldown, wait is to simulate the delay of hitting Presence of Mind after another spell cast",
|
|
["criteria"] = "prev_gcd.1.arcane_blast & buff.presence_of_mind.stack = 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.touch_of_the_magi.remains <= gcd.max & buff.nether_precision.up & active_enemies < variable.aoe_target_count & ! talent.unerring_proficiency.enabled",
|
|
["action"] = "presence_of_mind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.touch_of_the_magi.remains <= gcd.max & buff.unerring_proficiency.stack = 30",
|
|
["action"] = "supernova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( debuff.magis_spark_arcane_blast.up || ( buff.leydrinker.up & buff.arcane_charge.stack = 4 ) ) & ! prev_gcd.1.arcane_blast & buff.nether_precision.up )",
|
|
["action"] = "arcane_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Barrage if you have Touch ready, Tempo is about to expire or you have a Charge refunder with Nether Precision or execute, lastly, if you have an orb charge and don't have Nether Precision or Clearcasting",
|
|
["criteria"] = "( cooldown.touch_of_the_magi.ready ) || ( buff.arcane_tempo.up & buff.arcane_tempo.remains < gcd.max ) || ( ( buff.aethervision.stack = 2 || buff.intuition.react ) & ( buff.nether_precision.up || buff.clearcasting.down ) ) || ( ( cooldown.arcane_orb.remains < gcd.max ) & buff.arcane_charge.stack = 4 & buff.clearcasting.stack = 0 & buff.nether_precision.down & talent.orb_barrage.enabled & cooldown.touch_of_the_magi.remains > gcd.max * 6 )",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "AOE conditions for Barrage allow for Orb to enable Barrage when Nether Precision is up, Aether Attunement with High Voltage",
|
|
["criteria"] = "( ( buff.arcane_charge.stack = 4 & buff.nether_precision.up & active_enemies > 1 & ( cooldown.arcane_orb.remains < gcd.max || action.arcane_orb.charges > 0 ) & cooldown.touch_of_the_magi.remains > gcd.max * 6 ) || ( buff.arcane_charge.stack = 4 & talent.reverberate.enabled & active_enemies > 2 ) || ( buff.aether_attunement.up & talent.high_voltage.enabled & buff.clearcasting.react & buff.arcane_charge.stack > 1 & ( ( target.health.pct < 35 & active_enemies = 2 ) || active_enemies > 2 ) ) ) & talent.arcing_cleave.enabled",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Missiles if you dont have Nether Precision and always clip off GCD unless you have Aether Attunement, save missiles before cooldowns unless you have more than 1 stack of Clearcasting",
|
|
["action"] = "arcane_missiles",
|
|
["chain"] = "1",
|
|
["interrupt_if"] = "tick_time>gcd.remains&buff.aether_attunement.down",
|
|
["interrupt_immediate"] = "1",
|
|
["criteria"] = "buff.clearcasting.react & buff.nether_precision.down & ( ( cooldown.touch_of_the_magi.remains > gcd.max * 7 & cooldown.arcane_surge.remains > gcd.max * 7 ) || buff.clearcasting.react > 1 || ( cooldown.touch_of_the_magi.remains < gcd.max * 4 & buff.aether_attunement.down ) ) || fight_remains < 5",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_charge.stack < ( ( 5 - active_enemies ) <? 1 )",
|
|
["action"] = "arcane_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.reverberate.enabled || buff.arcane_charge.stack < 1 ) & active_enemies >= 4",
|
|
["action"] = "arcane_explosion",
|
|
},
|
|
{
|
|
["action"] = "arcane_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_barrage",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241125,
|
|
["warnings"] = "The import for 'cd_opener' required some automated changes.\nLine 3: Converted 'talent.high_voltage' to 'talent.high_voltage.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'talent.evocation' to 'talent.evocation.enabled' (1x).\nLine 5: Converted 'talent.arcane_bombardment' to 'talent.arcane_bombardment.enabled' (1x).\nLine 6: Converted 'talent.arcane_bombardment' to 'talent.arcane_bombardment.enabled' (1x).\nLine 7: Converted 'talent.arcane_bombardment' to 'talent.arcane_bombardment.enabled' (1x).\nLine 8: Converted 'talent.arcane_bombardment' to 'talent.arcane_bombardment.enabled' (1x).\nLine 11: Converted 'talent.arcane_bombardment' to 'talent.arcane_bombardment.enabled' (1x).\nLine 22: Converted 'talent.spellfire_spheres' to 'talent.spellfire_spheres.enabled' (1x).\nLine 23: Converted 'talent.spellfire_spheres' to 'talent.spellfire_spheres.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 3: Converted 'talent.arcing_cleave' to 'talent.arcing_cleave.enabled' (1x).\nLine 12: Converted 'talent.evocation' to 'talent.evocation.enabled' (1x).\nLine 13: Converted 'talent.evocation' to 'talent.evocation.enabled' (1x).\n\nThe import for 'sunfury_aoe' required some automated changes.\nLine 4: Converted 'talent.high_voltage' to 'talent.high_voltage.enabled' (1x).\nLine 7: Converted 'talent.arcane_harmony' to 'talent.arcane_harmony.enabled' (1x).\nLine 9: Converted 'talent.reverberate' to 'talent.reverberate.enabled' (1x).\n\nThe import for 'sunfury' required some automated changes.\nLine 4: Converted 'talent.arcane_bombardment' to 'talent.arcane_bombardment.enabled' (1x).\nLine 4: Converted 'talent.arcing_cleave' to 'talent.arcing_cleave.enabled' (1x).\nLine 4: Converted 'talent.high_voltage' to 'talent.high_voltage.enabled' (1x).\nLine 4: Converted 'talent.high_voltage' to 'talent.high_voltage.enabled' (1x).\nLine 4: Converted 'talent.arcane_bombardment' to 'talent.arcane_bombardment.enabled' (1x).\nLine 4: Converted 'talent.arcane_bombardment' to 'talent.arcane_bombardment.enabled' (1x).\nLine 5: Converted 'talent.high_voltage' to 'talent.high_voltage.enabled' (1x).\nLine 7: Converted 'talent.arcane_bombardment' to 'talent.arcane_bombardment.enabled' (1x).\nLine 7: Converted 'talent.enlightened' to 'talent.enlightened.enabled' (1x).\nLine 8: Converted 'talent.high_voltage' to 'talent.high_voltage.enabled' (1x).\nLine 10: Converted 'talent.reverberate' to 'talent.reverberate.enabled' (1x).\n\nThe import for 'spellslinger_aoe' required some automated changes.\nLine 2: Converted 'talent.shifting_shards' to 'talent.shifting_shards.enabled' (1x).\nLine 5: Converted 'talent.high_voltage' to 'talent.high_voltage.enabled' (1x).\nLine 6: Converted 'talent.high_voltage' to 'talent.high_voltage.enabled' (1x).\nLine 9: Converted 'talent.reverberate' to 'talent.reverberate.enabled' (1x).\n\nThe import for 'spellslinger' required some automated changes.\nLine 1: Converted 'talent.charged_orb' to 'talent.charged_orb.enabled' (1x).\nLine 1: Converted 'talent.shifting_shards' to 'talent.shifting_shards.enabled' (1x).\nLine 3: Converted 'talent.unerring_proficiency' to 'talent.unerring_proficiency.enabled' (1x).\nLine 6: Converted 'talent.orb_barrage' to 'talent.orb_barrage.enabled' (1x).\nLine 7: Converted 'talent.reverberate' to 'talent.reverberate.enabled' (1x).\nLine 7: Converted 'talent.high_voltage' to 'talent.high_voltage.enabled' (1x).\nLine 7: Converted 'talent.arcing_cleave' to 'talent.arcing_cleave.enabled' (1x).\nLine 10: Converted 'talent.reverberate' to 'talent.reverberate.enabled' (1x).\n\nImported 7 action lists.\n",
|
|
["profile"] = "actions.precombat+=/arcane_intellect\nactions.precombat+=/variable,name=aoe_target_count,op=reset,default=2\nactions.precombat+=/variable,name=aoe_target_count,op=set,value=9,if=!talent.arcing_cleave\n#Hacky way to keep the CD opener rotation intact\nactions.precombat+=/variable,name=opener,op=set,value=(cooldown.touch_of_the_magi.remains<=action.evocation.execution_time)&(cooldown.arcane_surge.remains<=action.evocation.execution_time||action.arcane_surge.time_since<5||cooldown.arcane_surge.remains>15)&(cooldown.evocation.up||action.evocation.time_since<5||cooldown.evocation.remains>15)\nactions.precombat+=/variable,name=touch_ready,op=set,value=variable.opener&(buff.arcane_surge.up||cooldown.arcane_surge.remains>30)||(prev_gcd.1.arcane_surge&buff.arcane_charge.stack<4)\n## actions.precombat+=/variable,name=sunfury_aoe_list,default=0,op=reset\nactions.precombat+=/variable,name=steroid_trinket_equipped,op=set,value=equipped.gladiators_badge||equipped.signet_of_the_priory||equipped.high_speakers_accretion||equipped.spymasters_web||equipped.treacherous_transmitter||equipped.imperfect_ascendancy_serum||equipped.quickwick_candlestick\nactions.precombat+=/variable,name=transmitter_double_on_use,op=set,value=(equipped.gladiators_badge||equipped.signet_of_the_priory||equipped.high_speakers_accretion||equipped.spymasters_web||equipped.imperfect_ascendancy_serum||equipped.quickwick_candlestick)&equipped.treacherous_transmitter\nactions.precombat+=/variable,name=treacherous_transmitter_precombat_cast,value=11\nactions.precombat+=/use_item,name=treacherous_transmitter\nactions.precombat+=/mirror_image\nactions.precombat+=/use_item,name=imperfect_ascendancy_serum\nactions.precombat+=/arcane_blast,if=!talent.evocation\nactions.precombat+=/evocation,if=talent.evocation\n\nactions+=/counterspell\nactions+=/spellsteal\nactions+=/potion,if=!equipped.spymasters_web&(buff.siphon_storm.up||(!talent.evocation&cooldown.arcane_surge.ready))||equipped.spymasters_web&(buff.spymasters_web.up||(fight_remains>330&buff.siphon_storm.up))\nactions+=/lights_judgment,if=(buff.arcane_surge.down&debuff.touch_of_the_magi.down&active_enemies>=2)\nactions+=/berserking,if=(prev_gcd.1.arcane_surge&variable.opener)||((prev_gcd.1.arcane_surge&(fight_remains<80||target.health.pct<35||!talent.arcane_bombardment||buff.spymasters_web.up))||(prev_gcd.1.arcane_surge&!equipped.spymasters_web))\nactions+=/blood_fury,if=(prev_gcd.1.arcane_surge&variable.opener)||((prev_gcd.1.arcane_surge&(fight_remains<80||target.health.pct<35||!talent.arcane_bombardment||buff.spymasters_web.up))||(prev_gcd.1.arcane_surge&!equipped.spymasters_web))\nactions+=/fireblood,if=(prev_gcd.1.arcane_surge&variable.opener)||((prev_gcd.1.arcane_surge&(fight_remains<80||target.health.pct<35||!talent.arcane_bombardment||buff.spymasters_web.up))||(prev_gcd.1.arcane_surge&!equipped.spymasters_web))\nactions+=/ancestral_call,if=(prev_gcd.1.arcane_surge&variable.opener)||((prev_gcd.1.arcane_surge&(fight_remains<80||target.health.pct<35||!talent.arcane_bombardment||buff.spymasters_web.up))||(prev_gcd.1.arcane_surge&!equipped.spymasters_web))\n### Invoke Externals with cooldowns except Autumn which should come just after cooldowns\n##actions+=/invoke_external_buff,name=power_infusion,if=(!equipped.spymasters_web&prev_gcd.1.arcane_surge)||(equipped.spymasters_web&prev_gcd.1.evocation)\n##actions+=/invoke_external_buff,name=blessing_of_summer,if=prev_gcd.1.arcane_surge\n##actions+=/invoke_external_buff,name=blessing_of_autumn,if=cooldown.touch_of_the_magi.remains>5\n# Trinket specific use cases vary, default is just with cooldowns\nactions+=/use_items,if=prev_gcd.1.arcane_surge||prev_gcd.1.evocation||fight_remains<20||!variable.steroid_trinket_equipped\nactions+=/use_item,name=treacherous_transmitter,if=buff.spymasters_report.stack<40\nactions+=/use_item,name=spymasters_web,if=((prev_gcd.1.arcane_surge||prev_gcd.1.evocation)&(fight_remains<80||target.health.pct<35||!talent.arcane_bombardment||(buff.spymasters_report.stack=40&fight_remains>240))||fight_remains<20)\nactions+=/use_item,name=high_speakers_accretion,if=(prev_gcd.1.arcane_surge||prev_gcd.1.evocation||(buff.siphon_storm.up&variable.opener)||cooldown.evocation.remains<4||boss&fight_remains<20)&(buff.spymasters_report.stack<35)\nactions+=/use_item,name=imperfect_ascendancy_serum,if=cooldown.evocation.ready||cooldown.arcane_surge.ready||fight_remains<20\nactions+=/use_item,name=treacherous_transmitter,if=(cooldown.evocation.remains<7&cooldown.evocation.remains)||buff.siphon_storm.remains>15||fight_remains<20\n## actions+=/do_treacherous_transmitter_task,use_off_gcd=1,if=buff.siphon_storm.up||fight_remains<20||(buff.cryptic_instructions.remains<?buff.realigning_nexus_convergence_divergence.remains<?buff.errant_manaforge_emission.remains)<3\nactions+=/use_item,name=aberrant_spellforge,if=!variable.steroid_trinket_equipped||buff.siphon_storm.down||(equipped.spymasters_web&target.health.pct>35)\nactions+=/use_item,name=mad_queens_mandate,if=!variable.steroid_trinket_equipped||buff.siphon_storm.down\nactions+=/use_item,name=fearbreakers_echo,if=!variable.steroid_trinket_equipped||buff.siphon_storm.down\nactions+=/use_item,name=mereldars_toll,if=!variable.steroid_trinket_equipped||buff.siphon_storm.down\nactions+=/variable,name=opener,op=set,if=debuff.touch_of_the_magi.up&variable.opener,value=0\nactions+=/arcane_barrage,if=fight_remains<2\n# Enter cooldowns, then action list depending on your hero talent choices\nactions+=/call_action_list,name=cd_opener,if=variable.opener\n## actions+=/call_action_list,name=sunfury_aoe,if=talent.spellfire_spheres&variable.aoe_list\n## actions+=/call_action_list,name=spellslinger_aoe,if=!talent.spellfire_spheres&variable.aoe_list\nactions+=/call_action_list,name=sunfury,strict=1,if=talent.spellfire_spheres\nactions+=/call_action_list,name=spellslinger,strict=1,if=!talent.spellfire_spheres\nactions+=/arcane_barrage\n\n# Touch of the Magi used when Arcane Barrage is mid-flight or if you just used Arcane Surge and you don't have 4 Arcane Charges, the wait simulates the time it takes to queue another spell after Touch when you Surge into Touch\nactions.cd_opener+=/touch_of_the_magi,use_off_gcd=1,if=prev_gcd.1.arcane_barrage&(action.arcane_barrage.in_flight_remains<=0.5||gcd.remains<=0.5)&(buff.arcane_surge.up||cooldown.arcane_surge.remains>30)||(prev_gcd.1.arcane_surge&buff.arcane_charge.stack<4)\n##actions.cd_opener+=/wait,sec=0.05,if=prev_gcd.1.arcane_surge&time-action.touch_of_the_magi.last_used<0.015,line_cd=15\nactions.cd_opener+=/arcane_blast,if=buff.presence_of_mind.up\n# Use Orb for Charges on the opener if you have High Voltage as the Missiles will generate the remaining Charge you need\nactions.cd_opener+=/arcane_orb,if=talent.high_voltage\n# Barrage before Evocation if Tempo will expire\nactions.cd_opener+=/arcane_barrage,if=buff.arcane_tempo.up&cooldown.evocation.ready&buff.arcane_tempo.remains<gcd.max*5\nactions.cd_opener+=/evocation,if=cooldown.arcane_surge.remains<(gcd.max*3)&cooldown.touch_of_the_magi.remains<(gcd.max*5)\nactions.cd_opener+=/arcane_missiles,if=((prev_gcd.1.evocation||prev_gcd.1.arcane_surge)||variable.opener)&buff.nether_precision.down&buff.aether_attunement.down,interrupt_if=tick_time>gcd.remains&buff.aether_attunement.down,interrupt_immediate=1,interrupt_global=1,chain=1,line_cd=30\nactions.cd_opener+=/arcane_surge,if=cooldown.touch_of_the_magi.remains<(action.arcane_surge.execute_time+(gcd.max*(buff.arcane_charge.stack=4)))\n\n\n# With Shifting Shards we can use Shifting Power whenever basically favoring cooldowns slightly, without it though we want to use it outside of cooldowns\nactions.spellslinger+=/shifting_power,if=(((((action.arcane_orb.charges=talent.charged_orb)&cooldown.arcane_orb.remains)||cooldown.touch_of_the_magi.remains<23)&buff.arcane_surge.down&buff.siphon_storm.down&debuff.touch_of_the_magi.down&cooldown.touch_of_the_magi.remains>(12+6*gcd.max))||(prev_gcd.1.arcane_barrage&talent.shifting_shards&(buff.arcane_surge.up||debuff.touch_of_the_magi.up||cooldown.evocation.remains<20)))&fight_remains>10&(buff.arcane_tempo.remains>gcd.max*2.5||buff.arcane_tempo.down)\n# In single target, use Presence of Mind at the very end of Touch of the Magi, then cancelaura the buff to start the cooldown, wait is to simulate the delay of hitting Presence of Mind after another spell cast\nactions.spellslinger+=/cancel_buff,name=presence_of_mind,use_off_gcd=1,if=prev_gcd.1.arcane_blast&buff.presence_of_mind.stack=1\nactions.spellslinger+=/presence_of_mind,if=debuff.touch_of_the_magi.remains<=gcd.max&buff.nether_precision.up&active_enemies<variable.aoe_target_count&!talent.unerring_proficiency\n## actions.spellslinger+=/wait,sec=0.05,if=time-action.presence_of_mind.last_used<0.015,line_cd=15\nactions.spellslinger+=/supernova,if=debuff.touch_of_the_magi.remains<=gcd.max&buff.unerring_proficiency.stack=30\nactions.spellslinger+=/arcane_blast,if=((debuff.magis_spark_arcane_blast.up||(buff.leydrinker.up&buff.arcane_charge.stack=4))&!prev_gcd.1.arcane_blast&buff.nether_precision.up)\n# Barrage if you have Touch ready, Tempo is about to expire or you have a Charge refunder with Nether Precision or execute, lastly, if you have an orb charge and don't have Nether Precision or Clearcasting\nactions.spellslinger+=/arcane_barrage,if=(cooldown.touch_of_the_magi.ready)||(buff.arcane_tempo.up&buff.arcane_tempo.remains<gcd.max)||((buff.aethervision.stack=2||buff.intuition.react)&(buff.nether_precision.up||buff.clearcasting.down))||((cooldown.arcane_orb.remains<gcd.max)&buff.arcane_charge.stack=4&buff.clearcasting.stack=0&buff.nether_precision.down&talent.orb_barrage&cooldown.touch_of_the_magi.remains>gcd.max*6)\n# AOE conditions for Barrage allow for Orb to enable Barrage when Nether Precision is up, Aether Attunement with High Voltage\nactions.spellslinger+=/arcane_barrage,if=((buff.arcane_charge.stack=4&buff.nether_precision.up&active_enemies>1&(cooldown.arcane_orb.remains<gcd.max||action.arcane_orb.charges>0)&cooldown.touch_of_the_magi.remains>gcd.max*6)||(buff.arcane_charge.stack=4&talent.reverberate&active_enemies>2)||(buff.aether_attunement.up&talent.high_voltage&buff.clearcasting.react&buff.arcane_charge.stack>1&((target.health.pct<35&active_enemies=2)||active_enemies>2)))&talent.arcing_cleave\n# Missiles if you dont have Nether Precision and always clip off GCD unless you have Aether Attunement, save missiles before cooldowns unless you have more than 1 stack of Clearcasting\nactions.spellslinger+=/arcane_missiles,if=buff.clearcasting.react&buff.nether_precision.down&((cooldown.touch_of_the_magi.remains>gcd.max*7&cooldown.arcane_surge.remains>gcd.max*7)||buff.clearcasting.react>1||(cooldown.touch_of_the_magi.remains<gcd.max*4&buff.aether_attunement.down))||fight_remains<5,interrupt_if=tick_time>gcd.remains&buff.aether_attunement.down,interrupt_immediate=1,interrupt_global=1,chain=1\nactions.spellslinger+=/arcane_orb,if=buff.arcane_charge.stack<((5-active_enemies)<?1)\nactions.spellslinger+=/arcane_explosion,if=(talent.reverberate||buff.arcane_charge.stack<1)&active_enemies>=4\nactions.spellslinger+=/arcane_blast\nactions.spellslinger+=/arcane_barrage\n\n# This section is only called with a variable to aggressively AOE instead of focus funnel into one target, the overall dps is slightly higher but the priority dps is much longer\nactions.spellslinger_aoe+=/supernova,if=buff.unerring_proficiency.stack=30\nactions.spellslinger_aoe+=/shifting_power,if=((buff.arcane_surge.down&buff.siphon_storm.down&debuff.touch_of_the_magi.down&cooldown.evocation.remains>15&cooldown.touch_of_the_magi.remains>10)&(cooldown.arcane_orb.remains&action.arcane_orb.charges=0)&fight_remains>10)||(prev_gcd.1.arcane_barrage&(buff.arcane_surge.up||debuff.touch_of_the_magi.up||cooldown.evocation.remains<20)&talent.shifting_shards)\nactions.spellslinger_aoe+=/arcane_orb,if=buff.arcane_charge.stack<3\nactions.spellslinger_aoe+=/arcane_blast,if=((debuff.magis_spark_arcane_blast.up||buff.leydrinker.up)&!prev_gcd.1.arcane_blast)\n# Clearcasting is exclusively spent on Arcane Missiles in AOE and always interrupted after the global cooldown ends except for Aether Attunement\nactions.spellslinger_aoe+=/arcane_barrage,if=buff.aether_attunement.up&talent.high_voltage&buff.clearcasting.up&buff.arcane_charge.stack>1\nactions.spellslinger_aoe+=/arcane_missiles,if=buff.clearcasting.up&((talent.high_voltage&buff.arcane_charge.stack<4)||buff.nether_precision.down),interrupt_if=tick_time>gcd.remains&buff.aether_attunement.down,interrupt_immediate=1,interrupt_global=1,chain=1\n# Only use Presence of Mind at low charges, use these to get to 4 Charges quicker\nactions.spellslinger_aoe+=/presence_of_mind,if=buff.arcane_charge.stack=3||buff.arcane_charge.stack=2\nactions.spellslinger_aoe+=/arcane_barrage,if=buff.arcane_charge.stack=4\nactions.spellslinger_aoe+=/arcane_explosion,if=(talent.reverberate||buff.arcane_charge.stack<1)\nactions.spellslinger_aoe+=/arcane_blast\nactions.spellslinger_aoe+=/arcane_barrage\n\n# For Sunfury, Shifting Power only when you're not under the effect of any cooldowns\nactions.sunfury+=/shifting_power,if=((buff.arcane_surge.down&buff.siphon_storm.down&debuff.touch_of_the_magi.down&cooldown.evocation.remains>15&cooldown.touch_of_the_magi.remains>10)&fight_remains>10)&buff.arcane_soul.down\nactions.sunfury+=/cancel_buff,name=presence_of_mind,use_off_gcd=1,if=(prev_gcd.1.arcane_blast&buff.presence_of_mind.stack=1)||active_enemies<4\nactions.sunfury+=/presence_of_mind,if=debuff.touch_of_the_magi.remains<=gcd.max&buff.nether_precision.up&active_enemies<4\n##actions.sunfury+=/wait,sec=0.05,if=time-action.presence_of_mind.last_used<0.015,line_cd=15\n# AOE Barrage is optimized for funnel, tries to make sure you have Clearcasting if you have High Voltage or an Orb charge ready, second condition covers Aether Attunement optimizations with High Voltage, last condition is to Barrage anytime you have a refunder and are in execute in AOE.\nactions.sunfury+=/arcane_barrage,if=(buff.arcane_charge.stack=4&buff.burden_of_power.down&buff.nether_precision.up&active_enemies>2&((talent.arcane_bombardment&target.health.pct<35)||active_enemies>4)&talent.arcing_cleave&((talent.high_voltage&buff.clearcasting.up)||(cooldown.arcane_orb.remains<gcd.max||action.arcane_orb.charges>0)))||(buff.aether_attunement.up&talent.high_voltage&buff.clearcasting.up&buff.arcane_charge.stack>1&active_enemies>2&(target.health.pct<35||!talent.arcane_bombardment||active_enemies>4))||(active_enemies>2&(buff.aethervision.stack=2||buff.glorious_incandescence.up||buff.intuition.up)&(buff.nether_precision.up||(target.health.pct<35&talent.arcane_bombardment&buff.clearcasting.down)))\n# Orb if you don't have High Voltage and a Clearcasting in AOE\nactions.sunfury+=/arcane_orb,if=buff.arcane_charge.stack<2&buff.arcane_soul.down&(!talent.high_voltage||buff.clearcasting.down)\n# Soul changes missile priority a bit and allows for clipping Aether Attunement\nactions.sunfury+=/arcane_missiles,if=buff.nether_precision.down&buff.clearcasting.up&(buff.arcane_soul.up&buff.arcane_soul.remains>gcd.max*(4-buff.clearcasting.stack)),interrupt_if=tick_time>gcd.remains,interrupt_immediate=1,interrupt_global=1,chain=1\n# Barrage when you can restore charges, overlap buffs as much as possible, if you have no way to generate Nether Precision you can also send if under Enlightened threshold or during execute\nactions.sunfury+=/arcane_barrage,if=(buff.intuition.up||buff.aethervision.stack=2||buff.glorious_incandescence.up)&(((target.health.pct<35&talent.arcane_bombardment)||(mana.pct<70&talent.enlightened&buff.arcane_surge.down&active_enemies<3))||buff.glorious_incandescence.up)&(buff.nether_precision.up||buff.clearcasting.down)&(cooldown.touch_of_the_magi.remains>6||!variable.touch_ready)||(buff.arcane_soul.up&((buff.clearcasting.stack<3)||buff.arcane_soul.remains<gcd.max))||(buff.arcane_charge.stack=4&variable.touch_ready)\n# Missiles when it won't impact various Barrage conditions, interrupt the channel immediately after the GCD if you do not have Aether Attunement\nactions.sunfury+=/arcane_missiles,if=buff.clearcasting.up&((buff.nether_precision.down||buff.clearcasting.stack=3||(talent.high_voltage&buff.arcane_charge.stack<3))),interrupt_if=tick_time>gcd.remains&buff.aether_attunement.down,interrupt_immediate=1,interrupt_global=1,chain=1\nactions.sunfury+=/presence_of_mind,if=(buff.arcane_charge.stack=3||buff.arcane_charge.stack=2)&active_enemies>=3\n# Explosion to build the first charge if you have none\nactions.sunfury+=/arcane_explosion,if=(talent.reverberate||buff.arcane_charge.stack<1)&active_enemies>=4\nactions.sunfury+=/arcane_blast\nactions.sunfury+=/arcane_barrage\n\n# This list is only used with a variable for extra information, it is not a default list called and is generally worse in every way\nactions.sunfury_aoe+=/arcane_barrage,if=(buff.arcane_soul.up&((buff.clearcasting.stack<3)||buff.arcane_soul.remains<gcd.max))\nactions.sunfury_aoe+=/arcane_missiles,if=buff.arcane_soul.up,interrupt_if=tick_time>gcd.remains&buff.aether_attunement.down,interrupt_immediate=1,interrupt_global=1,chain=1\nactions.sunfury_aoe+=/shifting_power,if=(buff.arcane_surge.down&buff.siphon_storm.down&debuff.touch_of_the_magi.down&cooldown.evocation.remains>15&cooldown.touch_of_the_magi.remains>15)&(cooldown.arcane_orb.remains&action.arcane_orb.charges=0)&fight_remains>10\nactions.sunfury_aoe+=/arcane_orb,if=buff.arcane_charge.stack<2&(!talent.high_voltage||!buff.clearcasting.up)\nactions.sunfury_aoe+=/arcane_blast,if=((debuff.magis_spark_arcane_blast.up||buff.burden_of_power.up||buff.leydrinker.up)&!prev_gcd.1.arcane_blast)\nactions.sunfury_aoe+=/arcane_barrage,if=(buff.arcane_charge.stack=4||buff.glorious_incandescence.up||buff.aethervision.stack=2||buff.intuition.up)&(buff.nether_precision.up||buff.clearcasting.down)\nactions.sunfury_aoe+=/arcane_missiles,if=buff.clearcasting.up&(buff.aether_attunement.up||talent.arcane_harmony),interrupt_if=tick_time>gcd.remains&buff.aether_attunement.down,interrupt_immediate=1,interrupt_global=1,chain=1\nactions.sunfury_aoe+=/presence_of_mind,if=buff.arcane_charge.stack=3||buff.arcane_charge.stack=2\nactions.sunfury_aoe+=/arcane_explosion,if=talent.reverberate||buff.arcane_charge.stack<1\nactions.sunfury_aoe+=/arcane_blast\nactions.sunfury_aoe+=/arcane_barrage",
|
|
["author"] = "SimulationCraft",
|
|
},
|
|
["Arms"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241105,
|
|
["author"] = "SimulationCraft",
|
|
["desc"] = "2024-11-05: SimC update (Execute/Juggernaut)\n\n2024-10-21, 10-30: 11.0.5 / SimC update\n\n2024-09-03, 09-05, 09-08: SimC update\n\n2024-08-25: Updates based on Icy-Veins\n\n2024-08-15: Sim update\n\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["slayer_st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= 5 || debuff.colossus_smash.up",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.marked_for_execution.stack = 3 || buff.juggernaut.remains <= gcd.max * 3 & talent.juggernaut.enabled || buff.sudden_death.stack = 2 || buff.sudden_death.remains <= gcd.max * 3",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.colossus_smash.remains >= gcd.max * 4 || cooldown.warbreaker.remains >= gcd.max * 4 ) || debuff.colossus_smash.remains >= gcd.max * 4",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.opportunist.up || charges = 2 & talent.fierce_followthrough.enabled",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max * 5",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "cleave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["colossus_st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "demolish",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges = 2",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max * 5",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["colossus_aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.deep_wounds.remains",
|
|
["action"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.rend.remains",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sweeping_strikes",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ravager",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "cleave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unhinged.enabled || talent.merciless_bonegrinder.enabled",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.colossal_might.stack >= 6 & talent.dreadnaught.enabled || buff.colossal_might.stack = 10 & talent.strength_of_arms.enabled",
|
|
["action"] = "demolish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.dreadnaught.enabled",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bladestorm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "whirlwind",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["slayer_aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.rend.remains",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["action"] = "sweeping_strikes",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "cleave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_death.up & buff.imminent_demise.stack < 3",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.dreadnaught.enabled & buff.sweeping_strikes.up",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "bladestorm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up & debuff.executioners_precision.stack < 2",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.strength_of_arms.enabled & buff.sweeping_strikes.up",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up & debuff.executioners_precision.stack = 2",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.marked_for_execution.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.executioners_precision.stack = 2",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "whirlwind",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["colossus_execute"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 2",
|
|
["action"] = "sweeping_strikes",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max & ! talent.bloodletting.enabled",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage < 85",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "demolish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.executioners_precision.stack = 2 & ! dot.ravager.remains & ( buff.lethal_blows.stack = 2 || ! set_bonus.tww1_4pc & ! talent.battlelord.enabled ) || ! talent.executioners_precision.enabled",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.battlelord.enabled & debuff.executioners_precision.stack = 2",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.battlelord.enabled & charges = 2 & rage < 90",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 40 & talent.executioners_precision.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bladestorm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["slayer_execute"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 2",
|
|
["action"] = "sweeping_strikes",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max & ! talent.bloodletting.enabled",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= 5 || debuff.colossus_smash.up",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.juggernaut.remains <= gcd.max & talent.juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.executioners_precision.stack = 2 & debuff.colossus_smash.remains > 4 || debuff.executioners_precision.stack = 2 & cooldown.colossus_smash.remains > 15 || ! talent.executioners_precision.enabled",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage < 85",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains < 2 || ( debuff.executioners_precision.stack = 2 & buff.lethal_blows.stack = 2 )",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.opportunist.up & rage < 80 & buff.martial_prowess.stack < 2 || rage < 40 & buff.martial_prowess.stack < 2 & talent.fierce_followthrough.enabled",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.executioners_precision.enabled",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time <= 0.5 || movement.distance > 8",
|
|
["action"] = "charge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "gcd.remains = 0 & debuff.colossus_smash.remains > 8 || boss & fight_remains < 25",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.debuff.casting.react",
|
|
["action"] = "pummel",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "variables",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.mortal_strike.remains > 1.5 & rage < 50",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.down & cooldown.mortal_strike.remains",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.down & cooldown.mortal_strike.remains",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > 180 & buff.avatar.up || boss & target.time_to_die < 180 & variable.execute_phase & buff.avatar.up || boss & fight_remains < 20",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demolish.enabled & active_enemies > 2",
|
|
["list_name"] = "colossus_aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["cycle_targets"] = 1,
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demolish.enabled & variable.execute_phase",
|
|
["list_name"] = "colossus_execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demolish.enabled & active_enemies = 2 & ! variable.execute_phase",
|
|
["list_name"] = "colossus_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demolish.enabled",
|
|
["list_name"] = "colossus_st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.demolish.enabled & active_enemies > 2",
|
|
["list_name"] = "slayer_aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["cycle_targets"] = 1,
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.demolish.enabled & variable.execute_phase",
|
|
["list_name"] = "slayer_execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.demolish.enabled & active_enemies = 2 & ! variable.execute_phase",
|
|
["list_name"] = "slayer_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.demolish.enabled",
|
|
["list_name"] = "slayer_st",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "battle_shout",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["toggle"] = "on",
|
|
["action"] = "battle_stance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_1_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Evaluates a trinkets cooldown, divided by avatar. If it's value has no remainder return 1, else return 0.5.",
|
|
["criteria"] = "trinket.t1.has_use_buff & ( trinket.t1.cooldown.duration % cooldown.avatar.duration = 0 )",
|
|
["var_name"] = "trinket_1_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["criteria"] = "trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration % cooldown.avatar.duration = 0 )",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_stat.any_dps & ! variable.trinket_1_exclude )",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_stat.any_dps & ! variable.trinket_2_exclude )",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / trinket.t2.buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_1_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_2_manual",
|
|
},
|
|
},
|
|
["variables"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies = 1",
|
|
["description"] = "Variables",
|
|
["var_name"] = "st_planning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies > 1",
|
|
["var_name"] = "adds_remain",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( talent.massacre.enabled & target.health.pct < 35 ) || target.health.pct < 20",
|
|
["var_name"] = "execute_phase",
|
|
},
|
|
},
|
|
["slayer_sweep"] = {
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sweeping_strikes",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.marked_for_execution.stack = 3",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "bladestorm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.dreadnaught.enabled || buff.opportunist.up",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fervor_of_battle.enabled",
|
|
["action"] = "cleave",
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 8 & buff.sweeping_strikes.down",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 5",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fervor_of_battle.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["description"] = "Trinkets",
|
|
["criteria"] = "( variable.adds_remain || variable.st_planning ) & cooldown.avatar.remains < 3",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! buff.avatar.up & trinket.t1.cast_time > 0 || ! trinket.t1.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || trinket.t1.buff_duration >= fight_remains & boss",
|
|
["description"] = "Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! buff.avatar.up & trinket.t2.cast_time > 0 || ! trinket.t2.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || trinket.t2.buff_duration >= fight_remains & boss",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )",
|
|
["description"] = "If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.trinket_2_buffs & ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) & ! variable.trinket_2_manual & ( ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) || ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["criteria"] = "! equipped.fyralath_the_dreamrender & ( ! variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( ! variable.trinket_2_buffs || trinket.t2.cooldown.remains )",
|
|
["slot"] = "main_hand",
|
|
},
|
|
},
|
|
["colossus_sweep"] = {
|
|
{
|
|
["action"] = "sweeping_strikes",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max & buff.sweeping_strikes.up",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.ready",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up & debuff.colossus_smash.up",
|
|
["action"] = "demolish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "demolish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 8 & buff.sweeping_strikes.down",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fervor_of_battle.enabled",
|
|
["action"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 5",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fervor_of_battle.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241105,
|
|
["warnings"] = "The import for 'slayer_st' required some automated changes.\nLine 7: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 9: Converted 'talent.fierce_followthrough' to 'talent.fierce_followthrough.enabled' (1x).\n\nThe import for 'colossus_aoe' required some automated changes.\nLine 11: Converted 'talent.unhinged' to 'talent.unhinged.enabled' (1x).\nLine 11: Converted 'talent.merciless_bonegrinder' to 'talent.merciless_bonegrinder.enabled' (1x).\nLine 12: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\nLine 12: Converted 'talent.strength_of_arms' to 'talent.strength_of_arms.enabled' (1x).\nLine 13: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\n\nThe import for 'slayer_aoe' required some automated changes.\nLine 10: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\nLine 14: Converted 'talent.strength_of_arms' to 'talent.strength_of_arms.enabled' (1x).\n\nThe import for 'colossus_execute' required some automated changes.\nLine 2: Converted 'talent.bloodletting' to 'talent.bloodletting.enabled' (1x).\nLine 11: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 11: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\nLine 12: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 13: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 14: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\n\nThe import for 'slayer_execute' required some automated changes.\nLine 2: Converted 'talent.bloodletting' to 'talent.bloodletting.enabled' (1x).\nLine 8: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 9: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\nLine 12: Converted 'talent.fierce_followthrough' to 'talent.fierce_followthrough.enabled' (1x).\nLine 15: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 13: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 14: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 15: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 16: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 17: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 18: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 19: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 20: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 3: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 4: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted operations in 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%%cooldown.avatar.duration=0)' to 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%cooldown.avatar.duration=0)'.\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted operations in 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%%cooldown.avatar.duration=0)' to 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%cooldown.avatar.duration=0)'.\nLine 7: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 7: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 8: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 8: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 9: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 9: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 9: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 9: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 9: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 9: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 9: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 9: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 9: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 10: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 11: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\n\nThe import for 'slayer_sweep' required some automated changes.\nLine 11: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\nLine 13: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 18: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 2: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 3: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\n\nThe import for 'colossus_sweep' required some automated changes.\nLine 19: 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\nImported 12 action lists.\n",
|
|
["profile"] = "actions.precombat+=/battle_shout\nactions.precombat+=/battle_stance,toggle=on\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.treacherous_transmitter\n# Evaluates a trinkets cooldown, divided by avatar. If it's value has no remainder return 1, else return 0.5.\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=trinket.1.has_use_buff&(trinket.1.cooldown.duration%%cooldown.avatar.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=trinket.2.has_use_buff&(trinket.2.cooldown.duration%%cooldown.avatar.duration=0)\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_stat.any_dps&!variable.trinket_1_exclude)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_stat.any_dps&!variable.trinket_2_exclude)\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync))\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.algethar_puzzle_box\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.algethar_puzzle_box\n\nactions+=/charge,if=time<=0.5||movement.distance>8\nactions+=/potion,if=gcd.remains=0&debuff.colossus_smash.remains>8||boss&fight_remains<25\nactions+=/pummel,if=target.debuff.casting.react\nactions+=/call_action_list,name=variables\nactions+=/call_action_list,name=trinkets\nactions+=/arcane_torrent,if=cooldown.mortal_strike.remains>1.5&rage<50\nactions+=/lights_judgment,if=debuff.colossus_smash.down&cooldown.mortal_strike.remains\nactions+=/bag_of_tricks,if=debuff.colossus_smash.down&cooldown.mortal_strike.remains\nactions+=/berserking,if=fight_remains>180&buff.avatar.up||boss&target.time_to_die<180&variable.execute_phase&buff.avatar.up||boss&fight_remains<20\nactions+=/blood_fury,if=debuff.colossus_smash.up\nactions+=/fireblood,if=debuff.colossus_smash.up\nactions+=/ancestral_call,if=debuff.colossus_smash.up\n## actions+=/invoke_external_buff,name=power_infusion,if=debuff.colossus_smash.up&fight_remains>=135||variable.execute_phase&buff.avatar.up||fight_remains<=25\nactions+=/run_action_list,name=colossus_aoe,strict=1,if=talent.demolish&active_enemies>2\nactions+=/run_action_list,name=colossus_execute,cycle_targets=1,strict=1,if=talent.demolish&variable.execute_phase\nactions+=/run_action_list,name=colossus_sweep,strict=1,if=talent.demolish&active_enemies=2&!variable.execute_phase\nactions+=/run_action_list,name=colossus_st,strict=1,if=talent.demolish\nactions+=/run_action_list,name=slayer_aoe,strict=1,if=!talent.demolish&active_enemies>2\nactions+=/run_action_list,name=slayer_execute,cycle_targets=1,strict=1,if=!talent.demolish&variable.execute_phase\nactions+=/run_action_list,name=slayer_sweep,strict=1,if=!talent.demolish&active_enemies=2&!variable.execute_phase\nactions+=/run_action_list,name=slayer_st,strict=1,if=!talent.demolish\n\nactions.colossus_st+=/rend,if=dot.rend.remains<=gcd\nactions.colossus_st+=/thunderous_roar\nactions.colossus_st+=/champions_spear\nactions.colossus_st+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.colossus_st+=/avatar,if=active_enemies=1\nactions.colossus_st+=/colossus_smash\nactions.colossus_st+=/warbreaker\nactions.colossus_st+=/mortal_strike\nactions.colossus_st+=/demolish\nactions.colossus_st+=/skullsplitter\nactions.colossus_st+=/overpower,if=charges=2\nactions.colossus_st+=/execute\nactions.colossus_st+=/overpower\nactions.colossus_st+=/rend,if=dot.rend.remains<=gcd*5\nactions.colossus_st+=/slam\n\nactions.colossus_execute+=/sweeping_strikes,if=active_enemies=2\nactions.colossus_execute+=/rend,if=dot.rend.remains<=gcd&!talent.bloodletting\nactions.colossus_execute+=/thunderous_roar\nactions.colossus_execute+=/champions_spear\nactions.colossus_execute+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.colossus_execute+=/avatar\nactions.colossus_execute+=/colossus_smash\nactions.colossus_execute+=/warbreaker\nactions.colossus_execute+=/skullsplitter,if=rage<85\nactions.colossus_execute+=/demolish,if=debuff.colossus_smash.up\nactions.colossus_execute+=/mortal_strike,if=debuff.executioners_precision.stack=2&!dot.ravager.remains&(buff.lethal_blows.stack=2||!set_bonus.tww1_4pc&!talent.battlelord)||!talent.executioners_precision\nactions.colossus_execute+=/mortal_strike,if=talent.battlelord&debuff.executioners_precision.stack=2\nactions.colossus_execute+=/overpower,if=talent.battlelord&charges=2&rage<90\nactions.colossus_execute+=/execute,if=rage>=40&talent.executioners_precision\nactions.colossus_execute+=/skullsplitter\nactions.colossus_execute+=/overpower\nactions.colossus_execute+=/bladestorm\nactions.colossus_execute+=/execute\nactions.colossus_execute+=/mortal_strike\n\nactions.colossus_sweep+=/sweeping_strikes\nactions.colossus_sweep+=/rend,if=dot.rend.remains<=gcd&buff.sweeping_strikes.up\nactions.colossus_sweep+=/thunderous_roar\nactions.colossus_sweep+=/champions_spear\nactions.colossus_sweep+=/ravager,if=cooldown.colossus_smash.ready\nactions.colossus_sweep+=/avatar\nactions.colossus_sweep+=/colossus_smash\nactions.colossus_sweep+=/warbreaker\nactions.colossus_sweep+=/mortal_strike,if=buff.sweeping_strikes.up\nactions.colossus_sweep+=/skullsplitter,if=buff.sweeping_strikes.up\nactions.colossus_sweep+=/overpower,if=buff.sweeping_strikes.up\nactions.colossus_sweep+=/demolish,if=buff.sweeping_strikes.up&debuff.colossus_smash.up\nactions.colossus_sweep+=/execute,if=buff.sweeping_strikes.up\nactions.colossus_sweep+=/overpower\nactions.colossus_sweep+=/execute\nactions.colossus_sweep+=/mortal_strike\nactions.colossus_sweep+=/demolish,if=debuff.colossus_smash.up\nactions.colossus_sweep+=/thunder_clap,if=dot.rend.remains<=8&buff.sweeping_strikes.down\nactions.colossus_sweep+=/cleave,if=talent.fervor_of_battle\nactions.colossus_sweep+=/rend,if=dot.rend.remains<=5\nactions.colossus_sweep+=/whirlwind,if=talent.fervor_of_battle\nactions.colossus_sweep+=/slam\n\nactions.colossus_aoe+=/cleave,if=!dot.deep_wounds.remains\nactions.colossus_aoe+=/thunder_clap,if=!dot.rend.remains\nactions.colossus_aoe+=/thunderous_roar\nactions.colossus_aoe+=/avatar\nactions.colossus_aoe+=/sweeping_strikes\nactions.colossus_aoe+=/ravager\nactions.colossus_aoe+=/warbreaker\nactions.colossus_aoe+=/champions_spear\nactions.colossus_aoe+=/colossus_smash\nactions.colossus_aoe+=/cleave\nactions.colossus_aoe+=/bladestorm,if=talent.unhinged||talent.merciless_bonegrinder\nactions.colossus_aoe+=/demolish,if=buff.colossal_might.stack>=6&talent.dreadnaught||buff.colossal_might.stack=10&talent.strength_of_arms\nactions.colossus_aoe+=/overpower,if=talent.dreadnaught\nactions.colossus_aoe+=/mortal_strike,if=buff.sweeping_strikes.up\nactions.colossus_aoe+=/skullsplitter,if=buff.sweeping_strikes.up\nactions.colossus_aoe+=/execute,if=buff.sweeping_strikes.up\nactions.colossus_aoe+=/overpower,if=buff.sweeping_strikes.up\nactions.colossus_aoe+=/thunder_clap\nactions.colossus_aoe+=/mortal_strike\nactions.colossus_aoe+=/overpower\nactions.colossus_aoe+=/skullsplitter\nactions.colossus_aoe+=/execute\nactions.colossus_aoe+=/bladestorm\nactions.colossus_aoe+=/whirlwind\n\nactions.slayer_st+=/rend,if=dot.rend.remains<=gcd\nactions.slayer_st+=/thunderous_roar\nactions.slayer_st+=/champions_spear\nactions.slayer_st+=/avatar,if=cooldown.colossus_smash.remains<=5||debuff.colossus_smash.up\nactions.slayer_st+=/colossus_smash\nactions.slayer_st+=/warbreaker\nactions.slayer_st+=/execute,if=debuff.marked_for_execution.stack=3||buff.juggernaut.remains<=gcd*3&talent.juggernaut||buff.sudden_death.stack=2||buff.sudden_death.remains<=gcd*3\nactions.slayer_st+=/bladestorm,if=(cooldown.colossus_smash.remains>=gcd*4||cooldown.warbreaker.remains>=gcd*4)||debuff.colossus_smash.remains>=gcd*4\nactions.slayer_st+=/overpower,if=buff.opportunist.up||charges=2&talent.fierce_followthrough\nactions.slayer_st+=/mortal_strike\nactions.slayer_st+=/skullsplitter\nactions.slayer_st+=/overpower\nactions.slayer_st+=/rend,if=dot.rend.remains<=gcd*5\nactions.slayer_st+=/cleave\nactions.slayer_st+=/slam\nactions.slayer_st+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_execute+=/sweeping_strikes,if=active_enemies=2\nactions.slayer_execute+=/rend,if=dot.rend.remains<=gcd&!talent.bloodletting\nactions.slayer_execute+=/thunderous_roar\nactions.slayer_execute+=/champions_spear\nactions.slayer_execute+=/avatar,if=cooldown.colossus_smash.remains<=5||debuff.colossus_smash.up\nactions.slayer_execute+=/warbreaker\nactions.slayer_execute+=/colossus_smash\nactions.slayer_execute+=/execute,if=buff.juggernaut.remains<=gcd&talent.juggernaut\nactions.slayer_execute+=/bladestorm,if=debuff.executioners_precision.stack=2&debuff.colossus_smash.remains>4||debuff.executioners_precision.stack=2&cooldown.colossus_smash.remains>15||!talent.executioners_precision\nactions.slayer_execute+=/skullsplitter,if=rage<85\nactions.slayer_execute+=/mortal_strike,if=dot.rend.remains<2||(debuff.executioners_precision.stack=2&buff.lethal_blows.stack=2)\nactions.slayer_execute+=/overpower,if=buff.opportunist.up&rage<80&buff.martial_prowess.stack<2||rage<40&buff.martial_prowess.stack<2&talent.fierce_followthrough\nactions.slayer_execute+=/execute\nactions.slayer_execute+=/overpower\nactions.slayer_execute+=/mortal_strike,if=!talent.executioners_precision\nactions.slayer_execute+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_sweep+=/thunderous_roar\nactions.slayer_sweep+=/sweeping_strikes\nactions.slayer_sweep+=/rend,if=dot.rend.remains<=gcd\nactions.slayer_sweep+=/champions_spear\nactions.slayer_sweep+=/avatar\nactions.slayer_sweep+=/colossus_smash\nactions.slayer_sweep+=/warbreaker\nactions.slayer_sweep+=/skullsplitter,if=buff.sweeping_strikes.up\nactions.slayer_sweep+=/execute,if=debuff.marked_for_execution.stack=3\nactions.slayer_sweep+=/bladestorm\nactions.slayer_sweep+=/overpower,if=talent.dreadnaught||buff.opportunist.up\nactions.slayer_sweep+=/mortal_strike\nactions.slayer_sweep+=/cleave,if=talent.fervor_of_battle\nactions.slayer_sweep+=/execute\nactions.slayer_sweep+=/overpower\nactions.slayer_sweep+=/thunder_clap,if=dot.rend.remains<=8&buff.sweeping_strikes.down\nactions.slayer_sweep+=/rend,if=dot.rend.remains<=5\nactions.slayer_sweep+=/whirlwind,if=talent.fervor_of_battle\nactions.slayer_sweep+=/slam\nactions.slayer_sweep+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_aoe+=/thunder_clap,if=!dot.rend.remains\nactions.slayer_aoe+=/sweeping_strikes\nactions.slayer_aoe+=/thunderous_roar\nactions.slayer_aoe+=/avatar\nactions.slayer_aoe+=/champions_spear\nactions.slayer_aoe+=/warbreaker\nactions.slayer_aoe+=/colossus_smash\nactions.slayer_aoe+=/cleave\nactions.slayer_aoe+=/execute,if=buff.sudden_death.up&buff.imminent_demise.stack<3\nactions.slayer_aoe+=/overpower,if=talent.dreadnaught&buff.sweeping_strikes.up\nactions.slayer_aoe+=/bladestorm\nactions.slayer_aoe+=/skullsplitter,if=buff.sweeping_strikes.up\nactions.slayer_aoe+=/execute,if=buff.sweeping_strikes.up&debuff.executioners_precision.stack<2\nactions.slayer_aoe+=/overpower,if=talent.strength_of_arms&buff.sweeping_strikes.up\nactions.slayer_aoe+=/mortal_strike,if=buff.sweeping_strikes.up&debuff.executioners_precision.stack=2\nactions.slayer_aoe+=/execute,if=debuff.marked_for_execution.up\nactions.slayer_aoe+=/mortal_strike,if=buff.sweeping_strikes.up\nactions.slayer_aoe+=/skullsplitter,if=buff.sweeping_strikes.up\nactions.slayer_aoe+=/overpower\nactions.slayer_aoe+=/thunder_clap\nactions.slayer_aoe+=/mortal_strike,if=debuff.executioners_precision.stack=2\nactions.slayer_aoe+=/execute\nactions.slayer_aoe+=/whirlwind\nactions.slayer_aoe+=/skullsplitter\nactions.slayer_aoe+=/slam\nactions.slayer_aoe+=/storm_bolt,if=buff.bladestorm.up\n\n# Trinkets\n## actions.trinkets+=/do_treacherous_transmitter_task\nactions.trinkets+=/use_item,name=treacherous_transmitter,if=(variable.adds_remain||variable.st_planning)&cooldown.avatar.remains<3\n# Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.\nactions.trinkets+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&!variable.trinket_1_manual&(!buff.avatar.up&trinket.1.cast_time>0||!trinket.1.cast_time>0)&buff.avatar.up&(variable.trinket_2_exclude||!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains&boss\nactions.trinkets+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&(!buff.avatar.up&trinket.2.cast_time>0||!trinket.2.cast_time>0)&buff.avatar.up&(variable.trinket_1_exclude||!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains&boss\n# If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.\nactions.trinkets+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)&!variable.trinket_1_manual&(!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs)||(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions.trinkets+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)&!variable.trinket_2_manual&(!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs)||(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions.trinkets+=/use_item,slot=main_hand,if=!equipped.fyralath_the_dreamrender&(!variable.trinket_1_buffs||trinket.1.cooldown.remains)&(!variable.trinket_2_buffs||trinket.2.cooldown.remains)\n\n# Variables\nactions.variables+=/variable,name=st_planning,value=active_enemies=1\nactions.variables+=/variable,name=adds_remain,value=active_enemies>1\nactions.variables+=/variable,name=execute_phase,value=(talent.massacre.enabled&target.health.pct<35)||target.health.pct<20",
|
|
["spec"] = 71,
|
|
},
|
|
["Protection Warrior"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20240926,
|
|
["spec"] = 73,
|
|
["desc"] = "2024-09-26: Spell Block added\n\n2024-09-24: Mitigations and Impeding Victory Fixed\n\n2024-08-15, 09-09: SimC priority updates\n\n2024-07-24: The War Within",
|
|
["profile"] = "actions.precombat+=/battle_stance,toggle=on\nactions.precombat+=/battle_shout\n\nactions+=/pummel\nactions+=/charge,if=time=0||movement.distance>8\nactions+=/use_items\nactions+=/avatar,if=buff.thunder_blast.down||buff.thunder_blast.stack<=2\nactions+=/spell_block,use_off_gcd=1,if=tanking&incoming_magic_damage_5s>spell_block_damage_taken&health.pct<=spell_block_health_pct&!(buff.spell_reflection_defense.up)\nactions+=/shield_wall,use_off_gcd=1,if=tanking&incoming_damage_5s>shield_wall_damage_taken&health.pct<=shield_wall_health_pct&!(buff.shield_wall.up||buff.last_stand.up||buff.rallying_cry.up||buff.potion.up)\nactions+=/blood_fury\nactions+=/berserking\nactions+=/arcane_torrent\nactions+=/lights_judgment\nactions+=/fireblood\nactions+=/ancestral_call\nactions+=/bag_of_tricks\nactions+=/potion,if=buff.avatar.up||buff.avatar.up&target.health.pct<=20\nactions+=/ignore_pain,if=target.health.pct>=20&(rage.deficit<=15&cooldown.shield_slam.ready||rage.deficit<=40&cooldown.shield_charge.ready&talent.champions_bulwark.enabled||rage.deficit<=20&cooldown.shield_charge.ready||rage.deficit<=30&cooldown.demoralizing_shout.ready&talent.booming_voice.enabled||rage.deficit<=20&cooldown.avatar.ready||rage.deficit<=45&cooldown.demoralizing_shout.ready&talent.booming_voice.enabled&buff.last_stand.up&talent.unnerving_focus.enabled||rage.deficit<=30&cooldown.avatar.ready&buff.last_stand.up&talent.unnerving_focus.enabled||rage.deficit<=20||rage.deficit<=40&cooldown.shield_slam.ready&buff.violent_outburst.up&talent.heavy_repercussions.enabled&talent.impenetrable_wall.enabled||rage.deficit<=55&cooldown.shield_slam.ready&buff.violent_outburst.up&buff.last_stand.up&talent.unnerving_focus.enabled&talent.heavy_repercussions.enabled&talent.impenetrable_wall.enabled||rage.deficit<=17&cooldown.shield_slam.ready&talent.heavy_repercussions.enabled||rage.deficit<=18&cooldown.shield_slam.ready&talent.impenetrable_wall.enabled)||(rage>=70||buff.seeing_red.stack=7&rage>=35)&cooldown.shield_slam.remains<=1&buff.shield_block.remains>=4&set_bonus.tier31_2pc,use_off_gcd=1\nactions+=/last_stand,use_off_gcd=1,if=tanking&incoming_damage_5s>last_stand_damage_taken&health.pct<=last_stand_health_pct&!(buff.shield_wall.up||buff.last_stand.up||buff.rallying_cry.up||buff.potion.up)\nactions+=/rallying_cry,if=tanking&incoming_damage_5s>rallying_cry_damage_taken&health.pct<=rallying_cry_health_pct&!(buff.shield_wall.up||buff.last_stand.up||buff.rallying_cry.up||buff.potion.up)\nactions+=/victory_rush,if=health.pct<victory_rush_health_pct&talent.impending_victory.disabled\nactions+=/impending_victory,if=health.pct<victory_rush_health_pct&talent.impending_victory.enabled\nactions+=/ravager\nactions+=/demoralizing_shout,if=talent.booming_voice.enabled\nactions+=/champions_spear\nactions+=/thunder_blast,if=spell_targets.thunder_blast>=2&buff.thunder_blast.stack=2\nactions+=/demolish,if=buff.colossal_might.stack>=3\nactions+=/thunderous_roar\nactions+=/shield_charge\nactions+=/shield_block,if=buff.shield_block.remains<=10\nactions+=/run_action_list,name=aoe,strict=1,if=spell_targets.thunder_clap>=3\nactions+=/call_action_list,name=generic\n\nactions.aoe+=/thunder_blast,if=dot.rend.remains<=1\nactions.aoe+=/thunder_clap,if=dot.rend.remains<=1\nactions.aoe+=/thunder_blast,if=buff.violent_outburst.up&spell_targets.thunderclap>=2&buff.avatar.up&talent.unstoppable_force.enabled\nactions.aoe+=/thunder_clap,if=buff.violent_outburst.up&spell_targets.thunderclap>=4&buff.avatar.up&talent.unstoppable_force.enabled&talent.crashing_thunder.enabled||buff.violent_outburst.up&spell_targets.thunderclap>6&buff.avatar.up&talent.unstoppable_force.enabled\nactions.aoe+=/revenge,if=rage>=70&talent.seismic_reverberation.enabled&spell_targets.revenge>=3\nactions.aoe+=/shield_slam,if=rage<=60||buff.violent_outburst.up&spell_targets.thunderclap<=4&talent.crashing_thunder.enabled\nactions.aoe+=/thunder_blast\nactions.aoe+=/thunder_clap\nactions.aoe+=/revenge,if=rage>=30||rage>=40&talent.barbaric_training.enabled\n\nactions.generic+=/thunder_blast,if=(buff.thunder_blast.stack=2&buff.burst_of_power.stack<=1&buff.avatar.up&talent.unstoppable_force.enabled)\nactions.generic+=/shield_slam,if=(buff.burst_of_power.stack=2&buff.thunder_blast.stack<=1||buff.violent_outburst.up)||rage<=70&talent.demolish.enabled\nactions.generic+=/execute,if=rage>=70||(rage>=40&cooldown.shield_slam.remains&talent.demolish.enabled||rage>=50&cooldown.shield_slam.remains)||buff.sudden_death.up&talent.sudden_death.enabled\nactions.generic+=/shield_slam\nactions.generic+=/thunder_blast,if=dot.rend.remains<=2&buff.violent_outburst.down\nactions.generic+=/thunder_clap,if=dot.rend.remains<=2&buff.violent_outburst.down\nactions.generic+=/thunder_blast,if=(spell_targets.thunder_clap>1||cooldown.shield_slam.remains&!buff.violent_outburst.up)\nactions.generic+=/thunder_clap,if=(spell_targets.thunder_clap>1||cooldown.shield_slam.remains&!buff.violent_outburst.up)\nactions.generic+=/revenge,if=(rage>=80&target.health.pct>20||buff.revenge.up&target.health.pct<=20&rage<=18&cooldown.shield_slam.remains||buff.revenge.up&target.health.pct>20)||(rage>=80&target.health.pct>35||buff.revenge.up&target.health.pct<=35&rage<=18&cooldown.shield_slam.remains||buff.revenge.up&target.health.pct>35)&talent.massacre.enabled\nactions.generic+=/execute\nactions.generic+=/revenge\nactions.generic+=/thunder_blast,if=(spell_targets.thunder_clap>=1||cooldown.shield_slam.remains&buff.violent_outburst.up)\nactions.generic+=/thunder_clap,if=(spell_targets.thunder_clap>=1||cooldown.shield_slam.remains&buff.violent_outburst.up)\nactions.generic+=/devastate",
|
|
["version"] = 20240926,
|
|
["warnings"] = "Imported 4 action lists.\n",
|
|
["lists"] = {
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 1",
|
|
["action"] = "thunder_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 1",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.violent_outburst.up & spell_targets.thunderclap >= 2 & buff.avatar.up & talent.unstoppable_force.enabled",
|
|
["action"] = "thunder_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.violent_outburst.up & spell_targets.thunderclap >= 4 & buff.avatar.up & talent.unstoppable_force.enabled & talent.crashing_thunder.enabled || buff.violent_outburst.up & spell_targets.thunderclap > 6 & buff.avatar.up & talent.unstoppable_force.enabled",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 70 & talent.seismic_reverberation.enabled & spell_targets.revenge >= 3",
|
|
["action"] = "revenge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage <= 60 || buff.violent_outburst.up & spell_targets.thunderclap <= 4 & talent.crashing_thunder.enabled",
|
|
["action"] = "shield_slam",
|
|
},
|
|
{
|
|
["action"] = "thunder_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 30 || rage >= 40 & talent.barbaric_training.enabled",
|
|
["action"] = "revenge",
|
|
},
|
|
},
|
|
["generic"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.thunder_blast.stack = 2 & buff.burst_of_power.stack <= 1 & buff.avatar.up & talent.unstoppable_force.enabled )",
|
|
["action"] = "thunder_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.burst_of_power.stack = 2 & buff.thunder_blast.stack <= 1 || buff.violent_outburst.up ) || rage <= 70 & talent.demolish.enabled",
|
|
["action"] = "shield_slam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 70 || ( rage >= 40 & cooldown.shield_slam.remains & talent.demolish.enabled || rage >= 50 & cooldown.shield_slam.remains ) || buff.sudden_death.up & talent.sudden_death.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "shield_slam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 2 & buff.violent_outburst.down",
|
|
["action"] = "thunder_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 2 & buff.violent_outburst.down",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( spell_targets.thunder_clap > 1 || cooldown.shield_slam.remains & ! buff.violent_outburst.up )",
|
|
["action"] = "thunder_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( spell_targets.thunder_clap > 1 || cooldown.shield_slam.remains & ! buff.violent_outburst.up )",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( rage >= 80 & target.health.pct > 20 || buff.revenge.up & target.health.pct <= 20 & rage <= 18 & cooldown.shield_slam.remains || buff.revenge.up & target.health.pct > 20 ) || ( rage >= 80 & target.health.pct > 35 || buff.revenge.up & target.health.pct <= 35 & rage <= 18 & cooldown.shield_slam.remains || buff.revenge.up & target.health.pct > 35 ) & talent.massacre.enabled",
|
|
["action"] = "revenge",
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "revenge",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( spell_targets.thunder_clap >= 1 || cooldown.shield_slam.remains & buff.violent_outburst.up )",
|
|
["action"] = "thunder_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( spell_targets.thunder_clap >= 1 || cooldown.shield_slam.remains & buff.violent_outburst.up )",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["action"] = "devastate",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "pummel",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time = 0 || movement.distance > 8",
|
|
["action"] = "charge",
|
|
},
|
|
{
|
|
["action"] = "use_items",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.thunder_blast.down || buff.thunder_blast.stack <= 2",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "tanking & incoming_magic_damage_5s > spell_block_damage_taken & health.pct <= spell_block_health_pct & ! ( buff.spell_reflection_defense.up )",
|
|
["action"] = "spell_block",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "tanking & incoming_damage_5s > shield_wall_damage_taken & health.pct <= shield_wall_health_pct & ! ( buff.shield_wall.up || buff.last_stand.up || buff.rallying_cry.up || buff.potion.up )",
|
|
["action"] = "shield_wall",
|
|
},
|
|
{
|
|
["action"] = "blood_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "berserking",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bag_of_tricks",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avatar.up || buff.avatar.up & target.health.pct <= 20",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "ignore_pain",
|
|
["criteria"] = "target.health.pct >= 20 & ( rage.deficit <= 15 & cooldown.shield_slam.ready || rage.deficit <= 40 & cooldown.shield_charge.ready & talent.champions_bulwark.enabled || rage.deficit <= 20 & cooldown.shield_charge.ready || rage.deficit <= 30 & cooldown.demoralizing_shout.ready & talent.booming_voice.enabled || rage.deficit <= 20 & cooldown.avatar.ready || rage.deficit <= 45 & cooldown.demoralizing_shout.ready & talent.booming_voice.enabled & buff.last_stand.up & talent.unnerving_focus.enabled || rage.deficit <= 30 & cooldown.avatar.ready & buff.last_stand.up & talent.unnerving_focus.enabled || rage.deficit <= 20 || rage.deficit <= 40 & cooldown.shield_slam.ready & buff.violent_outburst.up & talent.heavy_repercussions.enabled & talent.impenetrable_wall.enabled || rage.deficit <= 55 & cooldown.shield_slam.ready & buff.violent_outburst.up & buff.last_stand.up & talent.unnerving_focus.enabled & talent.heavy_repercussions.enabled & talent.impenetrable_wall.enabled || rage.deficit <= 17 & cooldown.shield_slam.ready & talent.heavy_repercussions.enabled || rage.deficit <= 18 & cooldown.shield_slam.ready & talent.impenetrable_wall.enabled ) || ( rage >= 70 || buff.seeing_red.stack = 7 & rage >= 35 ) & cooldown.shield_slam.remains <= 1 & buff.shield_block.remains >= 4 & set_bonus.tier31_2pc",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "tanking & incoming_damage_5s > last_stand_damage_taken & health.pct <= last_stand_health_pct & ! ( buff.shield_wall.up || buff.last_stand.up || buff.rallying_cry.up || buff.potion.up )",
|
|
["action"] = "last_stand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & incoming_damage_5s > rallying_cry_damage_taken & health.pct <= rallying_cry_health_pct & ! ( buff.shield_wall.up || buff.last_stand.up || buff.rallying_cry.up || buff.potion.up )",
|
|
["action"] = "rallying_cry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "health.pct < victory_rush_health_pct & talent.impending_victory.disabled",
|
|
["action"] = "victory_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "health.pct < victory_rush_health_pct & talent.impending_victory.enabled",
|
|
["action"] = "impending_victory",
|
|
},
|
|
{
|
|
["action"] = "ravager",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.booming_voice.enabled",
|
|
["action"] = "demoralizing_shout",
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.thunder_blast >= 2 & buff.thunder_blast.stack = 2",
|
|
["action"] = "thunder_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.colossal_might.stack >= 3",
|
|
["action"] = "demolish",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "shield_charge",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.shield_block.remains <= 10",
|
|
["action"] = "shield_block",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "spell_targets.thunder_clap >= 3",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "generic",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["toggle"] = "on",
|
|
["action"] = "battle_stance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "battle_shout",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["basedOn"] = "Protection Warrior",
|
|
["author"] = "SimulationCraft",
|
|
},
|
|
["Retribution"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20241029.1,
|
|
["spec"] = 70,
|
|
["desc"] = "2024-10-29: Efficiency of Finishers (fixed)\n\n2024-09-28: SimC update; HoL fix?\n\n2024-09-10, 09-22: SimC update\n\n2024-08-28: Fix HoL and update from SimC\n\n2024-08-24: Fix Hammer of Light\n\n2024-07-23: The War Within",
|
|
["profile"] = "actions.precombat+=/shield_of_vengeance\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_buff.strength||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_buff.strength||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.crusade.duration=0||cooldown.crusade.duration%%trinket.1.cooldown.duration=0||trinket.1.cooldown.duration%%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.crusade.duration=0||cooldown.crusade.duration%%trinket.2.cooldown.duration=0||trinket.2.cooldown.duration%%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%%trinket.2.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync))\n\nactions+=/rebuke\nactions+=/call_action_list,name=cooldowns\nactions+=/call_action_list,name=generators\n\nactions.cooldowns+=/potion,if=buff.avenging_wrath.up||buff.crusade.up||debuff.execution_sentence.up||boss&fight_remains<30\n## actions.cooldowns+=/invoke_external_buff,name=power_infusion,if=buff.avenging_wrath.up||buff.crusade.up||debuff.execution_sentence.up\nactions.cooldowns+=/lights_judgment,if=spell_targets.lights_judgment>=2||!raid_event.adds.exists||raid_event.adds.in>75||raid_event.adds.up\nactions.cooldowns+=/fireblood,if=buff.avenging_wrath.up||buff.crusade.up&buff.crusade.stack=10||debuff.execution_sentence.up\nactions.cooldowns+=/use_item,slot=trinket1,if=((buff.avenging_wrath.up&cooldown.avenging_wrath.remains>40||buff.crusade.up&buff.crusade.stack=10)&!talent.radiant_glory||talent.radiant_glory&(!talent.execution_sentence&cooldown.wake_of_ashes.remains=0||debuff.execution_sentence.up))&(!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains&boss\nactions.cooldowns+=/use_item,slot=trinket2,if=((buff.avenging_wrath.up&cooldown.avenging_wrath.remains>40||buff.crusade.up&buff.crusade.stack=10)&!talent.radiant_glory||talent.radiant_glory&(!talent.execution_sentence&cooldown.wake_of_ashes.remains=0||debuff.execution_sentence.up))&(!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains&boss\nactions.cooldowns+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs||!buff.crusade.up&cooldown.crusade.remains>20||!buff.avenging_wrath.up&cooldown.avenging_wrath.remains>20)\nactions.cooldowns+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs||!buff.crusade.up&cooldown.crusade.remains>20||!buff.avenging_wrath.up&cooldown.avenging_wrath.remains>20)\nactions.cooldowns+=/shield_of_vengeance,if=fight_remains>15&(!talent.execution_sentence||!debuff.execution_sentence.up)\nactions.cooldowns+=/execution_sentence,if=(!buff.crusade.up&cooldown.crusade.remains>15||buff.crusade.stack=10||cooldown.avenging_wrath.remains<0.75||cooldown.avenging_wrath.remains>15||talent.radiant_glory)&(holy_power>=4&time<5||holy_power>=3&time>5||holy_power>=2&(talent.divine_auxiliary||talent.radiant_glory))&(target.time_to_die>8&!talent.executioners_will||target.time_to_die>12)&cooldown.wake_of_ashes.remains<gcd\nactions.cooldowns+=/avenging_wrath,if=(holy_power>=4&time<5||holy_power>=3&time>5||holy_power>=2&talent.divine_auxiliary&(cooldown.execution_sentence.remains=0||cooldown.final_reckoning.remains=0))&(!raid_event.adds.up||target.time_to_die>10)\nactions.cooldowns+=/crusade,if=holy_power>=5&time<5||holy_power>=3&time>5\nactions.cooldowns+=/final_reckoning,if=(holy_power>=4&time<8||holy_power>=3&time>=8||holy_power>=2&(talent.divine_auxiliary||talent.radiant_glory))&(cooldown.avenging_wrath.remains>10||cooldown.crusade.remains&(!buff.crusade.up||buff.crusade.stack>=10)||talent.radiant_glory&(buff.avenging_wrath.up||talent.crusade&cooldown.wake_of_ashes.remains<gcd))&(!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||!talent.final_verdict&talent.tempest_of_the_lightbringer)&!buff.empyrean_legacy.up&!(buff.divine_arbiter.up&buff.divine_arbiter.stack>24)\nactions.finishers+=/hammer_of_light\nactions.finishers+=/divine_hammer,if=holy_power=5\nactions.finishers+=/divine_storm,if=variable.ds_castable&!buff.hammer_of_light_ready.up&(!talent.crusade||cooldown.crusade.remains>gcd*3||buff.crusade.up&buff.crusade.stack<10||talent.radiant_glory)&(!buff.divine_hammer.up||cooldown.divine_hammer.remains>110&holy_power>=4)\nactions.finishers+=/justicars_vengeance,if=(!talent.crusade||cooldown.crusade.remains>gcd*3||buff.crusade.up&buff.crusade.stack<10||talent.radiant_glory)&!buff.hammer_of_light_ready.up&(!buff.divine_hammer.up||cooldown.divine_hammer.remains>110&holy_power>=4)\nactions.finishers+=/templars_verdict,if=(!talent.crusade||cooldown.crusade.remains>gcd*3||buff.crusade.up&buff.crusade.stack<10||talent.radiant_glory)&!buff.hammer_of_light_ready.up&(!buff.divine_hammer.up||cooldown.divine_hammer.remains>110&holy_power>=4)\nactions.finishers+=/variable,name=finished,op=set,value=true\n\nactions.generators+=/hammer_of_light,if=buff.hammer_of_light_free.up\nactions.generators+=/variable,name=finished,op=set,value=false\nactions.generators+=/call_action_list,name=finishers,strict=1,if=holy_power=5||holy_power=4&buff.divine_resonance.up\nactions.generators+=/templar_slash,if=buff.templar_strikes.remains<gcd*2\nactions.generators+=/blade_of_justice,if=!dot.expurgation.ticking&talent.holy_flames\nactions.generators+=/wake_of_ashes,if=(!talent.lights_guidance||holy_power>=2&talent.lights_guidance)&(cooldown.avenging_wrath.remains>6||cooldown.crusade.remains>6||talent.radiant_glory)&(!talent.execution_sentence||cooldown.execution_sentence.remains>4||target.time_to_die<8)&(!raid_event.adds.exists||raid_event.adds.in>10||raid_event.adds.up)\nactions.generators+=/divine_toll,if=holy_power<=2&(!raid_event.adds.exists||raid_event.adds.in>10||raid_event.adds.up)&(cooldown.avenging_wrath.remains>15||cooldown.crusade.remains>15||talent.radiant_glory||fight_remains<8)\nactions.generators+=/call_action_list,name=finishers,strict=1,if=holy_power>=3&buff.crusade.up&buff.crusade.stack<10&!variable.finished\nactions.generators+=/templar_slash,if=buff.templar_strikes.remains<gcd&spell_targets.divine_storm>=2\nactions.generators+=/blade_of_justice,if=(holy_power<=3||!talent.holy_blade)&(spell_targets.divine_storm>=2&talent.blade_of_vengeance)\nactions.generators+=/hammer_of_wrath,if=(spell_targets.divine_storm<2||!talent.blessed_champion)&(holy_power<=3||target.health.pct>20||!talent.vanguards_momentum)&(target.health.pct<35&talent.vengeful_wrath||buff.blessing_of_anshe.up)\nactions.generators+=/templar_strike\nactions.generators+=/judgment,if=holy_power<=3||!talent.boundless_judgment\nactions.generators+=/blade_of_justice,if=holy_power<=3||!talent.holy_blade\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\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)&!variable.finished\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,strict=1,if=!variable.finished\nactions.generators+=/hammer_of_wrath,if=holy_power<=3||target.health.pct>20||!talent.vanguards_momentum\nactions.generators+=/crusader_strike\nactions.generators+=/arcane_torrent",
|
|
["version"] = 20241029.1,
|
|
["warnings"] = "The import for 'precombat' required some automated changes.\nLine 2: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 2: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 2: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 2: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 2: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 2: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 3: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 3: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 3: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 3: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 3: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.crusade.duration=0||cooldown.crusade.duration%%trinket.t1.cooldown.duration=0||trinket.t1.cooldown.duration%%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.crusade.duration=0||cooldown.crusade.duration%trinket.t1.cooldown.duration=0||trinket.t1.cooldown.duration%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%trinket.t1.cooldown.duration=0)'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.crusade.duration=0||cooldown.crusade.duration%%trinket.t2.cooldown.duration=0||trinket.t2.cooldown.duration%%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.crusade.duration=0||cooldown.crusade.duration%trinket.t2.cooldown.duration=0||trinket.t2.cooldown.duration%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%trinket.t2.cooldown.duration=0)'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 6: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 6: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 6: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 6: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 6: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 6: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'cooldowns' required some automated changes.\nLine 4: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 4: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 4: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 4: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 4: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 5: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 5: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 5: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 8: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 9: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 9: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 9: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 9: Converted 'talent.executioners_will' to 'talent.executioners_will.enabled' (1x).\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 12: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 12: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 12: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\n\nThe import for 'finishers' required some automated changes.\nLine 1: Converted 'talent.final_verdict' to 'talent.final_verdict.enabled' (1x).\nLine 1: Converted 'talent.tempest_of_the_lightbringer' to 'talent.tempest_of_the_lightbringer.enabled' (1x).\nLine 4: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 4: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 5: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 6: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 6: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\n\nThe import for 'generators' required some automated changes.\nLine 5: Converted 'talent.holy_flames' to 'talent.holy_flames.enabled' (1x).\nLine 6: Converted 'talent.lights_guidance' to 'talent.lights_guidance.enabled' (1x).\nLine 6: Converted 'talent.lights_guidance' to 'talent.lights_guidance.enabled' (1x).\nLine 6: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 6: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 7: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 10: Converted 'talent.holy_blade' to 'talent.holy_blade.enabled' (1x).\nLine 10: Converted 'talent.blade_of_vengeance' to 'talent.blade_of_vengeance.enabled' (1x).\nLine 11: Converted 'talent.blessed_champion' to 'talent.blessed_champion.enabled' (1x).\nLine 11: Converted 'talent.vanguards_momentum' to 'talent.vanguards_momentum.enabled' (1x).\nLine 11: Converted 'talent.vengeful_wrath' to 'talent.vengeful_wrath.enabled' (1x).\nLine 13: Converted 'talent.boundless_judgment' to 'talent.boundless_judgment.enabled' (1x).\nLine 14: Converted 'talent.holy_blade' to 'talent.holy_blade.enabled' (1x).\nLine 15: Converted 'talent.blessed_champion' to 'talent.blessed_champion.enabled' (1x).\nLine 15: Converted 'talent.vanguards_momentum' to 'talent.vanguards_momentum.enabled' (1x).\nLine 20: Converted 'talent.vanguards_momentum' to 'talent.vanguards_momentum.enabled' (1x).\n\nImported 5 action lists.\n",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "rebuke",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "generators",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "shield_of_vengeance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_1_sync",
|
|
["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",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
},
|
|
["generators"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hammer_of_light_free.up",
|
|
["action"] = "hammer_of_light",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "false",
|
|
["var_name"] = "finished",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "holy_power = 5 || holy_power = 4 & buff.divine_resonance.up",
|
|
["list_name"] = "finishers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.templar_strikes.remains < gcd.max * 2",
|
|
["action"] = "templar_slash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.expurgation.ticking & talent.holy_flames.enabled",
|
|
["action"] = "blade_of_justice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.lights_guidance.enabled || holy_power >= 2 & talent.lights_guidance.enabled ) & ( cooldown.avenging_wrath.remains > 6 || cooldown.crusade.remains > 6 || talent.radiant_glory.enabled ) & ( ! talent.execution_sentence.enabled || cooldown.execution_sentence.remains > 4 || target.time_to_die < 8 ) & ( ! raid_event.adds.exists || raid_event.adds.in > 10 || raid_event.adds.up )",
|
|
["action"] = "wake_of_ashes",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "holy_power <= 2 & ( ! raid_event.adds.exists || raid_event.adds.in > 10 || raid_event.adds.up ) & ( cooldown.avenging_wrath.remains > 15 || cooldown.crusade.remains > 15 || talent.radiant_glory.enabled || fight_remains < 8 )",
|
|
["action"] = "divine_toll",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "holy_power >= 3 & buff.crusade.up & buff.crusade.stack < 10 & ! variable.finished",
|
|
["list_name"] = "finishers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.templar_strikes.remains < gcd.max & spell_targets.divine_storm >= 2",
|
|
["action"] = "templar_slash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( holy_power <= 3 || ! talent.holy_blade.enabled ) & ( spell_targets.divine_storm >= 2 & talent.blade_of_vengeance.enabled )",
|
|
["action"] = "blade_of_justice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( spell_targets.divine_storm < 2 || ! talent.blessed_champion.enabled ) & ( holy_power <= 3 || target.health.pct > 20 || ! talent.vanguards_momentum.enabled ) & ( target.health.pct < 35 & talent.vengeful_wrath.enabled || buff.blessing_of_anshe.up )",
|
|
["action"] = "hammer_of_wrath",
|
|
},
|
|
{
|
|
["action"] = "templar_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "holy_power <= 3 || ! talent.boundless_judgment.enabled",
|
|
["action"] = "judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "holy_power <= 3 || ! talent.holy_blade.enabled",
|
|
["action"] = "blade_of_justice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
},
|
|
{
|
|
["action"] = "templar_slash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "( target.health.pct <= 20 || buff.avenging_wrath.up || buff.crusade.up || buff.empyrean_power.up ) & ! variable.finished",
|
|
["list_name"] = "finishers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.crusader_strike.charges_fractional >= 1.75 & ( holy_power <= 2 || holy_power <= 3 & cooldown.blade_of_justice.remains > gcd.max * 2 || holy_power = 4 & cooldown.blade_of_justice.remains > gcd.max * 2 & cooldown.judgment.remains > gcd.max * 2 )",
|
|
["action"] = "crusader_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! variable.finished",
|
|
["list_name"] = "finishers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "holy_power <= 3 || target.health.pct > 20 || ! talent.vanguards_momentum.enabled",
|
|
["action"] = "hammer_of_wrath",
|
|
},
|
|
{
|
|
["action"] = "crusader_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["finishers"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( spell_targets.divine_storm >= 2 || buff.empyrean_power.up || ! talent.final_verdict.enabled & talent.tempest_of_the_lightbringer.enabled ) & ! buff.empyrean_legacy.up & ! ( buff.divine_arbiter.up & buff.divine_arbiter.stack > 24 )",
|
|
["var_name"] = "ds_castable",
|
|
},
|
|
{
|
|
["action"] = "hammer_of_light",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "holy_power = 5",
|
|
["action"] = "divine_hammer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.ds_castable & ! buff.hammer_of_light_ready.up & ( ! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 || buff.crusade.up & buff.crusade.stack < 10 || talent.radiant_glory.enabled ) & ( ! buff.divine_hammer.up || cooldown.divine_hammer.remains > 110 & holy_power >= 4 )",
|
|
["action"] = "divine_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 || buff.crusade.up & buff.crusade.stack < 10 || talent.radiant_glory.enabled ) & ! buff.hammer_of_light_ready.up & ( ! buff.divine_hammer.up || cooldown.divine_hammer.remains > 110 & holy_power >= 4 )",
|
|
["action"] = "justicars_vengeance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 || buff.crusade.up & buff.crusade.stack < 10 || talent.radiant_glory.enabled ) & ! buff.hammer_of_light_ready.up & ( ! buff.divine_hammer.up || cooldown.divine_hammer.remains > 110 & holy_power >= 4 )",
|
|
["action"] = "templars_verdict",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "true",
|
|
["var_name"] = "finished",
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avenging_wrath.up || buff.crusade.up || debuff.execution_sentence.up || boss & fight_remains < 30",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.lights_judgment >= 2 || ! raid_event.adds.exists || raid_event.adds.in > 75 || raid_event.adds.up",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avenging_wrath.up || buff.crusade.up & buff.crusade.stack = 10 || debuff.execution_sentence.up",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "( ( buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 40 || buff.crusade.up & buff.crusade.stack = 10 ) & ! talent.radiant_glory.enabled || talent.radiant_glory.enabled & ( ! talent.execution_sentence.enabled & cooldown.wake_of_ashes.remains = 0 || debuff.execution_sentence.up ) ) & ( ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || trinket.t1.buff_duration >= fight_remains & boss",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "( ( buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 40 || buff.crusade.up & buff.crusade.stack = 10 ) & ! talent.radiant_glory.enabled || talent.radiant_glory.enabled & ( ! talent.execution_sentence.enabled & cooldown.wake_of_ashes.remains = 0 || debuff.execution_sentence.up ) ) & ( ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || trinket.t2.buff_duration >= fight_remains & boss",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs || ! buff.crusade.up & cooldown.crusade.remains > 20 || ! buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 20 )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs || ! buff.crusade.up & cooldown.crusade.remains > 20 || ! buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 20 )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > 15 & ( ! talent.execution_sentence.enabled || ! debuff.execution_sentence.up )",
|
|
["action"] = "shield_of_vengeance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! buff.crusade.up & cooldown.crusade.remains > 15 || buff.crusade.stack = 10 || cooldown.avenging_wrath.remains < 0.75 || cooldown.avenging_wrath.remains > 15 || talent.radiant_glory.enabled ) & ( holy_power >= 4 & time < 5 || holy_power >= 3 & time > 5 || holy_power >= 2 & ( talent.divine_auxiliary.enabled || talent.radiant_glory.enabled ) ) & ( target.time_to_die > 8 & ! talent.executioners_will.enabled || target.time_to_die > 12 ) & cooldown.wake_of_ashes.remains < gcd.max",
|
|
["action"] = "execution_sentence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( holy_power >= 4 & time < 5 || holy_power >= 3 & time > 5 || holy_power >= 2 & talent.divine_auxiliary.enabled & ( cooldown.execution_sentence.remains = 0 || cooldown.final_reckoning.remains = 0 ) ) & ( ! raid_event.adds.up || target.time_to_die > 10 )",
|
|
["action"] = "avenging_wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "holy_power >= 5 & time < 5 || holy_power >= 3 & time > 5",
|
|
["action"] = "crusade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( holy_power >= 4 & time < 8 || holy_power >= 3 & time >= 8 || holy_power >= 2 & ( talent.divine_auxiliary.enabled || talent.radiant_glory.enabled ) ) & ( cooldown.avenging_wrath.remains > 10 || cooldown.crusade.remains & ( ! buff.crusade.up || buff.crusade.stack >= 10 ) || talent.radiant_glory.enabled & ( buff.avenging_wrath.up || talent.crusade.enabled & cooldown.wake_of_ashes.remains < gcd.max ) ) & ( ! raid_event.adds.exists || raid_event.adds.up || raid_event.adds.in > 40 )",
|
|
["action"] = "final_reckoning",
|
|
},
|
|
},
|
|
},
|
|
["author"] = "SimC",
|
|
},
|
|
["Discipline"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20240811,
|
|
["author"] = "SimC",
|
|
["desc"] = "Healer priorities are DPS-focused only\n\n2024-07-30: The War Within",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! buff.twilight_equilibrium_holy_amp.up & ! buff.twilight_equilibrium_shadow_amp.up",
|
|
["var_name"] = "te_none",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.twilight_equilibrium_shadow_amp.up || variable.te_none",
|
|
["description"] = "Twilight Equilibrium is buffing shadow damage",
|
|
["var_name"] = "te_shadow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.twilight_equilibrium_holy_amp.up || variable.te_none",
|
|
["description"] = "Twilight Equilibrium is buffing holy damage",
|
|
["var_name"] = "te_holy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.shadow_covenant.enabled",
|
|
["description"] = "Long Shadow covenant is enabled",
|
|
["var_name"] = "long_scov",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.shadowfiend.up || buff.shadow_covenant.up",
|
|
["description"] = "Ready to start shadow covenant phase",
|
|
["var_name"] = "can_enter_scov",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
["criteria"] = "talent.dark_indulgence.enabled",
|
|
["description"] = "penance",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["criteria"] = "talent.shadow_word_death.enabled",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["criteria"] = "talent.shadow_word_death.enabled & talent.death_and_madness.enabled & target.health.pct < 20",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.mindgames.execute_time",
|
|
["criteria"] = "talent.mindgames.enabled",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.divine_star.execute_time",
|
|
["criteria"] = "talent.divine_star.enabled",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.halo.execute_time",
|
|
["criteria"] = "talent.halo.enabled",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "floor",
|
|
["action"] = "variable",
|
|
["value"] = "( buff.shadow_covenant.duration - variable.shadow_spells_duration_max ) / gcd.max",
|
|
["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)",
|
|
["var_name"] = "max_te_holy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["description"] = "Counting variable, the number of non-fractional remaining holy casts available",
|
|
["var_name"] = "remaining_te_holy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "variable.max_te_holy",
|
|
["var_name"] = "remaining_te_holy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["criteria"] = "talent.train_of_thought.enabled",
|
|
["description"] = "TODO: duration_expected is buggy on penance/dark reprimand, using a static reduction as a stand-in for now",
|
|
["value"] = "2",
|
|
["action"] = "variable",
|
|
["value_else"] = "0",
|
|
["var_name"] = "expected_penance_reduction",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["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.",
|
|
["var_name"] = "shadow_spells_duration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["criteria"] = "cooldown.penance.up || ( ( cooldown.penance.remains - variable.expected_penance_reduction ) < buff.shadow_covenant.remains )",
|
|
["description"] = "Penance",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["criteria"] = "cooldown.mindgames.up || ( cooldown.mindgames.remains_expected < buff.shadow_covenant.remains )",
|
|
["description"] = "Mindgames",
|
|
["value"] = "action.mindgames.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["criteria"] = "cooldown.shadow_word_death.up || ( cooldown.shadow_word_death.remains < buff.shadow_covenant.remains )",
|
|
["description"] = "We always get the first SW:D",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["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",
|
|
["description"] = "Second SW:D only when talented and target health in execute range",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["criteria"] = "action.mind_blast.charges >= 1",
|
|
["description"] = "Add any whole charges of mind blast",
|
|
["value"] = "action.mind_blast.charges * action.mind_blast.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["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 ) )",
|
|
["description"] = "Add any fractional charges of mindblast that will recharge in time",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["criteria"] = "cooldown.divine_star.up || ( cooldown.divine_star.remains < buff.shadow_covenant.remains )",
|
|
["description"] = "Divine Star",
|
|
["value"] = "action.divine_star.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["criteria"] = "cooldown.halo.up || ( cooldown.halo.remains < buff.shadow_covenant.remains )",
|
|
["description"] = "Halo",
|
|
["value"] = "action.halo.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["criteria"] = "talent.twilight_equilibrium.enabled",
|
|
["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",
|
|
["action"] = "variable",
|
|
["value_else"] = "0",
|
|
["var_name"] = "should_te",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.shadowfiend.remains + action.shadowfiend.execute_time",
|
|
["description"] = "First casts should always be HD prep->covenant->schism->HD dark reprimand",
|
|
["var_name"] = "next_penance_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_penance_time",
|
|
["criteria"] = "variable.remaining_te_holy > 0",
|
|
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
|
|
["value"] = "gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["description"] = "Reduce our counting variable",
|
|
["var_name"] = "remaining_te_holy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( cooldown.penance.duration - variable.expected_penance_reduction ) < variable.next_penance_time",
|
|
["var_name"] = "can_penance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.next_penance_time + 2",
|
|
["description"] = "Shadow Word: Death SW:D is better than other spells if we are in execute phase.",
|
|
["var_name"] = "next_swd_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_swd_time",
|
|
["criteria"] = "variable.remaining_te_holy > 0",
|
|
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
|
|
["value"] = "gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["description"] = "Reduce our counting variable",
|
|
["var_name"] = "remaining_te_holy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_swd_time",
|
|
["criteria"] = "( ( talent.mindgames.enabled & talent.shattered_perceptions.enabled ) || ( talent.mindgames.enabled & ! talent.expiation.enabled ) ) & target.health.pct >= 20",
|
|
["description"] = "indgame ette ha W: ren' xecut has n av hattere erception on' av xpiatio",
|
|
["value"] = "action.mindgames.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_swd_time",
|
|
["criteria"] = "target.health.pct >= 20",
|
|
["description"] = "Mind blast is better than SW:D if we aren't in execute",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_swd_time",
|
|
["criteria"] = "target.health.pct >= 20 & talent.dark_indulgence.enabled",
|
|
["description"] = "Second mindblast when talented",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_swd_time",
|
|
["criteria"] = "talent.divine_star.enabled & target.health.pct >= 20 & ! talent.expiation.enabled",
|
|
["description"] = "Divine Star and halo are better than SW:D if we aren't in execute and don't have expiation",
|
|
["value"] = "action.divine_star.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.halo.execute_time",
|
|
["criteria"] = "talent.halo.enabled & target.health.pct >= 20 & ! talent.expiation.enabled",
|
|
["var_name"] = "next_swd_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.shadow_word_death.duration_expected < variable.next_swd_time",
|
|
["var_name"] = "can_swd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.next_penance_time + 2",
|
|
["description"] = "Mindblast Mindblast is better than other spells if we aren't in execute phase",
|
|
["var_name"] = "next_mind_blast_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mind_blast_time",
|
|
["criteria"] = "variable.remaining_te_holy > 0",
|
|
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
|
|
["value"] = "gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["description"] = "Reduce our counting variable",
|
|
["var_name"] = "remaining_te_holy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mind_blast_time",
|
|
["criteria"] = "target.health.pct < 20",
|
|
["description"] = "Add SW:D if we're in execute phase",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mind_blast_time",
|
|
["criteria"] = "talent.death_and_madness.enabled & target.health.pct < 20",
|
|
["description"] = "Add a second SW:D if we have death and madness",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mind_blast_time",
|
|
["criteria"] = "talent.mindgames.enabled & ! talent.expiation.enabled",
|
|
["description"] = "Add mindgames if we have it talented and don't have expiation",
|
|
["value"] = "action.mindgames.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["criteria"] = "action.mind_blast.charges_fractional >= 1",
|
|
["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",
|
|
["action"] = "variable",
|
|
["value_else"] = "0",
|
|
["var_name"] = "can_mind_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.next_penance_time + 2",
|
|
["description"] = "Mindgames Mindgames is a better option than other spells if we aren't in execute and don't have expiation",
|
|
["var_name"] = "next_mindgames_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mindgames_time",
|
|
["criteria"] = "variable.remaining_te_holy > 0",
|
|
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
|
|
["value"] = "gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["description"] = "Reduce our counting variable",
|
|
["var_name"] = "remaining_te_holy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mindgames_time",
|
|
["criteria"] = "target.health.pct < 20 || ( talent.expiation.enabled & ! talent.shattered_perceptions.enabled )",
|
|
["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",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mindgames_time",
|
|
["criteria"] = "target.health.pct < 20 & talent.death_and_madness.enabled",
|
|
["description"] = "Add a second SW:D if we have death and madness",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mindgames_time",
|
|
["criteria"] = "talent.expiation.enabled",
|
|
["description"] = "Mind blast is better than mindgames if we have expiation",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mindgames_time",
|
|
["criteria"] = "talent.expiation.enabled & talent.dark_indulgence.enabled",
|
|
["description"] = "Second mindblast when talented",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.mindgames.duration_expected < variable.next_mindgames_time",
|
|
["var_name"] = "can_mindgames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.next_penance_time + 2",
|
|
["description"] = "Divine Star",
|
|
["var_name"] = "next_divine_star_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["criteria"] = "variable.remaining_te_holy > 0",
|
|
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
|
|
["value"] = "gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["description"] = "Reduce our counting variable",
|
|
["var_name"] = "remaining_te_holy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["criteria"] = "target.health.pct < 20 || talent.expiation.enabled",
|
|
["description"] = "SW:D is better unless outside of execute phase when expiation is untalented",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["criteria"] = "target.health.pct < 20 & talent.death_and_madness.enabled",
|
|
["description"] = "Add a second SW:D if we have death and madness",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["criteria"] = "talent.expiation.enabled",
|
|
["description"] = "Mind blast is always better",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["criteria"] = "talent.dark_indulgence.enabled",
|
|
["description"] = "Second mindblast when talented",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["criteria"] = "talent.mindgames.enabled",
|
|
["description"] = "Mindgames is always better",
|
|
["value"] = "action.mindgames.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.divine_star.duration < variable.next_divine_star_time",
|
|
["var_name"] = "can_divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadow_covenant.enabled & cooldown.mindbender.up",
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "scov_prep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.long_scov & variable.can_enter_scov",
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "long_scov",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.purge_the_wicked.enabled & ( target.time_to_die > ( 0.3 * dot.purge_the_wicked.duration ) ) & ( ! ticking || ( refreshable & ( ! talent.painful_punishment.enabled || ( talent.painful_punishment.enabled & ( dot.purge_the_wicked.remains < ( cooldown.penance.remains - variable.expected_penance_reduction ) ) ) ) ) )",
|
|
["action"] = "purge_the_wicked",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.purge_the_wicked.enabled & ( target.time_to_die > ( 0.3 * dot.shadow_word_pain.duration ) ) & ( ! ticking || ( refreshable & ( ! talent.painful_punishment.enabled || ( talent.painful_punishment.enabled & ( dot.shadow_word_pain.remains < ( cooldown.penance.remains - variable.expected_penance_reduction ) ) ) ) ) )",
|
|
["action"] = "shadow_word_pain",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_swd ) & target.health.pct < 20",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.dark_indulgence.enabled & buff.power_of_the_dark_side.down & cooldown.penance.remains < gcd.max",
|
|
["action"] = "mind_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_penance )",
|
|
["action"] = "penance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.shadow_covenant.enabled || variable.can_mind_blast",
|
|
["action"] = "mind_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_mindgames ) & talent.shattered_perceptions.enabled",
|
|
["action"] = "mindgames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_swd ) & talent.expiation.enabled & ( target.time_to_pct_20 > ( 0.5 * cooldown.shadow_word_death.duration ) )",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_mindgames ) & ! talent.shattered_perceptions.enabled",
|
|
["action"] = "mindgames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.shadow_covenant.enabled",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_divine_star )",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_swd ) & ( target.time_to_pct_20 > ( 0.5 * cooldown.shadow_word_death.duration ) )",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["action"] = "smite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "power_word_fortitude",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Don't use pets during shadow covenant windows, wasting GCDs",
|
|
["criteria"] = "! talent.mindbender.enabled & ! buff.shadow_covenant.up",
|
|
["action"] = "mindbender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.mindbender.enabled & ! buff.shadow_covenant.up",
|
|
["action"] = "mindbender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "hold PI to use with shadow covenant if we have it",
|
|
["criteria"] = "! talent.shadow_covenant.enabled || ( talent.shadow_covenant.enabled & ( cooldown.shadowfiend.up || buff.shadow_covenant.up ) )",
|
|
["action"] = "power_infusion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "sync potion with PI",
|
|
["criteria"] = "buff.power_infusion.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "sync trinkets with PI",
|
|
["criteria"] = "buff.power_infusion.up || cooldown.power_infusion.remains >= action_cooldown",
|
|
["action"] = "use_items",
|
|
},
|
|
},
|
|
["long_scov"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Long Shadow Covenant",
|
|
["action"] = "mindbender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.halo >= 3",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.divine_star >= 3",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_holy ) ) & ( ! ticking || refreshable ) & ( target.time_to_die > ( 0.3 * dot.purge_the_wicked.duration ) )",
|
|
["action"] = "purge_the_wicked",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 20 & talent.expiation.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "penance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.halo >= 2",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.divine_star >= 2",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 20 & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.expiation.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "mind_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shattered_perceptions.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "mindgames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.expiation.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & ( target.time_to_pct_20 > buff.shadow_covenant.remains )",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "mindgames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "mind_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & ( target.time_to_pct_20 > buff.shadow_covenant.remains )",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_holy ) )",
|
|
["action"] = "smite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "just in case we run out of shadow spells with the above conditions",
|
|
["action"] = "penance",
|
|
},
|
|
{
|
|
["action"] = "mindgames",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mind_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "shadow_word_death",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "divine_star",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "halo",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "smite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["scov_prep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Prepare to enter shadow covenant",
|
|
["criteria"] = "! ticking & ( target.time_to_die > ( 0.3 * dot.purge_the_wicked.duration ) )",
|
|
["action"] = "purge_the_wicked",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.shadowfiend.remains < cast_time",
|
|
["action"] = "power_word_radiance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( target.time_to_die > ( 0.3 * dot.purge_the_wicked.duration ) )",
|
|
["action"] = "purge_the_wicked",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20240811,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 5: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 10: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 11: Converted 'talent.shadow_word_death' to 'talent.shadow_word_death.enabled' (1x).\nLine 12: Converted 'talent.shadow_word_death' to 'talent.shadow_word_death.enabled' (1x).\nLine 12: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 13: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 14: Converted 'talent.divine_star' to 'talent.divine_star.enabled' (1x).\nLine 15: Converted 'talent.halo' to 'talent.halo.enabled' (1x).\nLine 16: Converted operations in '(buff.shadow_covenant.duration-variable.shadow_spells_duration_max)%gcd.max' to '(buff.shadow_covenant.duration-variable.shadow_spells_duration_max)/gcd.max'.\nLine 19: Converted 'talent.train_of_thought' to 'talent.train_of_thought.enabled' (1x).\nLine 24: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 29: Converted 'talent.twilight_equilibrium' to 'talent.twilight_equilibrium.enabled' (1x).\nLine 37: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 37: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 37: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 37: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 39: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 40: Converted 'talent.divine_star' to 'talent.divine_star.enabled' (1x).\nLine 40: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 41: Converted 'talent.halo' to 'talent.halo.enabled' (1x).\nLine 41: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 47: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 48: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 48: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 53: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 53: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 54: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 55: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 56: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 56: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 61: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 62: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 63: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 64: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 65: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 67: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 69: Converted 'talent.purge_the_wicked' to 'talent.purge_the_wicked.enabled' (1x).\nLine 69: Converted 'talent.painful_punishment' to 'talent.painful_punishment.enabled' (1x).\nLine 69: Converted 'talent.painful_punishment' to 'talent.painful_punishment.enabled' (1x).\nLine 70: Converted 'talent.purge_the_wicked' to 'talent.purge_the_wicked.enabled' (1x).\nLine 70: Converted 'talent.painful_punishment' to 'talent.painful_punishment.enabled' (1x).\nLine 70: Converted 'talent.painful_punishment' to 'talent.painful_punishment.enabled' (1x).\nLine 71: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 72: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 73: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 74: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 75: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 75: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 76: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 76: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 77: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 77: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 78: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 79: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 80: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\n\nThe import for 'long_scov' required some automated changes.\nLine 5: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 10: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 11: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 12: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\n\nImported 5 action lists.\n",
|
|
["spec"] = 256,
|
|
["profile"] = "actions.precombat+=/power_word_fortitude\n\nactions+=/call_action_list,name=cooldowns\nactions+=/variable,name=te_none,op=set,value=!buff.twilight_equilibrium_holy_amp.up&!buff.twilight_equilibrium_shadow_amp.up\n# Twilight Equilibrium is buffing shadow damage\nactions+=/variable,name=te_shadow,op=set,value=buff.twilight_equilibrium_shadow_amp.up||variable.te_none\n# Twilight Equilibrium is buffing holy damage\nactions+=/variable,name=te_holy,op=set,value=buff.twilight_equilibrium_holy_amp.up||variable.te_none\n# Long Shadow covenant is enabled\nactions+=/variable,name=long_scov,op=set,value=talent.shadow_covenant\n# Ready to start shadow covenant phase\nactions+=/variable,name=can_enter_scov,op=set,value=cooldown.shadowfiend.up||buff.shadow_covenant.up\nactions+=/variable,name=shadow_spells_duration_max,op=set,value=0\n## actions+=/variable,name=shadow_spells_duration_max,op=add,value=action.schism.execute_time,if=talent.schism\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=2\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.mind_blast.execute_time\n# penance\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.mind_blast.execute_time,if=talent.dark_indulgence\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.shadow_word_death.execute_time,if=talent.shadow_word_death\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.shadow_word_death.execute_time,if=talent.shadow_word_death&talent.death_and_madness&target.health.pct<20\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.mindgames.execute_time,if=talent.mindgames\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.divine_star.execute_time,if=talent.divine_star\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.halo.execute_time,if=talent.halo\n# (scov duration - shadow spells duration) / GCD time = estimate of holy spells we should need to use during the next scov window Long scov example: (15 - 12) / 1.5 = 2 GCDs to spend on holy spells Short scov example: (7 - 12) / 1.5 = -3.3 GCDs to spend on holy spells (none)\nactions+=/variable,name=max_te_holy,op=floor,value=(buff.shadow_covenant.duration-variable.shadow_spells_duration_max)%gcd.max\n# Counting variable, the number of non-fractional remaining holy casts available\nactions+=/variable,name=remaining_te_holy,op=set,value=0\nactions+=/variable,name=remaining_te_holy,op=add,value=variable.max_te_holy\n# TODO: duration_expected is buggy on penance/dark reprimand, using a static reduction as a stand-in for now\nactions+=/variable,name=expected_penance_reduction,op=setif,condition=talent.train_of_thought,value=2,value_else=0\n# Calculate how much cast time worth of shadow spells we have currently available. We use shadow_spells_duration to determine if we have time to weave in any holy spells to proc twilight equilibrium.\nactions+=/variable,name=shadow_spells_duration,op=set,value=0\n# Schism\n## actions+=/variable,name=shadow_spells_duration,op=add,value=action.schism.execute_time,if=cooldown.schism.up||(cooldown.schism.remains<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\n\n# First casts should always be HD prep->covenant->schism->HD dark reprimand\nactions+=/variable,name=next_penance_time,op=set,value=cooldown.shadowfiend.remains+action.shadowfiend.execute_time\n# If we have enough scov duration, add a holy cast to proc twilight equilibrium\nactions+=/variable,name=next_penance_time,op=add,value=gcd.max,if=variable.remaining_te_holy>0\n# Reduce our counting variable\nactions+=/variable,name=remaining_te_holy,op=sub,value=1\nactions+=/variable,name=can_penance,op=set,value=(cooldown.penance.duration-variable.expected_penance_reduction)<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=talent.shadow_covenant&cooldown.mindbender.up\n## actions+=/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))))))\n## actions+=/schism,if=!talent.shadow_covenant\nactions+=/shadow_word_death,if=(!talent.shadow_covenant||variable.can_swd)&target.health.pct<20\nactions+=/mind_blast,if=talent.dark_indulgence&buff.power_of_the_dark_side.down&cooldown.penance.remains<gcd.max\nactions+=/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.\n## actions+=/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)\n## actions+=/power_word_solace\nactions+=/shadow_word_death,if=(!talent.shadow_covenant||variable.can_swd)&(target.time_to_pct_20>(0.5*cooldown.shadow_word_death.duration))\nactions+=/smite\n\n# Prepare to enter shadow covenant\nactions.scov_prep+=/purge_the_wicked,if=!ticking&(target.time_to_die>(0.3*dot.purge_the_wicked.duration))\nactions.scov_prep+=/power_word_radiance,if=cooldown.shadowfiend.remains<cast_time\nactions.scov_prep+=/purge_the_wicked,if=(target.time_to_die>(0.3*dot.purge_the_wicked.duration))\n\n# Long Shadow Covenant\nactions.long_scov+=/mindbender\n## actions.long_scov+=/schism\nactions.long_scov+=/halo,if=(!variable.should_te||(variable.should_te&variable.te_shadow))&spell_targets.halo>=3\nactions.long_scov+=/divine_star,if=(!variable.should_te||(variable.should_te&variable.te_shadow))&spell_targets.divine_star>=3\nactions.long_scov+=/purge_the_wicked,if=(!variable.should_te||(variable.should_te&variable.te_holy))&(!ticking||refreshable)&(target.time_to_die>(0.3*dot.purge_the_wicked.duration))\nactions.long_scov+=/shadow_word_death,if=target.health.pct<20&talent.expiation&(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/penance,if=(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/halo,if=(!variable.should_te||(variable.should_te&variable.te_shadow))&spell_targets.halo>=2\nactions.long_scov+=/divine_star,if=(!variable.should_te||(variable.should_te&variable.te_shadow))&spell_targets.divine_star>=2\nactions.long_scov+=/shadow_word_death,if=target.health.pct<20&(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/mind_blast,if=talent.expiation&(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/mindgames,if=talent.shattered_perceptions&(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/shadow_word_death,if=talent.expiation&(!variable.should_te||(variable.should_te&variable.te_shadow))&(target.time_to_pct_20>buff.shadow_covenant.remains)\nactions.long_scov+=/mindgames,if=(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/mind_blast,if=(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/halo,if=(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/divine_star,if=(!variable.should_te||(variable.should_te&variable.te_shadow))\nactions.long_scov+=/shadow_word_death,if=(!variable.should_te||(variable.should_te&variable.te_shadow))&(target.time_to_pct_20>buff.shadow_covenant.remains)\n## actions.long_scov+=/lights_wrath,if=(!variable.should_te||(variable.should_te&variable.te_holy))\nactions.long_scov+=/smite,if=(!variable.should_te||(variable.should_te&variable.te_holy))\n# just in case we run out of shadow spells with the above conditions\nactions.long_scov+=/penance\nactions.long_scov+=/mindgames\nactions.long_scov+=/mind_blast\nactions.long_scov+=/shadow_word_death\nactions.long_scov+=/divine_star\nactions.long_scov+=/halo\nactions.long_scov+=/smite\n\n## Cooldowns\n# Don't use pets during shadow covenant windows, wasting GCDs\nactions.cooldowns+=/shadowfiend,if=!talent.mindbender.enabled&!buff.shadow_covenant.up\nactions.cooldowns+=/mindbender,if=talent.mindbender.enabled&!buff.shadow_covenant.up\n# hold PI to use with shadow covenant if we have it\nactions.cooldowns+=/power_infusion,if=!talent.shadow_covenant.enabled||(talent.shadow_covenant.enabled&(cooldown.shadowfiend.up||buff.shadow_covenant.up))\n# sync potion with PI\nactions.cooldowns+=/potion,if=buff.power_infusion.up\n# sync trinkets with PI\nactions.cooldowns+=/use_items,if=buff.power_infusion.up||cooldown.power_infusion.remains>=cooldown",
|
|
},
|
|
["Elemental"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241030,
|
|
["spec"] = 262,
|
|
["desc"] = "2024-10-30: Sim update\n\n2024-10-23: 11.0.5\n\n2024-08-15, 09-15: Sim update\n\n2024-07-23: The War Within",
|
|
["profile"] = "# Ensure weapon enchant is applied if you've selected Improved Flametongue Weapon.\nactions.precombat+=/flametongue_weapon,if=talent.improved_flametongue_weapon.enabled\nactions.precombat+=/skyfury\nactions.precombat+=/lightning_shield\nactions.precombat+=/thunderstrike_ward\nactions.precombat+=/earth_shield,if=!buff.earth_shield.up&talent.elemental_orbit\nactions.precombat+=/stormkeeper\nactions.precombat+=/variable,name=mael_cap,value=100+50*talent.swelling_maelstrom.rank+25*talent.primordial_capacity.rank,op=set\nactions.precombat+=/variable,name=spymaster_in_1st,value=trinket.1.is.spymasters_web\nactions.precombat+=/variable,name=spymaster_in_2nd,value=trinket.2.is.spymasters_web\n\n# Interrupt of casts.\nactions+=/wind_shear\n# Enable more movement.\nactions+=/spiritwalkers_grace,moving=1\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+=/use_item,slot=trinket1,if=!variable.spymaster_in_1st||(fight_remains<65||time<fight_remains&buff.spymasters_report.stack>35)&prev_gcd.1.stormkeeper||buff.ascendance.remains>12&buff.spymasters_report.stack>25||fight_remains<22&boss\nactions+=/use_item,slot=trinket2,if=!variable.spymaster_in_2nd||(fight_remains<65||time<fight_remains&buff.spymasters_report.stack>35)&prev_gcd.1.stormkeeper||buff.ascendance.remains>12&buff.spymasters_report.stack>25||fight_remains<22&boss\nactions+=/use_item,slot=main_hand\nactions+=/lightning_shield,if=buff.lightning_shield.down\nactions+=/natures_swiftness\n### Use Power Infusion on Cooldown.\n## actions+=/invoke_external_buff,name=power_infusion\nactions+=/potion,if=buff.bloodlust.up||buff.spymasters_web.up||buff.ascendance.remains>12||fight_remains<31&boss\nactions+=/run_action_list,name=aoe,strict=1,if=spell_targets.chain_lightning>1\nactions+=/run_action_list,name=single_target\n\nactions.aoe+=/fire_elemental\nactions.aoe+=/storm_elemental\nactions.aoe+=/stormkeeper\n# {Fire} Reset LMT CD as early as possible [Hekili] based on true cooldown remaining\nactions.aoe+=/totemic_recall,if=cooldown.liquid_magma_totem.true_remains>15&(active_dot.flame_shock<(spell_targets.chain_lightning>?6)-2||talent.fire_elemental.enabled)\nactions.aoe+=/liquid_magma_totem,if=totem.liquid_magma_totem.down\n# Spread Flame Shock via Primordial Wave using Surge of Power if possible.\nactions.aoe+=/primordial_wave,cycle_targets=1,if=buff.surge_of_power.up||!talent.surge_of_power.enabled||maelstrom<60-5*talent.eye_of_the_storm.enabled\nactions.aoe+=/ancestral_swiftness\n# Spread Flame Shock using Surge of Power if LMT is not picked.\nactions.aoe+=/flame_shock,cycle_targets=1,if=refreshable&buff.surge_of_power.up&dot.flame_shock.remains<target.time_to_die-16&active_dot.flame_shock<(spell_targets.chain_lightning>?6)&!talent.liquid_magma_totem.enabled\n# Spread and refresh Flame Shock using Surge of Power (if talented) up to 6.\nactions.aoe+=/flame_shock,cycle_targets=1,if=refreshable&talent.fire_elemental.enabled&(buff.surge_of_power.up||!talent.surge_of_power.enabled)&dot.flame_shock.remains<target.time_to_die-5&(active_dot.flame_shock<6||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# buff tempest with sop\nactions.aoe+=/tempest,cycle_targets=1,if=!buff.arc_discharge.up&(buff.surge_of_power.up||!talent.surge_of_power.enabled)\n# 2t\nactions.aoe+=/lightning_bolt,if=buff.stormkeeper.up&buff.surge_of_power.up&spell_targets.chain_lightning=2\n# Consume Primordial Wave buff immediately if you have Stormkeeper buff, fighting 6+ enemies and need maelstrom to spend.\nactions.aoe+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains>2&buff.primordial_wave.up&(buff.stormkeeper.up&spell_targets.chain_lightning>=6||buff.tempest.up)&maelstrom<60-5*talent.eye_of_the_storm.enabled&talent.surge_of_power.enabled\n# Cast Lava burst to consume Primordial Wave proc. Wait for Lava Surge proc if possible.\nactions.aoe+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains>2&buff.primordial_wave.up\n# *{Fire} Use Lava Surge proc to buff <anything> with Master of the Elements.\nactions.aoe+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains&cooldown_react&buff.lava_surge.up&!buff.master_of_the_elements.up&talent.master_of_the_elements.enabled&talent.fire_elemental.enabled\n# 2t\nactions.aoe+=/elemental_blast,cycle_targets=1,if=spell_targets.chain_lightning=2&(maelstrom>variable.mael_cap-30||cooldown.primordial_wave.remains<gcd&talent.surge_of_power.enabled||(buff.stormkeeper.up&spell_targets.chain_lightning>=6||buff.tempest.up)&talent.surge_of_power.enabled)\n# Activate Surge of Power if next global is Primordial wave. Respect Echoes of Great Sundering.\nactions.aoe+=/earthquake,if=cooldown.primordial_wave.remains<gcd&talent.surge_of_power.enabled&(buff.echoes_of_great_sundering_es.up||buff.echoes_of_great_sundering_eb.up||!talent.echoes_of_great_sundering.enabled)\n# Spend if all Lightning Rods ran out or you are close to overcaping. Respect Echoes of Great Sundering.\nactions.aoe+=/earthquake,if=(lightning_rod=0&talent.lightning_rod.enabled||maelstrom>variable.mael_cap-30)&(buff.echoes_of_great_sundering_es.up||buff.echoes_of_great_sundering_eb.up||!talent.echoes_of_great_sundering.enabled)\n# Spend to buff your follow-up Stormkeeper with Surge of Power on 6+ targets. Respect Echoes of Great Sundering.\nactions.aoe+=/earthquake,if=(buff.stormkeeper.up&spell_targets.chain_lightning>=6||buff.tempest.up)&talent.surge_of_power.enabled&(buff.echoes_of_great_sundering_es.up||buff.echoes_of_great_sundering_eb.up||!talent.echoes_of_great_sundering.enabled)\n# Use the talents you selected. Spread Lightning Rod to as many targets as possible.\nactions.aoe+=/elemental_blast,cycle_targets=1,if=talent.echoes_of_great_sundering.enabled&!buff.echoes_of_great_sundering_eb.up&(lightning_rod=0||maelstrom>variable.mael_cap-30||(buff.stormkeeper.up&spell_targets.chain_lightning>=6||buff.tempest.up)&talent.surge_of_power.enabled)\n# Use the talents you selected. Spread Lightning Rod to as many targets as possible.\nactions.aoe+=/earth_shock,cycle_targets=1,if=talent.echoes_of_great_sundering.enabled&!buff.echoes_of_great_sundering_es.up&(lightning_rod=0||maelstrom>variable.mael_cap-30||(buff.stormkeeper.up&spell_targets.chain_lightning>=6||buff.tempest.up)&talent.surge_of_power.enabled)\n# Use Icefury for Fusion of Elements proc.\nactions.aoe+=/icefury,if=talent.fusion_of_elements.enabled&!(buff.fusion_of_elements_nature.up||buff.fusion_of_elements_fire.up)\n# *{Fire} Proc Master of the Elements outside Ascendance.\nactions.aoe+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains>2&talent.master_of_the_elements.enabled&!buff.master_of_the_elements.up&!buff.ascendance.up&talent.fire_elemental.enabled\nactions.aoe+=/chain_lightning\nactions.aoe+=/flame_shock,moving=1,cycle_targets=1,if=refreshable\nactions.aoe+=/frost_shock,moving=1\n\nactions.single_target+=/fire_elemental\nactions.single_target+=/storm_elemental\n# Just use Stormkeeper.\nactions.single_target+=/stormkeeper\n# Use Primordial Wave as much as possible.\nactions.single_target+=/primordial_wave,if=!buff.surge_of_power.up\nactions.single_target+=/ancestral_swiftness\nactions.single_target+=/ascendance,if=fight_remains>cooldown||buff.spymasters_web.up||!(variable.spymaster_in_1st||variable.spymaster_in_2nd)\n# Surge of Power is strong and should be used. ??\nactions.single_target+=/tempest,if=buff.surge_of_power.up\nactions.single_target+=/lightning_bolt,if=buff.surge_of_power.up\n# Dont waste Storm Frenzy (minimal gain).\nactions.single_target+=/tempest,if=buff.storm_frenzy.stack=2&!talent.surge_of_power.enabled\nactions.single_target+=/lightning_bolt,if=buff.storm_frenzy.stack=2&!talent.surge_of_power.enabled\n# Use LMT to apply Flame Shock.\nactions.single_target+=/liquid_magma_totem,if=dot.flame_shock.refreshable&!buff.master_of_the_elements.up\n# Manually refresh Flame shock if better options are not talented.\nactions.single_target+=/flame_shock,if=dot.flame_shock.refreshable&!buff.surge_of_power.up&!buff.master_of_the_elements.up&!talent.primordial_wave.enabled&!talent.liquid_magma_totem.enabled\n# Spend if close to overcaping. Respect Echoes of Great Sundering.\nactions.single_target+=/earthquake,if=(buff.echoes_of_great_sundering_es.up||buff.echoes_of_great_sundering_eb.up)&(maelstrom>variable.mael_cap-15||fight_remains<5)\nactions.single_target+=/elemental_blast,if=maelstrom>variable.mael_cap-15||fight_remains<5\nactions.single_target+=/earth_shock,if=maelstrom>variable.mael_cap-15||fight_remains<5\n# Just spend if not talented into Surge of Power.\nactions.single_target+=/earthquake,if=(buff.echoes_of_great_sundering_es.up||buff.echoes_of_great_sundering_eb.up)&!talent.surge_of_power.enabled\nactions.single_target+=/elemental_blast,if=!talent.surge_of_power.enabled\nactions.single_target+=/earth_shock,if=!talent.surge_of_power.enabled\n# Use Icefury to proc Fusion of Elements.\nactions.single_target+=/icefury,if=!(buff.fusion_of_elements_nature.up||buff.fusion_of_elements_fire.up)\n# Use Lava Burst to proc Master of the Elements.\nactions.single_target+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains>2&!buff.master_of_the_elements.up\nactions.single_target+=/lava_burst,if=!buff.master_of_the_elements.up&buff.lava_surge.up\n# Spend to activate Surge of Power buff for Tempest or Stormkeeper.\nactions.single_target+=/earthquake,if=(buff.echoes_of_great_sundering_es.up||buff.echoes_of_great_sundering_eb.up)&(buff.tempest.up||buff.stormkeeper.up)&talent.surge_of_power.enabled\nactions.single_target+=/elemental_blast,if=(buff.tempest.up||buff.stormkeeper.up)&talent.surge_of_power.enabled\nactions.single_target+=/earth_shock,if=(buff.tempest.up||buff.stormkeeper.up)&talent.surge_of_power.enabled\nactions.single_target+=/tempest\n# Filler spell. Always available. Always the bottom line.\nactions.single_target+=/lightning_bolt\nactions.single_target+=/flame_shock,moving=1,cycle_targets=1=refreshable\nactions.single_target+=/flame_shock,moving=1\n# Frost Shock is our movement filler.\nactions.single_target+=/frost_shock,moving=1",
|
|
["version"] = 20241030,
|
|
["warnings"] = "The import for 'precombat' required some automated changes.\nLine 5: Converted 'talent.elemental_orbit' to 'talent.elemental_orbit.enabled' (1x).\nLine 8: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 9: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\n\nImported 4 action lists.\n",
|
|
["author"] = "SimulationCraft",
|
|
["lists"] = {
|
|
["single_target"] = {
|
|
{
|
|
["action"] = "fire_elemental",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "storm_elemental",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Just use Stormkeeper.",
|
|
["action"] = "stormkeeper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "primordial_wave",
|
|
["description"] = "Use Primordial Wave as much as possible.",
|
|
["criteria"] = "! buff.surge_of_power.up",
|
|
},
|
|
{
|
|
["action"] = "ancestral_swiftness",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > action_cooldown || buff.spymasters_web.up || ! ( variable.spymaster_in_1st || variable.spymaster_in_2nd )",
|
|
["action"] = "ascendance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tempest",
|
|
["description"] = "Surge of Power is strong and should be used. ??",
|
|
["criteria"] = "buff.surge_of_power.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.surge_of_power.up",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tempest",
|
|
["description"] = "Dont waste Storm Frenzy (minimal gain).",
|
|
["criteria"] = "buff.storm_frenzy.stack = 2 & ! talent.surge_of_power.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_frenzy.stack = 2 & ! talent.surge_of_power.enabled",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "liquid_magma_totem",
|
|
["description"] = "Use LMT to apply Flame Shock.",
|
|
["criteria"] = "dot.flame_shock.refreshable & ! buff.master_of_the_elements.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "flame_shock",
|
|
["description"] = "Manually refresh Flame shock if better options are not talented.",
|
|
["criteria"] = "dot.flame_shock.refreshable & ! buff.surge_of_power.up & ! buff.master_of_the_elements.up & ! talent.primordial_wave.enabled & ! talent.liquid_magma_totem.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earthquake",
|
|
["description"] = "Spend if close to overcaping. Respect Echoes of Great Sundering.",
|
|
["criteria"] = "( buff.echoes_of_great_sundering_es.up || buff.echoes_of_great_sundering_eb.up ) & ( maelstrom > variable.mael_cap - 15 || fight_remains < 5 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "maelstrom > variable.mael_cap - 15 || fight_remains < 5",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "maelstrom > variable.mael_cap - 15 || fight_remains < 5",
|
|
["action"] = "earth_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earthquake",
|
|
["description"] = "Just spend if not talented into Surge of Power.",
|
|
["criteria"] = "( buff.echoes_of_great_sundering_es.up || buff.echoes_of_great_sundering_eb.up ) & ! talent.surge_of_power.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.surge_of_power.enabled",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.surge_of_power.enabled",
|
|
["action"] = "earth_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "icefury",
|
|
["description"] = "Use Icefury to proc Fusion of Elements.",
|
|
["criteria"] = "! ( buff.fusion_of_elements_nature.up || buff.fusion_of_elements_fire.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "dot.flame_shock.remains > 2 & ! buff.master_of_the_elements.up",
|
|
["description"] = "Use Lava Burst to proc Master of the Elements.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.master_of_the_elements.up & buff.lava_surge.up",
|
|
["action"] = "lava_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earthquake",
|
|
["description"] = "Spend to activate Surge of Power buff for Tempest or Stormkeeper.",
|
|
["criteria"] = "( buff.echoes_of_great_sundering_es.up || buff.echoes_of_great_sundering_eb.up ) & ( buff.tempest.up || buff.stormkeeper.up ) & talent.surge_of_power.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.tempest.up || buff.stormkeeper.up ) & talent.surge_of_power.enabled",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.tempest.up || buff.stormkeeper.up ) & talent.surge_of_power.enabled",
|
|
["action"] = "earth_shock",
|
|
},
|
|
{
|
|
["action"] = "tempest",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Filler spell. Always available. Always the bottom line.",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["moving"] = 1,
|
|
["enable_moving"] = true,
|
|
["action"] = "flame_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["moving"] = 1,
|
|
["enable_moving"] = true,
|
|
["action"] = "flame_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["enable_moving"] = true,
|
|
["action"] = "frost_shock",
|
|
["description"] = "Frost Shock is our movement filler.",
|
|
["moving"] = 1,
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["action"] = "fire_elemental",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "storm_elemental",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "stormkeeper",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "totemic_recall",
|
|
["description"] = "{Fire} Reset LMT CD as early as possible [Hekili] based on true cooldown remaining",
|
|
["criteria"] = "cooldown.liquid_magma_totem.true_remains > 15 & ( active_dot.flame_shock < ( spell_targets.chain_lightning >? 6 ) - 2 || talent.fire_elemental.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "totem.liquid_magma_totem.down",
|
|
["action"] = "liquid_magma_totem",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "primordial_wave",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "buff.surge_of_power.up || ! talent.surge_of_power.enabled || maelstrom < 60 - 5 * talent.eye_of_the_storm.enabled",
|
|
["description"] = "Spread Flame Shock via Primordial Wave using Surge of Power if possible.",
|
|
},
|
|
{
|
|
["action"] = "ancestral_swiftness",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "flame_shock",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "refreshable & buff.surge_of_power.up & dot.flame_shock.remains < target.time_to_die - 16 & active_dot.flame_shock < ( spell_targets.chain_lightning >? 6 ) & ! talent.liquid_magma_totem.enabled",
|
|
["description"] = "Spread Flame Shock using Surge of Power if LMT is not picked.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "flame_shock",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "refreshable & talent.fire_elemental.enabled & ( buff.surge_of_power.up || ! talent.surge_of_power.enabled ) & dot.flame_shock.remains < target.time_to_die - 5 & ( active_dot.flame_shock < 6 || dot.flame_shock.remains > 0 )",
|
|
["description"] = "Spread and refresh Flame Shock using Surge of Power (if talented) up to 6.",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tempest",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "! buff.arc_discharge.up & ( buff.surge_of_power.up || ! talent.surge_of_power.enabled )",
|
|
["description"] = "buff tempest with sop",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lightning_bolt",
|
|
["description"] = "2t",
|
|
["criteria"] = "buff.stormkeeper.up & buff.surge_of_power.up & spell_targets.chain_lightning = 2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "dot.flame_shock.remains > 2 & buff.primordial_wave.up & ( buff.stormkeeper.up & spell_targets.chain_lightning >= 6 || buff.tempest.up ) & maelstrom < 60 - 5 * talent.eye_of_the_storm.enabled & talent.surge_of_power.enabled",
|
|
["description"] = "Consume Primordial Wave buff immediately if you have Stormkeeper buff, fighting 6+ enemies and need maelstrom to spend.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "dot.flame_shock.remains > 2 & buff.primordial_wave.up",
|
|
["description"] = "Cast Lava burst to consume Primordial Wave proc. Wait for Lava Surge proc if possible.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "dot.flame_shock.remains & cooldown_react & buff.lava_surge.up & ! buff.master_of_the_elements.up & talent.master_of_the_elements.enabled & talent.fire_elemental.enabled",
|
|
["description"] = "*{Fire} Use Lava Surge proc to buff <anything> with Master of the Elements.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "elemental_blast",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "spell_targets.chain_lightning = 2 & ( maelstrom > variable.mael_cap - 30 || cooldown.primordial_wave.remains < gcd.max & talent.surge_of_power.enabled || ( buff.stormkeeper.up & spell_targets.chain_lightning >= 6 || buff.tempest.up ) & talent.surge_of_power.enabled )",
|
|
["description"] = "2t",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earthquake",
|
|
["description"] = "Activate Surge of Power if next global is Primordial wave. Respect Echoes of Great Sundering.",
|
|
["criteria"] = "cooldown.primordial_wave.remains < gcd.max & talent.surge_of_power.enabled & ( buff.echoes_of_great_sundering_es.up || buff.echoes_of_great_sundering_eb.up || ! talent.echoes_of_great_sundering.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earthquake",
|
|
["description"] = "Spend if all Lightning Rods ran out or you are close to overcaping. Respect Echoes of Great Sundering.",
|
|
["criteria"] = "( lightning_rod = 0 & talent.lightning_rod.enabled || maelstrom > variable.mael_cap - 30 ) & ( buff.echoes_of_great_sundering_es.up || buff.echoes_of_great_sundering_eb.up || ! talent.echoes_of_great_sundering.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earthquake",
|
|
["description"] = "Spend to buff your follow-up Stormkeeper with Surge of Power on 6+ targets. Respect Echoes of Great Sundering.",
|
|
["criteria"] = "( buff.stormkeeper.up & spell_targets.chain_lightning >= 6 || buff.tempest.up ) & talent.surge_of_power.enabled & ( buff.echoes_of_great_sundering_es.up || buff.echoes_of_great_sundering_eb.up || ! talent.echoes_of_great_sundering.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "elemental_blast",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "talent.echoes_of_great_sundering.enabled & ! buff.echoes_of_great_sundering_eb.up & ( lightning_rod = 0 || maelstrom > variable.mael_cap - 30 || ( buff.stormkeeper.up & spell_targets.chain_lightning >= 6 || buff.tempest.up ) & talent.surge_of_power.enabled )",
|
|
["description"] = "Use the talents you selected. Spread Lightning Rod to as many targets as possible.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earth_shock",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "talent.echoes_of_great_sundering.enabled & ! buff.echoes_of_great_sundering_es.up & ( lightning_rod = 0 || maelstrom > variable.mael_cap - 30 || ( buff.stormkeeper.up & spell_targets.chain_lightning >= 6 || buff.tempest.up ) & talent.surge_of_power.enabled )",
|
|
["description"] = "Use the talents you selected. Spread Lightning Rod to as many targets as possible.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "icefury",
|
|
["description"] = "Use Icefury for Fusion of Elements proc.",
|
|
["criteria"] = "talent.fusion_of_elements.enabled & ! ( buff.fusion_of_elements_nature.up || buff.fusion_of_elements_fire.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "dot.flame_shock.remains > 2 & talent.master_of_the_elements.enabled & ! buff.master_of_the_elements.up & ! buff.ascendance.up & talent.fire_elemental.enabled",
|
|
["description"] = "*{Fire} Proc Master of the Elements outside Ascendance.",
|
|
},
|
|
{
|
|
["action"] = "chain_lightning",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["moving"] = 1,
|
|
["enable_moving"] = true,
|
|
["action"] = "flame_shock",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "refreshable",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["moving"] = 1,
|
|
["enable_moving"] = true,
|
|
["action"] = "frost_shock",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Interrupt of casts.",
|
|
["action"] = "wind_shear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["enable_moving"] = true,
|
|
["action"] = "spiritwalkers_grace",
|
|
["description"] = "Enable more movement.",
|
|
["moving"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.ascendance.enabled || buff.ascendance.up || cooldown.ascendance.remains > 50",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.ascendance.enabled || buff.ascendance.up",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.ascendance.enabled || buff.ascendance.up || cooldown.ascendance.remains > 50",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.ascendance.enabled || buff.ascendance.up || cooldown.ascendance.remains > 50",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "! variable.spymaster_in_1st || ( fight_remains < 65 || time < fight_remains & buff.spymasters_report.stack > 35 ) & prev_gcd.1.stormkeeper || buff.ascendance.remains > 12 & buff.spymasters_report.stack > 25 || fight_remains < 22 & boss",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.spymaster_in_2nd || ( fight_remains < 65 || time < fight_remains & buff.spymasters_report.stack > 35 ) & prev_gcd.1.stormkeeper || buff.ascendance.remains > 12 & buff.spymasters_report.stack > 25 || fight_remains < 22 & boss",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["slot"] = "main_hand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.lightning_shield.down",
|
|
["action"] = "lightning_shield",
|
|
},
|
|
{
|
|
["action"] = "natures_swiftness",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bloodlust.up || buff.spymasters_web.up || buff.ascendance.remains > 12 || fight_remains < 31 & boss",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "spell_targets.chain_lightning > 1",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "single_target",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "flametongue_weapon",
|
|
["description"] = "Ensure weapon enchant is applied if you've selected Improved Flametongue Weapon.",
|
|
["criteria"] = "talent.improved_flametongue_weapon.enabled",
|
|
},
|
|
{
|
|
["action"] = "skyfury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lightning_shield",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunderstrike_ward",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.earth_shield.up & talent.elemental_orbit.enabled",
|
|
["action"] = "earth_shield",
|
|
},
|
|
{
|
|
["action"] = "stormkeeper",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "100 + 50 * talent.swelling_maelstrom.rank + 25 * talent.primordial_capacity.rank",
|
|
["var_name"] = "mael_cap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.spymasters_web",
|
|
["var_name"] = "spymaster_in_1st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.spymasters_web",
|
|
["var_name"] = "spymaster_in_2nd",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["Marksmanship"] = {
|
|
["source"] = "# https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241029,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-10-29: SimC update\n\n2024-10-23: 11.0.5\n\n2024-09-10, 09-15: SimC update\n\n2024-08-15, 22: SimC update\n\n2024-08-11: Steady Focus only if talented\n\n2024-08-09: Updates from SimC\n\n2024-08-01: Use Hunter's Mark setting\n\n2024-07-27: Minor sim update; use Hunter's Mark\n\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["trickshots"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trick_shots.remains > execute_time & buff.razor_fragments.up",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.steady_focus.enabled & buff.steady_focus.remains < execute_time & buff.trueshot.down",
|
|
["action"] = "steady_shot",
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "volley",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.razor_fragments.enabled & buff.trick_shots.remains > execute_time",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.razor_fragments.up",
|
|
["action"] = "kill_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.trueshot_ready",
|
|
["action"] = "trueshot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.rapid_fire_barrage.enabled & buff.trick_shots.remains > execute_time",
|
|
["action"] = "barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Hold Rapid Fire for up to 5s to proc Lunar Storm. Ignore Lunar Storm if Rapid Fire's cooldown can be reset with Wailing Arrow. Ignore all of this in Trueshot or as a Dark Ranger.",
|
|
["criteria"] = "buff.trick_shots.remains > execute_time & ( ! talent.lunar_storm.enabled || ( ! cooldown.lunar_storm.remains || cooldown.lunar_storm.remains > 5 || ( action.wailing_arrow.ready & talent.readiness.enabled ) || buff.trueshot.up ) )",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wailing_arrow",
|
|
["description"] = "With Wailing Arrow and Aimed Shot, target enemies without Serpent Sting or the enemy with the lowest remaining Serpent Sting.",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "aimed_shot",
|
|
["criteria"] = "buff.trick_shots.remains > execute_time & buff.precise_shots.down",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.precise_shots.up || buff.trick_shots.down",
|
|
["action"] = "multishot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["action"] = "steady_shot",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "counter_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "tranquilizing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.trueshot.ready & ( ! raid_event.adds.exists & ( ! talent.bullseye.enabled || fight_remains > cooldown.trueshot.duration_guess + buff.trueshot.duration / 2 || buff.bullseye.stack = buff.bullseye.max_stack ) & ( ! trinket.t1.has_use_buff || trinket.t1.cooldown.remains > 30 || trinket.t1.cooldown.ready ) & ( ! trinket.t2.has_use_buff || trinket.t2.cooldown.remains > 30 || trinket.t2.cooldown.ready ) || raid_event.adds.exists & ( ! raid_event.adds.up & ( raid_event.adds.duration + raid_event.adds.in < 25 || raid_event.adds.in > 60 ) || raid_event.adds.up & raid_event.adds.remains > 10 ) || boss & fight_remains < 25 )",
|
|
["description"] = "Determine if it is a good time to use Trueshot. Raid event optimization takes priority so usage is saved for multiple targets as long as it won't delay over half its duration. Otherwise allow for small delays to line up buff effect trinkets, and when using Bullseye, delay the last usage of the fight for max stacks.",
|
|
["var_name"] = "trueshot_ready",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.health_pct < pet_healing",
|
|
["action"] = "mend_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies < 3 || ! talent.trick_shots.enabled",
|
|
["list_name"] = "st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 2",
|
|
["list_name"] = "trickshots",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.lone_wolf.enabled",
|
|
["action"] = "summon_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! trinket.t2.has_cooldown || trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff || ! trinket.t1.is.mirror_of_fractured_tomorrows & ( trinket.t2.is.mirror_of_fractured_tomorrows || trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) ) || ! trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) )",
|
|
["description"] = "Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.",
|
|
["var_name"] = "trinket_1_stronger",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! variable.trinket_1_stronger",
|
|
["var_name"] = "trinket_2_stronger",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["precast_time"] = "10",
|
|
["action"] = "salvo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Precast Aimed Shot on one or two targets unless we could cleave it with Volley on two targets.",
|
|
["criteria"] = "active_enemies < 3 & ( ! talent.volley.enabled || active_enemies < 2 )",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Otherwise precast Steady Shot on two targets if we are saving Aimed Shot to cleave with Volley, otherwise on three or more targets.",
|
|
["criteria"] = "active_enemies > 2 || talent.volley.enabled & active_enemies = 2",
|
|
["action"] = "steady_shot",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.trueshot_ready",
|
|
["description"] = "True if effects that are desirable to sync a trinket buff with are ready.",
|
|
["var_name"] = "sync_ready",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.trueshot.up",
|
|
["description"] = "True if effecs that are desirable to sync a trinket buff with are active.",
|
|
["var_name"] = "sync_active",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.trueshot.remains_guess",
|
|
["description"] = "Time until the effects that are desirable to sync a trinket buff with will be ready.",
|
|
["var_name"] = "sync_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "trinket.t1.has_use_buff & ( variable.sync_ready & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) || ! variable.sync_ready & ( variable.trinket_1_stronger & ( variable.sync_remains > trinket.t1.cooldown.duration / 3 & fight_remains > trinket.t1.cooldown.duration + 20 || trinket.t2.has_use_buff & trinket.t2.cooldown.remains > variable.sync_remains - 15 & trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 45 > fight_remains ) || variable.trinket_2_stronger & ( trinket.t2.cooldown.remains & ( trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains >= 20 || trinket.t2.cooldown.remains - 5 >= variable.sync_remains & ( variable.sync_remains > trinket.t1.cooldown.duration / 3 || trinket.t1.cooldown.duration < fight_remains & ( variable.sync_remains + trinket.t1.cooldown.duration > fight_remains ) ) ) || trinket.t2.cooldown.ready & variable.sync_remains > 20 & variable.sync_remains < trinket.t2.cooldown.duration / 3 ) ) ) || ! trinket.t1.has_use_buff & ( trinket.t1.cast_time = 0 || ! variable.sync_active ) & ( ! trinket.t2.has_use_buff & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) || trinket.t2.has_use_buff & ( variable.sync_remains > 20 || trinket.t2.cooldown.remains > 20 ) ) || boss & fight_remains < 25 & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains )",
|
|
["description"] = "Uses buff effect trinkets with cooldowns and is willing to delay usage up to half the trinket cooldown if it won't lose a usage in the fight. Fills in downtime with weaker buff effects if they won't also be saved for later cooldowns (happens if it won't delay over half the trinket cooldown and a stronger trinket won't be up in time) or damage effects if they won't inferfere with any buff effect usage. Intended to be slot-agnostic so that any order of the same trinket pair should result in the same usage.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "trinket.t2.has_use_buff & ( variable.sync_ready & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) || ! variable.sync_ready & ( variable.trinket_2_stronger & ( variable.sync_remains > trinket.t2.cooldown.duration / 3 & fight_remains > trinket.t2.cooldown.duration + 20 || trinket.t1.has_use_buff & trinket.t1.cooldown.remains > variable.sync_remains - 15 & trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 45 > fight_remains ) || variable.trinket_1_stronger & ( trinket.t1.cooldown.remains & ( trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains >= 20 || trinket.t1.cooldown.remains - 5 >= variable.sync_remains & ( variable.sync_remains > trinket.t2.cooldown.duration / 3 || trinket.t2.cooldown.duration < fight_remains & ( variable.sync_remains + trinket.t2.cooldown.duration > fight_remains ) ) ) || trinket.t1.cooldown.ready & variable.sync_remains > 20 & variable.sync_remains < trinket.t1.cooldown.duration / 3 ) ) ) || ! trinket.t2.has_use_buff & ( trinket.t2.cast_time = 0 || ! variable.sync_active ) & ( ! trinket.t1.has_use_buff & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) || trinket.t1.has_use_buff & ( variable.sync_remains > 20 || trinket.t1.cooldown.remains > 20 ) ) || boss & fight_remains < 25 & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains )",
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.razor_fragments.up",
|
|
["action"] = "kill_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.steady_focus.enabled & buff.steady_focus.remains < execute_time & buff.trueshot.down",
|
|
["action"] = "steady_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 || buff.salvo.up",
|
|
["action"] = "volley",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & buff.trick_shots.down",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "TODO: figure out why this is such a big gain for aoe builds in ST",
|
|
["criteria"] = "variable.trueshot_ready & talent.multishot.enabled",
|
|
["action"] = "trueshot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Trigger Salvo if Volley isn't being used to trigger it.",
|
|
["criteria"] = "buff.salvo.up & ! talent.volley.enabled",
|
|
["action"] = "multishot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "aimed_shot",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "talent.black_arrow.enabled & talent.readiness.enabled & buff.trueshot.up",
|
|
["description"] = "As a Dark Ranger with Readiness, Aimed Shot over Rapid Fire in Trueshot to get more Deathblows.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Hold Rapid Fire for up to 8s to proc Lunar Storm. Ignore Lunar Storm if Rapid Fire's cooldown can be reset with Wailing Arrow. Ignore all of this in Trueshot or as a Dark Ranger.",
|
|
["criteria"] = "! talent.lunar_storm.enabled || ( ! cooldown.lunar_storm.remains || cooldown.lunar_storm.remains > 8 || ( action.wailing_arrow.ready & talent.readiness.enabled ) || buff.trueshot.up )",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wailing_arrow",
|
|
["description"] = "With Wailing Arrow and Aimed Shot, target enemies without Serpent Sting or the enemy with the lowest remaining Serpent Sting.",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "aimed_shot",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "black_arrow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "kill_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.precise_shot.up & active_enemies > 1 & ( talent.symphonic_arsenal.enabled || talent.small_game_hunter.enabled )",
|
|
["action"] = "multishot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.precise_shot.up",
|
|
["action"] = "arcane_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.trueshot_ready",
|
|
["action"] = "trueshot",
|
|
},
|
|
{
|
|
["action"] = "volley",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "steady_shot",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || boss & fight_remains < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 16",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 16",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 9",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up & ( buff.bloodlust.up || target.health.pct < 20 ) || boss & fight_remains < 31",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 || cooldown.volley.remains < 10",
|
|
["action"] = "salvo",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241029,
|
|
["warnings"] = "The import for 'trickshots' required some automated changes.\nLine 2: Converted 'talent.steady_focus' to 'talent.steady_focus.enabled' (1x).\nLine 5: Converted 'talent.razor_fragments' to 'talent.razor_fragments.enabled' (1x).\nLine 8: Converted 'talent.rapid_fire_barrage' to 'talent.rapid_fire_barrage.enabled' (1x).\nLine 9: Converted 'talent.lunar_storm' to 'talent.lunar_storm.enabled' (1x).\nLine 9: Converted 'talent.readiness' to 'talent.readiness.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'talent.bullseye' to 'talent.bullseye.enabled' (1x).\nLine 3: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 3: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 3: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 3: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 3: Converted operations in 'cooldown.trueshot.ready&(!raid_event.adds.exists&(!talent.bullseye.enabled||fight_remains>cooldown.trueshot.duration_guess+buff.trueshot.duration%2||buff.bullseye.stack=buff.bullseye.max_stack)&(!trinket.t1.has_use_buff||trinket.t1.cooldown.remains>30||trinket.t1.cooldown.ready)&(!trinket.t2.has_use_buff||trinket.t2.cooldown.remains>30||trinket.t2.cooldown.ready)||raid_event.adds.exists&(!raid_event.adds.up&(raid_event.adds.duration+raid_event.adds.in<25||raid_event.adds.in>60)||raid_event.adds.up&raid_event.adds.remains>10)||boss&fight_remains<25)' to 'cooldown.trueshot.ready&(!raid_event.adds.exists&(!talent.bullseye.enabled||fight_remains>cooldown.trueshot.duration_guess+buff.trueshot.duration/2||buff.bullseye.stack=buff.bullseye.max_stack)&(!trinket.t1.has_use_buff||trinket.t1.cooldown.remains>30||trinket.t1.cooldown.ready)&(!trinket.t2.has_use_buff||trinket.t2.cooldown.remains>30||trinket.t2.cooldown.ready)||raid_event.adds.exists&(!raid_event.adds.up&(raid_event.adds.duration+raid_event.adds.in<25||raid_event.adds.in>60)||raid_event.adds.up&raid_event.adds.remains>10)||boss&fight_remains<25)'.\nLine 8: Converted 'talent.trick_shots' to 'talent.trick_shots.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 1: Converted 'talent.lone_wolf' to 'talent.lone_wolf.enabled' (1x).\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'talent.volley' to 'talent.volley.enabled' (1x).\nLine 7: Converted 'talent.volley' to 'talent.volley.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 3: Converted 'talent.steady_focus' to 'talent.steady_focus.enabled' (1x).\nLine 6: Converted 'talent.multishot' to 'talent.multishot.enabled' (1x).\nLine 7: Converted 'talent.volley' to 'talent.volley.enabled' (1x).\nLine 8: Converted 'talent.black_arrow' to 'talent.black_arrow.enabled' (1x).\nLine 8: Converted 'talent.readiness' to 'talent.readiness.enabled' (1x).\nLine 9: Converted 'talent.lunar_storm' to 'talent.lunar_storm.enabled' (1x).\nLine 9: Converted 'talent.readiness' to 'talent.readiness.enabled' (1x).\nLine 14: Converted 'talent.symphonic_arsenal' to 'talent.symphonic_arsenal.enabled' (1x).\nLine 14: Converted 'talent.small_game_hunter' to 'talent.small_game_hunter.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted operations in 'trinket.t1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.t1.cooldown.duration%3&fight_remains>trinket.t1.cooldown.duration+20||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-5<variable.sync_remains&variable.sync_remains+45>fight_remains)||variable.trinket_2_stronger&(trinket.t2.cooldown.remains&(trinket.t2.cooldown.remains-5<variable.sync_remains&variable.sync_remains>=20||trinket.t2.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.t1.cooldown.duration%3||trinket.t1.cooldown.duration<fight_remains&(variable.sync_remains+trinket.t1.cooldown.duration>fight_remains)))||trinket.t2.cooldown.ready&variable.sync_remains>20&variable.sync_remains<trinket.t2.cooldown.duration%3)))||!trinket.t1.has_use_buff&(trinket.t1.cast_time=0||!variable.sync_active)&(!trinket.t2.has_use_buff&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||trinket.t2.has_use_buff&(variable.sync_remains>20||trinket.t2.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)' to 'trinket.t1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.t1.cooldown.duration/3&fight_remains>trinket.t1.cooldown.duration+20||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-5<variable.sync_remains&variable.sync_remains+45>fight_remains)||variable.trinket_2_stronger&(trinket.t2.cooldown.remains&(trinket.t2.cooldown.remains-5<variable.sync_remains&variable.sync_remains>=20||trinket.t2.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.t1.cooldown.duration/3||trinket.t1.cooldown.duration<fight_remains&(variable.sync_remains+trinket.t1.cooldown.duration>fight_remains)))||trinket.t2.cooldown.ready&variable.sync_remains>20&variable.sync_remains<trinket.t2.cooldown.duration/3)))||!trinket.t1.has_use_buff&(trinket.t1.cast_time=0||!variable.sync_active)&(!trinket.t2.has_use_buff&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||trinket.t2.has_use_buff&(variable.sync_remains>20||trinket.t2.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)'.\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 5: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted operations in 'trinket.t2.has_use_buff&(variable.sync_ready&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)||!variable.sync_ready&(variable.trinket_2_stronger&(variable.sync_remains>trinket.t2.cooldown.duration%3&fight_remains>trinket.t2.cooldown.duration+20||trinket.t1.has_use_buff&trinket.t1.cooldown.remains>variable.sync_remains-15&trinket.t1.cooldown.remains-5<variable.sync_remains&variable.sync_remains+45>fight_remains)||variable.trinket_1_stronger&(trinket.t1.cooldown.remains&(trinket.t1.cooldown.remains-5<variable.sync_remains&variable.sync_remains>=20||trinket.t1.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.t2.cooldown.duration%3||trinket.t2.cooldown.duration<fight_remains&(variable.sync_remains+trinket.t2.cooldown.duration>fight_remains)))||trinket.t1.cooldown.ready&variable.sync_remains>20&variable.sync_remains<trinket.t1.cooldown.duration%3)))||!trinket.t2.has_use_buff&(trinket.t2.cast_time=0||!variable.sync_active)&(!trinket.t1.has_use_buff&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)||trinket.t1.has_use_buff&(variable.sync_remains>20||trinket.t1.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)' to 'trinket.t2.has_use_buff&(variable.sync_ready&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)||!variable.sync_ready&(variable.trinket_2_stronger&(variable.sync_remains>trinket.t2.cooldown.duration/3&fight_remains>trinket.t2.cooldown.duration+20||trinket.t1.has_use_buff&trinket.t1.cooldown.remains>variable.sync_remains-15&trinket.t1.cooldown.remains-5<variable.sync_remains&variable.sync_remains+45>fight_remains)||variable.trinket_1_stronger&(trinket.t1.cooldown.remains&(trinket.t1.cooldown.remains-5<variable.sync_remains&variable.sync_remains>=20||trinket.t1.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.t2.cooldown.duration/3||trinket.t2.cooldown.duration<fight_remains&(variable.sync_remains+trinket.t2.cooldown.duration>fight_remains)))||trinket.t1.cooldown.ready&variable.sync_remains>20&variable.sync_remains<trinket.t1.cooldown.duration/3)))||!trinket.t2.has_use_buff&(trinket.t2.cast_time=0||!variable.sync_active)&(!trinket.t1.has_use_buff&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)||trinket.t1.has_use_buff&(variable.sync_remains>20||trinket.t1.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)'.\n\nImported 6 action lists.\n",
|
|
["profile"] = "actions.precombat+=/summon_pet,if=!talent.lone_wolf\n# Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.\nactions.precombat+=/variable,name=trinket_1_stronger,value=!trinket.2.has_cooldown||trinket.1.has_use_buff&(!trinket.2.has_use_buff||!trinket.1.is.mirror_of_fractured_tomorrows&(trinket.2.is.mirror_of_fractured_tomorrows||trinket.2.cooldown.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.precombat+=/variable,name=trinket_2_stronger,value=!variable.trinket_1_stronger\nactions.precombat+=/hunters_mark,if=(settings.mark_any||target.is_boss)&active_dot.hunters_mark=0&target.time_to_pct_80>20\nactions.precombat+=/salvo,precast_time=10\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)\n# Otherwise precast Steady Shot on two targets if we are saving Aimed Shot to cleave with Volley, otherwise on three or more targets.\nactions.precombat+=/steady_shot,if=active_enemies>2||talent.volley&active_enemies=2\n\nactions+=/counter_shot\nactions+=/tranquilizing_shot\n# Determine if it is a good time to use Trueshot. Raid event optimization takes priority so usage is saved for multiple targets as long as it won't delay over half its duration. Otherwise allow for small delays to line up buff effect trinkets, and when using Bullseye, delay the last usage of the fight for max stacks.\nactions+=/variable,name=trueshot_ready,value=cooldown.trueshot.ready&(!raid_event.adds.exists&(!talent.bullseye||fight_remains>cooldown.trueshot.duration_guess+buff.trueshot.duration%2||buff.bullseye.stack=buff.bullseye.max_stack)&(!trinket.1.has_use_buff||trinket.1.cooldown.remains>30||trinket.1.cooldown.ready)&(!trinket.2.has_use_buff||trinket.2.cooldown.remains>30||trinket.2.cooldown.ready)||raid_event.adds.exists&(!raid_event.adds.up&(raid_event.adds.duration+raid_event.adds.in<25||raid_event.adds.in>60)||raid_event.adds.up&raid_event.adds.remains>10)||boss&fight_remains<25)\nactions+=/mend_pet,if=pet.health_pct<pet_healing\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=trinkets\nactions+=/hunters_mark,if=(settings.mark_any||target.is_boss)&active_dot.hunters_mark=0&target.time_to_pct_80>20\nactions+=/call_action_list,name=st,strict=1,if=active_enemies<3||!talent.trick_shots\nactions+=/call_action_list,name=trickshots,strict=1,if=active_enemies>2\n\n## Call for Power Infusion when Trueshot is up.\n## actions.cds+=/invoke_external_buff,name=power_infusion,if=buff.trueshot.remains>12||fight_remains<13\nactions.cds+=/berserking,if=buff.trueshot.up||boss&fight_remains<13\nactions.cds+=/blood_fury,if=buff.trueshot.up||cooldown.trueshot.remains>30||boss&fight_remains<16\nactions.cds+=/ancestral_call,if=buff.trueshot.up||cooldown.trueshot.remains>30||boss&fight_remains<16\nactions.cds+=/fireblood,if=buff.trueshot.up||cooldown.trueshot.remains>30||boss&fight_remains<9\nactions.cds+=/lights_judgment,if=buff.trueshot.down\nactions.cds+=/potion,if=buff.trueshot.up&(buff.bloodlust.up||target.health.pct<20)||boss&fight_remains<31\nactions.cds+=/salvo,if=active_enemies>2||cooldown.volley.remains<10\n\nactions.st+=/black_arrow,if=buff.trueshot.down\nactions.st+=/kill_shot,if=buff.razor_fragments.up\nactions.st+=/steady_shot,if=talent.steady_focus&buff.steady_focus.remains<execute_time&buff.trueshot.down\nactions.st+=/volley,if=active_enemies>1||buff.salvo.up\nactions.st+=/explosive_shot,if=active_enemies>1&buff.trick_shots.down\n# TODO: figure out why this is such a big gain for aoe builds in ST\nactions.st+=/trueshot,if=variable.trueshot_ready&talent.multishot\n# Trigger Salvo if Volley isn't being used to trigger it.\nactions.st+=/multishot,if=buff.salvo.up&!talent.volley\n# As a Dark Ranger with Readiness, Aimed Shot over Rapid Fire in Trueshot to get more Deathblows.\nactions.st+=/aimed_shot,cycle_targets=1,if=talent.black_arrow&talent.readiness&buff.trueshot.up\n# Hold Rapid Fire for up to 8s to proc Lunar Storm. Ignore Lunar Storm if Rapid Fire's cooldown can be reset with Wailing Arrow. Ignore all of this in Trueshot or as a Dark Ranger.\nactions.st+=/rapid_fire,if=!talent.lunar_storm||(!cooldown.lunar_storm.remains||cooldown.lunar_storm.remains>8||(action.wailing_arrow.ready&talent.readiness)||buff.trueshot.up)\n# With Wailing Arrow and Aimed Shot, target enemies without Serpent Sting or the enemy with the lowest remaining Serpent Sting.\nactions.st+=/wailing_arrow,cycle_targets=1\nactions.st+=/aimed_shot,cycle_targets=1\nactions.st+=/black_arrow\nactions.st+=/kill_shot\nactions.st+=/multishot,if=buff.precise_shot.up&active_enemies>1&(talent.symphonic_arsenal||talent.small_game_hunter)\nactions.st+=/arcane_shot,if=buff.precise_shot.up\nactions.st+=/trueshot,if=variable.trueshot_ready\nactions.st+=/volley\nactions.st+=/explosive_shot\nactions.st+=/steady_shot\n\nactions.trickshots+=/black_arrow,if=buff.trick_shots.remains>execute_time&buff.razor_fragments.up\nactions.trickshots+=/steady_shot,if=talent.steady_focus&buff.steady_focus.remains<execute_time&buff.trueshot.down\nactions.trickshots+=/explosive_shot\nactions.trickshots+=/volley\nactions.trickshots+=/black_arrow,if=!talent.razor_fragments&buff.trick_shots.remains>execute_time\nactions.trickshots+=/kill_shot,if=buff.razor_fragments.up\nactions.trickshots+=/trueshot,if=variable.trueshot_ready\nactions.trickshots+=/barrage,if=talent.rapid_fire_barrage&buff.trick_shots.remains>execute_time\n# Hold Rapid Fire for up to 5s to proc Lunar Storm. Ignore Lunar Storm if Rapid Fire's cooldown can be reset with Wailing Arrow. Ignore all of this in Trueshot or as a Dark Ranger.\nactions.trickshots+=/rapid_fire,if=buff.trick_shots.remains>execute_time&(!talent.lunar_storm||(!cooldown.lunar_storm.remains||cooldown.lunar_storm.remains>5||(action.wailing_arrow.ready&talent.readiness)||buff.trueshot.up))\n# With Wailing Arrow and Aimed Shot, target enemies without Serpent Sting or the enemy with the lowest remaining Serpent Sting.\nactions.trickshots+=/wailing_arrow,cycle_targets=1\nactions.trickshots+=/aimed_shot,cycle_targets=1,if=buff.trick_shots.remains>execute_time&buff.precise_shots.down\nactions.trickshots+=/multishot,if=buff.precise_shots.up||buff.trick_shots.down\nactions.trickshots+=/bag_of_tricks,if=buff.trueshot.down\nactions.trickshots+=/steady_shot\n\n# True if effects that are desirable to sync a trinket buff with are ready.\nactions.trinkets+=/variable,name=sync_ready,value=variable.trueshot_ready\n# True if effecs that are desirable to sync a trinket buff with are active.\nactions.trinkets+=/variable,name=sync_active,value=buff.trueshot.up\n# Time until the effects that are desirable to sync a trinket buff with will be ready.\nactions.trinkets+=/variable,name=sync_remains,value=cooldown.trueshot.remains_guess\n# Uses buff effect trinkets with cooldowns and is willing to delay usage up to half the trinket cooldown if it won't lose a usage in the fight. Fills in downtime with weaker buff effects if they won't also be saved for later cooldowns (happens if it won't delay over half the trinket cooldown and a stronger trinket won't be up in time) or damage effects if they won't inferfere with any buff effect usage. Intended to be slot-agnostic so that any order of the same trinket pair should result in the same usage.\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=trinket.1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger||trinket.2.cooldown.remains)||!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.1.cooldown.duration%3&fight_remains>trinket.1.cooldown.duration+20||trinket.2.has_use_buff&trinket.2.cooldown.remains>variable.sync_remains-15&trinket.2.cooldown.remains-5<variable.sync_remains&variable.sync_remains+45>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%3||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%3)))||!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))||boss&fight_remains<25&(variable.trinket_1_stronger||trinket.2.cooldown.remains)\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=trinket.2.has_use_buff&(variable.sync_ready&(variable.trinket_2_stronger||trinket.1.cooldown.remains)||!variable.sync_ready&(variable.trinket_2_stronger&(variable.sync_remains>trinket.2.cooldown.duration%3&fight_remains>trinket.2.cooldown.duration+20||trinket.1.has_use_buff&trinket.1.cooldown.remains>variable.sync_remains-15&trinket.1.cooldown.remains-5<variable.sync_remains&variable.sync_remains+45>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%3||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%3)))||!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))||boss&fight_remains<25&(variable.trinket_2_stronger||trinket.1.cooldown.remains)",
|
|
["spec"] = 254,
|
|
},
|
|
["Restoration Druid"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20241110,
|
|
["spec"] = 105,
|
|
["desc"] = "2024-11-10: Syrif's healing mode support\n\n2024-09-01, 09-08: When in Cat Form, do cat things\n\n2024-07-30: The War Within",
|
|
["lists"] = {
|
|
["cat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.shadowmeld.up || buff.prowl.up || buff.sudden_ambush.up",
|
|
["action"] = "rake",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.convoke_the_spirits.remains < 40 || ! talent.convoke_the_spirits.enabled ) || fight_remains < 46",
|
|
["action"] = "heart_of_the_wild",
|
|
},
|
|
{
|
|
["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,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "thrash_cat",
|
|
["criteria"] = "refreshable & target.time_to_die > 7 & spell_targets.thrash_cat > 2",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["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,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rake",
|
|
["criteria"] = "refreshable & time_to_die > 10 & spell_targets.swipe_cat < 10",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.cat_form.up & energy > 50 & ( dot.rake.refreshable & spell_targets.thrash_cat > 3 & spell_targets.thrash_cat < 7 & talent.thrash.enabled )",
|
|
["action"] = "cat_form",
|
|
},
|
|
{
|
|
["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 & spell_targets.swipe_cat < 6",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.moonfire & remains < duration * 0.8",
|
|
["action"] = "sunfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 || ( active_enemies < 8 & ! buff.cat_form.up )",
|
|
["action"] = "starsurge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.cat_form.up & energy > 50",
|
|
["action"] = "cat_form",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ferocious_bite",
|
|
["criteria"] = "combo_points > 3 & target.time_to_die < 3 || combo_points = 5 & energy >= 50",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "thrash_cat",
|
|
["criteria"] = "refreshable & target.time_to_die > 6 & ( spell_targets.thrash_cat > 1 || talent.liveliness.enabled )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 3 & combo_points < 5 & talent.improved_swipe.enabled",
|
|
["action"] = "swipe_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "sunfire",
|
|
["criteria"] = "refreshable & target.time_to_die > 5 & active_enemies < 7 & ! talent.improved_sunfire.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy > 60 & combo_points < 5",
|
|
["action"] = "shred",
|
|
},
|
|
},
|
|
["healing"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rejuvenation",
|
|
["caption"] = "Tank",
|
|
["criteria"] = "active_dot.rejuvenation < 1",
|
|
["description"] = "On the tank",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lifebloom",
|
|
["caption"] = "Ally",
|
|
["criteria"] = "( active_dot.lifebloom < 1 ) || ( active_dot.lifebloom < 2 & buff.lifebloom.up & talent.undergrowth.enabled )",
|
|
["description"] = "On an ally",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lifebloom",
|
|
["caption"] = "Self",
|
|
["criteria"] = "( active_dot.lifebloom < 2 & buff.lifebloom.down & talent.undergrowth.enabled )",
|
|
["description"] = "On yourself",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.efflorescence.down",
|
|
["action"] = "efflorescence",
|
|
["description"] = "Maintain Efflo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "swiftmend",
|
|
["caption"] = "TREE",
|
|
["criteria"] = "( active_dot.regrowth + active_dot.wild_growth + active_dot.rejuvenation ) > 1 & talent.reforestation.enabled & buff.reforestation.stack = 3",
|
|
["description"] = "transform into tree",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev.1.swiftmend",
|
|
["action"] = "wild_growth",
|
|
["description"] = "Always wild growth after swiftmend",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "skull_bash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "berserking",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.prowl.up & ! buff.shadowmeld.up",
|
|
["action"] = "natures_vigil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "settings.healing_mode",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "healing",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.prowl.up & ! buff.shadowmeld.up",
|
|
["action"] = "heart_of_the_wild",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.prowl.up & ! buff.shadowmeld.up",
|
|
["action"] = "use_items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.prowl.up & ! buff.shadowmeld.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.rake.enabled || buff.cat_form.up",
|
|
["list_name"] = "cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.rake.enabled",
|
|
["action"] = "cat_form",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "sunfire",
|
|
["criteria"] = "refreshable & target.time_to_die > 5 & talent.improved_sunfire.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "moonfire",
|
|
["criteria"] = "refreshable & time_to_die > 12",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 8",
|
|
["action"] = "starsurge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "sunfire",
|
|
["criteria"] = "refreshable & target.time_to_die > 7 & active_enemies < 7",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.starfire > 1 || buff.heart_of_the_wild.up",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["action"] = "wrath",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Snapshot raid buffed stats before combat begins and pre-potting is done.",
|
|
["action"] = "mark_of_the_wild",
|
|
},
|
|
{
|
|
["action"] = "heart_of_the_wild",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.rake.enabled",
|
|
["action"] = "cat_form",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.rake.enabled",
|
|
["action"] = "prowl",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241110,
|
|
["warnings"] = "Imported 4 action lists.\n",
|
|
["profile"] = "# Snapshot raid buffed stats before combat begins and pre-potting is done.\nactions.precombat+=/mark_of_the_wild\nactions.precombat+=/heart_of_the_wild\nactions.precombat+=/cat_form,if=talent.rake.enabled\nactions.precombat+=/prowl,if=talent.rake.enabled\n\nactions+=/skull_bash\nactions+=/berserking\nactions+=/natures_vigil,if=!buff.prowl.up&!buff.shadowmeld.up\nactions+=/call_action_list,name=healing,if=settings.healing_mode\nactions+=/heart_of_the_wild,if=!buff.prowl.up&!buff.shadowmeld.up\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,strict=1,if=talent.rake.enabled||buff.cat_form.up\nactions+=/cat_form,if=talent.rake.enabled\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+=/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||buff.heart_of_the_wild.up\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<40||!talent.convoke_the_spirits.enabled)||fight_remains<46\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+=/pool_resource,for_next=1\nactions.cat+=/thrash_cat,cycle_targets=1,if=refreshable&target.time_to_die>7&spell_targets.thrash_cat>2\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+=/rake,cycle_targets=1,if=refreshable&time_to_die>10&spell_targets.swipe_cat<10\nactions.cat+=/cat_form,if=!buff.cat_form.up&energy>50&(dot.rake.refreshable&spell_targets.thrash_cat>3&spell_targets.thrash_cat<7&talent.thrash.enabled)\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&spell_targets.swipe_cat<6\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+=/cat_form,if=!buff.cat_form.up&energy>50\nactions.cat+=/pool_resource,for_next=1\nactions.cat+=/ferocious_bite,cycle_targets=1,if=combo_points>3&target.time_to_die<3||combo_points=5&energy>=50\nactions.cat+=/thrash_cat,cycle_targets=1,if=refreshable&target.time_to_die>6&(spell_targets.thrash_cat>1||talent.liveliness.enabled)\nactions.cat+=/swipe_cat,if=active_enemies>3&combo_points<5&talent.improved_swipe.enabled\nactions.cat+=/sunfire,cycle_targets=1,if=refreshable&target.time_to_die>5&active_enemies<7&!talent.improved_sunfire.enabled\nactions.cat+=/pool_resource,for_next=1\nactions.cat+=/shred,if=energy>60&combo_points<5\n\n# On the tank\nactions.healing+=/rejuvenation,if=active_dot.rejuvenation<1\n# On an ally\nactions.healing+=/lifebloom,if=(active_dot.lifebloom<1)||(active_dot.lifebloom<2&buff.lifebloom.up&talent.undergrowth.enabled)\n# On yourself\nactions.healing+=/lifebloom,if=(active_dot.lifebloom<2&buff.lifebloom.down&talent.undergrowth.enabled)\n# Maintain Efflo\nactions.healing+=/efflorescence,if=buff.efflorescence.down\n# transform into tree\nactions.healing+=/swiftmend,if=(active_dot.regrowth+active_dot.wild_growth+active_dot.rejuvenation)>1&talent.reforestation.enabled&buff.reforestation.stack=3\n# Always wild growth after swiftmend\nactions.healing+=/wild_growth,if=prev.1.swiftmend",
|
|
["author"] = "Makahiki",
|
|
},
|
|
["Enhancement"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/dragonflight/engine/class_modules/sc_shaman.cpp",
|
|
["builtIn"] = true,
|
|
["date"] = 20241109.1,
|
|
["spec"] = 263,
|
|
["desc"] = "2024-11-09: Spread Flame Shock before Ascendance (SB); use Tempest to swap Thorim's Invocation\n\n2024-11-03: SimC update; Thorim's Invocation\n\n2024-11-02: 11.0.5 Revamp; fix Funnel; 2nd SimC update\n\n2024-10-29: Totemic WiP and EB fixes\n\n2024-10-27: Voltaic Blaze\n\n2024-10-23: Add missed single target changes; Totemic\n - Funnel / cycling adjustments\n\n2024-10-22: 11.0.5\n\n2024-10-16, 10-21: SimC updates; Thorim's Invocation adjustment\n\n2024-09-30: Test Lava Lash in AOE\n\n2024-09-09: SimC update\n\n2024-09-08: Fix filler_shock\n\n2024-08-22, 08-24, 08-25: SimC priority update\n\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["single"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.elemental_spirits.enabled",
|
|
["action"] = "feral_spirit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.thorims_invocation.enabled & buff.maelstrom_weapon.stack > 0 & ti_lightning_bolt & ! talent.elemental_spirits.enabled",
|
|
["action"] = "windstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.flame_shock.ticking & talent.molten_assault.enabled",
|
|
["action"] = "primordial_wave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.lashing_flames.enabled & debuff.lashing_flames.down",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack < 2 & cooldown.ascendance.remains = 0",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["action"] = "feral_spirit",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tempest",
|
|
["description"] = "[Hekili] Avoid delaying Ascendance due to Thorim's Invocation",
|
|
["criteria"] = "cast_time = 0 & talent.ascendance.enabled & cooldown.ascendance.remains < 2 * gcd.max & talent.thorims_invocation.enabled & ! ti_lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cast_time = 0 & talent.ascendance.enabled & cooldown.ascendance.remains < 2 * gcd.max & talent.thorims_invocation.enabled & ! ti_lightning_bolt",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.flame_shock.ticking & ti_lightning_bolt & active_enemies = 1 & buff.maelstrom_weapon.stack >= 2",
|
|
["action"] = "ascendance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack || ( buff.tempest.stack = buff.tempest.max_stack & ( tempest_mael_count > 30 || buff.awakening_storms.stack = 2 ) & buff.maelstrom_weapon.stack >= 5 )",
|
|
["action"] = "tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack & talent.elemental_spirits.enabled & feral_spirit.active >= 6 & ( charges_fractional >= 1.8 || buff.ascendance.up )",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.thorims_invocation.enabled & buff.maelstrom_weapon.stack > 0 & ti_lightning_bolt & charges = max_charges",
|
|
["action"] = "windstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.elemental_spirits.enabled & talent.ascendance.enabled & buff.maelstrom_weapon.stack >= 2",
|
|
["action"] = "doom_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.thorims_invocation.enabled & buff.maelstrom_weapon.up & ti_lightning_bolt",
|
|
["action"] = "windstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking & talent.ashen_catalyst.enabled",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack & buff.primordial_wave.up",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.overflowing_maelstrom.enabled & buff.maelstrom_weapon.stack >= 5 ) || ( buff.maelstrom_weapon.stack >= 10 - 2 * talent.elemental_spirits.enabled )",
|
|
["action"] = "tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.deeply_rooted_elements.enabled",
|
|
["action"] = "primordial_wave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 8 & feral_spirit.active >= 4 & ( ! buff.ascendance.up || charges_fractional >= 1.8 )",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 8 + 2 * talent.legacy_of_the_frost_witch.enabled",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & ! talent.legacy_of_the_frost_witch.enabled & ( talent.deeply_rooted_elements.enabled || ! talent.overflowing_maelstrom.enabled || ! talent.witch_doctors_ancestry.enabled )",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.voltaic_blaze.up & talent.elemental_spirits.enabled & ! talent.witch_doctors_ancestry.enabled",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arc_discharge.up & talent.deeply_rooted_elements.enabled",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_hand.up || ( buff.ashen_catalyst.stack = buff.ashen_catalyst.max_stack )",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.doom_winds.up || ( talent.stormblast.enabled & buff.stormsurge.up & charges = max_charges )",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.lashing_flames.enabled & ! buff.doom_winds.up",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.voltaic_blaze.up & talent.elemental_spirits.enabled & ! buff.doom_winds.up",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unrelenting_storms.enabled & talent.elemental_spirits.enabled & ! talent.deeply_rooted_elements.enabled",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.elemental_assault.enabled & talent.swirling_maelstrom.enabled & talent.witch_doctors_ancestry.enabled",
|
|
["action"] = "ice_strike",
|
|
},
|
|
{
|
|
["action"] = "stormstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & talent.ascendance.enabled & ! talent.legacy_of_the_frost_witch.enabled",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unrelenting_storms.enabled",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.voltaic_blaze.up",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.elemental_spirits.enabled",
|
|
["action"] = "sundering",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hailstorm.up & buff.ice_strike.up & talent.swirling_maelstrom.enabled & talent.ascendance.enabled",
|
|
["action"] = "frost_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & feral_spirit.active >= 4 & talent.deeply_rooted_elements.enabled & ( charges_fractional >= 1.8 || ( buff.molten_weapon.stack + buff.icy_edge.stack >= 4 ) ) & ! talent.flowing_spirits.enabled",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.alpha_wolf.enabled & feral_spirit.active & alpha_wolf_min_remains = 0",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking & ! talent.tempest.enabled",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.elemental_spirits.enabled",
|
|
["action"] = "doom_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.elemental_assault.enabled & talent.tempest.enabled & talent.molten_assault.enabled & talent.deeply_rooted_elements.enabled & dot.flame_shock.ticking",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.elemental_assault.enabled & talent.swirling_maelstrom.enabled",
|
|
["action"] = "ice_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arc_discharge.up",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unrelenting_storms.enabled",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.elemental_assault.enabled & talent.tempest.enabled & talent.molten_assault.enabled & dot.flame_shock.ticking",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hailstorm.up & buff.ice_strike.up & talent.swirling_maelstrom.enabled & talent.tempest.enabled",
|
|
["action"] = "frost_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.lashing_flames.enabled",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.ice_strike.up",
|
|
["action"] = "ice_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hailstorm.up",
|
|
["action"] = "frost_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.converging_storms.enabled",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["action"] = "lava_lash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ice_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "windstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "stormstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sundering",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "frost_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "crash_lightning",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.flame_shock",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["action"] = "earth_elemental",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "settings.filler_shock",
|
|
["action"] = "flame_shock",
|
|
},
|
|
},
|
|
["funnel"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.elemental_spirits.enabled",
|
|
["action"] = "feral_spirit",
|
|
},
|
|
{
|
|
["action"] = "surging_totem",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ascendance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.thorims_invocation.enabled & buff.maelstrom_weapon.stack > 0 ) || buff.converging_storms.stack = buff.converging_storms.max_stack",
|
|
["action"] = "windstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack || ( buff.maelstrom_weapon.stack >= 5 & ( tempest_mael_count > 30 || buff.awakening_storms.stack = 2 ) )",
|
|
["action"] = "tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_dot.flame_shock >= active_enemies || active_dot.flame_shock = 6 ) & buff.primordial_wave.up & buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack & ( ! buff.splintered_elements.up || fight_remains <= 12 || raid_event.adds.remains <= gcd.max )",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & talent.elemental_spirits.enabled & feral_spirit.active >= 4",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.supercharge.enabled & buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack & ( variable.expected_lb_funnel > variable.expected_cl_funnel )",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.supercharge.enabled & buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack ) || buff.arc_discharge.up & buff.maelstrom_weapon.stack >= 5",
|
|
["action"] = "chain_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.molten_assault.enabled & dot.flame_shock.ticking & ( active_dot.flame_shock < active_enemies ) & active_dot.flame_shock < 6 ) || ( talent.ashen_catalyst.enabled & buff.ashen_catalyst.stack = buff.ashen_catalyst.max_stack )",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.primordial_wave.up",
|
|
["action"] = "primordial_wave",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.elemental_spirits.enabled || ( talent.elemental_spirits.enabled & ( charges = max_charges || buff.feral_spirit.up ) ) ) & buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["action"] = "feral_spirit",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "doom_winds",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.converging_storms.stack = buff.converging_storms.max_stack",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.molten_weapon.stack > buff.crackling_surge.stack ) & buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack",
|
|
["action"] = "lava_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack & ( variable.expected_lb_funnel > variable.expected_cl_funnel )",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack",
|
|
["action"] = "chain_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.doom_winds.up || ! buff.crash_lightning.up || ( talent.alpha_wolf.enabled & feral_spirit.active & alpha_wolf_min_remains = 0 ) || ( talent.converging_storms.enabled & buff.converging_storms.stack < buff.converging_storms.max_stack )",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.doom_winds.up || talent.earthsurge.enabled",
|
|
["action"] = "sundering",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.flame_shock = 6 || ( active_dot.flame_shock >= 4 & active_dot.flame_shock >= active_enemies )",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hailstorm.enabled & ! buff.ice_strike.up",
|
|
["action"] = "ice_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hailstorm.enabled & buff.hailstorm.up",
|
|
["action"] = "frost_shock",
|
|
},
|
|
{
|
|
["action"] = "sundering",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.molten_assault.enabled & ! ticking",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ( talent.fire_nova.enabled || talent.primordial_wave.enabled ) & ( active_dot.flame_shock < active_enemies ) & active_dot.flame_shock < 6",
|
|
["action"] = "flame_shock",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.flame_shock >= 3",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.crash_lightning.up & talent.deeply_rooted_elements.enabled",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.crashing_storms.enabled & buff.cl_crash_lightning.up & active_enemies >= 4",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["action"] = "windstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "stormstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ice_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lava_lash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "crash_lightning",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.flame_shock >= 2",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.elemental_spirits.enabled || ( talent.elemental_spirits.enabled & ( charges = max_charges || buff.feral_spirit.up ) ) ) & buff.maelstrom_weapon.stack >= 5",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.molten_weapon.stack > buff.crackling_surge.stack ) & buff.maelstrom_weapon.stack >= 5",
|
|
["action"] = "lava_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & ( variable.expected_lb_funnel > variable.expected_cl_funnel )",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5",
|
|
["action"] = "chain_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.hailstorm.enabled",
|
|
["action"] = "frost_shock",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.ascendance.up || buff.feral_spirit.up || buff.doom_winds.up || boss & ( fight_remains % 300 <= 30 ) || ( ! talent.ascendance.enabled & ! talent.feral_spirit.enabled & ! talent.doom_winds.enabled ) )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Interrupt of casts.",
|
|
["action"] = "wind_shear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dispellable_magic.up",
|
|
["action"] = "purge",
|
|
["line_cd"] = "settings.purge_icd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dispellable_magic.up",
|
|
["action"] = "greater_purge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "elementium_pocket_anvil",
|
|
["action"] = "elementium_pocket_anvil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "algethar_puzzle_box",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "( ! buff.ascendance.up & ! buff.feral_spirit.up & ! buff.doom_winds.up ) || ( talent.ascendance.enabled & ( cooldown.ascendance.remains < 2 * action.stormstrike.gcd ) ) || ( fight_remains % 180 <= 30 )",
|
|
["name"] = "algethar_puzzle_box",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket1_is_weird & trinket.t1.has_use_buff & ( buff.ascendance.up || buff.feral_spirit.up || buff.doom_winds.up || boss & ( fight_remains % trinket.t1.cooldown.duration <= trinket.t1.buff_duration ) || ( variable.min_talented_cd_remains >= trinket.t1.cooldown.duration ) || ( ! talent.ascendance.enabled & ! talent.feral_spirit.enabled & ! talent.doom_winds.enabled ) )",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket2_is_weird & trinket.t2.has_use_buff & ( buff.ascendance.up || buff.feral_spirit.up || buff.doom_winds.up || boss & ( fight_remains % trinket.t2.cooldown.duration <= trinket.t2.buff_duration ) || ( variable.min_talented_cd_remains >= trinket.t2.cooldown.duration ) || ( ! talent.ascendance.enabled & ! talent.feral_spirit.enabled & ! talent.doom_winds.enabled ) )",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "beacon_to_the_beyond",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "( ! buff.ascendance.up & ! buff.feral_spirit.up & ! buff.doom_winds.up ) || boss & ( fight_remains % 150 <= 5 )",
|
|
["name"] = "beacon_to_the_beyond",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "manic_grieftorch",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "( ! buff.ascendance.up & ! buff.feral_spirit.up & ! buff.doom_winds.up ) || boss & ( fight_remains % 120 <= 5 )",
|
|
["name"] = "manic_grieftorch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket1_is_weird & ! trinket.t1.has_use_buff",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket2_is_weird & ! trinket.t2.has_use_buff",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.ascendance.up || buff.feral_spirit.up || buff.doom_winds.up || boss & ( fight_remains % action.blood_fury.cooldown <= action.blood_fury.duration ) || ( variable.min_talented_cd_remains >= action.blood_fury.cooldown ) || ( ! talent.ascendance.enabled & ! talent.feral_spirit.enabled & ! talent.doom_winds.enabled ) )",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.ascendance.up || buff.feral_spirit.up || buff.doom_winds.up || boss & ( fight_remains % action.berserking.cooldown <= action.berserking.duration ) || ( variable.min_talented_cd_remains >= action.berserking.cooldown ) || ( ! talent.ascendance.enabled & ! talent.feral_spirit.enabled & ! talent.doom_winds.enabled ) )",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.ascendance.up || buff.feral_spirit.up || buff.doom_winds.up || ( boss & fight_remains % action.fireblood.cooldown <= action.fireblood.duration ) || ( variable.min_talented_cd_remains >= action.fireblood.cooldown ) || ( ! talent.ascendance.enabled & ! talent.feral_spirit.enabled & ! talent.doom_winds.enabled ) )",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.ascendance.up || buff.feral_spirit.up || buff.doom_winds.up || boss & ( fight_remains % action.ancestral_call.cooldown <= action.ancestral_call.duration ) || ( variable.min_talented_cd_remains >= action.ancestral_call.cooldown ) || ( ! talent.ascendance.enabled & ! talent.feral_spirit.enabled & ! talent.doom_winds.enabled ) )",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies = 1 & ! talent.surging_totem.enabled",
|
|
["list_name"] = "single",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies = 1 & talent.surging_totem.enabled",
|
|
["list_name"] = "single_totemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 1 & ! toggle.funnel & ! talent.surging_totem.enabled",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 1 & ! toggle.funnel & talent.surging_totem.enabled",
|
|
["list_name"] = "aoe_totemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 1 & toggle.funnel",
|
|
["list_name"] = "funnel",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "windfury_weapon",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "flametongue_weapon",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lightning_shield",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.algethar_puzzle_box || trinket.t1.is.manic_grieftorch || trinket.t1.is.elementium_pocket_anvil || trinket.t1.is.beacon_to_the_beyond",
|
|
["var_name"] = "trinket1_is_weird",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.algethar_puzzle_box || trinket.t2.is.manic_grieftorch || trinket.t2.is.elementium_pocket_anvil || trinket.t2.is.beacon_to_the_beyond",
|
|
["var_name"] = "trinket2_is_weird",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( ( cooldown.feral_spirit.remains / ( 4 * talent.witch_doctors_ancestry.enabled ) ) + 1000 * ! talent.feral_spirit.enabled ) >? ( cooldown.doom_winds.remains + 1000 * ! talent.doom_winds.enabled ) >? ( cooldown.ascendance.remains + 1000 * ! talent.ascendance.enabled )",
|
|
["var_name"] = "min_talented_cd_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( 1 + debuff.chaos_brand.up * debuff.chaos_brand.value ) * ( 1 + ( debuff.hunters_mark.up * target.health.pct >= 80 ) * debuff.hunters_mark.value )",
|
|
["var_name"] = "target_nature_mod",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "action.lightning_bolt.damage * ( 1 + debuff.lightning_rod.up * variable.target_nature_mod * ( 1 + buff.primordial_wave.up * active_dot.flame_shock * buff.primordial_wave.value ) * debuff.lightning_rod.value )",
|
|
["var_name"] = "expected_lb_funnel",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "action.chain_lightning.damage * ( 1 + debuff.lightning_rod.up * variable.target_nature_mod * ( active_enemies >? ( 3 + 2 * talent.crashing_storms.enabled ) ) * debuff.lightning_rod.value )",
|
|
["var_name"] = "expected_cl_funnel",
|
|
},
|
|
},
|
|
["single_totemic"] = {
|
|
{
|
|
["action"] = "surging_totem",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tempest",
|
|
["description"] = "[Hekili] Avoid delaying Ascendance due to Thorim's Invocation",
|
|
["criteria"] = "cast_time = 0 & talent.ascendance.enabled & cooldown.ascendance.remains < 2 * gcd.max & talent.thorims_invocation.enabled & ! ti_lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cast_time = 0 & talent.ascendance.enabled & cooldown.ascendance.remains < 2 * gcd.max & talent.thorims_invocation.enabled & ! ti_lightning_bolt",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "ti_lightning_bolt & pet.surging_totem.remains > 4 & ( buff.totemic_rebound.stack >= 3 || buff.maelstrom_weapon.up )",
|
|
["action"] = "ascendance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.elemental_spirits.enabled & buff.legacy_of_the_frost_witch.up",
|
|
["action"] = "doom_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ascendance.up & pet.surging_totem.active & talent.earthsurge.enabled & buff.legacy_of_the_frost_witch.up & buff.totemic_rebound.stack >= 5 & buff.earthen_weapon.stack >= 2",
|
|
["action"] = "sundering",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unrelenting_storms.enabled & talent.alpha_wolf.enabled & alpha_wolf_min_remains = 0 & buff.earthen_weapon.stack >= 8",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.thorims_invocation.enabled & buff.maelstrom_weapon.stack > 0 & ti_lightning_bolt & ! talent.elemental_spirits.enabled",
|
|
["action"] = "windstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.legacy_of_the_frost_witch.up & cooldown.ascendance.remains >= 10 & pet.surging_totem.active & buff.totemic_rebound.stack >= 3 & ! buff.ascendance.up",
|
|
["action"] = "sundering",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.flame_shock.ticking & talent.molten_assault.enabled",
|
|
["action"] = "primordial_wave",
|
|
},
|
|
{
|
|
["action"] = "feral_spirit",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack & talent.elemental_spirits.enabled & feral_spirit.active >= 6 & ( charges_fractional >= 1.8 || buff.ascendance.up )",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.voltaic_blaze.up & buff.whirling_earth.up",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unrelenting_storms.enabled & talent.alpha_wolf.enabled & alpha_wolf_min_remains = 0",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking & talent.lashing_flames.enabled",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_hand.up & ! talent.legacy_of_the_frost_witch.enabled",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & charges = max_charges",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 8 & buff.primordial_wave.up & ( ! buff.splintered_elements.up || fight_remains <= 12 )",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 8 & ( feral_spirit.active >= 2 || ! talent.elemental_spirits.enabled )",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.thorims_invocation.enabled & buff.maelstrom_weapon.stack >= 5",
|
|
["action"] = "lava_burst",
|
|
},
|
|
{
|
|
["action"] = "primordial_wave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & ( charges_fractional >= 1.8 || ( buff.molten_weapon.stack + buff.icy_edge.stack >= 4 ) ) & talent.ascendance.enabled & ( feral_spirit.active >= 4 || ! talent.elemental_spirits.enabled )",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ascendance.enabled & ( buff.maelstrom_weapon.stack >= 10 || ( buff.maelstrom_weapon.stack >= 5 & buff.whirling_air.up & ! buff.legacy_of_the_frost_witch.up ) )",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ascendance.enabled & ( buff.maelstrom_weapon.stack >= 10 || ( buff.maelstrom_weapon.stack >= 5 & buff.whirling_air.up & ! buff.legacy_of_the_frost_witch.up ) )",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_hand.up & talent.molten_assault.enabled & pet.searing_totem.active",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["action"] = "windstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "stormstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.molten_assault.enabled",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unrelenting_storms.enabled",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & talent.ascendance.enabled",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.ice_strike.up",
|
|
["action"] = "ice_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hailstorm.up & pet.searing_totem.active",
|
|
["action"] = "frost_shock",
|
|
},
|
|
{
|
|
["action"] = "lava_lash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & feral_spirit.active >= 4 & talent.deeply_rooted_elements.enabled & ( charges_fractional >= 1.8 || ( buff.icy_edge.stack + buff.molten_weapon.stack >= 4 ) )",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.elemental_spirits.enabled",
|
|
["action"] = "doom_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking & ! talent.voltaic_blaze.enabled",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hailstorm.up",
|
|
["action"] = "frost_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.converging_storms.enabled",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["action"] = "frost_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "crash_lightning",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.flame_shock",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["action"] = "earth_elemental",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.voltaic_blaze.enabled",
|
|
["action"] = "flame_shock",
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.elemental_spirits.enabled || talent.alpha_wolf.enabled",
|
|
["action"] = "feral_spirit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tempest",
|
|
["description"] = "[Hekili] Avoid delaying Ascendance due to Thorim's Invocation",
|
|
["criteria"] = "cast_time = 0 & talent.ascendance.enabled & cooldown.ascendance.remains < 2 * gcd.max & talent.thorims_invocation.enabled & ! ti_chain_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cast_time = 0 & talent.ascendance.enabled & cooldown.ascendance.remains < 2 * gcd.max & talent.thorims_invocation.enabled & ! ti_chain_lightning",
|
|
["action"] = "chain_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.flame_shock.ticking & ( cooldown.lava_lash.remains || active_dot.flame_shock >= active_enemies || active_dot.flame_shock = 6 ) & ti_chain_lightning",
|
|
["action"] = "ascendance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.arc_discharge.up & ( ( buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack & ! talent.raging_maelstrom.enabled ) || ( buff.maelstrom_weapon.stack >= 8 ) ) || ( buff.maelstrom_weapon.stack >= 5 & ( tempest_mael_count > 30 || buff.awakening_storms.stack = 2 ) )",
|
|
["action"] = "tempest",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.thorims_invocation.enabled & buff.maelstrom_weapon.stack > 0 & ti_chain_lightning",
|
|
["action"] = "windstrike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.crashing_storms.enabled & ( ( talent.unruly_winds.enabled & active_enemies >= 10 ) || active_enemies >= 15 )",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.tempest.enabled || ( tempest_mael_count <= 10 & buff.awakening_storms.stack <= 1 ) ) & ( ( active_dot.flame_shock >= active_enemies || active_dot.flame_shock = 6 ) & buff.primordial_wave.up & buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack & ( ! buff.splintered_elements.up || fight_remains <= 12 || raid_event.adds.remains <= gcd.max ) )",
|
|
["action"] = "lightning_bolt",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.voltaic_blaze.up & buff.maelstrom_weapon.stack <= 8",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.molten_assault.enabled & ( talent.primordial_wave.enabled || talent.fire_nova.enabled ) & dot.flame_shock.ticking & ( active_dot.flame_shock < active_enemies ) & active_dot.flame_shock < 6",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.primordial_wave.up",
|
|
["action"] = "primordial_wave",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arc_discharge.up & buff.maelstrom_weapon.stack >= 5",
|
|
["action"] = "chain_lightning",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.elemental_spirits.enabled || ( talent.elemental_spirits.enabled & ( charges = max_charges || feral_spirit.active >= 2 ) ) ) & buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack & ( ! talent.crashing_storms.enabled || active_enemies <= 3 )",
|
|
["action"] = "elemental_blast",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack & ! talent.raging_maelstrom.enabled ) || ( buff.maelstrom_weapon.stack >= 7 )",
|
|
["action"] = "chain_lightning",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "feral_spirit",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "ti_chain_lightning & ( buff.legacy_of_the_frost_witch.up || ! talent.legacy_of_the_frost_witch.enabled )",
|
|
["action"] = "doom_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.doom_winds.up & active_enemies >= 4 ) || ! buff.crash_lightning.up || ( talent.alpha_wolf.enabled & feral_spirit.active & alpha_wolf_min_remains = 0 )",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.doom_winds.up || talent.earthsurge.enabled",
|
|
["action"] = "sundering",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.flame_shock = 6 || ( active_dot.flame_shock >= 4 & active_dot.flame_shock >= cycle_enemies )",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.stormblast.enabled & talent.stormflurry.enabled",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.voltaic_blaze.up",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.lashing_flames.enabled",
|
|
["action"] = "lava_lash",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.molten_assault.enabled & dot.flame_shock.ticking",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hailstorm.enabled & ! buff.ice_strike.up",
|
|
["action"] = "ice_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hailstorm.enabled & buff.hailstorm.up",
|
|
["action"] = "frost_shock",
|
|
},
|
|
{
|
|
["action"] = "sundering",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.molten_assault.enabled & ! ticking",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ( talent.fire_nova.enabled || talent.primordial_wave.enabled ) & ( active_dot.flame_shock < active_enemies ) & active_dot.flame_shock < 6",
|
|
["action"] = "flame_shock",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.flame_shock >= 3",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.crash_lightning.up & ( talent.deeply_rooted_elements.enabled || buff.converging_storms.stack = buff.converging_storms.max_stack )",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.crashing_storms.enabled & buff.cl_crash_lightning.up & active_enemies >= 4",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["action"] = "windstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "stormstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ice_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lava_lash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "crash_lightning",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.flame_shock >= 2",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.elemental_spirits.enabled || ( talent.elemental_spirits.enabled & ( charges = max_charges || feral_spirit.active >= 2 ) ) ) & buff.maelstrom_weapon.stack >= 5 & ( ! talent.crashing_storms.enabled || active_enemies <= 3 )",
|
|
["action"] = "elemental_blast",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5",
|
|
["action"] = "chain_lightning",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.hailstorm.enabled",
|
|
["action"] = "frost_shock",
|
|
},
|
|
},
|
|
["aoe_totemic"] = {
|
|
{
|
|
["action"] = "surging_totem",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "chain_lightning",
|
|
["description"] = "[Hekili] Avoid delaying Ascendance due to Thorim's Invocation",
|
|
["criteria"] = "cast_time = 0 & talent.ascendance.enabled & cooldown.ascendance.remains < 2 * gcd.max & talent.thorims_invocation.enabled & ! ti_chain_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "ti_chain_lightning",
|
|
["action"] = "ascendance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ascendance.up & pet.surging_totem.active & talent.earthsurge.enabled & ( buff.legacy_of_the_frost_witch.up || ! talent.legacy_of_the_frost_witch.enabled )",
|
|
["action"] = "sundering",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.crashing_storms.enabled & ( active_enemies >= 15 - 5 * talent.unruly_winds.enabled )",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( active_dot.flame_shock >= active_enemies || active_dot.flame_shock = 6 ) & buff.primordial_wave.up & buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack & ( ! buff.splintered_elements.up || fight_remains <= 12 || raid_event.adds.remains <= gcd.max ) )",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.elemental_spirits.enabled & ( buff.legacy_of_the_frost_witch.up || ! talent.legacy_of_the_frost_witch.enabled )",
|
|
["action"] = "doom_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.molten_assault.enabled & ( talent.primordial_wave.enabled || talent.fire_nova.enabled ) & dot.flame_shock.ticking & active_dot.flame_shock < active_enemies & active_dot.flame_shock < 6",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.primordial_wave.up",
|
|
["action"] = "primordial_wave",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.elemental_spirits.enabled || ( talent.elemental_spirits.enabled & ( charges = max_charges || feral_spirit.active >= 2 ) ) ) & buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack & ( ! talent.crashing_storms.enabled || active_enemies <= 3 )",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 10",
|
|
["action"] = "chain_lightning",
|
|
},
|
|
{
|
|
["action"] = "feral_spirit",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.legacy_of_the_frost_witch.up || ! talent.legacy_of_the_frost_witch.enabled",
|
|
["action"] = "doom_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.doom_winds.up || ! buff.crash_lightning.up || ( talent.alpha_wolf.enabled & feral_spirit.active & alpha_wolf_min_remains = 0 )",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.doom_winds.up || talent.earthsurge.enabled & ( buff.legacy_of_the_frost_witch.up || ! talent.legacy_of_the_frost_witch.enabled ) & pet.surging_totem.active",
|
|
["action"] = "sundering",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.flame_shock = 6 || ( active_dot.flame_shock >= 4 & active_dot.flame_shock >= cycle_enemies )",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.voltaic_blaze.up",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.lashing_flames.enabled",
|
|
["action"] = "lava_lash",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.molten_assault.enabled & dot.flame_shock.ticking",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hailstorm.enabled & ! buff.ice_strike.up",
|
|
["action"] = "ice_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hailstorm.enabled & buff.hailstorm.up",
|
|
["action"] = "frost_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.legacy_of_the_frost_witch.up || ! talent.legacy_of_the_frost_witch.enabled ) & pet.surging_totem.active",
|
|
["action"] = "sundering",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.molten_assault.enabled & ! ticking",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ( talent.fire_nova.enabled || talent.primordial_wave.enabled ) & ( active_dot.flame_shock < active_enemies ) & active_dot.flame_shock < 6",
|
|
["action"] = "flame_shock",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.flame_shock >= 3",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.crash_lightning.up & ( talent.deeply_rooted_elements.enabled || buff.converging_storms.stack = buff.converging_storms.max_stack )",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.crashing_storms.enabled & buff.cl_crash_lightning.up & active_enemies >= 4",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["action"] = "windstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "stormstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ice_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lava_lash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "crash_lightning",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.flame_shock >= 2",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.elemental_spirits.enabled || ( talent.elemental_spirits.enabled & ( charges = max_charges || feral_spirit.active >= 2 ) ) ) & buff.maelstrom_weapon.stack >= 5 & ( ! talent.crashing_storms.enabled || active_enemies <= 3 )",
|
|
["action"] = "elemental_blast",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5",
|
|
["action"] = "chain_lightning",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking",
|
|
["action"] = "flame_shock",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241109.1,
|
|
["warnings"] = "The import for 'single' required some automated changes.\nLine 7: Converted 'talent.ascendance' to 'talent.ascendance.enabled' (1x).\nLine 7: Converted 'talent.thorims_invocation' to 'talent.thorims_invocation.enabled' (1x).\nLine 8: Converted 'talent.ascendance' to 'talent.ascendance.enabled' (1x).\nLine 8: Converted 'talent.thorims_invocation' to 'talent.thorims_invocation.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 1: Converted operations in '(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%%300<=30)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))' to '(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%300<=30)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))'.\nLine 6: Converted operations in '(!buff.ascendance.up&!buff.feral_spirit.up&!buff.doom_winds.up)||(talent.ascendance.enabled&(cooldown.ascendance.remains<2*action.stormstrike.gcd))||(fight_remains%%180<=30)' to '(!buff.ascendance.up&!buff.feral_spirit.up&!buff.doom_winds.up)||(talent.ascendance.enabled&(cooldown.ascendance.remains<2*action.stormstrike.gcd))||(fight_remains%180<=30)'.\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 7: Converted 'trinket.1.buff.any.duration' to 'trinket.t1.buff.any.duration' (1x).\nLine 7: Converted 'trinket.1.buff.any.duration' to 'trinket.t1.buff_duration' (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 operations in '!variable.trinket1_is_weird&trinket.t1.has_use_buff&(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%%trinket.t1.cooldown.duration<=trinket.t1.buff_duration)||(variable.min_talented_cd_remains>=trinket.t1.cooldown.duration)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))' to '!variable.trinket1_is_weird&trinket.t1.has_use_buff&(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%trinket.t1.cooldown.duration<=trinket.t1.buff_duration)||(variable.min_talented_cd_remains>=trinket.t1.cooldown.duration)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))'.\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'.\nLine 8: Converted 'trinket.2.buff.any.duration' to 'trinket.t2.buff.any.duration' (1x).\nLine 8: Converted 'trinket.2.buff.any.duration' to 'trinket.t2.buff_duration' (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'.\nLine 8: Converted operations in '!variable.trinket2_is_weird&trinket.t2.has_use_buff&(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%%trinket.t2.cooldown.duration<=trinket.t2.buff_duration)||(variable.min_talented_cd_remains>=trinket.t2.cooldown.duration)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))' to '!variable.trinket2_is_weird&trinket.t2.has_use_buff&(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%trinket.t2.cooldown.duration<=trinket.t2.buff_duration)||(variable.min_talented_cd_remains>=trinket.t2.cooldown.duration)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))'.\nLine 9: Converted operations in '(!buff.ascendance.up&!buff.feral_spirit.up&!buff.doom_winds.up)||boss&(fight_remains%%150<=5)' to '(!buff.ascendance.up&!buff.feral_spirit.up&!buff.doom_winds.up)||boss&(fight_remains%150<=5)'.\nLine 10: Converted operations in '(!buff.ascendance.up&!buff.feral_spirit.up&!buff.doom_winds.up)||boss&(fight_remains%%120<=5)' to '(!buff.ascendance.up&!buff.feral_spirit.up&!buff.doom_winds.up)||boss&(fight_remains%120<=5)'.\nLine 11: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 12: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 13: Converted operations in '(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%%action.blood_fury.cooldown<=action.blood_fury.duration)||(variable.min_talented_cd_remains>=action.blood_fury.cooldown)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))' to '(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%action.blood_fury.cooldown<=action.blood_fury.duration)||(variable.min_talented_cd_remains>=action.blood_fury.cooldown)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))'.\nLine 14: Converted operations in '(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%%action.berserking.cooldown<=action.berserking.duration)||(variable.min_talented_cd_remains>=action.berserking.cooldown)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))' to '(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%action.berserking.cooldown<=action.berserking.duration)||(variable.min_talented_cd_remains>=action.berserking.cooldown)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))'.\nLine 15: Converted operations in '(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||(boss&fight_remains%%action.fireblood.cooldown<=action.fireblood.duration)||(variable.min_talented_cd_remains>=action.fireblood.cooldown)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))' to '(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||(boss&fight_remains%action.fireblood.cooldown<=action.fireblood.duration)||(variable.min_talented_cd_remains>=action.fireblood.cooldown)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))'.\nLine 16: Converted operations in '(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%%action.ancestral_call.cooldown<=action.ancestral_call.duration)||(variable.min_talented_cd_remains>=action.ancestral_call.cooldown)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))' to '(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%action.ancestral_call.cooldown<=action.ancestral_call.duration)||(variable.min_talented_cd_remains>=action.ancestral_call.cooldown)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))'.\nThe following auras were used in the action list but were not found in the addon database:\n - any\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 4: Converted 'trinket.1.is.manic_grieftorch' to 'trinket.t1.is.manic_grieftorch' (1x).\nLine 4: Converted 'trinket.1.is.elementium_pocket_anvil' to 'trinket.t1.is.elementium_pocket_anvil' (1x).\nLine 4: Converted 'trinket.1.is.beacon_to_the_beyond' to 'trinket.t1.is.beacon_to_the_beyond' (1x).\nLine 5: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\nLine 5: Converted 'trinket.2.is.manic_grieftorch' to 'trinket.t2.is.manic_grieftorch' (1x).\nLine 5: Converted 'trinket.2.is.elementium_pocket_anvil' to 'trinket.t2.is.elementium_pocket_anvil' (1x).\nLine 5: Converted 'trinket.2.is.beacon_to_the_beyond' to 'trinket.t2.is.beacon_to_the_beyond' (1x).\nLine 6: Converted operations in '((cooldown.feral_spirit.remains%(4*talent.witch_doctors_ancestry.enabled))+1000*!talent.feral_spirit.enabled)>?(cooldown.doom_winds.remains+1000*!talent.doom_winds.enabled)>?(cooldown.ascendance.remains+1000*!talent.ascendance.enabled)' to '((cooldown.feral_spirit.remains/(4*talent.witch_doctors_ancestry.enabled))+1000*!talent.feral_spirit.enabled)>?(cooldown.doom_winds.remains+1000*!talent.doom_winds.enabled)>?(cooldown.ascendance.remains+1000*!talent.ascendance.enabled)'.\n\nThe import for 'single_totemic' required some automated changes.\nLine 2: Converted 'talent.ascendance' to 'talent.ascendance.enabled' (1x).\nLine 2: Converted 'talent.thorims_invocation' to 'talent.thorims_invocation.enabled' (1x).\nLine 3: Converted 'talent.ascendance' to 'talent.ascendance.enabled' (1x).\nLine 3: Converted 'talent.thorims_invocation' to 'talent.thorims_invocation.enabled' (1x).\n\nThe import for 'aoe_totemic' required some automated changes.\nLine 2: Converted 'talent.ascendance' to 'talent.ascendance.enabled' (1x).\nLine 2: Converted 'talent.thorims_invocation' to 'talent.thorims_invocation.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 2: Converted 'talent.ascendance' to 'talent.ascendance.enabled' (1x).\nLine 2: Converted 'talent.thorims_invocation' to 'talent.thorims_invocation.enabled' (1x).\nLine 3: Converted 'talent.ascendance' to 'talent.ascendance.enabled' (1x).\nLine 3: Converted 'talent.thorims_invocation' to 'talent.thorims_invocation.enabled' (1x).\n\nImported 7 action lists.\n",
|
|
["profile"] = "actions.precombat+=/windfury_weapon\nactions.precombat+=/flametongue_weapon\nactions.precombat+=/lightning_shield\nactions.precombat+=/variable,name=trinket1_is_weird,value=trinket.1.is.algethar_puzzle_box||trinket.1.is.manic_grieftorch||trinket.1.is.elementium_pocket_anvil||trinket.1.is.beacon_to_the_beyond\nactions.precombat+=/variable,name=trinket2_is_weird,value=trinket.2.is.algethar_puzzle_box||trinket.2.is.manic_grieftorch||trinket.2.is.elementium_pocket_anvil||trinket.2.is.beacon_to_the_beyond\nactions.precombat+=/variable,name=min_talented_cd_remains,value=((cooldown.feral_spirit.remains%(4*talent.witch_doctors_ancestry.enabled))+1000*!talent.feral_spirit.enabled)>?(cooldown.doom_winds.remains+1000*!talent.doom_winds.enabled)>?(cooldown.ascendance.remains+1000*!talent.ascendance.enabled)\nactions.precombat+=/variable,name=target_nature_mod,value=(1+debuff.chaos_brand.up*debuff.chaos_brand.value)*(1+(debuff.hunters_mark.up*target.health.pct>=80)*debuff.hunters_mark.value)\nactions.precombat+=/variable,name=expected_lb_funnel,value=action.lightning_bolt.damage*(1+debuff.lightning_rod.up*variable.target_nature_mod*(1+buff.primordial_wave.up*active_dot.flame_shock*buff.primordial_wave.value)*debuff.lightning_rod.value)\nactions.precombat+=/variable,name=expected_cl_funnel,value=action.chain_lightning.damage*(1+debuff.lightning_rod.up*variable.target_nature_mod*(active_enemies>?(3+2*talent.crashing_storms.enabled))*debuff.lightning_rod.value)\n\n## actions+=/bloodlust,line_cd=600\nactions+=/potion,if=(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%%300<=30)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))\n# Interrupt of casts.\nactions+=/wind_shear\nactions+=/purge,line_cd=settings.purge_icd,if=buff.dispellable_magic.up\nactions+=/greater_purge,if=buff.dispellable_magic.up\nactions+=/use_item,name=elementium_pocket_anvil,use_off_gcd=1\nactions+=/use_item,name=algethar_puzzle_box,use_off_gcd=1,if=(!buff.ascendance.up&!buff.feral_spirit.up&!buff.doom_winds.up)||(talent.ascendance.enabled&(cooldown.ascendance.remains<2*action.stormstrike.gcd))||(fight_remains%%180<=30)\nactions+=/use_item,slot=trinket1,if=!variable.trinket1_is_weird&trinket.1.has_use_buff&(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%%trinket.1.cooldown.duration<=trinket.1.buff.any.duration)||(variable.min_talented_cd_remains>=trinket.1.cooldown.duration)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))\nactions+=/use_item,slot=trinket2,if=!variable.trinket2_is_weird&trinket.2.has_use_buff&(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%%trinket.2.cooldown.duration<=trinket.2.buff.any.duration)||(variable.min_talented_cd_remains>=trinket.2.cooldown.duration)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))\nactions+=/use_item,name=beacon_to_the_beyond,use_off_gcd=1,if=(!buff.ascendance.up&!buff.feral_spirit.up&!buff.doom_winds.up)||boss&(fight_remains%%150<=5)\nactions+=/use_item,name=manic_grieftorch,use_off_gcd=1,if=(!buff.ascendance.up&!buff.feral_spirit.up&!buff.doom_winds.up)||boss&(fight_remains%%120<=5)\nactions+=/use_item,slot=trinket1,if=!variable.trinket1_is_weird&!trinket.1.has_use_buff\nactions+=/use_item,slot=trinket2,if=!variable.trinket2_is_weird&!trinket.2.has_use_buff\nactions+=/blood_fury,if=(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%%action.blood_fury.cooldown<=action.blood_fury.duration)||(variable.min_talented_cd_remains>=action.blood_fury.cooldown)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))\nactions+=/berserking,if=(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%%action.berserking.cooldown<=action.berserking.duration)||(variable.min_talented_cd_remains>=action.berserking.cooldown)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))\nactions+=/fireblood,if=(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||(boss&fight_remains%%action.fireblood.cooldown<=action.fireblood.duration)||(variable.min_talented_cd_remains>=action.fireblood.cooldown)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))\nactions+=/ancestral_call,if=(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||boss&(fight_remains%%action.ancestral_call.cooldown<=action.ancestral_call.duration)||(variable.min_talented_cd_remains>=action.ancestral_call.cooldown)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))\n## actions+=/invoke_external_buff,name=power_infusion,if=(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||(fight_remains%%120<=20)||(variable.min_talented_cd_remains>=120)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))\nactions+=/call_action_list,name=single,strict=1,if=active_enemies=1&!talent.surging_totem.enabled\nactions+=/call_action_list,name=single_totemic,strict=1,if=active_enemies=1&talent.surging_totem.enabled\nactions+=/call_action_list,name=aoe,strict=1,if=active_enemies>1&!toggle.funnel&!talent.surging_totem.enabled\nactions+=/call_action_list,name=aoe_totemic,strict=1,if=active_enemies>1&!toggle.funnel&talent.surging_totem.enabled\nactions+=/call_action_list,name=funnel,strict=1,if=active_enemies>1&toggle.funnel\n\nactions.single+=/feral_spirit,if=talent.elemental_spirits.enabled\nactions.single+=/windstrike,if=talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>0&ti_lightning_bolt&!talent.elemental_spirits.enabled\nactions.single+=/primordial_wave,if=!dot.flame_shock.ticking&talent.molten_assault.enabled\nactions.single+=/lava_lash,if=talent.lashing_flames.enabled&debuff.lashing_flames.down\nactions.single+=/stormstrike,if=buff.maelstrom_weapon.stack<2&cooldown.ascendance.remains=0\nactions.single+=/feral_spirit\n# [Hekili] Avoid delaying Ascendance due to Thorim's Invocation\nactions.single+=/tempest,if=cast_time=0&talent.ascendance&cooldown.ascendance.remains<2*gcd&talent.thorims_invocation&!ti_lightning_bolt\nactions.single+=/lightning_bolt,if=cast_time=0&talent.ascendance&cooldown.ascendance.remains<2*gcd&talent.thorims_invocation&!ti_lightning_bolt\nactions.single+=/ascendance,if=dot.flame_shock.ticking&ti_lightning_bolt&active_enemies=1&buff.maelstrom_weapon.stack>=2\nactions.single+=/tempest,if=buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack||(buff.tempest.stack=buff.tempest.max_stack&(tempest_mael_count>30||buff.awakening_storms.stack=2)&buff.maelstrom_weapon.stack>=5)\nactions.single+=/elemental_blast,if=buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack&talent.elemental_spirits.enabled&feral_spirit.active>=6&(charges_fractional>=1.8||buff.ascendance.up)\nactions.single+=/windstrike,if=talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>0&ti_lightning_bolt&charges=max_charges\nactions.single+=/doom_winds,if=talent.elemental_spirits.enabled&talent.ascendance.enabled&buff.maelstrom_weapon.stack>=2\nactions.single+=/windstrike,if=talent.thorims_invocation.enabled&buff.maelstrom_weapon.up&ti_lightning_bolt\nactions.single+=/flame_shock,if=!ticking&talent.ashen_catalyst.enabled\nactions.single+=/lightning_bolt,if=buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack&buff.primordial_wave.up\nactions.single+=/tempest,if=(!talent.overflowing_maelstrom.enabled&buff.maelstrom_weapon.stack>=5)||(buff.maelstrom_weapon.stack>=10-2*talent.elemental_spirits.enabled)\nactions.single+=/primordial_wave,if=!talent.deeply_rooted_elements.enabled\nactions.single+=/elemental_blast,if=buff.maelstrom_weapon.stack>=8&feral_spirit.active>=4&(!buff.ascendance.up||charges_fractional>=1.8)\nactions.single+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=8+2*talent.legacy_of_the_frost_witch.enabled\nactions.single+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=5&!talent.legacy_of_the_frost_witch.enabled&(talent.deeply_rooted_elements.enabled||!talent.overflowing_maelstrom.enabled||!talent.witch_doctors_ancestry.enabled)\nactions.single+=/flame_shock,if=buff.voltaic_blaze.up&talent.elemental_spirits.enabled&!talent.witch_doctors_ancestry.enabled\nactions.single+=/lightning_bolt,if=buff.arc_discharge.up&talent.deeply_rooted_elements.enabled\nactions.single+=/lava_lash,if=buff.hot_hand.up||(buff.ashen_catalyst.stack=buff.ashen_catalyst.max_stack)\nactions.single+=/stormstrike,if=buff.doom_winds.up||(talent.stormblast.enabled&buff.stormsurge.up&charges=max_charges)\nactions.single+=/lava_lash,if=talent.lashing_flames.enabled&!buff.doom_winds.up\nactions.single+=/flame_shock,if=buff.voltaic_blaze.up&talent.elemental_spirits.enabled&!buff.doom_winds.up\nactions.single+=/crash_lightning,if=talent.unrelenting_storms.enabled&talent.elemental_spirits.enabled&!talent.deeply_rooted_elements.enabled\nactions.single+=/ice_strike,if=talent.elemental_assault.enabled&talent.swirling_maelstrom.enabled&talent.witch_doctors_ancestry.enabled\nactions.single+=/stormstrike\nactions.single+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=5&talent.ascendance.enabled&!talent.legacy_of_the_frost_witch.enabled\nactions.single+=/crash_lightning,if=talent.unrelenting_storms.enabled\nactions.single+=/flame_shock,if=buff.voltaic_blaze.up\nactions.single+=/sundering,if=!talent.elemental_spirits.enabled\nactions.single+=/frost_shock,if=buff.hailstorm.up&buff.ice_strike.up&talent.swirling_maelstrom.enabled&talent.ascendance.enabled\nactions.single+=/elemental_blast,if=buff.maelstrom_weapon.stack>=5&feral_spirit.active>=4&talent.deeply_rooted_elements.enabled&(charges_fractional>=1.8||(buff.molten_weapon.stack+buff.icy_edge.stack>=4))&!talent.flowing_spirits.enabled\nactions.single+=/crash_lightning,if=talent.alpha_wolf.enabled&feral_spirit.active&alpha_wolf_min_remains=0\nactions.single+=/flame_shock,if=!ticking&!talent.tempest.enabled\nactions.single+=/doom_winds,if=talent.elemental_spirits.enabled\nactions.single+=/lava_lash,if=talent.elemental_assault.enabled&talent.tempest.enabled&talent.molten_assault.enabled&talent.deeply_rooted_elements.enabled&dot.flame_shock.ticking\nactions.single+=/ice_strike,if=talent.elemental_assault.enabled&talent.swirling_maelstrom.enabled\nactions.single+=/lightning_bolt,if=buff.arc_discharge.up\nactions.single+=/crash_lightning,if=talent.unrelenting_storms.enabled\nactions.single+=/lava_lash,if=talent.elemental_assault.enabled&talent.tempest.enabled&talent.molten_assault.enabled&dot.flame_shock.ticking\nactions.single+=/frost_shock,if=buff.hailstorm.up&buff.ice_strike.up&talent.swirling_maelstrom.enabled&talent.tempest.enabled\nactions.single+=/flame_shock,if=!ticking\nactions.single+=/lava_lash,if=talent.lashing_flames.enabled\nactions.single+=/ice_strike,if=!buff.ice_strike.up\nactions.single+=/frost_shock,if=buff.hailstorm.up\nactions.single+=/crash_lightning,if=talent.converging_storms.enabled\nactions.single+=/lava_lash\nactions.single+=/ice_strike\nactions.single+=/windstrike\nactions.single+=/stormstrike\nactions.single+=/sundering\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\n\nactions.single_totemic+=/surging_totem\n# [Hekili] Avoid delaying Ascendance due to Thorim's Invocation\nactions.single_totemic+=/tempest,if=cast_time=0&talent.ascendance&cooldown.ascendance.remains<2*gcd&talent.thorims_invocation&!ti_lightning_bolt\nactions.single_totemic+=/lightning_bolt,if=cast_time=0&talent.ascendance&cooldown.ascendance.remains<2*gcd&talent.thorims_invocation&!ti_lightning_bolt\nactions.single_totemic+=/ascendance,if=ti_lightning_bolt&pet.surging_totem.remains>4&(buff.totemic_rebound.stack>=3||buff.maelstrom_weapon.up)\nactions.single_totemic+=/doom_winds,if=!talent.elemental_spirits.enabled&buff.legacy_of_the_frost_witch.up\nactions.single_totemic+=/sundering,if=buff.ascendance.up&pet.surging_totem.active&talent.earthsurge.enabled&buff.legacy_of_the_frost_witch.up&buff.totemic_rebound.stack>=5&buff.earthen_weapon.stack>=2\nactions.single_totemic+=/crash_lightning,if=talent.unrelenting_storms.enabled&talent.alpha_wolf.enabled&alpha_wolf_min_remains=0&buff.earthen_weapon.stack>=8\nactions.single_totemic+=/windstrike,if=talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>0&ti_lightning_bolt&!talent.elemental_spirits.enabled\nactions.single_totemic+=/sundering,if=buff.legacy_of_the_frost_witch.up&cooldown.ascendance.remains>=10&pet.surging_totem.active&buff.totemic_rebound.stack>=3&!buff.ascendance.up\nactions.single_totemic+=/primordial_wave,if=!dot.flame_shock.ticking&talent.molten_assault.enabled\nactions.single_totemic+=/feral_spirit\nactions.single_totemic+=/elemental_blast,if=buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack&talent.elemental_spirits.enabled&feral_spirit.active>=6&(charges_fractional>=1.8||buff.ascendance.up)\nactions.single_totemic+=/flame_shock,if=buff.voltaic_blaze.up&buff.whirling_earth.up\nactions.single_totemic+=/crash_lightning,if=talent.unrelenting_storms.enabled&talent.alpha_wolf.enabled&alpha_wolf_min_remains=0\nactions.single_totemic+=/flame_shock,if=!ticking&talent.lashing_flames.enabled\nactions.single_totemic+=/lava_lash,if=buff.hot_hand.up&!talent.legacy_of_the_frost_witch.enabled\nactions.single_totemic+=/elemental_blast,if=buff.maelstrom_weapon.stack>=5&charges=max_charges\nactions.single_totemic+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=8&buff.primordial_wave.up&(!buff.splintered_elements.up||fight_remains<=12)\nactions.single_totemic+=/elemental_blast,if=buff.maelstrom_weapon.stack>=8&(feral_spirit.active>=2||!talent.elemental_spirits.enabled)\nactions.single_totemic+=/lava_burst,if=!talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>=5\nactions.single_totemic+=/primordial_wave\nactions.single_totemic+=/elemental_blast,if=buff.maelstrom_weapon.stack>=5&(charges_fractional>=1.8||(buff.molten_weapon.stack+buff.icy_edge.stack>=4))&talent.ascendance.enabled&(feral_spirit.active>=4||!talent.elemental_spirits.enabled)\nactions.single_totemic+=/elemental_blast,if=talent.ascendance.enabled&(buff.maelstrom_weapon.stack>=10||(buff.maelstrom_weapon.stack>=5&buff.whirling_air.up&!buff.legacy_of_the_frost_witch.up))\nactions.single_totemic+=/lightning_bolt,if=talent.ascendance.enabled&(buff.maelstrom_weapon.stack>=10||(buff.maelstrom_weapon.stack>=5&buff.whirling_air.up&!buff.legacy_of_the_frost_witch.up))\nactions.single_totemic+=/lava_lash,if=buff.hot_hand.up&talent.molten_assault.enabled&pet.searing_totem.active\nactions.single_totemic+=/windstrike\nactions.single_totemic+=/stormstrike\nactions.single_totemic+=/lava_lash,if=talent.molten_assault.enabled\nactions.single_totemic+=/crash_lightning,if=talent.unrelenting_storms.enabled\nactions.single_totemic+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=5&talent.ascendance.enabled\nactions.single_totemic+=/ice_strike,if=!buff.ice_strike.up\nactions.single_totemic+=/frost_shock,if=buff.hailstorm.up&pet.searing_totem.active\nactions.single_totemic+=/lava_lash\nactions.single_totemic+=/elemental_blast,if=buff.maelstrom_weapon.stack>=5&feral_spirit.active>=4&talent.deeply_rooted_elements.enabled&(charges_fractional>=1.8||(buff.icy_edge.stack+buff.molten_weapon.stack>=4))\nactions.single_totemic+=/doom_winds,if=talent.elemental_spirits.enabled\nactions.single_totemic+=/flame_shock,if=!ticking&!talent.voltaic_blaze.enabled\nactions.single_totemic+=/frost_shock,if=buff.hailstorm.up\nactions.single_totemic+=/crash_lightning,if=talent.converging_storms.enabled\nactions.single_totemic+=/frost_shock\nactions.single_totemic+=/crash_lightning\nactions.single_totemic+=/fire_nova,if=active_dot.flame_shock\nactions.single_totemic+=/earth_elemental\nactions.single_totemic+=/flame_shock,if=!talent.voltaic_blaze.enabled\n\nactions.aoe+=/feral_spirit,if=talent.elemental_spirits.enabled||talent.alpha_wolf.enabled\n# [Hekili] Avoid delaying Ascendance due to Thorim's Invocation\nactions.aoe+=/tempest,if=cast_time=0&talent.ascendance&cooldown.ascendance.remains<2*gcd&talent.thorims_invocation&!ti_chain_lightning\nactions.aoe+=/chain_lightning,if=cast_time=0&talent.ascendance&cooldown.ascendance.remains<2*gcd&talent.thorims_invocation&!ti_chain_lightning\nactions.aoe+=/ascendance,if=dot.flame_shock.ticking&(cooldown.lava_lash.remains||active_dot.flame_shock>=active_enemies||active_dot.flame_shock=6)&ti_chain_lightning\nactions.aoe+=/tempest,cycle_targets=1,if=!buff.arc_discharge.up&((buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack&!talent.raging_maelstrom.enabled)||(buff.maelstrom_weapon.stack>=8))||(buff.maelstrom_weapon.stack>=5&(tempest_mael_count>30||buff.awakening_storms.stack=2))\nactions.aoe+=/windstrike,cycle_targets=1,if=talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>0&ti_chain_lightning\nactions.aoe+=/crash_lightning,if=talent.crashing_storms.enabled&((talent.unruly_winds.enabled&active_enemies>=10)||active_enemies>=15)\nactions.aoe+=/lightning_bolt,cycle_targets=1,if=(!talent.tempest.enabled||(tempest_mael_count<=10&buff.awakening_storms.stack<=1))&((active_dot.flame_shock>=active_enemies||active_dot.flame_shock=6)&buff.primordial_wave.up&buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack&(!buff.splintered_elements.up||fight_remains<=12||raid_event.adds.remains<=gcd))\nactions.aoe+=/flame_shock,if=buff.voltaic_blaze.up&buff.maelstrom_weapon.stack<=8\nactions.aoe+=/lava_lash,if=talent.molten_assault.enabled&(talent.primordial_wave.enabled||talent.fire_nova.enabled)&dot.flame_shock.ticking&(active_dot.flame_shock<active_enemies)&active_dot.flame_shock<6\nactions.aoe+=/primordial_wave,cycle_targets=1,if=!buff.primordial_wave.up\nactions.aoe+=/chain_lightning,cycle_targets=1,if=buff.arc_discharge.up&buff.maelstrom_weapon.stack>=5\nactions.aoe+=/elemental_blast,cycle_targets=1,if=(!talent.elemental_spirits.enabled||(talent.elemental_spirits.enabled&(charges=max_charges||feral_spirit.active>=2)))&buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack&(!talent.crashing_storms.enabled||active_enemies<=3)\nactions.aoe+=/chain_lightning,cycle_targets=1,if=(buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack&!talent.raging_maelstrom.enabled)||(buff.maelstrom_weapon.stack>=7)\nactions.aoe+=/feral_spirit\nactions.aoe+=/doom_winds,if=ti_chain_lightning&(buff.legacy_of_the_frost_witch.up||!talent.legacy_of_the_frost_witch.enabled)\nactions.aoe+=/crash_lightning,if=(buff.doom_winds.up&active_enemies>=4)||!buff.crash_lightning.up||(talent.alpha_wolf.enabled&feral_spirit.active&alpha_wolf_min_remains=0)\nactions.aoe+=/sundering,if=buff.doom_winds.up||talent.earthsurge.enabled\nactions.aoe+=/fire_nova,if=active_dot.flame_shock=6||(active_dot.flame_shock>=4&active_dot.flame_shock>=cycle_enemies)\nactions.aoe+=/stormstrike,if=talent.stormblast.enabled&talent.stormflurry.enabled\nactions.aoe+=/flame_shock,if=buff.voltaic_blaze.up\nactions.aoe+=/lava_lash,cycle_targets=1,if=talent.lashing_flames.enabled\nactions.aoe+=/lava_lash,if=talent.molten_assault.enabled&dot.flame_shock.ticking\nactions.aoe+=/ice_strike,if=talent.hailstorm.enabled&!buff.ice_strike.up\nactions.aoe+=/frost_shock,if=talent.hailstorm.enabled&buff.hailstorm.up\nactions.aoe+=/sundering\nactions.aoe+=/flame_shock,if=talent.molten_assault.enabled&!ticking\nactions.aoe+=/flame_shock,cycle_targets=1,if=refreshable&(talent.fire_nova.enabled||talent.primordial_wave.enabled)&(active_dot.flame_shock<active_enemies)&active_dot.flame_shock<6\nactions.aoe+=/fire_nova,if=active_dot.flame_shock>=3\nactions.aoe+=/stormstrike,if=buff.crash_lightning.up&(talent.deeply_rooted_elements.enabled||buff.converging_storms.stack=buff.converging_storms.max_stack)\nactions.aoe+=/crash_lightning,if=talent.crashing_storms.enabled&buff.cl_crash_lightning.up&active_enemies>=4\nactions.aoe+=/windstrike\nactions.aoe+=/stormstrike\nactions.aoe+=/ice_strike\nactions.aoe+=/lava_lash\nactions.aoe+=/crash_lightning\nactions.aoe+=/fire_nova,if=active_dot.flame_shock>=2\nactions.aoe+=/elemental_blast,cycle_targets=1,if=(!talent.elemental_spirits.enabled||(talent.elemental_spirits.enabled&(charges=max_charges||feral_spirit.active>=2)))&buff.maelstrom_weapon.stack>=5&(!talent.crashing_storms.enabled||active_enemies<=3)\nactions.aoe+=/chain_lightning,cycle_targets=1,if=buff.maelstrom_weapon.stack>=5\nactions.aoe+=/flame_shock,if=!ticking\nactions.aoe+=/frost_shock,if=!talent.hailstorm.enabled\n\nactions.aoe_totemic+=/surging_totem\n# [Hekili] Avoid delaying Ascendance due to Thorim's Invocation\nactions.aoe_totemic+=/chain_lightning,if=cast_time=0&talent.ascendance&cooldown.ascendance.remains<2*gcd&talent.thorims_invocation&!ti_chain_lightning\nactions.aoe_totemic+=/ascendance,if=ti_chain_lightning\nactions.aoe_totemic+=/sundering,if=buff.ascendance.up&pet.surging_totem.active&talent.earthsurge.enabled&(buff.legacy_of_the_frost_witch.up||!talent.legacy_of_the_frost_witch.enabled)\nactions.aoe_totemic+=/crash_lightning,if=talent.crashing_storms.enabled&(active_enemies>=15-5*talent.unruly_winds.enabled)\nactions.aoe_totemic+=/lightning_bolt,if=((active_dot.flame_shock>=active_enemies||active_dot.flame_shock=6)&buff.primordial_wave.up&buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack&(!buff.splintered_elements.up||fight_remains<=12||raid_event.adds.remains<=gcd))\nactions.aoe_totemic+=/doom_winds,if=!talent.elemental_spirits.enabled&(buff.legacy_of_the_frost_witch.up||!talent.legacy_of_the_frost_witch.enabled)\nactions.aoe_totemic+=/lava_lash,if=talent.molten_assault.enabled&(talent.primordial_wave.enabled||talent.fire_nova.enabled)&dot.flame_shock.ticking&active_dot.flame_shock<active_enemies&active_dot.flame_shock<6\nactions.aoe_totemic+=/primordial_wave,cycle_targets=1,if=!buff.primordial_wave.up\nactions.aoe_totemic+=/elemental_blast,if=(!talent.elemental_spirits.enabled||(talent.elemental_spirits.enabled&(charges=max_charges||feral_spirit.active>=2)))&buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack&(!talent.crashing_storms.enabled||active_enemies<=3)\nactions.aoe_totemic+=/chain_lightning,if=buff.maelstrom_weapon.stack>=10\nactions.aoe_totemic+=/feral_spirit\nactions.aoe_totemic+=/doom_winds,if=buff.legacy_of_the_frost_witch.up||!talent.legacy_of_the_frost_witch.enabled\nactions.aoe_totemic+=/crash_lightning,if=buff.doom_winds.up||!buff.crash_lightning.up||(talent.alpha_wolf.enabled&feral_spirit.active&alpha_wolf_min_remains=0)\nactions.aoe_totemic+=/sundering,if=buff.doom_winds.up||talent.earthsurge.enabled&(buff.legacy_of_the_frost_witch.up||!talent.legacy_of_the_frost_witch.enabled)&pet.surging_totem.active\nactions.aoe_totemic+=/fire_nova,if=active_dot.flame_shock=6||(active_dot.flame_shock>=4&active_dot.flame_shock>=cycle_enemies)\nactions.aoe_totemic+=/flame_shock,if=buff.voltaic_blaze.up\nactions.aoe_totemic+=/lava_lash,cycle_targets=1,if=talent.lashing_flames.enabled\nactions.aoe_totemic+=/lava_lash,if=talent.molten_assault.enabled&dot.flame_shock.ticking\nactions.aoe_totemic+=/ice_strike,if=talent.hailstorm.enabled&!buff.ice_strike.up\nactions.aoe_totemic+=/frost_shock,if=talent.hailstorm.enabled&buff.hailstorm.up\nactions.aoe_totemic+=/sundering,if=(buff.legacy_of_the_frost_witch.up||!talent.legacy_of_the_frost_witch.enabled)&pet.surging_totem.active\nactions.aoe_totemic+=/flame_shock,if=talent.molten_assault.enabled&!ticking\nactions.aoe_totemic+=/flame_shock,cycle_targets=1,if=refreshable&(talent.fire_nova.enabled||talent.primordial_wave.enabled)&(active_dot.flame_shock<active_enemies)&active_dot.flame_shock<6\nactions.aoe_totemic+=/fire_nova,if=active_dot.flame_shock>=3\nactions.aoe_totemic+=/stormstrike,if=buff.crash_lightning.up&(talent.deeply_rooted_elements.enabled||buff.converging_storms.stack=buff.converging_storms.max_stack)\nactions.aoe_totemic+=/crash_lightning,if=talent.crashing_storms.enabled&buff.cl_crash_lightning.up&active_enemies>=4\nactions.aoe_totemic+=/windstrike\nactions.aoe_totemic+=/stormstrike\nactions.aoe_totemic+=/ice_strike\nactions.aoe_totemic+=/lava_lash\nactions.aoe_totemic+=/crash_lightning\nactions.aoe_totemic+=/fire_nova,if=active_dot.flame_shock>=2\nactions.aoe_totemic+=/elemental_blast,cycle_targets=1,if=(!talent.elemental_spirits.enabled||(talent.elemental_spirits.enabled&(charges=max_charges||feral_spirit.active>=2)))&buff.maelstrom_weapon.stack>=5&(!talent.crashing_storms.enabled||active_enemies<=3)\nactions.aoe_totemic+=/chain_lightning,cycle_targets=1,if=buff.maelstrom_weapon.stack>=5\nactions.aoe_totemic+=/flame_shock,if=!ticking\n\nactions.funnel+=/feral_spirit,if=talent.elemental_spirits.enabled\nactions.funnel+=/surging_totem\nactions.funnel+=/ascendance\nactions.funnel+=/windstrike,if=(talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>0)||buff.converging_storms.stack=buff.converging_storms.max_stack\nactions.funnel+=/tempest,if=buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack||(buff.maelstrom_weapon.stack>=5&(tempest_mael_count>30||buff.awakening_storms.stack=2))\nactions.funnel+=/lightning_bolt,if=(active_dot.flame_shock>=active_enemies||active_dot.flame_shock=6)&buff.primordial_wave.up&buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack&(!buff.splintered_elements.up||fight_remains<=12||raid_event.adds.remains<=gcd)\nactions.funnel+=/elemental_blast,if=buff.maelstrom_weapon.stack>=5&talent.elemental_spirits.enabled&feral_spirit.active>=4\nactions.funnel+=/lightning_bolt,if=talent.supercharge.enabled&buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack&(variable.expected_lb_funnel>variable.expected_cl_funnel)\nactions.funnel+=/chain_lightning,if=(talent.supercharge.enabled&buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack)||buff.arc_discharge.up&buff.maelstrom_weapon.stack>=5\nactions.funnel+=/lava_lash,if=(talent.molten_assault.enabled&dot.flame_shock.ticking&(active_dot.flame_shock<active_enemies)&active_dot.flame_shock<6)||(talent.ashen_catalyst.enabled&buff.ashen_catalyst.stack=buff.ashen_catalyst.max_stack)\nactions.funnel+=/primordial_wave,cycle_targets=1,if=!buff.primordial_wave.up\nactions.funnel+=/elemental_blast,if=(!talent.elemental_spirits.enabled||(talent.elemental_spirits.enabled&(charges=max_charges||buff.feral_spirit.up)))&buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack\nactions.funnel+=/feral_spirit\nactions.funnel+=/doom_winds\nactions.funnel+=/stormstrike,if=buff.converging_storms.stack=buff.converging_storms.max_stack\nactions.funnel+=/lava_burst,if=(buff.molten_weapon.stack>buff.crackling_surge.stack)&buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack\nactions.funnel+=/lightning_bolt,if=buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack&(variable.expected_lb_funnel>variable.expected_cl_funnel)\nactions.funnel+=/chain_lightning,if=buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack\nactions.funnel+=/crash_lightning,if=buff.doom_winds.up||!buff.crash_lightning.up||(talent.alpha_wolf.enabled&feral_spirit.active&alpha_wolf_min_remains=0)||(talent.converging_storms.enabled&buff.converging_storms.stack<buff.converging_storms.max_stack)\nactions.funnel+=/sundering,if=buff.doom_winds.up||talent.earthsurge.enabled\nactions.funnel+=/fire_nova,if=active_dot.flame_shock=6||(active_dot.flame_shock>=4&active_dot.flame_shock>=active_enemies)\nactions.funnel+=/ice_strike,if=talent.hailstorm.enabled&!buff.ice_strike.up\nactions.funnel+=/frost_shock,if=talent.hailstorm.enabled&buff.hailstorm.up\nactions.funnel+=/sundering\nactions.funnel+=/flame_shock,if=talent.molten_assault.enabled&!ticking\nactions.funnel+=/flame_shock,cycle_targets=1,if=refreshable&(talent.fire_nova.enabled||talent.primordial_wave.enabled)&(active_dot.flame_shock<active_enemies)&active_dot.flame_shock<6\nactions.funnel+=/fire_nova,if=active_dot.flame_shock>=3\nactions.funnel+=/stormstrike,if=buff.crash_lightning.up&talent.deeply_rooted_elements.enabled\nactions.funnel+=/crash_lightning,if=talent.crashing_storms.enabled&buff.cl_crash_lightning.up&active_enemies>=4\nactions.funnel+=/windstrike\nactions.funnel+=/stormstrike\nactions.funnel+=/ice_strike\nactions.funnel+=/lava_lash\nactions.funnel+=/crash_lightning\nactions.funnel+=/fire_nova,if=active_dot.flame_shock>=2\nactions.funnel+=/elemental_blast,if=(!talent.elemental_spirits.enabled||(talent.elemental_spirits.enabled&(charges=max_charges||buff.feral_spirit.up)))&buff.maelstrom_weapon.stack>=5\nactions.funnel+=/lava_burst,if=(buff.molten_weapon.stack>buff.crackling_surge.stack)&buff.maelstrom_weapon.stack>=5\nactions.funnel+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=5&(variable.expected_lb_funnel>variable.expected_cl_funnel)\nactions.funnel+=/chain_lightning,if=buff.maelstrom_weapon.stack>=5\nactions.funnel+=/flame_shock,if=!ticking\nactions.funnel+=/frost_shock,if=!talent.hailstorm.enabled",
|
|
["author"] = "SimC",
|
|
},
|
|
["Guardian"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241011,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-10-11: Fix Ironfur tanking check\n\n2024-09-21: Revert/fix\n\n2024-09-15: Bear Form only if no form is active\n\n2024-08-24, 08-25: SimC update\n\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["mitigation"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & ! variable.if_build & incoming_damage_5s > ironfur_damage_threshold & buff.ironfur.remains < 3 * haste & buff.ironfur.stack < 5",
|
|
["action"] = "ironfur",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "health.pct < 65",
|
|
["action"] = "regrowth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "health.pct < 65",
|
|
["action"] = "renewal",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & health.pct < 65",
|
|
["action"] = "frenzied_regeneration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & health.pct < 75 & incoming_damage_5s > 0.1 * health.max",
|
|
["action"] = "barkskin",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.survival_instincts.down & buff.barkskin.down & health.pct < 60 & incoming_damage_5s > 0.25 * health.max",
|
|
["action"] = "survival_instincts",
|
|
},
|
|
},
|
|
["bear"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ravage.up & active_enemies > 1",
|
|
["action"] = "maul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.heart_of_the_wild.enabled & ! talent.rip.enabled ) || talent.heart_of_the_wild.enabled & buff.feline_potential_counter.stack = 6 & active_enemies < 3",
|
|
["action"] = "heart_of_the_wild",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "moonfire",
|
|
["criteria"] = "buff.bear_form.up & ( ( ( ! ticking & target.time_to_die > 12 ) || ( refreshable & target.time_to_die > 12 ) ) & active_enemies < 7 & talent.fury_of_nature.enabled ) || ( ( ( ! ticking & target.time_to_die > 12 ) || ( refreshable & target.time_to_die > 12 ) ) & active_enemies < 4 & ! talent.fury_of_nature.enabled )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable || ( dot.thrash_bear.stack < 5 & talent.flashing_claws.rank = 2 || dot.thrash_bear.stack < 4 & talent.flashing_claws.rank = 1 || dot.thrash_bear.stack < 3 & ! talent.flashing_claws.enabled )",
|
|
["action"] = "thrash_bear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & cooldown.rage_of_the_sleeper.remains > 8",
|
|
["action"] = "bristling_fur",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bear_form.up",
|
|
["action"] = "barkskin",
|
|
},
|
|
{
|
|
["action"] = "lunar_beam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.wildpower_surge.enabled & buff.cat_form.up & buff.feline_potential.up ) || ! talent.wildpower_surge.enabled",
|
|
["action"] = "convoke_the_spirits",
|
|
},
|
|
{
|
|
["action"] = "berserk",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "incarnation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ( buff.incarnation_guardian_of_ursoc.down & cooldown.incarnation_guardian_of_ursoc.remains > 60 ) || buff.berserk_bear.down ) & rage > 40 & ( ! talent.convoke_the_spirits.enabled ) || ( buff.incarnation_guardian_of_ursoc.up || buff.berserk_bear.up ) & rage > 40 & ( ! talent.convoke_the_spirits.enabled ) || ( talent.convoke_the_spirits.enabled ) & rage > 40 )",
|
|
["action"] = "rage_of_the_sleeper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.berserk_bear.up || buff.incarnation_guardian_of_ursoc.up )",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ravage.up & active_enemies < 2",
|
|
["action"] = "maul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.tooth_and_claw.stack > 1 || buff.tooth_and_claw.remains < 1 + gcd.max ) & variable.if_build = 1 & active_enemies > 1",
|
|
["action"] = "raze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 5 & talent.lunar_calling.enabled",
|
|
["action"] = "thrash_bear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ironfur",
|
|
["criteria"] = "! debuff.tooth_and_claw.up & ! buff.ironfur.up & rage > 50 & tanking & variable.if_build = 0 & ! buff.rage_of_the_sleeper.up || rage > 90 & variable.if_build = 0 || ! debuff.tooth_and_claw.up & ! buff.ironfur.up & rage > 50 & tanking & variable.if_build = 0 & ! buff.rage_of_the_sleeper.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.ravage.up & ( ( rage > 40 & variable.if_build = 1 & cooldown.rage_of_the_sleeper.remains > 3 & talent.rage_of_the_sleeper.enabled || ( buff.incarnation.up || buff.berserk_bear.up ) & rage > 20 & variable.if_build = 1 & cooldown.rage_of_the_sleeper.remains > 3 & talent.rage_of_the_sleeper.enabled || rage > 90 & variable.if_build = 1 & ! talent.fount_of_strength.enabled || rage > 110 & variable.if_build = 1 & talent.fount_of_strength.enabled || ( buff.incarnation.up || buff.berserk_bear.up ) & rage > 20 & variable.if_build = 1 & buff.rage_of_the_sleeper.up & talent.rage_of_the_sleeper.enabled ) )",
|
|
["action"] = "ironfur",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.ravage.up & ( ( rage > 40 & variable.if_build = 1 & ! talent.rage_of_the_sleeper.enabled || ( buff.incarnation.up || buff.berserk_bear.up ) & rage > 20 & variable.if_build = 1 & ! talent.rage_of_the_sleeper.enabled || ( buff.incarnation.up || buff.berserk_bear.up ) & rage > 20 & variable.if_build = 1 & ! talent.rage_of_the_sleeper.enabled ) )",
|
|
["action"] = "ironfur",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.cat_form.up & buff.feline_potential.up & active_enemies < 3 & ( buff.incarnation.up || buff.berserk_bear.up ) & ! dot.rip.refreshable )",
|
|
["action"] = "ferocious_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.cat_form.up & buff.feline_potential.up & active_enemies < 3 & ( ! buff.incarnation.up || ! buff.berserk_bear.up ) ) || ( buff.cat_form.up & buff.feline_potential.up & active_enemies < 3 & ( buff.incarnation.up || buff.berserk_bear.up ) & refreshable )",
|
|
["action"] = "rip",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.if_build = 1 & buff.vicious_cycle_maul.stack = 3 & active_enemies > 1 & ! talent.ravage.enabled",
|
|
["action"] = "raze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.gore.up & active_enemies < 11 || buff.incarnation_guardian_of_ursoc.up & buff.feline_potential_counter.stack < 6 & talent.wildpower_surge.enabled",
|
|
["action"] = "mangle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.if_build = 0 & ( active_enemies > 1 || ( buff.tooth_and_claw.up ) & active_enemies > 1 || buff.vicious_cycle_maul.stack = 3 & active_enemies > 1 )",
|
|
["action"] = "raze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.rage_of_the_sleeper.remains <= 52 & buff.feline_potential_counter.stack = 6 & ! buff.cat_form.up & ! dot.rake.refreshable & active_enemies < 3 & talent.fluid_form.enabled",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.rage_of_the_sleeper.remains <= 52 & buff.feline_potential_counter.stack = 6 & ! buff.cat_form.up & active_enemies < 3 & talent.fluid_form.enabled",
|
|
["action"] = "rake",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.cat_form.up & talent.fluid_form.enabled",
|
|
["action"] = "mangle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.if_build = 1 & ( ( ( buff.tooth_and_claw.stack > 1 || buff.tooth_and_claw.remains < 1 + gcd.max ) & active_enemies <= 5 & ! talent.raze.enabled ) || ( ( buff.tooth_and_claw.stack > 1 || buff.tooth_and_claw.remains < 1 + gcd.max ) & active_enemies = 1 & talent.raze.enabled ) || ( ( buff.tooth_and_claw.stack > 1 || buff.tooth_and_claw.remains < 1 + gcd.max ) & active_enemies <= 5 & ! talent.raze.enabled ) )",
|
|
["action"] = "maul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.if_build = 0 & ( ( buff.tooth_and_claw.up & active_enemies <= 5 & ! talent.raze.enabled ) || ( buff.tooth_and_claw.up & active_enemies = 1 & talent.raze.enabled ) )",
|
|
["action"] = "maul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_enemies <= 5 & ! talent.raze.enabled & variable.if_build = 0 ) || ( active_enemies = 1 & talent.raze.enabled & variable.if_build = 0 ) || buff.vicious_cycle_maul.stack = 3 & active_enemies <= 5 & ! talent.raze.enabled",
|
|
["action"] = "maul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 5",
|
|
["action"] = "thrash_bear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.incarnation.up & active_enemies <= 4 ) || ( buff.incarnation.up & talent.soul_of_the_forest.enabled & active_enemies <= 5 ) || ( ( rage < 88 ) & active_enemies < 11 ) || ( ( rage < 83 ) & active_enemies < 11 & talent.soul_of_the_forest.enabled )",
|
|
["action"] = "mangle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "thrash_bear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "pulverize",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "thrash_bear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.galactic_guardian.up & buff.bear_form.up & talent.boundless_moonlight.enabled",
|
|
["action"] = "moonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.rage_of_the_sleeper.remains <= 52 & rage < 40 & active_enemies < 3 & ! talent.lunar_insight.enabled & talent.fluid_form.enabled & energy > 70 & refreshable & variable.ripweaving = 1",
|
|
["action"] = "rake",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.rage_of_the_sleeper.remains <= 52 & rage < 40 & active_enemies < 3 & ! talent.lunar_insight.enabled & talent.fluid_form.enabled & energy > 70 & ! buff.rage_of_the_sleeper.up & variable.ripweaving = 1",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.cat_form.up & ! dot.rip.ticking & active_enemies < 3 & variable.ripweaving = 1",
|
|
["action"] = "rip",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rip.ticking & combo_points > 4 & active_enemies < 3 & variable.ripweaving = 1",
|
|
["action"] = "ferocious_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.starsurge.enabled & rage < 20",
|
|
["action"] = "starsurge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.lunar_insight.enabled & active_enemies > 4 ) || ! talent.lunar_insight.enabled || talent.lunar_insight.enabled & active_enemies < 2",
|
|
["action"] = "swipe_bear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.lunar_insight.enabled & active_enemies > 1 ) & buff.bear_form.up",
|
|
["action"] = "moonfire",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "skull_bash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soothe",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.berserk_bear.up || buff.incarnation_guardian_of_ursoc.up )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "mitigation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "bear",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "mark_of_the_wild",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "if_build",
|
|
["criteria"] = "talent.thorns_of_iron.enabled & talent.reinforced_fur.enabled",
|
|
["value_else"] = "0",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "ripweaving",
|
|
["criteria"] = "talent.primal_fury.enabled & talent.fluid_form.enabled & talent.wildpower_surge.enabled",
|
|
["value_else"] = "0",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.heart_of_the_wild.enabled & ! talent.rip.enabled",
|
|
["action"] = "heart_of_the_wild",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time = 0 || ! talent.fluid_form.enabled",
|
|
["action"] = "bear_form",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241011,
|
|
["warnings"] = "Imported 4 action lists.\n",
|
|
["profile"] = "actions.precombat+=/mark_of_the_wild\nactions.precombat+=/variable,name=if_build,value=1,value_else=0,if=talent.thorns_of_iron.enabled&talent.reinforced_fur.enabled\nactions.precombat+=/variable,name=ripweaving,value=1,value_else=0,if=talent.primal_fury.enabled&talent.fluid_form.enabled&talent.wildpower_surge.enabled\nactions.precombat+=/heart_of_the_wild,if=talent.heart_of_the_wild.enabled&!talent.rip.enabled\nactions.precombat+=/bear_form,if=time=0||!talent.fluid_form.enabled\n\nactions+=/skull_bash\nactions+=/soothe\nactions+=/use_item,slot=trinket1\nactions+=/use_item,slot=trinket2\nactions+=/potion,if=(buff.berserk_bear.up||buff.incarnation_guardian_of_ursoc.up)\nactions+=/call_action_list,name=mitigation\nactions+=/run_action_list,name=bear\n\nactions.bear+=/maul,if=buff.ravage.up&active_enemies>1\nactions.bear+=/heart_of_the_wild,if=(talent.heart_of_the_wild.enabled&!talent.rip.enabled)||talent.heart_of_the_wild.enabled&buff.feline_potential_counter.stack=6&active_enemies<3\nactions.bear+=/moonfire,cycle_targets=1,if=buff.bear_form.up&(((!ticking&target.time_to_die>12)||(refreshable&target.time_to_die>12))&active_enemies<7&talent.fury_of_nature.enabled)||(((!ticking&target.time_to_die>12)||(refreshable&target.time_to_die>12))&active_enemies<4&!talent.fury_of_nature.enabled)\nactions.bear+=/thrash_bear,if=refreshable||(dot.thrash_bear.stack<5&talent.flashing_claws.rank=2||dot.thrash_bear.stack<4&talent.flashing_claws.rank=1||dot.thrash_bear.stack<3&!talent.flashing_claws.enabled)\nactions.bear+=/bristling_fur,if=tanking&cooldown.rage_of_the_sleeper.remains>8\nactions.bear+=/barkskin,if=buff.bear_form.up\nactions.bear+=/lunar_beam\nactions.bear+=/convoke_the_spirits,if=(talent.wildpower_surge.enabled&buff.cat_form.up&buff.feline_potential.up)||!talent.wildpower_surge.enabled\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.berserk_bear.down)&rage>40&(!talent.convoke_the_spirits.enabled)||(buff.incarnation_guardian_of_ursoc.up||buff.berserk_bear.up)&rage>40&(!talent.convoke_the_spirits.enabled)||(talent.convoke_the_spirits.enabled)&rage>40)\nactions.bear+=/berserking,if=(buff.berserk_bear.up||buff.incarnation_guardian_of_ursoc.up)\nactions.bear+=/maul,if=buff.ravage.up&active_enemies<2\nactions.bear+=/raze,if=(buff.tooth_and_claw.stack>1||buff.tooth_and_claw.remains<1+gcd)&variable.if_build=1&active_enemies>1\nactions.bear+=/thrash_bear,if=active_enemies>=5&talent.lunar_calling.enabled\nactions.bear+=/ironfur,cycle_targets=1,if=!debuff.tooth_and_claw.up&!buff.ironfur.up&rage>50&tanking&variable.if_build=0&!buff.rage_of_the_sleeper.up||rage>90&variable.if_build=0||!debuff.tooth_and_claw.up&!buff.ironfur.up&rage>50&tanking&variable.if_build=0&!buff.rage_of_the_sleeper.up\nactions.bear+=/ironfur,if=!buff.ravage.up&((rage>40&variable.if_build=1&cooldown.rage_of_the_sleeper.remains>3&talent.rage_of_the_sleeper.enabled||(buff.incarnation.up||buff.berserk_bear.up)&rage>20&variable.if_build=1&cooldown.rage_of_the_sleeper.remains>3&talent.rage_of_the_sleeper.enabled||rage>90&variable.if_build=1&!talent.fount_of_strength.enabled||rage>110&variable.if_build=1&talent.fount_of_strength.enabled||(buff.incarnation.up||buff.berserk_bear.up)&rage>20&variable.if_build=1&buff.rage_of_the_sleeper.up&talent.rage_of_the_sleeper.enabled))\nactions.bear+=/ironfur,if=!buff.ravage.up&((rage>40&variable.if_build=1&!talent.rage_of_the_sleeper.enabled||(buff.incarnation.up||buff.berserk_bear.up)&rage>20&variable.if_build=1&!talent.rage_of_the_sleeper.enabled||(buff.incarnation.up||buff.berserk_bear.up)&rage>20&variable.if_build=1&!talent.rage_of_the_sleeper.enabled))\nactions.bear+=/ferocious_bite,if=(buff.cat_form.up&buff.feline_potential.up&active_enemies<3&(buff.incarnation.up||buff.berserk_bear.up)&!dot.rip.refreshable)\nactions.bear+=/rip,if=(buff.cat_form.up&buff.feline_potential.up&active_enemies<3&(!buff.incarnation.up||!buff.berserk_bear.up))||(buff.cat_form.up&buff.feline_potential.up&active_enemies<3&(buff.incarnation.up||buff.berserk_bear.up)&refreshable)\nactions.bear+=/raze,if=variable.if_build=1&buff.vicious_cycle_maul.stack=3&active_enemies>1&!talent.ravage.enabled\nactions.bear+=/mangle,if=buff.gore.up&active_enemies<11||buff.incarnation_guardian_of_ursoc.up&buff.feline_potential_counter.stack<6&talent.wildpower_surge.enabled\nactions.bear+=/raze,if=variable.if_build=0&(active_enemies>1||(buff.tooth_and_claw.up)&active_enemies>1||buff.vicious_cycle_maul.stack=3&active_enemies>1)\nactions.bear+=/shred,if=cooldown.rage_of_the_sleeper.remains<=52&buff.feline_potential_counter.stack=6&!buff.cat_form.up&!dot.rake.refreshable&active_enemies<3&talent.fluid_form.enabled\nactions.bear+=/rake,if=cooldown.rage_of_the_sleeper.remains<=52&buff.feline_potential_counter.stack=6&!buff.cat_form.up&active_enemies<3&talent.fluid_form.enabled\nactions.bear+=/mangle,if=buff.cat_form.up&talent.fluid_form.enabled\nactions.bear+=/maul,if=variable.if_build=1&(((buff.tooth_and_claw.stack>1||buff.tooth_and_claw.remains<1+gcd)&active_enemies<=5&!talent.raze.enabled)||((buff.tooth_and_claw.stack>1||buff.tooth_and_claw.remains<1+gcd)&active_enemies=1&talent.raze.enabled)||((buff.tooth_and_claw.stack>1||buff.tooth_and_claw.remains<1+gcd)&active_enemies<=5&!talent.raze.enabled))\nactions.bear+=/maul,if=variable.if_build=0&((buff.tooth_and_claw.up&active_enemies<=5&!talent.raze.enabled)||(buff.tooth_and_claw.up&active_enemies=1&talent.raze.enabled))\nactions.bear+=/maul,if=(active_enemies<=5&!talent.raze.enabled&variable.if_build=0)||(active_enemies=1&talent.raze.enabled&variable.if_build=0)||buff.vicious_cycle_maul.stack=3&active_enemies<=5&!talent.raze.enabled\nactions.bear+=/thrash_bear,if=active_enemies>=5\nactions.bear+=/mangle,if=(buff.incarnation.up&active_enemies<=4)||(buff.incarnation.up&talent.soul_of_the_forest.enabled&active_enemies<=5)||((rage<88)&active_enemies<11)||((rage<83)&active_enemies<11&talent.soul_of_the_forest.enabled)\nactions.bear+=/thrash_bear,if=active_enemies>1\nactions.bear+=/pulverize,cycle_targets=1\nactions.bear+=/thrash_bear\nactions.bear+=/moonfire,if=buff.galactic_guardian.up&buff.bear_form.up&talent.boundless_moonlight.enabled\nactions.bear+=/rake,if=cooldown.rage_of_the_sleeper.remains<=52&rage<40&active_enemies<3&!talent.lunar_insight.enabled&talent.fluid_form.enabled&energy>70&refreshable&variable.ripweaving=1\nactions.bear+=/shred,if=cooldown.rage_of_the_sleeper.remains<=52&rage<40&active_enemies<3&!talent.lunar_insight.enabled&talent.fluid_form.enabled&energy>70&!buff.rage_of_the_sleeper.up&variable.ripweaving=1\nactions.bear+=/rip,if=buff.cat_form.up&!dot.rip.ticking&active_enemies<3&variable.ripweaving=1\nactions.bear+=/ferocious_bite,if=dot.rip.ticking&combo_points>4&active_enemies<3&variable.ripweaving=1\nactions.bear+=/starsurge,if=talent.starsurge.enabled&rage<20\nactions.bear+=/swipe_bear,if=(talent.lunar_insight.enabled&active_enemies>4)||!talent.lunar_insight.enabled||talent.lunar_insight.enabled&active_enemies<2\nactions.bear+=/moonfire,if=(talent.lunar_insight.enabled&active_enemies>1)&buff.bear_form.up\n\nactions.mitigation=ironfur,if=tanking&!variable.if_build&incoming_damage_5s>ironfur_damage_threshold&buff.ironfur.remains<3*haste&buff.ironfur.stack<5\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",
|
|
["basedOn"] = "Guardian",
|
|
["spec"] = 104,
|
|
},
|
|
["Frost Mage"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241206,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-11-03, 11-17, 11-22, 12-06: SimC update\n\n2024-10-06, 10-21, 10-29: SimC update\n\n2024-09-24: Comet Storm\n\n2024-09-01, 09-08, 09-22: SimC update\n\n2024-08-22: SimC priority update\n\n2024-07-29: The War Within",
|
|
["lists"] = {
|
|
["cleave_ff"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.flurry",
|
|
["action"] = "comet_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.deaths_chill.enabled & buff.icy_veins.remains > 9 & ( buff.deaths_chill.stack < 6 || buff.deaths_chill.stack = 6 & ! action.frostfire_bolt.in_flight )",
|
|
["action"] = "frostfire_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable & prev_gcd.1.glacial_spike",
|
|
["action"] = "freeze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable & prev_gcd.1.glacial_spike & remaining_winters_chill = 0 & debuff.winters_chill.down & ! prev_off_gcd.freeze",
|
|
["action"] = "ice_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill = 0 & debuff.winters_chill.down & ( prev_gcd.1.glacial_spike || buff.icicles.stack >= 3 ) & ! prev_off_gcd.freeze",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.glacial_spike & ! prev_off_gcd.freeze",
|
|
["action"] = "flurry",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stacks = 5",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill",
|
|
["action"] = "ray_of_frost",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frostfire_empowerment.up & ! buff.excess_frost.up & ! buff.excess_fire.up",
|
|
["action"] = "frostfire_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.fingers_of_frost.up",
|
|
["action"] = "frozen_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.icy_veins.remains > 10 & cooldown.frozen_orb.remains > 10 & ( ! talent.comet_storm.enabled || cooldown.comet_storm.remains > 10 ) & ( ! talent.ray_of_frost.enabled || cooldown.ray_of_frost.remains > 10 ) & ( fight_remains + 10 > cooldown.icy_veins.remains )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.up & ! prev_gcd.1.glacial_spike || remaining_winters_chill & ! variable.boltspam",
|
|
["action"] = "ice_lance",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "frostfire_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "movement",
|
|
},
|
|
},
|
|
["aoe_ss"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.coldest_snap.enabled & ! cooldown.frozen_orb.ready & ( prev_gcd.1.comet_storm || prev_gcd.1.frozen_orb & cooldown.comet_storm.remains > 5 ) & ( ! talent.deaths_chill.enabled || buff.icy_veins.remains < 9 || buff.deaths_chill.stack >= 12 )",
|
|
["action"] = "cone_of_cold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill = 0 & prev_gcd.1.glacial_spike",
|
|
["action"] = "freeze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 5 & freezable & prev_gcd.1.glacial_spike & remaining_winters_chill = 0 & debuff.winters_chill.down || active_enemies >= 5 & action.cone_of_cold.time_since < 6 & time - action.cone_of_cold.last_used > 6 - gcd.max",
|
|
["action"] = "ice_nova",
|
|
},
|
|
{
|
|
["action"] = "frozen_orb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.deaths_chill.enabled & buff.icy_veins.remains > 9 & ( buff.deaths_chill.stack < 9 || buff.deaths_chill.stack = 9 & ! action.frostbolt.in_flight )",
|
|
["action"] = "frostbolt",
|
|
},
|
|
{
|
|
["action"] = "comet_storm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.splintering_ray.enabled & prev_gcd.1.flurry",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ice_caller.enabled || talent.freezing_rain.enabled || active_enemies >= 5",
|
|
["action"] = "blizzard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.icy_veins.remains > 10 & ( fight_remains + 10 > cooldown.icy_veins.remains )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stack = 5 & ( cooldown.flurry.up || remaining_winters_chill || active_enemies < 5 & freezable & cooldown.ice_nova.ready & ! buff.fingers_of_frost.up )",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.up & ! prev_gcd.1.glacial_spike || remaining_winters_chill",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill = 0",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["action"] = "frostbolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "movement",
|
|
},
|
|
},
|
|
["st_ff"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.flurry",
|
|
["action"] = "comet_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.boltspam & buff.icicles.stack < 5 & remaining_winters_chill = 0",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.boltspam & buff.icicles.stack < 5 & remaining_winters_chill = 0 & debuff.winters_chill.down & ( prev_gcd.1.frostfire_bolt || prev_gcd.1.glacial_spike )",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.boltspam & buff.excess_fire.up & ! buff.brain_freeze.up",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stack = 5",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill & ( ! variable.boltspam || buff.icy_veins.remains < 15 )",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.boltspam & buff.icy_veins.down || ! variable.boltspam & ! buff.fingers_of_frost.up",
|
|
["action"] = "frozen_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.icy_veins.down || ! variable.boltspam ) & cooldown.icy_veins.remains > 10 & cooldown.frozen_orb.remains > 10 & ( ! talent.comet_storm.enabled || cooldown.comet_storm.remains > 10 ) & ( ! talent.ray_of_frost.enabled || cooldown.ray_of_frost.remains > 10 ) & ( fight_remains + 10 > cooldown.icy_veins.remains )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.boltspam & ( buff.fingers_of_frost.up & ! prev_gcd.1.glacial_spike || remaining_winters_chill )",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["action"] = "frostfire_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "movement",
|
|
},
|
|
},
|
|
["aoe_ff"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.coldest_snap.enabled & prev_gcd.1.comet_storm",
|
|
["action"] = "cone_of_cold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.deaths_chill.enabled & buff.icy_veins.remains > 9 & ( buff.deaths_chill.stack < 9 || buff.deaths_chill.stack = 9 & ! action.frostfire_bolt.in_flight )",
|
|
["action"] = "frostfire_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable & ( prev_gcd.1.glacial_spike || prev_gcd.1.comet_storm & cooldown.cone_of_cold.remains & ! prev_gcd.2.cone_of_cold )",
|
|
["action"] = "freeze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable & ( prev_gcd.1.glacial_spike & remaining_winters_chill = 0 & debuff.winters_chill.down || prev_gcd.1.comet_storm & cooldown.cone_of_cold.remains & ! prev_gcd.2.cone_of_cold ) & ! prev_off_gcd.freeze",
|
|
["action"] = "ice_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! prev_gcd.1.cone_of_cold",
|
|
["action"] = "frozen_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.cone_of_cold.remains > 6 || cooldown.cone_of_cold.ready",
|
|
["action"] = "comet_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill = 0 & ( buff.excess_frost.up & cooldown.comet_storm.remains > 5 || prev_gcd.1.glacial_spike )",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ice_caller.enabled",
|
|
["action"] = "blizzard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.splintering_ray.enabled & remaining_winters_chill = 2",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.icy_veins.remains > 10 & ( fight_remains + 10 > cooldown.icy_veins.remains )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frostfire_empowerment.up & ! buff.excess_frost.up & ! buff.excess_fire.up",
|
|
["action"] = "frostfire_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_enemies <= 6 || ! talent.ice_caller.enabled ) & buff.icicles.stack = 5",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.up || remaining_winters_chill",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill = 0",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["action"] = "frostfire_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "movement",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "counterspell",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.frostfire_bolt.enabled & active_enemies >= 3",
|
|
["list_name"] = "aoe_ff",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.frostfire_bolt.enabled & active_enemies >= 3",
|
|
["list_name"] = "aoe_ss",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.frostfire_bolt.enabled & active_enemies = 2",
|
|
["list_name"] = "cleave_ff",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.frostfire_bolt.enabled & active_enemies = 2",
|
|
["list_name"] = "cleave_ss",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.frostfire_bolt.enabled",
|
|
["list_name"] = "st_ff",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.frostfire_bolt.enabled",
|
|
["list_name"] = "st_ss",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "arcane_intellect",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mirror_image",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.splinterstorm.enabled & talent.cold_front.enabled & talent.slick_ice.enabled & talent.deaths_chill.enabled & talent.frozen_touch.enabled || talent.frostfire_bolt.enabled & talent.deep_shatter.enabled & talent.slick_ice.enabled & talent.deaths_chill.enabled",
|
|
["var_name"] = "boltspam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "12 * ! variable.boltspam",
|
|
["var_name"] = "treacherous_transmitter_precombat_cast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 3",
|
|
["action"] = "blizzard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies <= 2",
|
|
["action"] = "frostbolt",
|
|
},
|
|
},
|
|
["cleave_ss"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.flurry & ( buff.icy_veins.down )",
|
|
["action"] = "comet_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable & prev_gcd.1.glacial_spike",
|
|
["action"] = "freeze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill = 0 & debuff.winters_chill.down & ( prev_gcd.1.frostbolt || prev_gcd.1.glacial_spike )",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.glacial_spike",
|
|
["action"] = "flurry",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable & ! prev_off_gcd.freeze & prev_gcd.1.glacial_spike & remaining_winters_chill = 0 & debuff.winters_chill.down",
|
|
["action"] = "ice_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.icy_veins.remains > 22 || buff.icy_veins.up )",
|
|
["action"] = "frozen_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.icy_veins.remains > 10 & ! cooldown.flurry.ready & ( buff.icy_veins.down || buff.icy_veins.remains > 10 ) & ( fight_remains + 10 > cooldown.icy_veins.remains )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stack = 5 & ( cooldown.flurry.ready || remaining_winters_chill || freezable & cooldown.ice_nova.ready & ! buff.fingers_of_frost.up )",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill & buff.icy_veins.down",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.deaths_chill.enabled & buff.icy_veins.remains > 9 & ( buff.deaths_chill.stack < ( 8 + 4 * talent.slick_ice.enabled ) || buff.deaths_chill.stack = ( 8 + 4 * talent.slick_ice.enabled ) & ! action.frostbolt.in_flight )",
|
|
["action"] = "frostbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.up & ! prev_gcd.1.glacial_spike || ! variable.boltspam & remaining_winters_chill",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["action"] = "frostbolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "movement",
|
|
},
|
|
},
|
|
["st_ss"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.flurry & buff.icy_veins.down",
|
|
["action"] = "comet_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill = 0 & debuff.winters_chill.down & ( prev_gcd.1.frostbolt || prev_gcd.1.glacial_spike )",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.icy_veins.remains > 22 || buff.icy_veins.up )",
|
|
["action"] = "frozen_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stack = 5 & ( cooldown.flurry.ready || remaining_winters_chill || cooldown.flurry.remains < action.glacial_spike.execute_time & cooldown.flurry.remains > 0 )",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.boltspam & remaining_winters_chill & buff.icy_veins.down",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.boltspam & remaining_winters_chill = 1",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.icy_veins.remains > 10 & ! cooldown.flurry.ready & ( variable.boltspam || buff.icy_veins.down || buff.icy_veins.remains > 10 ) & ( fight_remains + 10 > cooldown.icy_veins.remains )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.boltspam & buff.icy_veins.remains > 9 & buff.deaths_chill.stack < 8",
|
|
["action"] = "frostbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.boltspam & ( remaining_winters_chill = 2 || remaining_winters_chill & cooldown.flurry.ready )",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.boltspam & ( buff.fingers_of_frost.up & ! prev_gcd.1.glacial_spike || remaining_winters_chill )",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["action"] = "frostbolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "movement",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 32 + 20 * equipped.spymasters_web || prev_off_gcd.icy_veins || ( ! variable.boltspam || equipped.spymasters_web ) & ( cooldown.icy_veins.remains < 12 || cooldown.icy_veins.remains < 22 & cooldown.shifting_power.remains < 10 )",
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 20 || buff.icy_veins.remains < 19 & ( fight_remains < 105 || buff.spymasters_report.stack >= 32 ) & ( buff.icy_veins.remains > 15 || cooldown.treacherous_transmitter.remains > 50 )",
|
|
["name"] = "spymasters_web",
|
|
["action"] = "spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icy_veins.remains > 15 || boss & fight_remains < 20",
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icy_veins.remains > 15 || boss & fight_remains < 20",
|
|
["name"] = "burst_of_knowledge",
|
|
["action"] = "burst_of_knowledge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 35 || buff.icy_veins.remains > 9 & ( fight_remains > 315 || cooldown.icy_veins.remains + 12 > fight_remains )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icy_veins.remains < gcd.max * 2",
|
|
["action"] = "icy_veins",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Manual change from time=0, which the sims use but the addon cannot",
|
|
["criteria"] = "time < 0.2 & active_enemies <= 2",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["action"] = "use_items",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blood_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icy_veins.remains > 9 & buff.icy_veins.remains < 15 || boss & fight_remains < 15",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["movement"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "movement.distance > 10",
|
|
["action"] = "any_blink",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ice_floes.down",
|
|
["action"] = "ice_floes",
|
|
},
|
|
{
|
|
["action"] = "ice_nova",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.coldest_snap.enabled & active_enemies >= 2",
|
|
["action"] = "cone_of_cold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "mana.pct > 30 & active_enemies >= 2",
|
|
["action"] = "arcane_explosion",
|
|
},
|
|
{
|
|
["action"] = "fire_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ice_lance",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241206,
|
|
["warnings"] = "The import for 'cleave_ff' required some automated changes.\nLine 2: Converted 'talent.deaths_chill' to 'talent.deaths_chill.enabled' (1x).\nLine 11: Converted 'talent.comet_storm' to 'talent.comet_storm.enabled' (1x).\nLine 11: Converted 'talent.ray_of_frost' to 'talent.ray_of_frost.enabled' (1x).\n\nThe import for 'aoe_ss' required some automated changes.\nLine 1: Converted 'talent.coldest_snap' to 'talent.coldest_snap.enabled' (1x).\nLine 1: Converted 'talent.deaths_chill' to 'talent.deaths_chill.enabled' (1x).\nLine 5: Converted 'talent.deaths_chill' to 'talent.deaths_chill.enabled' (1x).\nLine 7: Converted 'talent.splintering_ray' to 'talent.splintering_ray.enabled' (1x).\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\nThe import for 'st_ff' required some automated changes.\nLine 8: Converted 'talent.comet_storm' to 'talent.comet_storm.enabled' (1x).\nLine 8: Converted 'talent.ray_of_frost' to 'talent.ray_of_frost.enabled' (1x).\n\nThe import for 'aoe_ff' required some automated changes.\nLine 1: Converted 'talent.coldest_snap' to 'talent.coldest_snap.enabled' (1x).\nLine 2: Converted 'talent.deaths_chill' to 'talent.deaths_chill.enabled' (1x).\nLine 8: Converted 'talent.ice_caller' to 'talent.ice_caller.enabled' (1x).\nLine 9: Converted 'talent.splintering_ray' to 'talent.splintering_ray.enabled' (1x).\nLine 12: Converted 'talent.ice_caller' to 'talent.ice_caller.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'talent.frostfire_bolt' to 'talent.frostfire_bolt.enabled' (1x).\nLine 4: Converted 'talent.frostfire_bolt' to 'talent.frostfire_bolt.enabled' (1x).\nLine 5: Converted 'talent.frostfire_bolt' to 'talent.frostfire_bolt.enabled' (1x).\nLine 6: Converted 'talent.frostfire_bolt' to 'talent.frostfire_bolt.enabled' (1x).\nLine 7: Converted 'talent.frostfire_bolt' to 'talent.frostfire_bolt.enabled' (1x).\nLine 8: Converted 'talent.frostfire_bolt' to 'talent.frostfire_bolt.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 3: Converted 'talent.splinterstorm' to 'talent.splinterstorm.enabled' (1x).\nLine 3: Converted 'talent.cold_front' to 'talent.cold_front.enabled' (1x).\nLine 3: Converted 'talent.slick_ice' to 'talent.slick_ice.enabled' (1x).\nLine 3: Converted 'talent.deaths_chill' to 'talent.deaths_chill.enabled' (1x).\nLine 3: Converted 'talent.frozen_touch' to 'talent.frozen_touch.enabled' (1x).\nLine 3: Converted 'talent.frostfire_bolt' to 'talent.frostfire_bolt.enabled' (1x).\nLine 3: Converted 'talent.deep_shatter' to 'talent.deep_shatter.enabled' (1x).\nLine 3: Converted 'talent.slick_ice' to 'talent.slick_ice.enabled' (1x).\nLine 3: Converted 'talent.deaths_chill' to 'talent.deaths_chill.enabled' (1x).\n\nThe import for 'cds' required some automated changes.\nLine 2: Converted 'trinket.treacherous_transmitter.cooldown.remains' to 'cooldown.treacherous_transmitter.remains'.\n\nThe import for 'movement' required some automated changes.\nLine 4: Converted 'talent.coldest_snap' to 'talent.coldest_snap.enabled' (1x).\n\nThe import for 'cleave_ss' required some automated changes.\nLine 10: Converted 'talent.deaths_chill' to 'talent.deaths_chill.enabled' (1x).\nLine 10: Converted 'talent.slick_ice' to 'talent.slick_ice.enabled' (1x).\nLine 10: Converted 'talent.slick_ice' to 'talent.slick_ice.enabled' (1x).\n\nImported 10 action lists.\n",
|
|
["spec"] = 64,
|
|
["profile"] = "actions.precombat+=/arcane_intellect\nactions.precombat+=/mirror_image\nactions.precombat+=/variable,name=boltspam,value=talent.splinterstorm&talent.cold_front&talent.slick_ice&talent.deaths_chill&talent.frozen_touch||talent.frostfire_bolt&talent.deep_shatter&talent.slick_ice&talent.deaths_chill\nactions.precombat+=/variable,name=treacherous_transmitter_precombat_cast,value=12*!variable.boltspam\nactions.precombat+=/use_item,name=treacherous_transmitter\nactions.precombat+=/blizzard,if=active_enemies>=3\nactions.precombat+=/frostbolt,if=active_enemies<=2\n\nactions+=/counterspell\nactions+=/call_action_list,name=cds\nactions+=/run_action_list,name=aoe_ff,strict=1,if=talent.frostfire_bolt&active_enemies>=3\nactions+=/run_action_list,name=aoe_ss,strict=1,if=!talent.frostfire_bolt&active_enemies>=3\nactions+=/run_action_list,name=cleave_ff,strict=1,if=talent.frostfire_bolt&active_enemies=2\nactions+=/run_action_list,name=cleave_ss,strict=1,if=!talent.frostfire_bolt&active_enemies=2\nactions+=/run_action_list,name=st_ff,strict=1,if=talent.frostfire_bolt\nactions+=/run_action_list,name=st_ss,strict=1,if=!talent.frostfire_bolt\n\nactions.aoe_ff+=/cone_of_cold,if=talent.coldest_snap&prev_gcd.1.comet_storm\nactions.aoe_ff+=/frostfire_bolt,if=talent.deaths_chill&buff.icy_veins.remains>9&(buff.deaths_chill.stack<9||buff.deaths_chill.stack=9&!action.frostfire_bolt.in_flight)\nactions.aoe_ff+=/freeze,if=freezable&(prev_gcd.1.glacial_spike||prev_gcd.1.comet_storm&cooldown.cone_of_cold.remains&!prev_gcd.2.cone_of_cold)\nactions.aoe_ff+=/ice_nova,if=freezable&(prev_gcd.1.glacial_spike&remaining_winters_chill=0&debuff.winters_chill.down||prev_gcd.1.comet_storm&cooldown.cone_of_cold.remains&!prev_gcd.2.cone_of_cold)&!prev_off_gcd.freeze\nactions.aoe_ff+=/frozen_orb,if=!prev_gcd.1.cone_of_cold\nactions.aoe_ff+=/comet_storm,if=cooldown.cone_of_cold.remains>6||cooldown.cone_of_cold.ready\nactions.aoe_ff+=/flurry,if=remaining_winters_chill=0&(buff.excess_frost.up&cooldown.comet_storm.remains>5||prev_gcd.1.glacial_spike)\nactions.aoe_ff+=/blizzard,if=talent.ice_caller\nactions.aoe_ff+=/ray_of_frost,if=talent.splintering_ray&remaining_winters_chill=2\nactions.aoe_ff+=/shifting_power,if=cooldown.icy_veins.remains>10&(fight_remains+10>cooldown.icy_veins.remains)\nactions.aoe_ff+=/frostfire_bolt,if=buff.frostfire_empowerment.up&!buff.excess_frost.up&!buff.excess_fire.up\nactions.aoe_ff+=/glacial_spike,if=(active_enemies<=6||!talent.ice_caller)&buff.icicles.stack=5\nactions.aoe_ff+=/ice_lance,if=buff.fingers_of_frost.up||remaining_winters_chill\nactions.aoe_ff+=/flurry,if=remaining_winters_chill=0\nactions.aoe_ff+=/frostfire_bolt\nactions.aoe_ff+=/call_action_list,name=movement\n\nactions.aoe_ss+=/cone_of_cold,if=talent.coldest_snap&!cooldown.frozen_orb.ready&(prev_gcd.1.comet_storm||prev_gcd.1.frozen_orb&cooldown.comet_storm.remains>5)&(!talent.deaths_chill||buff.icy_veins.remains<9||buff.deaths_chill.stack>=12)\nactions.aoe_ss+=/freeze,if=freezable&prev_gcd.1.glacial_spikeactions.aoe_ss+=/flurry,if=remaining_winters_chill=0&prev_gcd.1.glacial_spike\nactions.aoe_ss+=/ice_nova,if=active_enemies<5&freezable&prev_gcd.1.glacial_spike&remaining_winters_chill=0&debuff.winters_chill.down||active_enemies>=5&action.cone_of_cold.time_since<6&time-action.cone_of_cold.last_used>6-gcd.max\nactions.aoe_ss+=/frozen_orb\nactions.aoe_ss+=/frostbolt,if=talent.deaths_chill&buff.icy_veins.remains>9&(buff.deaths_chill.stack<9||buff.deaths_chill.stack=9&!action.frostbolt.in_flight)\nactions.aoe_ss+=/comet_storm\nactions.aoe_ss+=/ray_of_frost,if=talent.splintering_ray&prev_gcd.1.flurry\nactions.aoe_ss+=/blizzard,if=talent.ice_caller||talent.freezing_rain||active_enemies>=5\nactions.aoe_ss+=/shifting_power,if=cooldown.icy_veins.remains>10&(fight_remains+10>cooldown.icy_veins.remains)\nactions.aoe_ss+=/glacial_spike,if=buff.icicles.stack=5&(cooldown.flurry.up||remaining_winters_chill||active_enemies<5&freezable&cooldown.ice_nova.ready&!buff.fingers_of_frost.up)\nactions.aoe_ss+=/ice_lance,if=buff.fingers_of_frost.up&!prev_gcd.1.glacial_spike||remaining_winters_chill\nactions.aoe_ss+=/flurry,if=remaining_winters_chill=0\nactions.aoe_ss+=/frostbolt\nactions.aoe_ss+=/call_action_list,name=movement\n\nactions.cds+=/use_item,name=treacherous_transmitter,if=boss&fight_remains<32+20*equipped.spymasters_web||prev_off_gcd.icy_veins||(!variable.boltspam||equipped.spymasters_web)&(cooldown.icy_veins.remains<12||cooldown.icy_veins.remains<22&cooldown.shifting_power.remains<10)\n## actions.cds+=/do_treacherous_transmitter_task,if=fight_remains<18||(buff.cryptic_instructions.remains<?buff.realigning_nexus_convergence_divergence.remains<?buff.errant_manaforge_emission.remains)<(action.shifting_power.execute_time+1*talent.ray_of_frost)\nactions.cds+=/use_item,name=spymasters_web,if=boss&fight_remains<20||buff.icy_veins.remains<19&(fight_remains<105||buff.spymasters_report.stack>=32)&(buff.icy_veins.remains>15||trinket.treacherous_transmitter.cooldown.remains>50)\nactions.cds+=/use_item,name=imperfect_ascendancy_serum,if=buff.icy_veins.remains>15||boss&fight_remains<20\nactions.cds+=/use_item,name=burst_of_knowledge,if=buff.icy_veins.remains>15||boss&fight_remains<20\nactions.cds+=/potion,if=boss&fight_remains<35||buff.icy_veins.remains>9&(fight_remains>315||cooldown.icy_veins.remains+12>fight_remains)\nactions.cds+=/icy_veins,if=buff.icy_veins.remains<gcd.max*2\n# Manual change from time=0, which the sims use but the addon cannot\nactions.cds+=/flurry,if=time<0.2&active_enemies<=2\nactions.cds+=/use_items\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,if=buff.icy_veins.remains>9&buff.icy_veins.remains<15||boss&fight_remains<15\nactions.cds+=/fireblood\nactions.cds+=/ancestral_call\n\nactions.cleave_ff+=/comet_storm,if=prev_gcd.1.flurry\nactions.cleave_ff+=/frostfire_bolt,if=talent.deaths_chill&buff.icy_veins.remains>9&(buff.deaths_chill.stack<6||buff.deaths_chill.stack=6&!action.frostfire_bolt.in_flight)\nactions.cleave_ff+=/freeze,if=freezable&prev_gcd.1.glacial_spike\nactions.cleave_ff+=/ice_nova,if=freezable&prev_gcd.1.glacial_spike&remaining_winters_chill=0&debuff.winters_chill.down&!prev_off_gcd.freeze\nactions.cleave_ff+=/flurry,if=remaining_winters_chill=0&debuff.winters_chill.down&(prev_gcd.1.glacial_spike||buff.icicles.stack>=3)&!prev_off_gcd.freeze\nactions.cleave_ff+=/flurry,cycle_targets=1,if=prev_gcd.1.glacial_spike&!prev_off_gcd.freeze\nactions.cleave_ff+=/glacial_spike,if=buff.icicles.stacks=5\nactions.cleave_ff+=/ray_of_frost,cycle_targets=1,if=remaining_winters_chill\nactions.cleave_ff+=/frostfire_bolt,if=buff.frostfire_empowerment.up&!buff.excess_frost.up&!buff.excess_fire.up\nactions.cleave_ff+=/frozen_orb,if=!buff.fingers_of_frost.up\nactions.cleave_ff+=/shifting_power,if=cooldown.icy_veins.remains>10&cooldown.frozen_orb.remains>10&(!talent.comet_storm||cooldown.comet_storm.remains>10)&(!talent.ray_of_frost||cooldown.ray_of_frost.remains>10)&(fight_remains+10>cooldown.icy_veins.remains)\nactions.cleave_ff+=/ice_lance,cycle_targets=1,if=buff.fingers_of_frost.up&!prev_gcd.1.glacial_spike||remaining_winters_chill&!variable.boltspam\nactions.cleave_ff+=/frostfire_bolt\nactions.cleave_ff+=/call_action_list,name=movement\n\nactions.cleave_ss+=/comet_storm,if=prev_gcd.1.flurry&(buff.icy_veins.down)\nactions.cleave_ss+=/freeze,if=freezable&prev_gcd.1.glacial_spike\nactions.cleave_ss+=/flurry,if=remaining_winters_chill=0&debuff.winters_chill.down&(prev_gcd.1.frostbolt||prev_gcd.1.glacial_spike)\nactions.cleave_ss+=/flurry,cycle_targets=1,if=prev_gcd.1.glacial_spike\nactions.cleave_ss+=/ice_nova,if=freezable&!prev_off_gcd.freeze&prev_gcd.1.glacial_spike&remaining_winters_chill=0&debuff.winters_chill.down\nactions.cleave_ss+=/frozen_orb,if=(cooldown.icy_veins.remains>22||buff.icy_veins.up)\nactions.cleave_ss+=/shifting_power,if=cooldown.icy_veins.remains>10&!cooldown.flurry.ready&(buff.icy_veins.down||buff.icy_veins.remains>10)&(fight_remains+10>cooldown.icy_veins.remains)\nactions.cleave_ss+=/glacial_spike,if=buff.icicles.stack=5&(cooldown.flurry.ready||remaining_winters_chill||freezable&cooldown.ice_nova.ready&!buff.fingers_of_frost.up)\nactions.cleave_ss+=/ray_of_frost,if=remaining_winters_chill&buff.icy_veins.down\nactions.cleave_ss+=/frostbolt,if=talent.deaths_chill&buff.icy_veins.remains>9&(buff.deaths_chill.stack<(8+4*talent.slick_ice)||buff.deaths_chill.stack=(8+4*talent.slick_ice)&!action.frostbolt.in_flight)\nactions.cleave_ss+=/ice_lance,if=buff.fingers_of_frost.up&!prev_gcd.1.glacial_spike||!variable.boltspam&remaining_winters_chill\nactions.cleave_ss+=/frostbolt\nactions.cleave_ss+=/call_action_list,name=movement\n\nactions.movement+=/any_blink,if=movement.distance>10\nactions.movement+=/ice_floes,if=buff.ice_floes.down\nactions.movement+=/ice_nova\nactions.movement+=/cone_of_cold,if=!talent.coldest_snap&active_enemies>=2\nactions.movement+=/arcane_explosion,if=mana.pct>30&active_enemies>=2\nactions.movement+=/fire_blast\nactions.movement+=/ice_lance\n\nactions.st_ff+=/comet_storm,if=prev_gcd.1.flurry\nactions.st_ff+=/flurry,if=variable.boltspam&buff.icicles.stack<5&remaining_winters_chill=0\nactions.st_ff+=/flurry,if=!variable.boltspam&buff.icicles.stack<5&remaining_winters_chill=0&debuff.winters_chill.down&(prev_gcd.1.frostfire_bolt||prev_gcd.1.glacial_spike)\nactions.st_ff+=/ice_lance,if=variable.boltspam&buff.excess_fire.up&!buff.brain_freeze.up\nactions.st_ff+=/glacial_spike,if=buff.icicles.stack=5\nactions.st_ff+=/ray_of_frost,if=remaining_winters_chill&(!variable.boltspam||buff.icy_veins.remains<15)\nactions.st_ff+=/frozen_orb,if=variable.boltspam&buff.icy_veins.down||!variable.boltspam&!buff.fingers_of_frost.up\nactions.st_ff+=/shifting_power,if=(buff.icy_veins.down||!variable.boltspam)&cooldown.icy_veins.remains>10&cooldown.frozen_orb.remains>10&(!talent.comet_storm||cooldown.comet_storm.remains>10)&(!talent.ray_of_frost||cooldown.ray_of_frost.remains>10)&(fight_remains+10>cooldown.icy_veins.remains)\nactions.st_ff+=/ice_lance,if=!variable.boltspam&(buff.fingers_of_frost.up&!prev_gcd.1.glacial_spike||remaining_winters_chill)\nactions.st_ff+=/frostfire_bolt\nactions.st_ff+=/call_action_list,name=movement\n\nactions.st_ss+=/comet_storm,if=prev_gcd.1.flurry&buff.icy_veins.down\nactions.st_ss+=/flurry,if=remaining_winters_chill=0&debuff.winters_chill.down&(prev_gcd.1.frostbolt||prev_gcd.1.glacial_spike)\nactions.st_ss+=/frozen_orb,if=(cooldown.icy_veins.remains>22||buff.icy_veins.up)\nactions.st_ss+=/glacial_spike,if=buff.icicles.stack=5&(cooldown.flurry.ready||remaining_winters_chill||cooldown.flurry.remains<action.glacial_spike.execute_time&cooldown.flurry.remains>0)\nactions.st_ss+=/ray_of_frost,if=variable.boltspam&remaining_winters_chill&buff.icy_veins.down\nactions.st_ss+=/ray_of_frost,if=!variable.boltspam&remaining_winters_chill=1\nactions.st_ss+=/shifting_power,if=cooldown.icy_veins.remains>10&!cooldown.flurry.ready&(variable.boltspam||buff.icy_veins.down||buff.icy_veins.remains>10)&(fight_remains+10>cooldown.icy_veins.remains)\nactions.st_ss+=/frostbolt,if=variable.boltspam&buff.icy_veins.remains>9&buff.deaths_chill.stack<8\nactions.st_ss+=/ice_lance,if=variable.boltspam&(remaining_winters_chill=2||remaining_winters_chill&cooldown.flurry.ready)\nactions.st_ss+=/ice_lance,if=!variable.boltspam&(buff.fingers_of_frost.up&!prev_gcd.1.glacial_spike||remaining_winters_chill)\nactions.st_ss+=/frostbolt\nactions.st_ss+=/call_action_list,name=movement",
|
|
},
|
|
["Fire"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241206,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-11-25, 12-06: SimC update\n\n2024-08-15, 09-09, 09-10, 09-15, 09-22, 09-28: SimC update\n\n2024-07-29: The War Within",
|
|
["lists"] = {
|
|
["combustion_timing"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["description"] = "Helper variable that contains the actual estimated time that the next Combustion will be ready.",
|
|
["use_while_casting"] = 1,
|
|
["value"] = "cooldown.combustion.remains_expected",
|
|
["var_name"] = "combustion_ready_time",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "variable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["description"] = "The cast time of the spell that will be precast into Combustion.",
|
|
["use_while_casting"] = 1,
|
|
["value"] = "action.fireball.cast_time * ( active_enemies < variable.combustion_flamestrike ) + action.flamestrike.cast_time * ( active_enemies >= variable.combustion_flamestrike ) - variable.combustion_cast_remains",
|
|
["var_name"] = "combustion_precast_time",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "variable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["use_off_gcd"] = 1,
|
|
["use_while_casting"] = 1,
|
|
["var_name"] = "time_to_combustion",
|
|
["value"] = "variable.combustion_ready_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["action"] = "variable",
|
|
["op"] = "max",
|
|
["criteria"] = "talent.firestarter.enabled & ! variable.firestarter_combustion",
|
|
["use_off_gcd"] = 1,
|
|
["var_name"] = "time_to_combustion",
|
|
["description"] = "Delay Combustion for after Firestarter unless variable.firestarter_combustion is set.",
|
|
["value"] = "firestarter.remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["action"] = "variable",
|
|
["op"] = "max",
|
|
["criteria"] = "talent.sun_kings_blessing.enabled & firestarter.active & buff.fury_of_the_sun_king.down",
|
|
["use_off_gcd"] = 1,
|
|
["var_name"] = "time_to_combustion",
|
|
["description"] = "Delay Combustion until SKB is ready during Firestarter",
|
|
["value"] = "( buff.sun_kings_blessing.max_stack - buff.sun_kings_blessing.stack ) * ( 3 * gcd.max )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["action"] = "variable",
|
|
["op"] = "max",
|
|
["criteria"] = "equipped.gladiators_badge & cooldown.gladiators_badge.remains - 20 < variable.time_to_combustion",
|
|
["use_off_gcd"] = 1,
|
|
["var_name"] = "time_to_combustion",
|
|
["description"] = "Delay Combustion for Gladiators Badge, unless it would be delayed longer than 20 seconds.",
|
|
["value"] = "cooldown.gladiators_badge.remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "max",
|
|
["action"] = "variable",
|
|
["var_name"] = "time_to_combustion",
|
|
["value"] = "buff.combustion.remains",
|
|
["use_while_casting"] = 1,
|
|
["description"] = "Delay Combustion until Combustion expires if it's up.",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["action"] = "variable",
|
|
["op"] = "max",
|
|
["criteria"] = "raid_event.adds.exists & raid_event.adds.count >= 3 & raid_event.adds.duration > 15",
|
|
["use_off_gcd"] = 1,
|
|
["var_name"] = "time_to_combustion",
|
|
["description"] = "Raid Events: Delay Combustion for add spawns of 3 or more adds that will last longer than 15 seconds. These values aren't necessarily optimal in all cases.",
|
|
["value"] = "raid_event.adds.in",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["description"] = "Raid Events: Always use Combustion with vulnerability raid events, override any delays listed above to make sure it gets used here.",
|
|
["op"] = "set",
|
|
["criteria"] = "raid_event.vulnerable.exists & variable.combustion_ready_time < raid_event.vulnerable.in",
|
|
["value"] = "raid_event.vulnerable.in * ! raid_event.vulnerable.up",
|
|
["var_name"] = "time_to_combustion",
|
|
["action"] = "variable",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["description"] = "Use the next Combustion on cooldown if it would not be expected to delay the scheduled one or the scheduled one would happen less than 20 seconds before the fight ends.",
|
|
["op"] = "set",
|
|
["criteria"] = "variable.combustion_ready_time + cooldown.combustion.duration * ( 1 - ( 0.4 + 0.2 * talent.firestarter.enabled ) * talent.kindling.enabled ) <= variable.time_to_combustion || variable.time_to_combustion > fight_remains - 20",
|
|
["value"] = "variable.combustion_ready_time",
|
|
["var_name"] = "time_to_combustion",
|
|
["action"] = "variable",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
},
|
|
["combustion_phase"] = {
|
|
{
|
|
["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 || boss & fight_remains < 20",
|
|
["list_name"] = "combustion_cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "active_talents",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "If Combustion is down, precast something before activating it.",
|
|
["criteria"] = "buff.combustion.down & buff.fury_of_the_sun_king.up & buff.fury_of_the_sun_king.remains > cast_time & buff.fury_of_the_sun_king.expiration_delay_remains = 0 & cooldown.combustion.remains < cast_time & active_enemies >= variable.skb_flamestrike",
|
|
["action"] = "flamestrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.down & buff.fury_of_the_sun_king.up & buff.fury_of_the_sun_king.remains > cast_time & ( buff.fury_of_the_sun_king.expiration_delay_remains = 0 || buff.flame_accelerant.up )",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.down & cooldown.combustion.remains < cast_time & active_enemies < 2 & ! improved_scorch.active & ! ( talent.sun_kings_blessing.enabled & talent.flame_accelerant.enabled )",
|
|
["action"] = "fireball",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.down & cooldown.combustion.remains < cast_time",
|
|
["action"] = "scorch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "If no precast was available, spend Frostfire Empowerment so that Fireball can be used as a precast.",
|
|
["criteria"] = "buff.combustion.down & buff.frostfire_empowerment.up",
|
|
["action"] = "fireball",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "hot_streak_spells_in_flight = 0 & buff.combustion.down & variable.time_to_combustion <= 0 & ( action.scorch.executing & action.scorch.execute_remains < variable.combustion_cast_remains || action.fireball.executing & action.fireball.execute_remains < variable.combustion_cast_remains || action.pyroblast.executing & action.pyroblast.execute_remains < variable.combustion_cast_remains || action.flamestrike.executing & action.flamestrike.execute_remains < variable.combustion_cast_remains || ! talent.isothermic_core.enabled & action.meteor.in_flight & action.meteor.in_flight_remains < variable.combustion_cast_remains || talent.isothermic_core.enabled & action.meteor.in_flight )",
|
|
["use_off_gcd"] = 1,
|
|
["description"] = "Combustion should be used when the precast is almost finished or when Meteor is about to land.",
|
|
["action"] = "combustion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.combustion.remains < 10 & buff.combustion.up",
|
|
["var_name"] = "ta_combust",
|
|
["description"] = "Variable to determine which Fire Blast conditions are used.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Spend empowered Phoenix Flames at highest priority in combustion when talented into Sunfury.",
|
|
["criteria"] = "talent.spellfire_spheres.enabled & talent.phoenix_reborn.enabled & buff.heating_up.up & ! buff.hot_streak.up & buff.flames_fury.up",
|
|
["action"] = "phoenix_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "( ! variable.ta_combust || talent.sun_kings_blessing.enabled ) & ! variable.fire_blast_pooling & ( ! improved_scorch.active || action.scorch.executing || debuff.improved_scorch.remains > 4 * gcd.max ) & ( buff.fury_of_the_sun_king.down || action.pyroblast.executing ) & buff.combustion.up & ! buff.hot_streak.up & hot_streak_spells_in_flight + buff.heating_up.stack * ( gcd.remains > 0 ) < 2",
|
|
["use_off_gcd"] = 1,
|
|
["description"] = "Fire Blast usage for a standard combustion",
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "variable.ta_combust & ! variable.fire_blast_pooling & charges_fractional > 2.5 & ( ! improved_scorch.active || action.scorch.executing || debuff.improved_scorch.remains > 4 * gcd.max ) & ( buff.fury_of_the_sun_king.down || action.pyroblast.executing ) & buff.combustion.up & ! buff.hot_streak.up & hot_streak_spells_in_flight + buff.heating_up.stack * ( gcd.remains > 0 ) < 2",
|
|
["use_off_gcd"] = 1,
|
|
["description"] = "Fire Blast usage for a TA combustion, when a regular combustion is soon to follow.",
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["buff_name"] = "hyperthermia",
|
|
["criteria"] = "buff.fury_of_the_sun_king.up",
|
|
["description"] = "Cancelaura HT if SKB is ready",
|
|
["enabled"] = true,
|
|
["action"] = "cancel_buff",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Spend Hot Streaks during Combustion at high priority.",
|
|
["criteria"] = "( buff.hot_streak.up & active_enemies >= variable.combustion_flamestrike ) || ( buff.hyperthermia.up & active_enemies >= variable.combustion_flamestrike - talent.hyperthermia.enabled )",
|
|
["action"] = "flamestrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hyperthermia.up",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_streak.up & buff.combustion.up",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.scorch & buff.heating_up.up & active_enemies < variable.combustion_flamestrike & buff.combustion.up",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.sun_kings_blessing.enabled & improved_scorch.active & debuff.improved_scorch.remains < 3 * gcd.max",
|
|
["action"] = "scorch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Spend Fury of the Sun King procs inside of combustion.",
|
|
["criteria"] = "buff.fury_of_the_sun_king.up & buff.fury_of_the_sun_king.remains > cast_time & active_enemies >= variable.skb_flamestrike & buff.fury_of_the_sun_king.expiration_delay_remains = 0 & ( buff.combustion.remains > cast_time + 3 || buff.combustion.remains < cast_time )",
|
|
["action"] = "flamestrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fury_of_the_sun_king.up & buff.fury_of_the_sun_king.remains > cast_time & buff.fury_of_the_sun_king.expiration_delay_remains = 0 & ( buff.combustion.remains > cast_time + 3 || buff.combustion.remains < cast_time )",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frostfire_empowerment.up & ! buff.hot_streak.up & ! buff.excess_frost.up",
|
|
["action"] = "fireball",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.phoenix_reborn.enabled & buff.heating_up.up + hot_streak_spells_in_flight < 2 & buff.flames_fury.up",
|
|
["action"] = "phoenix_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "improved_scorch.active & ( debuff.improved_scorch.remains < 4 * gcd.max ) & active_enemies < variable.combustion_flamestrike",
|
|
["action"] = "scorch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heat_shimmer.up & ( talent.scald.enabled || talent.improved_scorch.enabled ) & active_enemies < variable.combustion_flamestrike",
|
|
["action"] = "scorch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Phoenix Flames and Scorch in Combustion to help generate Hot Streaks when Fire Blasts are not available or need to be conserved.",
|
|
["criteria"] = "( ! talent.call_of_the_sun_king.enabled & travel_time < buff.combustion.remains || ( talent.call_of_the_sun_king.enabled & buff.combustion.remains < 4 || buff.sun_kings_blessing.stack < 8 ) ) & buff.heating_up.stack + hot_streak_spells_in_flight < 2",
|
|
["action"] = "phoenix_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frostfire_empowerment.up & ! buff.hot_streak.up",
|
|
["action"] = "fireball",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.remains > cast_time & cast_time >= gcd.max",
|
|
["action"] = "scorch",
|
|
},
|
|
{
|
|
["action"] = "fireball",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "counterspell",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time < 0.5",
|
|
["action"] = "phoenix_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "The combustion_timing action list schedules the approximate time when Combustion should be used and stores the number of seconds until then in variable.time_to_combustion.",
|
|
["list_name"] = "combustion_timing",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.potion.duration > variable.time_to_combustion + buff.combustion.duration",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.time_to_combustion > cooldown.shifting_power.remains",
|
|
["var_name"] = "shifting_power_before_combustion",
|
|
["description"] = "Variable that estimates whether Shifting Power will be used before the next Combustion.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( variable.time_to_combustion < variable.on_use_cutoff || buff.combustion.remains > variable.skb_duration & ! cooldown.item_cd_1141.remains ) & ( ( trinket.t1.has_cooldown & trinket.t1.cooldown.remains < variable.on_use_cutoff ) + ( trinket.t2.has_cooldown & trinket.t2.cooldown.remains < variable.on_use_cutoff ) > 1 )",
|
|
["var_name"] = "item_cutoff_active",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( trinket.t1.has_use & trinket.t2.has_use & buff.combustion.remains > 10 & fight_remains < 80 ) || ( ( buff.combustion.remains > 10 & buff.spymasters_report.stack > 35 & fight_remains < 60 ) || boss & fight_remains < 25 )",
|
|
["action"] = "spymasters_web",
|
|
["effect_name"] = "spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
["criteria"] = "variable.time_to_combustion < 10 || boss & fight_remains < 25",
|
|
["description"] = "The War Within S1 On-Use items with special use timings",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.time_to_combustion < 3",
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.time_to_combustion > action_cooldown - 5",
|
|
["name"] = "gladiators_badge",
|
|
["action"] = "gladiators_badge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.item_cutoff_active",
|
|
["action"] = "use_items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["description"] = "Pool as many Fire Blasts as possible for Combustion.",
|
|
["use_while_casting"] = 1,
|
|
["value"] = "buff.combustion.down & action.fire_blast.charges_fractional + ( variable.time_to_combustion + action.shifting_power.full_reduction * variable.shifting_power_before_combustion ) / cooldown.fire_blast.duration - 1 < cooldown.fire_blast.max_charges + variable.overpool_fire_blasts / cooldown.fire_blast.duration - ( buff.combustion.duration / cooldown.fire_blast.duration ) % 1 & variable.time_to_combustion < fight_remains",
|
|
["var_name"] = "fire_blast_pooling",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "variable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "variable.time_to_combustion <= 0 || buff.combustion.up || variable.time_to_combustion < variable.combustion_precast_time & cooldown.combustion.remains < variable.combustion_precast_time",
|
|
["list_name"] = "combustion_phase",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["description"] = "Adjust the variable that controls Fire Blast usage to save Fire Blasts while Searing Touch is active with Sun King's Blessing.",
|
|
["op"] = "set",
|
|
["criteria"] = "! variable.fire_blast_pooling & talent.sun_kings_blessing.enabled",
|
|
["value"] = "scorch_execute.active & action.fire_blast.full_recharge_time > 3 * gcd.max",
|
|
["var_name"] = "fire_blast_pooling",
|
|
["action"] = "variable",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.down & ( ! improved_scorch.active || debuff.improved_scorch.remains > cast_time + action.scorch.cast_time & ! buff.fury_of_the_sun_king.up ) & ! buff.hot_streak.up & buff.hyperthermia.down & ( cooldown.phoenix_flames.charges <= 1 || cooldown.combustion.remains < 20 )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "phoenix_pooling",
|
|
["value"] = "( variable.time_to_combustion + buff.combustion.duration - 5 < action.phoenix_flames.full_recharge_time + cooldown.phoenix_flames.duration - action.shifting_power.full_reduction * variable.shifting_power_before_combustion & variable.time_to_combustion < fight_remains || talent.sun_kings_blessing.enabled ) & ! talent.alexstraszas_fury.enabled",
|
|
["description"] = "Variable that controls Phoenix Flames usage to ensure its charges are pooled for Combustion when needed. Only use Phoenix Flames outside of Combustion when full charges can be obtained during the next Combustion.",
|
|
["criteria"] = "! talent.sun_kings_blessing.enabled",
|
|
},
|
|
{
|
|
["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.up & ( buff.heating_up.up & action.flamestrike.execute_remains < 0.5 || charges_fractional >= 2 )",
|
|
["use_off_gcd"] = 1,
|
|
["description"] = "When Hardcasting Flamestrike, Fire Blasts should be used to generate Hot Streaks and to extend Feel the Burn.",
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "buff.combustion.down & firestarter.active & variable.time_to_combustion > 0",
|
|
["list_name"] = "firestarter_fire_blasts",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["action"] = "fire_blast",
|
|
["criteria"] = "action.shifting_power.executing & ( full_recharge_time < action.shifting_power.tick_reduction || talent.sun_kings_blessing.enabled & buff.heating_up.up )",
|
|
["description"] = "Avoid capping Fire Blast charges while channeling Shifting Power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "variable.time_to_combustion > 0 & buff.combustion.down",
|
|
["list_name"] = "standard_rotation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Ice Nova can be used during movement when Searing Touch is not active.",
|
|
["criteria"] = "! scorch_execute.active",
|
|
["action"] = "ice_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.down",
|
|
["action"] = "scorch",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "arcane_intellect",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["criteria"] = "variable.firestarter_combustion < 0",
|
|
["var_name"] = "firestarter_combustion",
|
|
["value"] = "talent.sun_kings_blessing.enabled",
|
|
["action"] = "variable",
|
|
["description"] = "APL Variable Option: This variable specifies whether Combustion should be used during Firestarter.",
|
|
["default"] = "-1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "hot_streak_flamestrike",
|
|
["value"] = "4 * ( talent.quickflame.enabled || talent.flame_patch.enabled ) + 999 * ( ! talent.flame_patch.enabled & ! talent.quickflame.enabled )",
|
|
["description"] = "APL Variable Option: This variable specifies the number of targets at which Hot Streak Flamestrikes outside of Combustion should be used.",
|
|
["criteria"] = "variable.hot_streak_flamestrike = 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "hard_cast_flamestrike",
|
|
["value"] = "999",
|
|
["description"] = "APL Variable Option: This variable specifies the number of targets at which Hard Cast Flamestrikes outside of Combustion should be used as filler.",
|
|
["criteria"] = "variable.hard_cast_flamestrike = 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "combustion_flamestrike",
|
|
["value"] = "4 * ( talent.quickflame.enabled || talent.flame_patch.enabled ) + 999 * ( ! talent.flame_patch.enabled & ! talent.quickflame.enabled )",
|
|
["description"] = "APL Variable Option: This variable specifies the number of targets at which Hot Streak Flamestrikes are used during Combustion.",
|
|
["criteria"] = "variable.combustion_flamestrike = 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "skb_flamestrike",
|
|
["value"] = "3 * ( talent.quickflame.enabled || talent.flame_patch.enabled ) + 999 * ( ! talent.flame_patch.enabled & ! talent.quickflame.enabled )",
|
|
["description"] = "APL Variable Option: This variable specifies the number of targets at which Flamestrikes should be used to consume Fury of the Sun King.",
|
|
["criteria"] = "variable.skb_flamestrike = 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "arcane_explosion",
|
|
["value"] = "999",
|
|
["description"] = "APL Variable Option: This variable specifies the number of targets at which Arcane Explosion outside of Combustion should be used.",
|
|
["criteria"] = "variable.arcane_explosion = 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "arcane_explosion_mana",
|
|
["description"] = "APL Variable Option: This variable specifies the percentage of mana below which Arcane Explosion will not be used.",
|
|
["default"] = "40",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "combustion_shifting_power",
|
|
["value"] = "999",
|
|
["description"] = "APL Variable Option: The number of targets at which Shifting Power can used during Combustion.",
|
|
["criteria"] = "variable.combustion_shifting_power = 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "combustion_cast_remains",
|
|
["description"] = "APL Variable Option: The time remaining on a cast when Combustion can be used in seconds.",
|
|
["default"] = "0.3",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "overpool_fire_blasts",
|
|
["description"] = "APL Variable Option: This variable specifies the number of seconds of Fire Blast that should be pooled past the default amount.",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "6",
|
|
["var_name"] = "skb_duration",
|
|
["description"] = "The duration of a Sun King's Blessing Combustion.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "12",
|
|
["var_name"] = "treacherous_transmitter_precombat_cast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "equipped.gladiators_badge || equipped.treacherous_transmitter || equipped.moonlit_prism || equipped.irideus_fragment || equipped.spoils_of_neltharus || equipped.timebreaching_talon || equipped.horn_of_valor",
|
|
["var_name"] = "combustion_on_use",
|
|
["description"] = "Whether a usable item used to buff Combustion is equipped.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "on_use_cutoff",
|
|
["value"] = "20",
|
|
["description"] = "How long before Combustion should trinkets that trigger a shared category cooldown on other trinkets not be used?",
|
|
["criteria"] = "variable.combustion_on_use",
|
|
},
|
|
{
|
|
["action"] = "mirror_image",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= variable.hot_streak_flamestrike",
|
|
["action"] = "flamestrike",
|
|
},
|
|
{
|
|
["action"] = "pyroblast",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["combustion_cooldowns"] = {
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blood_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.up",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "gladiators_badge",
|
|
["action"] = "gladiators_badge",
|
|
},
|
|
},
|
|
["active_talents"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Meteor when it will impact inside of combust",
|
|
["criteria"] = "( buff.combustion.up & buff.combustion.remains < cast_time ) || ( variable.time_to_combustion <= 0 || buff.combustion.remains > travel_time )",
|
|
["action"] = "meteor",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With Alexstrasza's Fury when Combustion is not active, Dragon's Breath should be used to convert Heating Up to a Hot Streak.",
|
|
["criteria"] = "talent.alexstraszas_fury.enabled & ( buff.combustion.down & ! buff.hot_streak.up ) & ( buff.feel_the_burn.up || time > 15 ) & ( ! improved_scorch.active )",
|
|
["action"] = "dragons_breath",
|
|
},
|
|
},
|
|
["standard_rotation"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= variable.hot_streak_flamestrike & ( buff.hot_streak.up || buff.hyperthermia.up )",
|
|
["action"] = "flamestrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_streak.up & ! buff.frostfire_empowerment.up & buff.hyperthermia.down & ! cooldown.shifting_power.ready & cooldown.phoenix_flames.charges < 1 & ! scorch_execute.active & ! prev_gcd.1.fireball",
|
|
["line_cd"] = "2*gcd.max",
|
|
["description"] = "When resources are low, fish for Hot Streaks.",
|
|
["action"] = "fireball",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.hyperthermia.up || buff.hot_streak.up & ( buff.hot_streak.remains < action.fireball.execute_time ) || buff.hot_streak.up & ( hot_streak_spells_in_flight || firestarter.active || talent.call_of_the_sun_king.enabled & action.phoenix_flames.charges ) || buff.hot_streak.up & scorch_execute.active )",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= variable.skb_flamestrike & buff.fury_of_the_sun_king.up & buff.fury_of_the_sun_king.expiration_delay_remains = 0",
|
|
["action"] = "flamestrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "improved_scorch.active & ( ( talent.unleashed_inferno.enabled & debuff.improved_scorch.remains < action.pyroblast.cast_time + 5 * gcd.max ) || ( talent.sun_kings_blessing.enabled & debuff.improved_scorch.remains < 4 * gcd.max ) ) & buff.fury_of_the_sun_king.up & ! action.scorch.in_flight",
|
|
["action"] = "scorch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fury_of_the_sun_king.up & buff.fury_of_the_sun_king.expiration_delay_remains = 0",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "! firestarter.active & ( ! variable.fire_blast_pooling || talent.spontaneous_combustion.enabled ) & buff.fury_of_the_sun_king.down & ( ( ( action.fireball.executing & ( action.fireball.execute_remains < 0.5 || ! talent.hyperthermia.enabled ) || action.pyroblast.executing & ( action.pyroblast.execute_remains < 0.5 ) ) & buff.heating_up.up ) || ( scorch_execute.active & ( ! improved_scorch.active || debuff.improved_scorch.stack = debuff.improved_scorch.max_stack || full_recharge_time < 3 ) & ( buff.heating_up.up & ! action.scorch.executing || ! buff.hot_streak.up & ! buff.heating_up.up & 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 Combustion. Use Fire Blast either during a Fireball/Pyroblast cast when Heating Up is active or during execute with Searing Touch.",
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "! firestarter.active & ( ( ! variable.fire_blast_pooling & talent.unleashed_inferno.enabled ) || talent.spontaneous_combustion.enabled ) & buff.fury_of_the_sun_king.down & ( buff.heating_up.up & hot_streak_spells_in_flight < 1 & ( prev_gcd.1.phoenix_flames || prev_gcd.1.scorch ) ) || ( ( ( buff.bloodlust.up & charges_fractional > 1.5 ) || charges_fractional > 2.5 || buff.feel_the_burn.remains < 0.5 || full_recharge_time * 1 - ( 0.5 * cooldown.shifting_power.ready ) < buff.hyperthermia.duration ) & buff.heating_up.up )",
|
|
["use_off_gcd"] = 1,
|
|
["description"] = "We will munch Fireblasts during Hyperthermia, and use them after instant casts in filler.",
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "actions.standard_rotation+=/pyroblast,if=prev_gcd.1.scorch&buff.heating_up.up&scorch_execute.active&active_enemies<variable.hot_streak_flamestrike",
|
|
["criteria"] = "improved_scorch.active & debuff.improved_scorch.remains < 4 * gcd.max",
|
|
["action"] = "scorch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frostfire_empowerment.up & ! buff.hot_streak.up & ! buff.excess_frost.up",
|
|
["action"] = "fireball",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heat_shimmer.up & ( talent.scald.enabled || talent.improved_scorch.enabled ) & active_enemies < variable.combustion_flamestrike",
|
|
["action"] = "scorch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.hot_streak.up & ( hot_streak_spells_in_flight < 1 & ( ! prev_gcd.1.fireball || ( buff.heating_up.down & buff.hot_streak.down ) ) ) || ( hot_streak_spells_in_flight < 2 & buff.flames_fury.up )",
|
|
["action"] = "phoenix_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "active_talents",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & talent.alexstraszas_fury.enabled",
|
|
["action"] = "dragons_breath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( scorch_execute.active || buff.heat_shimmer.up )",
|
|
["action"] = "scorch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= variable.arcane_explosion & mana.pct >= variable.arcane_explosion_mana",
|
|
["action"] = "arcane_explosion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With enough targets, it is a gain to cast Flamestrike as filler instead of Fireball. This is currently never true up to 10t.",
|
|
["criteria"] = "active_enemies >= variable.hard_cast_flamestrike",
|
|
["action"] = "flamestrike",
|
|
},
|
|
{
|
|
["action"] = "fireball",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["firestarter_fire_blasts"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["action"] = "fire_blast",
|
|
["criteria"] = "! variable.fire_blast_pooling & ! buff.hot_streak.up & ( action.fireball.execute_remains > gcd.remains || action.pyroblast.executing ) & buff.heating_up.up + hot_streak_spells_in_flight = 1 & ( cooldown.shifting_power.ready || charges > 1 || buff.feel_the_burn.remains < 2 * gcd.max )",
|
|
["description"] = "While casting Fireball or Pyroblast, convert Heating Up to a Hot Streak!",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.fire_blast_pooling & buff.heating_up.stack + hot_streak_spells_in_flight = 1 & ( talent.feel_the_burn.enabled & buff.feel_the_burn.remains < gcd.remains || cooldown.shifting_power.ready ) & time > 0",
|
|
["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",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241206,
|
|
["warnings"] = "The import for 'combustion_timing' required some automated changes.\nLine 4: Converted 'talent.firestarter' to 'talent.firestarter.enabled' (1x).\nLine 5: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 10: Converted 'talent.firestarter' to 'talent.firestarter.enabled' (1x).\nLine 10: Converted 'talent.kindling' to 'talent.kindling.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 'default' required some automated changes.\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.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 7: Converted 'trinket.1.has_use' to 'trinket.t1.has_use' (1x).\nLine 7: Converted 'trinket.2.has_use' to 'trinket.t2.has_use' (1x).\nLine 12: Converted operations in 'buff.combustion.down&action.fire_blast.charges_fractional+(variable.time_to_combustion+action.shifting_power.full_reduction*variable.shifting_power_before_combustion)%cooldown.fire_blast.duration-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 'buff.combustion.down&action.fire_blast.charges_fractional+(variable.time_to_combustion+action.shifting_power.full_reduction*variable.shifting_power_before_combustion)/cooldown.fire_blast.duration-1<cooldown.fire_blast.max_charges+variable.overpool_fire_blasts/cooldown.fire_blast.duration-(buff.combustion.duration/cooldown.fire_blast.duration)%1&variable.time_to_combustion<fight_remains'.\nLine 14: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 16: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 16: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 16: Converted 'talent.alexstraszas_fury' to 'talent.alexstraszas_fury.enabled' (1x).\nLine 19: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 2: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 3: Converted 'talent.quickflame' to 'talent.quickflame.enabled' (1x).\nLine 3: Converted 'talent.flame_patch' to 'talent.flame_patch.enabled' (1x).\nLine 3: Converted 'talent.flame_patch' to 'talent.flame_patch.enabled' (1x).\nLine 3: Converted 'talent.quickflame' to 'talent.quickflame.enabled' (1x).\nLine 5: Converted 'talent.quickflame' to 'talent.quickflame.enabled' (1x).\nLine 5: Converted 'talent.flame_patch' to 'talent.flame_patch.enabled' (1x).\nLine 5: Converted 'talent.flame_patch' to 'talent.flame_patch.enabled' (1x).\nLine 5: Converted 'talent.quickflame' to 'talent.quickflame.enabled' (1x).\nLine 6: Converted 'talent.quickflame' to 'talent.quickflame.enabled' (1x).\nLine 6: Converted 'talent.flame_patch' to 'talent.flame_patch.enabled' (1x).\nLine 6: Converted 'talent.flame_patch' to 'talent.flame_patch.enabled' (1x).\nLine 6: Converted 'talent.quickflame' to 'talent.quickflame.enabled' (1x).\n\nThe import for 'active_talents' required some automated changes.\nLine 2: Converted 'talent.alexstraszas_fury' to 'talent.alexstraszas_fury.enabled' (1x).\n\nThe import for 'standard_rotation' required some automated changes.\nLine 3: Converted 'talent.call_of_the_sun_king' to 'talent.call_of_the_sun_king.enabled' (1x).\nLine 5: Converted 'talent.unleashed_inferno' to 'talent.unleashed_inferno.enabled' (1x).\nLine 5: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 7: Converted 'talent.spontaneous_combustion' to 'talent.spontaneous_combustion.enabled' (1x).\nLine 7: Converted 'talent.hyperthermia' to 'talent.hyperthermia.enabled' (1x).\nLine 8: Converted 'talent.unleashed_inferno' to 'talent.unleashed_inferno.enabled' (1x).\nLine 8: Converted 'talent.spontaneous_combustion' to 'talent.spontaneous_combustion.enabled' (1x).\nLine 11: Converted 'talent.scald' to 'talent.scald.enabled' (1x).\nLine 11: Converted 'talent.improved_scorch' to 'talent.improved_scorch.enabled' (1x).\nLine 14: Converted 'talent.alexstraszas_fury' to 'talent.alexstraszas_fury.enabled' (1x).\n\nThe import for 'combustion_phase' required some automated changes.\nLine 5: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 5: Converted 'talent.flame_accelerant' to 'talent.flame_accelerant.enabled' (1x).\nLine 8: Converted 'talent.isothermic_core' to 'talent.isothermic_core.enabled' (1x).\nLine 8: Converted 'talent.isothermic_core' to 'talent.isothermic_core.enabled' (1x).\nLine 10: Converted 'talent.spellfire_spheres' to 'talent.spellfire_spheres.enabled' (1x).\nLine 10: Converted 'talent.phoenix_reborn' to 'talent.phoenix_reborn.enabled' (1x).\nLine 11: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 14: Converted 'talent.hyperthermia' to 'talent.hyperthermia.enabled' (1x).\nLine 18: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 22: Converted 'talent.phoenix_reborn' to 'talent.phoenix_reborn.enabled' (1x).\nLine 24: Converted 'talent.scald' to 'talent.scald.enabled' (1x).\nLine 24: Converted 'talent.improved_scorch' to 'talent.improved_scorch.enabled' (1x).\nLine 25: Converted 'talent.call_of_the_sun_king' to 'talent.call_of_the_sun_king.enabled' (1x).\nLine 25: Converted 'talent.call_of_the_sun_king' to 'talent.call_of_the_sun_king.enabled' (1x).\n\nImported 8 action lists.\n",
|
|
["spec"] = 63,
|
|
["profile"] = "actions.precombat+=/arcane_intellect\n# APL Variable Option: This variable specifies whether Combustion should be used during Firestarter.\nactions.precombat+=/variable,name=firestarter_combustion,default=-1,value=talent.sun_kings_blessing,if=variable.firestarter_combustion<0\n# APL Variable Option: This variable specifies the number of targets at which Hot Streak Flamestrikes outside of Combustion should be used.\nactions.precombat+=/variable,name=hot_streak_flamestrike,if=variable.hot_streak_flamestrike=0,value=4*(talent.quickflame||talent.flame_patch)+999*(!talent.flame_patch&!talent.quickflame)\n# APL Variable Option: This variable specifies the number of targets at which Hard Cast Flamestrikes outside of Combustion should be used as filler.\nactions.precombat+=/variable,name=hard_cast_flamestrike,if=variable.hard_cast_flamestrike=0,value=999\n# APL Variable Option: This variable specifies the number of targets at which Hot Streak Flamestrikes are used during Combustion.\nactions.precombat+=/variable,name=combustion_flamestrike,if=variable.combustion_flamestrike=0,value=4*(talent.quickflame||talent.flame_patch)+999*(!talent.flame_patch&!talent.quickflame)\n# APL Variable Option: This variable specifies the number of targets at which Flamestrikes should be used to consume Fury of the Sun King.\nactions.precombat+=/variable,name=skb_flamestrike,if=variable.skb_flamestrike=0,value=3*(talent.quickflame||talent.flame_patch)+999*(!talent.flame_patch&!talent.quickflame)\n# APL Variable Option: This variable specifies the number of targets at which Arcane Explosion outside of Combustion should be used.\nactions.precombat+=/variable,name=arcane_explosion,if=variable.arcane_explosion=0,value=999\n# APL Variable Option: This variable specifies the percentage of mana below which Arcane Explosion will not be used.\nactions.precombat+=/variable,name=arcane_explosion_mana,default=40,op=reset\n# APL Variable Option: The number of targets at which Shifting Power can used during Combustion.\nactions.precombat+=/variable,name=combustion_shifting_power,if=variable.combustion_shifting_power=0,value=999\n# APL Variable Option: The time remaining on a cast when Combustion can be used in seconds.\nactions.precombat+=/variable,name=combustion_cast_remains,default=0.3,op=reset\n# APL Variable Option: This variable specifies the number of seconds of Fire Blast that should be pooled past the default amount.\nactions.precombat+=/variable,name=overpool_fire_blasts,default=0,op=reset\n# The duration of a Sun King's Blessing Combustion.\nactions.precombat+=/variable,name=skb_duration,value=6\nactions.precombat+=/variable,name=treacherous_transmitter_precombat_cast,value=12\nactions.precombat+=/use_item,name=treacherous_transmitter\n# Whether a usable item used to buff Combustion is equipped.\nactions.precombat+=/variable,name=combustion_on_use,value=equipped.gladiators_badge||equipped.treacherous_transmitter||equipped.moonlit_prism||equipped.irideus_fragment||equipped.spoils_of_neltharus||equipped.timebreaching_talon||equipped.horn_of_valor\n# How long before Combustion should trinkets that trigger a shared category cooldown on other trinkets not be used?\nactions.precombat+=/variable,name=on_use_cutoff,value=20,if=variable.combustion_on_use\nactions.precombat+=/mirror_image\nactions.precombat+=/flamestrike,if=active_enemies>=variable.hot_streak_flamestrike\nactions.precombat+=/pyroblast\n\nactions+=/counterspell\nactions+=/phoenix_flames,if=time<0.5\n# The combustion_timing action list schedules the approximate time when Combustion should be used and stores the number of seconds until then in variable.time_to_combustion.\nactions+=/call_action_list,name=combustion_timing\nactions+=/potion,if=buff.potion.duration>variable.time_to_combustion+buff.combustion.duration\n# Variable that estimates whether Shifting Power will be used before the next Combustion.\nactions+=/variable,name=shifting_power_before_combustion,value=variable.time_to_combustion>cooldown.shifting_power.remains\nactions+=/variable,name=item_cutoff_active,value=(variable.time_to_combustion<variable.on_use_cutoff||buff.combustion.remains>variable.skb_duration&!cooldown.item_cd_1141.remains)&((trinket.1.has_cooldown&trinket.1.cooldown.remains<variable.on_use_cutoff)+(trinket.2.has_cooldown&trinket.2.cooldown.remains<variable.on_use_cutoff)>1)\nactions+=/use_item,effect_name=spymasters_web,if=(trinket.1.has_use&trinket.2.has_use&buff.combustion.remains>10&fight_remains<80)||((buff.combustion.remains>10&buff.spymasters_report.stack>35&fight_remains<60)||boss&fight_remains<25)\n# The War Within S1 On-Use items with special use timings\nactions+=/use_item,name=treacherous_transmitter,if=variable.time_to_combustion<10||boss&fight_remains<25\n## actions+=/do_treacherous_transmitter_task,use_off_gcd=1,if=buff.combustion.up||fight_remains<20\nactions+=/use_item,name=imperfect_ascendancy_serum,if=variable.time_to_combustion<3\nactions+=/use_item,name=gladiators_badge,if=variable.time_to_combustion>cooldown-5\nactions+=/use_items,if=!variable.item_cutoff_active\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=buff.combustion.down&action.fire_blast.charges_fractional+(variable.time_to_combustion+action.shifting_power.full_reduction*variable.shifting_power_before_combustion)%cooldown.fire_blast.duration-1<cooldown.fire_blast.max_charges+variable.overpool_fire_blasts%cooldown.fire_blast.duration-(buff.combustion.duration%cooldown.fire_blast.duration)%%1&variable.time_to_combustion<fight_remains\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\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=scorch_execute.active&action.fire_blast.full_recharge_time>3*gcd.max,if=!variable.fire_blast_pooling&talent.sun_kings_blessing\nactions+=/shifting_power,if=buff.combustion.down&(!improved_scorch.active||debuff.improved_scorch.remains>cast_time+action.scorch.cast_time&!buff.fury_of_the_sun_king.up)&!buff.hot_streak.up&buff.hyperthermia.down&(cooldown.phoenix_flames.charges<=1||cooldown.combustion.remains<20)\n# Variable that controls Phoenix Flames usage to ensure its charges are pooled for Combustion when needed. Only use Phoenix Flames outside of Combustion when full charges can be obtained during the next Combustion.\nactions+=/variable,name=phoenix_pooling,if=!talent.sun_kings_blessing,value=(variable.time_to_combustion+buff.combustion.duration-5<action.phoenix_flames.full_recharge_time+cooldown.phoenix_flames.duration-action.shifting_power.full_reduction*variable.shifting_power_before_combustion&variable.time_to_combustion<fight_remains||talent.sun_kings_blessing)&!talent.alexstraszas_fury\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.up&(buff.heating_up.up&action.flamestrike.execute_remains<0.5||charges_fractional>=2)\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||talent.sun_kings_blessing&buff.heating_up.up)\nactions+=/call_action_list,name=standard_rotation,strict=1,if=variable.time_to_combustion>0&buff.combustion.down\n# Ice Nova can be used during movement when Searing Touch is not active.\nactions+=/ice_nova,if=!scorch_execute.active\nactions+=/scorch,if=buff.combustion.down\n\n# Meteor when it will impact inside of combust\nactions.active_talents+=/meteor,if=(buff.combustion.up&buff.combustion.remains<cast_time)||(variable.time_to_combustion<=0||buff.combustion.remains>travel_time)\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.up)&(buff.feel_the_burn.up||time>15)&(!improved_scorch.active)\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## 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+=/use_item,name=gladiators_badge\n\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||boss&fight_remains<20\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&buff.fury_of_the_sun_king.up&buff.fury_of_the_sun_king.remains>cast_time&buff.fury_of_the_sun_king.expiration_delay_remains=0&cooldown.combustion.remains<cast_time&active_enemies>=variable.skb_flamestrike\nactions.combustion_phase+=/pyroblast,if=buff.combustion.down&buff.fury_of_the_sun_king.up&buff.fury_of_the_sun_king.remains>cast_time&(buff.fury_of_the_sun_king.expiration_delay_remains=0||buff.flame_accelerant.up)\nactions.combustion_phase+=/fireball,if=buff.combustion.down&cooldown.combustion.remains<cast_time&active_enemies<2&!improved_scorch.active&!(talent.sun_kings_blessing&talent.flame_accelerant)\nactions.combustion_phase+=/scorch,if=buff.combustion.down&cooldown.combustion.remains<cast_time\n# If no precast was available, spend Frostfire Empowerment so that Fireball can be used as a precast.\nactions.combustion_phase+=/fireball,if=buff.combustion.down&buff.frostfire_empowerment.up\n# Combustion should be used when the precast is almost finished or when Meteor is about to land.\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&(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||!talent.isothermic_core&action.meteor.in_flight&action.meteor.in_flight_remains<variable.combustion_cast_remains||talent.isothermic_core&action.meteor.in_flight)\n# Variable to determine which Fire Blast conditions are used.\nactions.combustion_phase+=/variable,name=ta_combust,value=cooldown.combustion.remains<10&buff.combustion.up\n# Spend empowered Phoenix Flames at highest priority in combustion when talented into Sunfury.\nactions.combustion_phase+=/phoenix_flames,if=talent.spellfire_spheres&talent.phoenix_reborn&buff.heating_up.up&!buff.hot_streak.up&buff.flames_fury.up\n# Fire Blast usage for a standard combustion\nactions.combustion_phase+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=(!variable.ta_combust||talent.sun_kings_blessing)&!variable.fire_blast_pooling&(!improved_scorch.active||action.scorch.executing||debuff.improved_scorch.remains>4*gcd.max)&(buff.fury_of_the_sun_king.down||action.pyroblast.executing)&buff.combustion.up&!buff.hot_streak.up&hot_streak_spells_in_flight+buff.heating_up.stack*(gcd.remains>0)<2\n# Fire Blast usage for a TA combustion, when a regular combustion is soon to follow.\nactions.combustion_phase+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=variable.ta_combust&!variable.fire_blast_pooling&charges_fractional>2.5&(!improved_scorch.active||action.scorch.executing||debuff.improved_scorch.remains>4*gcd.max)&(buff.fury_of_the_sun_king.down||action.pyroblast.executing)&buff.combustion.up&!buff.hot_streak.up&hot_streak_spells_in_flight+buff.heating_up.stack*(gcd.remains>0)<2\n# Cancelaura HT if SKB is ready\nactions.combustion_phase+=/cancel_buff,name=hyperthermia,if=buff.fury_of_the_sun_king.up\n# Spend Hot Streaks during Combustion at high priority.\nactions.combustion_phase+=/flamestrike,if=(buff.hot_streak.up&active_enemies>=variable.combustion_flamestrike)||(buff.hyperthermia.up&active_enemies>=variable.combustion_flamestrike-talent.hyperthermia)\nactions.combustion_phase+=/pyroblast,if=buff.hyperthermia.up\nactions.combustion_phase+=/pyroblast,if=buff.hot_streak.up&buff.combustion.up\nactions.combustion_phase+=/pyroblast,if=prev_gcd.1.scorch&buff.heating_up.up&active_enemies<variable.combustion_flamestrike&buff.combustion.up\nactions.combustion_phase+=/scorch,if=talent.sun_kings_blessing&improved_scorch.active&debuff.improved_scorch.remains<3*gcd.max\n# Spend Fury of the Sun King procs inside of combustion.\nactions.combustion_phase+=/flamestrike,if=buff.fury_of_the_sun_king.up&buff.fury_of_the_sun_king.remains>cast_time&active_enemies>=variable.skb_flamestrike&buff.fury_of_the_sun_king.expiration_delay_remains=0&(buff.combustion.remains>cast_time+3||buff.combustion.remains<cast_time)\nactions.combustion_phase+=/pyroblast,if=buff.fury_of_the_sun_king.up&buff.fury_of_the_sun_king.remains>cast_time&buff.fury_of_the_sun_king.expiration_delay_remains=0&(buff.combustion.remains>cast_time+3||buff.combustion.remains<cast_time)\nactions.combustion_phase+=/fireball,if=buff.frostfire_empowerment.up&!buff.hot_streak.up&!buff.excess_frost.up\nactions.combustion_phase+=/phoenix_flames,if=talent.phoenix_reborn&buff.heating_up.up+hot_streak_spells_in_flight<2&buff.flames_fury.up\nactions.combustion_phase+=/scorch,if=improved_scorch.active&(debuff.improved_scorch.remains<4*gcd.max)&active_enemies<variable.combustion_flamestrike\nactions.combustion_phase+=/scorch,if=buff.heat_shimmer.up&(talent.scald||talent.improved_scorch)&active_enemies<variable.combustion_flamestrike\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=(!talent.call_of_the_sun_king&travel_time<buff.combustion.remains||(talent.call_of_the_sun_king&buff.combustion.remains<4||buff.sun_kings_blessing.stack<8))&buff.heating_up.stack+hot_streak_spells_in_flight<2\nactions.combustion_phase+=/fireball,if=buff.frostfire_empowerment.up&!buff.hot_streak.up\nactions.combustion_phase+=/scorch,if=buff.combustion.remains>cast_time&cast_time>=gcd.max\nactions.combustion_phase+=/fireball\n\n# Helper variable that contains the actual estimated time that the next Combustion will be ready.\nactions.combustion_timing+=/variable,use_off_gcd=1,use_while_casting=1,name=combustion_ready_time,value=cooldown.combustion.remains_expected\n# The cast time of the spell that will be precast into Combustion.\nactions.combustion_timing+=/variable,use_off_gcd=1,use_while_casting=1,name=combustion_precast_time,value=action.fireball.cast_time*(active_enemies<variable.combustion_flamestrike)+action.flamestrike.cast_time*(active_enemies>=variable.combustion_flamestrike)-variable.combustion_cast_remains\nactions.combustion_timing+=/variable,use_off_gcd=1,use_while_casting=1,name=time_to_combustion,value=variable.combustion_ready_time\n# Delay Combustion for after Firestarter unless variable.firestarter_combustion is set.\nactions.combustion_timing+=/variable,use_off_gcd=1,use_while_casting=1,name=time_to_combustion,op=max,value=firestarter.remains,if=talent.firestarter&!variable.firestarter_combustion\n# Delay Combustion until SKB is ready during Firestarter\nactions.combustion_timing+=/variable,use_off_gcd=1,use_while_casting=1,name=time_to_combustion,op=max,value=(buff.sun_kings_blessing.max_stack-buff.sun_kings_blessing.stack)*(3*gcd.max),if=talent.sun_kings_blessing&firestarter.active&buff.fury_of_the_sun_king.down\n# Delay Combustion for Gladiators Badge, unless it would be delayed longer than 20 seconds.\nactions.combustion_timing+=/variable,use_off_gcd=1,use_while_casting=1,name=time_to_combustion,op=max,value=cooldown.gladiators_badge.remains,if=equipped.gladiators_badge&cooldown.gladiators_badge.remains-20<variable.time_to_combustion\n# Delay Combustion until Combustion expires if it's up.\nactions.combustion_timing+=/variable,use_off_gcd=1,use_while_casting=1,name=time_to_combustion,op=max,value=buff.combustion.remains\n# Raid Events: Delay Combustion for add spawns of 3 or more adds that will last longer than 15 seconds. These values aren't necessarily optimal in all cases.\nactions.combustion_timing+=/variable,use_off_gcd=1,use_while_casting=1,name=time_to_combustion,op=max,value=raid_event.adds.in,if=raid_event.adds.exists&raid_event.adds.count>=3&raid_event.adds.duration>15\n# Raid Events: Always use Combustion with vulnerability raid events, override any delays listed above to make sure it gets used here.\nactions.combustion_timing+=/variable,use_off_gcd=1,use_while_casting=1,name=time_to_combustion,value=raid_event.vulnerable.in*!raid_event.vulnerable.up,if=raid_event.vulnerable.exists&variable.combustion_ready_time<raid_event.vulnerable.in\n# Use the next Combustion on cooldown if it would not be expected to delay the scheduled one or the scheduled one would happen less than 20 seconds before the fight ends.\nactions.combustion_timing+=/variable,use_off_gcd=1,use_while_casting=1,name=time_to_combustion,value=variable.combustion_ready_time,if=variable.combustion_ready_time+cooldown.combustion.duration*(1-(0.4+0.2*talent.firestarter)*talent.kindling)<=variable.time_to_combustion||variable.time_to_combustion>fight_remains-20\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.up&(action.fireball.execute_remains>gcd.remains||action.pyroblast.executing)&buff.heating_up.up+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.stack+hot_streak_spells_in_flight=1&(talent.feel_the_burn&buff.feel_the_burn.remains<gcd.remains||cooldown.shifting_power.ready)&time>0\n\nactions.standard_rotation+=/flamestrike,if=active_enemies>=variable.hot_streak_flamestrike&(buff.hot_streak.up||buff.hyperthermia.up)\n# When resources are low, fish for Hot Streaks.\nactions.standard_rotation+=/fireball,if=buff.hot_streak.up&!buff.frostfire_empowerment.up&buff.hyperthermia.down&!cooldown.shifting_power.ready&cooldown.phoenix_flames.charges<1&!scorch_execute.active&!prev_gcd.1.fireball,line_cd=2*gcd.max\nactions.standard_rotation+=/pyroblast,if=(buff.hyperthermia.up||buff.hot_streak.up&(buff.hot_streak.remains<action.fireball.execute_time)||buff.hot_streak.up&(hot_streak_spells_in_flight||firestarter.active||talent.call_of_the_sun_king&action.phoenix_flames.charges)||buff.hot_streak.up&scorch_execute.active)\nactions.standard_rotation+=/flamestrike,if=active_enemies>=variable.skb_flamestrike&buff.fury_of_the_sun_king.up&buff.fury_of_the_sun_king.expiration_delay_remains=0\nactions.standard_rotation+=/scorch,if=improved_scorch.active&((talent.unleashed_inferno&debuff.improved_scorch.remains<action.pyroblast.cast_time+5*gcd.max)||(talent.sun_kings_blessing&debuff.improved_scorch.remains<4*gcd.max))&buff.fury_of_the_sun_king.up&!action.scorch.in_flight\nactions.standard_rotation+=/pyroblast,if=buff.fury_of_the_sun_king.up&buff.fury_of_the_sun_king.expiration_delay_remains=0\n# During the standard rotation, only use Fire Blasts when they are not being pooled for 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||talent.spontaneous_combustion)&buff.fury_of_the_sun_king.down&(((action.fireball.executing&(action.fireball.execute_remains<0.5||!talent.hyperthermia)||action.pyroblast.executing&(action.pyroblast.execute_remains<0.5))&buff.heating_up.up)||(scorch_execute.active&(!improved_scorch.active||debuff.improved_scorch.stack=debuff.improved_scorch.max_stack||full_recharge_time<3)&(buff.heating_up.up&!action.scorch.executing||!buff.hot_streak.up&!buff.heating_up.up&action.scorch.executing&!hot_streak_spells_in_flight)))\n# We will munch Fireblasts during Hyperthermia, and use them after instant casts in filler.\nactions.standard_rotation+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=!firestarter.active&((!variable.fire_blast_pooling&talent.unleashed_inferno)||talent.spontaneous_combustion)&buff.fury_of_the_sun_king.down&(buff.heating_up.up&hot_streak_spells_in_flight<1&(prev_gcd.1.phoenix_flames||prev_gcd.1.scorch))||(((buff.bloodlust.up&charges_fractional>1.5)||charges_fractional>2.5||buff.feel_the_burn.remains<0.5||full_recharge_time*1-(0.5*cooldown.shifting_power.ready)<buff.hyperthermia.duration)&buff.heating_up.up)\n# actions.standard_rotation+=/pyroblast,if=prev_gcd.1.scorch&buff.heating_up.up&scorch_execute.active&active_enemies<variable.hot_streak_flamestrike\nactions.standard_rotation+=/scorch,if=improved_scorch.active&debuff.improved_scorch.remains<4*gcd.max\nactions.standard_rotation+=/fireball,if=buff.frostfire_empowerment.up&!buff.hot_streak.up&!buff.excess_frost.up\nactions.standard_rotation+=/scorch,if=buff.heat_shimmer.up&(talent.scald||talent.improved_scorch)&active_enemies<variable.combustion_flamestrike\nactions.standard_rotation+=/phoenix_flames,if=!buff.hot_streak.up&(hot_streak_spells_in_flight<1&(!prev_gcd.1.fireball||(buff.heating_up.down&buff.hot_streak.down)))||(hot_streak_spells_in_flight<2&buff.flames_fury.up)\nactions.standard_rotation+=/call_action_list,name=active_talents\nactions.standard_rotation+=/dragons_breath,if=active_enemies>1&talent.alexstraszas_fury\nactions.standard_rotation+=/scorch,if=(scorch_execute.active||buff.heat_shimmer.up)\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. This is currently never true up to 10t.\nactions.standard_rotation+=/flamestrike,if=active_enemies>=variable.hard_cast_flamestrike\nactions.standard_rotation+=/fireball",
|
|
},
|
|
["Augmentation"] = {
|
|
["source"] = "https://www.icy-veins.com/wow/augmentation-evoker-pve-dps-rotation-cooldowns-abilities",
|
|
["builtIn"] = true,
|
|
["date"] = 20241206,
|
|
["spec"] = 1473,
|
|
["desc"] = "2024-12-06: SimC update\n\n2024-10-23: 11.0.5\n\n2024-10-21: SimC update\n\n2024-10-06: Prescience more (j/k, SimC update)\n\n2024-10-01: Prescience less\n\n2024-09-24, 09-28: More Empowered / Breath fixes\n\n2024-09-22: Use Fire Breath more\n\n2024-09-21: Revisions for solo vs. group; update from SimC\n\n2024-09-15: Quell; ensure Upheaval casts can always finish\n\n2024-07-27, 09-09: Update from SimC\n\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["items"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "nymues_unraveling_spindle",
|
|
["action"] = "nymues_unraveling_spindle",
|
|
["criteria"] = "cooldown.breath_of_eons.remains <= 3 & ( trinket.t1.is.nymues_unraveling_spindle & variable.trinket_priority = 1 || trinket.t2.is.nymues_unraveling_spindle & variable.trinket_priority = 2 ) || ( cooldown.fire_breath.remains <= 4 || cooldown.upheaval.remains <= 4 ) & cooldown.breath_of_eons.remains > 10 & ! ( debuff.temporal_wound.up || prev_gcd.1.breath_of_eons ) & ( trinket.t1.is.nymues_unraveling_spindle & variable.trinket_priority = 2 || trinket.t2.is.nymues_unraveling_spindle & variable.trinket_priority = 1 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "aberrant_spellforge",
|
|
["action"] = "aberrant_spellforge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
["criteria"] = "cooldown.breath_of_eons.remains <= 10 & talent.wingleader.enabled || boss & fight_remains <= 15",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "spymasters_web",
|
|
["action"] = "spymasters_web",
|
|
["criteria"] = "( debuff.temporal_wound.up || prev_gcd.1.breath_of_eons ) & ( fight_remains <= 130 - ( 30 + 12 * talent.interwoven_threads.enabled ) * talent.wingleader.enabled - 20 * talent.time_skip.enabled * ( cooldown.time_skip.remains <= 90 ) * ! talent.interwoven_threads.enabled ) || ( boss & fight_remains <= 20 || active_dot.breath_of_eons > 0 & fight_remains <= 60 ) & ( trinket.t1.is.spymasters_web & ( trinket.t2.cooldown.duration = 0 || trinket.t2.cooldown.remains >= 10 || variable.trinket_2_exclude ) || trinket.t2.is.spymasters_web & ( trinket.t1.cooldown.duration = 0 || trinket.t1.cooldown.remains >= 10 || variable.trinket_1_exclude ) ) & ! buff.spymasters_web.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ! variable.trinket_1_exclude & ( ( debuff.temporal_wound.up || prev_gcd.1.breath_of_eons ) || variable.trinket_2_buffs & ! trinket.t2.cooldown.up & ( prev_gcd.1.fire_breath || prev_gcd.1.upheaval ) & buff.ebon_might_self.up ) & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || trinket.t1.buff_duration >= fight_remains & boss",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ! variable.trinket_2_exclude & ( ( debuff.temporal_wound.up || prev_gcd.1.breath_of_eons ) || variable.trinket_1_buffs & ! trinket.t1.cooldown.up & ( prev_gcd.1.fire_breath || prev_gcd.1.upheaval ) & buff.ebon_might_self.up ) & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || trinket.t2.buff_duration >= fight_remains & boss",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & ! variable.trinket_1_exclude & ( variable.damage_trinket_priority = 1 || trinket.t2.cooldown.remains || trinket.t2.is.spymasters_web & buff.spymasters_report.stack < 30 || variable.eons_remains >= 20 || trinket.t2.cooldown.duration = 0 || variable.trinket_2_exclude ) & ( gcd.remains > 0.1 & variable.trinket_1_ogcd_cast )",
|
|
["description"] = "If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_2_buffs & ! variable.trinket_2_manual & ! variable.trinket_2_exclude & ( variable.damage_trinket_priority = 2 || trinket.t1.cooldown.remains || trinket.t1.is.spymasters_web & buff.spymasters_report.stack < 30 || variable.eons_remains >= 20 || trinket.t1.cooldown.duration = 0 || variable.trinket_1_exclude ) & ( gcd.remains > 0.1 & variable.trinket_2_ogcd_cast )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & ! variable.trinket_1_exclude & ( variable.damage_trinket_priority = 1 || trinket.t2.cooldown.remains || trinket.t2.is.spymasters_web & buff.spymasters_report.stack < 30 || variable.eons_remains >= 20 || trinket.t2.cooldown.duration = 0 || variable.trinket_2_exclude ) & ( ! variable.trinket_1_ogcd_cast )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.trinket_2_buffs & ! variable.trinket_2_manual & ! variable.trinket_2_exclude & ( variable.damage_trinket_priority = 2 || trinket.t1.cooldown.remains || trinket.t1.is.spymasters_web & buff.spymasters_report.stack < 30 || variable.eons_remains >= 20 || trinket.t1.cooldown.duration = 0 || variable.trinket_1_exclude ) & ( ! variable.trinket_2_ogcd_cast )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "gcd.remains >= gcd.max * 0.6",
|
|
["description"] = "Use on use weapons",
|
|
},
|
|
},
|
|
["opener_filler"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.opener_delay >? variable.minimum_opener_delay",
|
|
["criteria"] = "! variable.opener_cds_detected & ( solo || active_dot.breath_of_eons > 0 )",
|
|
["var_name"] = "opener_delay",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.opener_delay - 1",
|
|
["var_name"] = "opener_delay",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.breath_of_eons.remains > 0 || action.breath_of_eons.time_since < time",
|
|
["var_name"] = "opener_cds_detected",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.opener_delay >= 3",
|
|
["action"] = "eruption",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 || talent.pupil_of_alexstrasza.enabled || buff.leaping_flames.up",
|
|
["action"] = "living_flame",
|
|
},
|
|
{
|
|
["action"] = "azure_strike",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "quell",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "unravel",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "debuff.temporal_wound.remains",
|
|
["var_name"] = "temp_wound",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.breath_of_eons.remains",
|
|
["var_name"] = "eons_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "pool_for_id",
|
|
["criteria"] = "talent.imminent_destruction.enabled",
|
|
["default"] = "0",
|
|
["value"] = "( variable.eons_remains < 8 ) & essence.deficit >= 1 & ! buff.essence_burst.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "prescience",
|
|
["criteria"] = "( solo & buff.prescience.remains < 1 || group & active_dot.prescience < 2 ) & ( ( full_recharge_time <= gcd.max * 3 || cooldown.ebon_might.remains <= gcd.max * 3 & ( buff.ebon_might_self.remains - gcd.max * 3 ) <= buff.ebon_might_self.duration * variable.ebon_might_pandemic_threshold || boss & fight_remains <= 30 ) || variable.eons_remains <= 8 || talent.anachronism.enabled & buff.imminent_destruction.up & essence < 1 & ! cooldown.fire_breath.up & ! cooldown.upheaval.up ) & debuff.prescience.remains < gcd.max * 2",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "gcd.remains >= 0.5 & ( ! raid_event.movement.exists & ( trinket.t1.is.ovinaxs_mercurial_egg || trinket.t2.is.ovinaxs_mercurial_egg ) || raid_event.movement.in <= 6 )",
|
|
["action"] = "hover",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.eons_remains <= 0 || boss & fight_remains <= 30",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.ebon_might = 0 || ( buff.ebon_might_self.remains - action.ebon_might.cast_time ) <= buff.ebon_might_self.duration * variable.ebon_might_pandemic_threshold",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "ebon_logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.opener_delay > 0 & boss",
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "opener_filler",
|
|
},
|
|
{
|
|
["action"] = "deep_breath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.threads_of_fate.enabled & ( prev_gcd.1.breath_of_eons || boss & fight_remains <= 30 )",
|
|
["action"] = "tip_the_scales",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.time_skip.up & talent.time_skip.enabled & ! talent.interwoven_threads.enabled || empowering.fire_breath",
|
|
["var_name"] = "fb_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.fb_condition",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "fb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "upheaval",
|
|
["cycle_targets"] = 1,
|
|
["empower_to"] = "1",
|
|
["criteria"] = "target.time_to_die > cast_time + 0.2 & buff.ebon_might_self.remains > duration & cooldown.time_skip.up & talent.time_skip.enabled & ! talent.interwoven_threads.enabled || empowering.upheaval",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.fb_condition & ( variable.eons_remains >= variable.hold_empower_for || ! talent.breath_of_eons.enabled || variable.eons_remains = 0 & talent.wingleader.enabled )",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "fb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "upheaval",
|
|
["cycle_targets"] = 1,
|
|
["empower_to"] = "1",
|
|
["criteria"] = "target.time_to_die > cast_time + 0.2 & buff.ebon_might_self.remains > duration & ( ! talent.molten_embers.enabled || dot.fire_breath_damage.ticking || cooldown.fire_breath.remains >= 10 ) & ( cooldown.breath_of_eons.remains >= variable.hold_empower_for || ! talent.breath_of_eons.enabled || talent.wingleader.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.wingleader.enabled & target.time_to_die >= 15 & ! variable.wingleader_force_timings || boss & fight_remains <= 30",
|
|
["action"] = "breath_of_eons",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( cooldown.ebon_might.remains <= 4 || buff.ebon_might_self.up ) & fight_remains > 15 & raid_event.adds.in > 15 || fight_remains < 30 ) & boss",
|
|
["action"] = "breath_of_eons",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( cooldown.ebon_might.remains <= 4 || buff.ebon_might_self.up ) & fight_remains > 15 || fight_remains < 30 ) & ! boss",
|
|
["action"] = "breath_of_eons",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( cooldown.fire_breath.remains >? ( 20 + 10 * talent.tomorrow_today.enabled ) ) + ( cooldown.upheaval.remains >? ( 20 + 10 * talent.tomorrow_today.enabled ) ) ) >= 30 & cooldown.breath_of_eons.remains >= 20",
|
|
["action"] = "time_skip",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.dream_of_spring.enabled & buff.essence_burst.up & ( variable.spam_heal = 2 || variable.spam_heal = 1 & ! buff.ancient_flame.up & talent.ancient_flame.enabled ) & ( buff.ebon_might_self.up || essence.deficit = 0 || buff.essence_burst.stack = buff.essence_burst.max_stack & cooldown.ebon_might.remains > 4 )",
|
|
["action"] = "emerald_blossom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "living_flame",
|
|
["criteria"] = "talent.mass_eruption.enabled & buff.mass_eruption_stacks.up & ! buff.imminent_destruction.up & buff.essence_burst.stack < buff.essence_burst.max_stack & essence.deficit > 1 & ( buff.ebon_might_self.remains >= 6 || cooldown.ebon_might.remains <= 6 ) & debuff.bombardments.remains < action.eruption.execute_time & ( talent.pupil_of_alexstrasza.enabled || active_enemies = 1 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "azure_strike",
|
|
["criteria"] = "talent.mass_eruption.enabled & buff.mass_eruption_stacks.up & ! buff.imminent_destruction.up & buff.essence_burst.stack < buff.essence_burst.max_stack & essence.deficit > 1 & ( buff.ebon_might_self.remains >= 6 || cooldown.ebon_might.remains <= 6 ) & debuff.bombardments.remains < action.eruption.execute_time & ( talent.echoing_strike.enabled & active_enemies > 1 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "eruption",
|
|
["criteria"] = "( buff.ebon_might_self.remains > execute_time || essence.deficit = 0 || buff.essence_burst.stack = buff.essence_burst.max_stack & cooldown.ebon_might.remains > 4 ) & ! variable.pool_for_id",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.blistering_scales = 0 & buff.ebon_might_self.down",
|
|
["action"] = "blistering_scales",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "filler",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "spam_heal",
|
|
["default"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "minimum_opener_delay",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.minimum_opener_delay",
|
|
["criteria"] = "! talent.interwoven_threads.enabled",
|
|
["var_name"] = "opener_delay",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.minimum_opener_delay + variable.opener_delay",
|
|
["criteria"] = "talent.interwoven_threads.enabled",
|
|
["var_name"] = "opener_delay",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "opener_cds_detected",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.ruby_whelp_shell || trinket.t1.is.whispering_incarnate_icon || trinket.t1.is.ovinaxs_mercurial_egg || trinket.t1.is.aberrant_spellforge",
|
|
["var_name"] = "trinket_1_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.ruby_whelp_shell || trinket.t2.is.whispering_incarnate_icon || trinket.t2.is.ovinaxs_mercurial_egg || trinket.t2.is.aberrant_spellforge",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.nymues_unraveling_spindle || trinket.t1.is.spymasters_web || trinket.t1.is.treacherous_transmitter",
|
|
["description"] = "Nymues is complicated, Manual Handle",
|
|
["var_name"] = "trinket_1_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.nymues_unraveling_spindle || trinket.t2.is.spymasters_web || trinket.t2.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_2_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.beacon_to_the_beyond",
|
|
["var_name"] = "trinket_1_ogcd_cast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.beacon_to_the_beyond",
|
|
["var_name"] = "trinket_2_ogcd_cast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff ) & ! variable.trinket_1_exclude",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff ) & ! variable.trinket_2_exclude",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_1_sync",
|
|
["criteria"] = "variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % 120 = 0 )",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["criteria"] = "variable.trinket_2_buffs & ( trinket.t2.cooldown.duration % 120 = 0 )",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["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 ) * ( 0.5 + trinket.t2.has_use_buff * 3 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 0.5 + trinket.t1.has_use_buff * 3 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) * ( 1 + ( ( trinket.t1.ilvl - trinket.t2.ilvl ) / 100 ) ) )",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "damage_trinket_priority",
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_2_buffs & trinket.t2.ilvl >= trinket.t1.ilvl",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Double on use - Priotize Intellect on use trinkets over Nymues, force overwriting the normal logic to guarantee it is correct.",
|
|
["criteria"] = "( trinket.t1.is.nymues_unraveling_spindle || trinket.t2.is.nymues_unraveling_spindle ) & ( variable.trinket_1_buffs & variable.trinket_2_buffs )",
|
|
["var_name"] = "trinket_priority",
|
|
["action"] = "variable",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "hold_empower_for",
|
|
["default"] = "6",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "ebon_might_pandemic_threshold",
|
|
["default"] = "0.4",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "wingleader_force_timings",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "aberrant_spellforge",
|
|
["action"] = "aberrant_spellforge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.blistering_scales = 0",
|
|
["action"] = "blistering_scales",
|
|
},
|
|
{
|
|
["action"] = "living_flame",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["filler"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.ancient_flame.up || mana >= 200000 || ! talent.dream_of_spring.enabled || variable.spam_heal = 0 ) & ( active_enemies = 1 || talent.pupil_of_alexstrasza.enabled || buff.leaping_flames.up )",
|
|
["action"] = "living_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.ebon_might_self.up & talent.ancient_flame.enabled & talent.scarlet_adaptation.enabled & ! talent.dream_of_spring.enabled & ! buff.ancient_flame.up & active_enemies = 1",
|
|
["action"] = "emerald_blossom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.ebon_might_self.up & talent.ancient_flame.enabled & talent.scarlet_adaptation.enabled & ! buff.ancient_flame.up & ( ! talent.dream_of_spring.enabled || mana >= 200000 ) & active_enemies = 1",
|
|
["action"] = "verdant_embrace",
|
|
},
|
|
{
|
|
["action"] = "azure_strike",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["ebon_logic"] = {
|
|
{
|
|
["action"] = "ebon_might",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["fb"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.fire_breath.ready & buff.ebon_might_self.up",
|
|
["action"] = "tip_the_scales",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "4",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "fight_remains > 4 & talent.font_of_magic.enabled & ( buff.ebon_might_self.remains > cast_time & ( ! talent.molten_embers.enabled || cooldown.upheaval.remains <= ( 20 + 4 * talent.blast_furnace.enabled - 6 * 3 ) ) || buff.tip_the_scales.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "3",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "fight_remains > 8 & ( buff.ebon_might_self.remains > cast_time & ( ! talent.molten_embers.enabled || cooldown.upheaval.remains <= ( 20 + 4 * talent.blast_furnace.enabled - 6 * 2 ) ) || buff.tip_the_scales.up || empowering.fire_breath )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "2",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "fight_remains > 12 & ( buff.ebon_might_self.remains > cast_time & ( ! talent.molten_embers.enabled || cooldown.upheaval.remains <= ( 20 + 4 * talent.blast_furnace.enabled - 6 * 1 ) ) || empowering.fire_breath )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "1",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "fight_remains > 16 & ( buff.ebon_might_self.remains > cast_time & ( ! talent.molten_embers.enabled || cooldown.upheaval.remains <= ( 20 + 4 * talent.blast_furnace.enabled - 6 * 0 ) ) || empowering.fire_breath )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "4",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "fight_remains > 4 & talent.font_of_magic.enabled & ( buff.ebon_might_self.remains > cast_time ) || empowering.fire_breath",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241206,
|
|
["warnings"] = "The import for 'filler' required some automated changes.\nLine 1: Converted 'talent.dream_of_spring' to 'talent.dream_of_spring.enabled' (1x).\nLine 1: Converted 'talent.pupil_of_alexstrasza' to 'talent.pupil_of_alexstrasza.enabled' (1x).\nLine 2: Converted 'talent.ancient_flame' to 'talent.ancient_flame.enabled' (1x).\nLine 2: Converted 'talent.scarlet_adaptation' to 'talent.scarlet_adaptation.enabled' (1x).\nLine 2: Converted 'talent.dream_of_spring' to 'talent.dream_of_spring.enabled' (1x).\nLine 3: Converted 'talent.ancient_flame' to 'talent.ancient_flame.enabled' (1x).\nLine 3: Converted 'talent.scarlet_adaptation' to 'talent.scarlet_adaptation.enabled' (1x).\nLine 3: Converted 'talent.dream_of_spring' to 'talent.dream_of_spring.enabled' (1x).\n\nThe import for 'opener_filler' required some automated changes.\nLine 5: Converted 'talent.pupil_of_alexstrasza' to 'talent.pupil_of_alexstrasza.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 5: Converted 'talent.imminent_destruction' to 'talent.imminent_destruction.enabled' (1x).\nLine 6: Converted 'talent.anachronism' to 'talent.anachronism.enabled' (1x).\nLine 7: Converted 'trinket.1.is.ovinaxs_mercurial_egg' to 'trinket.t1.is.ovinaxs_mercurial_egg' (1x).\nLine 7: Converted 'trinket.2.is.ovinaxs_mercurial_egg' to 'trinket.t2.is.ovinaxs_mercurial_egg' (1x).\nLine 13: Converted 'talent.threads_of_fate' to 'talent.threads_of_fate.enabled' (1x).\nLine 14: Converted 'talent.time_skip' to 'talent.time_skip.enabled' (1x).\nLine 14: Converted 'talent.interwoven_threads' to 'talent.interwoven_threads.enabled' (1x).\nLine 16: Converted 'talent.time_skip' to 'talent.time_skip.enabled' (1x).\nLine 16: Converted 'talent.interwoven_threads' to 'talent.interwoven_threads.enabled' (1x).\nLine 17: Converted 'talent.breath_of_eons' to 'talent.breath_of_eons.enabled' (1x).\nLine 17: Converted 'talent.wingleader' to 'talent.wingleader.enabled' (1x).\nLine 18: Converted 'talent.molten_embers' to 'talent.molten_embers.enabled' (1x).\nLine 18: Converted 'talent.breath_of_eons' to 'talent.breath_of_eons.enabled' (1x).\nLine 18: Converted 'talent.wingleader' to 'talent.wingleader.enabled' (1x).\nLine 19: Converted 'talent.wingleader' to 'talent.wingleader.enabled' (1x).\nLine 22: Converted 'talent.tomorrow_today' to 'talent.tomorrow_today.enabled' (1x).\nLine 22: Converted 'talent.tomorrow_today' to 'talent.tomorrow_today.enabled' (1x).\nLine 23: Converted 'talent.dream_of_spring' to 'talent.dream_of_spring.enabled' (1x).\nLine 23: Converted 'talent.ancient_flame' to 'talent.ancient_flame.enabled' (1x).\nLine 24: Converted 'talent.mass_eruption' to 'talent.mass_eruption.enabled' (1x).\nLine 24: Converted 'talent.pupil_of_alexstrasza' to 'talent.pupil_of_alexstrasza.enabled' (1x).\nLine 25: Converted 'talent.mass_eruption' to 'talent.mass_eruption.enabled' (1x).\nLine 25: Converted 'talent.echoing_strike' to 'talent.echoing_strike.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 3: Converted 'talent.interwoven_threads' to 'talent.interwoven_threads.enabled' (1x).\nLine 4: Converted 'talent.interwoven_threads' to 'talent.interwoven_threads.enabled' (1x).\nLine 6: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 6: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 6: Converted 'trinket.1.is.ovinaxs_mercurial_egg' to 'trinket.t1.is.ovinaxs_mercurial_egg' (1x).\nLine 6: Converted 'trinket.1.is.aberrant_spellforge' to 'trinket.t1.is.aberrant_spellforge' (1x).\nLine 7: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 7: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (1x).\nLine 7: Converted 'trinket.2.is.ovinaxs_mercurial_egg' to 'trinket.t2.is.ovinaxs_mercurial_egg' (1x).\nLine 7: Converted 'trinket.2.is.aberrant_spellforge' to 'trinket.t2.is.aberrant_spellforge' (1x).\nLine 8: Converted 'trinket.1.is.nymues_unraveling_spindle' to 'trinket.t1.is.nymues_unraveling_spindle' (1x).\nLine 8: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 8: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 9: Converted 'trinket.2.is.nymues_unraveling_spindle' to 'trinket.t2.is.nymues_unraveling_spindle' (1x).\nLine 9: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 9: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 10: Converted 'trinket.1.is.beacon_to_the_beyond' to 'trinket.t1.is.beacon_to_the_beyond' (1x).\nLine 11: Converted 'trinket.2.is.beacon_to_the_beyond' to 'trinket.t2.is.beacon_to_the_beyond' (1x).\nLine 12: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 12: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 12: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 12: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 12: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 12: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 12: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 12: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 12: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 12: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 12: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 13: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 13: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 13: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 13: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 13: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 13: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 13: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 13: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 13: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 13: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 13: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 14: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%120=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%120=0)'.\nLine 15: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 15: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 15: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%120=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%120=0)'.\nLine 16: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 16: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 16: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 16: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 16: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 16: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 16: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 16: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 16: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 16: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 16: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 16: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 16: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 16: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 16: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 16: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 16: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 16: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 16: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nLine 16: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 16: 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)*(0.5+trinket.t2.has_use_buff*3+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(0.5+trinket.t1.has_use_buff*3+trinket.t1.has_use_buff)*(variable.trinket_1_sync)*(1+((trinket.t1.ilvl-trinket.t2.ilvl)%100)))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs&(trinket.t2.has_cooldown&!variable.trinket_2_exclude||!trinket.t1.has_cooldown)||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/trinket.t2.buff_duration)*(0.5+trinket.t2.has_use_buff*3+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(0.5+trinket.t1.has_use_buff*3+trinket.t1.has_use_buff)*(variable.trinket_1_sync)*(1+((trinket.t1.ilvl-trinket.t2.ilvl)/100)))'.\nLine 17: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 17: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nLine 18: Converted 'trinket.1.is.nymues_unraveling_spindle' to 'trinket.t1.is.nymues_unraveling_spindle' (1x).\nLine 18: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 18: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 18: Converted 'trinket.2.is.nymues_unraveling_spindle' to 'trinket.t2.is.nymues_unraveling_spindle' (1x).\nLine 18: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 18: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 18: Converted 'trinket.1.is.nymues_unraveling_spindle' to 'trinket.t1.is.nymues_unraveling_spindle' (1x).\nLine 18: Converted 'trinket.2.is.nymues_unraveling_spindle' to 'trinket.t2.is.nymues_unraveling_spindle' (1x).\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'items' required some automated changes.\nLine 1: Converted 'trinket.1.is.nymues_unraveling_spindle' to 'trinket.t1.is.nymues_unraveling_spindle' (1x).\nLine 1: Converted 'trinket.2.is.nymues_unraveling_spindle' to 'trinket.t2.is.nymues_unraveling_spindle' (1x).\nLine 1: Converted 'trinket.1.is.nymues_unraveling_spindle' to 'trinket.t1.is.nymues_unraveling_spindle' (1x).\nLine 1: Converted 'trinket.2.is.nymues_unraveling_spindle' to 'trinket.t2.is.nymues_unraveling_spindle' (1x).\nLine 3: Converted 'talent.wingleader' to 'talent.wingleader.enabled' (1x).\nLine 4: Converted 'talent.interwoven_threads' to 'talent.interwoven_threads.enabled' (1x).\nLine 4: Converted 'talent.wingleader' to 'talent.wingleader.enabled' (1x).\nLine 4: Converted 'talent.time_skip' to 'talent.time_skip.enabled' (1x).\nLine 4: Converted 'talent.interwoven_threads' to 'talent.interwoven_threads.enabled' (1x).\nLine 4: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (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.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (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.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.cooldown.up' to 'trinket.t2.cooldown.up' (1x).\nLine 5: Converted 'trinket.2.cooldown.up' to 'trinket.t2.cooldown.up'.\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.cooldown.up' to 'trinket.t1.cooldown.up' (1x).\nLine 6: Converted 'trinket.1.cooldown.up' to 'trinket.t1.cooldown.up'.\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 7: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (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 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 8: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 8: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 8: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 9: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 9: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 9: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 10: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 10: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 10: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (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'.\n\nThe import for 'fb' required some automated changes.\nLine 2: Converted 'talent.font_of_magic' to 'talent.font_of_magic.enabled' (1x).\nLine 2: Converted 'talent.molten_embers' to 'talent.molten_embers.enabled' (1x).\nLine 2: Converted 'talent.blast_furnace' to 'talent.blast_furnace.enabled' (1x).\nLine 3: Converted 'talent.molten_embers' to 'talent.molten_embers.enabled' (1x).\nLine 3: Converted 'talent.blast_furnace' to 'talent.blast_furnace.enabled' (1x).\nLine 4: Converted 'talent.molten_embers' to 'talent.molten_embers.enabled' (1x).\nLine 4: Converted 'talent.blast_furnace' to 'talent.blast_furnace.enabled' (1x).\nLine 5: Converted 'talent.molten_embers' to 'talent.molten_embers.enabled' (1x).\nLine 5: Converted 'talent.blast_furnace' to 'talent.blast_furnace.enabled' (1x).\nLine 6: Converted 'talent.font_of_magic' to 'talent.font_of_magic.enabled' (1x).\n\nImported 7 action lists.\n",
|
|
["author"] = "Saeldur (Icy-Veins); SimC",
|
|
["profile"] = "actions.precombat+=/variable,name=spam_heal,default=1,op=reset\nactions.precombat+=/variable,name=minimum_opener_delay,op=reset,default=0\nactions.precombat+=/variable,name=opener_delay,value=variable.minimum_opener_delay,if=!talent.interwoven_threads\nactions.precombat+=/variable,name=opener_delay,value=variable.minimum_opener_delay+variable.opener_delay,if=talent.interwoven_threads\nactions.precombat+=/variable,name=opener_cds_detected,op=reset,default=0\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell||trinket.1.is.whispering_incarnate_icon||trinket.1.is.ovinaxs_mercurial_egg||trinket.1.is.aberrant_spellforge\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell||trinket.2.is.whispering_incarnate_icon||trinket.2.is.ovinaxs_mercurial_egg||trinket.2.is.aberrant_spellforge\n# Nymues is complicated, Manual Handle\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.nymues_unraveling_spindle||trinket.1.is.spymasters_web||trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.nymues_unraveling_spindle||trinket.2.is.spymasters_web||trinket.2.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_1_ogcd_cast,value=trinket.1.is.beacon_to_the_beyond\nactions.precombat+=/variable,name=trinket_2_ogcd_cast,value=trinket.2.is.beacon_to_the_beyond\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(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)&!variable.trinket_1_exclude\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(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)&!variable.trinket_2_exclude\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%120=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%%120=0)\nactions.precombat+=/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)*(0.5+trinket.2.has_buff.intellect*3+trinket.2.has_buff.mastery)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(0.5+trinket.1.has_buff.intellect*3+trinket.1.has_buff.mastery)*(variable.trinket_1_sync)*(1+((trinket.1.ilvl-trinket.2.ilvl)%100)))\nactions.precombat+=/variable,name=damage_trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&!variable.trinket_2_buffs&trinket.2.ilvl>=trinket.1.ilvl\n# Double on use - Priotize Intellect on use trinkets over Nymues, force overwriting the normal logic to guarantee it is correct.\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=trinket.1.is.nymues_unraveling_spindle&trinket.2.has_buff.intellect||trinket.2.is.nymues_unraveling_spindle&!trinket.1.has_buff.intellect,if=(trinket.1.is.nymues_unraveling_spindle||trinket.2.is.nymues_unraveling_spindle)&(variable.trinket_1_buffs&variable.trinket_2_buffs)\nactions.precombat+=/variable,name=hold_empower_for,op=reset,default=6\nactions.precombat+=/variable,name=ebon_might_pandemic_threshold,op=reset,default=0.4\nactions.precombat+=/variable,name=wingleader_force_timings,op=reset,default=0\nactions.precombat+=/use_item,name=aberrant_spellforge\nactions.precombat+=/blistering_scales,if=active_dot.blistering_scales=0\nactions.precombat+=/living_flame\n\nactions+=/quell\nactions+=/unravel\nactions+=/variable,name=temp_wound,value=debuff.temporal_wound.remains\nactions+=/variable,name=eons_remains,op=setif,value=cooldown.breath_of_eons.remains\nactions+=/variable,name=pool_for_id,if=talent.imminent_destruction,default=0,op=set,value=(variable.eons_remains<8)&essence.deficit>=1&!buff.essence_burst.up\nactions+=/prescience,cycle_targets=1,if=(solo&buff.prescience.remains<1||group&active_dot.prescience<2)&((full_recharge_time<=gcd.max*3||cooldown.ebon_might.remains<=gcd.max*3&(buff.ebon_might_self.remains-gcd.max*3)<=buff.ebon_might_self.duration*variable.ebon_might_pandemic_threshold||boss&fight_remains<=30)||variable.eons_remains<=8||talent.anachronism&buff.imminent_destruction.up&essence<1&!cooldown.fire_breath.up&!cooldown.upheaval.up)&debuff.prescience.remains<gcd.max*2\n## actions+=/prescience,cycle_targets=1,if=full_recharge_time<=gcd.max*3&debuff.prescience.remains<gcd.max*2&(target.spec.augmentation||target.role.tank)\nactions+=/hover,use_off_gcd=1,if=gcd.remains>=0.5&(!raid_event.movement.exists&(trinket.1.is.ovinaxs_mercurial_egg||trinket.2.is.ovinaxs_mercurial_egg)||raid_event.movement.in<=6)\nactions+=/potion,if=variable.eons_remains<=0||boss&fight_remains<=30\nactions+=/call_action_list,name=ebon_logic,if=active_dot.ebon_might=0||(buff.ebon_might_self.remains-action.ebon_might.cast_time)<=buff.ebon_might_self.duration*variable.ebon_might_pandemic_threshold\nactions+=/call_action_list,name=items\nactions+=/run_action_list,name=opener_filler,if=variable.opener_delay>0&boss\nactions+=/deep_breath\nactions+=/tip_the_scales,if=talent.threads_of_fate&(prev_gcd.1.breath_of_eons||boss&fight_remains<=30)\nactions+=/variable,name=fb_condition,value=cooldown.time_skip.up&talent.time_skip&!talent.interwoven_threads||empowering.fire_breath\nactions+=/call_action_list,name=fb,if=variable.fb_condition\nactions+=/upheaval,cycle_targets=1,empower_to=1,if=target.time_to_die>cast_time+0.2&buff.ebon_might_self.remains>duration&cooldown.time_skip.up&talent.time_skip&!talent.interwoven_threads||empowering.upheaval\nactions+=/call_action_list,name=fb,if=!variable.fb_condition&(variable.eons_remains>=variable.hold_empower_for||!talent.breath_of_eons||variable.eons_remains=0&talent.wingleader)\nactions+=/upheaval,cycle_targets=1,empower_to=1,if=target.time_to_die>cast_time+0.2&buff.ebon_might_self.remains>duration&(!talent.molten_embers||dot.fire_breath_damage.ticking||cooldown.fire_breath.remains>=10)&(cooldown.breath_of_eons.remains>=variable.hold_empower_for||!talent.breath_of_eons||talent.wingleader)\nactions+=/breath_of_eons,if=talent.wingleader&target.time_to_die>=15&!variable.wingleader_force_timings||boss&fight_remains<=30\nactions+=/breath_of_eons,if=((cooldown.ebon_might.remains<=4||buff.ebon_might_self.up)&fight_remains>15&raid_event.adds.in>15||fight_remains<30)&boss\nactions+=/breath_of_eons,if=((cooldown.ebon_might.remains<=4||buff.ebon_might_self.up)&fight_remains>15||fight_remains<30)&!boss\nactions+=/time_skip,if=((cooldown.fire_breath.remains>?(20+10*talent.tomorrow_today))+(cooldown.upheaval.remains>?(20+10*talent.tomorrow_today)))>=30&cooldown.breath_of_eons.remains>=20\nactions+=/emerald_blossom,if=talent.dream_of_spring&buff.essence_burst.up&(variable.spam_heal=2||variable.spam_heal=1&!buff.ancient_flame.up&talent.ancient_flame)&(buff.ebon_might_self.up||essence.deficit=0||buff.essence_burst.stack=buff.essence_burst.max_stack&cooldown.ebon_might.remains>4)\nactions+=/living_flame,cycle_targets=1,if=talent.mass_eruption&buff.mass_eruption_stacks.up&!buff.imminent_destruction.up&buff.essence_burst.stack<buff.essence_burst.max_stack&essence.deficit>1&(buff.ebon_might_self.remains>=6||cooldown.ebon_might.remains<=6)&debuff.bombardments.remains<action.eruption.execute_time&(talent.pupil_of_alexstrasza||active_enemies=1)\nactions+=/azure_strike,cycle_targets=1,if=talent.mass_eruption&buff.mass_eruption_stacks.up&!buff.imminent_destruction.up&buff.essence_burst.stack<buff.essence_burst.max_stack&essence.deficit>1&(buff.ebon_might_self.remains>=6||cooldown.ebon_might.remains<=6)&debuff.bombardments.remains<action.eruption.execute_time&(talent.echoing_strike&active_enemies>1)\nactions+=/eruption,cycle_targets=1,if=(buff.ebon_might_self.remains>execute_time||essence.deficit=0||buff.essence_burst.stack=buff.essence_burst.max_stack&cooldown.ebon_might.remains>4)&!variable.pool_for_id\nactions+=/blistering_scales,if=active_dot.blistering_scales=0&buff.ebon_might_self.down\nactions+=/run_action_list,name=filler\n\nactions.ebon_logic+=/ebon_might\n\nactions.fb+=/tip_the_scales,if=cooldown.fire_breath.ready&buff.ebon_might_self.up\nactions.fb+=/fire_breath,empower_to=4,cycle_targets=1,if=fight_remains>4&talent.font_of_magic&(buff.ebon_might_self.remains>cast_time&(!talent.molten_embers||cooldown.upheaval.remains<=(20+4*talent.blast_furnace-6*3))||buff.tip_the_scales.up)\nactions.fb+=/fire_breath,empower_to=3,cycle_targets=1,if=fight_remains>8&(buff.ebon_might_self.remains>cast_time&(!talent.molten_embers||cooldown.upheaval.remains<=(20+4*talent.blast_furnace-6*2))||buff.tip_the_scales.up||empowering.fire_breath)\nactions.fb+=/fire_breath,empower_to=2,cycle_targets=1,if=fight_remains>12&(buff.ebon_might_self.remains>cast_time&(!talent.molten_embers||cooldown.upheaval.remains<=(20+4*talent.blast_furnace-6*1))||empowering.fire_breath)\nactions.fb+=/fire_breath,empower_to=1,cycle_targets=1,if=fight_remains>16&(buff.ebon_might_self.remains>cast_time&(!talent.molten_embers||cooldown.upheaval.remains<=(20+4*talent.blast_furnace-6*0))||empowering.fire_breath)\nactions.fb+=/fire_breath,empower_to=4,cycle_targets=1,if=fight_remains>4&talent.font_of_magic&(buff.ebon_might_self.remains>cast_time)||empowering.fire_breath\n\nactions.filler+=/living_flame,if=(buff.ancient_flame.up||mana>=200000||!talent.dream_of_spring||variable.spam_heal=0)&(active_enemies=1||talent.pupil_of_alexstrasza||buff.leaping_flames.up)\nactions.filler+=/emerald_blossom,if=!buff.ebon_might_self.up&talent.ancient_flame&talent.scarlet_adaptation&!talent.dream_of_spring&!buff.ancient_flame.up&active_enemies=1\nactions.filler+=/verdant_embrace,if=!buff.ebon_might_self.up&talent.ancient_flame&talent.scarlet_adaptation&!buff.ancient_flame.up&(!talent.dream_of_spring||mana>=200000)&active_enemies=1\nactions.filler+=/azure_strike\n\nactions.items+=/use_item,name=nymues_unraveling_spindle,if=cooldown.breath_of_eons.remains<=3&(trinket.1.is.nymues_unraveling_spindle&variable.trinket_priority=1||trinket.2.is.nymues_unraveling_spindle&variable.trinket_priority=2)||(cooldown.fire_breath.remains<=4||cooldown.upheaval.remains<=4)&cooldown.breath_of_eons.remains>10&!(debuff.temporal_wound.up||prev_gcd.1.breath_of_eons)&(trinket.1.is.nymues_unraveling_spindle&variable.trinket_priority=2||trinket.2.is.nymues_unraveling_spindle&variable.trinket_priority=1)\nactions.items+=/use_item,name=aberrant_spellforge\nactions.items+=/use_item,name=treacherous_transmitter,if=cooldown.breath_of_eons.remains<=10&talent.wingleader||boss&fight_remains<=15\n## actions.items+=/do_treacherous_transmitter_task,use_off_gcd=1,if=(debuff.temporal_wound.up||prev_gcd.1.breath_of_eons||fight_remains<=15)\nactions.items+=/use_item,name=spymasters_web,if=(debuff.temporal_wound.up||prev_gcd.1.breath_of_eons)&(fight_remains<=130-(30+12*talent.interwoven_threads)*talent.wingleader-20*talent.time_skip*(cooldown.time_skip.remains<=90)*!talent.interwoven_threads)||(boss&fight_remains<=20||active_dot.breath_of_eons>0&fight_remains<=60)&(trinket.1.is.spymasters_web&(trinket.2.cooldown.duration=0||trinket.2.cooldown.remains>=10||variable.trinket_2_exclude)||trinket.2.is.spymasters_web&(trinket.1.cooldown.duration=0||trinket.1.cooldown.remains>=10||variable.trinket_1_exclude))&!buff.spymasters_web.up\nactions.items+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&!variable.trinket_1_manual&!variable.trinket_1_exclude&((debuff.temporal_wound.up||prev_gcd.1.breath_of_eons)||variable.trinket_2_buffs&!trinket.2.cooldown.up&(prev_gcd.1.fire_breath||prev_gcd.1.upheaval)&buff.ebon_might_self.up)&(variable.trinket_2_exclude||!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains&boss\nactions.items+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&!variable.trinket_2_exclude&((debuff.temporal_wound.up||prev_gcd.1.breath_of_eons)||variable.trinket_1_buffs&!trinket.1.cooldown.up&(prev_gcd.1.fire_breath||prev_gcd.1.upheaval)&buff.ebon_might_self.up)&(variable.trinket_1_exclude||!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains&boss\n## Azure Strike for OGCD trinkets. Ideally this would be Prescience casts in reality but this is simpler and seems to have no noticeable diferrence in DPS.\n## actions.items+=/azure_strike,if=cooldown.item_cd_1141.up&(variable.trinket_1_ogcd_cast&trinket.1.cooldown.up&(variable.damage_trinket_priority=1||trinket.2.cooldown.remains)||variable.trinket_2_ogcd_cast&trinket.2.cooldown.up&(variable.damage_trinket_priority=2||trinket.1.cooldown.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.items+=/use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&!variable.trinket_1_exclude&(variable.damage_trinket_priority=1||trinket.2.cooldown.remains||trinket.2.is.spymasters_web&buff.spymasters_report.stack<30||variable.eons_remains>=20||trinket.2.cooldown.duration=0||variable.trinket_2_exclude)&(gcd.remains>0.1&variable.trinket_1_ogcd_cast)\nactions.items+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&!variable.trinket_2_exclude&(variable.damage_trinket_priority=2||trinket.1.cooldown.remains||trinket.1.is.spymasters_web&buff.spymasters_report.stack<30||variable.eons_remains>=20||trinket.1.cooldown.duration=0||variable.trinket_1_exclude)&(gcd.remains>0.1&variable.trinket_2_ogcd_cast)\nactions.items+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&!variable.trinket_1_exclude&(variable.damage_trinket_priority=1||trinket.2.cooldown.remains||trinket.2.is.spymasters_web&buff.spymasters_report.stack<30||variable.eons_remains>=20||trinket.2.cooldown.duration=0||variable.trinket_2_exclude)&(!variable.trinket_1_ogcd_cast)\nactions.items+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&!variable.trinket_2_exclude&(variable.damage_trinket_priority=2||trinket.1.cooldown.remains||trinket.1.is.spymasters_web&buff.spymasters_report.stack<30||variable.eons_remains>=20||trinket.1.cooldown.duration=0||variable.trinket_1_exclude)&(!variable.trinket_2_ogcd_cast)\n# Use on use weapons\nactions.items+=/use_item,slot=main_hand,use_off_gcd=1,if=gcd.remains>=gcd.max*0.6\n\nactions.opener_filler+=/variable,name=opener_delay,value=variable.opener_delay>?variable.minimum_opener_delay,if=!variable.opener_cds_detected&(solo||active_dot.breath_of_eons>0)\nactions.opener_filler+=/variable,name=opener_delay,value=variable.opener_delay-1\nactions.opener_filler+=/variable,name=opener_cds_detected,value=cooldown.breath_of_eons.remains>0||action.breath_of_eons.time_since<time\nactions.opener_filler+=/eruption,if=variable.opener_delay>=3\nactions.opener_filler+=/living_flame,if=active_enemies=1||talent.pupil_of_alexstrasza||buff.leaping_flames.up\nactions.opener_filler+=/azure_strike",
|
|
},
|
|
["Beast Mastery"] = {
|
|
["source"] = "# https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241103,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-11-03: SimC updates\n\n2024-10-26: SimC updates\n\n2024-10-23: 11.0.5\n\n2024-09-22: SimC update\n\n2024-08-22: SimC update\n\n2024-08-01: Respect Hunter's Mark setting\n\n2024-07-27: Add Call of the Wild talent checks; use Counter Shot; use Hunter's Mark\n\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "counter_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "tranquilizing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.health_pct < pet_healing",
|
|
["action"] = "mend_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies < 2 || ! talent.beast_cleave.enabled & active_enemies < 3",
|
|
["list_name"] = "st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies > 2 || talent.beast_cleave.enabled & active_enemies > 1",
|
|
["list_name"] = "cleave",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "summon_pet",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! trinket.t2.has_cooldown || trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff || ! trinket.t1.is.mirror_of_fractured_tomorrows & ( trinket.t2.is.mirror_of_fractured_tomorrows || trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) ) || ! trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) )",
|
|
["var_name"] = "trinket_1_stronger",
|
|
["description"] = "Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! variable.trinket_1_stronger",
|
|
["var_name"] = "trinket_2_stronger",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.vicious_hunt.enabled & talent.call_of_the_wild.enabled",
|
|
["action"] = "bestial_wrath",
|
|
},
|
|
},
|
|
["cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frenzy.up & buff.frenzy.remains <= gcd.max + 0.25 || buff.frenzy.stack < 3 & ( cooldown.bestial_wrath.ready & ( ! buff.frenzy.up || talent.scent_of_blood.enabled ) || talent.call_of_the_wild.enabled & cooldown.call_of_the_wild.ready ) || talent.wild_call.enabled & charges_fractional > 1.8",
|
|
["action"] = "barbed_shot",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.beast_cleave.remains < 0.25 + gcd.max & ( ! talent.bloody_frenzy.enabled || cooldown.call_of_the_wild.remains )",
|
|
["action"] = "multishot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.beast_cleave.up",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadow_hounds.enabled",
|
|
["action"] = "dire_beast",
|
|
},
|
|
{
|
|
["action"] = "call_of_the_wild",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bestial_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodshed",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.furious_assault.enabled || talent.black_arrow.enabled & ( talent.barbed_scales.enabled || talent.savagery.enabled ) || fight_remains < 9",
|
|
["action"] = "barbed_shot",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "kill_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "dire_beast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus.time_to_max < gcd.max * 2",
|
|
["action"] = "cobra_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( focus + focus.regen + 30 ) < focus.max",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 16",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 16",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 9",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 31",
|
|
["action"] = "potion",
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frenzy.up & buff.frenzy.remains <= gcd.max + barbed_shot_grace_period || buff.frenzy.stack < 3 & ( cooldown.bestial_wrath.ready & ( ! buff.frenzy.up || talent.scent_of_blood.enabled ) || talent.call_of_the_wild.enabled & cooldown.call_of_the_wild.ready )",
|
|
["action"] = "barbed_shot",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "dire_beast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.call_of_the_wild.enabled & cooldown.call_of_the_wild.remains < gcd.max + 0.25",
|
|
["action"] = "kill_command",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.venoms_bite.enabled & dot.serpent_sting.refreshable",
|
|
["action"] = "black_arrow",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.venoms_bite.enabled & dot.serpent_sting.refreshable",
|
|
["action"] = "kill_shot",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "call_of_the_wild",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodshed",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bestial_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "kill_command",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.wild_call.enabled & charges_fractional > 1.4 || buff.call_of_the_wild.up || full_recharge_time < gcd.max & cooldown.bestial_wrath.remains || talent.scent_of_blood.enabled & ( cooldown.bestial_wrath.remains < 12 + gcd.max ) || talent.furious_assault.enabled || talent.black_arrow.enabled & ( talent.barbed_scales.enabled || talent.savagery.enabled ) || boss & fight_remains < 9",
|
|
["action"] = "barbed_shot",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "black_arrow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "kill_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["action"] = "cobra_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "arcane_pulse",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( focus + focus.regen + 15 ) < focus.max",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.call_of_the_wild.enabled & ( prev_gcd.1.call_of_the_wild ) || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ( ! talent.call_of_the_wild.enabled & ! talent.bloodshed.enabled ) & ( buff.bestial_wrath.up || cooldown.bestial_wrath.remains_guess < 5 )",
|
|
["var_name"] = "sync_ready",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.call_of_the_wild.enabled & buff.call_of_the_wild.up || talent.bloodshed.enabled & prev_gcd.1.bloodshed || ( ! talent.call_of_the_wild.enabled & ! talent.bloodshed.enabled ) & buff.bestial_wrath.up",
|
|
["var_name"] = "sync_active",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "sync_remains",
|
|
["value"] = "cooldown.bestial_wrath.remains_guess",
|
|
["value_else"] = "cooldown.call_of_the_wild.remains || cooldown.bloodshed.remains",
|
|
["criteria"] = "! talent.call_of_the_wild.enabled & ! talent.bloodshed.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "trinket.t1.has_use_buff & ( variable.sync_ready & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) || ! variable.sync_ready & ( variable.trinket_1_stronger & ( variable.sync_remains > trinket.t1.cooldown.duration / 3 & boss & fight_remains > trinket.t1.cooldown.duration + 20 || trinket.t2.has_use_buff & trinket.t2.cooldown.remains > variable.sync_remains - 15 & trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 45 > fight_remains & boss ) || variable.trinket_2_stronger & ( trinket.t2.cooldown.remains & ( trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains >= 20 || trinket.t2.cooldown.remains - 5 >= variable.sync_remains & ( variable.sync_remains > trinket.t1.cooldown.duration / 3 || trinket.t1.cooldown.duration < fight_remains & boss & ( variable.sync_remains + trinket.t1.cooldown.duration > fight_remains ) ) ) || trinket.t2.cooldown.ready & variable.sync_remains > 20 & variable.sync_remains < trinket.t2.cooldown.duration / 3 ) ) ) || ! trinket.t1.has_use_buff & ( trinket.t1.cast_time = 0 || ! variable.sync_active ) & ( ! trinket.t2.has_use_buff & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) || trinket.t2.has_use_buff & ( ! variable.sync_active & variable.sync_remains > 20 || trinket.t2.cooldown.remains > 20 ) ) || boss & fight_remains < 25 & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "trinket.t2.has_use_buff & ( variable.sync_ready & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) || ! variable.sync_ready & ( variable.trinket_2_stronger & ( variable.sync_remains > trinket.t2.cooldown.duration / 3 & boss & fight_remains > trinket.t2.cooldown.duration + 20 || trinket.t1.has_use_buff & trinket.t1.cooldown.remains > variable.sync_remains - 15 & trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 45 > fight_remains & boss ) || variable.trinket_1_stronger & ( trinket.t1.cooldown.remains & ( trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains >= 20 || trinket.t1.cooldown.remains - 5 >= variable.sync_remains & ( variable.sync_remains > trinket.t2.cooldown.duration / 3 || trinket.t2.cooldown.duration < fight_remains & boss & ( variable.sync_remains + trinket.t2.cooldown.duration > fight_remains ) ) ) || trinket.t1.cooldown.ready & variable.sync_remains > 20 & variable.sync_remains < trinket.t1.cooldown.duration / 3 ) ) ) || ! trinket.t2.has_use_buff & ( trinket.t2.cast_time = 0 || ! variable.sync_active ) & ( ! trinket.t1.has_use_buff & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) || trinket.t1.has_use_buff & ( ! variable.sync_active & variable.sync_remains > 20 || trinket.t1.cooldown.remains > 20 ) ) || boss & fight_remains < 25 & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains )",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241103,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 7: Converted 'talent.beast_cleave' to 'talent.beast_cleave.enabled' (1x).\nLine 8: Converted 'talent.beast_cleave' to 'talent.beast_cleave.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'talent.vicious_hunt' to 'talent.vicious_hunt.enabled' (1x).\nLine 4: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 1: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 1: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 1: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 1: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 2: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 2: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 2: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 2: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 3: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 3: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted operations in 'trinket.t1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.t1.cooldown.duration%3&boss&fight_remains>trinket.t1.cooldown.duration+20||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-5<variable.sync_remains&variable.sync_remains+45>fight_remains&boss)||variable.trinket_2_stronger&(trinket.t2.cooldown.remains&(trinket.t2.cooldown.remains-5<variable.sync_remains&variable.sync_remains>=20||trinket.t2.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.t1.cooldown.duration%3||trinket.t1.cooldown.duration<fight_remains&boss&(variable.sync_remains+trinket.t1.cooldown.duration>fight_remains)))||trinket.t2.cooldown.ready&variable.sync_remains>20&variable.sync_remains<trinket.t2.cooldown.duration%3)))||!trinket.t1.has_use_buff&(trinket.t1.cast_time=0||!variable.sync_active)&(!trinket.t2.has_use_buff&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||trinket.t2.has_use_buff&(!variable.sync_active&variable.sync_remains>20||trinket.t2.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)' to 'trinket.t1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.t1.cooldown.duration/3&boss&fight_remains>trinket.t1.cooldown.duration+20||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-5<variable.sync_remains&variable.sync_remains+45>fight_remains&boss)||variable.trinket_2_stronger&(trinket.t2.cooldown.remains&(trinket.t2.cooldown.remains-5<variable.sync_remains&variable.sync_remains>=20||trinket.t2.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.t1.cooldown.duration/3||trinket.t1.cooldown.duration<fight_remains&boss&(variable.sync_remains+trinket.t1.cooldown.duration>fight_remains)))||trinket.t2.cooldown.ready&variable.sync_remains>20&variable.sync_remains<trinket.t2.cooldown.duration/3)))||!trinket.t1.has_use_buff&(trinket.t1.cast_time=0||!variable.sync_active)&(!trinket.t2.has_use_buff&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||trinket.t2.has_use_buff&(!variable.sync_active&variable.sync_remains>20||trinket.t2.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)'.\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 5: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted operations in 'trinket.t2.has_use_buff&(variable.sync_ready&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)||!variable.sync_ready&(variable.trinket_2_stronger&(variable.sync_remains>trinket.t2.cooldown.duration%3&boss&fight_remains>trinket.t2.cooldown.duration+20||trinket.t1.has_use_buff&trinket.t1.cooldown.remains>variable.sync_remains-15&trinket.t1.cooldown.remains-5<variable.sync_remains&variable.sync_remains+45>fight_remains&boss)||variable.trinket_1_stronger&(trinket.t1.cooldown.remains&(trinket.t1.cooldown.remains-5<variable.sync_remains&variable.sync_remains>=20||trinket.t1.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.t2.cooldown.duration%3||trinket.t2.cooldown.duration<fight_remains&boss&(variable.sync_remains+trinket.t2.cooldown.duration>fight_remains)))||trinket.t1.cooldown.ready&variable.sync_remains>20&variable.sync_remains<trinket.t1.cooldown.duration%3)))||!trinket.t2.has_use_buff&(trinket.t2.cast_time=0||!variable.sync_active)&(!trinket.t1.has_use_buff&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)||trinket.t1.has_use_buff&(!variable.sync_active&variable.sync_remains>20||trinket.t1.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)' to 'trinket.t2.has_use_buff&(variable.sync_ready&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)||!variable.sync_ready&(variable.trinket_2_stronger&(variable.sync_remains>trinket.t2.cooldown.duration/3&boss&fight_remains>trinket.t2.cooldown.duration+20||trinket.t1.has_use_buff&trinket.t1.cooldown.remains>variable.sync_remains-15&trinket.t1.cooldown.remains-5<variable.sync_remains&variable.sync_remains+45>fight_remains&boss)||variable.trinket_1_stronger&(trinket.t1.cooldown.remains&(trinket.t1.cooldown.remains-5<variable.sync_remains&variable.sync_remains>=20||trinket.t1.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.t2.cooldown.duration/3||trinket.t2.cooldown.duration<fight_remains&boss&(variable.sync_remains+trinket.t2.cooldown.duration>fight_remains)))||trinket.t1.cooldown.ready&variable.sync_remains>20&variable.sync_remains<trinket.t1.cooldown.duration/3)))||!trinket.t2.has_use_buff&(trinket.t2.cast_time=0||!variable.sync_active)&(!trinket.t1.has_use_buff&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)||trinket.t1.has_use_buff&(!variable.sync_active&variable.sync_remains>20||trinket.t1.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_2_stronger||trinket.t1.cooldown.remains)'.\n\nThe import for 'cds' required some automated changes.\nLine 1: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 1: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 2: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 2: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 3: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 3: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 4: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 4: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 5: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 5: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 1: Converted 'pet.main.buff.frenzy.up' to 'buff.frenzy.up' (1x).\nLine 1: Converted 'pet.main.buff.frenzy.remains' to 'buff.frenzy.remains' (1x).\nLine 1: Converted 'pet.main.buff.frenzy.stack' to 'buff.frenzy.stack' (1x).\nLine 1: Converted 'pet.main.buff.frenzy.up' to 'buff.frenzy.up' (1x).\nLine 1: Converted 'talent.scent_of_blood' to 'talent.scent_of_blood.enabled' (1x).\nLine 1: 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.venoms_bite' to 'talent.venoms_bite.enabled' (1x).\nLine 5: Converted 'talent.venoms_bite' to 'talent.venoms_bite.enabled' (1x).\nLine 10: Converted 'talent.wild_call' to 'talent.wild_call.enabled' (1x).\nLine 10: Converted 'talent.scent_of_blood' to 'talent.scent_of_blood.enabled' (1x).\nLine 10: Converted 'talent.furious_assault' to 'talent.furious_assault.enabled' (1x).\nLine 10: Converted 'talent.black_arrow' to 'talent.black_arrow.enabled' (1x).\nLine 10: Converted 'talent.barbed_scales' to 'talent.barbed_scales.enabled' (1x).\nLine 10: Converted 'talent.savagery' to 'talent.savagery.enabled' (1x).\n\nThe import for 'cleave' required some automated changes.\nLine 1: Converted 'pet.main.buff.frenzy.up' to 'buff.frenzy.up' (1x).\nLine 1: Converted 'pet.main.buff.frenzy.remains' to 'buff.frenzy.remains' (1x).\nLine 1: Converted 'pet.main.buff.frenzy.stack' to 'buff.frenzy.stack' (1x).\nLine 1: Converted 'pet.main.buff.frenzy.up' to 'buff.frenzy.up' (1x).\nLine 1: Converted 'talent.scent_of_blood' to 'talent.scent_of_blood.enabled' (1x).\nLine 1: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 1: Converted 'talent.wild_call' to 'talent.wild_call.enabled' (1x).\nLine 2: Converted 'talent.bloody_frenzy' to 'talent.bloody_frenzy.enabled' (1x).\nLine 4: Converted 'talent.shadow_hounds' to 'talent.shadow_hounds.enabled' (1x).\nLine 9: Converted 'talent.furious_assault' to 'talent.furious_assault.enabled' (1x).\nLine 9: Converted 'talent.black_arrow' to 'talent.black_arrow.enabled' (1x).\nLine 9: Converted 'talent.barbed_scales' to 'talent.barbed_scales.enabled' (1x).\nLine 9: Converted 'talent.savagery' to 'talent.savagery.enabled' (1x).\n\nImported 6 action lists.\n",
|
|
["profile"] = "actions.precombat+=/summon_pet\n# Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.\nactions.precombat+=/variable,name=trinket_1_stronger,value=!trinket.2.has_cooldown||trinket.1.has_use_buff&(!trinket.2.has_use_buff||!trinket.1.is.mirror_of_fractured_tomorrows&(trinket.2.is.mirror_of_fractured_tomorrows||trinket.2.cooldown.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.precombat+=/variable,name=trinket_2_stronger,value=!variable.trinket_1_stronger\nactions.precombat+=/bestial_wrath,if=talent.vicious_hunt&talent.call_of_the_wild\n\nactions+=/counter_shot\nactions+=/tranquilizing_shot\nactions+=/mend_pet,if=pet.health_pct<pet_healing\nactions+=/hunters_mark,if=(settings.mark_any||target.is_boss)&active_dot.hunters_mark=0&target.time_to_pct_80>20\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=trinkets\nactions+=/call_action_list,name=st,if=active_enemies<2||!talent.beast_cleave&active_enemies<3\nactions+=/call_action_list,name=cleave,if=active_enemies>2||talent.beast_cleave&active_enemies>1\n\n## actions.cds+=/invoke_external_buff,name=power_infusion,if=buff.call_of_the_wild.up||talent.bloodshed&(prev_gcd.1.bloodshed)||!talent.call_of_the_wild&(buff.bestial_wrath.up||cooldown.bestial_wrath.remains<30)||fight_remains<16\nactions.cds+=/berserking,if=buff.call_of_the_wild.up||talent.bloodshed&(prev_gcd.1.bloodshed)||!talent.call_of_the_wild&buff.bestial_wrath.up||boss&fight_remains<13\nactions.cds+=/blood_fury,if=buff.call_of_the_wild.up||talent.bloodshed&(prev_gcd.1.bloodshed)||!talent.call_of_the_wild&buff.bestial_wrath.up||boss&fight_remains<16\nactions.cds+=/ancestral_call,if=buff.call_of_the_wild.up||talent.bloodshed&(prev_gcd.1.bloodshed)||!talent.call_of_the_wild&buff.bestial_wrath.up||boss&fight_remains<16\nactions.cds+=/fireblood,if=buff.call_of_the_wild.up||talent.bloodshed&(prev_gcd.1.bloodshed)||!talent.call_of_the_wild&buff.bestial_wrath.up||boss&fight_remains<9\nactions.cds+=/potion,if=buff.call_of_the_wild.up||talent.bloodshed&(prev_gcd.1.bloodshed)||!talent.call_of_the_wild&buff.bestial_wrath.up||boss&fight_remains<31\n\nactions.cleave+=/barbed_shot,cycle_targets=1,if=pet.main.buff.frenzy.up&pet.main.buff.frenzy.remains<=gcd+0.25||pet.main.buff.frenzy.stack<3&(cooldown.bestial_wrath.ready&(!pet.main.buff.frenzy.up||talent.scent_of_blood)||talent.call_of_the_wild&cooldown.call_of_the_wild.ready)||talent.wild_call&charges_fractional>1.8\nactions.cleave+=/multishot,if=buff.beast_cleave.remains<0.25+gcd&(!talent.bloody_frenzy||cooldown.call_of_the_wild.remains)\nactions.cleave+=/black_arrow,if=buff.beast_cleave.up\nactions.cleave+=/dire_beast,if=talent.shadow_hounds\nactions.cleave+=/call_of_the_wild\nactions.cleave+=/bestial_wrath\nactions.cleave+=/bloodshed\nactions.cleave+=/kill_command,cycle_targets=1\nactions.cleave+=/barbed_shot,cycle_targets=1,if=buff.call_of_the_wild.up||talent.furious_assault||talent.black_arrow&(talent.barbed_scales||talent.savagery)||fight_remains<9\nactions.cleave+=/kill_shot\nactions.cleave+=/explosive_shot\nactions.cleave+=/dire_beast\nactions.cleave+=/lights_judgment,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.cleave+=/cobra_shot,if=focus.time_to_max<gcd*2\nactions.cleave+=/bag_of_tricks,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.cleave+=/arcane_torrent,if=(focus+focus.regen+30)<focus.max\n\nactions.st+=/barbed_shot,cycle_targets=1,if=pet.main.buff.frenzy.up&pet.main.buff.frenzy.remains<=gcd+barbed_shot_grace_period||pet.main.buff.frenzy.stack<3&(cooldown.bestial_wrath.ready&(!pet.main.buff.frenzy.up||talent.scent_of_blood)||talent.call_of_the_wild&cooldown.call_of_the_wild.ready)\nactions.st+=/dire_beast\nactions.st+=/kill_command,if=talent.call_of_the_wild&cooldown.call_of_the_wild.remains<gcd+0.25\nactions.st+=/black_arrow,cycle_targets=1,if=talent.venoms_bite&dot.serpent_sting.refreshable\nactions.st+=/kill_shot,cycle_targets=1,if=talent.venoms_bite&dot.serpent_sting.refreshable\nactions.st+=/call_of_the_wild\nactions.st+=/bloodshed\nactions.st+=/bestial_wrath\nactions.st+=/kill_command\nactions.st+=/barbed_shot,cycle_targets=1,if=talent.wild_call&charges_fractional>1.4||buff.call_of_the_wild.up||full_recharge_time<gcd&cooldown.bestial_wrath.remains||talent.scent_of_blood&(cooldown.bestial_wrath.remains<12+gcd)||talent.furious_assault||talent.black_arrow&(talent.barbed_scales||talent.savagery)||boss&fight_remains<9\nactions.st+=/black_arrow\nactions.st+=/kill_shot\nactions.st+=/lights_judgment,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/cobra_shot\nactions.st+=/bag_of_tricks,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/arcane_pulse,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/arcane_torrent,if=(focus+focus.regen+15)<focus.max\n\nactions.trinkets+=/variable,name=sync_ready,value=talent.call_of_the_wild&(prev_gcd.1.call_of_the_wild)||talent.bloodshed&(prev_gcd.1.bloodshed)||(!talent.call_of_the_wild&!talent.bloodshed)&(buff.bestial_wrath.up||cooldown.bestial_wrath.remains_guess<5)\nactions.trinkets+=/variable,name=sync_active,value=talent.call_of_the_wild&buff.call_of_the_wild.up||talent.bloodshed&prev_gcd.1.bloodshed||(!talent.call_of_the_wild&!talent.bloodshed)&buff.bestial_wrath.up\nactions.trinkets+=/variable,name=sync_remains,op=setif,value=cooldown.bestial_wrath.remains_guess,value_else=cooldown.call_of_the_wild.remains||cooldown.bloodshed.remains,condition=!talent.call_of_the_wild&!talent.bloodshed\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=trinket.1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger||trinket.2.cooldown.remains)||!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.1.cooldown.duration%3&boss&fight_remains>trinket.1.cooldown.duration+20||trinket.2.has_use_buff&trinket.2.cooldown.remains>variable.sync_remains-15&trinket.2.cooldown.remains-5<variable.sync_remains&variable.sync_remains+45>fight_remains&boss)||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%3||trinket.1.cooldown.duration<fight_remains&boss&(variable.sync_remains+trinket.1.cooldown.duration>fight_remains)))||trinket.2.cooldown.ready&variable.sync_remains>20&variable.sync_remains<trinket.2.cooldown.duration%3)))||!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_active&variable.sync_remains>20||trinket.2.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_1_stronger||trinket.2.cooldown.remains)\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=trinket.2.has_use_buff&(variable.sync_ready&(variable.trinket_2_stronger||trinket.1.cooldown.remains)||!variable.sync_ready&(variable.trinket_2_stronger&(variable.sync_remains>trinket.2.cooldown.duration%3&boss&fight_remains>trinket.2.cooldown.duration+20||trinket.1.has_use_buff&trinket.1.cooldown.remains>variable.sync_remains-15&trinket.1.cooldown.remains-5<variable.sync_remains&variable.sync_remains+45>fight_remains&boss)||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%3||trinket.2.cooldown.duration<fight_remains&boss&(variable.sync_remains+trinket.2.cooldown.duration>fight_remains)))||trinket.1.cooldown.ready&variable.sync_remains>20&variable.sync_remains<trinket.1.cooldown.duration%3)))||!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_active&variable.sync_remains>20||trinket.1.cooldown.remains>20))||boss&fight_remains<25&(variable.trinket_2_stronger||trinket.1.cooldown.remains)",
|
|
["spec"] = 253,
|
|
},
|
|
["Assassination"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241119,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-11-19: Revise Shiv for Lightweight Shiv\n\n2024-11-16: Envenom stack timing; Ambush\n\n2024-11-02: No more casting SnD; Tweak IC\n\n2024-10-31: Better support for users who do not enable target swapping - Syrif\n\n2024-10-27: Master Assassin correction\n\n2024-10-21, 10-25: SimC update\n\n2024-09-28: Force pooling for Envenom without Darkest Night if Envenom is down\n\n2024-09-24: Tweak pooling for Enveom\n\n2024-09-15: SimC update\n\n2024-09-11: Revise filler Envenom\n\n2024-09-05, 09-08, 09-09: SimC update\n\n2024-08-29: Allow filler Envenom\n\n2024-08-24: SimC update; relax energy regen requirements\n\n2024-08-22: Enable more AOE\n\n2024-08-14: Fix scent_saturation variable\n\n2024-08-09, 10: Updates from SimC\n\n2024-07-27: The War Within",
|
|
["lists"] = {
|
|
["stealthed"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.scent_of_blood.stack >= ( ( spell_targets.fan_of_knives * talent.scent_of_blood.rank * 2 ) >? 20 )",
|
|
["description"] = "Stealthed Actions We are Scent Saturated when our stack count is hitting the maximum",
|
|
["var_name"] = "scent_saturation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.deathstalkers_mark.enabled & ! debuff.deathstalkers_mark.up & active_dot.deathstalkers_mark = 0 & ( time = 0 || buff.darkest_night.down )",
|
|
["action"] = "ambush",
|
|
["description"] = "Apply Deathstalkers Mark if it has fallen off",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.lightweight_shiv.enabled & talent.kingsbane.enabled & ( dot.kingsbane.ticking || cooldown.kingsbane.up ) & ( ! debuff.shiv.up & debuff.shiv.remains < 1 ) & buff.envenom.up",
|
|
["action"] = "shiv",
|
|
["description"] = "Make sure to have Shiv up during Kingsbane as a final check [Hekili] with Lightweight Shiv only",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "effective_combo_points >= variable.effective_spend_cp & dot.kingsbane.ticking & buff.envenom.remains <= 3 & ( debuff.deathstalkers_mark.up || buff.cold_blood.up )",
|
|
["action"] = "envenom",
|
|
["description"] = "Envenom to maintain the buff during Subterfuge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "effective_combo_points >= variable.effective_spend_cp & buff.master_assassin_aura.up & active_enemies = 1 & ( debuff.deathstalkers_mark.up || buff.cold_blood.up )",
|
|
["action"] = "envenom",
|
|
["description"] = "Envenom during Master Assassin in single target",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rupture",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "effective_combo_points >= variable.effective_spend_cp & buff.indiscriminate_carnage_any.up & ( refreshable || ! settings.cycle ) & ( ( ! variable.regen_saturated & active_dot.rupture < active_enemies ) || ! variable.scent_saturation || ! dot.rupture.ticking ) & target.time_to_die > 15",
|
|
["description"] = "Rupture during Indiscriminate Carnage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "garrote",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "( remains < 12 || pmultiplier <= 1 || ( ( buff.indiscriminate_carnage_any.up & ( ( active_dot.garrote < cycle_enemies ) || ( active_dot.garrote < active_enemies & ! settings.cycle ) ) ) ) ) & active_enemies > 1 & target.time_to_die - remains > 2",
|
|
["description"] = "Improved Garrote: Apply or Refresh with buffed Garrotes, accounting for Indiscriminate Carnage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "stealthed.improved_garrote & ( pmultiplier <= 1 || refreshable ) & combo_points.deficit >= 1 + 2 * talent.shrouded_suffocation.enabled",
|
|
["action"] = "garrote",
|
|
},
|
|
},
|
|
["vanish"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["description"] = "Stealth Cooldowns Vanish Sync for Improved Garrote with Deathmark",
|
|
["extra_amount"] = "45",
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.fatebound_lucky_coin.up & effective_combo_points >= variable.effective_spend_cp & ( buff.fatebound_coin_tails.stack >= 5 || buff.fatebound_coin_heads.stack >= 5 )",
|
|
["action"] = "vanish",
|
|
["description"] = "Vanish to fish for Fateful Ending",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.master_assassin.enabled & ! talent.indiscriminate_carnage.enabled & talent.improved_garrote.enabled & cooldown.garrote.up & ( 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",
|
|
["description"] = "Vanish to spread Garrote during Deathmark without Indiscriminate Carnage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
["extra_amount"] = "45",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.indiscriminate_carnage.enabled & talent.improved_garrote.enabled & cooldown.garrote.up & ( dot.garrote.pmultiplier <= 1 || dot.garrote.refreshable ) & spell_targets.fan_of_knives > 2 & ( target.time_to_die - remains > 15 || raid_event.adds.in > 20 )",
|
|
["action"] = "vanish",
|
|
["description"] = "Vanish for cleaving Garrotes with Indiscriminate Carnage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.master_assassin.enabled & dot.garrote.remains > 3 & debuff.deathmark.up & dot.kingsbane.remains <= 6 + 3 * talent.subterfuge.rank & ( debuff.shiv.up || debuff.deathmark.remains < 4 )",
|
|
["action"] = "vanish",
|
|
["description"] = "Vanish fallback for Master Assassin",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.improved_garrote.enabled & cooldown.garrote.up & ( dot.garrote.pmultiplier <= 1 || dot.garrote.refreshable ) & ( debuff.deathmark.up || cooldown.deathmark.remains < 4 ) & raid_event.adds.in > 30",
|
|
["action"] = "vanish",
|
|
["description"] = "Vanish fallback for Improved Garrote during Deathmark if no add waves are expected",
|
|
},
|
|
},
|
|
["core_dot"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points.deficit >= 1 & ( pmultiplier <= 1 ) & refreshable & target.time_to_die - remains > 12",
|
|
["action"] = "garrote",
|
|
["description"] = "Core damage over time abilities used everywhere Maintain Garrote",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points >= variable.effective_spend_cp & ( pmultiplier <= 1 ) & refreshable & target.time_to_die - remains > ( 4 + ( talent.dashing_scoundrel.enabled * 5 ) + ( variable.regen_saturated * 6 ) ) & ( ! buff.darkest_night.up || talent.caustic_spatter.enabled & ! debuff.caustic_spatter.up )",
|
|
["action"] = "rupture",
|
|
["description"] = "Maintain Rupture unless darkest night is up",
|
|
},
|
|
},
|
|
["shiv"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! debuff.shiv.up & dot.garrote.ticking & dot.rupture.ticking",
|
|
["description"] = "Shiv conditions",
|
|
["var_name"] = "shiv_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.kingsbane.enabled & buff.envenom.up & variable.shiv_condition",
|
|
["var_name"] = "shiv_kingsbane_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.arterial_precision.enabled & variable.shiv_condition & spell_targets.fan_of_knives >= 4 & dot.crimson_tempest.ticking",
|
|
["action"] = "shiv",
|
|
["description"] = "Shiv for aoe with Arterial Precision",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.lightweight_shiv.enabled & variable.shiv_kingsbane_condition & ( dot.kingsbane.ticking & dot.kingsbane.remains < 8 || ! dot.kingsbane.ticking & cooldown.kingsbane.remains >= 20 ) & ( ! talent.crimson_tempest.enabled || active_enemies = 1 || dot.crimson_tempest.ticking )",
|
|
["action"] = "shiv",
|
|
["description"] = "Shiv cases for Kingsbane",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.lightweight_shiv.enabled & variable.shiv_kingsbane_condition & ( dot.kingsbane.ticking || cooldown.kingsbane.remains <= 1 )",
|
|
["action"] = "shiv",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.arterial_precision.enabled & variable.shiv_condition & debuff.deathmark.up",
|
|
["action"] = "shiv",
|
|
["description"] = "Fallback shiv for arterial during deathmark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.kingsbane.enabled & ! talent.arterial_precision.enabled & variable.shiv_condition & ( ! talent.crimson_tempest.enabled || active_enemies = 1 || dot.crimson_tempest.ticking )",
|
|
["action"] = "shiv",
|
|
["description"] = "Fallback if no special cases apply",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains <= cooldown.shiv.charges * 8",
|
|
["action"] = "shiv",
|
|
["description"] = "Dump Shiv on fight end",
|
|
},
|
|
},
|
|
["misc_cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bloodlust.react || boss & fight_remains < 30 || debuff.deathmark.up",
|
|
["action"] = "potion",
|
|
["description"] = "Miscellaneous Cooldowns Potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.deathmark.up",
|
|
["action"] = "blood_fury",
|
|
["description"] = "Various special racials to be synced with cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.deathmark.up",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.deathmark.up",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.kingsbane.enabled & debuff.deathmark.up & debuff.shiv.up ) || ( talent.kingsbane.enabled & debuff.deathmark.up & dot.kingsbane.ticking & dot.kingsbane.remains < 8 )",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
},
|
|
["aoe_dot"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.scent_of_blood.stack >= ( ( spell_targets.fan_of_knives * talent.scent_of_blood.rank * 2 ) >? 20 )",
|
|
["description"] = "We are Scent Saturated when our stack count is hitting the maximum",
|
|
["var_name"] = "scent_saturation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "combo_points >= variable.effective_spend_cp & ( pmultiplier <= 1 )",
|
|
["description"] = "Helper Variable to check basic finisher conditions",
|
|
["var_name"] = "dot_finisher_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets >= 2 & variable.dot_finisher_condition & refreshable & target.time_to_die - remains > 6",
|
|
["action"] = "crimson_tempest",
|
|
["description"] = "Crimson Tempest on 2+ Targets if we have enough energy regen",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "garrote",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "combo_points.deficit >= 1 & ( pmultiplier <= 1 ) & refreshable & ! variable.regen_saturated & target.time_to_die - remains > 12",
|
|
["description"] = "Garrote upkeep, also uses it in AoE to reach energy saturation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rupture",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "variable.dot_finisher_condition & refreshable & ( ! dot.kingsbane.ticking || buff.cold_blood.up ) & ( ! variable.regen_saturated & ( talent.scent_of_blood.rank = 2 || talent.scent_of_blood.rank <= 1 & ( buff.indiscriminate_carnage.up || target.time_to_die - remains > 15 ) ) ) & target.time_to_die - remains > ( 7 + ( talent.dashing_scoundrel.enabled * 5 ) + ( variable.regen_saturated * 6 ) ) & ! buff.darkest_night.up",
|
|
["description"] = "Rupture upkeep, also uses it in AoE to reach energy or scent of blood saturation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rupture",
|
|
["criteria"] = "variable.dot_finisher_condition & refreshable & ( ! dot.kingsbane.ticking || buff.cold_blood.up ) & variable.regen_saturated & ! variable.scent_saturation & target.time_to_die - remains > 19 & ! buff.darkest_night.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & combo_points.deficit >= 1 & ( pmultiplier <= 1 || remains <= tick_time & spell_targets.fan_of_knives >= 3 ) & ( remains <= tick_time * 2 & spell_targets.fan_of_knives >= 3 ) & ( target.time_to_die - remains ) > 4 & master_assassin_remains = 0",
|
|
["action"] = "garrote",
|
|
["description"] = "Garrote as a special generator for the last CP before a finisher for edge case handling",
|
|
},
|
|
},
|
|
["items"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "dot.rupture.ticking & cooldown.deathmark.remains < 2 || dot.deathmark.ticking || boss & fight_remains <= 22",
|
|
["description"] = "Special Case Trinkets",
|
|
["var_name"] = "base_trinket_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ashes_of_the_embersoul",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "ashes_of_the_embersoul",
|
|
["criteria"] = "( dot.kingsbane.ticking & dot.kingsbane.remains <= 11 ) || boss & fight_remains <= 22",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "algethar_puzzle_box",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "algethar_puzzle_box",
|
|
["criteria"] = "variable.base_trinket_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "treacherous_transmitter",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "treacherous_transmitter",
|
|
["criteria"] = "variable.base_trinket_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "mad_queens_mandate",
|
|
["action"] = "mad_queens_mandate",
|
|
["criteria"] = "cooldown.deathmark.remains >= 30 & ! dot.deathmark.ticking || boss & fight_remains <= 3",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["criteria"] = "variable.base_trinket_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "algethar_puzzle_box",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "algethar_puzzle_box",
|
|
["criteria"] = "dot.rupture.ticking & cooldown.deathmark.remains < 2 || boss & fight_remains <= 22",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.trinket_sync_slot = 1 & ( debuff.deathmark.up || boss & fight_remains <= 20 ) || ( variable.trinket_sync_slot = 2 & ( ! trinket.t2.cooldown.ready & dot.kingsbane.ticking || ! debuff.deathmark.up & cooldown.deathmark.remains > 20 & dot.kingsbane.ticking ) ) || ! variable.trinket_sync_slot )",
|
|
["description"] = "Fallback case for using stat trinkets",
|
|
["slots"] = "trinket1",
|
|
["action"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["slots"] = "trinket2",
|
|
["action"] = "trinket2",
|
|
["criteria"] = "( variable.trinket_sync_slot = 2 & ( debuff.deathmark.up || boss & fight_remains <= 20 ) || ( variable.trinket_sync_slot = 1 & ( ! trinket.t1.cooldown.ready & dot.kingsbane.ticking || ! debuff.deathmark.up & cooldown.deathmark.remains > 20 & dot.kingsbane.ticking ) ) || ! variable.trinket_sync_slot )",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Restealth if possible (no vulnerable enemies in combat)",
|
|
["action"] = "stealth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Interrupt on cooldown to allow simming interactions with that",
|
|
["action"] = "kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "energy.regen_combined > 30",
|
|
["description"] = "Combined Energy Regen needed to saturate",
|
|
["var_name"] = "regen_saturated",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "dot.deathmark.ticking || dot.kingsbane.ticking || debuff.shiv.up",
|
|
["description"] = "Pooling Setup, check for cooldowns",
|
|
["var_name"] = "in_cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.envenom.up & buff.envenom.max_stack_remains <= 1",
|
|
["var_name"] = "clip_envenom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "70 - 30 * talent.sanguine_blades.enabled - 10 * talent.vicious_venoms.rank",
|
|
["var_name"] = "upper_limit_energy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "energy > 40 + 50 + 5 * talent.vicious_venoms.rank",
|
|
["var_name"] = "avoid_tea",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.kingsbane.remains < 3 & ! cooldown.kingsbane.ready",
|
|
["description"] = "Checking for cooldowns soon",
|
|
["var_name"] = "cd_soon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.in_cooldowns || ! variable.cd_soon & variable.avoid_tea & buff.darkest_night.up || ! variable.cd_soon & variable.avoid_tea & variable.clip_envenom || variable.upper_limit_energy || boss & fight_remains <= 20",
|
|
["description"] = "Pooling Condition all together",
|
|
["var_name"] = "not_pooling",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Call Stealthed Actions",
|
|
["strict"] = 1,
|
|
["criteria"] = "stealthed.rogue || stealthed.improved_garrote || master_assassin_remains > 0",
|
|
["list_name"] = "stealthed",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Call Cooldowns",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Call Core DoT effects",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "core_dot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Call AoE DoTs when in AoE",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 1",
|
|
["list_name"] = "aoe_dot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Call Direct Damage Abilities",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "direct",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy.deficit >= 15 + energy.regen_combined",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["action"] = "arcane_pulse",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bag_of_tricks",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "apply_poison",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "toggle.funnel",
|
|
["var_name"] = "priority_rotation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_sync_slot",
|
|
["criteria"] = "trinket.t1.has_stat.any_dps & ( ! trinket.t2.has_stat.any_dps || trinket.t1.cooldown.duration >= trinket.t2.cooldown.duration ) & ! trinket.t2.is.treacherous_transmitter || trinket.t1.is.treacherous_transmitter",
|
|
["description"] = "Check which trinket slots have Stat Values",
|
|
["value"] = "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 ) & ! trinket.t1.is.treacherous_transmitter || trinket.t2.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_sync_slot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cp_max_spend - 2 <? 5 * talent.hand_of_fate.enabled",
|
|
["description"] = "Determine combo point finish condition",
|
|
["var_name"] = "effective_spend_cp",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Pre-cast Slice and Dice if possible",
|
|
["action"] = "stealth",
|
|
},
|
|
},
|
|
["direct"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["criteria"] = "active_dot.envenom = 0",
|
|
["extra_amount"] = "energy.max*(0.5+0.3*talent.hand_of_fate.rank-0.15*talent.vicious_venoms.rank)-action.envenom.cost",
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.darkest_night.up & combo_points >= variable.effective_spend_cp & ( variable.not_pooling || debuff.amplifying_poison.stack >= 20 || active_enemies > 1 ) & ! buff.vanish.up",
|
|
["action"] = "envenom",
|
|
["description"] = "Direct Damage Abilities Envenom at applicable cp if not pooling, capped on amplifying poison stacks, on an animacharged CP, or in aoe.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.darkest_night.up & effective_combo_points >= cp_max_spend",
|
|
["action"] = "envenom",
|
|
["description"] = "Special Envenom handling for Darkest Night",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "combo_points <= variable.effective_spend_cp & ! variable.cd_soon || variable.not_pooling || active_enemies > 1",
|
|
["description"] = "Check if we should be using a filler",
|
|
["var_name"] = "use_filler",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.caustic_spatter.enabled & dot.rupture.ticking & ( ! debuff.caustic_spatter.up || debuff.caustic_spatter.remains <= 2 ) & combo_points.deficit >= 1 & active_enemies > 1",
|
|
["description"] = "Maintain Caustic Spatter",
|
|
["var_name"] = "use_caustic_filler",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.use_caustic_filler",
|
|
["action"] = "mutilate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.use_caustic_filler",
|
|
["action"] = "ambush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.use_filler & ! priority_rotation & ( spell_targets.fan_of_knives >= 3 - ( talent.momentum_of_despair.enabled & talent.thrown_precision.enabled ) || buff.clear_the_witnesses.up & ! talent.vicious_venoms.enabled )",
|
|
["action"] = "fan_of_knives",
|
|
["description"] = "Fan of Knives at 3+ targets, accounting for various edge cases",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.deadly_poison_dot.ticking & ( ! priority_rotation || dot.garrote.ticking || dot.rupture.ticking ) || ( variable.use_filler & spell_targets.fan_of_knives >= 3 - ( talent.momentum_of_despair.enabled & talent.thrown_precision.enabled ) )",
|
|
["action"] = "fan_of_knives",
|
|
["description"] = "Fan of Knives to apply poisons if inactive on any target (or any bleeding targets with priority rotation) at 3T",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.use_filler & ( buff.blindside.up || stealthed.rogue ) & ( ! dot.kingsbane.ticking || debuff.deathmark.down || buff.blindside.up )",
|
|
["action"] = "ambush",
|
|
["description"] = "Ambush on Blindside/Subterfuge. Do not use Ambush from stealth during Kingsbane & Deathmark.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mutilate",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "variable.use_filler & spell_targets.fan_of_knives = 2",
|
|
["description"] = "Tab-Mutilate to apply Deadly Poison at 2 targets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.use_filler",
|
|
["action"] = "mutilate",
|
|
["description"] = "Fallback Mutilate",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! talent.master_assassin.enabled || dot.garrote.ticking",
|
|
["description"] = "Cooldowns Wait on Deathmark for Garrote with MA and check for Kingsbane",
|
|
["var_name"] = "deathmark_ma_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! talent.kingsbane.enabled || cooldown.kingsbane.remains <= 2",
|
|
["var_name"] = "deathmark_kingsbane_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! stealthed.rogue & buff.slice_and_dice.remains > 5 & dot.rupture.ticking & buff.envenom.up & ! debuff.deathmark.up & variable.deathmark_ma_condition & variable.deathmark_kingsbane_condition",
|
|
["description"] = "Deathmark to be used if not stealthed, Rupture is up, and all other talent conditions are satisfied",
|
|
["var_name"] = "deathmark_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Usages for various special-case Trinkets and other Cantrips if applicable",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.deathmark_condition & target.time_to_die >= 10 ) || boss & fight_remains <= 20",
|
|
["action"] = "deathmark",
|
|
["description"] = "Cast Deathmark if the target will survive long enough",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Check for Applicable Shiv usage",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "shiv",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( debuff.shiv.up || cooldown.shiv.remains < 6 ) & buff.envenom.up & ( cooldown.deathmark.remains >= 50 || dot.deathmark.ticking ) || boss & fight_remains <= 15",
|
|
["action"] = "kingsbane",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.thistle_tea.up & ( dot.kingsbane.ticking || debuff.shiv.remains >= 4 ) || spell_targets.fan_of_knives >= 4 & debuff.shiv.remains >= 6 || fight_remains <= cooldown.thistle_tea.charges * 6",
|
|
["action"] = "thistle_tea",
|
|
["description"] = "Avoid overcapped energy, use with shiv, or dump charges at the end of a fight",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Potion/Racials/Other misc cooldowns",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "misc_cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! stealthed.all & master_assassin_remains = 0",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "vanish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.fatebound_coin_tails.stack > 0 & buff.fatebound_coin_heads.stack > 0 ) || debuff.shiv.up & ( cooldown.deathmark.remains > 50 || ! talent.inevitabile_end.enabled & effective_combo_points >= variable.effective_spend_cp )",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "cold_blood",
|
|
["description"] = "Cold Blood for Edge Case or Envenoms during shiv",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241119,
|
|
["warnings"] = "The import for 'stealthed' required some automated changes.\nLine 3: Converted 'talent.deathstalkers_mark' to 'talent.deathstalkers_mark.enabled' (1x).\nLine 4: Converted 'talent.lightweight_shiv' to 'talent.lightweight_shiv.enabled' (1x).\nLine 4: Converted 'talent.kingsbane' to 'talent.kingsbane.enabled' (1x).\nLine 9: Converted 'talent.shrouded_suffocation' to 'talent.shrouded_suffocation.enabled' (1x).\n\nThe import for 'vanish' required some automated changes.\nLine 3: Converted 'talent.master_assassin' to 'talent.master_assassin.enabled' (1x).\nLine 3: Converted 'talent.indiscriminate_carnage' to 'talent.indiscriminate_carnage.enabled' (1x).\nLine 3: Converted 'talent.improved_garrote' to 'talent.improved_garrote.enabled' (1x).\nLine 5: Converted 'talent.indiscriminate_carnage' to 'talent.indiscriminate_carnage.enabled' (1x).\nLine 5: Converted 'talent.improved_garrote' to 'talent.improved_garrote.enabled' (1x).\nLine 6: Converted 'talent.master_assassin' to 'talent.master_assassin.enabled' (1x).\nLine 7: Converted 'talent.improved_garrote' to 'talent.improved_garrote.enabled' (1x).\n\nThe import for 'core_dot' required some automated changes.\nLine 2: Converted 'talent.dashing_scoundrel' to 'talent.dashing_scoundrel.enabled' (1x).\nLine 2: Converted 'talent.caustic_spatter' to 'talent.caustic_spatter.enabled' (1x).\n\nThe import for 'shiv' required some automated changes.\nLine 2: Converted 'talent.kingsbane' to 'talent.kingsbane.enabled' (1x).\nLine 3: Converted 'talent.arterial_precision' to 'talent.arterial_precision.enabled' (1x).\nLine 6: Converted 'talent.arterial_precision' to 'talent.arterial_precision.enabled' (1x).\nLine 7: Converted 'talent.kingsbane' to 'talent.kingsbane.enabled' (1x).\nLine 7: Converted 'talent.arterial_precision' to 'talent.arterial_precision.enabled' (1x).\n\nThe import for 'misc_cds' required some automated changes.\nLine 5: Converted 'talent.kingsbane' to 'talent.kingsbane.enabled' (1x).\nLine 5: Converted 'talent.kingsbane' to 'talent.kingsbane.enabled' (1x).\n\nThe import for 'aoe_dot' required some automated changes.\nLine 5: Converted 'talent.dashing_scoundrel' to 'talent.dashing_scoundrel.enabled' (1x).\n\nThe import for 'items' required some automated changes.\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'.\n\nThe import for 'default' required some automated changes.\nLine 6: Converted 'talent.sanguine_blades' to 'talent.sanguine_blades.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 3: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 3: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\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 4: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 4: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 5: Converted 'talent.hand_of_fate' to 'talent.hand_of_fate.enabled' (1x).\n\nThe import for 'direct' required some automated changes.\nLine 5: Converted 'talent.caustic_spatter' to 'talent.caustic_spatter.enabled' (1x).\nLine 8: Converted 'talent.momentum_of_despair' to 'talent.momentum_of_despair.enabled' (1x).\nLine 8: Converted 'talent.thrown_precision' to 'talent.thrown_precision.enabled' (1x).\nLine 8: Converted 'talent.vicious_venoms' to 'talent.vicious_venoms.enabled' (1x).\nLine 9: Converted 'talent.momentum_of_despair' to 'talent.momentum_of_despair.enabled' (1x).\nLine 9: Converted 'talent.thrown_precision' to 'talent.thrown_precision.enabled' (1x).\n\nThe import for 'cds' required some automated changes.\nLine 2: Converted 'talent.kingsbane' to 'talent.kingsbane.enabled' (1x).\nLine 11: Converted 'talent.inevitabile_end' to 'talent.inevitabile_end.enabled' (1x).\n\nImported 11 action lists.\n",
|
|
["profile"] = "actions.precombat+=/apply_poison\nactions.precombat+=/variable,name=priority_rotation,value=toggle.funnel\n# Check which trinket slots have Stat Values\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)&!trinket.2.is.treacherous_transmitter||trinket.1.is.treacherous_transmitter\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)&!trinket.1.is.treacherous_transmitter||trinket.2.is.treacherous_transmitter\n# Determine combo point finish condition\nactions.precombat+=/variable,name=effective_spend_cp,value=cp_max_spend-2<?5*talent.hand_of_fate\n# Pre-cast Slice and Dice if possible\nactions.precombat+=/stealth\n## actions.precombat+=/slice_and_dice,precombat_seconds=1,if=refreshable&!buff.indiscriminate_carnage.up\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# Combined Energy Regen needed to saturate\nactions+=/variable,name=regen_saturated,value=energy.regen_combined>30\n# Pooling Setup, check for cooldowns\nactions+=/variable,name=in_cooldowns,value=dot.deathmark.ticking||dot.kingsbane.ticking||debuff.shiv.up\nactions+=/variable,name=clip_envenom,value=buff.envenom.up&buff.envenom.max_stack_remains<=1\nactions+=/variable,name=upper_limit_energy,value=70-30*talent.sanguine_blades-10*talent.vicious_venoms.rank\nactions+=/variable,name=avoid_tea,value=energy>40+50+5*talent.vicious_venoms.rank\n# Checking for cooldowns soon\nactions+=/variable,name=cd_soon,value=cooldown.kingsbane.remains<3&!cooldown.kingsbane.ready\n# Pooling Condition all together\nactions+=/variable,name=not_pooling,value=variable.in_cooldowns||!variable.cd_soon&variable.avoid_tea&buff.darkest_night.up||!variable.cd_soon&variable.avoid_tea&variable.clip_envenom||variable.upper_limit_energy||boss&fight_remains<=20\n# Call Stealthed Actions\nactions+=/call_action_list,name=stealthed,strict=1,if=stealthed.rogue||stealthed.improved_garrote||master_assassin_remains>0\n# Call Cooldowns\nactions+=/call_action_list,name=cds\n# Call Core DoT effects\nactions+=/call_action_list,name=core_dot\n# Call AoE DoTs when in AoE\nactions+=/call_action_list,name=aoe_dot,strict=1,if=active_enemies>1\n# Call Direct Damage Abilities\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# We are Scent Saturated when our stack count is hitting the maximum\nactions.aoe_dot+=/variable,name=scent_saturation,value=buff.scent_of_blood.stack>=((spell_targets.fan_of_knives*talent.scent_of_blood.rank*2)>?20)\n# Helper Variable to check basic finisher conditions\nactions.aoe_dot+=/variable,name=dot_finisher_condition,value=combo_points>=variable.effective_spend_cp&(pmultiplier<=1)\n# Crimson Tempest on 2+ Targets if we have enough energy regen\nactions.aoe_dot+=/crimson_tempest,if=spell_targets>=2&variable.dot_finisher_condition&refreshable&target.time_to_die-remains>6\n# Garrote upkeep, also uses it in AoE to reach energy saturation\nactions.aoe_dot+=/garrote,cycle_targets=1,if=combo_points.deficit>=1&(pmultiplier<=1)&refreshable&!variable.regen_saturated&target.time_to_die-remains>12\n# Rupture upkeep, also uses it in AoE to reach energy or scent of blood saturation\nactions.aoe_dot+=/rupture,cycle_targets=1,if=variable.dot_finisher_condition&refreshable&(!dot.kingsbane.ticking||buff.cold_blood.up)&(!variable.regen_saturated&(talent.scent_of_blood.rank=2||talent.scent_of_blood.rank<=1&(buff.indiscriminate_carnage.up||target.time_to_die-remains>15)))&target.time_to_die-remains>(7+(talent.dashing_scoundrel*5)+(variable.regen_saturated*6))&!buff.darkest_night.up\nactions.aoe_dot+=/rupture,cycle_targets=1,if=variable.dot_finisher_condition&refreshable&(!dot.kingsbane.ticking||buff.cold_blood.up)&variable.regen_saturated&!variable.scent_saturation&target.time_to_die-remains>19&!buff.darkest_night.up\n# Garrote as a special generator for the last CP before a finisher for edge case handling\nactions.aoe_dot+=/garrote,if=refreshable&combo_points.deficit>=1&(pmultiplier<=1||remains<=tick_time&spell_targets.fan_of_knives>=3)&(remains<=tick_time*2&spell_targets.fan_of_knives>=3)&(target.time_to_die-remains)>4&master_assassin_remains=0\n\n# Cooldowns Wait on Deathmark for Garrote with MA and check for Kingsbane\nactions.cds+=/variable,name=deathmark_ma_condition,value=!talent.master_assassin.enabled||dot.garrote.ticking\nactions.cds+=/variable,name=deathmark_kingsbane_condition,value=!talent.kingsbane||cooldown.kingsbane.remains<=2\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&buff.slice_and_dice.remains>5&dot.rupture.ticking&buff.envenom.up&!debuff.deathmark.up&variable.deathmark_ma_condition&variable.deathmark_kingsbane_condition\n# Usages for various special-case Trinkets and other Cantrips if applicable\nactions.cds+=/call_action_list,name=items\n## Invoke Externals to Deathmark\n## actions.cds+=/invoke_external_buff,name=power_infusion,if=dot.deathmark.ticking\n# Cast Deathmark if the target will survive long enough\nactions.cds+=/deathmark,if=(variable.deathmark_condition&target.time_to_die>=10)||boss&fight_remains<=20\n# Check for Applicable Shiv usage\nactions.cds+=/call_action_list,name=shiv\nactions.cds+=/kingsbane,if=(debuff.shiv.up||cooldown.shiv.remains<6)&buff.envenom.up&(cooldown.deathmark.remains>=50||dot.deathmark.ticking)||boss&fight_remains<=15\n# Avoid overcapped energy, use with shiv, or dump charges at the end of a fight\nactions.cds+=/thistle_tea,if=!buff.thistle_tea.up&(dot.kingsbane.ticking||debuff.shiv.remains>=4)||spell_targets.fan_of_knives>=4&debuff.shiv.remains>=6||fight_remains<=cooldown.thistle_tea.charges*6\n# Potion/Racials/Other misc cooldowns\nactions.cds+=/call_action_list,name=misc_cds\nactions.cds+=/call_action_list,name=vanish,if=!stealthed.all&master_assassin_remains=0\n# Cold Blood for Edge Case or Envenoms during shiv\nactions.cds+=/cold_blood,use_off_gcd=1,if=(buff.fatebound_coin_tails.stack>0&buff.fatebound_coin_heads.stack>0)||debuff.shiv.up&(cooldown.deathmark.remains>50||!talent.inevitabile_end&effective_combo_points>=variable.effective_spend_cp)\n\n# Core damage over time abilities used everywhere Maintain Garrote\nactions.core_dot+=/garrote,if=combo_points.deficit>=1&(pmultiplier<=1)&refreshable&target.time_to_die-remains>12\n# Maintain Rupture unless darkest night is up\nactions.core_dot+=/rupture,if=combo_points>=variable.effective_spend_cp&(pmultiplier<=1)&refreshable&target.time_to_die-remains>(4+(talent.dashing_scoundrel*5)+(variable.regen_saturated*6))&(!buff.darkest_night.up||talent.caustic_spatter&!debuff.caustic_spatter.up)\n\nactions.direct+=/pool_resource,for_next=1,extra_amount=energy.max*(0.5+0.3*talent.hand_of_fate.rank-0.15*talent.vicious_venoms.rank)-action.envenom.cost,if=active_dot.envenom=0\n# Direct Damage Abilities Envenom at applicable cp if not pooling, capped on amplifying poison stacks, on an animacharged CP, or in aoe.\nactions.direct+=/envenom,if=!buff.darkest_night.up&combo_points>=variable.effective_spend_cp&(variable.not_pooling||debuff.amplifying_poison.stack>=20||active_enemies>1)&!buff.vanish.up\n# Special Envenom handling for Darkest Night\nactions.direct+=/envenom,if=buff.darkest_night.up&effective_combo_points>=cp_max_spend\n# Check if we should be using a filler\nactions.direct+=/variable,name=use_filler,value=combo_points<=variable.effective_spend_cp&!variable.cd_soon||variable.not_pooling||active_enemies>1\n# Maintain Caustic Spatter\nactions.direct+=/variable,name=use_caustic_filler,value=talent.caustic_spatter&dot.rupture.ticking&(!debuff.caustic_spatter.up||debuff.caustic_spatter.remains<=2)&combo_points.deficit>=1&active_enemies>1\nactions.direct+=/mutilate,if=variable.use_caustic_filler\nactions.direct+=/ambush,if=variable.use_caustic_filler\n# Fan of Knives at 3+ targets, accounting for various edge cases\nactions.direct+=/fan_of_knives,if=variable.use_filler&!priority_rotation&(spell_targets.fan_of_knives>=3-(talent.momentum_of_despair&talent.thrown_precision)||buff.clear_the_witnesses.up&!talent.vicious_venoms)\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,if=!dot.deadly_poison_dot.ticking&(!priority_rotation||dot.garrote.ticking||dot.rupture.ticking)||(variable.use_filler&spell_targets.fan_of_knives>=3-(talent.momentum_of_despair&talent.thrown_precision))\n# Ambush on Blindside/Subterfuge. Do not use Ambush from stealth during Kingsbane & Deathmark.\nactions.direct+=/ambush,if=variable.use_filler&(buff.blindside.up||stealthed.rogue)&(!dot.kingsbane.ticking||debuff.deathmark.down||buff.blindside.up)\n# Tab-Mutilate to apply Deadly Poison at 2 targets\nactions.direct+=/mutilate,cycle_targets=1,if=variable.use_filler&spell_targets.fan_of_knives=2\n# Fallback Mutilate\nactions.direct+=/mutilate,if=variable.use_filler\n\n# Special Case Trinkets\nactions.items+=/variable,name=base_trinket_condition,value=dot.rupture.ticking&cooldown.deathmark.remains<2||dot.deathmark.ticking||boss&fight_remains<=22\nactions.items+=/use_item,name=ashes_of_the_embersoul,use_off_gcd=1,if=(dot.kingsbane.ticking&dot.kingsbane.remains<=11)||boss&fight_remains<=22\nactions.items+=/use_item,name=algethar_puzzle_box,use_off_gcd=1,if=variable.base_trinket_condition\nactions.items+=/use_item,name=treacherous_transmitter,use_off_gcd=1,if=variable.base_trinket_condition\nactions.items+=/use_item,name=mad_queens_mandate,if=cooldown.deathmark.remains>=30&!dot.deathmark.ticking||boss&fight_remains<=3\n## actions.items+=/do_treacherous_transmitter_task,use_off_gcd=1,if=dot.deathmark.ticking&active_enemies=1||buff.realigning_nexus_convergence_divergence.up&buff.realigning_nexus_convergence_divergence.remains<=2||buff.cryptic_instructions.up&buff.cryptic_instructions.remains<=2||buff.errant_manaforge_emission.up&buff.errant_manaforge_emission.remains<=2||fight_remains<=15\nactions.items+=/use_item,name=imperfect_ascendancy_serum,use_off_gcd=1,if=variable.base_trinket_condition\nactions.items+=/use_item,name=algethar_puzzle_box,use_off_gcd=1,if=dot.rupture.ticking&cooldown.deathmark.remains<2||boss&fight_remains<=22\n# Fallback case for using stat trinkets\nactions.items+=/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&dot.kingsbane.ticking||!debuff.deathmark.up&cooldown.deathmark.remains>20&dot.kingsbane.ticking))||!variable.trinket_sync_slot)\nactions.items+=/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&dot.kingsbane.ticking||!debuff.deathmark.up&cooldown.deathmark.remains>20&dot.kingsbane.ticking))||!variable.trinket_sync_slot)\n\n# Miscellaneous Cooldowns Potion\nactions.misc_cds+=/potion,if=buff.bloodlust.react||boss&fight_remains<30||debuff.deathmark.up\n# Various special racials to be synced with cooldowns\nactions.misc_cds+=/blood_fury,if=debuff.deathmark.up\nactions.misc_cds+=/berserking,if=debuff.deathmark.up\nactions.misc_cds+=/fireblood,if=debuff.deathmark.up\nactions.misc_cds+=/ancestral_call,if=(!talent.kingsbane&debuff.deathmark.up&debuff.shiv.up)||(talent.kingsbane&debuff.deathmark.up&dot.kingsbane.ticking&dot.kingsbane.remains<8)\n\n# Shiv conditions\nactions.shiv+=/variable,name=shiv_condition,value=!debuff.shiv.up&dot.garrote.ticking&dot.rupture.ticking\nactions.shiv+=/variable,name=shiv_kingsbane_condition,value=talent.kingsbane&buff.envenom.up&variable.shiv_condition\n# Shiv for aoe with Arterial Precision\nactions.shiv+=/shiv,if=talent.arterial_precision&variable.shiv_condition&spell_targets.fan_of_knives>=4&dot.crimson_tempest.ticking\n# Shiv cases for Kingsbane\nactions.shiv+=/shiv,if=!talent.lightweight_shiv.enabled&variable.shiv_kingsbane_condition&(dot.kingsbane.ticking&dot.kingsbane.remains<8||!dot.kingsbane.ticking&cooldown.kingsbane.remains>=20)&(!talent.crimson_tempest.enabled||active_enemies=1||dot.crimson_tempest.ticking)\nactions.shiv+=/shiv,if=talent.lightweight_shiv.enabled&variable.shiv_kingsbane_condition&(dot.kingsbane.ticking||cooldown.kingsbane.remains<=1)\n# Fallback shiv for arterial during deathmark\nactions.shiv+=/shiv,if=talent.arterial_precision&variable.shiv_condition&debuff.deathmark.up\n# Fallback if no special cases apply\nactions.shiv+=/shiv,if=!talent.kingsbane&!talent.arterial_precision&variable.shiv_condition&(!talent.crimson_tempest.enabled||active_enemies=1||dot.crimson_tempest.ticking)\n# Dump Shiv on fight end\nactions.shiv+=/shiv,if=boss&fight_remains<=cooldown.shiv.charges*8\n\n# Stealthed Actions\n# We are Scent Saturated when our stack count is hitting the maximum\nactions.stealthed+=/variable,name=scent_saturation,value=buff.scent_of_blood.stack>=((spell_targets.fan_of_knives*talent.scent_of_blood.rank*2)>?20)\nactions.stealthed+=/pool_resource,for_next=1\n# Apply Deathstalkers Mark if it has fallen off\nactions.stealthed+=/ambush,if=talent.deathstalkers_mark&!debuff.deathstalkers_mark.up&active_dot.deathstalkers_mark=0&(time=0||buff.darkest_night.down)\n# Make sure to have Shiv up during Kingsbane as a final check [Hekili] with Lightweight Shiv only\nactions.stealthed+=/shiv,if=talent.lightweight_shiv&talent.kingsbane&(dot.kingsbane.ticking||cooldown.kingsbane.up)&(!debuff.shiv.up&debuff.shiv.remains<1)&buff.envenom.up\n# Envenom to maintain the buff during Subterfuge\nactions.stealthed+=/envenom,if=effective_combo_points>=variable.effective_spend_cp&dot.kingsbane.ticking&buff.envenom.remains<=3&(debuff.deathstalkers_mark.up||buff.cold_blood.up)\n# Envenom during Master Assassin in single target\nactions.stealthed+=/envenom,if=effective_combo_points>=variable.effective_spend_cp&buff.master_assassin_aura.up&active_enemies=1&(debuff.deathstalkers_mark.up||buff.cold_blood.up)\n# Rupture during Indiscriminate Carnage\nactions.stealthed+=/rupture,cycle_targets=1,if=effective_combo_points>=variable.effective_spend_cp&buff.indiscriminate_carnage_any.up&(refreshable||!settings.cycle)&((!variable.regen_saturated&active_dot.rupture<active_enemies)||!variable.scent_saturation||!dot.rupture.ticking)&target.time_to_die>15\n# Improved Garrote: Apply or Refresh with buffed Garrotes, accounting for Indiscriminate Carnage\nactions.stealthed+=/garrote,cycle_targets=1,if=(remains<12||pmultiplier<=1||((buff.indiscriminate_carnage_any.up&((active_dot.garrote<cycle_enemies)||(active_dot.garrote<active_enemies&!settings.cycle)))))&active_enemies>1&target.time_to_die-remains>2\nactions.stealthed+=/garrote,if=stealthed.improved_garrote&(pmultiplier<=1||refreshable)&combo_points.deficit>=1+2*talent.shrouded_suffocation\n\n# Stealth Cooldowns Vanish Sync for Improved Garrote with Deathmark\nactions.vanish+=/pool_resource,for_next=1,extra_amount=45\n# Vanish to fish for Fateful Ending\nactions.vanish+=/vanish,if=!buff.fatebound_lucky_coin.up&effective_combo_points>=variable.effective_spend_cp&(buff.fatebound_coin_tails.stack>=5||buff.fatebound_coin_heads.stack>=5)\n# Vanish to spread Garrote during Deathmark without Indiscriminate Carnage\nactions.vanish+=/vanish,if=!talent.master_assassin&!talent.indiscriminate_carnage&talent.improved_garrote&cooldown.garrote.up&(dot.garrote.pmultiplier<=1||dot.garrote.refreshable)&(debuff.deathmark.up||cooldown.deathmark.remains<4)&combo_points.deficit>=(spell_targets.fan_of_knives>?4)\nactions.vanish+=/pool_resource,for_next=1,extra_amount=45\n# Vanish for cleaving Garrotes with Indiscriminate Carnage\nactions.vanish+=/vanish,if=talent.indiscriminate_carnage&talent.improved_garrote&cooldown.garrote.up&(dot.garrote.pmultiplier<=1||dot.garrote.refreshable)&spell_targets.fan_of_knives>2&(target.time_to_die-remains>15||raid_event.adds.in>20)\n# Vanish fallback for Master Assassin\nactions.vanish+=/vanish,if=talent.master_assassin&dot.garrote.remains>3&debuff.deathmark.up&dot.kingsbane.remains<=6+3*talent.subterfuge.rank&(debuff.shiv.up||debuff.deathmark.remains<4)\n# Vanish fallback for Improved Garrote during Deathmark if no add waves are expected\nactions.vanish+=/vanish,if=talent.improved_garrote&cooldown.garrote.up&(dot.garrote.pmultiplier<=1||dot.garrote.refreshable)&(debuff.deathmark.up||cooldown.deathmark.remains<4)&raid_event.adds.in>30",
|
|
["spec"] = 259,
|
|
},
|
|
["Balance"] = {
|
|
["source"] = "https://balance-simc.github.io/Balance-SimC/md.html?file=balance.txt",
|
|
["builtIn"] = true,
|
|
["date"] = 20241105,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-11-05: SimC update (Sunfire)\n\n2024-10-29: Fix AOE Eclipse\n\n2024-10-26: SimC update, adjustments for leveling\n\n2024-10-23: SimC update\n\n2024-10-22: 11.0.5\n\n2024-10-06, 10-11, 10-21: SimC update\n\n2024-09-28, 09-29: SimC update\n\n2024-09-01, 09-04, 09-08, 09-10, 09-15, 09-21: SimC update\n\n2024-08-11: Mark of the Wild\n\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "solar_beam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["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 ) ) * 24",
|
|
["var_name"] = "passive_asp",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.ca_inc.remains <? cooldown.force_of_nature.remains",
|
|
["var_name"] = "ca_effective_cd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "boss & fight_remains < cooldown.ca_inc.duration + variable.ca_effective_cd",
|
|
["var_name"] = "last_ca_inc",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( boss & fight_remains < ( 15 + 5 * talent.incarnation_chosen_of_elune.enabled ) * ( 1 - talent.whirling_stars.enabled * 0.2 ) || fight_remains > 10 & ( ! hero_tree.keeper_of_the_grove || ( ( ! talent.harmony_of_the_grove.enabled || buff.harmony_of_the_grove.up ) & cooldown.convoke_the_spirits.remains < 60 & ( ! talent.new_moon.enabled || cooldown.new_moon.charges_fractional >= 2 ) ) ) & ( ! talent.whirling_stars.enabled || ! talent.convoke_the_spirits.enabled || talent.whirling_stars.enabled & cooldown.convoke_the_spirits.remains < gcd.max * 2 || cooldown.convoke_the_spirits.remains > cooldown.ca_inc.full_recharge_time ) ) & cooldown.ca_inc.ready & ! buff.ca_inc.up",
|
|
["var_name"] = "cd_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "aberrant_spellforge",
|
|
["action"] = "aberrant_spellforge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_condition & ( buff.spymasters_report.stack > 29 || fight_remains < cooldown.ca_inc.duration ) || boss & fight_remains < 20",
|
|
["name"] = "spymasters_web",
|
|
["action"] = "spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.sunfire.remains > 4 & ( dot.moonfire.remains > 4 || talent.treants_of_the_moon.enabled & ( cooldown.force_of_nature.remains < 3 || buff.harmony_of_the_grove.up ) & variable.ca_effective_cd < 1 || boss & fight_remains < 20 || fight_remains < variable.ca_effective_cd & ( buff.harmony_of_the_grove.up || cooldown.convoke_the_spirits.ready ) ) & buff.spymasters_report.stack <= 29",
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.ca_effective_cd < 3 || boss & fight_remains < 20 || fight_remains < variable.ca_effective_cd & ( buff.harmony_of_the_grove.up || cooldown.convoke_the_spirits.ready ) ) & buff.spymasters_report.stack <= 29",
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.no_cd_talent || fight_remains < variable.ca_effective_cd & ( buff.harmony_of_the_grove.up || cooldown.convoke_the_spirits.ready ) || ( ( buff.spymasters_report.stack + variable.ca_effective_cd / 6 ) > 29 || boss & fight_remains < cooldown.ca_inc.duration + variable.ca_effective_cd ) & variable.ca_effective_cd > 20 || variable.on_use_trinket = 0",
|
|
["var_name"] = "generic_trinket_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "! trinket.t1.is.spymasters_web & ! trinket.t1.is.imperfect_ascendancy_serum & ! trinket.t1.is.treacherous_transmitter & ( variable.on_use_trinket != 1 & trinket.t2.cooldown.remains > 20 || boss & fight_remains < ( 20 + 20 * ( trinket.t2.cooldown.remains < 25 ) ) || variable.generic_trinket_condition )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! trinket.t2.is.spymasters_web & ! trinket.t2.is.imperfect_ascendancy_serum & ! trinket.t2.is.treacherous_transmitter & ( variable.on_use_trinket != 2 & trinket.t1.cooldown.remains > 20 || boss & fight_remains < ( 20 + 20 * ( trinket.t1.cooldown.remains < 25 ) ) || variable.generic_trinket_condition )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["action"] = "use_items",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains <= 30",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.no_cd_talent || boss & fight_remains < 15",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.eclipse_lunar.up || buff.eclipse_solar.up",
|
|
["var_name"] = "eclipse",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.eclipse_lunar.remains <? buff.eclipse_solar.remains",
|
|
["var_name"] = "eclipse_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.lunar_calling.enabled || spell_targets.starfire > 2 - ( talent.umbral_intensity.rank + talent.soul_of_the_forest.enabled > 1 )",
|
|
["var_name"] = "enter_lunar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.balance_of_all_things_arcane.stack + buff.balance_of_all_things_nature.stack",
|
|
["var_name"] = "boat_stacks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.lunar_calling.enabled || ! talent.lunar_calling.enabled & variable.eclipse_remains >= 7 & cooldown.ca_inc.remains > 20",
|
|
["action"] = "warrior_of_elune",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "spell_targets > 1",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "st",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "mark_of_the_wild",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "moonkin_form",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "on_use_trinket",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "( trinket.t1.has_proc & trinket.t1.cooldown.duration || trinket.t1.is.spymasters_web || trinket.t1.is.signet_of_the_priory ) & ! trinket.t1.is.arakara_sacbrood",
|
|
["var_name"] = "on_use_trinket",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "( ( trinket.t2.has_proc & trinket.t2.cooldown.duration || trinket.t2.is.spymasters_web || trinket.t2.is.signet_of_the_priory ) * 2 & ! trinket.t2.is.arakara_sacbrood )",
|
|
["var_name"] = "on_use_trinket",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hero_tree.keeper_of_the_grove & ! talent.stellar_flare.enabled & action.regrowth.time_since < 10 & active_dot.regrowth = 0",
|
|
["action"] = "regrowth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! prev.1.wrath",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev.1.wrath & ! ( prev.2.wrath || prev.3.wrath || prev.4.wrath )",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.stellar_flare.enabled & hero_tree.elunes_chosen",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["action"] = "stellar_flare",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.enter_lunar & variable.eclipse & variable.eclipse_remains < cast_time & ! variable.cd_condition",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.enter_lunar & variable.eclipse & variable.eclipse_remains < cast_time & ! variable.cd_condition",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "astral_power.deficit <= variable.passive_asp + 6",
|
|
["action"] = "starfall",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "moonfire",
|
|
["criteria"] = "refreshable & ( target.time_to_die - remains ) > 6 & ( ! talent.treants_of_the_moon.enabled || spell_targets - active_dot.moonfire_dmg > 6 || cooldown.force_of_nature.remains > 3 & ! buff.harmony_of_the_grove.up ) & ! boss",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "sunfire",
|
|
["criteria"] = "refreshable & ( target.time_to_die - remains ) > 6 - ( spell_targets / 2 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "moonfire",
|
|
["criteria"] = "refreshable & ( target.time_to_die - remains ) > 6 & ( ! talent.treants_of_the_moon.enabled || spell_targets - active_dot.moonfire_dmg > 6 || cooldown.force_of_nature.remains > 3 & ! buff.harmony_of_the_grove.up ) & boss",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.enter_lunar & ( ! variable.eclipse || variable.eclipse_remains < cast_time )",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.enter_lunar & ( ! variable.eclipse || variable.eclipse_remains < cast_time )",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "stellar_flare",
|
|
["criteria"] = "refreshable & ( target.time_to_die - remains - target.unit > 7 + spell_targets ) & spell_targets < ( 11 - talent.umbral_intensity.rank - ( 2 * talent.astral_smolder.enabled ) - talent.lunar_calling.enabled )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.power_of_the_dream.enabled & talent.early_spring.enabled & talent.orbital_strike.enabled ) || variable.eclipse_remains >= 3",
|
|
["action"] = "force_of_nature",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.ca_inc.remains < gcd.max & ( ! talent.natures_grace.enabled || ! variable.eclipse || variable.eclipse_remains > 6 ) || variable.eclipse_remains >= 3 & cooldown.ca_inc.remains > 10 + 15 * talent.control_of_the_dream.enabled & ( fight_remains > action_cooldown + 5 || cooldown.ca_inc.remains > fight_remains )",
|
|
["action"] = "force_of_nature",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.eclipse",
|
|
["action"] = "fury_of_elune",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "pre_cd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_condition",
|
|
["action"] = "celestial_alignment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_condition",
|
|
["action"] = "incarnation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.lunar_calling.enabled & buff.eclipse_solar.remains < 7 || talent.lunar_calling.enabled",
|
|
["action"] = "warrior_of_elune",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.lunar_calling.enabled & spell_targets.starfire = 1 ) & ( buff.eclipse_solar.up & buff.eclipse_solar.remains < action.starfire.cast_time || eclipse.in_none )",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.starweavers_warp.up || buff.touch_the_cosmos_starfall.up",
|
|
["action"] = "starfall",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.starweavers_weft.up",
|
|
["action"] = "starsurge",
|
|
},
|
|
{
|
|
["action"] = "starfall",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! buff.dreamstate.up & ! buff.umbral_embrace.up & spell_targets.starfire < 7 || spell_targets.starfire = 1 ) & ( boss & fight_remains < 5 || ( buff.ca_inc.up || cooldown.ca_inc.remains > 40 ) & ( ! hero_tree.keeper_of_the_grove || buff.harmony_of_the_grove.up || cooldown.force_of_nature.remains > 15 ) )",
|
|
["action"] = "convoke_the_spirits",
|
|
},
|
|
{
|
|
["action"] = "new_moon",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "half_moon",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "full_moon",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "wild_mushroom",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! hero_tree.keeper_of_the_grove",
|
|
["action"] = "force_of_nature",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.lunar_calling.enabled || buff.eclipse_lunar.up & spell_targets.starfire > 1",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["action"] = "wrath",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.enter_lunar & variable.eclipse & variable.eclipse_remains < cast_time & ! variable.cd_condition",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.enter_lunar & variable.eclipse & variable.eclipse_remains < cast_time & ! variable.cd_condition",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "sunfire",
|
|
["criteria"] = "remains < 3 || refreshable & ( hero_tree.keeper_of_the_grove & cooldown.force_of_nature.ready || ! hero_tree.keeper_of_the_grove & variable.cd_condition )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "moonfire",
|
|
["criteria"] = "refreshable & remains < 3 & ( ! talent.treants_of_the_moon.enabled || cooldown.force_of_nature.remains > 3 & ! buff.harmony_of_the_grove.up )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "pre_cd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_condition",
|
|
["action"] = "celestial_alignment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_condition",
|
|
["action"] = "incarnation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.enter_lunar & ( ! variable.eclipse || variable.eclipse_remains < cast_time )",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.enter_lunar & ( ! variable.eclipse || variable.eclipse_remains < cast_time )",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_condition & astral_power.deficit > variable.passive_asp + action.force_of_nature.energize_amount",
|
|
["action"] = "starsurge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.ca_inc.remains < gcd.max & ( ! talent.convoke_the_spirits.enabled || cooldown.convoke_the_spirits.remains < gcd.max * 3 || cooldown.convoke_the_spirits.remains > cooldown.ca_inc.full_recharge_time || boss & fight_remains < cooldown.convoke_the_spirits.remains + 3 ) || cooldown.ca_inc.full_recharge_time + 5 + 15 * talent.control_of_the_dream.enabled > action_cooldown & ( ! talent.convoke_the_spirits.enabled || cooldown.convoke_the_spirits.remains + 10 + 15 * talent.control_of_the_dream.enabled > action_cooldown || boss & fight_remains < cooldown.convoke_the_spirits.remains + cooldown.convoke_the_spirits.duration + 5 ) & ( fight_remains > action_cooldown + 5 || boss & fight_remains < cooldown.ca_inc.remains + 7 ) || talent.whirling_stars.enabled & talent.convoke_the_spirits.enabled & cooldown.convoke_the_spirits.remains > cooldown.force_of_nature.duration - 10 & boss & fight_remains > cooldown.convoke_the_spirits.remains + 6",
|
|
["action"] = "force_of_nature",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "5 + variable.passive_asp < astral_power.deficit",
|
|
["action"] = "fury_of_elune",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.starlord.enabled & buff.starlord.stack < 3",
|
|
["action"] = "starsurge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "sunfire",
|
|
["criteria"] = "refreshable",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "moonfire",
|
|
["criteria"] = "refreshable & ( ! talent.treants_of_the_moon.enabled || cooldown.force_of_nature.remains > 3 & ! buff.harmony_of_the_grove.up )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "stellar_flare",
|
|
["criteria"] = "refreshable & ( target.time_to_die - remains - target.unit > 7 + spell_targets )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "boss & fight_remains < 5 || ( buff.ca_inc.up || cooldown.ca_inc.remains > 40 ) & ( ! hero_tree.keeper_of_the_grove || buff.harmony_of_the_grove.up || cooldown.force_of_nature.remains > 15 )",
|
|
["var_name"] = "convoke_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.convoke_the_spirits.remains < gcd.max * 2 & variable.convoke_condition",
|
|
["action"] = "starsurge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.convoke_condition",
|
|
["action"] = "convoke_the_spirits",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.starlord.remains > 4 & variable.boat_stacks >= 3 || fight_remains < 4",
|
|
["action"] = "starsurge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "astral_power.deficit > variable.passive_asp + energize_amount || fight_remains < 20 || cooldown.ca_inc.remains > 15",
|
|
["action"] = "new_moon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "astral_power.deficit > variable.passive_asp + energize_amount & ( buff.eclipse_lunar.remains > execute_time || buff.eclipse_solar.remains > execute_time ) || fight_remains < 20 || cooldown.ca_inc.remains > 15",
|
|
["action"] = "half_moon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "astral_power.deficit > variable.passive_asp + energize_amount & ( buff.eclipse_lunar.remains > execute_time || buff.eclipse_solar.remains > execute_time ) || fight_remains < 20 || cooldown.ca_inc.remains > 15",
|
|
["action"] = "full_moon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.starweavers_weft.up || buff.touch_the_cosmos_starsurge.up",
|
|
["action"] = "starsurge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.starweavers_warp.up || buff.touch_the_cosmos_starfall.up",
|
|
["action"] = "starfall",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "astral_power.deficit < variable.passive_asp + action.wrath.energize_amount + ( action.starfire.energize_amount + variable.passive_asp ) * ( buff.eclipse_solar.remains < ( gcd.max * 3 ) )",
|
|
["action"] = "starsurge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! hero_tree.keeper_of_the_grove",
|
|
["action"] = "force_of_nature",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.lunar_calling.enabled",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["action"] = "wrath",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["pre_cd"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_condition & ( buff.spymasters_report.stack > 29 || boss & fight_remains < cooldown.ca_inc.duration )",
|
|
["name"] = "spymasters_web",
|
|
["action"] = "spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_condition",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_condition",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "! trinket.t1.is.spymasters_web & ! trinket.t1.is.imperfect_ascendancy_serum & ! trinket.t1.is.treacherous_transmitter & ( variable.on_use_trinket = 1 || variable.on_use_trinket = 3 ) & variable.cd_condition",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! trinket.t2.is.spymasters_web & ! trinket.t2.is.imperfect_ascendancy_serum & ! trinket.t2.is.treacherous_transmitter & variable.on_use_trinket = 2 & variable.cd_condition",
|
|
["slot"] = "trinket2",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241105,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 2: Converted 'talent.natures_balance' to 'talent.natures_balance.enabled' (1x).\nLine 2: Converted 'talent.orbit_breaker' to 'talent.orbit_breaker.enabled' (1x).\nLine 2: 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))*24' to '6/spell_haste+talent.natures_balance.enabled+talent.orbit_breaker.enabled*dot.moonfire.ticking*(buff.orbit_breaker.stack>(27-2*buff.solstice.up))*24'.\nLine 5: Converted 'talent.incarnation_chosen_of_elune' to 'talent.incarnation_chosen_of_elune.enabled' (1x).\nLine 5: Converted 'talent.whirling_stars' to 'talent.whirling_stars.enabled' (1x).\nLine 5: Converted 'talent.harmony_of_the_grove' to 'talent.harmony_of_the_grove.enabled' (1x).\nLine 5: Converted 'talent.new_moon' to 'talent.new_moon.enabled' (1x).\nLine 5: Converted 'talent.whirling_stars' to 'talent.whirling_stars.enabled' (1x).\nLine 5: Converted 'talent.convoke_the_spirits' to 'talent.convoke_the_spirits.enabled' (1x).\nLine 5: Converted 'talent.whirling_stars' to 'talent.whirling_stars.enabled' (1x).\nLine 8: Converted 'talent.treants_of_the_moon' to 'talent.treants_of_the_moon.enabled' (1x).\nLine 10: Converted operations in 'variable.no_cd_talent||fight_remains<variable.ca_effective_cd&(buff.harmony_of_the_grove.up||cooldown.convoke_the_spirits.ready)||((buff.spymasters_report.stack+variable.ca_effective_cd%6)>29||boss&fight_remains<cooldown.ca_inc.duration+variable.ca_effective_cd)&variable.ca_effective_cd>20||variable.on_use_trinket=0' to 'variable.no_cd_talent||fight_remains<variable.ca_effective_cd&(buff.harmony_of_the_grove.up||cooldown.convoke_the_spirits.ready)||((buff.spymasters_report.stack+variable.ca_effective_cd/6)>29||boss&fight_remains<cooldown.ca_inc.duration+variable.ca_effective_cd)&variable.ca_effective_cd>20||variable.on_use_trinket=0'.\nLine 11: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 11: Converted 'trinket.1.is.imperfect_ascendancy_serum' to 'trinket.t1.is.imperfect_ascendancy_serum' (1x).\nLine 11: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 12: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 12: Converted 'trinket.2.is.imperfect_ascendancy_serum' to 'trinket.t2.is.imperfect_ascendancy_serum' (1x).\nLine 12: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 12: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 12: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 12: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 12: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 18: Converted 'talent.lunar_calling' to 'talent.lunar_calling.enabled' (1x).\nLine 18: Converted 'talent.soul_of_the_forest' to 'talent.soul_of_the_forest.enabled' (1x).\nLine 20: Converted 'talent.lunar_calling' to 'talent.lunar_calling.enabled' (1x).\nLine 20: Converted 'talent.lunar_calling' to 'talent.lunar_calling.enabled' (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 5: Converted 'trinket.1.has_proc' to 'trinket.t1.has_proc' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.1.is.signet_of_the_priory' to 'trinket.t1.is.signet_of_the_priory' (1x).\nLine 5: Converted 'trinket.1.is.arakara_sacbrood' to 'trinket.t1.is.arakara_sacbrood' (1x).\nLine 6: Converted 'trinket.2.has_proc' to 'trinket.t2.has_proc' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 6: Converted 'trinket.2.is.signet_of_the_priory' to 'trinket.t2.is.signet_of_the_priory' (1x).\nLine 6: Converted 'trinket.2.is.arakara_sacbrood' to 'trinket.t2.is.arakara_sacbrood' (1x).\nLine 7: Converted 'talent.stellar_flare' to 'talent.stellar_flare.enabled' (1x).\nLine 10: Converted 'talent.stellar_flare' to 'talent.stellar_flare.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 4: Converted 'talent.treants_of_the_moon' to 'talent.treants_of_the_moon.enabled' (1x).\nLine 5: Converted operations in 'refreshable&(target.time_to_die-remains)>6-(spell_targets%2)' to 'refreshable&(target.time_to_die-remains)>6-(spell_targets/2)'.\nLine 6: Converted 'talent.treants_of_the_moon' to 'talent.treants_of_the_moon.enabled' (1x).\nLine 9: Converted 'talent.astral_smolder' to 'talent.astral_smolder.enabled' (1x).\nLine 9: Converted 'talent.lunar_calling' to 'talent.lunar_calling.enabled' (1x).\nLine 10: Converted 'talent.power_of_the_dream' to 'talent.power_of_the_dream.enabled' (1x).\nLine 10: Converted 'talent.early_spring' to 'talent.early_spring.enabled' (1x).\nLine 10: Converted 'talent.orbital_strike' to 'talent.orbital_strike.enabled' (1x).\nLine 11: Converted 'talent.natures_grace' to 'talent.natures_grace.enabled' (1x).\nLine 11: Converted 'talent.control_of_the_dream' to 'talent.control_of_the_dream.enabled' (1x).\nLine 16: Converted 'talent.lunar_calling' to 'talent.lunar_calling.enabled' (1x).\nLine 16: Converted 'talent.lunar_calling' to 'talent.lunar_calling.enabled' (1x).\nLine 17: Converted 'talent.lunar_calling' to 'talent.lunar_calling.enabled' (1x).\nLine 27: Converted 'talent.lunar_calling' to 'talent.lunar_calling.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 4: Converted 'talent.treants_of_the_moon' to 'talent.treants_of_the_moon.enabled' (1x).\nLine 11: Converted 'talent.convoke_the_spirits' to 'talent.convoke_the_spirits.enabled' (1x).\nLine 11: Converted 'talent.control_of_the_dream' to 'talent.control_of_the_dream.enabled' (1x).\nLine 11: Converted 'talent.convoke_the_spirits' to 'talent.convoke_the_spirits.enabled' (1x).\nLine 11: Converted 'talent.control_of_the_dream' to 'talent.control_of_the_dream.enabled' (1x).\nLine 11: Converted 'talent.whirling_stars' to 'talent.whirling_stars.enabled' (1x).\nLine 11: Converted 'talent.convoke_the_spirits' to 'talent.convoke_the_spirits.enabled' (1x).\nLine 13: Converted 'talent.starlord' to 'talent.starlord.enabled' (1x).\nLine 15: Converted 'talent.treants_of_the_moon' to 'talent.treants_of_the_moon.enabled' (1x).\nLine 28: Converted 'talent.lunar_calling' to 'talent.lunar_calling.enabled' (1x).\n\nThe import for 'pre_cd' required some automated changes.\nLine 4: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 4: Converted 'trinket.1.is.imperfect_ascendancy_serum' to 'trinket.t1.is.imperfect_ascendancy_serum' (1x).\nLine 4: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 5: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.2.is.imperfect_ascendancy_serum' to 'trinket.t2.is.imperfect_ascendancy_serum' (1x).\nLine 5: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\n\nImported 5 action lists.\n",
|
|
["spec"] = 102,
|
|
["profile"] = "actions.precombat+=/mark_of_the_wild\nactions.precombat+=/moonkin_form\nactions.precombat+=/variable,name=no_cd_talent,value=!talent.celestial_alignment&!talent.incarnation_chosen_of_elune||druid.no_cds\nactions.precombat+=/variable,name=on_use_trinket,value=0\nactions.precombat+=/variable,name=on_use_trinket,op=add,value=(trinket.1.has_proc&trinket.1.cooldown.duration||trinket.1.is.spymasters_web||trinket.1.is.signet_of_the_priory)&!trinket.1.is.arakara_sacbrood\nactions.precombat+=/variable,name=on_use_trinket,op=add,value=((trinket.2.has_proc&trinket.2.cooldown.duration||trinket.2.is.spymasters_web||trinket.2.is.signet_of_the_priory)*2&!trinket.2.is.arakara_sacbrood)\n## Regrowth to stack for Keeper of the Grove...\nactions.precombat+=/regrowth,if=hero_tree.keeper_of_the_grove&!talent.stellar_flare&action.regrowth.time_since<10&active_dot.regrowth=0\nactions.precombat+=/wrath,if=!prev.1.wrath\nactions.precombat+=/wrath,if=prev.1.wrath&!(prev.2.wrath||prev.3.wrath||prev.4.wrath)\nactions.precombat+=/starfire,if=!talent.stellar_flare&hero_tree.elunes_chosen\nactions.precombat+=/stellar_flare\n\nactions+=/solar_beam\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))*24\nactions+=/variable,name=ca_effective_cd,value=cooldown.ca_inc.remains<?cooldown.force_of_nature.remains\nactions+=/variable,name=last_ca_inc,value=boss&fight_remains<cooldown.ca_inc.duration+variable.ca_effective_cd\nactions+=/variable,name=cd_condition,value=(boss&fight_remains<(15+5*talent.incarnation_chosen_of_elune)*(1-talent.whirling_stars*0.2)||fight_remains>10&(!hero_tree.keeper_of_the_grove||((!talent.harmony_of_the_grove||buff.harmony_of_the_grove.up)&cooldown.convoke_the_spirits.remains<60&(!talent.new_moon||cooldown.new_moon.charges_fractional>=2)))&(!talent.whirling_stars||!talent.convoke_the_spirits||talent.whirling_stars&cooldown.convoke_the_spirits.remains<gcd.max*2||cooldown.convoke_the_spirits.remains>cooldown.ca_inc.full_recharge_time))&cooldown.ca_inc.ready&!buff.ca_inc.up\nactions+=/use_item,name=aberrant_spellforge\n## actions+=/do_treacherous_transmitter_task,if=cooldown.ca_inc.remains>10||buff.ca_inc.up\nactions+=/use_item,name=spymasters_web,if=variable.cd_condition&(buff.spymasters_report.stack>29||fight_remains<cooldown.ca_inc.duration)||boss&fight_remains<20\nactions+=/use_item,name=imperfect_ascendancy_serum,if=dot.sunfire.remains>4&(dot.moonfire.remains>4||talent.treants_of_the_moon&(cooldown.force_of_nature.remains<3||buff.harmony_of_the_grove.up)&variable.ca_effective_cd<1||boss&fight_remains<20||fight_remains<variable.ca_effective_cd&(buff.harmony_of_the_grove.up||cooldown.convoke_the_spirits.ready))&buff.spymasters_report.stack<=29\nactions+=/use_item,name=treacherous_transmitter,if=(variable.ca_effective_cd<3||boss&fight_remains<20||fight_remains<variable.ca_effective_cd&(buff.harmony_of_the_grove.up||cooldown.convoke_the_spirits.ready))&buff.spymasters_report.stack<=29\nactions+=/variable,name=generic_trinket_condition,value=variable.no_cd_talent||fight_remains<variable.ca_effective_cd&(buff.harmony_of_the_grove.up||cooldown.convoke_the_spirits.ready)||((buff.spymasters_report.stack+variable.ca_effective_cd%6)>29||boss&fight_remains<cooldown.ca_inc.duration+variable.ca_effective_cd)&variable.ca_effective_cd>20||variable.on_use_trinket=0\nactions+=/use_item,slot=trinket1,if=!trinket.1.is.spymasters_web&!trinket.1.is.imperfect_ascendancy_serum&!trinket.1.is.treacherous_transmitter&(variable.on_use_trinket!=1&trinket.2.cooldown.remains>20||boss&fight_remains<(20+20*(trinket.2.cooldown.remains<25))||variable.generic_trinket_condition)\nactions+=/use_item,slot=trinket2,if=!trinket.2.is.spymasters_web&!trinket.2.is.imperfect_ascendancy_serum&!trinket.2.is.treacherous_transmitter&(variable.on_use_trinket!=2&trinket.1.cooldown.remains>20||boss&fight_remains<(20+20*(trinket.1.cooldown.remains<25))||variable.generic_trinket_condition)\nactions+=/use_items\nactions+=/potion,if=boss&fight_remains<=30\nactions+=/berserking,if=variable.no_cd_talent||fight_remains<15actions+=/berserking,if=variable.no_cd_talent||boss&fight_remains<15\nactions+=/variable,name=eclipse,value=buff.eclipse_lunar.up||buff.eclipse_solar.up\nactions+=/variable,name=eclipse_remains,value=buff.eclipse_lunar.remains<?buff.eclipse_solar.remains\nactions+=/variable,name=enter_lunar,value=talent.lunar_calling||spell_targets.starfire>2-(talent.umbral_intensity.rank+talent.soul_of_the_forest>1)\nactions+=/variable,name=boat_stacks,value=buff.balance_of_all_things_arcane.stack+buff.balance_of_all_things_nature.stack\nactions+=/warrior_of_elune,if=talent.lunar_calling||!talent.lunar_calling&variable.eclipse_remains>=7&cooldown.ca_inc.remains>20\nactions+=/run_action_list,name=aoe,strict=1,if=spell_targets>1\nactions+=/run_action_list,name=st\n\nactions.aoe+=/wrath,if=variable.enter_lunar&variable.eclipse&variable.eclipse_remains<cast_time&!variable.cd_condition\nactions.aoe+=/starfire,if=!variable.enter_lunar&variable.eclipse&variable.eclipse_remains<cast_time&!variable.cd_condition\nactions.aoe+=/starfall,if=astral_power.deficit<=variable.passive_asp+6\nactions.aoe+=/moonfire,cycle_targets=1,if=refreshable&(target.time_to_die-remains)>6&(!talent.treants_of_the_moon||spell_targets-active_dot.moonfire_dmg>6||cooldown.force_of_nature.remains>3&!buff.harmony_of_the_grove.up)&!boss\nactions.aoe+=/sunfire,cycle_targets=1,if=refreshable&(target.time_to_die-remains)>6-(spell_targets%2)\nactions.aoe+=/moonfire,cycle_targets=1,if=refreshable&(target.time_to_die-remains)>6&(!talent.treants_of_the_moon||spell_targets-active_dot.moonfire_dmg>6||cooldown.force_of_nature.remains>3&!buff.harmony_of_the_grove.up)&boss\n## actions.aoe+=/wrath,if=cooldown.ca_inc.remains>cast_time+gcd.max&variable.enter_lunar&(!variable.eclipse||variable.eclipse_remains<cast_time)\n## actions.aoe+=/starfire,if=cooldown.ca_inc.remains>cast_time+gcd.max&!variable.enter_lunar&(!variable.eclipse||variable.eclipse_remains<cast_time)\nactions.aoe+=/wrath,if=variable.enter_lunar&(!variable.eclipse||variable.eclipse_remains<cast_time)\nactions.aoe+=/starfire,if=!variable.enter_lunar&(!variable.eclipse||variable.eclipse_remains<cast_time)\nactions.aoe+=/stellar_flare,cycle_targets=1,if=refreshable&(target.time_to_die-remains-target>7+spell_targets)&spell_targets<(11-talent.umbral_intensity.rank-(2*talent.astral_smolder)-talent.lunar_calling)\nactions.aoe+=/force_of_nature,if=(talent.power_of_the_dream&talent.early_spring&talent.orbital_strike)||variable.eclipse_remains>=3\nactions.aoe+=/force_of_nature,if=cooldown.ca_inc.remains<gcd.max&(!talent.natures_grace||!variable.eclipse||variable.eclipse_remains>6)||variable.eclipse_remains>=3&cooldown.ca_inc.remains>10+15*talent.control_of_the_dream&(fight_remains>cooldown+5||cooldown.ca_inc.remains>fight_remains)\nactions.aoe+=/fury_of_elune,if=variable.eclipse\nactions.aoe+=/call_action_list,name=pre_cd\nactions.aoe+=/celestial_alignment,if=variable.cd_condition\nactions.aoe+=/incarnation,if=variable.cd_condition\nactions.aoe+=/warrior_of_elune,if=!talent.lunar_calling&buff.eclipse_solar.remains<7||talent.lunar_calling\nactions.aoe+=/starfire,if=(!talent.lunar_calling&spell_targets.starfire=1)&(buff.eclipse_solar.up&buff.eclipse_solar.remains<action.starfire.cast_time||eclipse.in_none)\nactions.aoe+=/starfall,if=buff.starweavers_warp.up||buff.touch_the_cosmos_starfall.up\nactions.aoe+=/starsurge,if=buff.starweavers_weft.up\nactions.aoe+=/starfall\nactions.aoe+=/convoke_the_spirits,if=(!buff.dreamstate.up&!buff.umbral_embrace.up&spell_targets.starfire<7||spell_targets.starfire=1)&(boss&fight_remains<5||(buff.ca_inc.up||cooldown.ca_inc.remains>40)&(!hero_tree.keeper_of_the_grove||buff.harmony_of_the_grove.up||cooldown.force_of_nature.remains>15))\nactions.aoe+=/new_moon\nactions.aoe+=/half_moon\nactions.aoe+=/full_moon\nactions.aoe+=/wild_mushroom\nactions.aoe+=/force_of_nature,if=!hero_tree.keeper_of_the_grove\nactions.aoe+=/starfire,if=talent.lunar_calling||buff.eclipse_lunar.up&spell_targets.starfire>1\nactions.aoe+=/wrath\n\nactions.st+=/wrath,if=variable.enter_lunar&variable.eclipse&variable.eclipse_remains<cast_time&!variable.cd_condition\nactions.st+=/starfire,if=!variable.enter_lunar&variable.eclipse&variable.eclipse_remains<cast_time&!variable.cd_condition\nactions.st+=/sunfire,cycle_targets=1,if=remains<3||refreshable&(hero_tree.keeper_of_the_grove&cooldown.force_of_nature.ready||!hero_tree.keeper_of_the_grove&variable.cd_condition)\nactions.st+=/moonfire,cycle_targets=1,if=refreshable&remains<3&(!talent.treants_of_the_moon||cooldown.force_of_nature.remains>3&!buff.harmony_of_the_grove.up)\nactions.st+=/call_action_list,name=pre_cd\nactions.st+=/celestial_alignment,if=variable.cd_condition\nactions.st+=/incarnation,if=variable.cd_condition\nactions.st+=/wrath,if=variable.enter_lunar&(!variable.eclipse||variable.eclipse_remains<cast_time)\nactions.st+=/starfire,if=!variable.enter_lunar&(!variable.eclipse||variable.eclipse_remains<cast_time)\nactions.st+=/starsurge,if=variable.cd_condition&astral_power.deficit>variable.passive_asp+action.force_of_nature.energize_amount\nactions.st+=/force_of_nature,if=cooldown.ca_inc.remains<gcd.max&(!talent.convoke_the_spirits||cooldown.convoke_the_spirits.remains<gcd.max*3||cooldown.convoke_the_spirits.remains>cooldown.ca_inc.full_recharge_time||boss&fight_remains<cooldown.convoke_the_spirits.remains+3)||cooldown.ca_inc.full_recharge_time+5+15*talent.control_of_the_dream>cooldown&(!talent.convoke_the_spirits||cooldown.convoke_the_spirits.remains+10+15*talent.control_of_the_dream>cooldown||boss&fight_remains<cooldown.convoke_the_spirits.remains+cooldown.convoke_the_spirits.duration+5)&(fight_remains>cooldown+5||boss&fight_remains<cooldown.ca_inc.remains+7)||talent.whirling_stars&talent.convoke_the_spirits&cooldown.convoke_the_spirits.remains>cooldown.force_of_nature.duration-10&boss&fight_remains>cooldown.convoke_the_spirits.remains+6\nactions.st+=/fury_of_elune,if=5+variable.passive_asp<astral_power.deficit\nactions.st+=/starsurge,if=talent.starlord&buff.starlord.stack<3\nactions.st+=/sunfire,cycle_targets=1,if=refreshable\nactions.st+=/moonfire,cycle_targets=1,if=refreshable&(!talent.treants_of_the_moon||cooldown.force_of_nature.remains>3&!buff.harmony_of_the_grove.up)\nactions.st+=/stellar_flare,cycle_targets=1,if=refreshable&(target.time_to_die-remains-target>7+spell_targets)\nactions.st+=/variable,name=convoke_condition,value=boss&fight_remains<5||(buff.ca_inc.up||cooldown.ca_inc.remains>40)&(!hero_tree.keeper_of_the_grove||buff.harmony_of_the_grove.up||cooldown.force_of_nature.remains>15)\nactions.st+=/starsurge,if=cooldown.convoke_the_spirits.remains<gcd.max*2&variable.convoke_condition\nactions.st+=/convoke_the_spirits,if=variable.convoke_condition\nactions.st+=/starsurge,if=buff.starlord.remains>4&variable.boat_stacks>=3||fight_remains<4\nactions.st+=/new_moon,if=astral_power.deficit>variable.passive_asp+energize_amount||fight_remains<20||cooldown.ca_inc.remains>15\nactions.st+=/half_moon,if=astral_power.deficit>variable.passive_asp+energize_amount&(buff.eclipse_lunar.remains>execute_time||buff.eclipse_solar.remains>execute_time)||fight_remains<20||cooldown.ca_inc.remains>15\nactions.st+=/full_moon,if=astral_power.deficit>variable.passive_asp+energize_amount&(buff.eclipse_lunar.remains>execute_time||buff.eclipse_solar.remains>execute_time)||fight_remains<20||cooldown.ca_inc.remains>15\nactions.st+=/starsurge,if=buff.starweavers_weft.up||buff.touch_the_cosmos_starsurge.up\nactions.st+=/starfall,if=buff.starweavers_warp.up||buff.touch_the_cosmos_starfall.up\nactions.st+=/starsurge,if=astral_power.deficit<variable.passive_asp+action.wrath.energize_amount+(action.starfire.energize_amount+variable.passive_asp)*(buff.eclipse_solar.remains<(gcd.max*3))\nactions.st+=/force_of_nature,if=!hero_tree.keeper_of_the_grove\nactions.st+=/starfire,if=talent.lunar_calling\nactions.st+=/wrath\n\nactions.pre_cd+=/use_item,name=spymasters_web,if=variable.cd_condition&(buff.spymasters_report.stack>29||boss&fight_remains<cooldown.ca_inc.duration)\n## actions.pre_cd+=/do_treacherous_transmitter_task,if=variable.cd_condition\nactions.pre_cd+=/berserking,if=variable.cd_condition\nactions.pre_cd+=/potion,if=variable.cd_condition\nactions.pre_cd+=/use_item,slot=trinket1,if=!trinket.1.is.spymasters_web&!trinket.1.is.imperfect_ascendancy_serum&!trinket.1.is.treacherous_transmitter&(variable.on_use_trinket=1||variable.on_use_trinket=3)&variable.cd_condition\nactions.pre_cd+=/use_item,slot=trinket2,if=!trinket.2.is.spymasters_web&!trinket.2.is.imperfect_ascendancy_serum&!trinket.2.is.treacherous_transmitter&variable.on_use_trinket=2&variable.cd_condition",
|
|
},
|
|
["Survival"] = {
|
|
["source"] = "# https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241022,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-09-22, 10-21: SimC update\n\n2024-08-24, 09-08: SimC priority update\n\n2024-08-12: Fix Kill Command usage in AOE with maxed Focus\n\n2024-08-01: Respect Hunter's Mark setting\n\n2024-07-27: Minor sim update; use Hunter's Mark\n\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["sentcleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! cooldown.lunar_storm.remains",
|
|
["action"] = "wildfire_bomb",
|
|
["description"] = "SENTINEL || DEFAULT AOE ACTIONLIST",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & cooldown.wildfire_bomb.charges_fractional > 1.7 || cooldown.wildfire_bomb.charges_fractional > 1.9 || ( talent.bombardier.enabled & cooldown.coordinated_assault.remains < 2 * gcd.max ) || talent.butchery.enabled & cooldown.butchery.remains < gcd.max",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.bombardier.enabled || talent.bombardier.enabled & cooldown.wildfire_bomb.charges_fractional < 1",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.tip_of_the_spear.stack = 2 || buff.tip_of_the_spear.stack = 1 )",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.deathblow.remains & talent.sic_em.enabled",
|
|
["action"] = "kill_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.contagious_reagents.enabled",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "muzzle",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "tranquilizing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.health_pct < pet_healing",
|
|
["action"] = "mend_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies < 3 & talent.vicious_hunt.enabled",
|
|
["list_name"] = "plst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 2 & talent.vicious_hunt.enabled",
|
|
["list_name"] = "plcleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies < 3 & ! talent.vicious_hunt.enabled",
|
|
["list_name"] = "sentst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 2 & ! talent.vicious_hunt.enabled",
|
|
["list_name"] = "sentcleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Kill Command if there's nothing else to press",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bag_of_tricks",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "summon_pet",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "algethar_puzzle_box",
|
|
["action"] = "algethar_puzzle_box",
|
|
},
|
|
},
|
|
["plcleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains",
|
|
["action"] = "spearhead",
|
|
["description"] = "PACK LEADER AOE ACTIONLIST",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & cooldown.wildfire_bomb.charges_fractional > 1.7 || cooldown.wildfire_bomb.charges_fractional > 1.9 || cooldown.coordinated_assault.remains < 2 * gcd.max",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack = 2 || buff.tip_of_the_spear.stack = 1",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.bombardier.enabled || talent.bombardier.enabled & cooldown.wildfire_bomb.charges_fractional < 1",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.deathblow.remains",
|
|
["action"] = "kill_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "kill_command",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["action"] = "kill_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "raptor_bite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "settings.use_harpoon",
|
|
["action"] = "harpoon",
|
|
["description"] = "COOLDOWNS ACTIONLIST",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled || time_to_die < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 25 || buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "gcd.remains > gcd.max - 0.1",
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains || cooldown.spearhead.remains",
|
|
["action"] = "use_items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.distance >= 6",
|
|
["action"] = "aspect_of_the_eagle",
|
|
},
|
|
},
|
|
["plst"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "PL ST is currently optimised for KCspam, if the playstyle ends up fixed it is likely better to entirely redo and take the sentactionlist as a baseline. PACK LEADER SINGLE TARGET ACTIONLIST.",
|
|
["criteria"] = "buff.howl_of_the_pack.up & buff.pack_coordination.up & buff.howl_of_the_pack.remains < gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 )",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains",
|
|
["action"] = "spearhead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.serpent_sting.ticking & target.time_to_die > 12 & ( ! talent.contagious_reagents.enabled || active_dot.serpent_sting = 0 )",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.contagious_reagents.enabled & active_dot.serpent_sting < active_enemies & dot.serpent_sting.remains",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack = 2 || buff.tip_of_the_spear.stack = 1",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "kill_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & cooldown.wildfire_bomb.charges_fractional > 1.7 || cooldown.wildfire_bomb.charges_fractional > 1.9 || cooldown.coordinated_assault.remains < 2 * gcd.max",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.bombardier.enabled || talent.bombardier.enabled & cooldown.wildfire_bomb.charges_fractional < 1",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.in > 40 )",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.furious_assault.up",
|
|
["action"] = "raptor_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max & ( ! buff.relentless_primal_ferocity.up || ( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 || focus < 30 ) )",
|
|
["action"] = "kill_command",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.in > 15 )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.contagious_reagents.enabled",
|
|
["action"] = "raptor_bite",
|
|
},
|
|
{
|
|
["action"] = "raptor_bite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["sentst"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! cooldown.lunar_storm.remains",
|
|
["action"] = "wildfire_bomb",
|
|
["description"] = "SENT Further investigate negative Haste Breakpoints on Lunar Storm. SENTINEL || DEFAULT SINGLE TARGET ACTIONLIST.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 )",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains",
|
|
["action"] = "spearhead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.serpent_sting.ticking & target.time_to_die > 12 & ( ! talent.contagious_reagents.enabled || active_dot.serpent_sting = 0 )",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.contagious_reagents.enabled & active_dot.serpent_sting < active_enemies & dot.serpent_sting.remains",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack = 2 || buff.tip_of_the_spear.stack = 1",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.lunar_storm.remains > full_recharge_time - gcd.max ) & ( buff.tip_of_the_spear.stack > 0 & cooldown.wildfire_bomb.charges_fractional > 1.7 || cooldown.wildfire_bomb.charges_fractional > 1.9 ) || cooldown.coordinated_assault.remains < 2 * gcd.max",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.bombardier.enabled || talent.bombardier.enabled & cooldown.wildfire_bomb.charges_fractional < 1",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["action"] = "kill_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack < 1 & cooldown.flanking_strike.remains < gcd.max",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max & ( ! buff.relentless_primal_ferocity.up || ( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 2 ) )",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & cooldown.lunar_storm.remains > full_recharge_time & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.in > 15 )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.contagious_reagents.enabled",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241022,
|
|
["warnings"] = "The import for 'sentcleave' required some automated changes.\nLine 3: Converted 'talent.bombardier' to 'talent.bombardier.enabled' (1x).\nLine 3: Converted 'talent.butchery' to 'talent.butchery.enabled' (1x).\nLine 6: Converted 'talent.bombardier' to 'talent.bombardier.enabled' (1x).\nLine 6: Converted 'talent.bombardier' to 'talent.bombardier.enabled' (1x).\nLine 9: Converted 'talent.sic_em' to 'talent.sic_em.enabled' (1x).\nLine 13: Converted 'talent.contagious_reagents' to 'talent.contagious_reagents.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 6: Converted 'talent.vicious_hunt' to 'talent.vicious_hunt.enabled' (1x).\nLine 7: Converted 'talent.vicious_hunt' to 'talent.vicious_hunt.enabled' (1x).\nLine 8: Converted 'talent.vicious_hunt' to 'talent.vicious_hunt.enabled' (1x).\nLine 9: Converted 'talent.vicious_hunt' to 'talent.vicious_hunt.enabled' (1x).\n\nThe import for 'plst' required some automated changes.\nLine 4: Converted 'talent.contagious_reagents' to 'talent.contagious_reagents.enabled' (1x).\nLine 5: Converted 'talent.contagious_reagents' to 'talent.contagious_reagents.enabled' (1x).\nLine 11: Converted 'talent.bombardier' to 'talent.bombardier.enabled' (1x).\nLine 11: Converted 'talent.bombardier' to 'talent.bombardier.enabled' (1x).\nLine 16: Converted 'talent.contagious_reagents' to 'talent.contagious_reagents.enabled' (1x).\nThe following auras were used in the action list but were not found in the addon database:\n - pack_coordination\n\nThe import for 'cds' required some automated changes.\nLine 2: Converted 'talent.coordinated_assault' to 'talent.coordinated_assault.enabled' (1x).\nLine 2: Converted 'talent.spearhead' to 'talent.spearhead.enabled' (1x).\nLine 2: Converted 'talent.coordinated_assault' to 'talent.coordinated_assault.enabled' (1x).\nLine 3: 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.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 5: Converted 'talent.coordinated_assault' to 'talent.coordinated_assault.enabled' (1x).\nLine 5: Converted 'talent.spearhead' to 'talent.spearhead.enabled' (1x).\nLine 5: Converted 'talent.coordinated_assault' to 'talent.coordinated_assault.enabled' (1x).\nLine 6: Converted 'talent.coordinated_assault' to 'talent.coordinated_assault.enabled' (1x).\nLine 6: Converted 'talent.spearhead' to 'talent.spearhead.enabled' (1x).\nLine 6: Converted 'talent.coordinated_assault' to 'talent.coordinated_assault.enabled' (1x).\n\nThe import for 'plcleave' required some automated changes.\nLine 7: Converted 'talent.bombardier' to 'talent.bombardier.enabled' (1x).\nLine 7: Converted 'talent.bombardier' to 'talent.bombardier.enabled' (1x).\n\nThe import for 'sentst' required some automated changes.\nLine 4: Converted 'talent.contagious_reagents' to 'talent.contagious_reagents.enabled' (1x).\nLine 5: Converted 'talent.contagious_reagents' to 'talent.contagious_reagents.enabled' (1x).\nLine 9: Converted 'talent.bombardier' to 'talent.bombardier.enabled' (1x).\nLine 9: Converted 'talent.bombardier' to 'talent.bombardier.enabled' (1x).\nLine 16: Converted 'talent.contagious_reagents' to 'talent.contagious_reagents.enabled' (1x).\n\nImported 7 action lists.\n",
|
|
["profile"] = "actions.precombat+=/summon_pet\nactions.precombat+=/use_item,name=imperfect_ascendancy_serum\nactions.precombat+=/hunters_mark,if=(settings.mark_any||target.is_boss)&active_dot.hunters_mark=0&target.time_to_pct_80>20\nactions.precombat+=/use_item,name=algethar_puzzle_box\n\nactions+=/muzzle\nactions+=/tranquilizing_shot\nactions+=/hunters_mark,if=(settings.mark_any||target.is_boss)&active_dot.hunters_mark=0&target.time_to_pct_80>20\nactions+=/mend_pet,if=pet.health_pct<pet_healing\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=plst,strict=1,if=active_enemies<3&talent.vicious_hunt\nactions+=/call_action_list,name=plcleave,strict=1,if=active_enemies>2&talent.vicious_hunt\nactions+=/call_action_list,name=sentst,strict=1,if=active_enemies<3&!talent.vicious_hunt\nactions+=/call_action_list,name=sentcleave,strict=1,if=active_enemies>2&!talent.vicious_hunt\n# Use Kill Command if there's nothing else to press\nactions+=/kill_command,cycle_targets=1\nactions+=/arcane_torrent\nactions+=/bag_of_tricks\nactions+=/lights_judgment\n\n# COOLDOWNS ACTIONLIST\nactions.cds+=/harpoon,if=settings.use_harpoon\nactions.cds+=/blood_fury,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\n## actions.cds+=/invoke_external_buff,name=power_infusion,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/ancestral_call,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/fireblood,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/berserking,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault||time_to_die<13\nactions.cds+=/potion,if=boss&fight_remains<25||buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/use_item,name=imperfect_ascendancy_serum,use_off_gcd=1,if=gcd.remains>gcd.max-0.1\nactions.cds+=/use_items,if=cooldown.coordinated_assault.remains||cooldown.spearhead.remains\nactions.cds+=/aspect_of_the_eagle,if=target.distance>=6\n\n# PL ST is currently optimised for KCspam, if the playstyle ends up fixed it is likely better to entirely redo and take the sentactionlist as a baseline. PACK LEADER SINGLE TARGET ACTIONLIST.\nactions.plst+=/raptor_bite,cycle_targets=1,if=buff.howl_of_the_pack.up&buff.pack_coordination.up&buff.howl_of_the_pack.remains<gcd\nactions.plst+=/kill_command,cycle_targets=1,if=(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1)\nactions.plst+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.plst+=/raptor_bite,cycle_targets=1,if=!dot.serpent_sting.ticking&target.time_to_die>12&(!talent.contagious_reagents||active_dot.serpent_sting=0)\nactions.plst+=/raptor_bite,cycle_targets=1,if=talent.contagious_reagents&active_dot.serpent_sting<active_enemies&dot.serpent_sting.remains\nactions.plst+=/butchery\nactions.plst+=/flanking_strike,if=buff.tip_of_the_spear.stack=2||buff.tip_of_the_spear.stack=1\nactions.plst+=/kill_shot,if=buff.tip_of_the_spear.stack>0\nactions.plst+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0&cooldown.wildfire_bomb.charges_fractional>1.7||cooldown.wildfire_bomb.charges_fractional>1.9||cooldown.coordinated_assault.remains<2*gcd\nactions.plst+=/explosive_shot\nactions.plst+=/coordinated_assault,if=!talent.bombardier||talent.bombardier&cooldown.wildfire_bomb.charges_fractional<1\nactions.plst+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.in>40)\nactions.plst+=/raptor_bite,if=buff.furious_assault.up\nactions.plst+=/kill_command,if=focus+cast_regen<focus.max&(!buff.relentless_primal_ferocity.up||(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1||focus<30))\nactions.plst+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.in>15)\nactions.plst+=/raptor_bite,if=!talent.contagious_reagents\nactions.plst+=/raptor_bite\n\n\n# PACK LEADER AOE ACTIONLIST\nactions.plcleave+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.plcleave+=/kill_command,cycle_targets=1,if=buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1\nactions.plcleave+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0&cooldown.wildfire_bomb.charges_fractional>1.7||cooldown.wildfire_bomb.charges_fractional>1.9||cooldown.coordinated_assault.remains<2*gcd\nactions.plcleave+=/flanking_strike,if=buff.tip_of_the_spear.stack=2||buff.tip_of_the_spear.stack=1\nactions.plcleave+=/butchery\nactions.plcleave+=/explosive_shot\nactions.plcleave+=/coordinated_assault,if=!talent.bombardier||talent.bombardier&cooldown.wildfire_bomb.charges_fractional<1\nactions.plcleave+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0\nactions.plcleave+=/kill_shot,if=buff.deathblow.remains\nactions.plcleave+=/kill_command,if=focus+cast_regen<focus.max\nactions.plcleave+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0\nactions.plcleave+=/kill_shot\nactions.plcleave+=/kill_command,cycle_targets=1\nactions.plcleave+=/raptor_bite\n\n# SENT Further investigate negative Haste Breakpoints on Lunar Storm. SENTINEL || DEFAULT SINGLE TARGET ACTIONLIST.\nactions.sentst+=/wildfire_bomb,if=!cooldown.lunar_storm.remains\nactions.sentst+=/kill_command,cycle_targets=1,if=(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1)\nactions.sentst+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.sentst+=/raptor_bite,cycle_targets=1,if=!dot.serpent_sting.ticking&target.time_to_die>12&(!talent.contagious_reagents||active_dot.serpent_sting=0)\nactions.sentst+=/raptor_bite,cycle_targets=1,if=talent.contagious_reagents&active_dot.serpent_sting<active_enemies&dot.serpent_sting.remains\nactions.sentst+=/flanking_strike,if=buff.tip_of_the_spear.stack=2||buff.tip_of_the_spear.stack=1\nactions.sentst+=/wildfire_bomb,if=(cooldown.lunar_storm.remains>full_recharge_time-gcd)&(buff.tip_of_the_spear.stack>0&cooldown.wildfire_bomb.charges_fractional>1.7||cooldown.wildfire_bomb.charges_fractional>1.9)||cooldown.coordinated_assault.remains<2*gcd\nactions.sentst+=/butchery\nactions.sentst+=/coordinated_assault,if=!talent.bombardier||talent.bombardier&cooldown.wildfire_bomb.charges_fractional<1\nactions.sentst+=/explosive_shot\nactions.sentst+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0\nactions.sentst+=/kill_shot\nactions.sentst+=/kill_command,cycle_targets=1,if=buff.tip_of_the_spear.stack<1&cooldown.flanking_strike.remains<gcd\nactions.sentst+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max&(!buff.relentless_primal_ferocity.up||(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<2))\nactions.sentst+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0&cooldown.lunar_storm.remains>full_recharge_time&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.in>15)\nactions.sentst+=/raptor_bite,cycle_targets=1,if=!talent.contagious_reagents\nactions.sentst+=/raptor_bite,cycle_targets=1\n\n# SENTINEL || DEFAULT AOE ACTIONLIST\nactions.sentcleave+=/wildfire_bomb,if=!cooldown.lunar_storm.remains\nactions.sentcleave+=/kill_command,cycle_targets=1,if=buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1\nactions.sentcleave+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0&cooldown.wildfire_bomb.charges_fractional>1.7||cooldown.wildfire_bomb.charges_fractional>1.9||(talent.bombardier&cooldown.coordinated_assault.remains<2*gcd)||talent.butchery&cooldown.butchery.remains<gcd\nactions.sentcleave+=/butchery\nactions.sentcleave+=/explosive_shot\nactions.sentcleave+=/coordinated_assault,if=!talent.bombardier||talent.bombardier&cooldown.wildfire_bomb.charges_fractional<1\nactions.sentcleave+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0\nactions.sentcleave+=/flanking_strike,if=(buff.tip_of_the_spear.stack=2||buff.tip_of_the_spear.stack=1)\nactions.sentcleave+=/kill_shot,if=buff.deathblow.remains&talent.sic_em\nactions.sentcleave+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max\nactions.sentcleave+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0\nactions.sentcleave+=/kill_command,cycle_targets=1\nactions.sentcleave+=/raptor_bite,cycle_targets=1,if=!talent.contagious_reagents\nactions.sentcleave+=/raptor_bite,cycle_targets=1",
|
|
["spec"] = 255,
|
|
},
|
|
["Demonology"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/dragonflight/engine/class_modules/apl/warlock.cpp",
|
|
["builtIn"] = true,
|
|
["date"] = 20241109,
|
|
["spec"] = 266,
|
|
["desc"] = "2024-11-09: Tyrant logic updates\n\n2024-10-23: Move imp_despawn to spec module\n\n2024-10-21: Remove outdated entries\n\n2024-10-06: Light's Judgment\n\n2024-09-24: SimC priority update\n\n2024-08-24, 08-30: SimC priority update\n\n2024-08-02: Adjust for new CD durations\n\n2024-07-23: The War Within (sort of)",
|
|
["lists"] = {
|
|
["items"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! pet.demonic_tyrant.active & trinket.t1.cast_time > 0 || ! trinket.t1.cast_time > 0 ) & ( pet.demonic_tyrant.active || ! talent.summon_demonic_tyrant.enabled || variable.trinket_priority = 2 & cooldown.summon_demonic_tyrant.remains > 20 & ! pet.demonic_tyrant.active & trinket.t2.cooldown.remains < cooldown.summon_demonic_tyrant.remains + 5 ) & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 & ! variable.trinket_2_manual ) || variable.trinket_1_buff_duration >= fight_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! pet.demonic_tyrant.active & trinket.t2.cast_time > 0 || ! trinket.t2.cast_time > 0 ) & ( pet.demonic_tyrant.active || ! talent.summon_demonic_tyrant.enabled || variable.trinket_priority = 1 & cooldown.summon_demonic_tyrant.remains > 20 & ! pet.demonic_tyrant.active & trinket.t1.cooldown.remains < cooldown.summon_demonic_tyrant.remains + 5 ) & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 & ! variable.trinket_1_manual ) || variable.trinket_2_buff_duration >= fight_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ( variable.damage_trinket_priority = 1 || trinket.t2.cooldown.remains ) & ( trinket.t1.cast_time > 0 & ! pet.demonic_tyrant.active || ! trinket.t1.cast_time > 0 ) || ( time < 20 & variable.trinket_2_buffs ) || cooldown.summon_demonic_tyrant.remains_expected > 20 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ( variable.damage_trinket_priority = 2 || trinket.t1.cooldown.remains ) & ( trinket.t2.cast_time > 0 & ! pet.demonic_tyrant.active || ! trinket.t2.cast_time > 0 ) || ( time < 20 & variable.trinket_1_buffs ) || cooldown.summon_demonic_tyrant.remains_expected > 20 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "spymasters_web",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "pet.demonic_tyrant.active & fight_remains <= 80 & buff.spymasters_report.stack >= 30 & ( ! variable.trinket_1_buffs & trinket.t2.is.spymasters_web || ! variable.trinket_2_buffs & trinket.t1.is.spymasters_web ) || fight_remains <= 20 & ( trinket.t1.cooldown.remains & trinket.t2.is.spymasters_web || trinket.t2.cooldown.remains & trinket.t1.is.spymasters_web || ! variable.trinket_1_buffs || ! variable.trinket_2_buffs )",
|
|
["action"] = "spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "pet.demonic_tyrant.active & gcd.remains > 0 || fight_remains <= 30",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["slot"] = "main_hand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mirror_of_fractured_tomorrows",
|
|
["criteria"] = "trinket.t1.is.mirror_of_fractured_tomorrows & variable.trinket_priority = 2 || trinket.t2.is.mirror_of_fractured_tomorrows & variable.trinket_priority = 1",
|
|
["name"] = "mirror_of_fractured_tomorrows",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_1_buffs & ( variable.damage_trinket_priority = 1 || trinket.t2.cooldown.remains )",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_2_buffs & ( variable.damage_trinket_priority = 2 || trinket.t1.cooldown.remains )",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
},
|
|
["fight_end"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 20",
|
|
["action"] = "grimoire_felguard",
|
|
},
|
|
{
|
|
["action"] = "ruination",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 2 * gcd.max & ! prev_gcd.1.implosion",
|
|
["action"] = "implosion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < gcd.max * 2 * buff.demonic_core.stack + 9 & buff.demonic_core.up & ( soul_shard < 4 || fight_remains < buff.demonic_core.stack * gcd.max )",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 20",
|
|
["action"] = "call_dreadstalkers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 20",
|
|
["action"] = "summon_vilefiend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 20",
|
|
["action"] = "summon_demonic_tyrant",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 10",
|
|
["action"] = "demonic_strength",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonic_core.stack < 3 & fight_remains < 20",
|
|
["action"] = "power_siphon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < gcd.max * 2 * buff.demonic_core.stack + 9 & buff.demonic_core.up & ( soul_shard < 4 || fight_remains < buff.demonic_core.stack * gcd.max )",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard > 2 & fight_remains < gcd.max * 2 * buff.demonic_core.stack + 9",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["action"] = "infernal_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "axe_toss",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "variables",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tyrant.remains > 10",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "pet.demonic_tyrant.active || boss & fight_remains < 22",
|
|
["var_name"] = "check_racials",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "variable.check_racials",
|
|
["list_name"] = "racials",
|
|
},
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "boss & fight_remains < 30",
|
|
["list_name"] = "fight_end",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "time < variable.first_tyrant_time",
|
|
["list_name"] = "opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < gcd.max * 14",
|
|
["list_name"] = "tyrant",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains > 25 || variable.next_tyrant_cd > 25",
|
|
["action"] = "call_dreadstalkers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains > 30",
|
|
["action"] = "summon_vilefiend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! debuff.doom.up || ! action.demonbolt.in_flight & debuff.doom.remains <= 2 ) & buff.demonic_core.up & ( ( ( ! talent.soul_strike.enabled || cooldown.soul_strike.remains > gcd.max * 2 & talent.fel_invocation.enabled ) & soul_shard < 4 ) || soul_shard < ( 4 - ( active_enemies > 2 ) ) ) & ! prev_gcd.1.demonbolt & talent.doom.enabled & cooldown.summon_demonic_tyrant.remains > 15",
|
|
["action"] = "demonbolt",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonic_core.stack >= 3 & soul_shard <= 3 & ! variable.pool_cores_for_tyrant",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonic_core.stack < 3 & cooldown.summon_demonic_tyrant.remains > 25",
|
|
["action"] = "power_siphon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "demonic_strength",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "bilescourge_bombers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ( cooldown.demonic_strength.remains || ! talent.demonic_strength.enabled )",
|
|
["action"] = "guillotine",
|
|
},
|
|
{
|
|
["action"] = "ruination",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.infernal_bolt.remains > cast_time & buff.infernal_bolt.remains < 2 * gcd.max || soul_shard < 3 & cooldown.summon_demonic_tyrant.remains > 20",
|
|
["action"] = "infernal_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "two_cast_imps > 0 & variable.impl & ! prev_gcd.1.implosion & ( active_enemies > 3 || active_enemies <= 3 & last_cast_imps > 0 )",
|
|
["action"] = "implosion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.diabolic_ritual_remains > gcd.max & variable.diabolic_ritual_remains < gcd.max + gcd.max & buff.demonic_core.up & soul_shard <= 3",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.diabolic_ritual_remains > gcd.max & variable.diabolic_ritual_remains < soul_shard_deficit * cast_time + gcd.max & soul_shard < 5",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( soul_shard > 2 & ( cooldown.call_dreadstalkers.remains > gcd.max * 4 || buff.demonic_calling.remains - gcd.max > cooldown.call_dreadstalkers.remains ) & cooldown.summon_demonic_tyrant.remains > 17 ) || soul_shard = 5 || soul_shard = 4 & talent.fel_invocation.enabled ) & ( active_enemies = 1 )",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard > 2 & ! ( active_enemies = 1 )",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ! debuff.doom.up ) || active_enemies < 4 ) & buff.demonic_core.stack > 1 & ( ( soul_shard < 4 & ! talent.soul_strike.enabled || cooldown.soul_strike.remains > gcd.max * 2 & talent.fel_invocation.enabled ) || soul_shard < 3 ) & ! variable.pool_cores_for_tyrant",
|
|
["action"] = "demonbolt",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonic_core.up & buff.tyrant.up & soul_shard < 3 - talent.quietus.enabled",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonic_core.stack > 1 & soul_shard < 4 - talent.quietus.enabled",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ! debuff.doom.up ) || active_enemies < 4 ) & talent.doom.enabled & ( debuff.doom.remains > 10 & buff.demonic_core.up & soul_shard < 4 - talent.quietus.enabled ) & ! variable.pool_cores_for_tyrant",
|
|
["action"] = "demonbolt",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < buff.demonic_core.stack * gcd.max",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ! debuff.doom.up ) || active_enemies < 4 ) & buff.demonic_core.up & ( cooldown.power_siphon.remains < 4 ) & ( soul_shard < 4 - talent.quietus.enabled ) & ! variable.pool_cores_for_tyrant",
|
|
["action"] = "demonbolt",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.demonic_core.up & cooldown.summon_demonic_tyrant.remains > 25",
|
|
["action"] = "power_siphon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < cooldown.summon_demonic_tyrant.remains + 5",
|
|
["action"] = "summon_vilefiend",
|
|
},
|
|
{
|
|
["action"] = "infernal_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! pet.tyrant.active & cooldown.tyrant_remains > 15 & active_enemies > 1",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["action"] = "shadow_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time > 0 & ! pet.alive & ! buff.grimoire_of_sacrifice.up",
|
|
["action"] = "fel_domination",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! pet.alive & ! buff.grimoire_of_sacrifice.up",
|
|
["action"] = "summon_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "12",
|
|
["var_name"] = "first_tyrant_time",
|
|
["description"] = "Sets the expected Tyrant Setup on pull to take a total 12 seconds long",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "first_tyrant_time",
|
|
["value"] = "action.grimoire_felguard.execute_time",
|
|
["description"] = "Accounts for the execution time of Grimoire Felguard in the setup of Tyrant on Pull",
|
|
["criteria"] = "talent.grimoire_felguard.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "first_tyrant_time",
|
|
["value"] = "action.summon_vilefiend.execute_time",
|
|
["description"] = "Accounts for the execution time of Vilefiend in the the setup of Tyrant on Pull",
|
|
["criteria"] = "talent.summon_vilefiend.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "first_tyrant_time",
|
|
["value"] = "gcd.max",
|
|
["description"] = "Accounts for the execution time of both Grimoire Felguard and Vilefiend in the tyrant Setup on Pull",
|
|
["criteria"] = "talent.grimoire_felguard.enabled || talent.summon_vilefiend.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "action.summon_demonic_tyrant.execute_time + action.shadow_bolt.execute_time",
|
|
["var_name"] = "first_tyrant_time",
|
|
["description"] = "Accounts for Tyrant own Cast Time and an additional Shadowbolt cast time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "min",
|
|
["action"] = "variable",
|
|
["value"] = "10",
|
|
["var_name"] = "first_tyrant_time",
|
|
["description"] = "Sets an absolute minimun of 10s for the First Tyrant Setup",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "in_opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff",
|
|
["var_name"] = "trinket_1_buffs",
|
|
["description"] = "Defines if the the Trinket 1 is a buff Trinket in the trinket logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff",
|
|
["var_name"] = "trinket_2_buffs",
|
|
["description"] = "Defines if the the Trinket 2 is a buff Trinket in the trinket logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.ruby_whelp_shell",
|
|
["var_name"] = "trinket_1_exclude",
|
|
["description"] = "For On Use Trinkets on slot 1 with on use effects you dont want to use in combat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.ruby_whelp_shell",
|
|
["var_name"] = "trinket_2_exclude",
|
|
["description"] = "For On Use Trinkets on slot 2 with on use effects you dont want to use in combat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.spymasters_web || trinket.t1.is.imperfect_ascendancy_serum",
|
|
["var_name"] = "trinket_1_manual",
|
|
["description"] = "Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.spymasters_web || trinket.t2.is.imperfect_ascendancy_serum",
|
|
["var_name"] = "trinket_2_manual",
|
|
["description"] = "Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.buff_duration + ( trinket.t1.is.mirror_of_fractured_tomorrows * 20 )",
|
|
["var_name"] = "trinket_1_buff_duration",
|
|
["description"] = "Defines the Duration of the buff or an expected time for value of the trinket",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.buff_duration + ( trinket.t2.is.mirror_of_fractured_tomorrows * 20 )",
|
|
["var_name"] = "trinket_2_buff_duration",
|
|
["description"] = "Defines the Duration of the buff or an expected time for value of the trinket",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Trinket Automatic Logic for Trinket 1",
|
|
["var_name"] = "trinket_1_sync",
|
|
["value"] = "1",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % cooldown.summon_demonic_tyrant.duration = 0 || cooldown.summon_demonic_tyrant.duration % trinket.t1.cooldown.duration = 0 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Trinket Automatic Logic for Trinket 2",
|
|
["var_name"] = "trinket_2_sync",
|
|
["value"] = "1",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "variable.trinket_2_buffs & ( trinket.t2.cooldown.duration % cooldown.summon_demonic_tyrant.duration = 0 || cooldown.summon_demonic_tyrant.duration % trinket.t2.cooldown.duration = 0 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Automatic Logic in case of 2 Buff Trinkets",
|
|
["var_name"] = "damage_trinket_priority",
|
|
["value"] = "2",
|
|
["action"] = "variable",
|
|
["value_else"] = "1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_2_buffs & trinket.t2.ilvl > trinket.t1.ilvl",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["value"] = "2",
|
|
["value_else"] = "1",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / variable.trinket_2_buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( ( trinket.t1.cooldown.duration / variable.trinket_1_buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) ) * ( 1 + ( ( trinket.t1.ilvl - trinket.t2.ilvl ) / 100 ) ) )",
|
|
},
|
|
{
|
|
["action"] = "power_siphon",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.power_siphon.up || soul_shards.deficit > 1",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["action"] = "shadow_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["racials"] = {
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "berserking",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blood_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["opener"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard >= 5 - talent.fel_invocation.enabled",
|
|
["action"] = "grimoire_felguard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard = 5",
|
|
["action"] = "summon_vilefiend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard < 5 & cooldown.call_dreadstalkers.up",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard = 5",
|
|
["action"] = "call_dreadstalkers",
|
|
},
|
|
{
|
|
["action"] = "ruination",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["tyrant"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "! variable.check_racials & ( variable.imp_despawn & variable.imp_despawn < time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & ( prev_gcd.1.hand_of_guldan || prev_gcd.1.ruination ) & ( variable.imp_despawn & variable.imp_despawn < time + gcd.max + action.summon_demonic_tyrant.cast_time || soul_shard < 2 ) )",
|
|
["list_name"] = "racials",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn & variable.imp_despawn < time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & ( prev_gcd.1.hand_of_guldan || prev_gcd.1.ruination ) & ( variable.imp_despawn & variable.imp_despawn < time + gcd.max + action.summon_demonic_tyrant.cast_time || soul_shard < 2 )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < 15 & ( time < variable.first_tyrant_time || cooldown.summon_demonic_tyrant.remains > ( action.summon_demonic_tyrant.cast_time + 2 * gcd.max ) )",
|
|
["action"] = "power_siphon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dreadstalkers.remains > gcd.max + action.summon_demonic_tyrant.cast_time & ( soul_shard = 5 || variable.imp_despawn )",
|
|
["action"] = "ruination",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.infernal_bolt.remains > cast_time & buff.infernal_bolt.remains < 2 * gcd.max || ! buff.demonic_core.up ) & variable.imp_despawn > time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & soul_shard < 3",
|
|
["action"] = "infernal_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.call_dreadstalkers & soul_shard < 4 & buff.demonic_core.stack < 4",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.2.call_dreadstalkers & prev_gcd.1.shadow_bolt & buff.bloodlust.up & soul_shard < 5",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.summon_vilefiend & ( buff.demonic_calling.down || prev_gcd.2.grimoire_felguard )",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.grimoire_felguard & buff.demonic_core.stack < 3 & buff.demonic_calling.remains > gcd.max * 3",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn > time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & ! buff.demonic_core.up & buff.demonic_art_pit_lord.up & variable.imp_despawn < time + gcd.max * 5 + action.summon_demonic_tyrant.cast_time",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn > time + gcd.max + action.summon_demonic_tyrant.cast_time & variable.imp_despawn < time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & buff.dreadstalkers.remains > gcd.max + action.summon_demonic_tyrant.cast_time & soul_shard > 1",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.demonic_core.up & variable.imp_despawn > time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & variable.imp_despawn < time + gcd.max * 4 + action.summon_demonic_tyrant.cast_time & soul_shard < 3 & buff.dreadstalkers.remains > gcd.max * 2 + action.summon_demonic_tyrant.cast_time",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < 17 - 2 * gcd.max & cooldown.summon_vilefiend.remains < 15 - 2 * gcd.max & cooldown.call_dreadstalkers.remains < 12 - 2 * gcd.max",
|
|
["action"] = "grimoire_felguard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < 15 - 2 * gcd.max & ( buff.grimoire_felguard.up || cooldown.grimoire_felguard.remains > 15 || ! talent.grimoire_felguard.enabled ) & ( buff.dreadstalkers.up || cooldown.call_dreadstalkers.remains < 15 - 2 * gcd.max || ! talent.call_dreadstalkers.enabled )",
|
|
["action"] = "summon_vilefiend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < 12 - 2 * gcd.max & ( buff.vilefiend.up || cooldown.summon_vilefiend.remains < 12 - 2 * gcd.max || ! talent.summon_vilefiend.enabled )",
|
|
["action"] = "call_dreadstalkers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ( variable.imp_despawn & variable.imp_despawn < time + gcd.max * 2 + cast_time ) || ( buff.wild_imps.stack > 9 & soul_shards < 2 ) ) & buff.dreadstalkers.up & ( buff.vilefiend.up || ! talent.summon_vilefiend.enabled ) ) || ( buff.dreadstalkers.up & buff.dreadstalkers.remains < gcd.max * 2 + cast_time & ( ( buff.vilefiend.up & buff.vilefiend.remains > 2 * gcd.max ) || ! talent.summon_vilefiend.enabled ) & ( ( buff.grimoire_felguard.up & buff.grimoire_felguard.remains > 2 * gcd.max ) || ! talent.grimoire_felguard.enabled || cooldown.grimoire_felguard.remains > 20 ) )",
|
|
["action"] = "summon_demonic_tyrant",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.imp_despawn || buff.dreadstalkers.remains ) & soul_shard >= 3 || soul_shard = 5",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn & soul_shard < 3",
|
|
["action"] = "infernal_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn & buff.demonic_core.up & soul_shard < 4 || prev_gcd.1.call_dreadstalkers & soul_shard < 4 & buff.demonic_core.stack = 4 || buff.demonic_core.stack = 4 & soul_shard < 4 || buff.demonic_core.stack >= 2 & cooldown.power_siphon.remains < 5",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn || soul_shard = 5 & cooldown.summon_vilefiend.remains > gcd.max * 3",
|
|
["action"] = "ruination",
|
|
},
|
|
{
|
|
["action"] = "shadow_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "infernal_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["variables"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.summon_demonic_tyrant.remains_expected",
|
|
["var_name"] = "next_tyrant_cd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "in_opener",
|
|
["criteria"] = "pet.demonic_tyrant.active",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "impl",
|
|
["value"] = "buff.tyrant.down",
|
|
["description"] = "Defines the viability of Implosion when Tyrant is down",
|
|
["criteria"] = "active_enemies > 1 + ( talent.sacrificed_souls.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "impl",
|
|
["value"] = "buff.tyrant.remains < 6",
|
|
["description"] = "Defines the Viability of Implosion while Tyrant is Up",
|
|
["criteria"] = "active_enemies > 2 + ( talent.sacrificed_souls.enabled ) & active_enemies < 5 + ( talent.sacrificed_souls.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "impl",
|
|
["value"] = "buff.tyrant.remains < 8",
|
|
["description"] = "Defines the Viability of Implosion while Tyrant is Up",
|
|
["criteria"] = "active_enemies > 4 + ( talent.sacrificed_souls.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.summon_demonic_tyrant.remains < 20 & variable.next_tyrant_cd < 20 & ( buff.demonic_core.stack <= 2 || ! buff.demonic_core.up ) & cooldown.summon_vilefiend.remains < gcd.max * 8 & cooldown.call_dreadstalkers.remains < gcd.max * 8",
|
|
["var_name"] = "pool_cores_for_tyrant",
|
|
["description"] = "Restricts Demonic Core usage for the sake of having 2 or more Demonic Cores on Tyrant Setup",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.diabolic_ritual_mother_of_chaos.remains",
|
|
["var_name"] = "diabolic_ritual_remains",
|
|
["criteria"] = "buff.diabolic_ritual_mother_of_chaos.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.diabolic_ritual_overlord.remains",
|
|
["var_name"] = "diabolic_ritual_remains",
|
|
["criteria"] = "buff.diabolic_ritual_overlord.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.diabolic_ritual_pit_lord.remains",
|
|
["var_name"] = "diabolic_ritual_remains",
|
|
["criteria"] = "buff.diabolic_ritual_pit_lord.up",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241109,
|
|
["warnings"] = "The import for 'items' required some automated changes.\nLine 1: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 1: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 1: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 1: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 2: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 3: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 4: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 8: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 8: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 9: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 9: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 10: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 10: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\n\nThe import for 'default' required some automated changes.\nLine 12: Converted 'talent.soul_strike' to 'talent.soul_strike.enabled' (1x).\nLine 12: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\nLine 12: Converted 'talent.doom' to 'talent.doom.enabled' (1x).\nLine 17: Converted 'talent.demonic_strength' to 'talent.demonic_strength.enabled' (1x).\nLine 23: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\nLine 25: Converted 'talent.soul_strike' to 'talent.soul_strike.enabled' (1x).\nLine 25: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\nLine 26: Converted 'talent.quietus' to 'talent.quietus.enabled' (1x).\nLine 27: Converted 'talent.quietus' to 'talent.quietus.enabled' (1x).\nLine 28: Converted 'talent.doom' to 'talent.doom.enabled' (1x).\nLine 28: Converted 'talent.quietus' to 'talent.quietus.enabled' (1x).\nLine 30: Converted 'talent.quietus' to 'talent.quietus.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 10: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 11: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 12: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 13: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 14: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 14: Converted 'trinket.1.is.imperfect_ascendancy_serum' to 'trinket.t1.is.imperfect_ascendancy_serum' (1x).\nLine 15: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 15: Converted 'trinket.2.is.imperfect_ascendancy_serum' to 'trinket.t2.is.imperfect_ascendancy_serum' (1x).\nLine 16: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 16: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 16: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 17: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 17: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 17: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 18: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%trinket.t1.cooldown.duration=0)'.\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 19: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%trinket.t2.cooldown.duration=0)'.\nLine 20: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 20: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nLine 21: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 21: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 21: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 21: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 21: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 21: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 21: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 21: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 21: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nLine 21: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 21: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%variable.trinket_2_buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>(((trinket.t1.cooldown.duration%variable.trinket_1_buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))*(1+((trinket.t1.ilvl-trinket.t2.ilvl)%100)))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/variable.trinket_2_buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>(((trinket.t1.cooldown.duration/variable.trinket_1_buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))*(1+((trinket.t1.ilvl-trinket.t2.ilvl)/100)))'.\n\nThe import for 'tyrant' required some automated changes.\nLine 14: Converted 'talent.grimoire_felguard' to 'talent.grimoire_felguard.enabled' (1x).\nLine 14: Converted 'talent.call_dreadstalkers' to 'talent.call_dreadstalkers.enabled' (1x).\nLine 15: Converted 'talent.summon_vilefiend' to 'talent.summon_vilefiend.enabled' (1x).\n\nThe import for 'opener' required some automated changes.\nLine 1: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\n\nImported 8 action lists.\n",
|
|
["author"] = "SimC",
|
|
["profile"] = "actions.precombat+=/fel_domination,if=time>0&!pet.alive&!buff.grimoire_of_sacrifice.up\nactions.precombat+=/summon_pet,if=!pet.alive&!buff.grimoire_of_sacrifice.up\n# Sets the expected Tyrant Setup on pull to take a total 12 seconds long\nactions.precombat+=/variable,name=first_tyrant_time,op=set,value=12\n# Accounts for the execution time of Grimoire Felguard in the setup of Tyrant on Pull\nactions.precombat+=/variable,name=first_tyrant_time,op=add,value=action.grimoire_felguard.execute_time,if=talent.grimoire_felguard.enabled\n# Accounts for the execution time of Vilefiend in the the setup of Tyrant on Pull\nactions.precombat+=/variable,name=first_tyrant_time,op=add,value=action.summon_vilefiend.execute_time,if=talent.summon_vilefiend.enabled\n# Accounts for the execution time of both Grimoire Felguard and Vilefiend in the tyrant Setup on Pull\nactions.precombat+=/variable,name=first_tyrant_time,op=add,value=gcd.max,if=talent.grimoire_felguard.enabled||talent.summon_vilefiend.enabled\n# Accounts for Tyrant own Cast Time and an additional Shadowbolt cast time\nactions.precombat+=/variable,name=first_tyrant_time,op=sub,value=action.summon_demonic_tyrant.execute_time+action.shadow_bolt.execute_time\n# Sets an absolute minimun of 10s for the First Tyrant Setup\nactions.precombat+=/variable,name=first_tyrant_time,op=min,value=10\nactions.precombat+=/variable,name=in_opener,op=set,value=1\n# Defines if the the Trinket 1 is a buff Trinket in the trinket logic\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff\n# Defines if the the Trinket 2 is a buff Trinket in the trinket logic\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff\n# For On Use Trinkets on slot 1 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell\n# For On Use Trinkets on slot 2 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell\n# Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.spymasters_web||trinket.1.is.imperfect_ascendancy_serum\n# Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.spymasters_web||trinket.2.is.imperfect_ascendancy_serum\n# Defines the Duration of the buff or an expected time for value of the trinket\nactions.precombat+=/variable,name=trinket_1_buff_duration,value=trinket.1.proc.any_dps.duration+(trinket.1.is.mirror_of_fractured_tomorrows*20)\n# Defines the Duration of the buff or an expected time for value of the trinket\nactions.precombat+=/variable,name=trinket_2_buff_duration,value=trinket.2.proc.any_dps.duration+(trinket.2.is.mirror_of_fractured_tomorrows*20)\n# Trinket Automatic Logic for Trinket 1\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.1.cooldown.duration=0)\n# Trinket Automatic Logic for Trinket 2\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.2.cooldown.duration=0)\n# Automatic Logic in case of 2 Buff Trinkets\nactions.precombat+=/variable,name=damage_trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&!variable.trinket_2_buffs&trinket.2.ilvl>trinket.1.ilvl\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%variable.trinket_2_buff_duration)*(1.5+trinket.2.has_buff.intellect)*(variable.trinket_2_sync))>(((trinket.1.cooldown.duration%variable.trinket_1_buff_duration)*(1.5+trinket.1.has_buff.intellect)*(variable.trinket_1_sync))*(1+((trinket.1.ilvl-trinket.2.ilvl)%100)))\nactions.precombat+=/power_siphon\nactions.precombat+=/lights_judgment\nactions.precombat+=/demonbolt,if=!buff.power_siphon.up||soul_shards.deficit>1\nactions.precombat+=/shadow_bolt\n\nactions+=/axe_toss\nactions+=/call_action_list,name=variables\nactions+=/potion,if=buff.tyrant.remains>10\nactions+=/variable,name=check_racials,op=set,value=pet.demonic_tyrant.active||boss&fight_remains<22\nactions+=/call_action_list,name=racials,if=variable.check_racials,use_off_gcd=1\nactions+=/call_action_list,name=items,use_off_gcd=1\n## actions+=/invoke_external_buff,name=power_infusion,if=fight_remains<20||pet.demonic_tyrant.active&fight_remains<100||fight_remains<25||(pet.demonic_tyrant.active||!talent.summon_demonic_tyrant&buff.dreadstalkers.up)\nactions+=/call_action_list,name=fight_end,if=boss&fight_remains<30\nactions+=/call_action_list,name=opener,strict=1,if=time<variable.first_tyrant_time\nactions+=/call_action_list,name=tyrant,if=cooldown.summon_demonic_tyrant.remains<gcd.max*14\nactions+=/call_dreadstalkers,if=cooldown.summon_demonic_tyrant.remains>25||variable.next_tyrant_cd>25\nactions+=/summon_vilefiend,if=cooldown.summon_demonic_tyrant.remains>30\nactions+=/demonbolt,cycle_targets=1,if=(!debuff.doom.up||!action.demonbolt.in_flight&debuff.doom.remains<=2)&buff.demonic_core.up&(((!talent.soul_strike||cooldown.soul_strike.remains>gcd.max*2&talent.fel_invocation)&soul_shard<4)||soul_shard<(4-(active_enemies>2)))&!prev_gcd.1.demonbolt&talent.doom&cooldown.summon_demonic_tyrant.remains>15\nactions+=/demonbolt,if=buff.demonic_core.stack>=3&soul_shard<=3&!variable.pool_cores_for_tyrant\nactions+=/power_siphon,if=buff.demonic_core.stack<3&cooldown.summon_demonic_tyrant.remains>25\nactions+=/demonic_strength,if=active_enemies>1\nactions+=/bilescourge_bombers,if=active_enemies>1\nactions+=/guillotine,if=active_enemies>1&(cooldown.demonic_strength.remains||!talent.demonic_strength)\nactions+=/ruination\nactions+=/infernal_bolt,if=buff.infernal_bolt.remains>cast_time&buff.infernal_bolt.remains<2*gcd.max||soul_shard<3&cooldown.summon_demonic_tyrant.remains>20\nactions+=/implosion,if=two_cast_imps>0&variable.impl&!prev_gcd.1.implosion&(active_enemies>3||active_enemies<=3&last_cast_imps>0)\nactions+=/demonbolt,if=variable.diabolic_ritual_remains>gcd.max&variable.diabolic_ritual_remains<gcd.max+gcd.max&buff.demonic_core.up&soul_shard<=3\nactions+=/shadow_bolt,if=variable.diabolic_ritual_remains>gcd.max&variable.diabolic_ritual_remains<soul_shard.deficit*cast_time+gcd.max&soul_shard<5\nactions+=/hand_of_guldan,if=((soul_shard>2&(cooldown.call_dreadstalkers.remains>gcd.max*4||buff.demonic_calling.remains-gcd.max>cooldown.call_dreadstalkers.remains)&cooldown.summon_demonic_tyrant.remains>17)||soul_shard=5||soul_shard=4&talent.fel_invocation)&(active_enemies=1)\nactions+=/hand_of_guldan,if=soul_shard>2&!(active_enemies=1)\nactions+=/demonbolt,cycle_targets=1,if=((!debuff.doom.up)||active_enemies<4)&buff.demonic_core.stack>1&((soul_shard<4&!talent.soul_strike||cooldown.soul_strike.remains>gcd.max*2&talent.fel_invocation)||soul_shard<3)&!variable.pool_cores_for_tyrant\nactions+=/demonbolt,if=buff.demonic_core.up&buff.tyrant.up&soul_shard<3-talent.quietus\nactions+=/demonbolt,if=buff.demonic_core.stack>1&soul_shard<4-talent.quietus\nactions+=/demonbolt,cycle_targets=1,if=((!debuff.doom.up)||active_enemies<4)&talent.doom&(debuff.doom.remains>10&buff.demonic_core.up&soul_shard<4-talent.quietus)&!variable.pool_cores_for_tyrant\nactions+=/demonbolt,if=fight_remains<buff.demonic_core.stack*gcd.max\nactions+=/demonbolt,cycle_targets=1,if=((!debuff.doom.up)||active_enemies<4)&buff.demonic_core.up&(cooldown.power_siphon.remains<4)&(soul_shard<4-talent.quietus)&!variable.pool_cores_for_tyrant\nactions+=/power_siphon,if=!buff.demonic_core.up&cooldown.summon_demonic_tyrant.remains>25\nactions+=/summon_vilefiend,if=boss&fight_remains<cooldown.summon_demonic_tyrant.remains+5\nactions+=/infernal_bolt\nactions+=/lights_judgment,if=!pet.tyrant.active&cooldown.tyrant_remains>15&active_enemies>1\nactions+=/shadow_bolt\n\nactions.fight_end+=/grimoire_felguard,if=fight_remains<20\nactions.fight_end+=/ruination\nactions.fight_end+=/implosion,if=fight_remains<2*gcd.max&!prev_gcd.1.implosion\nactions.fight_end+=/demonbolt,if=fight_remains<gcd.max*2*buff.demonic_core.stack+9&buff.demonic_core.up&(soul_shard<4||fight_remains<buff.demonic_core.stack*gcd.max)\nactions.fight_end+=/call_dreadstalkers,if=fight_remains<20\nactions.fight_end+=/summon_vilefiend,if=fight_remains<20\nactions.fight_end+=/summon_demonic_tyrant,if=fight_remains<20\nactions.fight_end+=/demonic_strength,if=fight_remains<10\nactions.fight_end+=/power_siphon,if=buff.demonic_core.stack<3&fight_remains<20\nactions.fight_end+=/demonbolt,if=fight_remains<gcd.max*2*buff.demonic_core.stack+9&buff.demonic_core.up&(soul_shard<4||fight_remains<buff.demonic_core.stack*gcd.max)\nactions.fight_end+=/hand_of_guldan,if=soul_shard>2&fight_remains<gcd.max*2*buff.demonic_core.stack+9\nactions.fight_end+=/infernal_bolt\n\nactions.items+=/use_item,use_off_gcd=1,slot=trinket1,if=variable.trinket_1_buffs&!variable.trinket_1_manual&(!pet.demonic_tyrant.active&trinket.1.cast_time>0||!trinket.1.cast_time>0)&(pet.demonic_tyrant.active||!talent.summon_demonic_tyrant||variable.trinket_priority=2&cooldown.summon_demonic_tyrant.remains>20&!pet.demonic_tyrant.active&trinket.2.cooldown.remains<cooldown.summon_demonic_tyrant.remains+5)&(variable.trinket_2_exclude||!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1&!variable.trinket_2_manual)||variable.trinket_1_buff_duration>=fight_remains\nactions.items+=/use_item,use_off_gcd=1,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&(!pet.demonic_tyrant.active&trinket.2.cast_time>0||!trinket.2.cast_time>0)&(pet.demonic_tyrant.active||!talent.summon_demonic_tyrant||variable.trinket_priority=1&cooldown.summon_demonic_tyrant.remains>20&!pet.demonic_tyrant.active&trinket.1.cooldown.remains<cooldown.summon_demonic_tyrant.remains+5)&(variable.trinket_1_exclude||!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2&!variable.trinket_1_manual)||variable.trinket_2_buff_duration>=fight_remains\nactions.items+=/use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&((variable.damage_trinket_priority=1||trinket.2.cooldown.remains)&(trinket.1.cast_time>0&!pet.demonic_tyrant.active||!trinket.1.cast_time>0)||(time<20&variable.trinket_2_buffs)||cooldown.summon_demonic_tyrant.remains_expected>20)\nactions.items+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&((variable.damage_trinket_priority=2||trinket.1.cooldown.remains)&(trinket.2.cast_time>0&!pet.demonic_tyrant.active||!trinket.2.cast_time>0)||(time<20&variable.trinket_1_buffs)||cooldown.summon_demonic_tyrant.remains_expected>20)\nactions.items+=/use_item,use_off_gcd=1,name=spymasters_web,if=pet.demonic_tyrant.active&fight_remains<=80&buff.spymasters_report.stack>=30&(!variable.trinket_1_buffs&trinket.2.is.spymasters_web||!variable.trinket_2_buffs&trinket.1.is.spymasters_web)||fight_remains<=20&(trinket.1.cooldown.remains&trinket.2.is.spymasters_web||trinket.2.cooldown.remains&trinket.1.is.spymasters_web||!variable.trinket_1_buffs||!variable.trinket_2_buffs)\nactions.items+=/use_item,use_off_gcd=1,name=imperfect_ascendancy_serum,if=pet.demonic_tyrant.active&gcd.remains>0||fight_remains<=30\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand\nactions.items+=/use_item,name=mirror_of_fractured_tomorrows,if=trinket.1.is.mirror_of_fractured_tomorrows&variable.trinket_priority=2||trinket.2.is.mirror_of_fractured_tomorrows&variable.trinket_priority=1\nactions.items+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(variable.damage_trinket_priority=1||trinket.2.cooldown.remains)\nactions.items+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(variable.damage_trinket_priority=2||trinket.1.cooldown.remains)\n\nactions.opener+=/grimoire_felguard,if=soul_shard>=5-talent.fel_invocation\nactions.opener+=/summon_vilefiend,if=soul_shard=5\nactions.opener+=/shadow_bolt,if=soul_shard<5&cooldown.call_dreadstalkers.up\nactions.opener+=/call_dreadstalkers,if=soul_shard=5\nactions.opener+=/ruination\n\nactions.racials+=/berserking,use_off_gcd=1\nactions.racials+=/blood_fury\nactions.racials+=/fireblood\nactions.racials+=/ancestral_call\n\nactions.tyrant+=/call_action_list,name=racials,if=!variable.check_racials&(variable.imp_despawn&variable.imp_despawn<time+gcd.max*2+action.summon_demonic_tyrant.cast_time&(prev_gcd.1.hand_of_guldan||prev_gcd.1.ruination)&(variable.imp_despawn&variable.imp_despawn<time+gcd.max+action.summon_demonic_tyrant.cast_time||soul_shard<2))\nactions.tyrant+=/potion,if=variable.imp_despawn&variable.imp_despawn<time+gcd.max*2+action.summon_demonic_tyrant.cast_time&(prev_gcd.1.hand_of_guldan||prev_gcd.1.ruination)&(variable.imp_despawn&variable.imp_despawn<time+gcd.max+action.summon_demonic_tyrant.cast_time||soul_shard<2)\nactions.tyrant+=/power_siphon,if=cooldown.summon_demonic_tyrant.remains<15&(time<variable.first_tyrant_time||cooldown.summon_demonic_tyrant.remains>(action.summon_demonic_tyrant.cast_time+2*gcd.max))\nactions.tyrant+=/ruination,if=buff.dreadstalkers.remains>gcd.max+action.summon_demonic_tyrant.cast_time&(soul_shard=5||variable.imp_despawn)\nactions.tyrant+=/infernal_bolt,if=(buff.infernal_bolt.remains>cast_time&buff.infernal_bolt.remains<2*gcd.max||!buff.demonic_core.up)&variable.imp_despawn>time+gcd.max*2+action.summon_demonic_tyrant.cast_time&soul_shard<3\nactions.tyrant+=/shadow_bolt,if=prev_gcd.1.call_dreadstalkers&soul_shard<4&buff.demonic_core.stack<4\nactions.tyrant+=/shadow_bolt,if=prev_gcd.2.call_dreadstalkers&prev_gcd.1.shadow_bolt&buff.bloodlust.up&soul_shard<5\nactions.tyrant+=/shadow_bolt,if=prev_gcd.1.summon_vilefiend&(buff.demonic_calling.down||prev_gcd.2.grimoire_felguard)\nactions.tyrant+=/shadow_bolt,if=prev_gcd.1.grimoire_felguard&buff.demonic_core.stack<3&buff.demonic_calling.remains>gcd.max*3\nactions.tyrant+=/hand_of_guldan,if=variable.imp_despawn>time+gcd.max*2+action.summon_demonic_tyrant.cast_time&!buff.demonic_core.up&buff.demonic_art_pit_lord.up&variable.imp_despawn<time+gcd.max*5+action.summon_demonic_tyrant.cast_time\nactions.tyrant+=/hand_of_guldan,if=variable.imp_despawn>time+gcd.max+action.summon_demonic_tyrant.cast_time&variable.imp_despawn<time+gcd.max*2+action.summon_demonic_tyrant.cast_time&buff.dreadstalkers.remains>gcd.max+action.summon_demonic_tyrant.cast_time&soul_shard>1\nactions.tyrant+=/shadow_bolt,if=!buff.demonic_core.up&variable.imp_despawn>time+gcd.max*2+action.summon_demonic_tyrant.cast_time&variable.imp_despawn<time+gcd.max*4+action.summon_demonic_tyrant.cast_time&soul_shard<3&buff.dreadstalkers.remains>gcd.max*2+action.summon_demonic_tyrant.cast_time\nactions.tyrant+=/grimoire_felguard,if=cooldown.summon_demonic_tyrant.remains<17-2*gcd.max&cooldown.summon_vilefiend.remains<15-2*gcd.max&cooldown.call_dreadstalkers.remains<12-2*gcd.max\nactions.tyrant+=/summon_vilefiend,if=cooldown.summon_demonic_tyrant.remains<15-2*gcd.max&(buff.grimoire_felguard.up||cooldown.grimoire_felguard.remains>15||!talent.grimoire_felguard)&(buff.dreadstalkers.up||cooldown.call_dreadstalkers.remains<15-2*gcd.max||!talent.call_dreadstalkers)\nactions.tyrant+=/call_dreadstalkers,if=cooldown.summon_demonic_tyrant.remains<12-2*gcd.max&(buff.vilefiend.up||cooldown.summon_vilefiend.remains<12-2*gcd.max||!talent.summon_vilefiend)\nactions.tyrant+=/summon_demonic_tyrant,if=(((variable.imp_despawn&variable.imp_despawn<time+gcd.max*2+cast_time)||(buff.wild_imps.stack>9&soul_shards<2))&buff.dreadstalkers.up&(buff.vilefiend.up||!talent.summon_vilefiend.enabled))||(buff.dreadstalkers.up&buff.dreadstalkers.remains<gcd.max*2+cast_time&((buff.vilefiend.up&buff.vilefiend.remains>2*gcd.max)||!talent.summon_vilefiend.enabled)&((buff.grimoire_felguard.up&buff.grimoire_felguard.remains>2*gcd.max)||!talent.grimoire_felguard.enabled||cooldown.grimoire_felguard.remains>20))\nactions.tyrant+=/hand_of_guldan,if=(variable.imp_despawn||buff.dreadstalkers.remains)&soul_shard>=3||soul_shard=5\nactions.tyrant+=/infernal_bolt,if=variable.imp_despawn&soul_shard<3\nactions.tyrant+=/demonbolt,if=variable.imp_despawn&buff.demonic_core.up&soul_shard<4||prev_gcd.1.call_dreadstalkers&soul_shard<4&buff.demonic_core.stack=4||buff.demonic_core.stack=4&soul_shard<4||buff.demonic_core.stack>=2&cooldown.power_siphon.remains<5\nactions.tyrant+=/ruination,if=variable.imp_despawn||soul_shard=5&cooldown.summon_vilefiend.remains>gcd.max*3\nactions.tyrant+=/shadow_bolt\nactions.tyrant+=/infernal_bolt\n\nactions.variables+=/variable,name=next_tyrant_cd,op=set,value=cooldown.summon_demonic_tyrant.remains_expected\nactions.variables+=/variable,name=in_opener,op=set,value=0,if=pet.demonic_tyrant.active\n## Handled internally [Hekili]\n## Sets an expected duration of valid Wild Imps on a tyrant Setup for the sake of casting Tyrant before expiration of Imps\n## actions.variables+=/variable,name=imp_despawn,op=set,value=2*spell_haste*6+0.58+time,if=prev_gcd.1.hand_of_guldan&buff.dreadstalkers.up&cooldown.summon_demonic_tyrant.remains<13&variable.imp_despawn=0\n## Checks the Wild Imps in a Tyrant Setup alongside Dreadstalkers for the sake of casting Tyrant before Expiration Dreadstalkers or Imps\n## actions.variables+=/variable,name=imp_despawn,op=max,value=buff.dreadstalkers.remains+time,if=variable.imp_despawn\n## Checks The Wild Imps in a Tyrant Setup alongside Grimoire Felguard for the sake of casting Tyrant before Expiration of Grimoire Felguard or Imps\n## actions.variables+=/variable,name=imp_despawn,op=max,value=buff.grimoire_felguard.remains+time,if=variable.imp_despawn&buff.grimoire_felguard.up\n## actions.variables+=/variable,name=imp_despawn,op=set,value=0,if=buff.tyrant.up\n# Defines the viability of Implosion when Tyrant is down\nactions.variables+=/variable,name=impl,op=set,value=buff.tyrant.down,if=active_enemies>1+(talent.sacrificed_souls.enabled)\n# Defines the Viability of Implosion while Tyrant is Up\nactions.variables+=/variable,name=impl,op=set,value=buff.tyrant.remains<6,if=active_enemies>2+(talent.sacrificed_souls.enabled)&active_enemies<5+(talent.sacrificed_souls.enabled)\n# Defines the Viability of Implosion while Tyrant is Up\nactions.variables+=/variable,name=impl,op=set,value=buff.tyrant.remains<8,if=active_enemies>4+(talent.sacrificed_souls.enabled)\n# Restricts Demonic Core usage for the sake of having 2 or more Demonic Cores on Tyrant Setup\nactions.variables+=/variable,name=pool_cores_for_tyrant,op=set,value=cooldown.summon_demonic_tyrant.remains<20&variable.next_tyrant_cd<20&(buff.demonic_core.stack<=2||!buff.demonic_core.up)&cooldown.summon_vilefiend.remains<gcd.max*8&cooldown.call_dreadstalkers.remains<gcd.max*8\nactions.variables+=/variable,name=diabolic_ritual_remains,value=buff.diabolic_ritual_mother_of_chaos.remains,if=buff.diabolic_ritual_mother_of_chaos.up\nactions.variables+=/variable,name=diabolic_ritual_remains,value=buff.diabolic_ritual_overlord.remains,if=buff.diabolic_ritual_overlord.up\nactions.variables+=/variable,name=diabolic_ritual_remains,value=buff.diabolic_ritual_pit_lord.remains,if=buff.diabolic_ritual_pit_lord.up",
|
|
},
|
|
["Restoration Shaman"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20241020,
|
|
["spec"] = 264,
|
|
["desc"] = "2024-07-30: The War Within",
|
|
["profile"] = "actions.precombat+=/earthliving_weapon\nactions.precombat+=/tidecallers_guard\nactions.precombat+=/water_shield,if=buff.water_shield.up+buff.earth_shield.up+buff.lightning_shield.up<1+talent.elemental_orbit.rank||(!buff.water_shield.up&settings.healing_mode)\nactions.precombat+=/lightning_shield,if=(buff.water_shield.up+buff.earth_shield.up+buff.lightning_shield.up<1+talent.elemental_orbit.rank)&settings.second_shield=lightning_shield\nactions.precombat+=/earth_shield,if=(buff.water_shield.up+buff.earth_shield.up+buff.lightning_shield.up<1+talent.elemental_orbit.rank)&settings.second_shield=earth_shield\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+=/call_action_list,name=healing,strict=1,if=settings.healing_mode\nactions+=/potion\nactions+=/use_items\nactions+=/blood_fury\nactions+=/berserking\nactions+=/fireblood\nactions+=/ancestral_call\nactions+=/bag_of_tricks\nactions+=/surging_totem,if=talent.acid_rain\nactions+=/healing_rain,if=!moving&talent.acid_rain\nactions+=/flame_shock,cycle_targets=1,if=active_enemies<3&refreshable\n# actions+=/primordial_wave\nactions+=/lava_burst,if=(active_enemies=1||active_enemies=2&buff.lava_surge.up)&dot.flame_shock.remains>cast_time&cooldown_react\nactions+=/earth_elemental\nactions+=/lightning_bolt,if=spell_targets.chain_lightning<2||!talent.chain_lightning\nactions+=/chain_lightning,if=spell_targets.chain_lightning>1\nactions+=/flame_shock,moving=1\nactions+=/frost_shock,moving=1\n\nactions.healing+=/downpour,if=buff.unleash_life.up||buff.downpour.up&buff.downpour.remains<2\nactions.healing+=/mana_tide_totem,if=mana.pct<85\nactions.healing+=/totemic_recall,if=prev_gcd.earthen_wall_totem\nactions.healing+=/earthen_wall_totem\nactions.healing+=/chain_heal,if=buff.high_tide.up\nactions.healing+=/call_action_list,strict=1,name=unleash,if=buff.unleash_life.up\nactions.healing+=/surging_totem\nactions.healing+=/healing_rain\nactions.healing+=/earth_shield,if=active_dot.earth_shield<1+talent.elemental_orbit.rank&buff.earth_shield.up\nactions.healing+=/earth_shield,if=(!buff.earth_shield.up&settings.second_shield=earth_shield&talent.elemental_orbit.enabled)\nactions.healing+=/healing_stream_totem,if=totem.surging_totem.up&!totem.healing_stream_totem.up\nactions.healing+=/riptide,if=cooldown.riptide.charges=cooldown.riptide.charges_max\nactions.healing+=/unleash_life,if=talent.call_of_the_ancestors.enabled||cooldown.wellspring.remains<2||(cooldown.surging_totem.remains<3||buff.downpour.up&buff.downpour.remains>3)\nactions.healing+=/wellspring\n\nactions.unleash+=/downpour\nactions.unleash+=/wellspring\nactions.unleash+=/riptide",
|
|
["version"] = 20241020,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 11: Converted 'talent.acid_rain' to 'talent.acid_rain.enabled' (1x).\nLine 12: Converted 'talent.acid_rain' to 'talent.acid_rain.enabled' (1x).\nLine 16: Converted 'talent.chain_lightning' to 'talent.chain_lightning.enabled' (1x).\n\nImported 4 action lists.\n",
|
|
["author"] = "Hekili",
|
|
["lists"] = {
|
|
["unleash"] = {
|
|
{
|
|
["action"] = "downpour",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "wellspring",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "riptide",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["healing"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unleash_life.up || buff.downpour.up & buff.downpour.remains < 2",
|
|
["action"] = "downpour",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "mana.pct < 85",
|
|
["action"] = "mana_tide_totem",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.earthen_wall_totem",
|
|
["action"] = "totemic_recall",
|
|
},
|
|
{
|
|
["action"] = "earthen_wall_totem",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.high_tide.up",
|
|
["action"] = "chain_heal",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "buff.unleash_life.up",
|
|
["list_name"] = "unleash",
|
|
},
|
|
{
|
|
["action"] = "surging_totem",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "healing_rain",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.earth_shield < 1 + talent.elemental_orbit.rank & buff.earth_shield.up",
|
|
["action"] = "earth_shield",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! buff.earth_shield.up & settings.second_shield = earth_shield & talent.elemental_orbit.enabled )",
|
|
["action"] = "earth_shield",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "totem.surging_totem.up & ! totem.healing_stream_totem.up",
|
|
["action"] = "healing_stream_totem",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.riptide.charges = cooldown.riptide.charges_max",
|
|
["action"] = "riptide",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.call_of_the_ancestors.enabled || cooldown.wellspring.remains < 2 || ( cooldown.surging_totem.remains < 3 || buff.downpour.up & buff.downpour.remains > 3 )",
|
|
["action"] = "unleash_life",
|
|
},
|
|
{
|
|
["action"] = "wellspring",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["enable_moving"] = true,
|
|
["action"] = "spiritwalkers_grace",
|
|
["moving"] = 1,
|
|
["criteria"] = "movement.distance > 6",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Interrupt of casts.",
|
|
["action"] = "wind_shear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "settings.healing_mode",
|
|
["list_name"] = "healing",
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "use_items",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blood_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "berserking",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bag_of_tricks",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.acid_rain.enabled",
|
|
["action"] = "surging_totem",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! moving & talent.acid_rain.enabled",
|
|
["action"] = "healing_rain",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & refreshable",
|
|
["action"] = "flame_shock",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["description"] = "actions.default+=/primordial_wave",
|
|
["criteria"] = "( active_enemies = 1 || active_enemies = 2 & buff.lava_surge.up ) & dot.flame_shock.remains > cast_time & cooldown_react",
|
|
},
|
|
{
|
|
["action"] = "earth_elemental",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.chain_lightning < 2 || ! talent.chain_lightning.enabled",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.chain_lightning > 1",
|
|
["action"] = "chain_lightning",
|
|
},
|
|
{
|
|
["moving"] = 1,
|
|
["enable_moving"] = true,
|
|
["action"] = "flame_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["moving"] = 1,
|
|
["enable_moving"] = true,
|
|
["action"] = "frost_shock",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "earthliving_weapon",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "tidecallers_guard",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.water_shield.up + buff.earth_shield.up + buff.lightning_shield.up < 1 + talent.elemental_orbit.rank || ( ! buff.water_shield.up & settings.healing_mode )",
|
|
["action"] = "water_shield",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.water_shield.up + buff.earth_shield.up + buff.lightning_shield.up < 1 + talent.elemental_orbit.rank ) & settings.second_shield = lightning_shield",
|
|
["action"] = "lightning_shield",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.water_shield.up + buff.earth_shield.up + buff.lightning_shield.up < 1 + talent.elemental_orbit.rank ) & settings.second_shield = earth_shield",
|
|
["action"] = "earth_shield",
|
|
},
|
|
{
|
|
["action"] = "earth_elemental",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["Mistweaver"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20241109,
|
|
["spec"] = 270,
|
|
["desc"] = "Healer priorities are DPS-oriented only\n\n2024-11-09: Make RWK consistently replace RSK\n\n2024-11-06: Update Jadefire Stomp related talents\n\n2024-10-23: 11.0.5\n\n2024-09-28: Update for Teachings of the Monastery\n\n2024-07-30: The War Within",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "spear_hand_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "use_items",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blood_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "berserking",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bag_of_tricks",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "pet.chiji.up",
|
|
["list_name"] = "crane",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! settings.save_faeline || talent.awakened_jadefire.enabled & buff.awakened_jadefire.down || talent.jadefire_teachings.enabled & buff.jadefire_teachings.down",
|
|
["action"] = "jadefire_stomp",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies >= 3",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies < 3",
|
|
["list_name"] = "st",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "chi_burst",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies <= 3",
|
|
["action"] = "thunder_focus_tea",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.zen_pulse.up",
|
|
["action"] = "vivify",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies <= 3 || settings.aoe_rsk",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies <= 3 || settings.aoe_rsk",
|
|
["action"] = "rushing_wind_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.awakened_jadefire.enabled & buff.jadefire_stomp.up & buff.teachings_of_the_monastery.stack < 4 || buff.teachings_of_the_monastery.stack < 1",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.rushing_wind_kick.enabled & cooldown.rising_sun_kick.remains > 2 * gcd.max || cooldown.rushing_wind_kick.remains > 2 * gcd.max ) & ( buff.teachings_of_the_monastery.stack > 3 )",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["action"] = "chi_burst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spinning_crane_kick",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["action"] = "thunder_focus_tea",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "rising_sun_kick",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "rushing_wind_kick",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.awakened_jadefire.enabled & buff.jadefire_stomp.up & buff.teachings_of_the_monastery.stack < 4 || buff.teachings_of_the_monastery.stack < 1",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ! talent.awakened_jadefire.enabled || buff.jadefire_stomp.down ) & buff.teachings_of_the_monastery.up || buff.teachings_of_the_monastery.stack > 3 ) & ( ! talent.rushing_wind_kick.enabled & cooldown.rising_sun_kick.remains > 2 * gcd.max || cooldown.rushing_wind_kick.remains > 2 * gcd.max )",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "settings.single_zen_pulse & buff.zen_pulse.up",
|
|
["action"] = "vivify",
|
|
},
|
|
{
|
|
["action"] = "chi_burst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "tiger_palm",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["crane"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time_to_max_charges <= gcd.max",
|
|
["action"] = "renewing_mist",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ancient_teachings.enabled & buff.ancient_teachings.remains < gcd.max",
|
|
["action"] = "thunder_focus_tea",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ancient_teachings.enabled & buff.ancient_teachings.remains < gcd.max",
|
|
["action"] = "essence_font",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ancient_teachings.enabled & buff.ancient_teachings.remains < gcd.max",
|
|
["action"] = "jadefire_stomp",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.invoke_chiji.stack > 1",
|
|
["action"] = "enveloping_mist",
|
|
},
|
|
{
|
|
["action"] = "rising_sun_kick",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "rushing_wind_kick",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ! talent.awakened_jadefire.enabled || buff.jadefire_stomp.down ) & buff.teachings_of_the_monastery.up || buff.teachings_of_the_monastery.stack > 3 ) & ( ! talent.rushing_wind_kick.enabled & cooldown.rising_sun_kick.remains > 2 * gcd.max || cooldown.rushing_wind_kick.remains > 2 * gcd.max )",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 3 || active_enemies > 1 & ! talent.ancient_concordance.enabled & ! talent.awakened_jadefire.enabled",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["action"] = "blackout_kick",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "tiger_palm",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241109,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 11: Converted 'talent.awakened_jadefire' to 'talent.awakened_jadefire.enabled' (1x).\nLine 11: Converted 'talent.jadefire_teachings' to 'talent.jadefire_teachings.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 6: Converted 'talent.rushing_wind_kick' to 'talent.rushing_wind_kick.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 5: Converted 'talent.awakened_jadefire' to 'talent.awakened_jadefire.enabled' (1x).\nLine 5: Converted 'talent.rushing_wind_kick' to 'talent.rushing_wind_kick.enabled' (1x).\n\nThe import for 'crane' required some automated changes.\nLine 2: Converted 'talent.ancient_teachings' to 'talent.ancient_teachings.enabled' (1x).\nLine 3: Unsupported action 'essence_font'.\nLine 3: Converted 'talent.ancient_teachings' to 'talent.ancient_teachings.enabled' (1x).\nLine 4: Converted 'talent.ancient_teachings' to 'talent.ancient_teachings.enabled' (1x).\nLine 8: Converted 'talent.awakened_jadefire' to 'talent.awakened_jadefire.enabled' (1x).\nLine 8: Converted 'talent.rushing_wind_kick' to 'talent.rushing_wind_kick.enabled' (1x).\nLine 9: Converted 'talent.ancient_concordance' to 'talent.ancient_concordance.enabled' (1x).\nLine 9: Converted 'talent.awakened_jadefire' to 'talent.awakened_jadefire.enabled' (1x).\n\nImported 5 action lists.\n",
|
|
["profile"] = "actions.precombat+=/potion\nactions.precombat+=/chi_burst\n\nactions+=/spear_hand_strike\nactions+=/use_items\nactions+=/blood_fury\nactions+=/berserking\nactions+=/lights_judgment\nactions+=/fireblood\nactions+=/ancestral_call\nactions+=/bag_of_tricks\nactions+=/potion\nactions+=/run_action_list,name=crane,strict=1,if=pet.chiji.up\nactions+=/jadefire_stomp,if=!settings.save_faeline||talent.awakened_jadefire&buff.awakened_jadefire.down||talent.jadefire_teachings&buff.jadefire_teachings.down\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+=/rushing_wind_kick\nactions.st+=/tiger_palm,if=talent.awakened_jadefire.enabled&buff.jadefire_stomp.up&buff.teachings_of_the_monastery.stack<4||buff.teachings_of_the_monastery.stack<1\nactions.st+=/blackout_kick,if=((!talent.awakened_jadefire||buff.jadefire_stomp.down)&buff.teachings_of_the_monastery.up||buff.teachings_of_the_monastery.stack>3)&(!talent.rushing_wind_kick&cooldown.rising_sun_kick.remains>2*gcd.max||cooldown.rushing_wind_kick.remains>2*gcd.max)\nactions.st+=/vivify,if=settings.single_zen_pulse&buff.zen_pulse.up\nactions.st+=/chi_burst\nactions.st+=/tiger_palm\n\nactions.aoe+=/thunder_focus_tea,if=active_enemies<=3\nactions.aoe+=/vivify,if=buff.zen_pulse.up\nactions.aoe+=/rising_sun_kick,if=active_enemies<=3||settings.aoe_rsk\nactions.aoe+=/rushing_wind_kick,if=active_enemies<=3||settings.aoe_rsk\nactions.aoe+=/tiger_palm,if=talent.awakened_jadefire.enabled&buff.jadefire_stomp.up&buff.teachings_of_the_monastery.stack<4||buff.teachings_of_the_monastery.stack<1\nactions.aoe+=/blackout_kick,if=(!talent.rushing_wind_kick&cooldown.rising_sun_kick.remains>2*gcd.max||cooldown.rushing_wind_kick.remains>2*gcd.max)&(buff.teachings_of_the_monastery.stack>3)\nactions.aoe+=/chi_burst\nactions.aoe+=/spinning_crane_kick\n\nactions.crane+=/renewing_mist,if=time_to_max_charges<=gcd.max\nactions.crane+=/thunder_focus_tea,if=talent.ancient_teachings&buff.ancient_teachings.remains<gcd.max\nactions.crane+=/essence_font,if=talent.ancient_teachings&buff.ancient_teachings.remains<gcd.max\nactions.crane+=/jadefire_stomp,if=talent.ancient_teachings&buff.ancient_teachings.remains<gcd.max\nactions.crane+=/enveloping_mist,if=buff.invoke_chiji.stack>1\nactions.crane+=/rising_sun_kick\nactions.crane+=/rushing_wind_kick\nactions.crane+=/blackout_kick,if=((!talent.awakened_jadefire||buff.jadefire_stomp.down)&buff.teachings_of_the_monastery.up||buff.teachings_of_the_monastery.stack>3)&(!talent.rushing_wind_kick&cooldown.rising_sun_kick.remains>2*gcd.max||cooldown.rushing_wind_kick.remains>2*gcd.max)\nactions.crane+=/spinning_crane_kick,if=active_enemies>3||active_enemies>1&!talent.ancient_concordance&!talent.awakened_jadefire\nactions.crane+=/blackout_kick\nactions.crane+=/tiger_palm",
|
|
["author"] = "Aikanaka",
|
|
},
|
|
["Holy Paladin"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20240908,
|
|
["spec"] = 65,
|
|
["desc"] = "Healer priorities are DPS-focused only\n\n2024-07-30, 09-08: The War Within",
|
|
["lists"] = {
|
|
["spenders"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "solo & ( health.pct < 70 || ! equipped.shield ) & buff.shining_righteousness_ready.up || buff.empyrean_legacy.up",
|
|
["action"] = "word_of_glory",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "group & buff.shining_righteousness_ready.up",
|
|
["action"] = "light_of_dawn",
|
|
},
|
|
{
|
|
["action"] = "shield_of_the_righteous",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "rebuke",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avenging_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avenging_crusader",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "holy_armaments",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blessing_of_summer",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blessing_of_autumn",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blessing_of_winter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blessing_of_spring",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bloodlust.up || buff.avenging_wrath.up || buff.avenging_crusader.up",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["action"] = "use_items",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.avenging_crusader.enabled || cooldown.avenging_crusader.remains > gcd.max || holy_power.deficit = 0",
|
|
["list_name"] = "spenders",
|
|
},
|
|
{
|
|
["action"] = "divine_toll",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "holy_prism",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "group",
|
|
["action"] = "beacon_of_virtue",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.avenging_crusader.enabled & full_recharge_time < gcd.max",
|
|
["action"] = "crusader_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.avenging_crusader.enabled & full_recharge_time < gcd.max",
|
|
["action"] = "judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! consecration.up & action.crusader_strike.in_range",
|
|
["action"] = "consecration",
|
|
},
|
|
{
|
|
["action"] = "hammer_of_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "holy_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.holy_shock.remains > gcd.max",
|
|
["action"] = "crusader_strike",
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.paladin_aura.down",
|
|
["action"] = "devotion_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.beacon_of_light = 0",
|
|
["action"] = "beacon_of_light",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "group & active_dot.beacon_of_faith = 0",
|
|
["action"] = "beacon_of_faith",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20240908,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 13: Converted 'talent.avenging_crusader' to 'talent.avenging_crusader.enabled' (1x).\nLine 17: Converted 'talent.avenging_crusader' to 'talent.avenging_crusader.enabled' (1x).\nLine 18: Converted 'talent.avenging_crusader' to 'talent.avenging_crusader.enabled' (1x).\n\nImported 3 action lists.\n",
|
|
["author"] = "Kaleokalani",
|
|
["profile"] = "actions.precombat+=/devotion_aura,if=buff.paladin_aura.down\nactions.precombat+=/beacon_of_light,if=active_dot.beacon_of_light=0\nactions.precombat+=/beacon_of_faith,if=group&active_dot.beacon_of_faith=0\n\nactions+=/rebuke\nactions+=/avenging_wrath\nactions+=/avenging_crusader\nactions+=/holy_armaments\nactions+=/blessing_of_summer\nactions+=/blessing_of_autumn\nactions+=/blessing_of_winter\nactions+=/blessing_of_spring\nactions+=/lights_judgment\nactions+=/potion\nactions+=/fireblood,if=buff.bloodlust.up||buff.avenging_wrath.up||buff.avenging_crusader.up\nactions+=/use_items\nactions+=/call_action_list,name=spenders,strict=1,if=!talent.avenging_crusader||cooldown.avenging_crusader.remains>gcd.max||holy_power.deficit=0\nactions+=/divine_toll\nactions+=/holy_prism\nactions+=/beacon_of_virtue,if=group\nactions+=/crusader_strike,if=talent.avenging_crusader&full_recharge_time<gcd.max\nactions+=/judgment,if=talent.avenging_crusader&full_recharge_time<gcd.max\nactions+=/consecration,if=!consecration.up&action.crusader_strike.in_range\nactions+=/hammer_of_wrath\nactions+=/judgment\nactions+=/holy_shock\nactions+=/crusader_strike,if=cooldown.holy_shock.remains>gcd.max\nactions+=/arcane_torrent\n\nactions.spenders+=/word_of_glory,if=solo&(health.pct<70||!equipped.shield)&buff.shining_righteousness_ready.up||buff.empyrean_legacy.up\nactions.spenders+=/light_of_dawn,if=group&buff.shining_righteousness_ready.up\nactions.spenders+=/shield_of_the_righteous",
|
|
},
|
|
["Outlaw"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241025,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-10-23: 11.0.5\n\n2024-09-08, 09-10, 09-15: SimC update\n\n2024-09-03: Poisons\n\n2024-08-25, 09-01: SimC rtb_reroll tweak\n\n2024-08-22: Respect LD Opener setting\n\n2024-08-15: Major revisions from SimC\n\n2024-08-09: Update finisher conditions from SimC\n\n2024-08-06: Respect Vanish CD when considering BtE with Crackshot\n\n2024-07-28: The War Within",
|
|
["lists"] = {
|
|
["finish"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "between_the_eyes",
|
|
["description"] = "Use Between the Eyes to keep the crit buff up, but on cooldown if Improved/Greenskins, and avoid overriding Greenskins",
|
|
["criteria"] = "! talent.crackshot.enabled & ( buff.between_the_eyes.remains < 4 || talent.improved_between_the_eyes.enabled || talent.greenskins_wickers.enabled ) & ! buff.greenskins_wickers.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "between_the_eyes",
|
|
["description"] = "Crackshot builds use Between the Eyes outside of Stealth to refresh the Between the Eyes crit buff or on cd with the Ruthless Precision buff",
|
|
["criteria"] = "talent.crackshot.enabled & ( buff.ruthless_precision.up || buff.between_the_eyes.remains < 4 )",
|
|
},
|
|
{
|
|
["action"] = "cold_blood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "dispatch",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "dispatch",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Restealth if possible (no vulnerable enemies in combat)",
|
|
["action"] = "stealth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Interrupt on cooldown to allow simming interactions with that",
|
|
["action"] = "kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "rtb_buffs_will_lose = ( rtb_buffs_will_lose_buff.buried_treasure + rtb_buffs_will_lose_buff.grand_melee & spell_targets.blade_flurry < 2 )",
|
|
["description"] = "Variables that define the reroll rules for Roll the Bones Default rule: reroll if the only buff that will be rolled away is Buried Treasure, or Grand Melee in single target without upcoming adds",
|
|
["var_name"] = "rtb_reroll",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "rtb_reroll",
|
|
["criteria"] = "talent.loaded_dice.enabled",
|
|
["description"] = "If Loaded Dice is talented, then keep any 1 buff from Roll the Bones but roll it into 2 buffs when Loaded Dice is active. Also reroll 2 buffs with loaded dice up if broadside, ruthless precision and true bearing are all missing and loaded dice is up",
|
|
["value"] = "rtb_buffs_will_lose <= buff.loaded_dice.up || buff.loaded_dice.up & rtb_buffs_will_lose < 3 & ( ! rtb_buffs_will_lose_buff.broadside || buff.broadside.remains < 11 ) & ( ! rtb_buffs_will_lose_buff.ruthless_precision || buff.ruthless_precision.remains < 11 ) & ( ! rtb_buffs_will_lose_buff.true_bearing || buff.true_bearing.remains < 11 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.rtb_reroll & rtb_buffs_longer = 0 || rtb_buffs_normal = 0 & rtb_buffs_longer >= 1 & buff.loaded_dice.up & ( rtb_buffs < 6 & rtb_buffs_max_remains < 39 || talent.supercharger.enabled )",
|
|
["description"] = "If all active Roll the Bones buffs are ahead of its container buff and have under 40s remaining or with supercharger talented, then reroll again with Loaded Dice active in an attempt to get even more buffs",
|
|
["var_name"] = "rtb_reroll",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "rtb_reroll",
|
|
["criteria"] = "! talent.supercharger.enabled & ! ( raid_event.adds.remains > 12 || raid_event.adds.up & ( raid_event.adds.in - raid_event.adds.remains ) < 6 || target.time_to_die > 12 ) || fight_remains < 12 & boss",
|
|
["description"] = "Non supercharger builds should avoid rerolls when we will not have time remaining on the fight or add wave to recoup the opportunity cost of the global",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( talent.hidden_opportunity.enabled || combo_points.deficit >= 2 + talent.improved_ambush.enabled + buff.broadside.up ) & energy >= 50",
|
|
["var_name"] = "ambush_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "combo_points >= cp_max_spend - 1 - ( stealthed.all & talent.crackshot.enabled || ( talent.hand_of_fate.enabled || talent.flawless_form.enabled ) & talent.hidden_opportunity.enabled & ( buff.audacity.up || buff.opportunity.up ) )",
|
|
["description"] = "Use finishers if at -1 from max combo points, or -2 in Stealth with Crackshot. With the hero trees, Hidden Opportunity builds also finish at -2 if Audacity or Opportunity is active",
|
|
["var_name"] = "finish_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "spell_targets.blade_flurry < 2 & raid_event.adds.in > 20 || buff.blade_flurry.remains > gcd.max",
|
|
["description"] = "With multiple targets, this variable is checked to decide whether some CDs should be synced with Blade Flurry",
|
|
["var_name"] = "blade_flurry_sync",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "High priority stealth list, will fall through if no conditions are met",
|
|
["strict"] = 1,
|
|
["criteria"] = "stealthed.all",
|
|
["list_name"] = "stealth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "variable.finish_condition",
|
|
["list_name"] = "finish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "build",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy.base_deficit >= 15 + energy.regen",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["action"] = "arcane_pulse",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bag_of_tricks",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "apply_poison",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "stealth",
|
|
["precombat_seconds"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "adrenaline_rush",
|
|
["precombat_seconds"] = "2",
|
|
["criteria"] = "talent.improved_adrenaline_rush.enabled & buff.adrenaline_rush.down & talent.keep_it_rolling.enabled & talent.loaded_dice.enabled",
|
|
["description"] = "Builds with Keep it Rolling prepull Adrenaline Rush before Roll the Bones to consume Loaded Dice immediately instead of on the next pandemic roll",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "roll_the_bones",
|
|
["criteria"] = "buff.roll_the_bones.down",
|
|
["precombat_seconds"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "adrenaline_rush",
|
|
["criteria"] = "talent.improved_adrenaline_rush.enabled & buff.adrenaline_rush.down",
|
|
["precombat_seconds"] = "1",
|
|
},
|
|
},
|
|
["stealth"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.finish_condition",
|
|
["action"] = "cold_blood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "pool_resource",
|
|
["description"] = "Ensure Crackshot BtE is not skipped because of low energy",
|
|
["for_next"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "between_the_eyes",
|
|
["description"] = "High priority Between the Eyes for Crackshot, except not directly out of Shadowmeld",
|
|
["criteria"] = "variable.finish_condition & talent.crackshot.enabled & ( ! buff.shadowmeld.up || stealthed.rogue )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.finish_condition",
|
|
["action"] = "dispatch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "pistol_shot",
|
|
["description"] = "2 Fan the Hammer Crackshot builds can consume Opportunity in stealth with max stacks, Broadside, and low CPs, or with Greenskins active",
|
|
["criteria"] = "talent.crackshot.enabled & talent.fan_the_hammer.rank >= 2 & buff.opportunity.stack >= 6 & ( buff.broadside.up & combo_points <= 1 || buff.greenskins_wickers.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hidden_opportunity.enabled",
|
|
["action"] = "ambush",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "adrenaline_rush",
|
|
["description"] = "Use Adrenaline Rush if it is not active and the finisher condition is not met, with Improved Adrenaline Rush you can also refresh it with 2cp or less if Loaded Dice is not already up Adrenaline rush if buff is missing unless you can finish or with 2 or less cp if loaded dice is missing",
|
|
["criteria"] = "! buff.adrenaline_rush.up & ( ! variable.finish_condition || ! talent.improved_adrenaline_rush.enabled ) || talent.improved_adrenaline_rush.enabled & combo_points <= 2 & ! buff.loaded_dice.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "sprint",
|
|
["description"] = "Sprint to further benefit from Scroll of Momentum trinket",
|
|
["criteria"] = "( trinket.t1.is.scroll_of_momentum || trinket.t2.is.scroll_of_momentum ) & buff.full_momentum.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blade_flurry",
|
|
["description"] = "Maintain Blade Flurry on 2+ targets",
|
|
["criteria"] = "spell_targets >= 2 & buff.blade_flurry.remains < gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blade_flurry",
|
|
["description"] = "With Deft Maneuvers, use Blade Flurry on cooldown at 5+ targets, or at 3-4 targets if missing combo points equal to the amount given",
|
|
["criteria"] = "talent.deft_maneuvers.enabled & ! variable.finish_condition & ( spell_targets >= 3 & combo_points.deficit = spell_targets + buff.broadside.up || spell_targets >= 5 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "roll_the_bones",
|
|
["description"] = "Use Roll the Bones if reroll conditions are met, or with no buffs",
|
|
["criteria"] = "variable.rtb_reroll || rtb_buffs = 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "keep_it_rolling",
|
|
["description"] = "Use Keep it Rolling with any 4 buffs. If Broadside is not active, then wait until just before the lowest buff expires in an attempt to obtain it from Count the Odds.",
|
|
["criteria"] = "rtb_buffs >= 4 & ( rtb_buffs_min_remains < 2 || buff.broadside.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points < cp_max_spend",
|
|
["action"] = "ghostly_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "manic_grieftorch",
|
|
["description"] = "Trinkets that should not be used during stealth and have higher priority than entering stealth",
|
|
["criteria"] = "! stealthed.all & buff.between_the_eyes.up || fight_remains <= 5",
|
|
["action"] = "manic_grieftorch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "beacon_to_the_beyond",
|
|
["criteria"] = "! stealthed.all & buff.between_the_eyes.up || boss & fight_remains <= 5",
|
|
["name"] = "beacon_to_the_beyond",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["criteria"] = "! stealthed.all || boss & fight_remains <= 22",
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mad_queens_mandate",
|
|
["criteria"] = "! stealthed.all || boss & fight_remains <= 5",
|
|
["name"] = "mad_queens_mandate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "killing_spree",
|
|
["description"] = "Killing Spree has higher priority than stealth cooldowns",
|
|
["criteria"] = "variable.finish_condition & ! stealthed.all",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Crackshot builds use stealth cooldowns if not already in stealth",
|
|
["criteria"] = "! stealthed.all",
|
|
["list_name"] = "stealth_cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.thistle_tea.up & ( energy.base_deficit >= 150 || fight_remains < charges * 6 )",
|
|
["action"] = "thistle_tea",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blade_rush",
|
|
["description"] = "Use Blade Rush at minimal energy outside of stealth",
|
|
["criteria"] = "energy.base_time_to_max > 4 & ! stealthed.all",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bloodlust.up || boss & fight_remains < 30 || buff.adrenaline_rush.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["action"] = "blood_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "berserking",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "buff.between_the_eyes.up || trinket.t1.has_stat.any_dps || boss & fight_remains <= 20",
|
|
["slots"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "buff.between_the_eyes.up || trinket.t2.has_stat.any_dps || boss & fight_remains <= 20",
|
|
["slots"] = "trinket2",
|
|
},
|
|
},
|
|
["stealth_cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vanish",
|
|
["description"] = "Builds with Underhanded Upper Hand and Subterfuge must use Vanish while Adrenaline Rush is active and either BTE on CD with RP up, adrenaline rush about to expire, supercharger buff up, vanish capped on charges or about to cap or fight about to end",
|
|
["criteria"] = "talent.underhanded_upper_hand.enabled & talent.subterfuge.enabled & talent.crackshot.enabled & buff.adrenaline_rush.up & variable.finish_condition & ( ! cooldown.between_the_eyes.ready & buff.ruthless_precision.up || buff.adrenaline_rush.remains < 3 || buff.supercharge.up || cooldown.vanish.full_recharge_time < 15 || boss & fight_remains < 8 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vanish",
|
|
["description"] = "Builds with Underhanded Upper Hand and Subterfuge but without crackshot use vanish only with Adrenaline Rush active",
|
|
["criteria"] = "talent.underhanded_upper_hand.enabled & talent.subterfuge.enabled & ! talent.crackshot.enabled & buff.adrenaline_rush.up & ( variable.ambush_condition || ! talent.hidden_opportunity.enabled ) & ( ! cooldown.between_the_eyes.ready & buff.ruthless_precision.up || buff.ruthless_precision.down || buff.adrenaline_rush.remains < 3 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vanish",
|
|
["description"] = "Builds without Underhanded Upper Hand but with Crackshot must still use Vanish into Between the Eyes on cooldown",
|
|
["criteria"] = "! talent.underhanded_upper_hand.enabled & talent.crackshot.enabled & variable.finish_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vanish",
|
|
["description"] = "Builds without Underhanded Upper Hand and Crackshot but still Hidden Opportunity use Vanish into Ambush when Audacity is not active and under max Opportunity stacks",
|
|
["criteria"] = "! talent.underhanded_upper_hand.enabled & ! talent.crackshot.enabled & talent.hidden_opportunity.enabled & ! buff.audacity.up & buff.opportunity.stack < buff.opportunity.max_stack & variable.ambush_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vanish",
|
|
["description"] = "Builds without Underhanded Upper Hand, Crackshot, and Hidden Opportunity but with Fatebound use Vanish at five stacks of either Fatebound coin in order to proc the Lucky Coin if it's not already active, and otherwise continue to Vanish into a Dispatch to proc Double Jeopardy on a biased coin",
|
|
["criteria"] = "! talent.underhanded_upper_hand.enabled & ! talent.crackshot.enabled & ! talent.hidden_opportunity.enabled & talent.fateful_ending.enabled & ( ! buff.fatebound_lucky_coin.up & ( buff.fatebound_coin_tails.stack >= 5 || buff.fatebound_coin_heads.stack >= 5 ) || buff.fatebound_lucky_coin.up & ! cooldown.between_the_eyes.ready )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vanish",
|
|
["description"] = "Builds with none of the above can use Vanish to maintain Take 'em By Surprise",
|
|
["criteria"] = "! talent.underhanded_upper_hand.enabled & ! talent.crackshot.enabled & ! talent.hidden_opportunity.enabled & ! talent.fateful_ending.enabled & talent.take_em_by_surprise.enabled & ! buff.take_em_by_surprise.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.finish_condition & ! cooldown.vanish.ready",
|
|
["action"] = "shadowmeld",
|
|
},
|
|
},
|
|
["build"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ambush",
|
|
["description"] = "High priority Ambush for Hidden Opportunity builds",
|
|
["criteria"] = "talent.hidden_opportunity.enabled & buff.audacity.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "pistol_shot",
|
|
["description"] = "With Audacity + Hidden Opportunity + Fan the Hammer, consume Opportunity 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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "pistol_shot",
|
|
["description"] = "With Fan the Hammer, consume Opportunity as a higher priority if at max stacks or if it will expire",
|
|
["criteria"] = "talent.fan_the_hammer.enabled & buff.opportunity.up & ( buff.opportunity.stack >= buff.opportunity.max_stack || buff.opportunity.remains < 2 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "pistol_shot",
|
|
["description"] = "With Fan the Hammer, consume Opportunity if it will not overcap CPs, or with 1 CP at minimum",
|
|
["criteria"] = "talent.fan_the_hammer.enabled & buff.opportunity.up & ( combo_points.deficit >= ( 1 + ( talent.quick_draw.enabled + buff.broadside.up ) * ( talent.fan_the_hammer.rank + 1 ) ) || combo_points <= talent.ruthlessness.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "pistol_shot",
|
|
["description"] = "If not using Fan the Hammer, then consume Opportunity based on energy, when it will exactly cap CPs, or when using Quick Draw",
|
|
["criteria"] = "! talent.fan_the_hammer.enabled & buff.opportunity.up & ( energy.base_deficit > energy.regen * 1.5 || combo_points.deficit <= 1 + buff.broadside.up || talent.quick_draw.enabled || talent.audacity.enabled & ! buff.audacity.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "pool_resource",
|
|
["description"] = "Fallback pooling just so Sinister Strike is never casted if Ambush is available for Hidden Opportunity builds",
|
|
["for_next"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hidden_opportunity.enabled",
|
|
["action"] = "ambush",
|
|
},
|
|
{
|
|
["action"] = "sinister_strike",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241025,
|
|
["warnings"] = "The import for 'finish' required some automated changes.\nLine 1: Converted 'talent.crackshot' to 'talent.crackshot.enabled' (1x).\nLine 1: Converted 'talent.improved_between_the_eyes' to 'talent.improved_between_the_eyes.enabled' (1x).\nLine 1: Converted 'talent.greenskins_wickers' to 'talent.greenskins_wickers.enabled' (1x).\nLine 2: Converted 'talent.crackshot' to 'talent.crackshot.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'rtb_buffs.will_lose.buried_treasure' to 'rtb_buffs_will_lose_buff.buried_treasure' (1x).\nLine 3: Converted 'rtb_buffs.will_lose.grand_melee' to 'rtb_buffs_will_lose_buff.grand_melee' (1x).\nLine 4: Converted 'talent.loaded_dice' to 'talent.loaded_dice.enabled' (1x).\nLine 4: Converted 'rtb_buffs.will_lose.broadside' to 'rtb_buffs_will_lose_buff.broadside' (1x).\nLine 4: Converted 'rtb_buffs.will_lose.ruthless_precision' to 'rtb_buffs_will_lose_buff.ruthless_precision' (1x).\nLine 4: Converted 'rtb_buffs.will_lose.true_bearing' to 'rtb_buffs_will_lose_buff.true_bearing' (1x).\nLine 5: Converted 'talent.supercharger' to 'talent.supercharger.enabled' (1x).\nLine 6: Converted 'talent.supercharger' to 'talent.supercharger.enabled' (1x).\nLine 7: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 7: Converted 'talent.improved_ambush' to 'talent.improved_ambush.enabled' (1x).\nLine 8: Converted 'talent.crackshot' to 'talent.crackshot.enabled' (1x).\nLine 8: Converted 'talent.hand_of_fate' to 'talent.hand_of_fate.enabled' (1x).\nLine 8: Converted 'talent.flawless_form' to 'talent.flawless_form.enabled' (1x).\nLine 8: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'talent.improved_adrenaline_rush' to 'talent.improved_adrenaline_rush.enabled' (1x).\nLine 4: Converted 'talent.keep_it_rolling' to 'talent.keep_it_rolling.enabled' (1x).\nLine 4: Converted 'talent.loaded_dice' to 'talent.loaded_dice.enabled' (1x).\nLine 6: Converted 'talent.improved_adrenaline_rush' to 'talent.improved_adrenaline_rush.enabled' (1x).\n\nThe import for 'stealth' required some automated changes.\nLine 3: Converted 'talent.crackshot' to 'talent.crackshot.enabled' (1x).\nLine 5: Converted 'talent.crackshot' to 'talent.crackshot.enabled' (1x).\nLine 6: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.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 1: Converted 'talent.improved_adrenaline_rush' to 'talent.improved_adrenaline_rush.enabled' (1x).\nLine 2: Converted 'trinket.1.is.scroll_of_momentum' to 'trinket.t1.is.scroll_of_momentum' (1x).\nLine 2: Converted 'trinket.2.is.scroll_of_momentum' to 'trinket.t2.is.scroll_of_momentum' (1x).\nLine 4: Converted 'talent.deft_maneuvers' to 'talent.deft_maneuvers.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.underhanded_upper_hand' to 'talent.underhanded_upper_hand.enabled' (1x).\nLine 1: Converted 'talent.subterfuge' to 'talent.subterfuge.enabled' (1x).\nLine 1: Converted 'talent.crackshot' to 'talent.crackshot.enabled' (1x).\nLine 2: Converted 'talent.underhanded_upper_hand' to 'talent.underhanded_upper_hand.enabled' (1x).\nLine 2: Converted 'talent.subterfuge' to 'talent.subterfuge.enabled' (1x).\nLine 2: Converted 'talent.crackshot' to 'talent.crackshot.enabled' (1x).\nLine 2: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 3: Converted 'talent.underhanded_upper_hand' to 'talent.underhanded_upper_hand.enabled' (1x).\nLine 3: Converted 'talent.crackshot' to 'talent.crackshot.enabled' (1x).\nLine 4: Converted 'talent.underhanded_upper_hand' to 'talent.underhanded_upper_hand.enabled' (1x).\nLine 4: Converted 'talent.crackshot' to 'talent.crackshot.enabled' (1x).\nLine 4: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 5: Converted 'talent.underhanded_upper_hand' to 'talent.underhanded_upper_hand.enabled' (1x).\nLine 5: Converted 'talent.crackshot' to 'talent.crackshot.enabled' (1x).\nLine 5: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 5: Converted 'talent.fateful_ending' to 'talent.fateful_ending.enabled' (1x).\nLine 6: Converted 'talent.underhanded_upper_hand' to 'talent.underhanded_upper_hand.enabled' (1x).\nLine 6: Converted 'talent.crackshot' to 'talent.crackshot.enabled' (1x).\nLine 6: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 6: Converted 'talent.fateful_ending' to 'talent.fateful_ending.enabled' (1x).\nLine 6: Converted 'talent.take_em_by_surprise' to 'talent.take_em_by_surprise.enabled' (1x).\n\nThe import for 'build' required some automated changes.\nLine 1: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 2: Converted 'talent.fan_the_hammer' to 'talent.fan_the_hammer.enabled' (1x).\nLine 2: Converted 'talent.audacity' to 'talent.audacity.enabled' (1x).\nLine 2: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\nLine 3: Converted 'talent.fan_the_hammer' to 'talent.fan_the_hammer.enabled' (1x).\nLine 4: Converted 'talent.fan_the_hammer' to 'talent.fan_the_hammer.enabled' (1x).\nLine 4: Converted 'talent.quick_draw' to 'talent.quick_draw.enabled' (1x).\nLine 4: Converted 'talent.ruthlessness' to 'talent.ruthlessness.enabled' (1x).\nLine 5: Converted 'talent.fan_the_hammer' to 'talent.fan_the_hammer.enabled' (1x).\nLine 7: Converted 'talent.hidden_opportunity' to 'talent.hidden_opportunity.enabled' (1x).\n\nImported 7 action lists.\n",
|
|
["profile"] = "actions.precombat+=/apply_poison\nactions.precombat+=/use_item,name=imperfect_ascendancy_serum\nactions.precombat+=/stealth,precombat_seconds=2\n# Builds with Keep it Rolling prepull Adrenaline Rush before Roll the Bones to consume Loaded Dice immediately instead of on the next pandemic roll\nactions.precombat+=/adrenaline_rush,precombat_seconds=2,if=talent.improved_adrenaline_rush&buff.adrenaline_rush.down&talent.keep_it_rolling&talent.loaded_dice\nactions.precombat+=/roll_the_bones,precombat_seconds=2,if=buff.roll_the_bones.down\nactions.precombat+=/adrenaline_rush,precombat_seconds=1,if=talent.improved_adrenaline_rush&buff.adrenaline_rush.down\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# Variables that define the reroll rules for Roll the Bones Default rule: reroll if the only buff that will be rolled away is Buried Treasure, or Grand Melee in single target without upcoming adds\nactions+=/variable,name=rtb_reroll,value=rtb_buffs.will_lose=(rtb_buffs.will_lose.buried_treasure+rtb_buffs.will_lose.grand_melee&spell_targets.blade_flurry<2)\n# If Loaded Dice is talented, then keep any 1 buff from Roll the Bones but roll it into 2 buffs when Loaded Dice is active. Also reroll 2 buffs with loaded dice up if broadside, ruthless precision and true bearing are all missing and loaded dice is up\nactions+=/variable,name=rtb_reroll,if=talent.loaded_dice,value=rtb_buffs.will_lose<=buff.loaded_dice.up||buff.loaded_dice.up&rtb_buffs.will_lose<3&(!rtb_buffs.will_lose.broadside||buff.broadside.remains<11)&(!rtb_buffs.will_lose.ruthless_precision||buff.ruthless_precision.remains<11)&(!rtb_buffs.will_lose.true_bearing||buff.true_bearing.remains<11)\n# If all active Roll the Bones buffs are ahead of its container buff and have under 40s remaining or with supercharger talented, then reroll again with Loaded Dice active in an attempt to get even more buffs\nactions+=/variable,name=rtb_reroll,value=variable.rtb_reroll&rtb_buffs.longer=0||rtb_buffs.normal=0&rtb_buffs.longer>=1&buff.loaded_dice.up&(rtb_buffs<6&rtb_buffs.max_remains<39||talent.supercharger)\n# Non supercharger builds should 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=!talent.supercharger&!(raid_event.adds.remains>12||raid_event.adds.up&(raid_event.adds.in-raid_event.adds.remains)<6||target.time_to_die>12)||fight_remains<12&boss\nactions+=/variable,name=ambush_condition,value=(talent.hidden_opportunity||combo_points.deficit>=2+talent.improved_ambush+buff.broadside.up)&energy>=50\n# Use finishers if at -1 from max combo points, or -2 in Stealth with Crackshot. With the hero trees, Hidden Opportunity builds also finish at -2 if Audacity or Opportunity is active\nactions+=/variable,name=finish_condition,value=combo_points>=cp_max_spend-1-(stealthed.all&talent.crackshot||(talent.hand_of_fate||talent.flawless_form)&talent.hidden_opportunity&(buff.audacity.up||buff.opportunity.up))\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>gcd\nactions+=/call_action_list,name=cds\n# High priority stealth list, will fall through if no conditions are met\nactions+=/call_action_list,name=stealth,strict=1,if=stealthed.all\nactions+=/call_action_list,name=finish,strict=1,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\n# High priority Ambush for Hidden Opportunity builds\nactions.build+=/ambush,if=talent.hidden_opportunity&buff.audacity.up\n# With Audacity + Hidden Opportunity + Fan the Hammer, consume Opportunity 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\n# With Fan the Hammer, consume Opportunity as a higher priority if at max stacks or if it will expire\nactions.build+=/pistol_shot,if=talent.fan_the_hammer&buff.opportunity.up&(buff.opportunity.stack>=buff.opportunity.max_stack||buff.opportunity.remains<2)\n# With Fan the Hammer, consume Opportunity if it will not overcap CPs, or with 1 CP at minimum\nactions.build+=/pistol_shot,if=talent.fan_the_hammer&buff.opportunity.up&(combo_points.deficit>=(1+(talent.quick_draw+buff.broadside.up)*(talent.fan_the_hammer.rank+1))||combo_points<=talent.ruthlessness)\n# If not using Fan the Hammer, then consume Opportunity based on energy, when it will exactly cap CPs, or when using Quick Draw\nactions.build+=/pistol_shot,if=!talent.fan_the_hammer&buff.opportunity.up&(energy.base_deficit>energy.regen*1.5||combo_points.deficit<=1+buff.broadside.up||talent.quick_draw.enabled||talent.audacity.enabled&!buff.audacity.up)\n# Fallback pooling just so Sinister Strike is never casted if Ambush is available for Hidden Opportunity builds\nactions.build+=/pool_resource,for_next=1\nactions.build+=/ambush,if=talent.hidden_opportunity\nactions.build+=/sinister_strike\n\n## Cooldowns\n# Use Adrenaline Rush if it is not active and the finisher condition is not met, with Improved Adrenaline Rush you can also refresh it with 2cp or less if Loaded Dice is not already up Adrenaline rush if buff is missing unless you can finish or with 2 or less cp if loaded dice is missing\nactions.cds+=/adrenaline_rush,if=!buff.adrenaline_rush.up&(!variable.finish_condition||!talent.improved_adrenaline_rush)||talent.improved_adrenaline_rush&combo_points<=2&!buff.loaded_dice.up\n# Sprint to further benefit from Scroll of Momentum trinket\nactions.cds+=/sprint,if=(trinket.1.is.scroll_of_momentum||trinket.2.is.scroll_of_momentum)&buff.full_momentum.up\n# Maintain Blade Flurry on 2+ targets\nactions.cds+=/blade_flurry,if=spell_targets>=2&buff.blade_flurry.remains<gcd\n# With Deft Maneuvers, use Blade Flurry on cooldown at 5+ targets, or at 3-4 targets if missing combo points equal to the amount given\nactions.cds+=/blade_flurry,if=talent.deft_maneuvers&!variable.finish_condition&(spell_targets>=3&combo_points.deficit=spell_targets+buff.broadside.up||spell_targets>=5)\n# Use Roll the Bones if reroll conditions are met, or with no buffs\nactions.cds+=/roll_the_bones,if=variable.rtb_reroll||rtb_buffs=0\n# Use Keep it Rolling with any 4 buffs. If Broadside is not active, then wait until just before the lowest buff expires in an attempt to obtain it from Count the Odds.\nactions.cds+=/keep_it_rolling,if=rtb_buffs>=4&(rtb_buffs.min_remains<2||buff.broadside.up)\nactions.cds+=/ghostly_strike,if=combo_points<cp_max_spend\n# Trinkets that should not be used during stealth and have higher priority than entering stealth\nactions.cds+=/use_item,name=manic_grieftorch,if=!stealthed.all&buff.between_the_eyes.up||fight_remains<=5\nactions.cds+=/use_item,name=beacon_to_the_beyond,if=!stealthed.all&buff.between_the_eyes.up||boss&fight_remains<=5\nactions.cds+=/use_item,name=imperfect_ascendancy_serum,if=!stealthed.all||boss&fight_remains<=22\nactions.cds+=/use_item,name=mad_queens_mandate,if=!stealthed.all||boss&fight_remains<=5\n# Killing Spree has higher priority than stealth cooldowns\nactions.cds+=/killing_spree,if=variable.finish_condition&!stealthed.all\n# Crackshot builds use stealth cooldowns if not already in stealth\nactions.cds+=/call_action_list,name=stealth_cds,if=!stealthed.all\nactions.cds+=/thistle_tea,if=!buff.thistle_tea.up&(energy.base_deficit>=150||fight_remains<charges*6)\n# Use Blade Rush at minimal energy outside of stealth\nactions.cds+=/blade_rush,if=energy.base_time_to_max>4&!stealthed.all\nactions.cds+=/potion,if=buff.bloodlust.up||boss&fight_remains<30||buff.adrenaline_rush.up\nactions.cds+=/blood_fury\nactions.cds+=/berserking\nactions.cds+=/fireblood\nactions.cds+=/ancestral_call\nactions.cds+=/use_items,slots=trinket1,if=buff.between_the_eyes.up||trinket.1.has_stat.any_dps||boss&fight_remains<=20\nactions.cds+=/use_items,slots=trinket2,if=buff.between_the_eyes.up||trinket.2.has_stat.any_dps||boss&fight_remains<=20\n\n## Finishers\n# Use Between the Eyes to keep the crit buff up, but on cooldown if Improved/Greenskins, and avoid overriding Greenskins\nactions.finish+=/between_the_eyes,if=!talent.crackshot&(buff.between_the_eyes.remains<4||talent.improved_between_the_eyes||talent.greenskins_wickers)&!buff.greenskins_wickers.up\n# Crackshot builds use Between the Eyes outside of Stealth to refresh the Between the Eyes crit buff or on cd with the Ruthless Precision buff\nactions.finish+=/between_the_eyes,if=talent.crackshot&(buff.ruthless_precision.up||buff.between_the_eyes.remains<4)\nactions.finish+=/cold_blood\nactions.finish+=/coup_de_grace\nactions.finish+=/dispatch\n\n## Stealth\nactions.stealth+=/cold_blood,if=variable.finish_condition\n# Ensure Crackshot BtE is not skipped because of low energy\nactions.stealth+=/pool_resource,for_next=1\n# High priority Between the Eyes for Crackshot, except not directly out of Shadowmeld\nactions.stealth+=/between_the_eyes,if=variable.finish_condition&talent.crackshot&(!buff.shadowmeld.up||stealthed.rogue)\nactions.stealth+=/dispatch,if=variable.finish_condition\n# 2 Fan the Hammer Crackshot builds can consume Opportunity in stealth with max stacks, Broadside, and low CPs, or with Greenskins active\nactions.stealth+=/pistol_shot,if=talent.crackshot&talent.fan_the_hammer.rank>=2&buff.opportunity.stack>=6&(buff.broadside.up&combo_points<=1||buff.greenskins_wickers.up)\nactions.stealth+=/ambush,if=talent.hidden_opportunity\n\n## Stealth Cooldowns\n# Builds with Underhanded Upper Hand and Subterfuge must use Vanish while Adrenaline Rush is active and either BTE on CD with RP up, adrenaline rush about to expire, supercharger buff up, vanish capped on charges or about to cap or fight about to end\nactions.stealth_cds+=/vanish,if=talent.underhanded_upper_hand&talent.subterfuge&talent.crackshot&buff.adrenaline_rush.up&variable.finish_condition&(!cooldown.between_the_eyes.ready&buff.ruthless_precision.up||buff.adrenaline_rush.remains<3||buff.supercharge.up||cooldown.vanish.full_recharge_time<15||boss&fight_remains<8)\n# Builds with Underhanded Upper Hand and Subterfuge but without crackshot use vanish only with Adrenaline Rush active\nactions.stealth_cds+=/vanish,if=talent.underhanded_upper_hand&talent.subterfuge&!talent.crackshot&buff.adrenaline_rush.up&(variable.ambush_condition||!talent.hidden_opportunity)&(!cooldown.between_the_eyes.ready&buff.ruthless_precision.up||buff.ruthless_precision.down||buff.adrenaline_rush.remains<3)\n# Builds without Underhanded Upper Hand but with Crackshot must still use Vanish into Between the Eyes on cooldown\nactions.stealth_cds+=/vanish,if=!talent.underhanded_upper_hand&talent.crackshot&variable.finish_condition\n# Builds without Underhanded Upper Hand and Crackshot but still Hidden Opportunity use Vanish into Ambush when Audacity is not active and under max Opportunity stacks\nactions.stealth_cds+=/vanish,if=!talent.underhanded_upper_hand&!talent.crackshot&talent.hidden_opportunity&!buff.audacity.up&buff.opportunity.stack<buff.opportunity.max_stack&variable.ambush_condition\n# Builds without Underhanded Upper Hand, Crackshot, and Hidden Opportunity but with Fatebound use Vanish at five stacks of either Fatebound coin in order to proc the Lucky Coin if it's not already active, and otherwise continue to Vanish into a Dispatch to proc Double Jeopardy on a biased coin\nactions.stealth_cds+=/vanish,if=!talent.underhanded_upper_hand&!talent.crackshot&!talent.hidden_opportunity&talent.fateful_ending&(!buff.fatebound_lucky_coin.up&(buff.fatebound_coin_tails.stack>=5||buff.fatebound_coin_heads.stack>=5)||buff.fatebound_lucky_coin.up&!cooldown.between_the_eyes.ready)\n# Builds with none of the above can use Vanish to maintain Take 'em By Surprise\nactions.stealth_cds+=/vanish,if=!talent.underhanded_upper_hand&!talent.crackshot&!talent.hidden_opportunity&!talent.fateful_ending&talent.take_em_by_surprise&!buff.take_em_by_surprise.up\nactions.stealth_cds+=/shadowmeld,if=variable.finish_condition&!cooldown.vanish.ready",
|
|
["basedOn"] = "Outlaw",
|
|
["spec"] = 260,
|
|
},
|
|
["Devastation"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/engine/class_modules/apl/apl_evoker.cpp",
|
|
["builtIn"] = true,
|
|
["date"] = 20240921,
|
|
["spec"] = 1467,
|
|
["desc"] = "2024-09-21: SimC updates\n\n2024-09-15: Allow Dragonrage in AOE\n\n2024-07-27, 09-04, 09-08: Updates from SimC\n\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["es"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "eternity_surge",
|
|
["empower_to"] = "1",
|
|
["description"] = "Eternity Surge, use rank most applicable to targets.",
|
|
["criteria"] = "active_enemies <= 1 + talent.eternitys_span.enabled || buff.dragonrage.remains < 1.75 * spell_haste & buff.dragonrage.remains >= 1 * spell_haste || buff.dragonrage.up & ( active_enemies > ( 3 + talent.font_of_magic.enabled ) * ( 1 + talent.eternitys_span.enabled ) ) || active_enemies >= 6 & ! talent.eternitys_span.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "eternity_surge",
|
|
["empower_to"] = "2",
|
|
["criteria"] = "active_enemies <= 2 + 2 * talent.eternitys_span.enabled || buff.dragonrage.remains < 2.5 * spell_haste & buff.dragonrage.remains >= 1.75 * spell_haste",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "eternity_surge",
|
|
["empower_to"] = "3",
|
|
["criteria"] = "active_enemies <= 3 + 3 * talent.eternitys_span.enabled || ! talent.font_of_magic.enabled || buff.dragonrage.remains <= 3.25 * spell_haste & buff.dragonrage.remains >= 2.5 * spell_haste",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["cycle_targets"] = 1,
|
|
["action"] = "eternity_surge",
|
|
["empower_to"] = "4",
|
|
},
|
|
},
|
|
["green"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Green Spells used to trigger Ancient Flame",
|
|
["action"] = "emerald_blossom",
|
|
},
|
|
{
|
|
["action"] = "verdant_embrace",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dragonrage.up & ( ! cooldown.shattering_star.up || active_enemies >= 2 ) || boss & fight_remains < 35",
|
|
["action"] = "potion",
|
|
["description"] = "Delay pot in ST if you are about to SS - mostly relevant for opener where you want DR->FB->SS->rotation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.dragonrage.remains <? ( ( cooldown.eternity_surge.remains - 8 ) >? ( cooldown.fire_breath.remains - 8 ) )",
|
|
["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.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "pool_for_id",
|
|
["value"] = "cooldown.deep_breath.remains < 8 & essence.deficit >= 1 & ! buff.essence_burst.up",
|
|
["default"] = "0",
|
|
["criteria"] = "talent.imminent_destruction.enabled & talent.melt_armor.enabled & talent.maneuverability.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["description"] = "Rupt to make the raidleader happy",
|
|
["action"] = "quell",
|
|
},
|
|
{
|
|
["action"] = "unravel",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies >= 3",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "st",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["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.is.mirror_of_fractured_tomorrows",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.is.mirror_of_fractured_tomorrows",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["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 )",
|
|
},
|
|
{
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.belorrelos_the_suncaller || trinket.t1.is.nymues_unraveling_spindle || trinket.t1.is.spymasters_web",
|
|
["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.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.belorrelos_the_suncaller || trinket.t2.is.nymues_unraveling_spindle || trinket.t2.is.spymasters_web",
|
|
["var_name"] = "trinket_2_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "trinket_1_ogcd_cast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "trinket_2_ogcd_cast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.ruby_whelp_shell || trinket.t1.is.whispering_incarnate_icon",
|
|
["var_name"] = "trinket_1_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.ruby_whelp_shell || trinket.t2.is.whispering_incarnate_icon",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["value"] = "2",
|
|
["value_else"] = "1",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / trinket.t2.buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "damage_trinket_priority",
|
|
["value"] = "2",
|
|
["value_else"] = "1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_2_buffs & trinket.t2.ilvl >= trinket.t1.ilvl",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1.0 * spell_haste",
|
|
["var_name"] = "r1_cast_time",
|
|
["description"] = "Rank 1 empower spell cast time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "dr_prep_time_aoe",
|
|
["description"] = "Variable for when to start holding empowers for upcoming DR in AoE. - From my testing 4sec seems like the sweetspot, but it's very minor diff so far - Holding for more than 6 seconds it begins to become a loss.",
|
|
["default"] = "4",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "dr_prep_time_st",
|
|
["description"] = "Variable for when to start holding empowers for upcoming DR in ST.",
|
|
["default"] = "8",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.invoke_power_infusion_0.duration > 0",
|
|
["var_name"] = "has_external_pi",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.scarlet_adaptation.enabled",
|
|
["action"] = "verdant_embrace",
|
|
["description"] = "Get Some Scarlet Adaptation Prepull",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.firestorm.enabled & ( ! talent.engulf.enabled || ! talent.ruby_embers.enabled )",
|
|
["action"] = "firestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.firestorm.enabled || talent.engulf.enabled & talent.ruby_embers.enabled",
|
|
["action"] = "living_flame",
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shattering_star",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "AOE action list, Open with star before DR to save a global and start with a free EB",
|
|
["criteria"] = "cooldown.dragonrage.up & talent.arcane_vigor.enabled || talent.eternitys_span.enabled & active_enemies <= 3",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "raid_event.movement.in < 6 & ! buff.hover.up & gcd.remains >= 0.5 & ( buff.mass_disintegrate_stacks.up & talent.mass_disintegrate.enabled || active_enemies <= 4 )",
|
|
["action"] = "hover",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.snapfire.up",
|
|
["action"] = "firestorm",
|
|
["description"] = "Spend firestorm procs ASAP",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.feed_the_flames.enabled",
|
|
["action"] = "firestorm",
|
|
["description"] = "Acquire the buff",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Grab Irid Red before Dragonrage without griefing extension",
|
|
["criteria"] = "talent.dragonrage.enabled & cooldown.dragonrage.up & talent.iridescence.enabled || empowering.fire_breath",
|
|
["list_name"] = "fb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.maneuverability.enabled & talent.melt_armor.enabled",
|
|
["action"] = "deep_breath",
|
|
},
|
|
{
|
|
["action"] = "dragonrage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dragonrage.up & ( ( active_enemies <= 3 + 3 * talent.eternitys_span.enabled & ! talent.engulf.enabled ) || ! cooldown.fire_breath.up )",
|
|
["action"] = "tip_the_scales",
|
|
["description"] = "Tip ES at appropiate target count or when playing Flameshaper otherwise Tip FB",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Cast Fire Breath DS optimization: Only cast if current fight will last 8s+ or encounter ends in less than 30s",
|
|
["criteria"] = "( ! talent.dragonrage.enabled || buff.dragonrage.up || cooldown.dragonrage.remains > variable.dr_prep_time_aoe || ! talent.animosity.enabled ) & ( fight_remains >= 8 || fight_remains < 30 )",
|
|
["list_name"] = "fb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Cast Eternity Surge DS optimization: Only cast if current fight will last 8s+ or encounter ends in less than 30s",
|
|
["criteria"] = "( ! talent.dragonrage.enabled || buff.dragonrage.up || cooldown.dragonrage.remains > variable.dr_prep_time_aoe || ! talent.animosity.enabled ) & ( target.time_to_die >= 8 || fight_remains < 30 ) || empowering.eternity_surge",
|
|
["list_name"] = "es",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.dragonrage.up & essence.deficit > 3",
|
|
["action"] = "deep_breath",
|
|
["description"] = "Cast DB if not in DR and not going to overflow essence.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shattering_star",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Send SS when it doesn't overflow EB, without vigor send on CD",
|
|
["criteria"] = "buff.essence_burst.stack < buff.essence_burst.max_stack & talent.arcane_vigor.enabled || talent.eternitys_span.enabled & active_enemies <= 3",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.fire_breath_damage.ticking & ( ! talent.shattering_star.enabled || debuff.shattering_star_debuff.up ) & cooldown.dragonrage.remains >= 27",
|
|
["action"] = "engulf",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "disintegrate",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Use Mass Disintegrate if CB wont't overcap",
|
|
["criteria"] = "buff.mass_disintegrate_stacks.up & talent.mass_disintegrate.enabled & ( buff.charged_blast.stack < 10 || ! talent.charged_blast.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "pyre",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Pyre 4T+ - 3T+ with Volatility - 12 stacks of CB - Pool CB for DR",
|
|
["criteria"] = "( active_enemies >= 4 || talent.volatility.enabled ) & ( cooldown.dragonrage.remains > gcd.max * 4 || ! talent.charged_blast.enabled || talent.engulf.enabled & ( ! talent.arcane_intensity.enabled || ! talent.eternitys_span.enabled ) ) & ! variable.pool_for_id",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.charged_blast.stack >= 12 & cooldown.dragonrage.remains > gcd.max * 4",
|
|
["action"] = "pyre",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "living_flame",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Cast LF with leaping flames up if: not playing burnout, burnout is up or the next firebreath is soon.",
|
|
["criteria"] = "( ! talent.burnout.enabled || buff.burnout.up || cooldown.fire_breath.remains <= gcd.max * 5 || buff.scarlet_adaptation.up || buff.ancient_flame.up ) & buff.leaping_flames.up & ! buff.essence_burst.up & essence.deficit > 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "disintegrate",
|
|
["chain"] = "1",
|
|
["cycle_targets"] = 1,
|
|
["interrupt_if"] = "evoker.use_clipping&buff.dragonrage.up&ticks>=2&(raid_event.movement.in>2||buff.hover.up)",
|
|
["early_chain_if"] = "evoker.use_early_chaining&ticks>=2&(raid_event.movement.in>2||buff.hover.up)",
|
|
["criteria"] = "( raid_event.movement.in > 2 || buff.hover.up ) & ! variable.pool_for_id",
|
|
["description"] = "Yoinked the disintegrate logic from ST",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "living_flame",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Cast LF with burnout to fish for snapfire procs",
|
|
["criteria"] = "talent.snapfire.enabled & buff.burnout.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Get Ancient Flame as Filler",
|
|
["criteria"] = "talent.ancient_flame.enabled & ! buff.ancient_flame.up & ! buff.dragonrage.up",
|
|
["list_name"] = "green",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Fallback filler",
|
|
["action"] = "azure_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "spymasters_web",
|
|
["action"] = "spymasters_web",
|
|
["criteria"] = "buff.dragonrage.up & ( fight_remains < 130 ) & buff.spymasters_report.stack >= 15 || ( boss & fight_remains <= 20 || cooldown.engulf.up & talent.engulf.enabled & fight_remains <= 40 & cooldown.dragonrage.remains >= 40 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["description"] = "The trinket with the highest estimated value, will be used first and paired with Dragonrage. Trinkets are used on 4 stacks of Emerald Trance, unless playing double buff trinket, then one is used after SS/FB and the next on CD. Or with DR in AoE",
|
|
["criteria"] = "buff.dragonrage.up & ( ( variable.trinket_2_buffs & ! cooldown.fire_breath.up & ! cooldown.shattering_star.up & trinket.t2.cooldown.remains ) || ( ! cooldown.fire_breath.up & ! cooldown.shattering_star.up ) || active_enemies >= 3 ) & ( ! 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 ) & ! variable.trinket_1_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dragonrage.up & ( ( variable.trinket_1_buffs & ! cooldown.fire_breath.up & ! cooldown.shattering_star.up & trinket.t1.cooldown.remains ) || ( ! cooldown.fire_breath.up & ! cooldown.shattering_star.up ) || active_enemies >= 3 ) & ( ! 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 ) & ! variable.trinket_2_manual",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["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.damage_trinket_priority = 1 || trinket.t2.cooldown.remains || trinket.t2.is.spymasters_web || trinket.t2.cooldown.duration = 0 ) & ( gcd.remains > 0.1 & ! prev_gcd.1.deep_breath ) & ( variable.next_dragonrage > 20 || ! talent.dragonrage.enabled || ! variable.trinket_2_buffs || trinket.t2.is.spymasters_web & ( buff.spymasters_report.stack < 5 || fight_remains >= 130 + variable.next_dragonrage ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_2_buffs & ! variable.trinket_2_manual & ( variable.damage_trinket_priority = 2 || trinket.t1.cooldown.remains || trinket.t1.is.spymasters_web || trinket.t1.cooldown.duration = 0 ) & ( gcd.remains > 0.1 & ! prev_gcd.1.deep_breath ) & ( variable.next_dragonrage > 20 || ! talent.dragonrage.enabled || ! variable.trinket_1_buffs || trinket.t1.is.spymasters_web & ( buff.spymasters_report.stack < 5 || fight_remains >= 130 + variable.next_dragonrage ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & ( variable.damage_trinket_priority = 1 || trinket.t2.cooldown.remains || trinket.t2.is.spymasters_web || trinket.t2.cooldown.duration = 0 ) & ( ! variable.trinket_1_ogcd_cast ) & ( variable.next_dragonrage > 20 || ! talent.dragonrage.enabled || ! variable.trinket_2_buffs || trinket.t2.is.spymasters_web & ( buff.spymasters_report.stack < 5 || fight_remains >= 130 + variable.next_dragonrage ) )",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_2_buffs & ! variable.trinket_2_manual & ( variable.damage_trinket_priority = 2 || trinket.t1.cooldown.remains || trinket.t1.is.spymasters_web || trinket.t1.cooldown.duration = 0 ) & ( ! variable.trinket_2_ogcd_cast ) & ( variable.next_dragonrage > 20 || ! talent.dragonrage.enabled || ! variable.trinket_1_buffs || trinket.t1.is.spymasters_web & ( buff.spymasters_report.stack < 5 || fight_remains >= 130 + variable.next_dragonrage ) )",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
},
|
|
["fb"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "1",
|
|
["description"] = "Fire Breath, use rank appropriate to target count/talents.",
|
|
["criteria"] = "( buff.dragonrage.remains < 1.75 * spell_haste & buff.dragonrage.remains >= 1 * spell_haste ) || active_enemies = 1 || talent.scorching_embers.enabled & ! dot.fire_breath_damage.ticking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 2 || ( buff.dragonrage.remains < 2.5 * spell_haste & buff.dragonrage.remains >= 1.75 * spell_haste ) || talent.scorching_embers.enabled",
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.font_of_magic.enabled || ( buff.dragonrage.remains <= 3.25 * spell_haste & buff.dragonrage.remains >= 2.5 * spell_haste ) || talent.scorching_embers.enabled",
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "3",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "4",
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "kharnalex_the_first_light",
|
|
["action"] = "kharnalex_the_first_light",
|
|
["criteria"] = "! buff.dragonrage.up & debuff.shattering_star_debuff.down & raid_event.movement.in > 6",
|
|
["description"] = "ST Action List, it's a mess, but it's getting better!",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.movement.in < 6 & ! buff.hover.up & gcd.remains >= 0.5",
|
|
["use_off_gcd"] = 1,
|
|
["description"] = "Movement Logic, Time spiral logic might need some tweaking actions.st+=/time_spiral,if=raid_event.movement.in<3&cooldown.hover.remains>=3&!buff.hover.up",
|
|
["action"] = "hover",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.maneuverability.enabled & talent.melt_armor.enabled",
|
|
["action"] = "deep_breath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.fire_breath.remains < 4 || cooldown.eternity_surge.remains < 4 & ( ! set_bonus.tww1_4pc || ! talent.mass_disintegrate.enabled ) ) & ( cooldown.fire_breath.remains < 8 & ( cooldown.eternity_surge.remains < 8 || set_bonus.tww1_4pc & talent.mass_disintegrate.enabled ) ) & target.time_to_die >= 32 || boss & fight_remains < 32",
|
|
["action"] = "dragonrage",
|
|
["description"] = "Relaxed Dragonrage Entry Requirements, cannot reliably reach third extend under normal conditions (Bloodlust + Power Infusion/Very high haste gear) DS optimization: Only cast if current fight will last 32s+ or encounter ends in less than 30s",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.dragonrage.enabled || buff.dragonrage.up ) & ( cooldown.fire_breath.remains < cooldown.eternity_surge.remains || ( cooldown.eternity_surge.remains < cooldown.fire_breath.remains & talent.font_of_magic.enabled ) )",
|
|
["action"] = "tip_the_scales",
|
|
["description"] = "Tip second FB if not playing font of magic or if playing EBF, otherwise tip ES.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.essence_burst.stack < buff.essence_burst.max_stack || ! talent.arcane_vigor.enabled ) & ( ! cooldown.eternity_surge.up || ! buff.dragonrage.up || talent.mass_disintegrate.enabled || ! talent.event_horizon.enabled & ( ! talent.traveling_flame.enabled || ! cooldown.engulf.up ) ) & ( cooldown.dragonrage.remains >= 15 || cooldown.fire_breath.remains >= 8 || buff.dragonrage.up & ( cooldown.fire_breath.remains <= gcd.max & buff.tip_the_scales.up || cooldown.tip_the_scales.remains >= 15 & ! buff.tip_the_scales.up ) || ! talent.traveling_flame.enabled ) & ( ! cooldown.fire_breath.up || buff.tip_the_scales.up )",
|
|
["action"] = "shattering_star",
|
|
["description"] = "Throw Star on CD, Don't overcap with Arcane Vigor.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( ! talent.bombardments.enabled || talent.extended_battle.enabled || debuff.bombardments.remains <= 7 & ! buff.mass_disintegrate_stacks.up || buff.dragonrage.up )",
|
|
["var_name"] = "bombardment_clause",
|
|
["criteria"] = "talent.bombardments.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Fire breath logic. Play around blazing shards if outside of DR. DS optimization: Only cast if current fight will last 8s+ or encounter ends in less than 30s",
|
|
["criteria"] = "( ! talent.dragonrage.enabled || variable.next_dragonrage > variable.dr_prep_time_st || ! talent.animosity.enabled ) & ( ! cooldown.eternity_surge.up || ! talent.event_horizon.enabled & ! talent.traveling_flame.enabled || talent.mass_disintegrate.enabled || ! buff.dragonrage.up ) & ( target.time_to_die >= 8 || fight_remains < 30 ) || empowering.fire_breath",
|
|
["list_name"] = "fb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Eternity Surge logic. Play around blazing shards if outside of DR. DS optimization: Only cast if current fight will last 8s+ or encounter ends in less than 30s",
|
|
["criteria"] = "( ! talent.dragonrage.enabled || variable.next_dragonrage > variable.dr_prep_time_st || ! talent.animosity.enabled || set_bonus.tww1_4pc & talent.mass_disintegrate.enabled ) & ( target.time_to_die >= 8 || fight_remains < 30 ) || empowering.eternity_surge",
|
|
["list_name"] = "es",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dragonrage.up & buff.dragonrage.remains < ( buff.essence_burst.max_stack - buff.essence_burst.stack ) * gcd.max & buff.burnout.up",
|
|
["action"] = "living_flame",
|
|
["description"] = "Spend the last 1 or 2 GCDs of DR on fillers to exit with 2 EBs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dragonrage.up & buff.dragonrage.remains < ( buff.essence_burst.max_stack - buff.essence_burst.stack ) * gcd.max",
|
|
["action"] = "azure_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.fire_breath_damage.ticking & ( ! talent.enkindle.enabled || dot.enkindle.ticking & ( prev_gcd.1.disintegrate || prev_gcd.1.engulf || prev_gcd.2.disintegrate || ! talent.fan_the_flames.enabled || active_enemies > 1 ) ) & ( ! talent.ruby_embers.enabled || dot.living_flame_damage.ticking ) & ( ! talent.shattering_star.enabled || debuff.shattering_star_debuff.up ) & cooldown.dragonrage.remains >= 27",
|
|
["action"] = "engulf",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.burnout.up & buff.leaping_flames.up & ! buff.essence_burst.up & buff.dragonrage.up",
|
|
["action"] = "living_flame",
|
|
["description"] = "Spend burnout procs without overcapping resources",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.dragonrage.up & debuff.shattering_star_debuff.down & talent.feed_the_flames.enabled & ( ( ! talent.dragonrage.enabled || cooldown.dragonrage.remains >= 10 ) & ( essence >= 3 || buff.essence_burst.up || talent.shattering_star.enabled & cooldown.shattering_star.remains <= 6 ) || talent.dragonrage.enabled & cooldown.dragonrage.remains <= cast_time & cooldown.fire_breath.remains < 6 & cooldown.eternity_surge.remains < 12 ) & ! debuff.in_firestorm.up",
|
|
["action"] = "firestorm",
|
|
["description"] = "Hard cast only outside of SS and DR windows",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.dragonrage.up & ( talent.imminent_destruction.enabled & ! debuff.shattering_star_debuff.up || talent.melt_armor.enabled & talent.maneuverability.enabled )",
|
|
["action"] = "deep_breath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.in_firestorm.up & talent.feed_the_flames.enabled & buff.charged_blast.stack = 20 & active_enemies >= 2",
|
|
["action"] = "pyre",
|
|
["description"] = "Spend pyre if raging inferno debuff is active and you have 20 stacks of CB on 2T",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "disintegrate",
|
|
["cycle_targets"] = 1,
|
|
["early_chain_if"] = "ticks_remain<=1&buff.mass_disintegrate_stacks.up",
|
|
["description"] = "Mass Disintegrates",
|
|
["criteria"] = "( raid_event.movement.in > 2 || buff.hover.up ) & buff.mass_disintegrate_stacks.up & talent.mass_disintegrate.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "disintegrate",
|
|
["chain"] = "1",
|
|
["cycle_targets"] = 1,
|
|
["interrupt_if"] = "evoker.use_clipping&ticks>=2&(raid_event.movement.in>2||buff.hover.up)",
|
|
["early_chain_if"] = "evoker.use_early_chaining&ticks>=2&(raid_event.movement.in>2||buff.hover.up)",
|
|
["criteria"] = "( raid_event.movement.in > 2 || buff.hover.up ) & ! variable.pool_for_id",
|
|
["description"] = "Dis logic Early Chain if needed for resources management. Clip after in DR after third tick for more important buttons.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.snapfire.up || ! debuff.in_firestorm.up & talent.feed_the_flames.enabled",
|
|
["action"] = "firestorm",
|
|
["description"] = "Spend firestorm procs ASAP",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.dragonrage.up & active_enemies >= 2 & ( ( raid_event.adds.in >= 120 & ! talent.onyx_legacy.enabled ) || ( raid_event.adds.in >= 60 & talent.onyx_legacy.enabled ) )",
|
|
["action"] = "deep_breath",
|
|
["description"] = "Use Deep Breath on 2T, unless adds will come before it'll be ready again or if talented ID.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.dragonrage.up & ( talent.imminent_destruction.enabled & ! debuff.shattering_star_debuff.up || talent.melt_armor.enabled || talent.maneuverability.enabled )",
|
|
["action"] = "deep_breath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "talent.ancient_flame.enabled & ! buff.ancient_flame.up & ! buff.shattering_star_debuff.up & talent.scarlet_adaptation.enabled & ! buff.dragonrage.up & ! buff.burnout.up",
|
|
["list_name"] = "green",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.dragonrage.up || ( buff.iridescence_red.remains > execute_time || ! talent.engulfing_blaze.enabled || buff.iridescence_blue.up || buff.burnout.up || buff.leaping_flames.up & cooldown.fire_breath.remains <= 5 ) & active_enemies = 1",
|
|
["action"] = "living_flame",
|
|
["description"] = "Cast LF outside of DR, In DR only cast with Iridescence.",
|
|
},
|
|
{
|
|
["action"] = "azure_strike",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20240921,
|
|
["warnings"] = "The import for 'es' required some automated changes.\nLine 1: Converted 'talent.eternitys_span' to 'talent.eternitys_span.enabled' (1x).\nLine 1: Converted 'talent.font_of_magic' to 'talent.font_of_magic.enabled' (1x).\nLine 1: Converted 'talent.eternitys_span' to 'talent.eternitys_span.enabled' (1x).\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 'st' required some automated changes.\nLine 3: Converted 'talent.maneuverability' to 'talent.maneuverability.enabled' (1x).\nLine 3: Converted 'talent.melt_armor' to 'talent.melt_armor.enabled' (1x).\nLine 4: Converted 'talent.mass_disintegrate' to 'talent.mass_disintegrate.enabled' (1x).\nLine 4: Converted 'talent.mass_disintegrate' to 'talent.mass_disintegrate.enabled' (1x).\nLine 5: Converted 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 5: Converted 'talent.font_of_magic' to 'talent.font_of_magic.enabled' (1x).\nLine 6: Converted 'talent.arcane_vigor' to 'talent.arcane_vigor.enabled' (1x).\nLine 6: Converted 'talent.mass_disintegrate' to 'talent.mass_disintegrate.enabled' (1x).\nLine 6: Converted 'talent.event_horizon' to 'talent.event_horizon.enabled' (1x).\nLine 6: Converted 'talent.traveling_flame' to 'talent.traveling_flame.enabled' (1x).\nLine 6: Converted 'talent.traveling_flame' to 'talent.traveling_flame.enabled' (1x).\nLine 7: Converted 'talent.bombardments' to 'talent.bombardments.enabled' (1x).\nLine 7: Converted 'talent.extended_battle' to 'talent.extended_battle.enabled' (1x).\nLine 7: Converted 'talent.bombardments' to 'talent.bombardments.enabled' (1x).\nLine 8: Converted 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 8: Converted 'talent.animosity' to 'talent.animosity.enabled' (1x).\nLine 8: Converted 'talent.event_horizon' to 'talent.event_horizon.enabled' (1x).\nLine 8: Converted 'talent.traveling_flame' to 'talent.traveling_flame.enabled' (1x).\nLine 8: Converted 'talent.mass_disintegrate' to 'talent.mass_disintegrate.enabled' (1x).\nLine 9: Converted 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 9: Converted 'talent.animosity' to 'talent.animosity.enabled' (1x).\nLine 9: Converted 'talent.mass_disintegrate' to 'talent.mass_disintegrate.enabled' (1x).\nLine 10: Converted 'talent.animosity' to 'talent.animosity.enabled' (1x).\nLine 11: Converted 'talent.animosity' to 'talent.animosity.enabled' (1x).\nLine 14: Converted 'talent.enkindle' to 'talent.enkindle.enabled' (1x).\nLine 14: Converted 'talent.fan_the_flames' to 'talent.fan_the_flames.enabled' (1x).\nLine 14: Converted 'talent.ruby_embers' to 'talent.ruby_embers.enabled' (1x).\nLine 14: Converted 'talent.shattering_star' to 'talent.shattering_star.enabled' (1x).\nLine 16: Converted 'talent.feed_the_flames' to 'talent.feed_the_flames.enabled' (1x).\nLine 16: Converted 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 16: Converted 'talent.shattering_star' to 'talent.shattering_star.enabled' (1x).\nLine 16: Converted 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 17: Converted 'talent.imminent_destruction' to 'talent.imminent_destruction.enabled' (1x).\nLine 17: Converted 'talent.melt_armor' to 'talent.melt_armor.enabled' (1x).\nLine 17: Converted 'talent.maneuverability' to 'talent.maneuverability.enabled' (1x).\nLine 18: Converted 'talent.feed_the_flames' to 'talent.feed_the_flames.enabled' (1x).\nLine 18: Converted operations in 'debuff.in_firestorm.up&talent.feed_the_flames.enabled&buff.charged_blast.stack==20&active_enemies>=2' to 'debuff.in_firestorm.up&talent.feed_the_flames.enabled&buff.charged_blast.stack=20&active_enemies>=2'.\nLine 19: Converted 'talent.mass_disintegrate' to 'talent.mass_disintegrate.enabled' (1x).\nLine 21: Converted 'talent.feed_the_flames' to 'talent.feed_the_flames.enabled' (1x).\nLine 22: Converted 'talent.onyx_legacy' to 'talent.onyx_legacy.enabled' (1x).\nLine 22: Converted 'talent.onyx_legacy' to 'talent.onyx_legacy.enabled' (1x).\nLine 23: Converted 'talent.imminent_destruction' to 'talent.imminent_destruction.enabled' (1x).\nLine 23: Converted 'talent.melt_armor' to 'talent.melt_armor.enabled' (1x).\nLine 23: Converted 'talent.maneuverability' to 'talent.maneuverability.enabled' (1x).\nLine 24: Converted 'talent.ancient_flame' to 'talent.ancient_flame.enabled' (1x).\nLine 24: Converted 'talent.scarlet_adaptation' to 'talent.scarlet_adaptation.enabled' (1x).\nLine 25: Converted 'talent.engulfing_blaze' to 'talent.engulfing_blaze.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'talent.imminent_destruction' to 'talent.imminent_destruction.enabled' (1x).\nLine 3: Converted 'talent.melt_armor' to 'talent.melt_armor.enabled' (1x).\nLine 3: Converted 'talent.maneuverability' to 'talent.maneuverability.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 1: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 1: Converted 'trinket.1.has_buff.intellect' 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 1: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 2: Converted 'trinket.2.has_buff.intellect' 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 2: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (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 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 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 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 5: Converted 'trinket.1.is.belorrelos_the_suncaller' to 'trinket.t1.is.belorrelos_the_suncaller' (1x).\nLine 5: Converted 'trinket.1.is.nymues_unraveling_spindle' to 'trinket.t1.is.nymues_unraveling_spindle' (1x).\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 6: Converted 'trinket.2.is.belorrelos_the_suncaller' to 'trinket.t2.is.belorrelos_the_suncaller' (1x).\nLine 6: Converted 'trinket.2.is.nymues_unraveling_spindle' to 'trinket.t2.is.nymues_unraveling_spindle' (1x).\nLine 6: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 9: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 9: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 10: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 10: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (1x).\nLine 11: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 11: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 11: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 11: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 11: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 11: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 11: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 11: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 11: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 11: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 11: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 11: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 11: 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 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 12: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nLine 17: Converted 'talent.scarlet_adaptation' to 'talent.scarlet_adaptation.enabled' (1x).\nLine 18: Converted 'talent.firestorm' to 'talent.firestorm.enabled' (1x).\nLine 18: Converted 'talent.engulf' to 'talent.engulf.enabled' (1x).\nLine 18: Converted 'talent.ruby_embers' to 'talent.ruby_embers.enabled' (1x).\nLine 19: Converted 'talent.firestorm' to 'talent.firestorm.enabled' (1x).\nLine 19: Converted 'talent.engulf' to 'talent.engulf.enabled' (1x).\nLine 19: Converted 'talent.ruby_embers' to 'talent.ruby_embers.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 1: Converted 'talent.arcane_vigor' to 'talent.arcane_vigor.enabled' (1x).\nLine 1: Converted 'talent.eternitys_span' to 'talent.eternitys_span.enabled' (1x).\nLine 2: Converted 'talent.mass_disintegrate' to 'talent.mass_disintegrate.enabled' (1x).\nLine 4: Converted 'talent.feed_the_flames' to 'talent.feed_the_flames.enabled' (1x).\nLine 5: Converted 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 5: Converted 'talent.iridescence' to 'talent.iridescence.enabled' (1x).\nLine 6: Converted 'talent.maneuverability' to 'talent.maneuverability.enabled' (1x).\nLine 6: Converted 'talent.melt_armor' to 'talent.melt_armor.enabled' (1x).\nLine 8: Converted 'talent.eternitys_span' to 'talent.eternitys_span.enabled' (1x).\nLine 8: Converted 'talent.engulf' to 'talent.engulf.enabled' (1x).\nLine 9: Converted 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 9: Converted 'talent.animosity' to 'talent.animosity.enabled' (1x).\nLine 10: Converted 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 10: Converted 'talent.animosity' to 'talent.animosity.enabled' (1x).\nLine 12: Converted 'talent.arcane_vigor' to 'talent.arcane_vigor.enabled' (1x).\nLine 12: Converted 'talent.eternitys_span' to 'talent.eternitys_span.enabled' (1x).\nLine 13: Converted 'talent.shattering_star' to 'talent.shattering_star.enabled' (1x).\nLine 14: Converted 'talent.mass_disintegrate' to 'talent.mass_disintegrate.enabled' (1x).\nLine 14: Converted 'talent.charged_blast' to 'talent.charged_blast.enabled' (1x).\nLine 15: Converted 'talent.volatility' to 'talent.volatility.enabled' (1x).\nLine 15: Converted 'talent.charged_blast' to 'talent.charged_blast.enabled' (1x).\nLine 15: Converted 'talent.engulf' to 'talent.engulf.enabled' (1x).\nLine 15: Converted 'talent.arcane_intensity' to 'talent.arcane_intensity.enabled' (1x).\nLine 15: Converted 'talent.eternitys_span' to 'talent.eternitys_span.enabled' (1x).\nLine 17: Converted 'talent.burnout' to 'talent.burnout.enabled' (1x).\nLine 19: Converted 'talent.snapfire' to 'talent.snapfire.enabled' (1x).\nLine 20: Converted 'talent.ancient_flame' to 'talent.ancient_flame.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 1: Converted 'talent.engulf' to 'talent.engulf.enabled' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.2.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.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.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 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (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.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 4: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (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 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (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.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 6: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (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 'talent.dragonrage' to 'talent.dragonrage.enabled' (1x).\nLine 7: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\n\nThe import for 'fb' required some automated changes.\nLine 1: Converted 'talent.scorching_embers' to 'talent.scorching_embers.enabled' (1x).\nLine 2: Converted 'talent.scorching_embers' to 'talent.scorching_embers.enabled' (1x).\nLine 3: Converted 'talent.font_of_magic' to 'talent.font_of_magic.enabled' (1x).\nLine 3: Converted 'talent.scorching_embers' to 'talent.scorching_embers.enabled' (1x).\n\nImported 8 action lists.\n",
|
|
["profile"] = "actions.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||trinket.1.is.mirror_of_fractured_tomorrows\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||trinket.2.is.mirror_of_fractured_tomorrows\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.belorrelos_the_suncaller||trinket.1.is.nymues_unraveling_spindle||trinket.1.is.spymasters_web\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.belorrelos_the_suncaller||trinket.2.is.nymues_unraveling_spindle||trinket.2.is.spymasters_web\nactions.precombat+=/variable,name=trinket_1_ogcd_cast,value=0\nactions.precombat+=/variable,name=trinket_2_ogcd_cast,value=0\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+=/variable,name=damage_trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&!variable.trinket_2_buffs&trinket.2.ilvl>=trinket.1.ilvl\n# Rank 1 empower spell cast time\nactions.precombat+=/variable,name=r1_cast_time,value=1.0*spell_haste\n# Variable for when to start holding empowers for upcoming DR in AoE. - From my testing 4sec seems like the sweetspot, but it's very minor diff so far - Holding for more than 6 seconds it begins to become a loss.\nactions.precombat+=/variable,name=dr_prep_time_aoe,default=4,op=reset\n# Variable for when to start holding empowers for upcoming DR in ST.\nactions.precombat+=/variable,name=dr_prep_time_st,default=8,op=reset\nactions.precombat+=/variable,name=has_external_pi,value=cooldown.invoke_power_infusion_0.duration>0\n# Get Some Scarlet Adaptation Prepull\nactions.precombat+=/verdant_embrace,if=talent.scarlet_adaptation\nactions.precombat+=/firestorm,if=talent.firestorm&(!talent.engulf||!talent.ruby_embers)\nactions.precombat+=/living_flame,if=!talent.firestorm||talent.engulf&talent.ruby_embers\n\n# Delay pot in ST if you are about to SS - mostly relevant for opener where you want DR->FB->SS->rotation\nactions+=/potion,if=buff.dragonrage.up&(!cooldown.shattering_star.up||active_enemies>=2)||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<?((cooldown.eternity_surge.remains-8)>?(cooldown.fire_breath.remains-8))\n## Invoke External Power Infusions if they're available during dragonrage\n## actions+=/invoke_external_buff,name=power_infusion,if=buff.dragonrage.up&!cooldown.fire_breath.up&!cooldown.shattering_star.up\nactions+=/variable,name=pool_for_id,if=talent.imminent_destruction&talent.melt_armor&talent.maneuverability,default=0,op=set,value=cooldown.deep_breath.remains<8&essence.deficit>=1&!buff.essence_burst.up\n# Rupt to make the raidleader happy\nactions+=/quell,use_off_gcd=1\nactions+=/unravel\nactions+=/call_action_list,name=trinkets\nactions+=/run_action_list,name=aoe,strict=1,if=active_enemies>=3\nactions+=/run_action_list,name=st\n\n# AOE action list; Open with star before DR to save a global and start with a free EB\nactions.aoe+=/shattering_star,cycle_targets=1,if=cooldown.dragonrage.up&talent.arcane_vigor||talent.eternitys_span&active_enemies<=3\nactions.aoe+=/hover,use_off_gcd=1,if=raid_event.movement.in<6&!buff.hover.up&gcd.remains>=0.5&(buff.mass_disintegrate_stacks.up&talent.mass_disintegrate||active_enemies<=4)\n# Spend firestorm procs ASAP\nactions.aoe+=/firestorm,if=buff.snapfire.up\n# Acquire the buff\nactions.aoe+=/firestorm,if=talent.feed_the_flames\n# Grab Irid Red before Dragonrage without griefing extension\nactions.aoe+=/call_action_list,name=fb,if=talent.dragonrage&cooldown.dragonrage.up&talent.iridescence||empowering.fire_breath\nactions.aoe+=/deep_breath,if=talent.maneuverability&talent.melt_armor\nactions.aoe+=/dragonrage\n# Tip ES at appropiate target count or when playing Flameshaper otherwise Tip FB\nactions.aoe+=/tip_the_scales,if=buff.dragonrage.up&((active_enemies<=3+3*talent.eternitys_span&!talent.engulf)||!cooldown.fire_breath.up)\n# Cast Fire Breath DS optimization: Only cast if current fight will last 8s+ or encounter ends in less than 30s\nactions.aoe+=/call_action_list,name=fb,if=(!talent.dragonrage||buff.dragonrage.up||cooldown.dragonrage.remains>variable.dr_prep_time_aoe||!talent.animosity)&(fight_remains>=8||fight_remains<30)\n# Cast Eternity Surge DS optimization: Only cast if current fight will last 8s+ or encounter ends in less than 30s\nactions.aoe+=/call_action_list,name=es,if=(!talent.dragonrage||buff.dragonrage.up||cooldown.dragonrage.remains>variable.dr_prep_time_aoe||!talent.animosity)&(target.time_to_die>=8||fight_remains<30)||empowering.eternity_surge\n# Cast DB if not in DR and not going to overflow essence.\nactions.aoe+=/deep_breath,if=!buff.dragonrage.up&essence.deficit>3\n# Send SS when it doesn't overflow EB, without vigor send on CD\nactions.aoe+=/shattering_star,cycle_targets=1,if=buff.essence_burst.stack<buff.essence_burst.max_stack&talent.arcane_vigor||talent.eternitys_span&active_enemies<=3\nactions.aoe+=/engulf,if=dot.fire_breath_damage.ticking&(!talent.shattering_star||debuff.shattering_star_debuff.up)&cooldown.dragonrage.remains>=27\n# Use Mass Disintegrate if CB wont't overcap\nactions.aoe+=/disintegrate,cycle_targets=1,if=buff.mass_disintegrate_stacks.up&talent.mass_disintegrate&(buff.charged_blast.stack<10||!talent.charged_blast)\n# Pyre 4T+ - 3T+ with Volatility - 12 stacks of CB - Pool CB for DR\nactions.aoe+=/pyre,cycle_targets=1,if=(active_enemies>=4||talent.volatility)&(cooldown.dragonrage.remains>gcd.max*4||!talent.charged_blast||talent.engulf&(!talent.arcane_intensity||!talent.eternitys_span))&!variable.pool_for_id\nactions.aoe+=/pyre,cycle_targets=1,if=buff.charged_blast.stack>=12&cooldown.dragonrage.remains>gcd.max*4\n# Cast LF with leaping flames up if: not playing burnout, burnout is up or the next firebreath is soon.\nactions.aoe+=/living_flame,cycle_targets=1,if=(!talent.burnout||buff.burnout.up||cooldown.fire_breath.remains<=gcd.max*5||buff.scarlet_adaptation.up||buff.ancient_flame.up)&buff.leaping_flames.up&!buff.essence_burst.up&essence.deficit>1\n# Yoinked the disintegrate logic from ST\nactions.aoe+=/disintegrate,cycle_targets=1,chain=1,early_chain_if=evoker.use_early_chaining&ticks>=2&(raid_event.movement.in>2||buff.hover.up),interrupt_if=evoker.use_clipping&buff.dragonrage.up&ticks>=2&(raid_event.movement.in>2||buff.hover.up),if=(raid_event.movement.in>2||buff.hover.up)&!variable.pool_for_id\n# Cast LF with burnout to fish for snapfire procs\nactions.aoe+=/living_flame,cycle_targets=1,if=talent.snapfire&buff.burnout.up\n# Get Ancient Flame as Filler\nactions.aoe+=/call_action_list,name=green,if=talent.ancient_flame&!buff.ancient_flame.up&!buff.dragonrage.up\n# Fallback filler\nactions.aoe+=/azure_strike,cycle_targets=1\n\n# Eternity Surge, use rank most applicable to targets.\nactions.es+=/eternity_surge,empower_to=1,cycle_targets=1,if=active_enemies<=1+talent.eternitys_span||buff.dragonrage.remains<1.75*spell_haste&buff.dragonrage.remains>=1*spell_haste||buff.dragonrage.up&(active_enemies>(3+talent.font_of_magic)*(1+talent.eternitys_span))||active_enemies>=6&!talent.eternitys_span\nactions.es+=/eternity_surge,empower_to=2,cycle_targets=1,if=active_enemies<=2+2*talent.eternitys_span||buff.dragonrage.remains<2.5*spell_haste&buff.dragonrage.remains>=1.75*spell_haste\nactions.es+=/eternity_surge,empower_to=3,cycle_targets=1,if=active_enemies<=3+3*talent.eternitys_span||!talent.font_of_magic||buff.dragonrage.remains<=3.25*spell_haste&buff.dragonrage.remains>=2.5*spell_haste\nactions.es+=/eternity_surge,empower_to=4,cycle_targets=1\n\n# Fire Breath, use rank appropriate to target count/talents.\nactions.fb+=/fire_breath,empower_to=1,if=(buff.dragonrage.remains<1.75*spell_haste&buff.dragonrage.remains>=1*spell_haste)||active_enemies=1||talent.scorching_embers&!dot.fire_breath_damage.ticking\nactions.fb+=/fire_breath,empower_to=2,if=active_enemies=2||(buff.dragonrage.remains<2.5*spell_haste&buff.dragonrage.remains>=1.75*spell_haste)||talent.scorching_embers\nactions.fb+=/fire_breath,empower_to=3,if=!talent.font_of_magic||(buff.dragonrage.remains<=3.25*spell_haste&buff.dragonrage.remains>=2.5*spell_haste)||talent.scorching_embers\nactions.fb+=/fire_breath,empower_to=4\n\n# Green Spells used to trigger Ancient Flame\nactions.green+=/emerald_blossom\nactions.green+=/verdant_embrace\n\n# ST Action List, it's a mess, but it's getting better!\nactions.st+=/use_item,name=kharnalex_the_first_light,if=!buff.dragonrage.up&debuff.shattering_star_debuff.down&raid_event.movement.in>6\n# Movement Logic, Time spiral logic might need some tweaking actions.st+=/time_spiral,if=raid_event.movement.in<3&cooldown.hover.remains>=3&!buff.hover.up\nactions.st+=/hover,use_off_gcd=1,if=raid_event.movement.in<6&!buff.hover.up&gcd.remains>=0.5\nactions.st+=/deep_breath,if=talent.maneuverability&talent.melt_armor\n# Relaxed Dragonrage Entry Requirements, cannot reliably reach third extend under normal conditions (Bloodlust + Power Infusion/Very high haste gear) DS optimization: Only cast if current fight will last 32s+ or encounter ends in less than 30s\nactions.st+=/dragonrage,if=(cooldown.fire_breath.remains<4||cooldown.eternity_surge.remains<4&(!set_bonus.tww1_4pc||!talent.mass_disintegrate))&(cooldown.fire_breath.remains<8&(cooldown.eternity_surge.remains<8||set_bonus.tww1_4pc&talent.mass_disintegrate))&target.time_to_die>=32||boss&fight_remains<32\n# Tip second FB if not playing font of magic or if playing EBF, otherwise tip ES.\nactions.st+=/tip_the_scales,if=(!talent.dragonrage||buff.dragonrage.up)&(cooldown.fire_breath.remains<cooldown.eternity_surge.remains||(cooldown.eternity_surge.remains<cooldown.fire_breath.remains&talent.font_of_magic))\n# Throw Star on CD, Don't overcap with Arcane Vigor.\nactions.st+=/shattering_star,if=(buff.essence_burst.stack<buff.essence_burst.max_stack||!talent.arcane_vigor)&(!cooldown.eternity_surge.up||!buff.dragonrage.up||talent.mass_disintegrate||!talent.event_horizon&(!talent.traveling_flame||!cooldown.engulf.up))&(cooldown.dragonrage.remains>=15||cooldown.fire_breath.remains>=8||buff.dragonrage.up&(cooldown.fire_breath.remains<=gcd&buff.tip_the_scales.up||cooldown.tip_the_scales.remains>=15&!buff.tip_the_scales.up)||!talent.traveling_flame)&(!cooldown.fire_breath.up||buff.tip_the_scales.up)\nactions.st+=/variable,name=bombardment_clause,value=(!talent.bombardments||talent.extended_battle||debuff.bombardments.remains<=7&!buff.mass_disintegrate_stacks.up||buff.dragonrage.up),if=talent.bombardments\n# Fire breath logic. Play around blazing shards if outside of DR. DS optimization: Only cast if current fight will last 8s+ or encounter ends in less than 30s\nactions.st+=/call_action_list,name=fb,if=(!talent.dragonrage||variable.next_dragonrage>variable.dr_prep_time_st||!talent.animosity)&(!cooldown.eternity_surge.up||!talent.event_horizon&!talent.traveling_flame||talent.mass_disintegrate||!buff.dragonrage.up)&(target.time_to_die>=8||fight_remains<30)||empowering.fire_breath\n# Eternity Surge logic. Play around blazing shards if outside of DR. DS optimization: Only cast if current fight will last 8s+ or encounter ends in less than 30s\nactions.st+=/call_action_list,name=es,if=(!talent.dragonrage||variable.next_dragonrage>variable.dr_prep_time_st||!talent.animosity||set_bonus.tww1_4pc&talent.mass_disintegrate)&(target.time_to_die>=8||fight_remains<30)||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# 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\nactions.st+=/engulf,if=dot.fire_breath_damage.ticking&(!talent.enkindle||dot.enkindle.ticking&(prev_gcd.1.disintegrate||prev_gcd.1.engulf||prev_gcd.2.disintegrate||!talent.fan_the_flames||active_enemies>1))&(!talent.ruby_embers||dot.living_flame_damage.ticking)&(!talent.shattering_star||debuff.shattering_star_debuff.up)&cooldown.dragonrage.remains>=27\n# Spend burnout procs without overcapping resources\nactions.st+=/living_flame,if=buff.burnout.up&buff.leaping_flames.up&!buff.essence_burst.up&buff.dragonrage.up\n# Hard cast only outside of SS and DR windows\nactions.st+=/firestorm,if=!buff.dragonrage.up&debuff.shattering_star_debuff.down&talent.feed_the_flames&((!talent.dragonrage||cooldown.dragonrage.remains>=10)&(essence>=3||buff.essence_burst.up||talent.shattering_star&cooldown.shattering_star.remains<=6)||talent.dragonrage&cooldown.dragonrage.remains<=cast_time&cooldown.fire_breath.remains<6&cooldown.eternity_surge.remains<12)&!debuff.in_firestorm.up\nactions.st+=/deep_breath,if=!buff.dragonrage.up&(talent.imminent_destruction&!debuff.shattering_star_debuff.up||talent.melt_armor&talent.maneuverability)\n# Spend pyre if raging inferno debuff is active and you have 20 stacks of CB on 2T\nactions.st+=/pyre,if=debuff.in_firestorm.up&talent.feed_the_flames&buff.charged_blast.stack==20&active_enemies>=2\n# Mass Disintegrates\nactions.st+=/disintegrate,cycle_targets=1,early_chain_if=ticks_remain<=1&buff.mass_disintegrate_stacks.up,if=(raid_event.movement.in>2||buff.hover.up)&buff.mass_disintegrate_stacks.up&talent.mass_disintegrate\n# Dis logic Early Chain if needed for resources management. Clip after in DR after third tick for more important buttons.\nactions.st+=/disintegrate,cycle_targets=1,chain=1,early_chain_if=evoker.use_early_chaining&ticks>=2&(raid_event.movement.in>2||buff.hover.up),interrupt_if=evoker.use_clipping&ticks>=2&(raid_event.movement.in>2||buff.hover.up),if=(raid_event.movement.in>2||buff.hover.up)&!variable.pool_for_id\n# Spend firestorm procs ASAP\nactions.st+=/firestorm,if=buff.snapfire.up||!debuff.in_firestorm.up&talent.feed_the_flames\n# Use Deep Breath on 2T, unless adds will come before it'll be ready again or if talented ID.\nactions.st+=/deep_breath,if=!buff.dragonrage.up&active_enemies>=2&((raid_event.adds.in>=120&!talent.onyx_legacy)||(raid_event.adds.in>=60&talent.onyx_legacy))\nactions.st+=/deep_breath,if=!buff.dragonrage.up&(talent.imminent_destruction&!debuff.shattering_star_debuff.up||talent.melt_armor||talent.maneuverability)\n # Get Ancient Flame as Filler\nactions.st+=/call_action_list,name=green,if=talent.ancient_flame&!buff.ancient_flame.up&!buff.shattering_star_debuff.up&talent.scarlet_adaptation&!buff.dragonrage.up&!buff.burnout.up\n# Cast LF outside of DR, In DR only cast with Iridescence.\nactions.st+=/living_flame,if=!buff.dragonrage.up||(buff.iridescence_red.remains>execute_time||!talent.engulfing_blaze||buff.iridescence_blue.up||buff.burnout.up||buff.leaping_flames.up&cooldown.fire_breath.remains<=5)&active_enemies=1\n # Fallback for movement\nactions.st+=/azure_strike\n\nactions.trinkets+=/use_item,name=spymasters_web,if=buff.dragonrage.up&(fight_remains<130)&buff.spymasters_report.stack>=15||(boss&fight_remains<=20||cooldown.engulf.up&talent.engulf&fight_remains<=40&cooldown.dragonrage.remains>=40)\n# The trinket with the highest estimated value, will be used first and paired with Dragonrage. Trinkets are used on 4 stacks of Emerald Trance, unless playing double buff trinket, then one is used after SS/FB and the next on CD. Or with DR in AoE\nactions.trinkets+=/use_item,slot=trinket1,if=buff.dragonrage.up&((variable.trinket_2_buffs&!cooldown.fire_breath.up&!cooldown.shattering_star.up&trinket.2.cooldown.remains)||(!cooldown.fire_breath.up&!cooldown.shattering_star.up)||active_enemies>=3)&(!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)&!variable.trinket_1_manual\nactions.trinkets+=/use_item,slot=trinket2,if=buff.dragonrage.up&((variable.trinket_1_buffs&!cooldown.fire_breath.up&!cooldown.shattering_star.up&trinket.1.cooldown.remains)||(!cooldown.fire_breath.up&!cooldown.shattering_star.up)||active_enemies>=3)&(!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)&!variable.trinket_2_manual\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.damage_trinket_priority=1||trinket.2.cooldown.remains||trinket.2.is.spymasters_web||trinket.2.cooldown.duration=0)&(gcd.remains>0.1&!prev_gcd.1.deep_breath)&(variable.next_dragonrage>20||!talent.dragonrage||!variable.trinket_2_buffs||trinket.2.is.spymasters_web&(buff.spymasters_report.stack<5||fight_remains>=130+variable.next_dragonrage))\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&(variable.damage_trinket_priority=2||trinket.1.cooldown.remains||trinket.1.is.spymasters_web||trinket.1.cooldown.duration=0)&(gcd.remains>0.1&!prev_gcd.1.deep_breath)&(variable.next_dragonrage>20||!talent.dragonrage||!variable.trinket_1_buffs||trinket.1.is.spymasters_web&(buff.spymasters_report.stack<5||fight_remains>=130+variable.next_dragonrage))\nactions.trinkets+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&(variable.damage_trinket_priority=1||trinket.2.cooldown.remains||trinket.2.is.spymasters_web||trinket.2.cooldown.duration=0)&(!variable.trinket_1_ogcd_cast)&(variable.next_dragonrage>20||!talent.dragonrage||!variable.trinket_2_buffs||trinket.2.is.spymasters_web&(buff.spymasters_report.stack<5||fight_remains>=130+variable.next_dragonrage))\nactions.trinkets+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&(variable.damage_trinket_priority=2||trinket.1.cooldown.remains||trinket.1.is.spymasters_web||trinket.1.cooldown.duration=0)&(!variable.trinket_2_ogcd_cast)&(variable.next_dragonrage>20||!talent.dragonrage||!variable.trinket_1_buffs||trinket.1.is.spymasters_web&(buff.spymasters_report.stack<5||fight_remains>=130+variable.next_dragonrage))",
|
|
["author"] = "SimC",
|
|
},
|
|
["Blood"] = {
|
|
["source"] = "SimulationCraft",
|
|
["builtIn"] = true,
|
|
["date"] = 20241122,
|
|
["spec"] = 250,
|
|
["desc"] = "2024-11-22: SimC update\n\n2024-11-02: Restore IBF, VB, RT\n\n2024-10-29: 11.0.5 SimC update + Reaper of Souls\n\n2024-10-06: Marrowrend / Exterminate during DRW\n\n2024-09-28: Marrowrend / Exterminate\n\n2024-09-08: Vampiric Blood\n\n2024-09-05: Sim update\n\n2024-08-28: Sim update\n\n2024-07-24: The War Within",
|
|
["lists"] = {
|
|
["sanlayn"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "settings.death_strike_pool_amount",
|
|
["var_name"] = "death_strike_dump_amount",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "20",
|
|
["var_name"] = "death_strike_pre_essence_dump_amount",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "7",
|
|
["var_name"] = "bone_shield_refresh_value",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( 21 + spell_targets.heart_strike * talent.heartbreaker.enabled * 2 )",
|
|
["var_name"] = "heart_strike_rp_drw",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coagulopathy.remains <= gcd.max",
|
|
["action"] = "death_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "death_strike",
|
|
["description"] = "Use Death Strike if your Blood Shield is going to expire.",
|
|
["criteria"] = "settings.save_blood_shield & buff.blood_shield.up & buff.blood_shield.remains <= gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.bone_shield.up",
|
|
["action"] = "deaths_caress",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.blood_plague.ticking || ( dot.blood_plague.remains < 10 & buff.dancing_rune_weapon.up )",
|
|
["action"] = "blood_boil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dancing_rune_weapon.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.dancing_rune_weapon.active & pet.dancing_rune_weapon.remains <= 3",
|
|
["action"] = "consumption",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.death_and_decay.up ) & buff.bone_shield.stack > 5 & cooldown.dancing_rune_weapon.remains >= 25",
|
|
["action"] = "bonestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power >= 108",
|
|
["action"] = "death_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dancing_rune_weapon.up & rune > 1",
|
|
["action"] = "heart_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.death_and_decay.up",
|
|
["action"] = "death_and_decay",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.infliction_of_sorrow.up & buff.death_and_decay.up",
|
|
["action"] = "heart_strike",
|
|
},
|
|
{
|
|
["action"] = "raise_dead",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "abomination_limb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! buff.dancing_rune_weapon.up & buff.death_and_decay.up ) & buff.bone_shield.stack > 5 & runic_power.deficit >= 30 & cooldown.dancing_rune_weapon.remains >= 25 & buff.coagulopathy.remains > 2 * gcd.max",
|
|
["action"] = "tombstone",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coagulopathy.remains >= 2 * gcd.max & ( ! buff.essence_of_the_blood_queen.up || buff.essence_of_the_blood_queen.remains >= 3 * gcd.max ) & ( ! buff.dancing_rune_weapon.up || buff.dancing_rune_weapon.remains >= 6 * gcd.max )",
|
|
["action"] = "dancing_rune_weapon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.vampiric_strike.up & cooldown.dancing_rune_weapon.remains <= 30 & runic_power > variable.death_strike_pre_essence_dump_amount & buff.essence_of_the_blood_queen.stack >= 3",
|
|
["action"] = "death_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.bonestorm.ticking & ( buff.bone_shield.stack < variable.bone_shield_refresh_value & runic_power.deficit > 20 || buff.bone_shield.remains <= 3 )",
|
|
["action"] = "marrowrend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.bonestorm.ticking & ( buff.bone_shield.stack < variable.bone_shield_refresh_value & runic_power.deficit > 20 & ! cooldown.dancing_rune_weapon.up || buff.bone_shield.remains <= 3 )",
|
|
["action"] = "marrowrend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & target.time_to_pct_35 < 5 & target.time_to_die > ( dot.soul_reaper.remains + 5 )",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dancing_rune_weapon.up & ( buff.coagulopathy.remains < 2 * gcd.max || ( runic_power.deficit <= variable.heart_strike_rp_drw & buff.incite_terror.stack >= 3 ) )",
|
|
["action"] = "death_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vampiric_strike.up || buff.infliction_of_sorrow.up & ( ( talent.consumption.enabled & buff.consumption.up ) || ! talent.consumption.enabled ) & dot.blood_plague.ticking & dot.blood_plague.remains > 20",
|
|
["action"] = "heart_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coagulopathy.up",
|
|
["action"] = "dancing_rune_weapon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit <= variable.heart_strike_rp_drw || runic_power >= variable.death_strike_dump_amount",
|
|
["action"] = "death_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges >= 2 || ( full_recharge_time <= gcd.max )",
|
|
["action"] = "blood_boil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.dancing_rune_weapon.remains > 20",
|
|
["action"] = "consumption",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune > 1",
|
|
["action"] = "heart_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.death_and_decay.up & buff.bone_shield.stack > 5 & cooldown.dancing_rune_weapon.remains >= 25",
|
|
["action"] = "bonestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.death_and_decay.up & buff.bone_shield.stack > 5 & runic_power.deficit >= 30 & cooldown.dancing_rune_weapon.remains >= 25",
|
|
["action"] = "tombstone",
|
|
},
|
|
},
|
|
["deathbringer"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "settings.death_strike_pool_amount",
|
|
["var_name"] = "death_strike_dump_amount",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "6",
|
|
["var_name"] = "bone_shield_refresh_value",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( 25 + spell_targets.heart_strike * talent.heartbreaker.enabled * 2 )",
|
|
["var_name"] = "heart_strike_rp_drw",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dancing_rune_weapon.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["action"] = "raise_dead",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.dancing_rune_weapon.ready",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.dancing_rune_weapon.ready",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune <= 1",
|
|
["action"] = "blood_tap",
|
|
},
|
|
{
|
|
["action"] = "use_items",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "death_strike",
|
|
["description"] = "Use Death Strike if your Blood Shield is going to expire.",
|
|
["criteria"] = "settings.save_blood_shield & buff.blood_shield.up & buff.blood_shield.remains <= gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.bone_shield.up",
|
|
["action"] = "deaths_caress",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coagulopathy.remains <= gcd.max || runic_power.deficit < 35",
|
|
["action"] = "death_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.reapers_mark.ticking & dot.reapers_mark.remains < 2 * gcd.max",
|
|
["action"] = "blood_boil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.reapers_mark.ticking & charges_fractional >= 1.5",
|
|
["action"] = "blood_boil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.reapers_mark.ticking & dot.blood_plague.ticking",
|
|
["action"] = "consumption",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reaper_of_souls.up & buff.coagulopathy.remains > 1 * gcd.max",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & ( target.time_to_pct_35 < 5 || buff.reaper_of_souls.up ) & target.time_to_die > ( dot.soul_reaper.remains + 5 )",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( dot.reapers_mark.ticking & ( pet.dancing_rune_weapon.active & dot.blood_plague.stack < 2 ) ) || ! dot.blood_plague.ticking || ( charges_fractional >= 1 & dot.reapers_mark.ticking & buff.coagulopathy.remains > 2 * gcd.max )",
|
|
["action"] = "blood_boil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( dot.reapers_mark.ticking ) & ! death_and_decay.ticking ) || ! buff.death_and_decay.up",
|
|
["action"] = "death_and_decay",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.exterminate.up & ( runic_power.deficit > 20 & buff.coagulopathy.remains > 2 * gcd.max )",
|
|
["action"] = "marrowrend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.exterminate.up ) & ( runic_power.deficit > 20 & buff.coagulopathy.remains > 2 * gcd.max )",
|
|
["action"] = "marrowrend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.reapers_mark.ticking",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.reapers_mark.ticking & dot.blood_plague.ticking",
|
|
["action"] = "reapers_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.death_and_decay.up & buff.bone_shield.stack > 5 & cooldown.dancing_rune_weapon.remains >= 10 & ( dot.reapers_mark.ticking )",
|
|
["action"] = "bonestorm",
|
|
},
|
|
{
|
|
["action"] = "abomination_limb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coagulopathy.remains > 3 * gcd.max & ! buff.dancing_rune_weapon.up",
|
|
["action"] = "blooddrinker",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coagulopathy.remains > 2 * gcd.max",
|
|
["action"] = "dancing_rune_weapon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.death_and_decay.up & buff.bone_shield.stack > 5 & cooldown.dancing_rune_weapon.remains >= 10",
|
|
["action"] = "bonestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.death_and_decay.up & buff.bone_shield.stack > 5 & runic_power.deficit >= 30 & cooldown.dancing_rune_weapon.remains >= 10",
|
|
["action"] = "tombstone",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.bonestorm.ticking & ( buff.bone_shield.stack < variable.bone_shield_refresh_value & runic_power.deficit > 20 || buff.bone_shield.remains <= 3 )",
|
|
["action"] = "marrowrend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges_fractional >= 1.5 || ( full_recharge_time <= gcd.max )",
|
|
["action"] = "blood_boil",
|
|
},
|
|
{
|
|
["action"] = "consumption",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit <= variable.heart_strike_rp_drw || runic_power >= variable.death_strike_dump_amount",
|
|
["action"] = "death_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges_fractional >= 1.5 & buff.hemostasis.stack < 5 & cooldown.reapers_mark.remains > 5",
|
|
["action"] = "blood_boil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune >= 1 || rune.time_to_2 < gcd.max || runic_power.deficit >= variable.heart_strike_rp_drw",
|
|
["action"] = "heart_strike",
|
|
},
|
|
{
|
|
["action"] = "blood_boil",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "mind_freeze",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff ) || trinket.t1.is.mirror_of_fractured_tomorrows",
|
|
["description"] = "Trinkets",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff ) || trinket.t2.is.mirror_of_fractured_tomorrows",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "damage_trinket_priority",
|
|
["criteria"] = "! variable.trinket_2_buffs & trinket.t2.ilvl >= trinket.t1.ilvl || variable.trinket_1_buffs",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fyralath_the_dreamrender",
|
|
["criteria"] = "dot.mark_of_fyralath.ticking",
|
|
["name"] = "fyralath_the_dreamrender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ( variable.damage_trinket_priority = 1 || trinket.t2.cooldown.remains || ! trinket.t2.has_cooldown )",
|
|
["description"] = "Prioritize damage dealing on use trinkets over trinkets that give buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.trinket_2_buffs & ( variable.damage_trinket_priority = 2 || trinket.t1.cooldown.remains || ! trinket.t1.has_cooldown )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["criteria"] = "! equipped.fyralath_the_dreamrender & ( variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( variable.trinket_2_buffs || trinket.t2.cooldown.remains )",
|
|
["slot"] = "main_hand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "variable.trinket_1_buffs & ( buff.dancing_rune_weapon.up || ! talent.dancing_rune_weapon.enabled || cooldown.dancing_rune_weapon.remains > 20 ) & ( trinket.t2.cooldown.remains || ! trinket.t2.has_cooldown || variable.trinket_2_buffs )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "variable.trinket_2_buffs & ( buff.dancing_rune_weapon.up || ! talent.dancing_rune_weapon.enabled || cooldown.dancing_rune_weapon.remains > 20 ) & ( trinket.t1.cooldown.remains || ! trinket.t1.has_cooldown || variable.trinket_1_buffs )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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.",
|
|
["criteria"] = "tanking & incoming_damage_5s >= ibf_damage & ! ( buff.dancing_rune_weapon.up || buff.vampiric_blood.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & incoming_damage_5s >= vb_damage & ! ( buff.dancing_rune_weapon.up || buff.icebound_fortitude.up )",
|
|
["action"] = "vampiric_blood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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.",
|
|
["criteria"] = "tanking & incoming_damage_5s >= rt_damage & ! ( buff.dancing_rune_weapon.up || buff.vampiric_blood.up || buff.icebound_fortitude.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "hero_tree.deathbringer",
|
|
["list_name"] = "deathbringer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! hero_tree.deathbringer",
|
|
["list_name"] = "sanlayn",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241122,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 2: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 2: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 2: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 2: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 2: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 3: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 3: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 3: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 3: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 3: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 3: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 4: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 4: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (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_cooldown' to 'trinket.t2.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.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\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 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 'talent.dancing_rune_weapon' to 'talent.dancing_rune_weapon.enabled' (1x).\nLine 9: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 9: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 9: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 10: Converted 'talent.dancing_rune_weapon' to 'talent.dancing_rune_weapon.enabled' (1x).\nLine 10: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 10: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 10: Converted 'trinket.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\nImported 4 action lists.\n",
|
|
["profile"] = "actions+=/mind_freeze\n# Trinkets\nactions+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_buff.strength||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit)||trinket.1.is.mirror_of_fractured_tomorrows\nactions+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_buff.strength||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit)||trinket.2.is.mirror_of_fractured_tomorrows\nactions+=/variable,name=damage_trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_2_buffs&trinket.2.ilvl>=trinket.1.ilvl||variable.trinket_1_buffs\nactions+=/use_item,name=fyralath_the_dreamrender,if=dot.mark_of_fyralath.ticking\n# Prioritize damage dealing on use trinkets over trinkets that give buffs\nactions+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(variable.damage_trinket_priority=1||trinket.2.cooldown.remains||!trinket.2.has_cooldown)\nactions+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(variable.damage_trinket_priority=2||trinket.1.cooldown.remains||!trinket.1.has_cooldown)\nactions+=/use_item,slot=main_hand,if=!equipped.fyralath_the_dreamrender&(variable.trinket_1_buffs||trinket.1.cooldown.remains)&(variable.trinket_2_buffs||trinket.2.cooldown.remains)\nactions+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&(buff.dancing_rune_weapon.up||!talent.dancing_rune_weapon||cooldown.dancing_rune_weapon.remains>20)&(trinket.2.cooldown.remains||!trinket.2.has_cooldown||variable.trinket_2_buffs)\nactions+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&(buff.dancing_rune_weapon.up||!talent.dancing_rune_weapon||cooldown.dancing_rune_weapon.remains>20)&(trinket.1.cooldown.remains||!trinket.1.has_cooldown||variable.trinket_1_buffs)\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)\nactions+=/vampiric_blood,if=tanking&incoming_damage_5s>=vb_damage&!(buff.dancing_rune_weapon.up||buff.icebound_fortitude.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)\nactions+=/run_action_list,name=deathbringer,strict=1,if=hero_tree.deathbringer\nactions+=/run_action_list,name=sanlayn,strict=1,if=!hero_tree.deathbringer\n\nactions.deathbringer+=/variable,name=death_strike_dump_amount,value=settings.death_strike_pool_amount\nactions.deathbringer+=/variable,name=bone_shield_refresh_value,value=6\nactions.deathbringer+=/variable,name=heart_strike_rp_drw,value=(25+spell_targets.heart_strike*talent.heartbreaker.enabled*2)\nactions.deathbringer+=/potion,if=buff.dancing_rune_weapon.up\nactions.deathbringer+=/raise_dead\nactions.deathbringer+=/blood_fury,if=cooldown.dancing_rune_weapon.ready\nactions.deathbringer+=/berserking,if=cooldown.dancing_rune_weapon.ready\nactions.deathbringer+=/blood_tap,if=rune<=1\nactions.deathbringer+=/use_items\n# Use Death Strike if your Blood Shield is going to expire.\nactions.deathbringer+=/death_strike,if=settings.save_blood_shield&buff.blood_shield.up&buff.blood_shield.remains<=gcd.max\nactions.deathbringer+=/deaths_caress,if=!buff.bone_shield.up\nactions.deathbringer+=/death_strike,if=buff.coagulopathy.remains<=gcd||runic_power.deficit<35\nactions.deathbringer+=/blood_boil,if=dot.reapers_mark.ticking&dot.reapers_mark.remains<2*gcd\nactions.deathbringer+=/blood_boil,if=dot.reapers_mark.ticking&charges_fractional>=1.5\nactions.deathbringer+=/consumption,if=dot.reapers_mark.ticking&dot.blood_plague.ticking\nactions.deathbringer+=/soul_reaper,if=buff.reaper_of_souls.up&buff.coagulopathy.remains>1*gcd\nactions.deathbringer+=/soul_reaper,if=active_enemies=1&(target.time_to_pct_35<5||buff.reaper_of_souls.up)&target.time_to_die>(dot.soul_reaper.remains+5)\nactions.deathbringer+=/blood_boil,if=(dot.reapers_mark.ticking&(pet.dancing_rune_weapon.active&dot.blood_plague.stack<2))||!dot.blood_plague.ticking||(charges_fractional>=1&dot.reapers_mark.ticking&buff.coagulopathy.remains>2*gcd)\nactions.deathbringer+=/death_and_decay,if=((dot.reapers_mark.ticking)&!death_and_decay.ticking)||!buff.death_and_decay.up\nactions.deathbringer+=/marrowrend,if=buff.exterminate.up&(runic_power.deficit>20&buff.coagulopathy.remains>2*gcd)\nactions.deathbringer+=/marrowrend,if=(buff.exterminate.up)&(runic_power.deficit>20&buff.coagulopathy.remains>2*gcd)\nactions.deathbringer+=/abomination_limb,if=dot.reapers_mark.ticking\nactions.deathbringer+=/reapers_mark,if=!dot.reapers_mark.ticking&dot.blood_plague.ticking\nactions.deathbringer+=/bonestorm,if=buff.death_and_decay.up&buff.bone_shield.stack>5&cooldown.dancing_rune_weapon.remains>=10&(dot.reapers_mark.ticking)\nactions.deathbringer+=/abomination_limb\nactions.deathbringer+=/blooddrinker,if=buff.coagulopathy.remains>3*gcd&!buff.dancing_rune_weapon.up\nactions.deathbringer+=/dancing_rune_weapon,if=buff.coagulopathy.remains>2*gcd\nactions.deathbringer+=/bonestorm,if=buff.death_and_decay.up&buff.bone_shield.stack>5&cooldown.dancing_rune_weapon.remains>=10\nactions.deathbringer+=/tombstone,if=buff.death_and_decay.up&buff.bone_shield.stack>5&runic_power.deficit>=30&cooldown.dancing_rune_weapon.remains>=10\nactions.deathbringer+=/marrowrend,if=!dot.bonestorm.ticking&(buff.bone_shield.stack<variable.bone_shield_refresh_value&runic_power.deficit>20||buff.bone_shield.remains<=3)\nactions.deathbringer+=/blood_boil,if=charges_fractional>=1.5||(full_recharge_time<=gcd.max)\nactions.deathbringer+=/consumption\nactions.deathbringer+=/death_strike,if=runic_power.deficit<=variable.heart_strike_rp_drw||runic_power>=variable.death_strike_dump_amount\nactions.deathbringer+=/blood_boil,if=charges_fractional>=1.5&buff.hemostasis.stack<5&cooldown.reapers_mark.remains>5\nactions.deathbringer+=/heart_strike,if=rune>=1||rune.time_to_2<gcd||runic_power.deficit>=variable.heart_strike_rp_drw\nactions.deathbringer+=/blood_boil\n\nactions.sanlayn+=/variable,name=death_strike_dump_amount,value=settings.death_strike_pool_amount\nactions.sanlayn+=/variable,name=death_strike_pre_essence_dump_amount,value=20\nactions.sanlayn+=/variable,name=bone_shield_refresh_value,value=7\nactions.sanlayn+=/variable,name=heart_strike_rp_drw,value=(21+spell_targets.heart_strike*talent.heartbreaker.enabled*2)\nactions.sanlayn+=/death_strike,if=buff.coagulopathy.remains<=gcd\n# Use Death Strike if your Blood Shield is going to expire.\nactions.sanlayn+=/death_strike,if=settings.save_blood_shield&buff.blood_shield.up&buff.blood_shield.remains<=gcd.max\nactions.sanlayn+=/deaths_caress,if=!buff.bone_shield.up\n\nactions.sanlayn+=/blood_boil,if=!dot.blood_plague.ticking||(dot.blood_plague.remains<10&buff.dancing_rune_weapon.up)\nactions.sanlayn+=/potion,if=buff.dancing_rune_weapon.up\nactions.sanlayn+=/consumption,if=pet.dancing_rune_weapon.active&pet.dancing_rune_weapon.remains<=3\nactions.sanlayn+=/bonestorm,if=(buff.death_and_decay.up)&buff.bone_shield.stack>5&cooldown.dancing_rune_weapon.remains>=25\nactions.sanlayn+=/death_strike,if=runic_power>=108\nactions.sanlayn+=/heart_strike,if=buff.dancing_rune_weapon.up&rune>1\nactions.sanlayn+=/death_and_decay,if=!buff.death_and_decay.up\nactions.sanlayn+=/heart_strike,if=buff.infliction_of_sorrow.up&buff.death_and_decay.up\nactions.sanlayn+=/raise_dead\nactions.sanlayn+=/abomination_limb\nactions.sanlayn+=/tombstone,if=(!buff.dancing_rune_weapon.up&buff.death_and_decay.up)&buff.bone_shield.stack>5&runic_power.deficit>=30&cooldown.dancing_rune_weapon.remains>=25&buff.coagulopathy.remains>2*gcd\nactions.sanlayn+=/dancing_rune_weapon,if=buff.coagulopathy.remains>=2*gcd&(!buff.essence_of_the_blood_queen.up||buff.essence_of_the_blood_queen.remains>=3*gcd)&(!buff.dancing_rune_weapon.up||buff.dancing_rune_weapon.remains>=6*gcd)\nactions.sanlayn+=/death_strike,if=!buff.vampiric_strike.up&cooldown.dancing_rune_weapon.remains<=30&runic_power>variable.death_strike_pre_essence_dump_amount&buff.essence_of_the_blood_queen.stack>=3\n\nactions.sanlayn+=/marrowrend,if=!dot.bonestorm.ticking&(buff.bone_shield.stack<variable.bone_shield_refresh_value&runic_power.deficit>20||buff.bone_shield.remains<=3)\nactions.sanlayn+=/marrowrend,if=!dot.bonestorm.ticking&(buff.bone_shield.stack<variable.bone_shield_refresh_value&runic_power.deficit>20&!cooldown.dancing_rune_weapon.up||buff.bone_shield.remains<=3)\nactions.sanlayn+=/soul_reaper,if=active_enemies=1&target.time_to_pct_35<5&target.time_to_die>(dot.soul_reaper.remains+5)\nactions.sanlayn+=/death_strike,if=buff.dancing_rune_weapon.up&(buff.coagulopathy.remains<2*gcd||(runic_power.deficit<=variable.heart_strike_rp_drw&buff.incite_terror.stack>=3))\nactions.sanlayn+=/heart_strike,if=buff.vampiric_strike.up||buff.infliction_of_sorrow.up&((talent.consumption.enabled&buff.consumption.up)||!talent.consumption.enabled)&dot.blood_plague.ticking&dot.blood_plague.remains>20\nactions.sanlayn+=/dancing_rune_weapon,if=buff.coagulopathy.up\nactions.sanlayn+=/death_strike,if=runic_power.deficit<=variable.heart_strike_rp_drw||runic_power>=variable.death_strike_dump_amount\nactions.sanlayn+=/blood_boil,if=charges>=2||(full_recharge_time<=gcd.max)\nactions.sanlayn+=/consumption,if=cooldown.dancing_rune_weapon.remains>20\nactions.sanlayn+=/heart_strike,if=rune>1\nactions.sanlayn+=/bonestorm,if=buff.death_and_decay.up&buff.bone_shield.stack>5&cooldown.dancing_rune_weapon.remains>=25\nactions.sanlayn+=/tombstone,if=buff.death_and_decay.up&buff.bone_shield.stack>5&runic_power.deficit>=30&cooldown.dancing_rune_weapon.remains>=25",
|
|
["author"] = "SimC",
|
|
},
|
|
["Destruction"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241122,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-11-13, 11-22: SimC update\n\n2024-11-01: Shadowburn update\n\n2024-09-24: Another Immolate spam fix\n\n2024-09-11: SimC update\n\n2024-09-05: Fix for Immolate spam\n\n2024-09-03: Fix Wither, trinkets\n\n2024-08-24, 08-30: SimC priority update\n\n2024-07-23: The War Within (sort of)",
|
|
["lists"] = {
|
|
["items"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "spymasters_web",
|
|
["criteria"] = "pet.infernal.remains >= 10 & pet.infernal.remains <= 20 & buff.spymasters_report.stack >= 38 & ( fight_remains > 240 || fight_remains <= 140 ) || boss & fight_remains <= 30",
|
|
["name"] = "spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.infernal_active || ! talent.summon_infernal.enabled || variable.trinket_1_will_lose_cast ) & ( variable.trinket_priority = 1 || variable.trinket_2_exclude || ! trinket.t2.has_cooldown || ( trinket.t2.cooldown.remains || variable.trinket_priority = 2 & cooldown.summon_infernal.remains > 20 & ! variable.infernal_active & trinket.t2.cooldown.remains < cooldown.summon_infernal.remains ) ) & variable.trinket_1_buffs & ! variable.trinket_1_manual || ( variable.trinket_1_buff_duration + 1 >= fight_remains )",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.infernal_active || ! talent.summon_infernal.enabled || variable.trinket_2_will_lose_cast ) & ( variable.trinket_priority = 2 || variable.trinket_1_exclude || ! trinket.t1.has_cooldown || ( trinket.t1.cooldown.remains || variable.trinket_priority = 1 & cooldown.summon_infernal.remains > 20 & ! variable.infernal_active & trinket.t1.cooldown.remains < cooldown.summon_infernal.remains ) ) & variable.trinket_2_buffs & ! variable.trinket_2_manual || ( variable.trinket_2_buff_duration + 1 >= fight_remains )",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || talent.summon_infernal.enabled & cooldown.summon_infernal.remains_expected > 20 & ! prev_gcd.1.summon_infernal || ! talent.summon_infernal.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) || talent.summon_infernal.enabled & cooldown.summon_infernal.remains_expected > 20 & ! prev_gcd.1.summon_infernal || ! talent.summon_infernal.enabled )",
|
|
},
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["slot"] = "main_hand",
|
|
},
|
|
},
|
|
["variables"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["value"] = "dot.immolate.remains <? dot.wither.remains",
|
|
["var_name"] = "havoc_immo_time",
|
|
["criteria"] = "havoc_active",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( soul_shard >= 3 || ( talent.secrets_of_the_coven.enabled & buff.infernal_bolt.up || buff.decimation.up ) & soul_shard >= 3 )",
|
|
["var_name"] = "pooling_condition",
|
|
["default"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.pooling_condition || pet.infernal.active & soul_shard >= 3",
|
|
["var_name"] = "pooling_condition_cb",
|
|
["default"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "pet.infernal.active || ( cooldown.summon_infernal.duration - cooldown.summon_infernal.remains ) < 20",
|
|
["var_name"] = "infernal_active",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( ( floor ( ( fight_remains / trinket.t1.cooldown.duration ) + 1 ) != floor ( ( fight_remains + ( cooldown.summon_infernal.duration - cooldown.summon_infernal.remains ) ) / cooldown.summon_infernal.duration ) ) & ( floor ( ( fight_remains / trinket.t1.cooldown.duration ) + 1 ) ) != ( floor ( ( ( fight_remains - cooldown.summon_infernal.remains ) / trinket.t1.cooldown.duration ) + 1 ) ) || ( ( floor ( ( fight_remains / trinket.t1.cooldown.duration ) + 1 ) = floor ( ( fight_remains + ( cooldown.summon_infernal.duration - cooldown.summon_infernal.remains ) ) / cooldown.summon_infernal.duration ) ) & ( ( ( fight_remains - cooldown.summon_infernal.remains % trinket.t1.cooldown.duration ) - cooldown.summon_infernal.remains - variable.trinket_1_buff_duration ) > 0 ) ) ) & cooldown.summon_infernal.remains > 20",
|
|
["var_name"] = "trinket_1_will_lose_cast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( ( floor ( ( fight_remains / trinket.t2.cooldown.duration ) + 1 ) != floor ( ( fight_remains + ( cooldown.summon_infernal.duration - cooldown.summon_infernal.remains ) ) / cooldown.summon_infernal.duration ) ) & ( floor ( ( fight_remains / trinket.t2.cooldown.duration ) + 1 ) ) != ( floor ( ( ( fight_remains - cooldown.summon_infernal.remains ) / trinket.t2.cooldown.duration ) + 1 ) ) || ( ( floor ( ( fight_remains / trinket.t2.cooldown.duration ) + 1 ) = floor ( ( fight_remains + ( cooldown.summon_infernal.duration - cooldown.summon_infernal.remains ) ) / cooldown.summon_infernal.duration ) ) & ( ( ( fight_remains - cooldown.summon_infernal.remains % trinket.t2.cooldown.duration ) - cooldown.summon_infernal.remains - variable.trinket_2_buff_duration ) > 0 ) ) ) & cooldown.summon_infernal.remains > 20",
|
|
["var_name"] = "trinket_2_will_lose_cast",
|
|
},
|
|
},
|
|
["havoc"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.backdraft.enabled & buff.backdraft.down & soul_shard >= 1 & soul_shard <= 4",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cast_time < havoc_remains & soul_shard < 2.5",
|
|
["action"] = "soul_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > 15 || ( talent.wither.enabled & dot.wither.remains < action.wither.cast_time * 0.3 )",
|
|
["action"] = "cataclysm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ( dot.immolate.refreshable & variable.havoc_immo_time < 5.4 ) & target.time_to_die > 5 ) || ( ( dot.immolate.remains < 2 & dot.immolate.remains < havoc_remains ) || ! dot.immolate.ticking || variable.havoc_immo_time < 2 ) & target.time_to_die > 11 ) & soul_shard < 4.5",
|
|
["action"] = "immolate",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ( dot.wither.refreshable & variable.havoc_immo_time < 5.4 ) & target.time_to_die > 5 ) || ( ( dot.wither.remains < 2 & dot.wither.remains < havoc_remains ) || ! dot.wither.ticking || variable.havoc_immo_time < 2 ) & target.time_to_die > 11 ) & soul_shard < 4.5",
|
|
["action"] = "wither",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled )",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "havoc_remains <= gcd.max * 3",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cast_time < havoc_remains & ( ( ! talent.improved_chaos_bolt.enabled & active_enemies <= 2 ) || ( talent.improved_chaos_bolt.enabled & ( ( talent.wither.enabled & talent.inferno.enabled & active_enemies <= 2 ) || ( ( ( talent.wither.enabled & talent.cataclysm.enabled ) || ( ! talent.wither.enabled & talent.inferno.enabled ) ) & active_enemies <= 3 ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 4 ) ) ) )",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 3",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard < 4.5",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.backdraft.enabled",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard < 4.7 & ( charges > 2 || boss & fight_remains < cooldown.dimensional_rift.duration )",
|
|
["action"] = "dimensional_rift",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cast_time < havoc_remains",
|
|
["action"] = "incinerate",
|
|
},
|
|
},
|
|
["cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "havoc_active & havoc_remains > gcd.max",
|
|
["list_name"] = "havoc",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.havoc.remains <= 5 || talent.mayhem.enabled",
|
|
["var_name"] = "pool_soul_shards",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled )",
|
|
["action"] = "malevolence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled ) & target.time_to_die > 8",
|
|
["action"] = "havoc",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "demonic_art",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.decimation.react & ( soul_shard <= 4 || buff.decimation.remains <= gcd.max * 2 ) & debuff.conflagrate.remains >= execute_time & cooldown.havoc.remains",
|
|
["action"] = "soul_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.internal_combustion.enabled & ( ( ( dot.wither.remains - 5 * action.chaos_bolt.in_flight ) < dot.wither.duration * 0.4 ) || dot.wither.remains < 3 || ( dot.wither.remains - action.chaos_bolt.execute_time ) < 5 & action.chaos_bolt.usable ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + action.soul_fire.cast_time > ( dot.wither.remains - 5 ) ) & target.time_to_die > 8 & ! action.soul_fire.in_flight_to_target",
|
|
["action"] = "wither",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.internal_combustion.enabled & ( ( ( dot.wither.remains - 5 * ( action.chaos_bolt.in_flight ) ) < dot.wither.duration * 0.3 ) || dot.wither.remains < 3 ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + action.soul_fire.cast_time > ( dot.wither.remains ) ) & target.time_to_die > 8 & ! action.soul_fire.in_flight_to_target",
|
|
["action"] = "wither",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.roaring_blaze.enabled & full_recharge_time <= gcd.max * 2 ) || recharge_time <= 8 & ( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) < gcd.max ) & ! variable.pool_soul_shards",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled ) || boss & fight_remains <= 8",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ritual_of_ruin.up",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_infernal.remains >= 90 & talent.rain_of_chaos.enabled",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_infernal.remains >= 90 & talent.rain_of_chaos.enabled",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_infernal.remains >= 90 & talent.rain_of_chaos.enabled",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( debuff.eradication.remains >= execute_time || ! talent.eradication.enabled || ! talent.shadowburn.enabled )",
|
|
["action"] = "ruination",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > 15",
|
|
["action"] = "cataclysm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.raging_demonfire.enabled & ( dot.immolate.remains + dot.wither.remains - 5 * ( action.chaos_bolt.in_flight & talent.internal_combustion.enabled ) ) > cast_time",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard <= 3.5 & ( debuff.conflagrate.remains > cast_time + travel_time || ! talent.roaring_blaze.enabled & buff.backdraft.up ) & ! variable.pool_soul_shards",
|
|
["action"] = "soul_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( dot.immolate.refreshable & ( dot.immolate.remains < cooldown.havoc.remains || ! dot.immolate.ticking ) ) & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > remains ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + ( ! talent.mayhem.enabled * action.soul_fire.cast_time ) > dot.immolate.remains ) & target.time_to_die > 15",
|
|
["action"] = "immolate",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "summon_infernal",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.diabolic_ritual.enabled & ( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains - 2 - ! variable.disable_cb_2t * action.chaos_bolt.cast_time - variable.disable_cb_2t * gcd.max ) <= 0 )",
|
|
["action"] = "incinerate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.pooling_condition & ! talent.wither.enabled & buff.rain_of_chaos.up",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.allow_rof_2t_spender >= 1 & ! talent.wither.enabled & talent.pyrogenics.enabled & debuff.pyrogenics.remains <= gcd.max & ( ! talent.rain_of_chaos.enabled || cooldown.summon_infernal.remains >= gcd.max * 3 ) & variable.pooling_condition",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.do_rof_2t & variable.pooling_condition & ( cooldown.summon_infernal.remains >= gcd.max * 3 || ! talent.rain_of_chaos.enabled )",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard <= 4 & talent.mayhem.enabled",
|
|
["action"] = "soul_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.disable_cb_2t & variable.pooling_condition_cb & ( cooldown.summon_infernal.remains >= gcd.max * 3 || soul_shard > 4 || ! talent.rain_of_chaos.enabled )",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["action"] = "channel_demonfire",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "dimensional_rift",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "infernal_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time_to_max_charges < 2 * gcd.max || boss & fight_remains < gcd.max * charges",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["action"] = "incinerate",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_infernal.remains >= 55 & soul_shard < 4.7 & ( active_enemies <= 3 + active_dot.wither || time > 30 )",
|
|
["action"] = "malevolence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "demonic_art",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["sec"] = "( ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) )",
|
|
["action"] = "wait",
|
|
["criteria"] = "( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) < gcd.max * 0.25 ) & soul_shard > 2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) <= action.incinerate.cast_time & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) > gcd.max * 0.25 )",
|
|
["action"] = "incinerate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "havoc_active & havoc_remains > gcd.max & active_enemies < 5 & ( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled )",
|
|
["list_name"] = "havoc",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard < 4.7 & ( charges > 2 || boss & fight_remains < cooldown.dimensional_rift.duration )",
|
|
["action"] = "dimensional_rift",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.inferno.enabled & soul_shard >= ( 4.5 - 0.1 * ( active_dot.immolate + active_dot.wither ) ) || soul_shard >= ( 3.5 - 0.1 * ( active_dot.immolate + active_dot.wither ) ) || buff.ritual_of_ruin.up",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.wither.refreshable & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.wither.remains ) & ( ! talent.raging_demonfire.enabled || cooldown.channel_demonfire.remains > remains || time < 5 ) & ( active_dot.wither <= 4 || time > 15 ) & target.time_to_die > 18",
|
|
["action"] = "wither",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time & talent.raging_demonfire.enabled",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( buff.malevolence.up & ( ( talent.cataclysm.enabled & talent.raging_demonfire.enabled & active_enemies <= 10 & fight_remains >= 60 ) || ( talent.cataclysm.enabled & ! talent.raging_demonfire.enabled & active_enemies <= 8 & fight_remains >= 60 ) || active_enemies <= 5 ) ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 5 ) || active_enemies <= 3 ) & ( ( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled ) || boss & fight_remains <= 8 )",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( buff.malevolence.up & ( ( talent.cataclysm.enabled & talent.raging_demonfire.enabled & active_enemies <= 10 & fight_remains >= 60 ) || ( talent.cataclysm.enabled & ! talent.raging_demonfire.enabled & active_enemies <= 8 & fight_remains >= 60 ) || active_enemies <= 5 ) ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 5 ) || active_enemies <= 3 ) & ( ( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled ) & time_to_die < 5 || boss & fight_remains <= 8 )",
|
|
["action"] = "shadowburn",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "ruination",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.infernal.active & talent.rain_of_chaos.enabled",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.decimation.up ) & ! talent.raging_demonfire.enabled & havoc_active",
|
|
["action"] = "soul_fire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.decimation.up & active_dot.immolate <= 4",
|
|
["action"] = "soul_fire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard < 2.5",
|
|
["action"] = "infernal_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard > 3.5 - ( 0.1 * active_enemies ) & ! talent.rain_of_fire.enabled",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > 15 || talent.wither.enabled",
|
|
["action"] = "cataclysm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled || ( talent.inferno.enabled & active_enemies > 4 ) ) & target.time_to_die > 8 & ( cooldown.malevolence.remains > 15 || ! talent.malevolence.enabled ) || time < 5",
|
|
["action"] = "havoc",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.wither.refreshable & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.wither.remains ) & ( ! talent.raging_demonfire.enabled || cooldown.channel_demonfire.remains > remains || time < 5 ) & active_dot.wither <= cycle_enemies & target.time_to_die > 18",
|
|
["action"] = "wither",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.refreshable & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.immolate.remains ) & ( ! talent.raging_demonfire.enabled || cooldown.channel_demonfire.remains > remains || time < 5 ) & ( active_dot.immolate <= 6 & ! ( talent.diabolic_ritual.enabled & talent.inferno.enabled ) || active_dot.immolate <= 4 ) & target.time_to_die > 18",
|
|
["action"] = "immolate",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "ogcd",
|
|
},
|
|
{
|
|
["action"] = "summon_infernal",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.pyrogenics.down & active_enemies <= 4 & ! talent.diabolic_ritual.enabled",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.refreshable & ( ( ( ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.immolate.remains ) ) || cycle_enemies > active_dot.immolate ) & target.time_to_die > 10 & ! havoc_active & ! ( talent.diabolic_ritual.enabled & talent.inferno.enabled ) )",
|
|
["action"] = "immolate",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.refreshable & ( ( variable.havoc_immo_time < 5.4 || ( dot.immolate.remains < 2 & dot.immolate.remains < havoc_remains ) || ! dot.immolate.ticking || ( variable.havoc_immo_time < 2 ) * havoc_active ) & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.immolate.remains ) & target.time_to_die > 11 & ! ( talent.diabolic_ritual.enabled & talent.inferno.enabled ) )",
|
|
["action"] = "immolate",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "dimensional_rift",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.decimation.up",
|
|
["action"] = "soul_fire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fire_and_brimstone.enabled & buff.backdraft.up",
|
|
["action"] = "incinerate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.backdraft.stack < 2 || ! talent.backdraft.enabled",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["action"] = "incinerate",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time > 0 & ! pet.alive",
|
|
["action"] = "fel_domination",
|
|
},
|
|
{
|
|
["action"] = "summon_pet",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "toggle.funnel",
|
|
["var_name"] = "cleave_apl",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff",
|
|
["var_name"] = "trinket_1_buffs",
|
|
["description"] = "Automatic Logic for Buff Trinkets in Trinket Slot 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff",
|
|
["var_name"] = "trinket_2_buffs",
|
|
["description"] = "Automatic Logic for Buff Trinkets in Trinket Slot 2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_1_sync",
|
|
["value"] = "1",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % cooldown.summon_infernal.duration = 0 || cooldown.summon_infernal.duration % trinket.t1.cooldown.duration = 0 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["value"] = "1",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "variable.trinket_2_buffs & ( trinket.t2.cooldown.duration % cooldown.summon_infernal.duration = 0 || cooldown.summon_infernal.duration % trinket.t2.cooldown.duration = 0 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.spymasters_web",
|
|
["var_name"] = "trinket_1_manual",
|
|
["description"] = "Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.spymasters_web",
|
|
["var_name"] = "trinket_2_manual",
|
|
["description"] = "Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.whispering_incarnate_icon",
|
|
["var_name"] = "trinket_1_exclude",
|
|
["description"] = "Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.whispering_incarnate_icon",
|
|
["var_name"] = "trinket_2_exclude",
|
|
["description"] = "For On Use Trinkets on slot 2 with on use effects you dont want to use in combat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.buff_duration",
|
|
["var_name"] = "trinket_1_buff_duration",
|
|
["description"] = "Sets the duration of the trinket in the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.buff_duration",
|
|
["var_name"] = "trinket_2_buff_duration",
|
|
["description"] = "Sets the duration of the trinket in the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Automatic Logic in case both Trinkets are on use buffs",
|
|
["var_name"] = "trinket_priority",
|
|
["value"] = "2",
|
|
["action"] = "variable",
|
|
["value_else"] = "1",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / variable.trinket_2_buff_duration ) * ( 1 + 0.5 * trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / variable.trinket_1_buff_duration ) * ( 1 + 0.5 * trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "allow_rof_2t_spender",
|
|
["default"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.allow_rof_2t_spender > 1.99 & ! ( talent.cataclysm.enabled & talent.improved_chaos_bolt.enabled )",
|
|
["var_name"] = "do_rof_2t",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.do_rof_2t || variable.allow_rof_2t_spender > 0.01 & variable.allow_rof_2t_spender < 0.99",
|
|
["var_name"] = "disable_cb_2t",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.grimoire_of_sacrifice.enabled",
|
|
["action"] = "grimoire_of_sacrifice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 2",
|
|
["action"] = "cataclysm",
|
|
},
|
|
{
|
|
["action"] = "soul_fire",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "incinerate",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "spell_lock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "variables",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "ogcd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "( active_enemies >= 3 ) & ! variable.cleave_apl",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "This entry is manually translated and will differ from SIMC, but maintains the same functionality.",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies != 1",
|
|
["list_name"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_infernal.remains >= 55",
|
|
["action"] = "malevolence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["sec"] = "( ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) )",
|
|
["action"] = "wait",
|
|
["criteria"] = "( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) < gcd.max * 0.25 ) & soul_shard > 2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "demonic_art",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.decimation.react & ( soul_shard <= 4 || buff.decimation.remains <= gcd.max * 2 ) & debuff.conflagrate.remains >= execute_time",
|
|
["action"] = "soul_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.internal_combustion.enabled & ( ( ( dot.wither.remains - 5 * action.chaos_bolt.in_flight ) < dot.wither.duration * 0.4 ) || dot.wither.remains < 3 || ( dot.wither.remains - action.chaos_bolt.execute_time ) < 5 & action.chaos_bolt.usable ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + action.soul_fire.cast_time > ( dot.wither.remains - 5 ) ) & target.time_to_die > 8 & ! action.soul_fire.in_flight_to_target",
|
|
["action"] = "wither",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.roaring_blaze.enabled & debuff.conflagrate.remains < 1.5 || full_recharge_time <= gcd.max * 2 || recharge_time <= 8 & ( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) < gcd.max ) & soul_shard >= 1.5",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled ) & ! demonic_art || boss & fight_remains <= 8",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ritual_of_ruin.up",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.summon_infernal.remains >= 90 & talent.rain_of_chaos.enabled ) || buff.malevolence.up",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.summon_infernal.remains >= 90 & talent.rain_of_chaos.enabled ) || buff.malevolence.up",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( debuff.eradication.remains >= execute_time || ! talent.eradication.enabled || ! talent.shadowburn.enabled )",
|
|
["action"] = "ruination",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > 15 & ( dot.immolate.refreshable & ! talent.wither.enabled || talent.wither.enabled & dot.wither.refreshable )",
|
|
["action"] = "cataclysm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.raging_demonfire.enabled & ( dot.immolate.remains + dot.wither.remains - 5 * ( action.chaos_bolt.in_flight & talent.internal_combustion.enabled ) ) > cast_time",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.internal_combustion.enabled & ( ( ( dot.wither.remains - 5 * ( action.chaos_bolt.in_flight ) ) < dot.wither.duration * 0.3 ) || dot.wither.remains < 3 ) & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.wither.remains ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + action.soul_fire.cast_time > ( dot.wither.remains ) ) & target.time_to_die > 8 & ! action.soul_fire.in_flight_to_target",
|
|
["action"] = "wither",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ( dot.immolate.remains - 5 * ( action.chaos_bolt.in_flight & talent.internal_combustion.enabled ) ) < dot.immolate.duration * 0.3 ) || dot.immolate.remains < 3 || ( dot.immolate.remains - action.chaos_bolt.execute_time ) < 5 & talent.internal_combustion.enabled & action.chaos_bolt.usable ) & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.immolate.remains ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + action.soul_fire.cast_time > ( dot.immolate.remains - 5 * talent.internal_combustion.enabled ) ) & target.time_to_die > 8 & ! action.soul_fire.in_flight_to_target",
|
|
["action"] = "immolate",
|
|
},
|
|
{
|
|
["action"] = "summon_infernal",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.diabolic_ritual.enabled & ( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains - 2 - ! variable.disable_cb_2t * action.chaos_bolt.cast_time - variable.disable_cb_2t * gcd.max ) <= 0 )",
|
|
["action"] = "incinerate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.pooling_condition_cb & ( cooldown.summon_infernal.remains >= gcd.max * 3 || soul_shard > 4 || ! talent.rain_of_chaos.enabled )",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["action"] = "channel_demonfire",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "dimensional_rift",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "infernal_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time_to_max_charges < 2 * gcd.max || boss & fight_remains < gcd.max * charges",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.backdraft.up",
|
|
["action"] = "soul_fire",
|
|
},
|
|
{
|
|
["action"] = "incinerate",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["ogcd"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.infernal_active || ! talent.summon_infernal.enabled",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.infernal_active || ! talent.summon_infernal.enabled || ( boss & fight_remains < ( cooldown.summon_infernal.remains_expected + cooldown.berserking.duration ) & ( fight_remains > cooldown.berserking.duration ) ) || boss & fight_remains < cooldown.summon_infernal.remains_expected",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.infernal_active || ! talent.summon_infernal.enabled || ( boss & fight_remains < cooldown.summon_infernal.remains_expected + 10 + cooldown.blood_fury.duration & fight_remains > cooldown.blood_fury.duration ) || boss & fight_remains < cooldown.summon_infernal.remains",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.infernal_active || ! talent.summon_infernal.enabled || ( boss & fight_remains < cooldown.summon_infernal.remains_expected + 10 + cooldown.fireblood.duration & fight_remains > cooldown.fireblood.duration ) || boss & fight_remains < cooldown.summon_infernal.remains_expected",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.infernal_active || ! talent.summon_infernal.enabled || ( boss & fight_remains < ( cooldown.summon_infernal.remains_expected + cooldown.berserking.duration ) & ( fight_remains > cooldown.berserking.duration ) ) || boss & fight_remains < cooldown.summon_infernal.remains_expected",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241122,
|
|
["warnings"] = "The import for 'items' required some automated changes.\nLine 2: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 3: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\n\nThe import for 'variables' required some automated changes.\nLine 2: Converted 'talent.secrets_of_the_coven' to 'talent.secrets_of_the_coven.enabled' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted operations in '((floor((fight_remains%trinket.t1.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(floor((fight_remains%trinket.t1.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)%trinket.t1.cooldown.duration)+1))||((floor((fight_remains%trinket.t1.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%%trinket.t1.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_1_buff_duration)>0)))&cooldown.summon_infernal.remains>20' to '((floor((fight_remains/trinket.t1.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(floor((fight_remains/trinket.t1.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)/trinket.t1.cooldown.duration)+1))||((floor((fight_remains/trinket.t1.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%trinket.t1.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_1_buff_duration)>0)))&cooldown.summon_infernal.remains>20'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted operations in '((floor((fight_remains%trinket.t2.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(floor((fight_remains%trinket.t2.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)%trinket.t2.cooldown.duration)+1))||((floor((fight_remains%trinket.t2.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%%trinket.t2.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_2_buff_duration)>0)))&cooldown.summon_infernal.remains>20' to '((floor((fight_remains/trinket.t2.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(floor((fight_remains/trinket.t2.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)/trinket.t2.cooldown.duration)+1))||((floor((fight_remains/trinket.t2.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%trinket.t2.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_2_buff_duration)>0)))&cooldown.summon_infernal.remains>20'.\n\nThe import for 'default' required some automated changes.\nLine 11: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 11: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 12: Converted 'talent.roaring_blaze' to 'talent.roaring_blaze.enabled' (1x).\nLine 13: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 13: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 13: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 13: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 15: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 16: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 17: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 17: Converted 'talent.shadowburn' to 'talent.shadowburn.enabled' (1x).\nLine 18: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 18: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 19: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 19: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 20: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 20: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 20: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 21: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 21: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 21: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 21: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 21: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 23: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 24: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%trinket.t1.cooldown.duration=0)'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%trinket.t2.cooldown.duration=0)'.\nLine 8: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 9: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 10: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 11: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 14: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 16: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 16: Converted 'talent.improved_chaos_bolt' to 'talent.improved_chaos_bolt.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 7: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 8: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 9: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 10: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 10: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 10: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 10: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 10: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 10: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 10: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 10: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 10: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 10: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 11: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 11: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 11: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 11: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 11: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 11: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 11: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 13: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 14: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 17: Converted 'talent.rain_of_fire' to 'talent.rain_of_fire.enabled' (1x).\nLine 18: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 19: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 19: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 19: Converted 'talent.malevolence' to 'talent.malevolence.enabled' (1x).\nLine 20: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 21: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 21: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 21: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 24: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 26: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 26: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 27: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 27: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 31: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\n\nThe import for 'cleave' required some automated changes.\nLine 2: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 3: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 7: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 7: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 8: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 8: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 10: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 10: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 10: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 10: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 12: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 13: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 14: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 15: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 15: Converted 'talent.shadowburn' to 'talent.shadowburn.enabled' (1x).\nLine 17: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 17: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 18: Converted 'talent.roaring_blaze' to 'talent.roaring_blaze.enabled' (1x).\nLine 19: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 19: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 19: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 21: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 22: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 23: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 23: Converted 'talent.pyrogenics' to 'talent.pyrogenics.enabled' (1x).\nLine 23: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 24: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 25: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 26: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\n\nThe import for 'havoc' required some automated changes.\nLine 1: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\nLine 3: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 6: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 6: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 6: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 6: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 8: Converted 'talent.improved_chaos_bolt' to 'talent.improved_chaos_bolt.enabled' (1x).\nLine 8: Converted 'talent.improved_chaos_bolt' to 'talent.improved_chaos_bolt.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\n\nThe import for 'ogcd' required some automated changes.\nLine 1: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 2: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 3: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\n\nImported 8 action lists.\n",
|
|
["spec"] = 267,
|
|
["profile"] = "actions.precombat=fel_domination,if=time>0&!pet.alive\nactions.precombat+=/summon_pet\nactions.precombat+=/variable,name=cleave_apl,value=toggle.funnel\n# Automatic Logic for Buff Trinkets in Trinket Slot 1\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff\n# Automatic Logic for Buff Trinkets in Trinket Slot 2\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%%trinket.2.cooldown.duration=0)\n# Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.spymasters_web\n# Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.spymasters_web\n# Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.whispering_incarnate_icon\n# For On Use Trinkets on slot 2 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.whispering_incarnate_icon\n# Sets the duration of the trinket in the automatic logic\nactions.precombat+=/variable,name=trinket_1_buff_duration,value=trinket.1.proc.any_dps.duration\n# Sets the duration of the trinket in the automatic logic\nactions.precombat+=/variable,name=trinket_2_buff_duration,value=trinket.2.proc.any_dps.duration\n# Automatic Logic in case both Trinkets are on use buffs\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%variable.trinket_2_buff_duration)*(1+0.5*trinket.2.has_buff.intellect)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.1.has_buff.intellect)*(variable.trinket_1_sync))\nactions.precombat+=/variable,name=allow_rof_2t_spender,default=2,op=reset\nactions.precombat+=/variable,name=do_rof_2t,value=variable.allow_rof_2t_spender>1.99&!(talent.cataclysm&talent.improved_chaos_bolt),op=set\nactions.precombat+=/variable,name=disable_cb_2t,value=variable.do_rof_2t||variable.allow_rof_2t_spender>0.01&variable.allow_rof_2t_spender<0.99\nactions.precombat+=/grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice.enabled\nactions.precombat+=/cataclysm,if=active_enemies>=2\nactions.precombat+=/soul_fire\nactions.precombat+=/incinerate\n\nactions+=/spell_lock\nactions+=/call_action_list,name=variables\nactions+=/call_action_list,name=ogcd\nactions+=/call_action_list,name=items\nactions+=/call_action_list,name=aoe,strict=1,if=(active_enemies>=3)&!variable.cleave_apl\n# This entry is manually translated and will differ from SIMC, but maintains the same functionality.\nactions+=/call_action_list,name=cleave,strict=1,if=active_enemies!=1\nactions+=/malevolence,if=cooldown.summon_infernal.remains>=55\nactions+=/wait,sec=((buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)),if=(diabolic_ritual&(buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)<gcd.max*0.25)&soul_shard>2\nactions+=/chaos_bolt,if=demonic_art\nactions+=/soul_fire,if=buff.decimation.react&(soul_shard<=4||buff.decimation.remains<=gcd.max*2)&debuff.conflagrate.remains>=execute_time\nactions+=/wither,if=talent.internal_combustion&(((dot.wither.remains-5*action.chaos_bolt.in_flight)<dot.wither.duration*0.4)||dot.wither.remains<3||(dot.wither.remains-action.chaos_bolt.execute_time)<5&action.chaos_bolt.usable)&(!talent.soul_fire||cooldown.soul_fire.remains+action.soul_fire.cast_time>(dot.wither.remains-5))&target.time_to_die>8&!action.soul_fire.in_flight_to_target\nactions+=/conflagrate,if=talent.roaring_blaze&debuff.conflagrate.remains<1.5||full_recharge_time<=gcd.max*2||recharge_time<=8&(diabolic_ritual&(buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)<gcd.max)&soul_shard>=1.5\nactions+=/shadowburn,if=(full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)&!demonic_art||boss&fight_remains<=8\nactions+=/chaos_bolt,if=buff.ritual_of_ruin.up\nactions+=/shadowburn,if=(cooldown.summon_infernal.remains>=90&talent.rain_of_chaos)||buff.malevolence.up\nactions+=/chaos_bolt,if=(cooldown.summon_infernal.remains>=90&talent.rain_of_chaos)||buff.malevolence.up\nactions+=/ruination,if=(debuff.eradication.remains>=execute_time||!talent.eradication||!talent.shadowburn)\nactions+=/cataclysm,if=raid_event.adds.in>15&(dot.immolate.refreshable&!talent.wither||talent.wither&dot.wither.refreshable)\nactions+=/channel_demonfire,if=talent.raging_demonfire&(dot.immolate.remains+dot.wither.remains-5*(action.chaos_bolt.in_flight&talent.internal_combustion))>cast_time\nactions+=/wither,if=!talent.internal_combustion&(((dot.wither.remains-5*(action.chaos_bolt.in_flight))<dot.wither.duration*0.3)||dot.wither.remains<3)&(!talent.cataclysm||cooldown.cataclysm.remains>dot.wither.remains)&(!talent.soul_fire||cooldown.soul_fire.remains+action.soul_fire.cast_time>(dot.wither.remains))&target.time_to_die>8&!action.soul_fire.in_flight_to_target\nactions+=/immolate,if=(((dot.immolate.remains-5*(action.chaos_bolt.in_flight&talent.internal_combustion))<dot.immolate.duration*0.3)||dot.immolate.remains<3||(dot.immolate.remains-action.chaos_bolt.execute_time)<5&talent.internal_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&!action.soul_fire.in_flight_to_target\nactions+=/summon_infernal\nactions+=/incinerate,if=talent.diabolic_ritual&(diabolic_ritual&(buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains-2-!variable.disable_cb_2t*action.chaos_bolt.cast_time-variable.disable_cb_2t*gcd.max)<=0)\nactions+=/chaos_bolt,if=variable.pooling_condition_cb&(cooldown.summon_infernal.remains>=gcd.max*3||soul_shard>4||!talent.rain_of_chaos)\nactions+=/channel_demonfire\nactions+=/dimensional_rift\nactions+=/infernal_bolt\nactions+=/conflagrate,if=time_to_max_charges<2*gcd.max||boss&fight_remains<gcd.max*charges\nactions+=/soul_fire,if=buff.backdraft.up\nactions+=/incinerate\n\nactions.aoe+=/malevolence,if=cooldown.summon_infernal.remains>=55&soul_shard<4.7&(active_enemies<=3+active_dot.wither||time>30)\nactions.aoe+=/rain_of_fire,if=demonic_art\nactions.aoe+=/wait,sec=((buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)),if=(diabolic_ritual&(buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)<gcd.max*0.25)&soul_shard>2\nactions.aoe+=/incinerate,if=(diabolic_ritual&(buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)<=action.incinerate.cast_time&(buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)>gcd.max*0.25)\nactions.aoe+=/call_action_list,name=havoc,strict=1,if=havoc_active&havoc_remains>gcd.max&active_enemies<5&(!cooldown.summon_infernal.up||!talent.summon_infernal)\nactions.aoe+=/dimensional_rift,if=soul_shard<4.7&(charges>2||boss&fight_remains<cooldown.dimensional_rift.duration)\nactions.aoe+=/rain_of_fire,if=!talent.inferno&soul_shard>=(4.5-0.1*(active_dot.immolate+active_dot.wither))||soul_shard>=(3.5-0.1*(active_dot.immolate+active_dot.wither))||buff.ritual_of_ruin.up\nactions.aoe+=/wither,cycle_targets=1,if=dot.wither.refreshable&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.wither.remains)&(!talent.raging_demonfire||cooldown.channel_demonfire.remains>remains||time<5)&(active_dot.wither<=4||time>15)&target.time_to_die>18\nactions.aoe+=/channel_demonfire,if=dot.immolate.remains+dot.wither.remains>cast_time&talent.raging_demonfire\nactions.aoe+=/shadowburn,if=((buff.malevolence.up&((talent.cataclysm&talent.raging_demonfire&active_enemies<=10&fight_remains>=60)||(talent.cataclysm&!talent.raging_demonfire&active_enemies<=8&fight_remains>=60)||active_enemies<=5))||(!talent.wither&talent.cataclysm&active_enemies<=5)||active_enemies<=3)&((cooldown.shadowburn.full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)||boss&fight_remains<=8)\nactions.aoe+=/shadowburn,cycle_targets=1,if=((buff.malevolence.up&((talent.cataclysm&talent.raging_demonfire&active_enemies<=10&fight_remains>=60)||(talent.cataclysm&!talent.raging_demonfire&active_enemies<=8&fight_remains>=60)||active_enemies<=5))||(!talent.wither&talent.cataclysm&active_enemies<=5)||active_enemies<=3)&((cooldown.shadowburn.full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)&time_to_die<5||boss&fight_remains<=8)\nactions.aoe+=/ruination\nactions.aoe+=/rain_of_fire,if=pet.infernal.active&talent.rain_of_chaos\nactions.aoe+=/soul_fire,cycle_targets=1,if=(buff.decimation.up)&!talent.raging_demonfire&havoc_active\nactions.aoe+=/soul_fire,cycle_targets=1,if=buff.decimation.up&active_dot.immolate<=4\nactions.aoe+=/infernal_bolt,if=soul_shard<2.5\nactions.aoe+=/chaos_bolt,if=soul_shard>3.5-(0.1*active_enemies)&!talent.rain_of_fire\nactions.aoe+=/cataclysm,if=raid_event.adds.in>15||talent.wither\nactions.aoe+=/havoc,cycle_targets=1,if=(!cooldown.summon_infernal.up||!talent.summon_infernal||(talent.inferno&active_enemies>4))&target.time_to_die>8&(cooldown.malevolence.remains>15||!talent.malevolence)||time<5\nactions.aoe+=/wither,cycle_targets=1,if=dot.wither.refreshable&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.wither.remains)&(!talent.raging_demonfire||cooldown.channel_demonfire.remains>remains||time<5)&active_dot.wither<=cycle_enemies&target.time_to_die>18\nactions.aoe+=/immolate,cycle_targets=1,if=dot.immolate.refreshable&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.immolate.remains)&(!talent.raging_demonfire||cooldown.channel_demonfire.remains>remains||time<5)&(active_dot.immolate<=6&!(talent.diabolic_ritual&talent.inferno)||active_dot.immolate<=4)&target.time_to_die>18\nactions.aoe+=/call_action_list,name=ogcd\nactions.aoe+=/summon_infernal\nactions.aoe+=/rain_of_fire,if=debuff.pyrogenics.down&active_enemies<=4&!talent.diabolic_ritual\nactions.aoe+=/channel_demonfire,if=dot.immolate.remains+dot.wither.remains>cast_time\nactions.aoe+=/immolate,cycle_targets=1,if=dot.immolate.refreshable&((((!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.immolate.remains))||cycle_enemies>active_dot.immolate)&target.time_to_die>10&!havoc_active&!(talent.diabolic_ritual&talent.inferno))\nactions.aoe+=/immolate,cycle_targets=1,if=dot.immolate.refreshable&((variable.havoc_immo_time<5.4||(dot.immolate.remains<2&dot.immolate.remains<havoc_remains)||!dot.immolate.ticking||(variable.havoc_immo_time<2)*havoc_active)&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.immolate.remains)&target.time_to_die>11&!(talent.diabolic_ritual&talent.inferno))\nactions.aoe+=/dimensional_rift\nactions.aoe+=/soul_fire,cycle_targets=1,if=buff.decimation.up\nactions.aoe+=/incinerate,if=talent.fire_and_brimstone.enabled&buff.backdraft.up\nactions.aoe+=/conflagrate,if=buff.backdraft.stack<2||!talent.backdraft\nactions.aoe+=/incinerate\n\nactions.cleave+=/call_action_list,name=havoc,strict=1,if=havoc_active&havoc_remains>gcd.max\nactions.cleave+=/variable,name=pool_soul_shards,value=cooldown.havoc.remains<=5||talent.mayhem\nactions.cleave+=/malevolence,if=(!cooldown.summon_infernal.up||!talent.summon_infernal)\nactions.cleave+=/havoc,cycle_targets=1,if=(!cooldown.summon_infernal.up||!talent.summon_infernal)&target.time_to_die>8\nactions.cleave+=/chaos_bolt,if=demonic_art\nactions.cleave+=/soul_fire,if=buff.decimation.react&(soul_shard<=4||buff.decimation.remains<=gcd.max*2)&debuff.conflagrate.remains>=execute_time&cooldown.havoc.remains\nactions.cleave+=/wither,cycle_targets=1,if=talent.internal_combustion&(((dot.wither.remains-5*action.chaos_bolt.in_flight)<dot.wither.duration*0.4)||dot.wither.remains<3||(dot.wither.remains-action.chaos_bolt.execute_time)<5&action.chaos_bolt.usable)&(!talent.soul_fire||cooldown.soul_fire.remains+action.soul_fire.cast_time>(dot.wither.remains-5))&target.time_to_die>8&!action.soul_fire.in_flight_to_target\nactions.cleave+=/wither,cycle_targets=1,if=!talent.internal_combustion&(((dot.wither.remains-5*(action.chaos_bolt.in_flight))<dot.wither.duration*0.3)||dot.wither.remains<3)&(!talent.soul_fire||cooldown.soul_fire.remains+action.soul_fire.cast_time>(dot.wither.remains))&target.time_to_die>8&!action.soul_fire.in_flight_to_target\nactions.cleave+=/conflagrate,if=(talent.roaring_blaze.enabled&full_recharge_time<=gcd.max*2)||recharge_time<=8&(diabolic_ritual&(buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)<gcd.max)&!variable.pool_soul_shards\nactions.cleave+=/shadowburn,if=(cooldown.shadowburn.full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)||boss&fight_remains<=8\nactions.cleave+=/chaos_bolt,if=buff.ritual_of_ruin.up\nactions.cleave+=/rain_of_fire,if=cooldown.summon_infernal.remains>=90&talent.rain_of_chaos\nactions.cleave+=/shadowburn,if=cooldown.summon_infernal.remains>=90&talent.rain_of_chaos\nactions.cleave+=/chaos_bolt,if=cooldown.summon_infernal.remains>=90&talent.rain_of_chaos\nactions.cleave+=/ruination,if=(debuff.eradication.remains>=execute_time||!talent.eradication||!talent.shadowburn)\nactions.cleave+=/cataclysm,if=raid_event.adds.in>15\nactions.cleave+=/channel_demonfire,if=talent.raging_demonfire&(dot.immolate.remains+dot.wither.remains-5*(action.chaos_bolt.in_flight&talent.internal_combustion))>cast_time\nactions.cleave+=/soul_fire,if=soul_shard<=3.5&(debuff.conflagrate.remains>cast_time+travel_time||!talent.roaring_blaze&buff.backdraft.up)&!variable.pool_soul_shards\nactions.cleave+=/immolate,cycle_targets=1,if=(dot.immolate.refreshable&(dot.immolate.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+=/summon_infernal\nactions.cleave+=/incinerate,if=talent.diabolic_ritual&(diabolic_ritual&(buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains-2-!variable.disable_cb_2t*action.chaos_bolt.cast_time-variable.disable_cb_2t*gcd.max)<=0)\nactions.cleave+=/rain_of_fire,if=variable.pooling_condition&!talent.wither&buff.rain_of_chaos.up\nactions.cleave+=/rain_of_fire,if=variable.allow_rof_2t_spender>=1&!talent.wither&talent.pyrogenics&debuff.pyrogenics.remains<=gcd.max&(!talent.rain_of_chaos||cooldown.summon_infernal.remains>=gcd.max*3)&variable.pooling_condition\nactions.cleave+=/rain_of_fire,if=variable.do_rof_2t&variable.pooling_condition&(cooldown.summon_infernal.remains>=gcd.max*3||!talent.rain_of_chaos)\nactions.cleave+=/soul_fire,if=soul_shard<=4&talent.mayhem\nactions.cleave+=/chaos_bolt,if=!variable.disable_cb_2t&variable.pooling_condition_cb&(cooldown.summon_infernal.remains>=gcd.max*3||soul_shard>4||!talent.rain_of_chaos)\nactions.cleave+=/channel_demonfire\nactions.cleave+=/dimensional_rift\nactions.cleave+=/infernal_bolt\nactions.cleave+=/conflagrate,if=time_to_max_charges<2*gcd.max||boss&fight_remains<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+=/cataclysm,if=raid_event.adds.in>15||(talent.wither&dot.wither.remains<action.wither.cast_time*0.3)\nactions.havoc+=/immolate,cycle_targets=1,if=(((dot.immolate.refreshable&variable.havoc_immo_time<5.4)&target.time_to_die>5)||((dot.immolate.remains<2&dot.immolate.remains<havoc_remains)||!dot.immolate.ticking||variable.havoc_immo_time<2)&target.time_to_die>11)&soul_shard<4.5\nactions.havoc+=/wither,cycle_targets=1,if=(((dot.wither.refreshable&variable.havoc_immo_time<5.4)&target.time_to_die>5)||((dot.wither.remains<2&dot.wither.remains<havoc_remains)||!dot.wither.ticking||variable.havoc_immo_time<2)&target.time_to_die>11)&soul_shard<4.5\nactions.havoc+=/shadowburn,if=(cooldown.shadowburn.full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)\nactions.havoc+=/shadowburn,if=havoc_remains<=gcd.max*3\nactions.havoc+=/chaos_bolt,if=cast_time<havoc_remains&((!talent.improved_chaos_bolt&active_enemies<=2)||(talent.improved_chaos_bolt&((talent.wither&talent.inferno&active_enemies<=2)||(((talent.wither&talent.cataclysm)||(!talent.wither&talent.inferno))&active_enemies<=3)||(!talent.wither&talent.cataclysm&active_enemies<=4))))\nactions.havoc+=/rain_of_fire,if=active_enemies>=3\nactions.havoc+=/channel_demonfire,if=soul_shard<4.5\nactions.havoc+=/conflagrate,if=!talent.backdraft\nactions.havoc+=/dimensional_rift,if=soul_shard<4.7&(charges>2||boss&fight_remains<cooldown.dimensional_rift.duration)\nactions.havoc+=/incinerate,if=cast_time<havoc_remains\n\nactions.items+=/use_item,name=spymasters_web,if=pet.infernal.remains>=10&pet.infernal.remains<=20&buff.spymasters_report.stack>=38&(fight_remains>240||fight_remains<=140)||boss&fight_remains<=30\nactions.items+=/use_item,slot=trinket1,if=(variable.infernal_active||!talent.summon_infernal||variable.trinket_1_will_lose_cast)&(variable.trinket_priority=1||variable.trinket_2_exclude||!trinket.2.has_cooldown||(trinket.2.cooldown.remains||variable.trinket_priority=2&cooldown.summon_infernal.remains>20&!variable.infernal_active&trinket.2.cooldown.remains<cooldown.summon_infernal.remains))&variable.trinket_1_buffs&!variable.trinket_1_manual||(variable.trinket_1_buff_duration+1>=fight_remains)\nactions.items+=/use_item,slot=trinket2,if=(variable.infernal_active||!talent.summon_infernal||variable.trinket_2_will_lose_cast)&(variable.trinket_priority=2||variable.trinket_1_exclude||!trinket.1.has_cooldown||(trinket.1.cooldown.remains||variable.trinket_priority=1&cooldown.summon_infernal.remains>20&!variable.infernal_active&trinket.1.cooldown.remains<cooldown.summon_infernal.remains))&variable.trinket_2_buffs&!variable.trinket_2_manual||(variable.trinket_2_buff_duration+1>=fight_remains)\nactions.items+=/use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&(!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs)||talent.summon_infernal&cooldown.summon_infernal.remains_expected>20&!prev_gcd.1.summon_infernal||!talent.summon_infernal)\nactions.items+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&(!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs)||talent.summon_infernal&cooldown.summon_infernal.remains_expected>20&!prev_gcd.1.summon_infernal||!talent.summon_infernal)\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand\n\nactions.ogcd+=/potion,if=variable.infernal_active||!talent.summon_infernal\n## actions.ogcd+=/invoke_external_buff,name=power_infusion,if=variable.infernal_active||!talent.summon_infernal||(boss&fight_remains<cooldown.summon_infernal.remains_expected+10+cooldown.invoke_power_infusion_0.duration&fight_remains>cooldown.invoke_power_infusion_0.duration)||boss&fight_remains<cooldown.summon_infernal.remains_expected+15\nactions.ogcd+=/berserking,if=variable.infernal_active||!talent.summon_infernal||(boss&fight_remains<(cooldown.summon_infernal.remains_expected+cooldown.berserking.duration)&(fight_remains>cooldown.berserking.duration))||boss&fight_remains<cooldown.summon_infernal.remains_expected\nactions.ogcd+=/blood_fury,if=variable.infernal_active||!talent.summon_infernal||(boss&fight_remains<cooldown.summon_infernal.remains_expected+10+cooldown.blood_fury.duration&fight_remains>cooldown.blood_fury.duration)||boss&fight_remains<cooldown.summon_infernal.remains\nactions.ogcd+=/fireblood,if=variable.infernal_active||!talent.summon_infernal||(boss&fight_remains<cooldown.summon_infernal.remains_expected+10+cooldown.fireblood.duration&fight_remains>cooldown.fireblood.duration)||boss&fight_remains<cooldown.summon_infernal.remains_expected\nactions.ogcd+=/ancestral_call,if=variable.infernal_active||!talent.summon_infernal||(boss&fight_remains<(cooldown.summon_infernal.remains_expected+cooldown.berserking.duration)&(fight_remains>cooldown.berserking.duration))||boss&fight_remains<cooldown.summon_infernal.remains_expected\n\nactions.variables+=/variable,name=havoc_immo_time,op=setif,condition=havoc_active,value=dot.immolate.remains<?dot.wither.remains\nactions.variables+=/variable,name=pooling_condition,value=(soul_shard>=3||(talent.secrets_of_the_coven&buff.infernal_bolt.up||buff.decimation.up)&soul_shard>=3),default=1,op=set\nactions.variables+=/variable,name=pooling_condition_cb,value=variable.pooling_condition||pet.infernal.active&soul_shard>=3,default=1,op=set\n## actions.variables+=/cycling_variable,name=havoc_immo_time,op=add,value=dot.immolate.remains*debuff.havoc.up<?dot.wither.remains*debuff.havoc.up\nactions.variables+=/variable,name=infernal_active,op=set,value=pet.infernal.active||(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains)<20\nactions.variables+=/variable,name=trinket_1_will_lose_cast,value=((floor((fight_remains%trinket.1.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(floor((fight_remains%trinket.1.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)%trinket.1.cooldown.duration)+1))||((floor((fight_remains%trinket.1.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%%trinket.1.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_1_buff_duration)>0)))&cooldown.summon_infernal.remains>20\nactions.variables+=/variable,name=trinket_2_will_lose_cast,value=((floor((fight_remains%trinket.2.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(floor((fight_remains%trinket.2.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)%trinket.2.cooldown.duration)+1))||((floor((fight_remains%trinket.2.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%%trinket.2.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_2_buff_duration)>0)))&cooldown.summon_infernal.remains>20",
|
|
},
|
|
["Affliction"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241021,
|
|
["spec"] = 265,
|
|
["desc"] = "2024-10-21: SimC / revisions\n\n2024-08-30, 09-02, 09-08: SimC update\n\n2024-08-26: Revise variables\n\n2024-08-24: SimC priority update\n\n2024-08-06: Allow Darkglare if PS/VT get wasted\n\n2024-08-04: Oblivion; improve efficiency\n\n2024-07-23: The War Within (sort of)",
|
|
["profile"] = "actions.precombat=fel_domination,if=time>0&!pet.alive\nactions.precombat+=/summon_pet\nactions.precombat+=/variable,name=cleave_apl,value=toggle.funnel\n# Used to set Trinket in slot 1 as Buff Trinkets for the automatic logic\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff\n# Used to set Trinkets in slot 2 as Buff Trinkets for the automatic logic\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff\n# Automatic Logic for Buff Trinkets in Trinket Slot 1\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.1.cooldown.duration=0)\n# Automatic Logic for Buff Trinkets in Trinket Slot 2\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.2.cooldown.duration=0)\n# Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.spymasters_web||trinket.1.is.aberrant_spellforge\n# Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.spymasters_web||trinket.2.is.aberrant_spellforge\n# For On Use Trinkets on slot 1 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell\n# For On Use Trinkets on Slot 2 with on use effects you don't want to use in combat\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell\n# Sets the duration of Trinket 1 in the automatic logic\nactions.precombat+=/variable,name=trinket_1_buff_duration,value=trinket.1.proc.any_dps.duration+(trinket.1.is.mirror_of_fractured_tomorrows*20)\n# Sets the duration of Trinket 2 in the automatic logic\nactions.precombat+=/variable,name=trinket_2_buff_duration,value=trinket.2.proc.any_dps.duration+(trinket.2.is.mirror_of_fractured_tomorrows*20)\n# Automatic Logic in case of 2 On Use Buff Trinkets\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%variable.trinket_2_buff_duration)*(1+0.5*trinket.2.has_buff.intellect)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.1.has_buff.intellect)*(variable.trinket_1_sync))\nactions.precombat+=/grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice.enabled\nactions.precombat+=/seed_of_corruption,if=spell_targets.seed_of_corruption_aoe>2||spell_targets.seed_of_corruption_aoe>1&talent.demonic_soul\nactions.precombat+=/haunt\n\nactions+=/spell_lock\nactions+=/call_action_list,name=variables\nactions+=/call_action_list,name=ogcd\nactions+=/call_action_list,name=items\n# This entry is manually translated and will differ from SIMC, but maintains the same functionality.\nactions+=/call_action_list,name=cleave,if=active_enemies=2||active_enemies>2&variable.cleave_apl\nactions+=/call_action_list,name=aoe,if=active_enemies>2\nactions+=/call_action_list,name=end_of_fight\nactions+=/agony,if=(!talent.vile_taint||remains<cooldown.vile_taint.remains+action.vile_taint.cast_time)&(talent.absolute_corruption&remains<3||!talent.absolute_corruption&remains<5||cooldown.soul_rot.remains<5&remains<8)&fight_remains>dot.agony.remains+5\nactions+=/haunt,if=talent.demonic_soul&buff.nightfall.stack<2-prev_gcd.1.drain_soul&(!talent.vile_taint||cooldown.vile_taint.remains)\nactions+=/unstable_affliction,if=(active_dot.unstable_affliction=0||ticking)&(talent.absolute_corruption&remains<3||!talent.absolute_corruption&remains<5||cooldown.soul_rot.remains<5&remains<8)&(!talent.demonic_soul||buff.nightfall.stack<2||prev_gcd.1.haunt&buff.nightfall.stack<2)&fight_remains>dot.unstable_affliction.remains+5\nactions+=/haunt,if=(talent.absolute_corruption&debuff.haunt.remains<3||!talent.absolute_corruption&debuff.haunt.remains<5||cooldown.soul_rot.remains<5&debuff.haunt.remains<8)&(!talent.vile_taint||cooldown.vile_taint.remains)&fight_remains>debuff.haunt.remains+5\nactions+=/wither,if=talent.wither&!(action.seed_of_corruption.in_flight||active_dot.seed_of_corruption>0)&(talent.absolute_corruption&remains<3||!talent.absolute_corruption&remains<5)&fight_remains>dot.wither.remains+5\nactions+=/corruption,if=!(action.seed_of_corruption.in_flight||active_dot.seed_of_corruption>0)&refreshable&fight_remains>dot.corruption.remains+5\nactions+=/drain_soul,if=buff.nightfall.up&(buff.nightfall.stack>1||buff.nightfall.remains<execute_time*2)&!buff.tormented_crescendo.up&cooldown.soul_rot.remains&soul_shard<5-buff.tormented_crescendo.up&(!talent.vile_taint||cooldown.vile_taint.remains)\nactions+=/shadow_bolt,if=buff.nightfall.up&(buff.nightfall.stack>1||buff.nightfall.remains<execute_time*2)&buff.tormented_crescendo.stack<2&cooldown.soul_rot.remains&soul_shard<5-buff.tormented_crescendo.up&(!talent.vile_taint||cooldown.vile_taint.remains)\nactions+=/call_action_list,name=se_maintenance,if=talent.wither\nactions+=/vile_taint,if=(!talent.soul_rot||cooldown.soul_rot.remains>20||cooldown.soul_rot.remains<=execute_time+gcd.max||boss&fight_remains<cooldown.soul_rot.remains)&dot.agony.remains&(dot.corruption.remains||dot.wither.remains)&dot.unstable_affliction.remains\nactions+=/phantom_singularity,if=(!talent.soul_rot||cooldown.soul_rot.remains<4||boss&fight_remains<cooldown.soul_rot.remains)&dot.agony.remains&(dot.corruption.remains||dot.wither.remains)&dot.unstable_affliction.remains\nactions+=/malevolence,if=variable.vt_ps_up\nactions+=/soul_rot,if=variable.vt_ps_up\nactions+=/summon_darkglare,if=variable.cd_dots_up&(debuff.shadow_embrace.stack=debuff.shadow_embrace.max_stack)\nactions+=/call_action_list,name=se_maintenance,if=talent.demonic_soul\nactions+=/malefic_rapture,if=soul_shard>4&(talent.demonic_soul&buff.nightfall.stack<2||!talent.demonic_soul)||buff.tormented_crescendo.stack>1\nactions+=/drain_soul,if=talent.demonic_soul&buff.nightfall.up&buff.tormented_crescendo.stack<2&target.health.pct<20\nactions+=/malefic_rapture,if=talent.demonic_soul&(soul_shard>1||buff.tormented_crescendo.up&cooldown.soul_rot.remains>buff.tormented_crescendo.remains*gcd.max)&(!talent.vile_taint||soul_shard>1&cooldown.vile_taint.remains>10)&(!talent.oblivion||cooldown.oblivion.remains>10||soul_shard>2&cooldown.oblivion.remains<10)\nactions+=/oblivion,if=dot.agony.remains&(dot.corruption.remains||dot.wither.remains)&dot.unstable_affliction.remains&debuff.haunt.remains>5\nactions+=/malefic_rapture,if=talent.tormented_crescendo&buff.tormented_crescendo.up&(buff.tormented_crescendo.remains<gcd.max*2||buff.tormented_crescendo.stack=2)\nactions+=/malefic_rapture,if=(variable.cd_dots_up||(talent.demonic_soul||talent.phantom_singularity)&variable.vt_ps_up||talent.wither&variable.vt_ps_up&!dot.soul_rot.remains&soul_shard>2)&(!talent.oblivion||cooldown.oblivion.remains>10||soul_shard>2&cooldown.oblivion.remains<10)\nactions+=/malefic_rapture,if=talent.tormented_crescendo&talent.nightfall&buff.tormented_crescendo.up&buff.nightfall.up||talent.demonic_soul&!buff.nightfall.up&(!talent.vile_taint||cooldown.vile_taint.remains>10||soul_shard>1&cooldown.vile_taint.remains<10)\nactions+=/malefic_rapture,if=!talent.demonic_soul&buff.tormented_crescendo.up\nactions+=/drain_soul,if=buff.nightfall.up\nactions+=/shadow_bolt,if=buff.nightfall.up\nactions+=/agony,if=refreshable\nactions+=/unstable_affliction,if=(active_dot.unstable_affliction=0||ticking)&refreshable\nactions+=/drain_soul,chain=1,early_chain_if=buff.nightfall.up,interrupt_if=tick_time>0.5\nactions+=/shadow_bolt\n\nactions.aoe+=/variable,name=min_agony,op=min,default=0,value=dot.agony.remains\nactions.aoe+=/variable,name=min_vt,op=min,default=10,value=dot.vile_taint.remains\nactions.aoe+=/variable,name=min_ps,op=min,default=16,value=dot.phantom_singularity.remains\nactions.aoe+=/variable,name=min_ps1,op=set,value=(variable.min_vt*talent.vile_taint)<?(variable.min_ps*talent.phantom_singularity)\nactions.aoe+=/haunt,if=debuff.haunt.remains<3\nactions.aoe+=/vile_taint,if=(cooldown.soul_rot.remains<=execute_time||cooldown.soul_rot.remains>=25)\nactions.aoe+=/phantom_singularity,if=(cooldown.soul_rot.remains<=execute_time||cooldown.soul_rot.remains>=25)&dot.agony.remains\nactions.aoe+=/unstable_affliction,if=(active_dot.unstable_affliction=0||ticking)&remains<5\nactions.aoe+=/agony,cycle_targets=1,if=active_dot.agony<8&(remains<cooldown.vile_taint.remains+action.vile_taint.cast_time||!talent.vile_taint)&gcd.max+action.soul_rot.cast_time+gcd.max<((variable.min_vt*talent.vile_taint)<?(variable.min_ps*talent.phantom_singularity))&remains<10\nactions.aoe+=/soul_rot,if=variable.vt_up&(variable.ps_up||variable.vt_up)&dot.agony.remains\nactions.aoe+=/malevolence,if=variable.ps_up&variable.vt_up&variable.sr_up\nactions.aoe+=/seed_of_corruption,if=((!talent.wither&dot.corruption.remains<5)||(talent.wither&dot.wither.remains<5))&!(action.seed_of_corruption.in_flight||active_dot.seed_of_corruption>0)\nactions.aoe+=/corruption,cycle_targets=1,if=remains<5&!talent.seed_of_corruption\nactions.aoe+=/wither,cycle_targets=1,if=remains<5&!talent.seed_of_corruption\nactions.aoe+=/summon_darkglare,if=variable.ps_up&variable.vt_up&variable.sr_up\nactions.aoe+=/malefic_rapture,if=(cooldown.summon_darkglare.remains>15||soul_shard>3||(talent.demonic_soul&soul_shard>2))&buff.tormented_crescendo.up\nactions.aoe+=/malefic_rapture,if=soul_shard>4||(talent.tormented_crescendo&buff.tormented_crescendo.stack=1&soul_shard>3)\nactions.aoe+=/malefic_rapture,if=talent.demonic_soul&(soul_shard>2||(talent.tormented_crescendo&buff.tormented_crescendo.stack=1&soul_shard))\nactions.aoe+=/malefic_rapture,if=talent.tormented_crescendo&buff.tormented_crescendo.up\nactions.aoe+=/malefic_rapture,if=talent.tormented_crescendo&buff.tormented_crescendo.stack=2\nactions.aoe+=/malefic_rapture,if=(variable.cd_dots_up||variable.vt_ps_up)&(soul_shard>2||cooldown.oblivion.remains>10||!talent.oblivion)\nactions.aoe+=/malefic_rapture,if=talent.tormented_crescendo&talent.nightfall&buff.tormented_crescendo.up&buff.nightfall.up\nactions.aoe+=/drain_soul,interrupt_if=cooldown.vile_taint.ready,if=talent.drain_soul&buff.nightfall.up&talent.shadow_embrace&(debuff.shadow_embrace.stack<4||debuff.shadow_embrace.remains<3)\nactions.aoe+=/drain_soul,interrupt_if=cooldown.vile_taint.ready,interrupt_global=1,if=talent.drain_soul&(talent.shadow_embrace&(debuff.shadow_embrace.stack<4||debuff.shadow_embrace.remains<3))||!talent.shadow_embrace\nactions.aoe+=/shadow_bolt,if=buff.nightfall.up&talent.shadow_embrace&(debuff.shadow_embrace.stack<2||debuff.shadow_embrace.remains<3)\n\nactions.cleave+=/call_action_list,name=end_of_fight,strict=1,if=boss\nactions.cleave+=/agony,cycle_targets=1,if=refreshable&(remains<cooldown.vile_taint.remains+action.vile_taint.cast_time||!talent.vile_taint)&(remains<gcd.max*2||talent.demonic_soul&remains<cooldown.soul_rot.remains+8&cooldown.soul_rot.remains<5)&fight_remains>remains+5\nactions.cleave+=/wither,cycle_targets=1,if=refreshable&remains<5&!(action.seed_of_corruption.in_flight||dot.seed_of_corruption.remains>0)&fight_remains>remains+5\nactions.cleave+=/haunt,if=talent.demonic_soul&buff.nightfall.stack<2-prev_gcd.1.drain_soul&(!talent.vile_taint||cooldown.vile_taint.remains)||debuff.haunt.remains<3\nactions.cleave+=/unstable_affliction,if=(remains<5||talent.demonic_soul&remains<cooldown.soul_rot.remains+8&cooldown.soul_rot.remains<5)&fight_remains>remains+5\nactions.cleave+=/corruption,cycle_targets=1,if=refreshable&remains<5&!(action.seed_of_corruption.in_flight||dot.seed_of_corruption.remains>0)&fight_remains>remains+5\nactions.cleave+=/call_action_list,name=cleave_se_maintenance,if=talent.wither\nactions.cleave+=/vile_taint,if=!talent.soul_rot||(variable.min_agony<1.5||cooldown.soul_rot.remains<=execute_time+gcd.max)||cooldown.soul_rot.remains>=20\nactions.cleave+=/phantom_singularity,if=(!talent.soul_rot||cooldown.soul_rot.remains<4||fight_remains<cooldown.soul_rot.remains)&active_dot.agony=2\nactions.cleave+=/malevolence,if=variable.vt_ps_up\nactions.cleave+=/soul_rot,if=(variable.vt_ps_up)&active_dot.agony=2\nactions.cleave+=/summon_darkglare,if=variable.cd_dots_up\nactions.cleave+=/call_action_list,name=opener_cleave_se,strict=1,if=talent.demonic_soul\nactions.cleave+=/call_action_list,name=cleave_se_maintenance,strict=1,if=talent.demonic_soul\nactions.cleave+=/malefic_rapture,if=soul_shard>4&(talent.demonic_soul&buff.nightfall.stack<2||!talent.demonic_soul)||buff.tormented_crescendo.stack>1\nactions.cleave+=/drain_soul,if=talent.demonic_soul&buff.nightfall.up&buff.tormented_crescendo.stack<2&target.health.pct<20\nactions.cleave+=/malefic_rapture,if=talent.demonic_soul&(soul_shard>1||buff.tormented_crescendo.up&cooldown.soul_rot.remains>buff.tormented_crescendo.remains*gcd.max)&(!talent.vile_taint||soul_shard>1&cooldown.vile_taint.remains>10)&(!talent.oblivion||cooldown.oblivion.remains>10||soul_shard>2&cooldown.oblivion.remains<10)\nactions.cleave+=/malefic_rapture,if=talent.tormented_crescendo&buff.tormented_crescendo.up&(buff.tormented_crescendo.remains<gcd.max*2||buff.tormented_crescendo.stack=2)\nactions.cleave+=/malefic_rapture,if=(variable.cd_dots_up||(talent.demonic_soul||talent.phantom_singularity)&variable.vt_ps_up||talent.wither&variable.vt_ps_up&!dot.soul_rot.remains&soul_shard>1)&(!talent.oblivion||cooldown.oblivion.remains>10||soul_shard>2&cooldown.oblivion.remains<10)\nactions.cleave+=/malefic_rapture,if=talent.tormented_crescendo&talent.nightfall&buff.tormented_crescendo.up&buff.nightfall.up||talent.demonic_soul&!buff.nightfall.up&(!talent.vile_taint||cooldown.vile_taint.remains>10||soul_shard>1&cooldown.vile_taint.remains<10)\nactions.cleave+=/malefic_rapture,if=!talent.demonic_soul&buff.tormented_crescendo.up\nactions.cleave+=/agony,if=refreshable||cooldown.soul_rot.remains<5&remains<8\nactions.cleave+=/unstable_affliction,if=refreshable||cooldown.soul_rot.remains<5&remains<8\nactions.cleave+=/drain_soul,if=buff.nightfall.up\nactions.cleave+=/shadow_bolt,if=buff.nightfall.up\nactions.cleave+=/wither,if=refreshable\nactions.cleave+=/corruption,if=refreshable\nactions.cleave+=/drain_soul,chain=1,early_chain_if=buff.nightfall.up,interrupt_if=tick_time>0.5\nactions.cleave+=/shadow_bolt\n\nactions.end_of_fight+=/drain_soul,if=talent.demonic_soul&(boss&fight_remains<5&buff.nightfall.up||prev_gcd.1.haunt&buff.nightfall.stack=2&!buff.tormented_crescendo.up)\nactions.end_of_fight+=/oblivion,if=soul_shard>1&boss&fight_remains<(soul_shard+buff.tormented_crescendo.up)*gcd.max+execute_time\nactions.end_of_fight+=/malefic_rapture,if=boss&fight_remains<4&(!talent.demonic_soul||talent.demonic_soul&buff.nightfall.stack<1)\n\nactions.se_maintenance+=/drain_soul,interrupt=1,if=talent.shadow_embrace&talent.drain_soul&(debuff.shadow_embrace.stack<debuff.shadow_embrace.max_stack||debuff.shadow_embrace.remains<3)&active_enemies<=4&target.time_to_die>15,interrupt_if=debuff.shadow_embrace.stack=debuff.shadow_embrace.max_stack\nactions.se_maintenance+=/shadow_bolt,if=talent.shadow_embrace&((debuff.shadow_embrace.stack+(action.shadow_bolt.time_since<1))<debuff.shadow_embrace.max_stack||debuff.shadow_embrace.remains<3&!action.shadow_bolt.in_flight_to_target)&active_enemies<=4&target.time_to_die>15\n\nactions.opener_cleave_se+=/drain_soul,if=talent.shadow_embrace&talent.drain_soul&buff.nightfall.up&(debuff.shadow_embrace.stack<debuff.shadow_embrace.max_stack||debuff.shadow_embrace.remains<3)&(target.time_to_die>15||time<20),interrupt_if=debuff.shadow_embrace.stack=debuff.shadow_embrace.max_stack\n\nactions.cleave_se_maintenance+=/drain_soul,cycle_targets=1,if=talent.shadow_embrace&talent.drain_soul&(talent.wither||talent.demonic_soul&buff.nightfall.up)&(debuff.shadow_embrace.stack<debuff.shadow_embrace.max_stack||debuff.shadow_embrace.remains<3)&fight_remains>15,interrupt_if=debuff.shadow_embrace.stack>3\nactions.cleave_se_maintenance+=/shadow_bolt,cycle_targets=1,if=talent.shadow_embrace&!talent.drain_soul&((debuff.shadow_embrace.stack+action.shadow_bolt.in_flight_to_target_count)<debuff.shadow_embrace.max_stack||debuff.shadow_embrace.remains<3&!action.shadow_bolt.in_flight_to_target)&fight_remains>15\n\nactions.items+=/use_item,name=aberrant_spellforge,use_off_gcd=1,if=gcd.remains>gcd.max*0.8\nactions.items+=/use_item,name=spymasters_web,if=variable.cd_dots_up&(buff.spymasters_report.stack>=38||boss&fight_remains<=80||talent.drain_soul&target.health.pct<20)||boss&fight_remains<20\nactions.items+=/use_item,slot=trinket1,if=(variable.cds_active)&(variable.trinket_priority=1||variable.trinket_2_exclude||!trinket.2.has_cooldown||(trinket.2.cooldown.remains||variable.trinket_priority=2&cooldown.summon_darkglare.remains>20&!pet.darkglare.active&trinket.2.cooldown.remains<cooldown.summon_darkglare.remains))&variable.trinket_1_buffs&!variable.trinket_1_manual||(variable.trinket_1_buff_duration+1>=fight_remains)\nactions.items+=/use_item,slot=trinket2,if=(variable.cds_active)&(variable.trinket_priority=2||variable.trinket_1_exclude||!trinket.1.has_cooldown||(trinket.1.cooldown.remains||variable.trinket_priority=1&cooldown.summon_darkglare.remains>20&!pet.darkglare.active&trinket.1.cooldown.remains<cooldown.summon_darkglare.remains))&variable.trinket_2_buffs&!variable.trinket_2_manual||(variable.trinket_2_buff_duration+1>=fight_remains)\nactions.items+=/use_item,name=time_thiefs_gambit,if=variable.cds_active||boss&fight_remains<15||((trinket.1.cooldown.duration<cooldown.summon_darkglare.remains_expected+5)&active_enemies=1)||(active_enemies>1&havoc_active)\nactions.items+=/use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&(!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs)||talent.summon_darkglare&cooldown.summon_darkglare.remains_expected>20||!talent.summon_darkglare)\nactions.items+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&(!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs)||talent.summon_darkglare&cooldown.summon_darkglare.remains_expected>20||!talent.summon_darkglare)\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand\n\nactions.ogcd+=/potion,if=variable.cds_active||fight_remains<32||prev_gcd.1.soul_rot&time<20\nactions.ogcd+=/berserking,if=variable.cds_active||fight_remains<14||prev_gcd.1.soul_rot&time<20\nactions.ogcd+=/blood_fury,if=variable.cds_active||fight_remains<17||prev_gcd.1.soul_rot&time<20\n## actions.ogcd+=/invoke_external_buff,name=power_infusion,if=variable.cds_active\nactions.ogcd+=/fireblood,if=variable.cds_active||fight_remains<10||prev_gcd.1.soul_rot&time<20\nactions.ogcd+=/ancestral_call,if=variable.cds_active||fight_remains<17||prev_gcd.1.soul_rot&time<20\n\nactions.variables+=/variable,name=ps_up,op=set,value=!talent.phantom_singularity||dot.phantom_singularity.up\nactions.variables+=/variable,name=vt_up,op=set,value=!talent.vile_taint||dot.vile_taint_dot.up\nactions.variables+=/variable,name=vt_ps_up,op=set,value=(!talent.vile_taint&!talent.phantom_singularity)||dot.vile_taint_dot.up||dot.phantom_singularity.up\nactions.variables+=/variable,name=sr_up,op=set,value=!talent.soul_rot||dot.soul_rot.up\nactions.variables+=/variable,name=cd_dots_up,op=set,value=variable.ps_up&variable.vt_up&variable.sr_up\nactions.variables+=/variable,name=has_cds,op=set,value=talent.phantom_singularity||talent.vile_taint||talent.soul_rot||talent.summon_darkglare\nactions.variables+=/variable,name=cds_active,op=set,value=!variable.has_cds||(variable.cd_dots_up&(!talent.summon_darkglare||cooldown.summon_darkglare.remains>20||pet.darkglare.remains))\nactions.variables+=/variable,name=min_vt,op=reset,if=variable.min_vt\nactions.variables+=/variable,name=min_ps,op=reset,if=variable.min_ps",
|
|
["version"] = 20241021,
|
|
["warnings"] = "The import for 'cleave' required some automated changes.\nLine 2: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 2: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 4: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 4: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 5: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 7: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 9: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 13: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 14: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 15: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 15: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 16: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 17: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 17: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 17: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 18: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 19: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 19: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 19: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 19: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 20: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 20: Converted 'talent.nightfall' to 'talent.nightfall.enabled' (1x).\nLine 20: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 20: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 21: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'variables' required some automated changes.\nLine 1: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 2: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 3: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 3: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 4: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 6: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 6: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 6: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 6: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 7: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\n\nThe import for 'se_maintenance' required some automated changes.\nLine 1: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 1: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 2: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\n\nThe import for 'items' required some automated changes.\nLine 2: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 3: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Unsupported use_item action [ time_thiefs_gambit]; entry disabled.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 6: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 7: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\n\nThe import for 'opener_cleave_se' required some automated changes.\nLine 1: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 1: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 8: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 8: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 8: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 9: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 9: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 10: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 10: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 10: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 11: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 11: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 11: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 12: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 12: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 12: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 14: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 15: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 16: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 17: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 18: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 22: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 23: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 23: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 24: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 25: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 25: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 25: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 27: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 28: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 28: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 28: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 28: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 29: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 29: Converted 'talent.nightfall' to 'talent.nightfall.enabled' (1x).\nLine 29: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 29: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 30: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%trinket.t1.cooldown.duration=0)'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%trinket.t2.cooldown.duration=0)'.\nLine 8: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 8: Converted 'trinket.1.is.aberrant_spellforge' to 'trinket.t1.is.aberrant_spellforge' (1x).\nLine 9: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 9: Converted 'trinket.2.is.aberrant_spellforge' to 'trinket.t2.is.aberrant_spellforge' (1x).\nLine 10: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 11: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 12: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 13: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 14: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 16: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 4: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 4: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 9: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 9: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 9: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 12: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 12: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 13: Converted 'talent.seed_of_corruption' to 'talent.seed_of_corruption.enabled' (1x).\nLine 14: Converted 'talent.seed_of_corruption' to 'talent.seed_of_corruption.enabled' (1x).\nLine 16: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 17: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 18: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 18: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 19: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 20: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 21: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 22: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 22: Converted 'talent.nightfall' to 'talent.nightfall.enabled' (1x).\nLine 23: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 23: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 24: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 24: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 24: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 25: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\n\nThe import for 'end_of_fight' required some automated changes.\nLine 1: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 3: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 3: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'cleave_se_maintenance' required some automated changes.\nLine 1: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 1: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 1: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 1: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 2: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 2: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\n\nImported 11 action lists.\n",
|
|
["lists"] = {
|
|
["cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "boss",
|
|
["list_name"] = "end_of_fight",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "agony",
|
|
["criteria"] = "refreshable & ( remains < cooldown.vile_taint.remains + action.vile_taint.cast_time || ! talent.vile_taint.enabled ) & ( remains < gcd.max * 2 || talent.demonic_soul.enabled & remains < cooldown.soul_rot.remains + 8 & cooldown.soul_rot.remains < 5 ) & fight_remains > remains + 5",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wither",
|
|
["criteria"] = "refreshable & remains < 5 & ! ( action.seed_of_corruption.in_flight || dot.seed_of_corruption.remains > 0 ) & fight_remains > remains + 5",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.demonic_soul.enabled & buff.nightfall.stack < 2 - prev_gcd.1.drain_soul & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains ) || debuff.haunt.remains < 3",
|
|
["action"] = "haunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( remains < 5 || talent.demonic_soul.enabled & remains < cooldown.soul_rot.remains + 8 & cooldown.soul_rot.remains < 5 ) & fight_remains > remains + 5",
|
|
["action"] = "unstable_affliction",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "corruption",
|
|
["criteria"] = "refreshable & remains < 5 & ! ( action.seed_of_corruption.in_flight || dot.seed_of_corruption.remains > 0 ) & fight_remains > remains + 5",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.wither.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cleave_se_maintenance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.soul_rot.enabled || ( variable.min_agony < 1.5 || cooldown.soul_rot.remains <= execute_time + gcd.max ) || cooldown.soul_rot.remains >= 20",
|
|
["action"] = "vile_taint",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.soul_rot.enabled || cooldown.soul_rot.remains < 4 || fight_remains < cooldown.soul_rot.remains ) & active_dot.agony = 2",
|
|
["action"] = "phantom_singularity",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.vt_ps_up",
|
|
["action"] = "malevolence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.vt_ps_up ) & active_dot.agony = 2",
|
|
["action"] = "soul_rot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_dots_up",
|
|
["action"] = "summon_darkglare",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demonic_soul.enabled",
|
|
["list_name"] = "opener_cleave_se",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demonic_soul.enabled",
|
|
["list_name"] = "cleave_se_maintenance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard > 4 & ( talent.demonic_soul.enabled & buff.nightfall.stack < 2 || ! talent.demonic_soul.enabled ) || buff.tormented_crescendo.stack > 1",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.demonic_soul.enabled & buff.nightfall.up & buff.tormented_crescendo.stack < 2 & target.health.pct < 20",
|
|
["action"] = "drain_soul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.demonic_soul.enabled & ( soul_shard > 1 || buff.tormented_crescendo.up & cooldown.soul_rot.remains > buff.tormented_crescendo.remains * gcd.max ) & ( ! talent.vile_taint.enabled || soul_shard > 1 & cooldown.vile_taint.remains > 10 ) & ( ! talent.oblivion.enabled || cooldown.oblivion.remains > 10 || soul_shard > 2 & cooldown.oblivion.remains < 10 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tormented_crescendo.enabled & buff.tormented_crescendo.up & ( buff.tormented_crescendo.remains < gcd.max * 2 || buff.tormented_crescendo.stack = 2 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.cd_dots_up || ( talent.demonic_soul.enabled || talent.phantom_singularity.enabled ) & variable.vt_ps_up || talent.wither.enabled & variable.vt_ps_up & ! dot.soul_rot.remains & soul_shard > 1 ) & ( ! talent.oblivion.enabled || cooldown.oblivion.remains > 10 || soul_shard > 2 & cooldown.oblivion.remains < 10 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tormented_crescendo.enabled & talent.nightfall.enabled & buff.tormented_crescendo.up & buff.nightfall.up || talent.demonic_soul.enabled & ! buff.nightfall.up & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains > 10 || soul_shard > 1 & cooldown.vile_taint.remains < 10 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.demonic_soul.enabled & buff.tormented_crescendo.up",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable || cooldown.soul_rot.remains < 5 & remains < 8",
|
|
["action"] = "agony",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable || cooldown.soul_rot.remains < 5 & remains < 8",
|
|
["action"] = "unstable_affliction",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.nightfall.up",
|
|
["action"] = "drain_soul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.nightfall.up",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable",
|
|
["action"] = "wither",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable",
|
|
["action"] = "corruption",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "drain_soul",
|
|
["interrupt_if"] = "tick_time>0.5",
|
|
["early_chain_if"] = "buff.nightfall.up",
|
|
["chain"] = "1",
|
|
},
|
|
{
|
|
["action"] = "shadow_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cleave_se_maintenance"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "drain_soul",
|
|
["cycle_targets"] = 1,
|
|
["interrupt_if"] = "debuff.shadow_embrace.stack>3",
|
|
["criteria"] = "talent.shadow_embrace.enabled & talent.drain_soul.enabled & ( talent.wither.enabled || talent.demonic_soul.enabled & buff.nightfall.up ) & ( debuff.shadow_embrace.stack < debuff.shadow_embrace.max_stack || debuff.shadow_embrace.remains < 3 ) & fight_remains > 15",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_bolt",
|
|
["criteria"] = "talent.shadow_embrace.enabled & ! talent.drain_soul.enabled & ( ( debuff.shadow_embrace.stack + action.shadow_bolt.in_flight_to_target_count ) < debuff.shadow_embrace.max_stack || debuff.shadow_embrace.remains < 3 & ! action.shadow_bolt.in_flight_to_target ) & fight_remains > 15",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["se_maintenance"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadow_embrace.enabled & talent.drain_soul.enabled & ( debuff.shadow_embrace.stack < debuff.shadow_embrace.max_stack || debuff.shadow_embrace.remains < 3 ) & active_enemies <= 4 & target.time_to_die > 15",
|
|
["interrupt_if"] = "debuff.shadow_embrace.stack=debuff.shadow_embrace.max_stack",
|
|
["action"] = "drain_soul",
|
|
["interrupt"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadow_embrace.enabled & ( ( debuff.shadow_embrace.stack + ( action.shadow_bolt.time_since < 1 ) ) < debuff.shadow_embrace.max_stack || debuff.shadow_embrace.remains < 3 & ! action.shadow_bolt.in_flight_to_target ) & active_enemies <= 4 & target.time_to_die > 15",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
},
|
|
["items"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "aberrant_spellforge",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "aberrant_spellforge",
|
|
["criteria"] = "gcd.remains > gcd.max * 0.8",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_dots_up & ( buff.spymasters_report.stack >= 38 || boss & fight_remains <= 80 || talent.drain_soul.enabled & target.health.pct < 20 ) || boss & fight_remains < 20",
|
|
["name"] = "spymasters_web",
|
|
["action"] = "spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "( variable.cds_active ) & ( variable.trinket_priority = 1 || variable.trinket_2_exclude || ! trinket.t2.has_cooldown || ( trinket.t2.cooldown.remains || variable.trinket_priority = 2 & cooldown.summon_darkglare.remains > 20 & ! pet.darkglare.active & trinket.t2.cooldown.remains < cooldown.summon_darkglare.remains ) ) & variable.trinket_1_buffs & ! variable.trinket_1_manual || ( variable.trinket_1_buff_duration + 1 >= fight_remains )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "( variable.cds_active ) & ( variable.trinket_priority = 2 || variable.trinket_1_exclude || ! trinket.t1.has_cooldown || ( trinket.t1.cooldown.remains || variable.trinket_priority = 1 & cooldown.summon_darkglare.remains > 20 & ! pet.darkglare.active & trinket.t1.cooldown.remains < cooldown.summon_darkglare.remains ) ) & variable.trinket_2_buffs & ! variable.trinket_2_manual || ( variable.trinket_2_buff_duration + 1 >= fight_remains )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = false,
|
|
["criteria"] = "variable.cds_active || boss & fight_remains < 15 || ( ( trinket.t1.cooldown.duration < cooldown.summon_darkglare.remains_expected + 5 ) & active_enemies = 1 ) || ( active_enemies > 1 & havoc_active )",
|
|
["name"] = "time_thiefs_gambit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || talent.summon_darkglare.enabled & cooldown.summon_darkglare.remains_expected > 20 || ! talent.summon_darkglare.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) || talent.summon_darkglare.enabled & cooldown.summon_darkglare.remains_expected > 20 || ! talent.summon_darkglare.enabled )",
|
|
},
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["slot"] = "main_hand",
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "min",
|
|
["action"] = "variable",
|
|
["value"] = "dot.agony.remains",
|
|
["default"] = "0",
|
|
["var_name"] = "min_agony",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "min",
|
|
["action"] = "variable",
|
|
["value"] = "dot.vile_taint.remains",
|
|
["default"] = "10",
|
|
["var_name"] = "min_vt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "min",
|
|
["action"] = "variable",
|
|
["value"] = "dot.phantom_singularity.remains",
|
|
["default"] = "16",
|
|
["var_name"] = "min_ps",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( variable.min_vt * talent.vile_taint.enabled ) <? ( variable.min_ps * talent.phantom_singularity.enabled )",
|
|
["var_name"] = "min_ps1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.haunt.remains < 3",
|
|
["action"] = "haunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.soul_rot.remains <= execute_time || cooldown.soul_rot.remains >= 25 )",
|
|
["action"] = "vile_taint",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.soul_rot.remains <= execute_time || cooldown.soul_rot.remains >= 25 ) & dot.agony.remains",
|
|
["action"] = "phantom_singularity",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_dot.unstable_affliction = 0 || ticking ) & remains < 5",
|
|
["action"] = "unstable_affliction",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "agony",
|
|
["criteria"] = "active_dot.agony < 8 & ( remains < cooldown.vile_taint.remains + action.vile_taint.cast_time || ! talent.vile_taint.enabled ) & gcd.max + action.soul_rot.cast_time + gcd.max < ( ( variable.min_vt * talent.vile_taint.enabled ) <? ( variable.min_ps * talent.phantom_singularity.enabled ) ) & remains < 10",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.vt_up & ( variable.ps_up || variable.vt_up ) & dot.agony.remains",
|
|
["action"] = "soul_rot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.ps_up & variable.vt_up & variable.sr_up",
|
|
["action"] = "malevolence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ! talent.wither.enabled & dot.corruption.remains < 5 ) || ( talent.wither.enabled & dot.wither.remains < 5 ) ) & ! ( action.seed_of_corruption.in_flight || active_dot.seed_of_corruption > 0 )",
|
|
["action"] = "seed_of_corruption",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "corruption",
|
|
["criteria"] = "remains < 5 & ! talent.seed_of_corruption.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wither",
|
|
["criteria"] = "remains < 5 & ! talent.seed_of_corruption.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.ps_up & variable.vt_up & variable.sr_up",
|
|
["action"] = "summon_darkglare",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.summon_darkglare.remains > 15 || soul_shard > 3 || ( talent.demonic_soul.enabled & soul_shard > 2 ) ) & buff.tormented_crescendo.up",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard > 4 || ( talent.tormented_crescendo.enabled & buff.tormented_crescendo.stack = 1 & soul_shard > 3 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.demonic_soul.enabled & ( soul_shard > 2 || ( talent.tormented_crescendo.enabled & buff.tormented_crescendo.stack = 1 & soul_shard ) )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tormented_crescendo.enabled & buff.tormented_crescendo.up",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tormented_crescendo.enabled & buff.tormented_crescendo.stack = 2",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.cd_dots_up || variable.vt_ps_up ) & ( soul_shard > 2 || cooldown.oblivion.remains > 10 || ! talent.oblivion.enabled )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tormented_crescendo.enabled & talent.nightfall.enabled & buff.tormented_crescendo.up & buff.nightfall.up",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "drain_soul",
|
|
["criteria"] = "talent.drain_soul.enabled & buff.nightfall.up & talent.shadow_embrace.enabled & ( debuff.shadow_embrace.stack < 4 || debuff.shadow_embrace.remains < 3 )",
|
|
["interrupt_if"] = "cooldown.vile_taint.ready",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "drain_soul",
|
|
["interrupt_if"] = "cooldown.vile_taint.ready",
|
|
["criteria"] = "talent.drain_soul.enabled & ( talent.shadow_embrace.enabled & ( debuff.shadow_embrace.stack < 4 || debuff.shadow_embrace.remains < 3 ) ) || ! talent.shadow_embrace.enabled",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.nightfall.up & talent.shadow_embrace.enabled & ( debuff.shadow_embrace.stack < 2 || debuff.shadow_embrace.remains < 3 )",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "spell_lock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "variables",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "ogcd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "This entry is manually translated and will differ from SIMC, but maintains the same functionality.",
|
|
["criteria"] = "active_enemies = 2 || active_enemies > 2 & variable.cleave_apl",
|
|
["list_name"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "end_of_fight",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.vile_taint.enabled || remains < cooldown.vile_taint.remains + action.vile_taint.cast_time ) & ( talent.absolute_corruption.enabled & remains < 3 || ! talent.absolute_corruption.enabled & remains < 5 || cooldown.soul_rot.remains < 5 & remains < 8 ) & fight_remains > dot.agony.remains + 5",
|
|
["action"] = "agony",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.demonic_soul.enabled & buff.nightfall.stack < 2 - prev_gcd.1.drain_soul & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains )",
|
|
["action"] = "haunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_dot.unstable_affliction = 0 || ticking ) & ( talent.absolute_corruption.enabled & remains < 3 || ! talent.absolute_corruption.enabled & remains < 5 || cooldown.soul_rot.remains < 5 & remains < 8 ) & ( ! talent.demonic_soul.enabled || buff.nightfall.stack < 2 || prev_gcd.1.haunt & buff.nightfall.stack < 2 ) & fight_remains > dot.unstable_affliction.remains + 5",
|
|
["action"] = "unstable_affliction",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.absolute_corruption.enabled & debuff.haunt.remains < 3 || ! talent.absolute_corruption.enabled & debuff.haunt.remains < 5 || cooldown.soul_rot.remains < 5 & debuff.haunt.remains < 8 ) & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains ) & fight_remains > debuff.haunt.remains + 5",
|
|
["action"] = "haunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.wither.enabled & ! ( action.seed_of_corruption.in_flight || active_dot.seed_of_corruption > 0 ) & ( talent.absolute_corruption.enabled & remains < 3 || ! talent.absolute_corruption.enabled & remains < 5 ) & fight_remains > dot.wither.remains + 5",
|
|
["action"] = "wither",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ( action.seed_of_corruption.in_flight || active_dot.seed_of_corruption > 0 ) & refreshable & fight_remains > dot.corruption.remains + 5",
|
|
["action"] = "corruption",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.nightfall.up & ( buff.nightfall.stack > 1 || buff.nightfall.remains < execute_time * 2 ) & ! buff.tormented_crescendo.up & cooldown.soul_rot.remains & soul_shard < 5 - buff.tormented_crescendo.up & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains )",
|
|
["action"] = "drain_soul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.nightfall.up & ( buff.nightfall.stack > 1 || buff.nightfall.remains < execute_time * 2 ) & buff.tormented_crescendo.stack < 2 & cooldown.soul_rot.remains & soul_shard < 5 - buff.tormented_crescendo.up & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains )",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.wither.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "se_maintenance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.soul_rot.enabled || cooldown.soul_rot.remains > 20 || cooldown.soul_rot.remains <= execute_time + gcd.max || boss & fight_remains < cooldown.soul_rot.remains ) & dot.agony.remains & ( dot.corruption.remains || dot.wither.remains ) & dot.unstable_affliction.remains",
|
|
["action"] = "vile_taint",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.soul_rot.enabled || cooldown.soul_rot.remains < 4 || boss & fight_remains < cooldown.soul_rot.remains ) & dot.agony.remains & ( dot.corruption.remains || dot.wither.remains ) & dot.unstable_affliction.remains",
|
|
["action"] = "phantom_singularity",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.vt_ps_up",
|
|
["action"] = "malevolence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.vt_ps_up",
|
|
["action"] = "soul_rot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_dots_up & ( debuff.shadow_embrace.stack = debuff.shadow_embrace.max_stack )",
|
|
["action"] = "summon_darkglare",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.demonic_soul.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "se_maintenance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard > 4 & ( talent.demonic_soul.enabled & buff.nightfall.stack < 2 || ! talent.demonic_soul.enabled ) || buff.tormented_crescendo.stack > 1",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.demonic_soul.enabled & buff.nightfall.up & buff.tormented_crescendo.stack < 2 & target.health.pct < 20",
|
|
["action"] = "drain_soul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.demonic_soul.enabled & ( soul_shard > 1 || buff.tormented_crescendo.up & cooldown.soul_rot.remains > buff.tormented_crescendo.remains * gcd.max ) & ( ! talent.vile_taint.enabled || soul_shard > 1 & cooldown.vile_taint.remains > 10 ) & ( ! talent.oblivion.enabled || cooldown.oblivion.remains > 10 || soul_shard > 2 & cooldown.oblivion.remains < 10 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.agony.remains & ( dot.corruption.remains || dot.wither.remains ) & dot.unstable_affliction.remains & debuff.haunt.remains > 5",
|
|
["action"] = "oblivion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tormented_crescendo.enabled & buff.tormented_crescendo.up & ( buff.tormented_crescendo.remains < gcd.max * 2 || buff.tormented_crescendo.stack = 2 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.cd_dots_up || ( talent.demonic_soul.enabled || talent.phantom_singularity.enabled ) & variable.vt_ps_up || talent.wither.enabled & variable.vt_ps_up & ! dot.soul_rot.remains & soul_shard > 2 ) & ( ! talent.oblivion.enabled || cooldown.oblivion.remains > 10 || soul_shard > 2 & cooldown.oblivion.remains < 10 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tormented_crescendo.enabled & talent.nightfall.enabled & buff.tormented_crescendo.up & buff.nightfall.up || talent.demonic_soul.enabled & ! buff.nightfall.up & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains > 10 || soul_shard > 1 & cooldown.vile_taint.remains < 10 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.demonic_soul.enabled & buff.tormented_crescendo.up",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.nightfall.up",
|
|
["action"] = "drain_soul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.nightfall.up",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable",
|
|
["action"] = "agony",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_dot.unstable_affliction = 0 || ticking ) & refreshable",
|
|
["action"] = "unstable_affliction",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "drain_soul",
|
|
["interrupt_if"] = "tick_time>0.5",
|
|
["early_chain_if"] = "buff.nightfall.up",
|
|
["chain"] = "1",
|
|
},
|
|
{
|
|
["action"] = "shadow_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time > 0 & ! pet.alive",
|
|
["action"] = "fel_domination",
|
|
},
|
|
{
|
|
["action"] = "summon_pet",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "toggle.funnel",
|
|
["var_name"] = "cleave_apl",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff",
|
|
["description"] = "Used to set Trinket in slot 1 as Buff Trinkets for the automatic logic",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff",
|
|
["description"] = "Used to set Trinkets in slot 2 as Buff Trinkets for the automatic logic",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Automatic Logic for Buff Trinkets in Trinket Slot 1",
|
|
["criteria"] = "variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % cooldown.soul_rot.duration = 0 || cooldown.soul_rot.duration % trinket.t1.cooldown.duration = 0 )",
|
|
["value"] = "1",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["var_name"] = "trinket_1_sync",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Automatic Logic for Buff Trinkets in Trinket Slot 2",
|
|
["criteria"] = "variable.trinket_2_buffs & ( trinket.t2.cooldown.duration % cooldown.soul_rot.duration = 0 || cooldown.soul_rot.duration % trinket.t2.cooldown.duration = 0 )",
|
|
["value"] = "1",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["var_name"] = "trinket_2_sync",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.spymasters_web || trinket.t1.is.aberrant_spellforge",
|
|
["description"] = " Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic",
|
|
["var_name"] = "trinket_1_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.spymasters_web || trinket.t2.is.aberrant_spellforge",
|
|
["description"] = " Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic",
|
|
["var_name"] = "trinket_2_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.ruby_whelp_shell",
|
|
["description"] = "For On Use Trinkets on slot 1 with on use effects you dont want to use in combat",
|
|
["var_name"] = "trinket_1_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.ruby_whelp_shell",
|
|
["description"] = "For On Use Trinkets on Slot 2 with on use effects you don't want to use in combat",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.buff_duration + ( trinket.t1.is.mirror_of_fractured_tomorrows * 20 )",
|
|
["description"] = " Sets the duration of Trinket 1 in the automatic logic",
|
|
["var_name"] = "trinket_1_buff_duration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.buff_duration + ( trinket.t2.is.mirror_of_fractured_tomorrows * 20 )",
|
|
["description"] = " Sets the duration of Trinket 2 in the automatic logic",
|
|
["var_name"] = "trinket_2_buff_duration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Automatic Logic in case of 2 On Use Buff Trinkets",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / variable.trinket_2_buff_duration ) * ( 1 + 0.5 * trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / variable.trinket_1_buff_duration ) * ( 1 + 0.5 * trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
["value"] = "2",
|
|
["action"] = "variable",
|
|
["value_else"] = "1",
|
|
["var_name"] = "trinket_priority",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.grimoire_of_sacrifice.enabled",
|
|
["action"] = "grimoire_of_sacrifice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.seed_of_corruption_aoe > 2 || spell_targets.seed_of_corruption_aoe > 1 & talent.demonic_soul.enabled",
|
|
["action"] = "seed_of_corruption",
|
|
},
|
|
{
|
|
["action"] = "haunt",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["opener_cleave_se"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadow_embrace.enabled & talent.drain_soul.enabled & buff.nightfall.up & ( debuff.shadow_embrace.stack < debuff.shadow_embrace.max_stack || debuff.shadow_embrace.remains < 3 ) & ( target.time_to_die > 15 || time < 20 )",
|
|
["action"] = "drain_soul",
|
|
["interrupt_if"] = "debuff.shadow_embrace.stack=debuff.shadow_embrace.max_stack",
|
|
},
|
|
},
|
|
["end_of_fight"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.demonic_soul.enabled & ( boss & fight_remains < 5 & buff.nightfall.up || prev_gcd.1.haunt & buff.nightfall.stack = 2 & ! buff.tormented_crescendo.up )",
|
|
["action"] = "drain_soul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard > 1 & boss & fight_remains < ( soul_shard + buff.tormented_crescendo.up ) * gcd.max + execute_time",
|
|
["action"] = "oblivion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 4 & ( ! talent.demonic_soul.enabled || talent.demonic_soul.enabled & buff.nightfall.stack < 1 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
},
|
|
["variables"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! talent.phantom_singularity.enabled || dot.phantom_singularity.up",
|
|
["var_name"] = "ps_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! talent.vile_taint.enabled || dot.vile_taint_dot.up",
|
|
["var_name"] = "vt_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( ! talent.vile_taint.enabled & ! talent.phantom_singularity.enabled ) || dot.vile_taint_dot.up || dot.phantom_singularity.up",
|
|
["var_name"] = "vt_ps_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! talent.soul_rot.enabled || dot.soul_rot.up",
|
|
["var_name"] = "sr_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.ps_up & variable.vt_up & variable.sr_up",
|
|
["var_name"] = "cd_dots_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.phantom_singularity.enabled || talent.vile_taint.enabled || talent.soul_rot.enabled || talent.summon_darkglare.enabled",
|
|
["var_name"] = "has_cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! variable.has_cds || ( variable.cd_dots_up & ( ! talent.summon_darkglare.enabled || cooldown.summon_darkglare.remains > 20 || pet.darkglare.remains ) )",
|
|
["var_name"] = "cds_active",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "min_vt",
|
|
["criteria"] = "variable.min_vt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "min_ps",
|
|
["criteria"] = "variable.min_ps",
|
|
},
|
|
},
|
|
["ogcd"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cds_active || fight_remains < 32 || prev_gcd.1.soul_rot & time < 20",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cds_active || fight_remains < 14 || prev_gcd.1.soul_rot & time < 20",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cds_active || fight_remains < 17 || prev_gcd.1.soul_rot & time < 20",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cds_active || fight_remains < 10 || prev_gcd.1.soul_rot & time < 20",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cds_active || fight_remains < 17 || prev_gcd.1.soul_rot & time < 20",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
},
|
|
},
|
|
["author"] = "SimC",
|
|
},
|
|
["Preservation"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20240730,
|
|
["spec"] = 1468,
|
|
["desc"] = "Healer priorities are DPS-focused only\n\n2024-07-30: The War Within",
|
|
["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=empowering.fire_breath||fight_remains>cast_time\nactions+=/hover,if=moving&buff.hover.down&settings.use_hover\nactions+=/disintegrate,if=buff.essence_burst.up&(!moving||buff.hover.remains>cast_time)||essence.time_to_max<cast_time&settings.spend_essence\nactions+=/azure_strike,if=active_enemies>2\nactions+=/living_flame,if=!moving||buff.hover.remains>cast_time\nactions+=/azure_strike,if=moving&buff.hover.down",
|
|
["version"] = 20240730,
|
|
["warnings"] = "Imported 2 action lists.\n",
|
|
["author"] = "Kahekili",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "quell",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "cauterizing_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "unravel",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "deep_breath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "use_items",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > 14 + cast_time",
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > 8 + cast_time",
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > 2 + cast_time",
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "3",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "empowering.fire_breath || fight_remains > cast_time",
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "4",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "moving & buff.hover.down & settings.use_hover",
|
|
["action"] = "hover",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.essence_burst.up & ( ! moving || buff.hover.remains > cast_time ) || essence.time_to_max < cast_time & settings.spend_essence",
|
|
["action"] = "disintegrate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2",
|
|
["action"] = "azure_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! moving || buff.hover.remains > cast_time",
|
|
["action"] = "living_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "moving & buff.hover.down",
|
|
["action"] = "azure_strike",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "blessing_of_the_bronze",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["Fury"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241119,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-11-19: Fix Slayer Execute vs. Rampage\n\n2024-11-09: Fix Reckless Abandon and action-list splitting\n\n2024-10-30: SimC update\n\n2024-10-22: 11.0.5 update; enable pre-Hero talents\n\n2024-10-21: SimC update\n\n2024-10-06: Fix trinket/variables order\n\n2024-09-03, 09-05, 09-10, 09-22: SimC update\n\n2024-08-25: Update using Icy-Veins\n\n2024-08-15: Sim update\n\n2024-07-30: Sim update\n\n2024-07-23: The War Within",
|
|
["profile"] = "actions.precombat+=/battle_shout\nactions.precombat+=/berserker_stance,toggle=on\nactions.precombat+=/variable,name=treacherous_transmitter_precombat_cast,value=2\nactions.precombat+=/use_item,name=treacherous_transmitter\nactions.precombat+=/recklessness,if=!equipped.fyralath_the_dreamrender\nactions.precombat+=/avatar,if=!talent.titans_torment\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.treacherous_transmitter\n# Evaluates a trinkets cooldown, divided by avatar or odyns fur. If it's value has no remainder return 1, else return 0.5.\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=trinket.1.has_use_buff&(trinket.1.cooldown.duration%%cooldown.avatar.duration=0||trinket.1.cooldown.duration%%cooldown.odyns_fury.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=trinket.2.has_use_buff&(trinket.2.cooldown.duration%%cooldown.avatar.duration=0||trinket.2.cooldown.duration%%cooldown.odyns_fury.duration=0)\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_stat.any_dps&!variable.trinket_1_exclude)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_stat.any_dps&!variable.trinket_2_exclude)\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync))\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.algethar_puzzle_box\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.algethar_puzzle_box\n\nactions+=/pummel,if=target.debuff.casting.react\nactions+=/charge,if=time<=0.5||movement.distance>5\nactions+=/heroic_leap,if=movement.distance>25\nactions+=/potion\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=execute_phase,value=(talent.massacre.enabled&target.health.pct<35)||target.health.pct<20\n## actions.trinkets+=/do_treacherous_transmitter_task\nactions+=/use_item,name=treacherous_transmitter,if=variable.adds_remain||variable.st_planning\n# Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.\nactions+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&!variable.trinket_1_manual&(!buff.avatar.up&trinket.1.cast_time>0||!trinket.1.cast_time>0)&((talent.titans_torment&cooldown.avatar.ready)||(buff.avatar.up&!talent.titans_torment))&(variable.trinket_2_exclude||!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains&boss\nactions+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&(!buff.avatar.up&trinket.2.cast_time>0||!trinket.2.cast_time>0)&((talent.titans_torment&cooldown.avatar.ready)||(buff.avatar.up&!talent.titans_torment))&(variable.trinket_1_exclude||!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains&boss\n# If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.\nactions+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)&!variable.trinket_1_manual&(!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs)||(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)&!variable.trinket_2_manual&(!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs)||(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions+=/use_item,slot=main_hand,if=!equipped.fyralath_the_dreamrender&(!variable.trinket_1_buffs||trinket.1.cooldown.remains)&(!variable.trinket_2_buffs||trinket.2.cooldown.remains)\nactions+=/lights_judgment,if=buff.recklessness.down&buff.avatar.down&rage<80&buff.bloodbath.down&buff.crushing_blow.down&buff.sudden_death.down&!cooldown.bladestorm.ready&(!cooldown.execute.ready||!variable.execute_phase)\nactions+=/bag_of_tricks,if=buff.recklessness.down&buff.avatar.down&rage<80&buff.bloodbath.down&buff.crushing_blow.down&buff.sudden_death.down&!cooldown.bladestorm.ready&(!cooldown.execute.ready||!variable.execute_phase)\nactions+=/berserking,if=buff.recklessness.up\nactions+=/blood_fury\nactions+=/fireblood\nactions+=/ancestral_call\n## actions+=/invoke_external_buff,name=power_infusion,if=buff.avatar.remains>15&fight_remains>=135||variable.execute_phase&buff.avatar.up||fight_remains<=25\nactions+=/run_action_list,name=slayer_ra_st,strict=1,if=talent.slayers_dominance&talent.reckless_abandon&active_enemies=1\nactions+=/run_action_list,name=slayer_am_st,strict=1,if=talent.slayers_dominance&(talent.anger_management||!talent.reckless_abandon)&active_enemies=1\nactions+=/run_action_list,name=slayer_ra_mt,strict=1,if=talent.slayers_dominance&talent.reckless_abandon&active_enemies>1\nactions+=/run_action_list,name=slayer_am_mt,strict=1,if=talent.slayers_dominance&(talent.anger_management||!talent.reckless_abandon)&active_enemies>1\nactions+=/run_action_list,name=thane_ra_st,strict=1,if=!talent.slayers_dominance&talent.reckless_abandon&active_enemies=1\nactions+=/run_action_list,name=thane_am_st,strict=1,if=!talent.slayers_dominance&(talent.anger_management||!talent.reckless_abandon)&active_enemies=1\nactions+=/run_action_list,name=thane_ra_mt,strict=1,if=!talent.slayers_dominance&talent.reckless_abandon&active_enemies>1\nactions+=/run_action_list,name=thane_am_mt,strict=1,if=!talent.slayers_dominance&(talent.anger_management||!talent.reckless_abandon)&active_enemies>1\n\nactions.slayer_am_st+=/recklessness,if=(!talent.anger_management&cooldown.avatar.remains<1&talent.titans_torment)||talent.anger_management||!talent.titans_torment\nactions.slayer_am_st+=/avatar,if=(talent.titans_torment&(buff.enrage.up||talent.titanic_rage)&(debuff.champions_might.up||!talent.champions_might))||!talent.titans_torment\nactions.slayer_am_st+=/thunderous_roar,if=buff.enrage.up\nactions.slayer_am_st+=/champions_spear,if=(buff.enrage.up&talent.titans_torment&cooldown.avatar.remains<gcd)||(buff.enrage.up&!talent.titans_torment)\nactions.slayer_am_st+=/odyns_fury,if=dot.odyns_fury_torment_mh.remains<1&(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.slayer_am_st+=/execute,if=debuff.marked_for_execution.stack=3||talent.ashen_juggernaut&buff.ashen_juggernaut.remains<2||buff.sudden_death.stack=2&buff.sudden_death.remains<7||buff.sudden_death.up&buff.sudden_death.remains<2\nactions.slayer_am_st+=/rampage,if=talent.bladestorm&cooldown.bladestorm.remains<=gcd&!debuff.champions_might.up\nactions.slayer_am_st+=/bladestorm,if=buff.enrage.up&(cooldown.recklessness.remains>=9||cooldown.avatar.remains>=9)\nactions.slayer_am_st+=/onslaught,if=talent.tenderize&buff.brutal_finish.up\nactions.slayer_am_st+=/rampage,if=!buff.enrage.up\nactions.slayer_am_st+=/raging_blow,if=buff.opportunist.up\nactions.slayer_am_st+=/bloodthirst,if=target.health.pct<35&talent.vicious_contempt&buff.bloodcraze.stack>=2\nactions.slayer_am_st+=/rampage,if=action.raging_blow.charges<=1&rage>=115\nactions.slayer_am_st+=/bloodthirst,if=buff.bloodcraze.stack>3||crit_pct_current>=85\nactions.slayer_am_st+=/raging_blow\nactions.slayer_am_st+=/bloodthirst\nactions.slayer_am_st+=/execute\nactions.slayer_am_st+=/rampage\nactions.slayer_am_st+=/onslaught,if=talent.tenderize\nactions.slayer_am_st+=/whirlwind,if=talent.meat_cleaver\nactions.slayer_am_st+=/slam\nactions.slayer_am_st+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_ra_st+=/recklessness,if=cooldown.avatar.remains<1&talent.titans_torment||!talent.titans_torment\nactions.slayer_ra_st+=/rampage,if=!buff.enrage.up\nactions.slayer_ra_st+=/avatar,if=(talent.titans_torment&(buff.enrage.up||talent.titanic_rage)&(debuff.champions_might.up||!talent.champions_might))||!talent.titans_torment\nactions.slayer_ra_st+=/thunderous_roar,if=buff.enrage.up\nactions.slayer_ra_st+=/champions_spear,if=(buff.enrage.up&talent.titans_torment&cooldown.avatar.remains<gcd)||(buff.enrage.up&!talent.titans_torment)\nactions.slayer_ra_st+=/odyns_fury,if=dot.odyns_fury_torment_mh.remains<1&(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.slayer_ra_st+=/rampage,if=talent.bladestorm&cooldown.bladestorm.remains<=gcd&!debuff.champions_might.up\nactions.slayer_ra_st+=/bladestorm,if=buff.enrage.up&cooldown.avatar.remains>=9\nactions.slayer_ra_st+=/execute,if=debuff.marked_for_execution.stack=3||talent.ashen_juggernaut&buff.ashen_juggernaut.remains<2||buff.sudden_death.stack=2&buff.sudden_death.remains<7||buff.sudden_death.up&buff.sudden_death.remains<2\nactions.slayer_ra_st+=/onslaught,if=talent.tenderize&buff.brutal_finish.up\nactions.slayer_ra_st+=/bloodbath,if=crit_pct_current>=85||buff.bloodcraze.stack>=3\nactions.slayer_ra_st+=/crushing_blow\nactions.slayer_ra_st+=/onslaught,if=talent.tenderize\nactions.slayer_ra_st+=/bloodbath,if=target.health.pct<35&talent.vicious_contempt\nactions.slayer_ra_st+=/rampage,if=rage>=115\nactions.slayer_ra_st+=/raging_blow\nactions.slayer_ra_st+=/bloodbath\nactions.slayer_ra_st+=/rampage\nactions.slayer_ra_st+=/bloodthirst\nactions.slayer_ra_st+=/execute\nactions.slayer_ra_st+=/onslaught\nactions.slayer_ra_st+=/whirlwind,if=talent.meat_cleaver\nactions.slayer_ra_st+=/slam\nactions.slayer_ra_st+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_am_mt+=/recklessness\nactions.slayer_am_mt+=/avatar,if=(talent.titans_torment&(buff.enrage.up||talent.titanic_rage)&(debuff.champions_might.up||!talent.champions_might))||!talent.titans_torment\nactions.slayer_am_mt+=/thunderous_roar,if=buff.enrage.up\nactions.slayer_am_mt+=/champions_spear,if=(buff.enrage.up&talent.titans_torment&cooldown.avatar.remains<gcd)||(buff.enrage.up&!talent.titans_torment)\nactions.slayer_am_mt+=/odyns_fury,if=dot.odyns_fury_torment_mh.remains<1&(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.slayer_am_mt+=/whirlwind,if=buff.meat_cleaver.stack=0&talent.meat_cleaver\nactions.slayer_am_mt+=/execute,if=talent.ashen_juggernaut&buff.ashen_juggernaut.remains<=gcd&buff.enrage.up\nactions.slayer_am_mt+=/rampage,if=talent.bladestorm&cooldown.bladestorm.remains<=gcd&!debuff.champions_might.up\nactions.slayer_am_mt+=/bladestorm,if=buff.enrage.up&cooldown.avatar.remains>=5\nactions.slayer_am_mt+=/onslaught,if=talent.tenderize\nactions.slayer_am_mt+=/execute,if=buff.enrage.up&debuff.marked_for_execution.stack=3\nactions.slayer_am_mt+=/rampage,if=!buff.enrage.up\nactions.slayer_am_mt+=/bloodthirst\nactions.slayer_am_mt+=/rampage,if=buff.slaughtering_strikes.stack>=2\nactions.slayer_am_mt+=/raging_blow\nactions.slayer_am_mt+=/execute,if=buff.enrage.up\nactions.slayer_am_mt+=/rampage\nactions.slayer_am_mt+=/onslaught\nactions.slayer_am_mt+=/whirlwind\nactions.slayer_am_mt+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_ra_mt+=/recklessness,if=(!talent.anger_management&cooldown.avatar.remains<1&talent.titans_torment)||!talent.titans_torment\nactions.slayer_ra_mt+=/avatar,if=(talent.titans_torment&(buff.enrage.up||talent.titanic_rage)&(debuff.champions_might.up||!talent.champions_might))||!talent.titans_torment&buff.enrage.up\nactions.slayer_ra_mt+=/rampage,if=!buff.enrage.up&!talent.titans_torment\nactions.slayer_ra_mt+=/thunderous_roar,if=buff.enrage.up\nactions.slayer_ra_mt+=/champions_spear,if=(buff.enrage.up&talent.titans_torment&cooldown.avatar.remains<gcd)||(buff.enrage.up&!talent.titans_torment)\nactions.slayer_ra_mt+=/odyns_fury,if=dot.odyns_fury_torment_mh.remains<1&(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.slayer_ra_mt+=/rampage,if=talent.bladestorm&cooldown.bladestorm.remains<=gcd&!debuff.champions_might.up\nactions.slayer_ra_mt+=/bladestorm,if=buff.enrage.up&cooldown.avatar.remains>=9&buff.enrage.remains>3\nactions.slayer_ra_mt+=/whirlwind,if=buff.meat_cleaver.stack=0&talent.meat_cleaver\nactions.slayer_ra_mt+=/execute,if=talent.ashen_juggernaut&buff.ashen_juggernaut.remains<=gcd&buff.enrage.up\nactions.slayer_ra_mt+=/onslaught,if=talent.tenderize&buff.brutal_finish.up\nactions.slayer_ra_mt+=/rampage,if=!buff.enrage.up\nactions.slayer_ra_mt+=/bloodbath,if=active_enemies>=6\nactions.slayer_ra_mt+=/crushing_blow\nactions.slayer_ra_mt+=/bloodbath\nactions.slayer_ra_mt+=/bloodthirst,if=active_enemies>=6\nactions.slayer_ra_mt+=/execute,if=buff.enrage.up&debuff.marked_for_execution.up\nactions.slayer_ra_mt+=/onslaught,if=talent.tenderize\nactions.slayer_ra_mt+=/rampage,if=rage>115\nactions.slayer_ra_mt+=/raging_blow,if=talent.slaughtering_strikes\nactions.slayer_ra_mt+=/onslaught\nactions.slayer_ra_mt+=/bloodthirst\nactions.slayer_ra_mt+=/raging_blow\nactions.slayer_ra_mt+=/whirlwind\nactions.slayer_ra_mt+=/storm_bolt,if=buff.bladestorm.up\n\nactions.thane_am_st+=/recklessness,if=talent.anger_management||!talent.titans_torment\nactions.thane_am_st+=/thunder_blast,if=buff.enrage.up\nactions.thane_am_st+=/avatar,if=(talent.titans_torment&(buff.enrage.up||talent.titanic_rage)&(debuff.champions_might.up||!talent.champions_might))||!talent.titans_torment\nactions.thane_am_st+=/ravager\nactions.thane_am_st+=/thunderous_roar,if=buff.enrage.up\nactions.thane_am_st+=/champions_spear,if=buff.enrage.up&(cooldown.avatar.remains<gcd||!talent.titans_torment)\nactions.thane_am_st+=/odyns_fury,if=dot.odyns_fury_torment_mh.remains<1&(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.thane_am_st+=/execute,if=talent.ashen_juggernaut&buff.ashen_juggernaut.remains<=gcd&buff.enrage.up\nactions.thane_am_st+=/rampage,if=talent.bladestorm&cooldown.bladestorm.remains<=gcd&!debuff.champions_might.up\nactions.thane_am_st+=/bladestorm,if=buff.enrage.up&talent.unhinged\nactions.thane_am_st+=/onslaught,if=talent.tenderize\nactions.thane_am_st+=/rampage\nactions.thane_am_st+=/bloodthirst,if=talent.vicious_contempt&target.health.pct<35&buff.bloodcraze.stack>=2||!dot.ravager.remains&buff.bloodcraze.stack>=3\nactions.thane_am_st+=/raging_blow\nactions.thane_am_st+=/execute,if=talent.ashen_juggernaut\nactions.thane_am_st+=/bloodthirst\nactions.thane_am_st+=/execute\nactions.thane_am_st+=/thunder_clap\n\nactions.thane_ra_st+=/recklessness,if=(!talent.anger_management&cooldown.avatar.remains<1&talent.titans_torment)||talent.anger_management||!talent.titans_torment\nactions.thane_ra_st+=/thunder_blast,if=buff.enrage.up\nactions.thane_ra_st+=/avatar,if=(talent.titans_torment&(buff.enrage.up||talent.titanic_rage)&(debuff.champions_might.up||!talent.champions_might))||!talent.titans_torment&buff.enrage.up\nactions.thane_ra_st+=/ravager\nactions.thane_ra_st+=/thunderous_roar,if=buff.enrage.up\nactions.thane_ra_st+=/champions_spear,if=buff.enrage.up&(cooldown.avatar.remains<gcd||!talent.titans_torment)\nactions.thane_ra_st+=/odyns_fury,if=dot.odyns_fury_torment_mh.remains<1&(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.thane_ra_st+=/execute,if=talent.ashen_juggernaut&buff.ashen_juggernaut.remains<=gcd&buff.enrage.up\nactions.thane_ra_st+=/rampage,if=talent.bladestorm&cooldown.bladestorm.remains<=gcd&!debuff.champions_might.up\nactions.thane_ra_st+=/bladestorm,if=buff.enrage.up&talent.unhinged\nactions.thane_ra_st+=/rampage,if=!buff.enrage.up\nactions.thane_ra_st+=/bloodbath,if=talent.vicious_contempt&target.health.pct<35||buff.bloodcraze.stack>=3\nactions.thane_ra_st+=/crushing_blow\nactions.thane_ra_st+=/onslaught,if=talent.tenderize\nactions.thane_ra_st+=/rampage,if=rage>=115\nactions.thane_ra_st+=/raging_blow\nactions.thane_ra_st+=/bloodbath\nactions.thane_ra_st+=/bloodthirst,if=buff.enrage.up&!buff.burst_of_power.up\nactions.thane_ra_st+=/rampage\nactions.thane_ra_st+=/execute\nactions.thane_ra_st+=/onslaught\nactions.thane_ra_st+=/bloodthirst\nactions.thane_ra_st+=/thunder_clap\nactions.thane_ra_st+=/whirlwind,if=talent.meat_cleaver\nactions.thane_ra_st+=/slam\n\nactions.thane_am_mt+=/recklessness,if=(!talent.anger_management&cooldown.avatar.remains<1&talent.titans_torment)||talent.anger_management||!talent.titans_torment\nactions.thane_am_mt+=/thunder_blast,if=buff.enrage.up\nactions.thane_am_mt+=/avatar,if=(talent.titans_torment&(buff.enrage.up||talent.titanic_rage)&(debuff.champions_might.up||!talent.champions_might))||!talent.titans_torment\nactions.thane_am_mt+=/thunder_clap,if=buff.meat_cleaver.stack=0&talent.meat_cleaver\nactions.thane_am_mt+=/thunderous_roar,if=buff.enrage.up\nactions.thane_am_mt+=/ravager\nactions.thane_am_mt+=/champions_spear,if=buff.enrage.up\nactions.thane_am_mt+=/odyns_fury,if=dot.odyns_fury_torment_mh.remains<1&(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.thane_am_mt+=/execute,if=talent.ashen_juggernaut&buff.ashen_juggernaut.remains<=gcd&buff.enrage.up\nactions.thane_am_mt+=/rampage,if=talent.bladestorm&cooldown.bladestorm.remains<=gcd&!debuff.champions_might.up\nactions.thane_am_mt+=/bladestorm,if=buff.enrage.up\nactions.thane_am_mt+=/onslaught,if=talent.tenderize\nactions.thane_am_mt+=/rampage\nactions.thane_am_mt+=/bloodthirst\nactions.thane_am_mt+=/thunder_clap,if=active_enemies>=3\nactions.thane_am_mt+=/raging_blow\nactions.thane_am_mt+=/thunder_clap\nactions.thane_am_mt+=/onslaught\nactions.thane_am_mt+=/execute\nactions.thane_am_mt+=/whirlwind\nactions.thane_am_mt+=/slam\n\nactions.thane_ra_mt+=/recklessness,if=cooldown.avatar.remains<1&talent.titans_torment||!talent.titans_torment\nactions.thane_ra_mt+=/thunder_blast,if=buff.enrage.up\nactions.thane_ra_mt+=/avatar,if=(talent.titans_torment&(buff.enrage.up||talent.titanic_rage)&(debuff.champions_might.up||!talent.champions_might))||!talent.titans_torment&buff.enrage.up\nactions.thane_ra_mt+=/thunder_clap,if=buff.meat_cleaver.stack=0&talent.meat_cleaver\nactions.thane_ra_mt+=/thunderous_roar,if=buff.enrage.up\nactions.thane_ra_mt+=/ravager\nactions.thane_ra_mt+=/champions_spear,if=buff.enrage.up\nactions.thane_ra_mt+=/odyns_fury,if=dot.odyns_fury_torment_mh.remains<1&(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.thane_ra_mt+=/execute,if=talent.ashen_juggernaut&buff.ashen_juggernaut.remains<=gcd&buff.enrage.up\nactions.thane_ra_mt+=/rampage,if=talent.bladestorm&cooldown.bladestorm.remains<=gcd&!debuff.champions_might.up\nactions.thane_ra_mt+=/bladestorm,if=buff.enrage.up\nactions.thane_ra_mt+=/onslaught,if=talent.tenderize\nactions.thane_ra_mt+=/rampage,if=!buff.enrage.up\nactions.thane_ra_mt+=/bloodbath\nactions.thane_ra_mt+=/crushing_blow\nactions.thane_ra_mt+=/rampage,if=buff.recklessness.up||rage>115\nactions.thane_ra_mt+=/onslaught,if=talent.tenderize\nactions.thane_ra_mt+=/bloodthirst\nactions.thane_ra_mt+=/thunder_clap\nactions.thane_ra_mt+=/raging_blow\nactions.thane_ra_mt+=/onslaught\nactions.thane_ra_mt+=/rampage\nactions.thane_ra_mt+=/execute\nactions.thane_ra_mt+=/whirlwind",
|
|
["version"] = 20241119,
|
|
["warnings"] = "The import for 'slayer_ra_st' required some automated changes.\nLine 1: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 1: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 3: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 3: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 3: Converted 'talent.champions_might' to 'talent.champions_might.enabled' (1x).\nLine 3: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 5: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 5: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 6: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 7: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 9: Converted 'talent.ashen_juggernaut' to 'talent.ashen_juggernaut.enabled' (1x).\nLine 10: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 13: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 14: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 22: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\n\nThe import for 'thane_am_st' required some automated changes.\nLine 1: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 1: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 3: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 3: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 3: Converted 'talent.champions_might' to 'talent.champions_might.enabled' (1x).\nLine 3: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 6: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 7: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 8: Converted 'talent.ashen_juggernaut' to 'talent.ashen_juggernaut.enabled' (1x).\nLine 9: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 10: Converted 'talent.unhinged' to 'talent.unhinged.enabled' (1x).\nLine 11: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 13: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 15: Converted 'talent.ashen_juggernaut' to 'talent.ashen_juggernaut.enabled' (1x).\n\nThe import for 'slayer_ra_mt' required some automated changes.\nLine 1: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 1: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 1: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 2: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 2: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 2: Converted 'talent.champions_might' to 'talent.champions_might.enabled' (1x).\nLine 2: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 3: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 5: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 5: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 6: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 7: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 9: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\nLine 10: Converted 'talent.ashen_juggernaut' to 'talent.ashen_juggernaut.enabled' (1x).\nLine 11: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 18: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 20: Converted 'talent.slaughtering_strikes' to 'talent.slaughtering_strikes.enabled' (1x).\n\nThe import for 'thane_ra_mt' required some automated changes.\nLine 1: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 1: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 3: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 3: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 3: Converted 'talent.champions_might' to 'talent.champions_might.enabled' (1x).\nLine 3: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 4: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\nLine 8: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 9: Converted 'talent.ashen_juggernaut' to 'talent.ashen_juggernaut.enabled' (1x).\nLine 10: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 12: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 17: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 9: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 9: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 9: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 9: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 9: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 9: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 9: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 9: Converted 'trinket.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 10: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 10: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 10: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 10: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 10: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 10: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 10: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 10: Converted 'trinket.2.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 11: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 11: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 11: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 11: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 12: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 12: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 12: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 12: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 12: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 12: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (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.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 13: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 20: Converted 'talent.slayers_dominance' to 'talent.slayers_dominance.enabled' (1x).\nLine 20: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 21: Converted 'talent.slayers_dominance' to 'talent.slayers_dominance.enabled' (1x).\nLine 21: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 21: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 22: Converted 'talent.slayers_dominance' to 'talent.slayers_dominance.enabled' (1x).\nLine 22: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 23: Converted 'talent.slayers_dominance' to 'talent.slayers_dominance.enabled' (1x).\nLine 23: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 23: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 24: Converted 'talent.slayers_dominance' to 'talent.slayers_dominance.enabled' (1x).\nLine 24: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 25: Converted 'talent.slayers_dominance' to 'talent.slayers_dominance.enabled' (1x).\nLine 25: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 25: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 26: Converted 'talent.slayers_dominance' to 'talent.slayers_dominance.enabled' (1x).\nLine 26: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 27: Converted 'talent.slayers_dominance' to 'talent.slayers_dominance.enabled' (1x).\nLine 27: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 27: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 6: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 7: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 8: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 9: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 9: Converted operations in 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%%cooldown.avatar.duration=0||trinket.t1.cooldown.duration%%cooldown.odyns_fury.duration=0)' to 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%cooldown.avatar.duration=0||trinket.t1.cooldown.duration%cooldown.odyns_fury.duration=0)'.\nLine 10: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 10: Converted operations in 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%%cooldown.avatar.duration=0||trinket.t2.cooldown.duration%%cooldown.odyns_fury.duration=0)' to 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%cooldown.avatar.duration=0||trinket.t2.cooldown.duration%cooldown.odyns_fury.duration=0)'.\nLine 11: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 11: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 12: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 12: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 13: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 13: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 13: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 13: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 13: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 13: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 13: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 13: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 13: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 13: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 14: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 15: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\n\nThe import for 'thane_am_mt' required some automated changes.\nLine 1: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 1: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 1: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 1: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 3: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 3: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 3: Converted 'talent.champions_might' to 'talent.champions_might.enabled' (1x).\nLine 3: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 4: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\nLine 8: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 9: Converted 'talent.ashen_juggernaut' to 'talent.ashen_juggernaut.enabled' (1x).\nLine 10: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 12: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\n\nThe import for 'slayer_am_st' required some automated changes.\nLine 1: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 1: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 1: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 1: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 2: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 2: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 2: Converted 'talent.champions_might' to 'talent.champions_might.enabled' (1x).\nLine 2: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 4: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 4: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 5: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 6: Converted 'talent.ashen_juggernaut' to 'talent.ashen_juggernaut.enabled' (1x).\nLine 7: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 9: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 12: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 19: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 20: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\n\nThe import for 'slayer_am_mt' required some automated changes.\nLine 2: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 2: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 2: Converted 'talent.champions_might' to 'talent.champions_might.enabled' (1x).\nLine 2: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 4: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 4: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 5: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 6: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\nLine 7: Converted 'talent.ashen_juggernaut' to 'talent.ashen_juggernaut.enabled' (1x).\nLine 8: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 10: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\n\nThe import for 'thane_ra_st' required some automated changes.\nLine 1: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 1: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 1: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 1: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 3: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 3: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 3: Converted 'talent.champions_might' to 'talent.champions_might.enabled' (1x).\nLine 3: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 6: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 7: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 8: Converted 'talent.ashen_juggernaut' to 'talent.ashen_juggernaut.enabled' (1x).\nLine 9: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 10: Converted 'talent.unhinged' to 'talent.unhinged.enabled' (1x).\nLine 12: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 14: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 24: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\n\nImported 10 action lists.\n",
|
|
["lists"] = {
|
|
["slayer_ra_st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.avatar.remains < 1 & talent.titans_torment.enabled || ! talent.titans_torment.enabled",
|
|
["action"] = "recklessness",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.enrage.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.titans_torment.enabled & ( buff.enrage.up || talent.titanic_rage.enabled ) & ( debuff.champions_might.up || ! talent.champions_might.enabled ) ) || ! talent.titans_torment.enabled",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "thunderous_roar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.enrage.up & talent.titans_torment.enabled & cooldown.avatar.remains < gcd.max ) || ( buff.enrage.up & ! talent.titans_torment.enabled )",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.odyns_fury_torment_mh.remains < 1 & ( buff.enrage.up || talent.titanic_rage.enabled ) & cooldown.avatar.remains",
|
|
["action"] = "odyns_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.bladestorm.enabled & cooldown.bladestorm.remains <= gcd.max & ! debuff.champions_might.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & cooldown.avatar.remains >= 9",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.marked_for_execution.stack = 3 || talent.ashen_juggernaut.enabled & buff.ashen_juggernaut.remains < 2 || buff.sudden_death.stack = 2 & buff.sudden_death.remains < 7 || buff.sudden_death.up & buff.sudden_death.remains < 2",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled & buff.brutal_finish.up",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "crit_pct_current >= 85 || buff.bloodcraze.stack >= 3",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["action"] = "crushing_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 35 & talent.vicious_contempt.enabled",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 115",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["action"] = "raging_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodbath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "rampage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodthirst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "onslaught",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.meat_cleaver.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["thane_am_st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.anger_management.enabled || ! talent.titans_torment.enabled",
|
|
["action"] = "recklessness",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "thunder_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.titans_torment.enabled & ( buff.enrage.up || talent.titanic_rage.enabled ) & ( debuff.champions_might.up || ! talent.champions_might.enabled ) ) || ! talent.titans_torment.enabled",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["action"] = "ravager",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "thunderous_roar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & ( cooldown.avatar.remains < gcd.max || ! talent.titans_torment.enabled )",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.odyns_fury_torment_mh.remains < 1 & ( buff.enrage.up || talent.titanic_rage.enabled ) & cooldown.avatar.remains",
|
|
["action"] = "odyns_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ashen_juggernaut.enabled & buff.ashen_juggernaut.remains <= gcd.max & buff.enrage.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.bladestorm.enabled & cooldown.bladestorm.remains <= gcd.max & ! debuff.champions_might.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & talent.unhinged.enabled",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["action"] = "rampage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.vicious_contempt.enabled & target.health.pct < 35 & buff.bloodcraze.stack >= 2 || ! dot.ravager.remains & buff.bloodcraze.stack >= 3",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["action"] = "raging_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ashen_juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "bloodthirst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["slayer_am_st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.anger_management.enabled & cooldown.avatar.remains < 1 & talent.titans_torment.enabled ) || talent.anger_management.enabled || ! talent.titans_torment.enabled",
|
|
["action"] = "recklessness",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.titans_torment.enabled & ( buff.enrage.up || talent.titanic_rage.enabled ) & ( debuff.champions_might.up || ! talent.champions_might.enabled ) ) || ! talent.titans_torment.enabled",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "thunderous_roar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.enrage.up & talent.titans_torment.enabled & cooldown.avatar.remains < gcd.max ) || ( buff.enrage.up & ! talent.titans_torment.enabled )",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.odyns_fury_torment_mh.remains < 1 & ( buff.enrage.up || talent.titanic_rage.enabled ) & cooldown.avatar.remains",
|
|
["action"] = "odyns_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.marked_for_execution.stack = 3 || talent.ashen_juggernaut.enabled & buff.ashen_juggernaut.remains < 2 || buff.sudden_death.stack = 2 & buff.sudden_death.remains < 7 || buff.sudden_death.up & buff.sudden_death.remains < 2",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.bladestorm.enabled & cooldown.bladestorm.remains <= gcd.max & ! debuff.champions_might.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & ( cooldown.recklessness.remains >= 9 || cooldown.avatar.remains >= 9 )",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled & buff.brutal_finish.up",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.enrage.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.opportunist.up",
|
|
["action"] = "raging_blow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 35 & talent.vicious_contempt.enabled & buff.bloodcraze.stack >= 2",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "action.raging_blow.charges <= 1 & rage >= 115",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bloodcraze.stack > 3 || crit_pct_current >= 85",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["action"] = "raging_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodthirst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "rampage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.meat_cleaver.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["thane_ra_mt"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.avatar.remains < 1 & talent.titans_torment.enabled || ! talent.titans_torment.enabled",
|
|
["action"] = "recklessness",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "thunder_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.titans_torment.enabled & ( buff.enrage.up || talent.titanic_rage.enabled ) & ( debuff.champions_might.up || ! talent.champions_might.enabled ) ) || ! talent.titans_torment.enabled & buff.enrage.up",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.meat_cleaver.stack = 0 & talent.meat_cleaver.enabled",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "thunderous_roar",
|
|
},
|
|
{
|
|
["action"] = "ravager",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.odyns_fury_torment_mh.remains < 1 & ( buff.enrage.up || talent.titanic_rage.enabled ) & cooldown.avatar.remains",
|
|
["action"] = "odyns_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ashen_juggernaut.enabled & buff.ashen_juggernaut.remains <= gcd.max & buff.enrage.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.bladestorm.enabled & cooldown.bladestorm.remains <= gcd.max & ! debuff.champions_might.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.enrage.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["action"] = "bloodbath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "crushing_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.recklessness.up || rage > 115",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["action"] = "bloodthirst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "raging_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "onslaught",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "rampage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "whirlwind",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.debuff.casting.react",
|
|
["action"] = "pummel",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time <= 0.5 || movement.distance > 5",
|
|
["action"] = "charge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "movement.distance > 25",
|
|
["action"] = "heroic_leap",
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies = 1 & ( raid_event.adds.in > 15 || ! raid_event.adds.exists )",
|
|
["var_name"] = "st_planning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies >= 2 & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.remains > 5 )",
|
|
["var_name"] = "adds_remain",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( talent.massacre.enabled & target.health.pct < 35 ) || target.health.pct < 20",
|
|
["var_name"] = "execute_phase",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "treacherous_transmitter",
|
|
["criteria"] = "variable.adds_remain || variable.st_planning",
|
|
["name"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! buff.avatar.up & trinket.t1.cast_time > 0 || ! trinket.t1.cast_time > 0 ) & ( ( talent.titans_torment.enabled & cooldown.avatar.ready ) || ( buff.avatar.up & ! talent.titans_torment.enabled ) ) & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || trinket.t1.buff_duration >= fight_remains & boss",
|
|
["description"] = "Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! buff.avatar.up & trinket.t2.cast_time > 0 || ! trinket.t2.cast_time > 0 ) & ( ( talent.titans_torment.enabled & cooldown.avatar.ready ) || ( buff.avatar.up & ! talent.titans_torment.enabled ) ) & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || trinket.t2.buff_duration >= fight_remains & boss",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )",
|
|
["description"] = "If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.trinket_2_buffs & ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) & ! variable.trinket_2_manual & ( ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) || ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["criteria"] = "! equipped.fyralath_the_dreamrender & ( ! variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( ! variable.trinket_2_buffs || trinket.t2.cooldown.remains )",
|
|
["slot"] = "main_hand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.recklessness.down & buff.avatar.down & rage < 80 & buff.bloodbath.down & buff.crushing_blow.down & buff.sudden_death.down & ! cooldown.bladestorm.ready & ( ! cooldown.execute.ready || ! variable.execute_phase )",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.recklessness.down & buff.avatar.down & rage < 80 & buff.bloodbath.down & buff.crushing_blow.down & buff.sudden_death.down & ! cooldown.bladestorm.ready & ( ! cooldown.execute.ready || ! variable.execute_phase )",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.recklessness.up",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["action"] = "blood_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.slayers_dominance.enabled & talent.reckless_abandon.enabled & active_enemies = 1",
|
|
["list_name"] = "slayer_ra_st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.slayers_dominance.enabled & ( talent.anger_management.enabled || ! talent.reckless_abandon.enabled ) & active_enemies = 1",
|
|
["list_name"] = "slayer_am_st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.slayers_dominance.enabled & talent.reckless_abandon.enabled & active_enemies > 1",
|
|
["list_name"] = "slayer_ra_mt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.slayers_dominance.enabled & ( talent.anger_management.enabled || ! talent.reckless_abandon.enabled ) & active_enemies > 1",
|
|
["list_name"] = "slayer_am_mt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.slayers_dominance.enabled & talent.reckless_abandon.enabled & active_enemies = 1",
|
|
["list_name"] = "thane_ra_st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.slayers_dominance.enabled & ( talent.anger_management.enabled || ! talent.reckless_abandon.enabled ) & active_enemies = 1",
|
|
["list_name"] = "thane_am_st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.slayers_dominance.enabled & talent.reckless_abandon.enabled & active_enemies > 1",
|
|
["list_name"] = "thane_ra_mt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.slayers_dominance.enabled & ( talent.anger_management.enabled || ! talent.reckless_abandon.enabled ) & active_enemies > 1",
|
|
["list_name"] = "thane_am_mt",
|
|
},
|
|
},
|
|
["thane_ra_st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.anger_management.enabled & cooldown.avatar.remains < 1 & talent.titans_torment.enabled ) || talent.anger_management.enabled || ! talent.titans_torment.enabled",
|
|
["action"] = "recklessness",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "thunder_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.titans_torment.enabled & ( buff.enrage.up || talent.titanic_rage.enabled ) & ( debuff.champions_might.up || ! talent.champions_might.enabled ) ) || ! talent.titans_torment.enabled & buff.enrage.up",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["action"] = "ravager",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "thunderous_roar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & ( cooldown.avatar.remains < gcd.max || ! talent.titans_torment.enabled )",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.odyns_fury_torment_mh.remains < 1 & ( buff.enrage.up || talent.titanic_rage.enabled ) & cooldown.avatar.remains",
|
|
["action"] = "odyns_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ashen_juggernaut.enabled & buff.ashen_juggernaut.remains <= gcd.max & buff.enrage.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.bladestorm.enabled & cooldown.bladestorm.remains <= gcd.max & ! debuff.champions_might.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & talent.unhinged.enabled",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.enrage.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.vicious_contempt.enabled & target.health.pct < 35 || buff.bloodcraze.stack >= 3",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["action"] = "crushing_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 115",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["action"] = "raging_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodbath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & ! buff.burst_of_power.up",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["action"] = "rampage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "onslaught",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodthirst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.meat_cleaver.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["slayer_am_mt"] = {
|
|
{
|
|
["action"] = "recklessness",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.titans_torment.enabled & ( buff.enrage.up || talent.titanic_rage.enabled ) & ( debuff.champions_might.up || ! talent.champions_might.enabled ) ) || ! talent.titans_torment.enabled",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "thunderous_roar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.enrage.up & talent.titans_torment.enabled & cooldown.avatar.remains < gcd.max ) || ( buff.enrage.up & ! talent.titans_torment.enabled )",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.odyns_fury_torment_mh.remains < 1 & ( buff.enrage.up || talent.titanic_rage.enabled ) & cooldown.avatar.remains",
|
|
["action"] = "odyns_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.meat_cleaver.stack = 0 & talent.meat_cleaver.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ashen_juggernaut.enabled & buff.ashen_juggernaut.remains <= gcd.max & buff.enrage.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.bladestorm.enabled & cooldown.bladestorm.remains <= gcd.max & ! debuff.champions_might.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & cooldown.avatar.remains >= 5",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & debuff.marked_for_execution.stack = 3",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.enrage.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["action"] = "bloodthirst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.slaughtering_strikes.stack >= 2",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["action"] = "raging_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "rampage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "onslaught",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "whirlwind",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["slayer_ra_mt"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.anger_management.enabled & cooldown.avatar.remains < 1 & talent.titans_torment.enabled ) || ! talent.titans_torment.enabled",
|
|
["action"] = "recklessness",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.titans_torment.enabled & ( buff.enrage.up || talent.titanic_rage.enabled ) & ( debuff.champions_might.up || ! talent.champions_might.enabled ) ) || ! talent.titans_torment.enabled & buff.enrage.up",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.enrage.up & ! talent.titans_torment.enabled",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "thunderous_roar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.enrage.up & talent.titans_torment.enabled & cooldown.avatar.remains < gcd.max ) || ( buff.enrage.up & ! talent.titans_torment.enabled )",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.odyns_fury_torment_mh.remains < 1 & ( buff.enrage.up || talent.titanic_rage.enabled ) & cooldown.avatar.remains",
|
|
["action"] = "odyns_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.bladestorm.enabled & cooldown.bladestorm.remains <= gcd.max & ! debuff.champions_might.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & cooldown.avatar.remains >= 9 & buff.enrage.remains > 3",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.meat_cleaver.stack = 0 & talent.meat_cleaver.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ashen_juggernaut.enabled & buff.ashen_juggernaut.remains <= gcd.max & buff.enrage.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled & buff.brutal_finish.up",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.enrage.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 6",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["action"] = "crushing_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodbath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 6",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & debuff.marked_for_execution.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage > 115",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.slaughtering_strikes.enabled",
|
|
["action"] = "raging_blow",
|
|
},
|
|
{
|
|
["action"] = "onslaught",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodthirst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "raging_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "whirlwind",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["thane_am_mt"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.anger_management.enabled & cooldown.avatar.remains < 1 & talent.titans_torment.enabled ) || talent.anger_management.enabled || ! talent.titans_torment.enabled",
|
|
["action"] = "recklessness",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "thunder_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.titans_torment.enabled & ( buff.enrage.up || talent.titanic_rage.enabled ) & ( debuff.champions_might.up || ! talent.champions_might.enabled ) ) || ! talent.titans_torment.enabled",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.meat_cleaver.stack = 0 & talent.meat_cleaver.enabled",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "thunderous_roar",
|
|
},
|
|
{
|
|
["action"] = "ravager",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.odyns_fury_torment_mh.remains < 1 & ( buff.enrage.up || talent.titanic_rage.enabled ) & cooldown.avatar.remains",
|
|
["action"] = "odyns_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ashen_juggernaut.enabled & buff.ashen_juggernaut.remains <= gcd.max & buff.enrage.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.bladestorm.enabled & cooldown.bladestorm.remains <= gcd.max & ! debuff.champions_might.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["action"] = "rampage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodthirst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 3",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["action"] = "raging_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "onslaught",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "whirlwind",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "battle_shout",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["toggle"] = "on",
|
|
["action"] = "berserker_stance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["var_name"] = "treacherous_transmitter_precombat_cast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! equipped.fyralath_the_dreamrender",
|
|
["action"] = "recklessness",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.titans_torment.enabled",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_1_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Evaluates a trinkets cooldown, divided by avatar or odyns fur. If it's value has no remainder return 1, else return 0.5.",
|
|
["criteria"] = "trinket.t1.has_use_buff & ( trinket.t1.cooldown.duration % cooldown.avatar.duration = 0 || trinket.t1.cooldown.duration % cooldown.odyns_fury.duration = 0 )",
|
|
["value"] = "1",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["var_name"] = "trinket_1_sync",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["criteria"] = "trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration % cooldown.avatar.duration = 0 || trinket.t2.cooldown.duration % cooldown.odyns_fury.duration = 0 )",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_stat.any_dps & ! variable.trinket_1_exclude )",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_stat.any_dps & ! variable.trinket_2_exclude )",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / trinket.t2.buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_1_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_2_manual",
|
|
},
|
|
},
|
|
},
|
|
["spec"] = 72,
|
|
},
|
|
["Brewmaster"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241021,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-10-21: Babyproof Blackout Combo\n\n2024-10-11: Aspect of Harmony accumulator and SimC update\n\n2024-09-22: Consume Blackout Combo with Tiger Palm\n\n2024-09-05: Avoid double-CB\n\n2024-08-22: Avoid nonsensical Purifying Brews\n\n2024-07-26: The War Within",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.debuff.casting.react",
|
|
["action"] = "spear_hand_strike",
|
|
},
|
|
{
|
|
["action"] = "diffuse_magic",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "health.pct <= settings.vivify_percent & buff.vivacious_vivification.up",
|
|
["action"] = "vivify",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & 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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & buff.celestial_brew.down & ( ! talent.improved_celestial_brew.enabled || buff.purified_chi.up ) & ( ! settings.max_damage || buff.blackout_combo.down )",
|
|
["action"] = "celestial_brew",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "group & ( ! settings.max_damage || buff.blackout_combo.down ) & settings.purify_stagger_currhp > 0 & stagger.pct >= settings.purify_stagger_currhp",
|
|
["action"] = "purifying_brew",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "solo & ( ! settings.max_damage || buff.blackout_combo.down ) & settings.purify_stagger_currhp > 0 & stagger.pct >= settings.purify_stagger_currhp * 0.5",
|
|
["action"] = "purifying_brew",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "group & ( settings.max_damage & buff.blackout_combo.down ) & settings.purify_stagger_maxhp > 0 & stagger.pct >= settings.purify_stagger_maxhp",
|
|
["action"] = "purifying_brew",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "solo & ( ! settings.max_damage || buff.blackout_combo.down ) & settings.purify_stagger_maxhp > 0 & stagger.pct >= settings.purify_stagger_maxhp * 0.5",
|
|
["action"] = "purifying_brew",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "group & ( ! settings.max_damage || buff.blackout_combo.down ) & settings.purify_stagger_currhp = 0 & settings.purify_stagger_maxhp = 0 & stagger.pct > 20",
|
|
["action"] = "purifying_brew",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "solo & ( ! settings.max_damage || buff.blackout_combo.down ) & settings.purify_stagger_currhp = 0 & settings.purify_stagger_maxhp = 0 & stagger.pct > 10",
|
|
["action"] = "purifying_brew",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "health.pct < 75 & incoming_damage_3s > health.max * ( 0.2 + ( 0.2 * group ) ) & buff.fortifying_brew.down",
|
|
["action"] = "dampen_harm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "health.pct < 50 & incoming_damage_3s > health.max * ( 0.2 + ( 0.2 * group ) ) & ( buff.dampen_harm.down )",
|
|
["action"] = "fortifying_brew",
|
|
},
|
|
{
|
|
["action"] = "touch_of_death",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.gift_of_the_ox.stack > 4 & health.pct < settings.eh_percent",
|
|
["action"] = "expel_harm",
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blood_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "berserking",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bag_of_tricks",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy < 40",
|
|
["action"] = "black_ox_brew",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! settings.max_damage || buff.blackout_combo.down ) & buff.aspect_of_harmony_accumulator.value > 0.3 * health.max & buff.weapons_of_order.up & ! dot.aspect_of_harmony_damage.ticking",
|
|
["action"] = "celestial_brew",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! settings.max_damage || buff.blackout_combo.down ) & buff.aspect_of_harmony_accumulator.value > 0.3 * health.max & ! talent.weapons_of_order.enabled & ! dot.aspect_of_harmony_damage.ticking",
|
|
["action"] = "celestial_brew",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! settings.max_damage || buff.blackout_combo.down ) & fight_remains < 20 & fight_remains > 14 & buff.aspect_of_harmony_accumulator.value > 0.2 * health.max",
|
|
["action"] = "celestial_brew",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! settings.max_damage || buff.blackout_combo.down ) & buff.aspect_of_harmony_accumulator.value > 0.3 * health.max & cooldown.weapons_of_order.remains > 20 & ! dot.aspect_of_harmony_damage.ticking",
|
|
["action"] = "celestial_brew",
|
|
},
|
|
{
|
|
["action"] = "blackout_kick",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "chi_burst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "weapons_of_order",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.fluidity_of_motion.enabled",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blackout_combo.up",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.scalding_brew.enabled",
|
|
["action"] = "keg_smash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.charred_passions.enabled & talent.scalding_brew.enabled & buff.charred_passions.up & buff.charred_passions.remains < 3 & dot.breath_of_fire.remains < 9 & active_enemies > 4",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fluidity_of_motion.enabled",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blackout_combo.down",
|
|
["action"] = "purifying_brew",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.charred_passions.down & ( ! talent.scalding_brew.enabled || active_enemies < 5 ) ) || ! talent.charred_passions.enabled || ( dot.breath_of_fire.remains < 3 & talent.scalding_brew.enabled )",
|
|
["action"] = "breath_of_fire",
|
|
},
|
|
{
|
|
["action"] = "exploding_keg",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "keg_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "rushing_jade_wind",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "invoke_niuzao_the_black_ox",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy > 40 - cooldown.keg_smash.remains * energy.regen",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy > 40 - cooldown.keg_smash.remains * energy.regen",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.chi_burst.enabled",
|
|
["action"] = "chi_burst",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241021,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 5: Converted 'talent.improved_celestial_brew' to 'talent.improved_celestial_brew.enabled' (1x).\n\nImported 2 action lists.\n",
|
|
["spec"] = 268,
|
|
["profile"] = "actions.precombat+=/potion\nactions.precombat+=/chi_burst,if=talent.chi_burst.enabled\n\nactions+=/spear_hand_strike,if=target.debuff.casting.react\nactions+=/diffuse_magic\nactions+=/vivify,if=health.pct<=settings.vivify_percent&buff.vivacious_vivification.up\nactions+=/purifying_brew,if=tanking&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&buff.celestial_brew.down&(!talent.improved_celestial_brew||buff.purified_chi.up)&(!settings.max_damage||buff.blackout_combo.down)\n## actions+=/purifying_brew,line_cd=5,if=talent.improved_invoke_niuzao_the_black_ox&settings.purify_for_niuzao&pet.niuzao_the_black_ox.active\nactions+=/purifying_brew,if=group&(!settings.max_damage||buff.blackout_combo.down)&settings.purify_stagger_currhp>0&stagger.pct>=settings.purify_stagger_currhp\nactions+=/purifying_brew,if=solo&(!settings.max_damage||buff.blackout_combo.down)&settings.purify_stagger_currhp>0&stagger.pct>=settings.purify_stagger_currhp*0.5\nactions+=/purifying_brew,if=group&(settings.max_damage&buff.blackout_combo.down)&settings.purify_stagger_maxhp>0&stagger.pct>=settings.purify_stagger_maxhp\nactions+=/purifying_brew,if=solo&(!settings.max_damage||buff.blackout_combo.down)&settings.purify_stagger_maxhp>0&stagger.pct>=settings.purify_stagger_maxhp*0.5\nactions+=/purifying_brew,if=group&(!settings.max_damage||buff.blackout_combo.down)&settings.purify_stagger_currhp=0&settings.purify_stagger_maxhp=0&stagger.pct>20\nactions+=/purifying_brew,if=solo&(!settings.max_damage||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+=/touch_of_death\nactions+=/expel_harm,if=buff.gift_of_the_ox.stack>4&health.pct<settings.eh_percent\nactions+=/potion\nactions+=/blood_fury\nactions+=/berserking\nactions+=/arcane_torrent\nactions+=/lights_judgment\nactions+=/fireblood\nactions+=/ancestral_call\nactions+=/bag_of_tricks\nactions+=/use_item,slot=trinket1\nactions+=/use_item,slot=trinket2\nactions+=/black_ox_brew,if=energy<40\nactions+=/celestial_brew,if=(!settings.max_damage||buff.blackout_combo.down)&buff.aspect_of_harmony_accumulator.value>0.3*health.max&buff.weapons_of_order.up&!dot.aspect_of_harmony_damage.ticking\nactions+=/celestial_brew,if=(!settings.max_damage||buff.blackout_combo.down)&buff.aspect_of_harmony_accumulator.value>0.3*health.max&!talent.weapons_of_order.enabled&!dot.aspect_of_harmony_damage.ticking\nactions+=/celestial_brew,if=(!settings.max_damage||buff.blackout_combo.down)&fight_remains<20&fight_remains>14&buff.aspect_of_harmony_accumulator.value>0.2*health.max\nactions+=/celestial_brew,if=(!settings.max_damage||buff.blackout_combo.down)&buff.aspect_of_harmony_accumulator.value>0.3*health.max&cooldown.weapons_of_order.remains>20&!dot.aspect_of_harmony_damage.ticking\nactions+=/blackout_kick\nactions+=/chi_burst\nactions+=/weapons_of_order\nactions+=/rising_sun_kick,if=!talent.fluidity_of_motion.enabled\nactions+=/tiger_palm,if=buff.blackout_combo.up\nactions+=/keg_smash,if=talent.scalding_brew.enabled\nactions+=/spinning_crane_kick,if=talent.charred_passions.enabled&talent.scalding_brew.enabled&buff.charred_passions.up&buff.charred_passions.remains<3&dot.breath_of_fire.remains<9&active_enemies>4\nactions+=/rising_sun_kick,if=talent.fluidity_of_motion.enabled\nactions+=/purifying_brew,if=buff.blackout_combo.down\nactions+=/breath_of_fire,if=(buff.charred_passions.down&(!talent.scalding_brew.enabled||active_enemies<5))||!talent.charred_passions.enabled||(dot.breath_of_fire.remains<3&talent.scalding_brew.enabled)\nactions+=/exploding_keg\nactions+=/keg_smash\nactions+=/rushing_jade_wind\nactions+=/invoke_niuzao\nactions+=/tiger_palm,if=energy>40-cooldown.keg_smash.remains*energy.regen\nactions+=/spinning_crane_kick,if=energy>40-cooldown.keg_smash.remains*energy.regen",
|
|
},
|
|
["Havoc"] = {
|
|
["source"] = "SimulationCraft",
|
|
["builtIn"] = true,
|
|
["date"] = 20241021,
|
|
["spec"] = 577,
|
|
["desc"] = "2024-10-21: SimC update\n\n2024-09-15: Typo; SimC update\n\n2024-09-12: Reimplement Demonsurge and split Demonic Intensity abilities\n\n2024-09-11: Tweak Metamorphosis\n\n2024-09-01, 09-03, 09-08, 09-10: SimC update\n\n2024-08-26: Update opener logic\n\n2024-08-24: SimC priority update\n\n2024-08-12: Check Unbound Chaos talent for Immo Aura\n\n2024-07-23: The War Within",
|
|
["profile"] = "actions.precombat+=/variable,name=trinket1_steroids,value=trinket.1.has_stat.any_dps\nactions.precombat+=/variable,name=trinket2_steroids,value=trinket.2.has_stat.any_dps\nactions.precombat+=/variable,name=rg_ds,default=0,op=reset\nactions.precombat+=/sigil_of_flame\nactions.precombat+=/immolation_aura,if=buff.immolation_aura.down\n\n## actions+=/retarget_auto_attack,line_cd=1,target_if=mindebuff.burning_wound.remains,if=talent.burning_wound&talent.demon_blades&active_dot.burning_wound<(spell_targets>?3)\n## actions+=/retarget_auto_attack,line_cd=1,target_if=min!target.is_boss,if=talent.burning_wound&talent.demon_blades&active_dot.burning_wound=(spell_targets>?3)\nactions+=/variable,name=rg_inc,op=set,value=buff.rending_strike.down&buff.glaive_flurry.up&cooldown.blade_dance.up&gcd.remains=0||variable.rg_inc&prev_gcd.1.death_sweep\n## actions+=/pick_up_fragment,use_off_gcd=1,if=fury<=70||hero_tree.aldrachi_reaver\nactions+=/variable,name=fel_barrage,op=set,value=talent.fel_barrage&(cooldown.fel_barrage.remains<gcd.max*7&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in<gcd.max*7||raid_event.adds.in>90)&(cooldown.metamorphosis.remains||active_enemies>2)||buff.fel_barrage.up)&!(active_enemies=1&!raid_event.adds.exists)\nactions+=/disrupt\nactions+=/fel_rush,if=buff.unbound_chaos.up&buff.unbound_chaos.remains<gcd.max*2&(action.immolation_aura.charges>0||action.immolation_aura.recharge_time<5)&cooldown.metamorphosis.remains>10\nactions+=/chaos_strike,if=buff.rending_strike.up&buff.glaive_flurry.up&(variable.rg_ds=2||active_enemies>2)\nactions+=/annihilation,if=buff.rending_strike.up&buff.glaive_flurry.up&(variable.rg_ds=2||active_enemies>2)\nactions+=/reavers_glaive,if=buff.glaive_flurry.down&buff.rending_strike.down&buff.thrill_of_the_fight_damage.remains<gcd.max*4+(variable.rg_ds=2)+(cooldown.the_hunt.remains<gcd.max*3)*3+(cooldown.eye_beam.remains<gcd.max*3&talent.shattered_destiny)*3&(variable.rg_ds=0||variable.rg_ds=1&cooldown.blade_dance.up||variable.rg_ds=2&cooldown.blade_dance.remains)&(buff.thrill_of_the_fight_damage.up||!prev_gcd.1.death_sweep||!variable.rg_inc)&active_enemies<3&!action.reavers_glaive.last_used<5&debuff.essence_break.down||fight_remains<10\nactions+=/reavers_glaive,if=buff.glaive_flurry.down&buff.rending_strike.down&buff.thrill_of_the_fight_damage.remains<4&(buff.thrill_of_the_fight_damage.up||!prev_gcd.1.death_sweep||!variable.rg_inc)&active_enemies>2||fight_remains<10\nactions+=/call_action_list,name=cooldown\nactions+=/call_action_list,name=opener,if=(cooldown.eye_beam.up||cooldown.metamorphosis.up||cooldown.essence_break.up)&time<15&(raid_event.adds.in>40)&buff.demonsurge.stack<5\nactions+=/sigil_of_spite,if=debuff.essence_break.down&debuff.reavers_mark.remains>=2-talent.quickened_sigils\nactions+=/run_action_list,name=fel_barrage,if=variable.fel_barrage&raid_event.adds.up\nactions+=/immolation_aura,if=active_enemies>2&talent.ragefire&buff.unbound_chaos.down&(!talent.fel_barrage||cooldown.fel_barrage.remains>recharge_time)&debuff.essence_break.down&cooldown.eye_beam.remains>recharge_time+5&(buff.metamorphosis.down||buff.metamorphosis.remains>5)\n# actions+=/immolation_aura,if=cooldown.eye_beam.remains>24&buff.metamorphosis.down&debuff.essence_break.down actions+=/immolation_aura,if=cooldown.eye_beam.remains<8&cooldown.blade_dance.remains&debuff.essence_break.down&buff.student_of_suffering.down\nactions+=/immolation_aura,if=hero_tree.felscarred&cooldown.metamorphosis.remains<10&cooldown.eye_beam.remains<10&(buff.unbound_chaos.down||action.fel_rush.charges=0||(cooldown.eye_beam.remains<?cooldown.metamorphosis.remains)<5)&talent.a_fire_inside\nactions+=/immolation_aura,if=active_enemies>2&talent.ragefire&raid_event.adds.up&raid_event.adds.remains<15&raid_event.adds.remains>5&debuff.essence_break.down\nactions+=/fel_rush,if=buff.unbound_chaos.up&active_enemies>2&(!talent.inertia||cooldown.eye_beam.remains+2>buff.unbound_chaos.remains)\nactions+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&(cooldown.eye_beam.remains>15&gcd.remains<0.3||gcd.remains<0.2&cooldown.eye_beam.remains<=gcd.remains&(buff.unbound_chaos.up||action.immolation_aura.recharge_time>6||!talent.inertia||talent.momentum)&(cooldown.metamorphosis.remains>10||cooldown.blade_dance.remains<gcd.max*2&(talent.inertia||talent.momentum||buff.metamorphosis.up)))&(!talent.student_of_suffering||cooldown.sigil_of_flame.remains)&time>10&(!variable.trinket1_steroids&!variable.trinket2_steroids||variable.trinket1_steroids&(trinket.1.cooldown.remains<gcd.max*3||trinket.1.cooldown.remains>20)||variable.trinket2_steroids&(trinket.2.cooldown.remains<gcd.max*3||trinket.2.cooldown.remains>20||talent.shattered_destiny))&(cooldown.metamorphosis.remains||hero_tree.aldrachi_reaver)&time>20\nactions+=/run_action_list,name=fel_barrage,if=variable.fel_barrage||!talent.demon_blades&talent.fel_barrage&(buff.fel_barrage.up||cooldown.fel_barrage.up)&buff.metamorphosis.down\nactions+=/run_action_list,name=meta,strict=1,if=buff.metamorphosis.up\nactions+=/fel_rush,if=buff.unbound_chaos.up&talent.inertia&buff.inertia.down&cooldown.blade_dance.remains<4&cooldown.eye_beam.remains>5&(action.immolation_aura.charges>0||action.immolation_aura.recharge_time+2<cooldown.eye_beam.remains||cooldown.eye_beam.remains>buff.unbound_chaos.remains-2)\nactions+=/fel_rush,if=talent.momentum&cooldown.eye_beam.remains<gcd.max*2\nactions+=/immolation_aura,if=talent.a_fire_inside&(talent.unbound_chaos||talent.burning_wound)&buff.unbound_chaos.down&full_recharge_time<gcd.max*2&(raid_event.adds.in>full_recharge_time||active_enemies>desired_targets)\nactions+=/immolation_aura,if=active_enemies>desired_targets&buff.unbound_chaos.down&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>full_recharge_time)\nactions+=/immolation_aura,if=talent.inertia&buff.unbound_chaos.down&cooldown.eye_beam.remains<5&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>full_recharge_time&(!talent.essence_break||cooldown.essence_break.remains<5))&(!variable.trinket1_steroids&!variable.trinket2_steroids||variable.trinket1_steroids&(trinket.1.cooldown.remains<gcd.max*3||trinket.1.cooldown.remains>20)||variable.trinket2_steroids&(trinket.2.cooldown.remains<gcd.max*3||trinket.2.cooldown.remains>20))\nactions+=/immolation_aura,if=talent.inertia&buff.inertia.down&(!talent.unbound_chaos||buff.unbound_chaos.down)&recharge_time+5<cooldown.eye_beam.remains&cooldown.blade_dance.remains&cooldown.blade_dance.remains<4&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>full_recharge_time)&charges_fractional>1.00\nactions+=/immolation_aura,if=boss&fight_remains<15&cooldown.blade_dance.remains&(talent.inertia||talent.ragefire)\nactions+=/sigil_of_flame,if=talent.student_of_suffering&cooldown.eye_beam.remains<gcd.max&(!talent.inertia||buff.inertia_trigger.up)&(cooldown.essence_break.remains<gcd.max*4||!talent.essence_break)&(cooldown.metamorphosis.remains>10||cooldown.blade_dance.remains<gcd.max*3)&(!variable.trinket1_steroids&!variable.trinket2_steroids||variable.trinket1_steroids&(trinket.1.cooldown.remains<gcd.max*3||trinket.1.cooldown.remains>20)||variable.trinket2_steroids&(trinket.2.cooldown.remains<gcd.max*3||trinket.2.cooldown.remains>20))\nactions+=/eye_beam,if=cooldown.metamorphosis.up&talent.chaotic_transformation\nactions+=/eye_beam,if=!talent.essence_break&(!talent.chaotic_transformation||cooldown.metamorphosis.remains<5+3*talent.shattered_destiny||cooldown.metamorphosis.remains>10)&(active_enemies>desired_targets*2||raid_event.adds.in>30-talent.cycle_of_hatred.rank*13)&(!talent.initiative||cooldown.vengeful_retreat.remains>5||cooldown.vengeful_retreat.up||talent.shattered_destiny)&(!talent.student_of_suffering||cooldown.sigil_of_flame.remains)\nactions+=/eye_beam,if=talent.essence_break&(cooldown.essence_break.remains<gcd.max*2+5*talent.shattered_destiny||talent.shattered_destiny&cooldown.essence_break.remains>10)&(cooldown.blade_dance.remains<7||raid_event.adds.up)&(!talent.initiative||cooldown.vengeful_retreat.remains>10||!talent.inertia&!talent.momentum||raid_event.adds.up)&(active_enemies+3>=desired_targets+raid_event.adds.count||raid_event.adds.in>30-talent.cycle_of_hatred.rank*6)&(!talent.inertia||buff.inertia_trigger.up||action.immolation_aura.charges=0&action.immolation_aura.recharge_time>5)&(!raid_event.adds.up||raid_event.adds.remains>8)&(!variable.trinket1_steroids&!variable.trinket2_steroids||variable.trinket1_steroids&(trinket.1.cooldown.remains<gcd.max*3||trinket.1.cooldown.remains>20)||variable.trinket2_steroids&(trinket.2.cooldown.remains<gcd.max*3||trinket.2.cooldown.remains>20))||fight_remains<10\nactions+=/blade_dance,if=cooldown.eye_beam.remains>=gcd.max*3&buff.rending_strike.down\nactions+=/chaos_strike,if=buff.rending_strike.up\nactions+=/felblade,if=buff.metamorphosis.down&fury.deficit>40\nactions+=/glaive_tempest,if=active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>10\nactions+=/sigil_of_flame,if=active_enemies>3&!talent.student_of_suffering||buff.out_of_range.down&talent.art_of_the_glaive\nactions+=/chaos_strike,if=debuff.essence_break.up||cooldown.essence_break.true_remains>cooldown.essence_break.duration-debuff.essence_break.duration\n## actions+=/sigil_of_flame,if=talent.student_of_suffering&((cooldown.eye_beam.remains<4&cooldown.metamorphosis.remains>20)||(cooldown.eye_beam.remains<gcd.max&cooldown.metamorphosis.up))\nactions+=/felblade,if=(buff.out_of_range.down||fury.deficit>40)\nactions+=/throw_glaive,if=active_enemies>1&talent.furious_throws\nactions+=/chaos_strike,if=cooldown.eye_beam.remains>gcd.max*2||fury>80||talent.cycle_of_hatred\nactions+=/immolation_aura,if=!talent.inertia&(raid_event.adds.in>full_recharge_time||active_enemies>desired_targets&active_enemies>2)\nactions+=/sigil_of_flame,if=buff.out_of_range.down&debuff.essence_break.down&!talent.student_of_suffering&(!talent.fel_barrage||cooldown.fel_barrage.remains>25||(active_enemies=1&!raid_event.adds.exists))\n# actions+=/felblade,if=cooldown.blade_dance.remains>=0.5&cooldown.blade_dance.remains<gcd.max\nactions+=/demons_bite\nactions+=/throw_glaive,if=buff.unbound_chaos.down&recharge_time<cooldown.eye_beam.remains&debuff.essence_break.down&(cooldown.eye_beam.remains>8||charges_fractional>1.01)&buff.out_of_range.down&active_enemies>1\nactions+=/fel_rush,if=buff.unbound_chaos.down&recharge_time<cooldown.eye_beam.remains&debuff.essence_break.down&(cooldown.eye_beam.remains>8||charges_fractional>1.01)&active_enemies>1\nactions+=/arcane_torrent,if=buff.out_of_range.down&debuff.essence_break.down&fury<100\n\nactions.cooldown+=/metamorphosis,if=((cooldown.eye_beam.remains>=20&(!talent.essence_break||debuff.essence_break.up)&buff.fel_barrage.down&(raid_event.adds.in>40||(raid_event.adds.remains>8||!talent.fel_barrage)&active_enemies>2)||!talent.chaotic_transformation||boss&fight_remains<30)&buff.inner_demon.down&(!talent.restless_hunter&cooldown.blade_dance.remains>gcd.max*3||prev_gcd.1.death_sweep))&!talent.inertia&!talent.essence_break&(hero_tree.aldrachi_reaver||buff.demonsurge_death_sweep.down)&time>15\nactions.cooldown+=/metamorphosis,if=(cooldown.blade_dance.remains&((prev_gcd.1.death_sweep||prev_gcd.2.death_sweep||prev_gcd.3.death_sweep||buff.metamorphosis.up&buff.metamorphosis.remains<gcd.max)&cooldown.eye_beam.remains&(!talent.essence_break||debuff.essence_break.up||talent.shattered_destiny||hero_tree.felscarred)&buff.fel_barrage.down&(raid_event.adds.in>40||(raid_event.adds.remains>8||!talent.fel_barrage)&active_enemies>2)||!talent.chaotic_transformation||boss&fight_remains<30)&(buff.inner_demon.down&(buff.rending_strike.down||!talent.restless_hunter||prev_gcd.1.death_sweep)))&(talent.inertia||talent.essence_break)&(hero_tree.aldrachi_reaver||(buff.demonsurge_death_sweep.down||buff.metamorphosis.remains<gcd.max)&(buff.demonsurge_annihilation.down))&time>15\nactions.cooldown+=/potion,if=boss&fight_remains<35||buff.metamorphosis.up||debuff.essence_break.up\n## actions.cooldown+=/invoke_external_buff,name=power_infusion,if=buff.metamorphosis.up||boss&fight_remains<=20\nactions.cooldown+=/variable,name=special_trinket,op=set,value=equipped.mad_queens_mandate||equipped.treacherous_transmitter||equipped.skardyns_grace\nactions.cooldown+=/use_item,name=mad_queens_mandate,if=((!talent.initiative||buff.initiative.up||time>5)&(buff.metamorphosis.remains>5||buff.metamorphosis.down)&(trinket.1.is.mad_queens_mandate&(trinket.2.cooldown.duration<10||trinket.2.cooldown.remains>10||!trinket.2.has_buff.any)||trinket.2.is.mad_queens_mandate&(trinket.1.cooldown.duration<10||trinket.1.cooldown.remains>10||!trinket.1.has_buff.any))&fight_remains>120||fight_remains<10&fight_remains<buff.metamorphosis.remains)&debuff.essence_break.down||fight_remains<5\nactions.cooldown+=/use_item,name=treacherous_transmitter,if=!equipped.mad_queens_mandate||equipped.mad_queens_mandate&(trinket.1.is.mad_queens_mandate&trinket.1.cooldown.remains>fight_remains||trinket.2.is.mad_queens_mandate&trinket.2.cooldown.remains>fight_remains)||fight_remains>25\nactions.cooldown+=/use_item,name=skardyns_grace,if=(!equipped.mad_queens_mandate||fight_remains>25||trinket.2.is.skardyns_grace&trinket.1.cooldown.remains>fight_remains||trinket.1.is.skardyns_grace&trinket.2.cooldown.remains>fight_remains||trinket.1.cooldown.duration<10||trinket.2.cooldown.duration<10)&buff.metamorphosis.up\n## actions.cooldown+=/do_treacherous_transmitter_task,if=cooldown.eye_beam.remains>15||cooldown.eye_beam.remains<5||fight_remains<20\nactions.cooldown+=/use_item,slot=trinket1,if=((cooldown.eye_beam.remains<gcd.max&active_enemies>1||buff.metamorphosis.up)&(raid_event.adds.in>trinket.1.cooldown.duration-15||raid_event.adds.remains>8)||!trinket.1.has_buff.any||fight_remains<25)&!trinket.1.is.skardyns_grace&!trinket.1.is.mad_queens_mandate&!trinket.1.is.treacherous_transmitter&(!variable.special_trinket||trinket.2.cooldown.remains>20)\nactions.cooldown+=/use_item,slot=trinket2,if=((cooldown.eye_beam.remains<gcd.max&active_enemies>1||buff.metamorphosis.up)&(raid_event.adds.in>trinket.2.cooldown.duration-15||raid_event.adds.remains>8)||!trinket.2.has_buff.any||fight_remains<25)&!trinket.2.is.skardyns_grace&!trinket.2.is.mad_queens_mandate&!trinket.2.is.treacherous_transmitter&(!variable.special_trinket||trinket.1.cooldown.remains>20)\nactions.cooldown+=/the_hunt,if=debuff.essence_break.down&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>90)&(debuff.reavers_mark.up||!hero_tree.aldrachi_reaver)&buff.reavers_glaive.down&(buff.metamorphosis.remains>5||buff.metamorphosis.down)&(!talent.initiative||buff.initiative.up||time>5)&time>5\nactions.cooldown+=/sigil_of_spite,if=debuff.essence_break.down&(debuff.reavers_mark.remains>=2-talent.quickened_sigils||!hero_tree.aldrachi_reaver)&cooldown.blade_dance.remains&time>15\n\nactions.fel_barrage+=/variable,name=generator_up,op=set,value=cooldown.felblade.remains<gcd.max||cooldown.sigil_of_flame.remains<gcd.max\nactions.fel_barrage+=/variable,name=fury_gen,op=set,value=talent.demon_blades*(1%(2.6*attack_haste)*12*((hero_tree.felscarred&buff.metamorphosis.up)*0.33+1))+buff.immolation_aura.stack*6+buff.tactical_retreat.up*10\nactions.fel_barrage+=/variable,name=gcd_drain,op=set,value=gcd.max*32\nactions.fel_barrage+=/annihilation,if=buff.inner_demon.up\nactions.fel_barrage+=/eye_beam,if=buff.fel_barrage.down&(active_enemies>1&raid_event.adds.up||raid_event.adds.in>40)\nactions.fel_barrage+=/abyssal_gaze,if=buff.fel_barrage.down&(active_enemies>1&raid_event.adds.up||raid_event.adds.in>40)\nactions.fel_barrage+=/essence_break,if=buff.fel_barrage.down&buff.metamorphosis.up\nactions.fel_barrage+=/death_sweep,if=buff.fel_barrage.down\nactions.fel_barrage+=/immolation_aura,if=buff.unbound_chaos.down&(active_enemies>2||buff.fel_barrage.up)&(!talent.inertia||cooldown.eye_beam.remains>recharge_time+3)\nactions.fel_barrage+=/glaive_tempest,if=buff.fel_barrage.down&active_enemies>1\nactions.fel_barrage+=/blade_dance,if=buff.fel_barrage.down\nactions.fel_barrage+=/fel_barrage,if=fury>100&(raid_event.adds.in>90||raid_event.adds.in<gcd.max||raid_event.adds.remains>4&active_enemies>2)\nactions.fel_barrage+=/fel_rush,if=buff.unbound_chaos.up&fury>20&buff.fel_barrage.up\nactions.fel_barrage+=/sigil_of_flame,if=fury.deficit>40&buff.fel_barrage.up&(!talent.student_of_suffering||cooldown.eye_beam.remains>30)\nactions.fel_barrage+=/sigil_of_doom,if=fury.deficit>40&buff.fel_barrage.up\nactions.fel_barrage+=/felblade,if=buff.fel_barrage.up&fury.deficit>40\nactions.fel_barrage+=/death_sweep,if=fury-variable.gcd_drain-35>0&(buff.fel_barrage.remains<3||variable.generator_up||fury>80||variable.fury_gen>18)\nactions.fel_barrage+=/glaive_tempest,if=fury-variable.gcd_drain-30>0&(buff.fel_barrage.remains<3||variable.generator_up||fury>80||variable.fury_gen>18)\nactions.fel_barrage+=/blade_dance,if=fury-variable.gcd_drain-35>0&(buff.fel_barrage.remains<3||variable.generator_up||fury>80||variable.fury_gen>18)\nactions.fel_barrage+=/arcane_torrent,if=fury.deficit>40&buff.fel_barrage.up\nactions.fel_barrage+=/fel_rush,if=buff.unbound_chaos.up\nactions.fel_barrage+=/the_hunt,if=fury>40&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>80)\nactions.fel_barrage+=/annihilation,if=fury-variable.gcd_drain-40>20&(buff.fel_barrage.remains<3||variable.generator_up||fury>80||variable.fury_gen>18)\nactions.fel_barrage+=/chaos_strike,if=fury-variable.gcd_drain-40>20&(cooldown.fel_barrage.remains&cooldown.fel_barrage.remains<10&fury>100||buff.fel_barrage.up&(buff.fel_barrage.remains*variable.fury_gen-buff.fel_barrage.remains*32)>0)\nactions.fel_barrage+=/demons_bite\n\nactions.meta+=/death_sweep,if=buff.metamorphosis.remains<gcd.max||(hero_tree.felscarred&talent.chaos_theory&talent.essence_break&(cooldown.metamorphosis.up||prev_gcd.1.metamorphosis)&buff.demonsurge.stack=0)&(!talent.restless_hunter||cooldown.metamorphosis.remains&cooldown.essence_break.remains)\nactions.meta+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&cooldown.metamorphosis.remains&cooldown.eye_beam.remains\nactions.meta+=/annihilation,if=buff.metamorphosis.remains<gcd.max||debuff.essence_break.remains&debuff.essence_break.remains<0.5||talent.restless_hunter&buff.demonsurge_annihilation.up&cooldown.essence_break.up&cooldown.metamorphosis.up\nactions.meta+=/annihilation,if=(hero_tree.felscarred&buff.demonsurge_annihilation.up&(talent.restless_hunter||!talent.chaos_theory||buff.chaos_theory.up))&(cooldown.eye_beam.remains<gcd.max*3&cooldown.blade_dance.remains||cooldown.metamorphosis.remains<gcd.max*3)\nactions.meta+=/fel_rush,if=buff.inertia_trigger.up&talent.inertia&cooldown.metamorphosis.remains&(!hero_tree.felscarred||cooldown.eye_beam.remains)\nactions.meta+=/fel_rush,if=buff.inertia_trigger.up&talent.inertia&cooldown.blade_dance.remains<gcd.max*3&(!hero_tree.felscarred||cooldown.eye_beam.remains)&cooldown.metamorphosis.remains\nactions.meta+=/fel_rush,if=talent.momentum&buff.momentum.remains<gcd.max*2\nactions.meta+=/immolation_aura,if=charges=2&active_enemies>1&debuff.essence_break.down\nactions.meta+=/annihilation,if=(buff.inner_demon.up)&(cooldown.eye_beam.remains<gcd.max*3&cooldown.blade_dance.remains||cooldown.metamorphosis.remains<gcd.max*3)\nactions.meta+=/essence_break,if=fury>20&(cooldown.metamorphosis.remains>10||cooldown.blade_dance.remains<gcd.max*2)&(buff.unbound_chaos.down||buff.inertia.up||!talent.inertia)&buff.out_of_range.remains<gcd.max&(!talent.shattered_destiny||cooldown.eye_beam.remains>4)&(!hero_tree.felscarred||active_enemies>1||cooldown.metamorphosis.remains>5&cooldown.eye_beam.remains)||fight_remains<10\nactions.meta+=/immolation_aura,if=cooldown.blade_dance.remains&talent.inertia&buff.metamorphosis.remains>10&hero_tree.felscarred&full_recharge_time<gcd.max*2&buff.unbound_chaos.down&debuff.essence_break.down\nactions.meta+=/essence_break,if=fury>20&(cooldown.metamorphosis.remains>10||cooldown.blade_dance.remains<gcd.max*2)&(buff.unbound_chaos.down||buff.inertia.up||!talent.inertia)&buff.out_of_range.remains<gcd.max&(!talent.shattered_destiny||cooldown.eye_beam.remains>4)||fight_remains<10\nactions.meta+=/sigil_of_doom,if=cooldown.blade_dance.remains&debuff.essence_break.down\nactions.meta+=/immolation_aura,if=buff.demonsurge.up&buff.demonsurge.remains<gcd.max*3&buff.demonsurge_consuming_fire.up\nactions.meta+=/immolation_aura,if=debuff.essence_break.down&cooldown.blade_dance.remains>gcd.max+0.5&buff.unbound_chaos.down&talent.inertia&buff.inertia.down&full_recharge_time+3<cooldown.eye_beam.remains&buff.metamorphosis.remains>5\nactions.meta+=/death_sweep,if=!talent.cycle_of_hatred\nactions.meta+=/death_sweep,if=(debuff.essence_break.up||cooldown.essence_break.remains>=gcd.max*2||(cooldown.metamorphosis.up&cooldown.eye_beam.remains&!talent.restless_hunter)||!talent.essence_break||(prev_gcd.1.metamorphosis&talent.chaotic_transformation))&talent.cycle_of_hatred\nactions.meta+=/eye_beam,if=debuff.essence_break.down&buff.inner_demon.down\nactions.meta+=/abyssal_gaze,if=debuff.essence_break.down&buff.inner_demon.down\nactions.meta+=/glaive_tempest,if=debuff.essence_break.down&(cooldown.blade_dance.remains>gcd.max*2||fury>60)&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>10)\nactions.meta+=/sigil_of_flame,if=active_enemies>2&debuff.essence_break.down\nactions.meta+=/throw_glaive,if=talent.soulscar&talent.furious_throws&active_enemies>1&debuff.essence_break.down\nactions.meta+=/annihilation,if=cooldown.blade_dance.remains||fury>60||soul_fragments>0||buff.metamorphosis.remains<5&cooldown.felblade.up\nactions.meta+=/sigil_of_flame,if=buff.metamorphosis.remains>5&buff.out_of_range.down\nactions.meta+=/felblade,if=(buff.out_of_range.down||fury.deficit>40)\nactions.meta+=/sigil_of_flame,if=debuff.essence_break.down&buff.out_of_range.down\nactions.meta+=/immolation_aura,if=buff.out_of_range.down&recharge_time<(cooldown.eye_beam.remains<?buff.metamorphosis.remains)&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>full_recharge_time)\nactions.meta+=/fel_rush,if=talent.momentum\nactions.meta+=/annihilation\nactions.meta+=/throw_glaive,if=buff.unbound_chaos.down&recharge_time<cooldown.eye_beam.remains&debuff.essence_break.down&(cooldown.eye_beam.remains>8||charges_fractional>1.01)&buff.out_of_range.down&active_enemies>1\nactions.meta+=/fel_rush,if=buff.unbound_chaos.down&recharge_time<cooldown.eye_beam.remains&debuff.essence_break.down&(cooldown.eye_beam.remains>8||charges_fractional>1.01)&buff.out_of_range.down&active_enemies>1\nactions.meta+=/demons_bite\n\nactions.opener+=/potion\nactions.opener+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&(buff.initiative.down||talent.restless_hunter&buff.initiative.remains<=0.1)&time>4&((talent.essence_break&!talent.restless_hunter&cooldown.metamorphosis.remains&cooldown.eye_beam.remains)||(talent.essence_break&talent.restless_hunter&(buff.demonsurge_annihilation.down||prev_gcd.1.death_sweep)&(cooldown.eye_beam.remains||debuff.essence_break.up)&buff.metamorphosis.up)||!talent.essence_break)\nactions.opener+=/fel_rush,if=talent.inertia&buff.inertia_trigger.up&talent.essence_break&cooldown.metamorphosis.remains&buff.demonsurge.stack=4&buff.demonsurge_abyssal_gaze.up\nactions.opener+=/annihilation,if=buff.demonsurge_annihilation.up&talent.restless_hunter,line_cd=10\nactions.opener+=/annihilation,if=!hero_tree.felscarred&buff.inner_demon.up&!talent.shattered_destiny,line_cd=10\nactions.opener+=/fel_rush,if=buff.inertia_trigger.up&talent.inertia&talent.restless_hunter&cooldown.essence_break.up&cooldown.metamorphosis.up&buff.demonsurge_annihilation.down&buff.metamorphosis.up\nactions.opener+=/fel_rush,if=talent.momentum&buff.momentum.remains<6&debuff.essence_break.down\nactions.opener+=/fel_rush,if=talent.inertia&buff.unbound_chaos.up&talent.a_fire_inside&(buff.inertia.down&buff.metamorphosis.up&!hero_tree.felscarred||hero_tree.felscarred&(buff.metamorphosis.down&charges>1||prev_gcd.1.eye_beam||buff.demonsurge.stack>=5||charges=2&buff.unbound_chaos.down))&debuff.essence_break.down\nactions.opener+=/fel_rush,if=talent.inertia&buff.unbound_chaos.up&!talent.a_fire_inside&buff.metamorphosis.up&cooldown.metamorphosis.remains\nactions.opener+=/fel_rush,if=talent.inertia&buff.unbound_chaos.up&prev_gcd.1.sigil_of_doom&(active_enemies>1||talent.a_fire_inside)\nactions.opener+=/the_hunt,if=(buff.metamorphosis.up&hero_tree.aldrachi_reaver&talent.shattered_destiny||!talent.shattered_destiny&hero_tree.aldrachi_reaver||hero_tree.felscarred)&(!talent.initiative||buff.initiative.up||time>5)\nactions.opener+=/death_sweep,if=hero_tree.felscarred&talent.chaos_theory&buff.metamorphosis.up&buff.demonsurge.stack=0&!talent.restless_hunter\nactions.opener+=/annihilation,if=hero_tree.felscarred&buff.demonsurge_annihilation.up&(!talent.essence_break||buff.inner_demon.up),line_cd=10\nactions.opener+=/felblade,if=fury<40&(!talent.a_fire_inside||hero_tree.aldrachi_reaver)\nactions.opener+=/reavers_glaive,if=debuff.reavers_mark.down&debuff.essence_break.down\nactions.opener+=/immolation_aura,if=talent.a_fire_inside&(talent.inertia||talent.ragefire||talent.burning_wound)&buff.metamorphosis.down&(buff.unbound_chaos.down||hero_tree.felscarred)\nactions.opener+=/immolation_aura,if=talent.inertia&buff.unbound_chaos.down&buff.metamorphosis.up&debuff.essence_break.down&cooldown.blade_dance.remains&(buff.inner_demon.down||hero_tree.felscarred&buff.demonsurge_annihilation.down)&buff.demonsurge.stack<5\nactions.opener+=/blade_dance,if=buff.glaive_flurry.up&!talent.shattered_destiny\nactions.opener+=/chaos_strike,if=buff.rending_strike.up&!talent.shattered_destiny\nactions.opener+=/metamorphosis,if=buff.metamorphosis.up&cooldown.blade_dance.remains>gcd.max*2&buff.inner_demon.down&(!hero_tree.felscarred&(!talent.restless_hunter||prev_gcd.1.death_sweep)||buff.demonsurge.stack=2)&(cooldown.essence_break.remains||hero_tree.felscarred||talent.shattered_destiny||!talent.essence_break)\nactions.opener+=/sigil_of_spite,if=hero_tree.felscarred||debuff.reavers_mark.up&(!talent.cycle_of_hatred||cooldown.eye_beam.remains&cooldown.metamorphosis.remains)\nactions.opener+=/sigil_of_doom,if=buff.inner_demon.down&debuff.essence_break.down&cooldown.blade_dance.remains\nactions.opener+=/eye_beam,if=buff.metamorphosis.down||debuff.essence_break.down&buff.inner_demon.down&(cooldown.blade_dance.remains||talent.essence_break&cooldown.essence_break.up)\nactions.opener+=/abyssal_gaze,if=debuff.essence_break.down&cooldown.blade_dance.remains&buff.inner_demon.down\nactions.opener+=/essence_break,if=(cooldown.blade_dance.remains<gcd.max&!hero_tree.felscarred&!talent.shattered_destiny&buff.metamorphosis.up||(cooldown.eye_beam.remains||buff.demonsurge_abyssal_gaze.down&(buff.demonsurge.stack=5||buff.demonsurge.stack=4&!talent.inner_demon))&cooldown.metamorphosis.remains)&(!hero_tree.felscarred||buff.inner_demon.down)\nactions.opener+=/essence_break,if=talent.restless_hunter&buff.metamorphosis.up&buff.inner_demon.down&(!hero_tree.felscarred||buff.demonsurge_annihilation.down)\nactions.opener+=/death_sweep\nactions.opener+=/annihilation\nactions.opener+=/demons_bite",
|
|
["version"] = 20241021,
|
|
["warnings"] = "The import for 'opener' required some automated changes.\nLine 2: Converted 'talent.initiative' to 'talent.initiative.enabled' (1x).\nLine 2: Converted 'talent.restless_hunter' to 'talent.restless_hunter.enabled' (1x).\nLine 2: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 2: Converted 'talent.restless_hunter' to 'talent.restless_hunter.enabled' (1x).\nLine 2: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 2: Converted 'talent.restless_hunter' to 'talent.restless_hunter.enabled' (1x).\nLine 2: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 3: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 3: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 4: Converted 'talent.restless_hunter' to 'talent.restless_hunter.enabled' (1x).\nLine 5: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 6: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 6: Converted 'talent.restless_hunter' to 'talent.restless_hunter.enabled' (1x).\nLine 7: Converted 'talent.momentum' to 'talent.momentum.enabled' (1x).\nLine 8: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 8: Converted 'talent.a_fire_inside' to 'talent.a_fire_inside.enabled' (1x).\nLine 9: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 9: Converted 'talent.a_fire_inside' to 'talent.a_fire_inside.enabled' (1x).\nLine 10: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 10: Converted 'talent.a_fire_inside' to 'talent.a_fire_inside.enabled' (1x).\nLine 11: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 11: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 11: Converted 'talent.initiative' to 'talent.initiative.enabled' (1x).\nLine 12: Converted 'talent.chaos_theory' to 'talent.chaos_theory.enabled' (1x).\nLine 12: Converted 'talent.restless_hunter' to 'talent.restless_hunter.enabled' (1x).\nLine 13: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 14: Converted 'talent.a_fire_inside' to 'talent.a_fire_inside.enabled' (1x).\nLine 16: Converted 'talent.a_fire_inside' to 'talent.a_fire_inside.enabled' (1x).\nLine 16: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 16: Converted 'talent.ragefire' to 'talent.ragefire.enabled' (1x).\nLine 16: Converted 'talent.burning_wound' to 'talent.burning_wound.enabled' (1x).\nLine 17: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 18: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 19: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 20: Converted 'talent.restless_hunter' to 'talent.restless_hunter.enabled' (1x).\nLine 20: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 20: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 21: Converted 'talent.cycle_of_hatred' to 'talent.cycle_of_hatred.enabled' (1x).\nLine 23: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 25: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 25: Converted 'talent.inner_demon' to 'talent.inner_demon.enabled' (1x).\nLine 26: Converted 'talent.restless_hunter' to 'talent.restless_hunter.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 2: Converted 'talent.fel_barrage' to 'talent.fel_barrage.enabled' (1x).\nLine 7: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 11: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 13: Converted 'talent.ragefire' to 'talent.ragefire.enabled' (1x).\nLine 13: Converted 'talent.fel_barrage' to 'talent.fel_barrage.enabled' (1x).\nLine 14: Converted 'talent.a_fire_inside' to 'talent.a_fire_inside.enabled' (1x).\nLine 15: Converted 'talent.ragefire' to 'talent.ragefire.enabled' (1x).\nLine 16: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 17: Converted 'talent.initiative' to 'talent.initiative.enabled' (1x).\nLine 17: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 17: Converted 'talent.momentum' to 'talent.momentum.enabled' (1x).\nLine 17: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 17: Converted 'talent.momentum' to 'talent.momentum.enabled' (1x).\nLine 17: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 17: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 17: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 17: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 17: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 17: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 17: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 17: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 17: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 17: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 18: Converted 'talent.demon_blades' to 'talent.demon_blades.enabled' (1x).\nLine 18: Converted 'talent.fel_barrage' to 'talent.fel_barrage.enabled' (1x).\nLine 20: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 21: Converted 'talent.momentum' to 'talent.momentum.enabled' (1x).\nLine 22: Converted 'talent.a_fire_inside' to 'talent.a_fire_inside.enabled' (1x).\nLine 22: Converted 'talent.unbound_chaos' to 'talent.unbound_chaos.enabled' (1x).\nLine 22: Converted 'talent.burning_wound' to 'talent.burning_wound.enabled' (1x).\nLine 24: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 24: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 24: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 24: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 24: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 24: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 24: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 24: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 24: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 24: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 25: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 25: Converted 'talent.unbound_chaos' to 'talent.unbound_chaos.enabled' (1x).\nLine 26: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 26: Converted 'talent.ragefire' to 'talent.ragefire.enabled' (1x).\nLine 27: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 27: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 27: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 27: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 27: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 27: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 27: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 27: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 27: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 27: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 27: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 28: Converted 'talent.chaotic_transformation' to 'talent.chaotic_transformation.enabled' (1x).\nLine 29: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 29: Converted 'talent.chaotic_transformation' to 'talent.chaotic_transformation.enabled' (1x).\nLine 29: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 29: Converted 'talent.initiative' to 'talent.initiative.enabled' (1x).\nLine 29: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 29: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 30: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 30: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 30: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 30: Converted 'talent.initiative' to 'talent.initiative.enabled' (1x).\nLine 30: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 30: Converted 'talent.momentum' to 'talent.momentum.enabled' (1x).\nLine 30: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 30: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 30: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 30: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 30: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 30: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 30: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 30: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 30: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 35: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 35: Converted 'talent.art_of_the_glaive' to 'talent.art_of_the_glaive.enabled' (1x).\nLine 38: Converted 'talent.furious_throws' to 'talent.furious_throws.enabled' (1x).\nLine 39: Converted 'talent.cycle_of_hatred' to 'talent.cycle_of_hatred.enabled' (1x).\nLine 40: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 41: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 41: Converted 'talent.fel_barrage' to 'talent.fel_barrage.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 1: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 2: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\n\nThe import for 'fel_barrage' required some automated changes.\nLine 2: Converted 'talent.demon_blades' to 'talent.demon_blades.enabled' (1x).\nLine 2: Converted operations in 'talent.demon_blades.enabled*(1%(2.6*attack_haste)*12*((hero_tree.felscarred&buff.metamorphosis.up)*0.33+1))+buff.immolation_aura.stack*6+buff.tactical_retreat.up*10' to 'talent.demon_blades.enabled*(1/(2.6*attack_haste)*12*((hero_tree.felscarred&buff.metamorphosis.up)*0.33+1))+buff.immolation_aura.stack*6+buff.tactical_retreat.up*10'.\nLine 9: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 14: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\n\nThe import for 'cooldown' required some automated changes.\nLine 1: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 1: Converted 'talent.fel_barrage' to 'talent.fel_barrage.enabled' (1x).\nLine 1: Converted 'talent.chaotic_transformation' to 'talent.chaotic_transformation.enabled' (1x).\nLine 1: Converted 'talent.restless_hunter' to 'talent.restless_hunter.enabled' (1x).\nLine 1: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 1: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 2: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 2: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 2: Converted 'talent.fel_barrage' to 'talent.fel_barrage.enabled' (1x).\nLine 2: Converted 'talent.chaotic_transformation' to 'talent.chaotic_transformation.enabled' (1x).\nLine 2: Converted 'talent.restless_hunter' to 'talent.restless_hunter.enabled' (1x).\nLine 2: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 2: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 5: Converted 'talent.initiative' to 'talent.initiative.enabled' (1x).\nLine 5: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 5: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 5: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.2.is.skardyns_grace' to 'trinket.t2.is.skardyns_grace' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.1.is.skardyns_grace' to 'trinket.t1.is.skardyns_grace' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 8: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 8: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 8: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 8: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_use_buff' (1x).\nLine 8: Converted 'trinket.1.is.skardyns_grace' to 'trinket.t1.is.skardyns_grace' (1x).\nLine 8: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 8: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (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.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.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 9: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (1x).\nLine 9: Converted 'trinket.2.is.skardyns_grace' to 'trinket.t2.is.skardyns_grace' (1x).\nLine 9: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 9: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (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 10: Converted 'talent.initiative' to 'talent.initiative.enabled' (1x).\nLine 11: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nThe following auras were used in the action list but were not found in the addon database:\n - any\n\nThe import for 'meta' required some automated changes.\nLine 1: Converted 'talent.chaos_theory' to 'talent.chaos_theory.enabled' (1x).\nLine 1: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 1: Converted 'talent.restless_hunter' to 'talent.restless_hunter.enabled' (1x).\nLine 2: Converted 'talent.initiative' to 'talent.initiative.enabled' (1x).\nLine 3: Converted 'talent.restless_hunter' to 'talent.restless_hunter.enabled' (1x).\nLine 4: Converted 'talent.restless_hunter' to 'talent.restless_hunter.enabled' (1x).\nLine 4: Converted 'talent.chaos_theory' to 'talent.chaos_theory.enabled' (1x).\nLine 5: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 6: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 7: Converted 'talent.momentum' to 'talent.momentum.enabled' (1x).\nLine 10: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 10: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 11: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 12: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 12: Converted 'talent.shattered_destiny' to 'talent.shattered_destiny.enabled' (1x).\nLine 15: Converted 'talent.inertia' to 'talent.inertia.enabled' (1x).\nLine 16: Converted 'talent.cycle_of_hatred' to 'talent.cycle_of_hatred.enabled' (1x).\nLine 17: Converted 'talent.restless_hunter' to 'talent.restless_hunter.enabled' (1x).\nLine 17: Converted 'talent.essence_break' to 'talent.essence_break.enabled' (1x).\nLine 17: Converted 'talent.chaotic_transformation' to 'talent.chaotic_transformation.enabled' (1x).\nLine 17: Converted 'talent.cycle_of_hatred' to 'talent.cycle_of_hatred.enabled' (1x).\nLine 22: Converted 'talent.soulscar' to 'talent.soulscar.enabled' (1x).\nLine 22: Converted 'talent.furious_throws' to 'talent.furious_throws.enabled' (1x).\nLine 28: Converted 'talent.momentum' to 'talent.momentum.enabled' (1x).\n\nImported 6 action lists.\n",
|
|
["lists"] = {
|
|
["opener"] = {
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vengeful_retreat",
|
|
["criteria"] = "talent.initiative.enabled & ( buff.initiative.down || talent.restless_hunter.enabled & buff.initiative.remains <= 0.1 ) & time > 4 & ( ( talent.essence_break.enabled & ! talent.restless_hunter.enabled & cooldown.metamorphosis.remains & cooldown.eye_beam.remains ) || ( talent.essence_break.enabled & talent.restless_hunter.enabled & ( buff.demonsurge_annihilation.down || prev_gcd.1.death_sweep ) & ( cooldown.eye_beam.remains || debuff.essence_break.up ) & buff.metamorphosis.up ) || ! talent.essence_break.enabled )",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & talent.essence_break.enabled & cooldown.metamorphosis.remains & buff.demonsurge.stack = 4 & buff.demonsurge_abyssal_gaze.up",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge_annihilation.up & talent.restless_hunter.enabled",
|
|
["action"] = "annihilation",
|
|
["line_cd"] = "10",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! hero_tree.felscarred & buff.inner_demon.up & ! talent.shattered_destiny.enabled",
|
|
["action"] = "annihilation",
|
|
["line_cd"] = "10",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & talent.restless_hunter.enabled & cooldown.essence_break.up & cooldown.metamorphosis.up & buff.demonsurge_annihilation.down & buff.metamorphosis.up",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.momentum.enabled & buff.momentum.remains < 6 & debuff.essence_break.down",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.unbound_chaos.up & talent.a_fire_inside.enabled & ( buff.inertia.down & buff.metamorphosis.up & ! hero_tree.felscarred || hero_tree.felscarred & ( buff.metamorphosis.down & charges > 1 || prev_gcd.1.eye_beam || buff.demonsurge.stack >= 5 || charges = 2 & buff.unbound_chaos.down ) ) & debuff.essence_break.down",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.unbound_chaos.up & ! talent.a_fire_inside.enabled & buff.metamorphosis.up & cooldown.metamorphosis.remains",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.unbound_chaos.up & prev_gcd.1.sigil_of_doom & ( active_enemies > 1 || talent.a_fire_inside.enabled )",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.metamorphosis.up & hero_tree.aldrachi_reaver & talent.shattered_destiny.enabled || ! talent.shattered_destiny.enabled & hero_tree.aldrachi_reaver || hero_tree.felscarred ) & ( ! talent.initiative.enabled || buff.initiative.up || time > 5 )",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hero_tree.felscarred & talent.chaos_theory.enabled & buff.metamorphosis.up & buff.demonsurge.stack = 0 & ! talent.restless_hunter.enabled",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hero_tree.felscarred & buff.demonsurge_annihilation.up & ( ! talent.essence_break.enabled || buff.inner_demon.up )",
|
|
["action"] = "annihilation",
|
|
["line_cd"] = "10",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury < 40 & ( ! talent.a_fire_inside.enabled || hero_tree.aldrachi_reaver )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.reavers_mark.down & debuff.essence_break.down",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.a_fire_inside.enabled & ( talent.inertia.enabled || talent.ragefire.enabled || talent.burning_wound.enabled ) & buff.metamorphosis.down & ( buff.unbound_chaos.down || hero_tree.felscarred )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.unbound_chaos.down & buff.metamorphosis.up & debuff.essence_break.down & cooldown.blade_dance.remains & ( buff.inner_demon.down || hero_tree.felscarred & buff.demonsurge_annihilation.down ) & buff.demonsurge.stack < 5",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.glaive_flurry.up & ! talent.shattered_destiny.enabled",
|
|
["action"] = "blade_dance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up & ! talent.shattered_destiny.enabled",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.up & cooldown.blade_dance.remains > gcd.max * 2 & buff.inner_demon.down & ( ! hero_tree.felscarred & ( ! talent.restless_hunter.enabled || prev_gcd.1.death_sweep ) || buff.demonsurge.stack = 2 ) & ( cooldown.essence_break.remains || hero_tree.felscarred || talent.shattered_destiny.enabled || ! talent.essence_break.enabled )",
|
|
["action"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hero_tree.felscarred || debuff.reavers_mark.up & ( ! talent.cycle_of_hatred.enabled || cooldown.eye_beam.remains & cooldown.metamorphosis.remains )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inner_demon.down & debuff.essence_break.down & cooldown.blade_dance.remains",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.down || debuff.essence_break.down & buff.inner_demon.down & ( cooldown.blade_dance.remains || talent.essence_break.enabled & cooldown.essence_break.up )",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & cooldown.blade_dance.remains & buff.inner_demon.down",
|
|
["action"] = "abyssal_gaze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.blade_dance.remains < gcd.max & ! hero_tree.felscarred & ! talent.shattered_destiny.enabled & buff.metamorphosis.up || ( cooldown.eye_beam.remains || buff.demonsurge_abyssal_gaze.down & ( buff.demonsurge.stack = 5 || buff.demonsurge.stack = 4 & ! talent.inner_demon.enabled ) ) & cooldown.metamorphosis.remains ) & ( ! hero_tree.felscarred || buff.inner_demon.down )",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.restless_hunter.enabled & buff.metamorphosis.up & buff.inner_demon.down & ( ! hero_tree.felscarred || buff.demonsurge_annihilation.down )",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["action"] = "death_sweep",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "annihilation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "demons_bite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.rending_strike.down & buff.glaive_flurry.up & cooldown.blade_dance.up & gcd.remains = 0 || variable.rg_inc & prev_gcd.1.death_sweep",
|
|
["var_name"] = "rg_inc",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.fel_barrage.enabled & ( cooldown.fel_barrage.remains < gcd.max * 7 & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in < gcd.max * 7 || raid_event.adds.in > 90 ) & ( cooldown.metamorphosis.remains || active_enemies > 2 ) || buff.fel_barrage.up ) & ! ( active_enemies = 1 & ! raid_event.adds.exists )",
|
|
["var_name"] = "fel_barrage",
|
|
},
|
|
{
|
|
["action"] = "disrupt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.up & buff.unbound_chaos.remains < gcd.max * 2 & ( action.immolation_aura.charges > 0 || action.immolation_aura.recharge_time < 5 ) & cooldown.metamorphosis.remains > 10",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up & buff.glaive_flurry.up & ( variable.rg_ds = 2 || active_enemies > 2 )",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up & buff.glaive_flurry.up & ( variable.rg_ds = 2 || active_enemies > 2 )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.glaive_flurry.down & buff.rending_strike.down & buff.thrill_of_the_fight_damage.remains < gcd.max * 4 + ( variable.rg_ds = 2 ) + ( cooldown.the_hunt.remains < gcd.max * 3 ) * 3 + ( cooldown.eye_beam.remains < gcd.max * 3 & talent.shattered_destiny.enabled ) * 3 & ( variable.rg_ds = 0 || variable.rg_ds = 1 & cooldown.blade_dance.up || variable.rg_ds = 2 & cooldown.blade_dance.remains ) & ( buff.thrill_of_the_fight_damage.up || ! prev_gcd.1.death_sweep || ! variable.rg_inc ) & active_enemies < 3 & ! action.reavers_glaive.last_used < 5 & debuff.essence_break.down || fight_remains < 10",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.glaive_flurry.down & buff.rending_strike.down & buff.thrill_of_the_fight_damage.remains < 4 & ( buff.thrill_of_the_fight_damage.up || ! prev_gcd.1.death_sweep || ! variable.rg_inc ) & active_enemies > 2 || fight_remains < 10",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cooldown",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.eye_beam.up || cooldown.metamorphosis.up || cooldown.essence_break.up ) & time < 15 & ( raid_event.adds.in > 40 ) & buff.demonsurge.stack < 5",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & debuff.reavers_mark.remains >= 2 - talent.quickened_sigils.enabled",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.fel_barrage & raid_event.adds.up",
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "fel_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 & talent.ragefire.enabled & buff.unbound_chaos.down & ( ! talent.fel_barrage.enabled || cooldown.fel_barrage.remains > recharge_time ) & debuff.essence_break.down & cooldown.eye_beam.remains > recharge_time + 5 & ( buff.metamorphosis.down || buff.metamorphosis.remains > 5 )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "immolation_aura",
|
|
["description"] = "actions.default+=/immolation_aura,if=cooldown.eye_beam.remains>24&buff.metamorphosis.down&debuff.essence_break.down actions.default+=/immolation_aura,if=cooldown.eye_beam.remains<8&cooldown.blade_dance.remains&debuff.essence_break.down&buff.student_of_suffering.down",
|
|
["criteria"] = "hero_tree.felscarred & cooldown.metamorphosis.remains < 10 & cooldown.eye_beam.remains < 10 & ( buff.unbound_chaos.down || action.fel_rush.charges = 0 || ( cooldown.eye_beam.remains <? cooldown.metamorphosis.remains ) < 5 ) & talent.a_fire_inside.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 & talent.ragefire.enabled & raid_event.adds.up & raid_event.adds.remains < 15 & raid_event.adds.remains > 5 & debuff.essence_break.down",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.up & active_enemies > 2 & ( ! talent.inertia.enabled || cooldown.eye_beam.remains + 2 > buff.unbound_chaos.remains )",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vengeful_retreat",
|
|
["criteria"] = "talent.initiative.enabled & ( cooldown.eye_beam.remains > 15 & gcd.remains < 0.3 || gcd.remains < 0.2 & cooldown.eye_beam.remains <= gcd.remains & ( buff.unbound_chaos.up || action.immolation_aura.recharge_time > 6 || ! talent.inertia.enabled || talent.momentum.enabled ) & ( cooldown.metamorphosis.remains > 10 || cooldown.blade_dance.remains < gcd.max * 2 & ( talent.inertia.enabled || talent.momentum.enabled || buff.metamorphosis.up ) ) ) & ( ! talent.student_of_suffering.enabled || cooldown.sigil_of_flame.remains ) & time > 10 & ( ! variable.trinket1_steroids & ! variable.trinket2_steroids || variable.trinket1_steroids & ( trinket.t1.cooldown.remains < gcd.max * 3 || trinket.t1.cooldown.remains > 20 ) || variable.trinket2_steroids & ( trinket.t2.cooldown.remains < gcd.max * 3 || trinket.t2.cooldown.remains > 20 || talent.shattered_destiny.enabled ) ) & ( cooldown.metamorphosis.remains || hero_tree.aldrachi_reaver ) & time > 20",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.fel_barrage || ! talent.demon_blades.enabled & talent.fel_barrage.enabled & ( buff.fel_barrage.up || cooldown.fel_barrage.up ) & buff.metamorphosis.down",
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "fel_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "buff.metamorphosis.up",
|
|
["list_name"] = "meta",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.up & talent.inertia.enabled & buff.inertia.down & cooldown.blade_dance.remains < 4 & cooldown.eye_beam.remains > 5 & ( action.immolation_aura.charges > 0 || action.immolation_aura.recharge_time + 2 < cooldown.eye_beam.remains || cooldown.eye_beam.remains > buff.unbound_chaos.remains - 2 )",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.momentum.enabled & cooldown.eye_beam.remains < gcd.max * 2",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.a_fire_inside.enabled & ( talent.unbound_chaos.enabled || talent.burning_wound.enabled ) & buff.unbound_chaos.down & full_recharge_time < gcd.max * 2 & ( raid_event.adds.in > full_recharge_time || active_enemies > desired_targets )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > desired_targets & buff.unbound_chaos.down & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > full_recharge_time )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.unbound_chaos.down & cooldown.eye_beam.remains < 5 & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > full_recharge_time & ( ! talent.essence_break.enabled || cooldown.essence_break.remains < 5 ) ) & ( ! variable.trinket1_steroids & ! variable.trinket2_steroids || variable.trinket1_steroids & ( trinket.t1.cooldown.remains < gcd.max * 3 || trinket.t1.cooldown.remains > 20 ) || variable.trinket2_steroids & ( trinket.t2.cooldown.remains < gcd.max * 3 || trinket.t2.cooldown.remains > 20 ) )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.inertia.down & ( ! talent.unbound_chaos.enabled || buff.unbound_chaos.down ) & recharge_time + 5 < cooldown.eye_beam.remains & cooldown.blade_dance.remains & cooldown.blade_dance.remains < 4 & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > full_recharge_time ) & charges_fractional > 1.00",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 15 & cooldown.blade_dance.remains & ( talent.inertia.enabled || talent.ragefire.enabled )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.student_of_suffering.enabled & cooldown.eye_beam.remains < gcd.max & ( ! talent.inertia.enabled || buff.inertia_trigger.up ) & ( cooldown.essence_break.remains < gcd.max * 4 || ! talent.essence_break.enabled ) & ( cooldown.metamorphosis.remains > 10 || cooldown.blade_dance.remains < gcd.max * 3 ) & ( ! variable.trinket1_steroids & ! variable.trinket2_steroids || variable.trinket1_steroids & ( trinket.t1.cooldown.remains < gcd.max * 3 || trinket.t1.cooldown.remains > 20 ) || variable.trinket2_steroids & ( trinket.t2.cooldown.remains < gcd.max * 3 || trinket.t2.cooldown.remains > 20 ) )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.metamorphosis.up & talent.chaotic_transformation.enabled",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.essence_break.enabled & ( ! talent.chaotic_transformation.enabled || cooldown.metamorphosis.remains < 5 + 3 * talent.shattered_destiny.enabled || cooldown.metamorphosis.remains > 10 ) & ( active_enemies > desired_targets * 2 || raid_event.adds.in > 30 - talent.cycle_of_hatred.rank * 13 ) & ( ! talent.initiative.enabled || cooldown.vengeful_retreat.remains > 5 || cooldown.vengeful_retreat.up || talent.shattered_destiny.enabled ) & ( ! talent.student_of_suffering.enabled || cooldown.sigil_of_flame.remains )",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.essence_break.enabled & ( cooldown.essence_break.remains < gcd.max * 2 + 5 * talent.shattered_destiny.enabled || talent.shattered_destiny.enabled & cooldown.essence_break.remains > 10 ) & ( cooldown.blade_dance.remains < 7 || raid_event.adds.up ) & ( ! talent.initiative.enabled || cooldown.vengeful_retreat.remains > 10 || ! talent.inertia.enabled & ! talent.momentum.enabled || raid_event.adds.up ) & ( active_enemies + 3 >= desired_targets + raid_event.adds.count || raid_event.adds.in > 30 - talent.cycle_of_hatred.rank * 6 ) & ( ! talent.inertia.enabled || buff.inertia_trigger.up || action.immolation_aura.charges = 0 & action.immolation_aura.recharge_time > 5 ) & ( ! raid_event.adds.up || raid_event.adds.remains > 8 ) & ( ! variable.trinket1_steroids & ! variable.trinket2_steroids || variable.trinket1_steroids & ( trinket.t1.cooldown.remains < gcd.max * 3 || trinket.t1.cooldown.remains > 20 ) || variable.trinket2_steroids & ( trinket.t2.cooldown.remains < gcd.max * 3 || trinket.t2.cooldown.remains > 20 ) ) || fight_remains < 10",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.eye_beam.remains >= gcd.max * 3 & buff.rending_strike.down",
|
|
["action"] = "blade_dance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.down & fury.deficit > 40",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > 10",
|
|
["action"] = "glaive_tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 3 & ! talent.student_of_suffering.enabled || buff.out_of_range.down & talent.art_of_the_glaive.enabled",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.up || cooldown.essence_break.true_remains > cooldown.essence_break.duration - debuff.essence_break.duration",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.out_of_range.down || fury.deficit > 40 )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & talent.furious_throws.enabled",
|
|
["action"] = "throw_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.eye_beam.remains > gcd.max * 2 || fury > 80 || talent.cycle_of_hatred.enabled",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.inertia.enabled & ( raid_event.adds.in > full_recharge_time || active_enemies > desired_targets & active_enemies > 2 )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.out_of_range.down & debuff.essence_break.down & ! talent.student_of_suffering.enabled & ( ! talent.fel_barrage.enabled || cooldown.fel_barrage.remains > 25 || ( active_enemies = 1 & ! raid_event.adds.exists ) )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "actions.default+=/felblade,if=cooldown.blade_dance.remains>=0.5&cooldown.blade_dance.remains<gcd.max",
|
|
["action"] = "demons_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.down & recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1",
|
|
["action"] = "throw_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.down & recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & active_enemies > 1",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.out_of_range.down & debuff.essence_break.down & fury < 100",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_stat.any_dps",
|
|
["var_name"] = "trinket1_steroids",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_stat.any_dps",
|
|
["var_name"] = "trinket2_steroids",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "rg_ds",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.immolation_aura.down",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
},
|
|
["meta"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains < gcd.max || ( hero_tree.felscarred & talent.chaos_theory.enabled & talent.essence_break.enabled & ( cooldown.metamorphosis.up || prev_gcd.1.metamorphosis ) & buff.demonsurge.stack = 0 ) & ( ! talent.restless_hunter.enabled || cooldown.metamorphosis.remains & cooldown.essence_break.remains )",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vengeful_retreat",
|
|
["criteria"] = "talent.initiative.enabled & cooldown.metamorphosis.remains & cooldown.eye_beam.remains",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains < gcd.max || debuff.essence_break.remains & debuff.essence_break.remains < 0.5 || talent.restless_hunter.enabled & buff.demonsurge_annihilation.up & cooldown.essence_break.up & cooldown.metamorphosis.up",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( hero_tree.felscarred & buff.demonsurge_annihilation.up & ( talent.restless_hunter.enabled || ! talent.chaos_theory.enabled || buff.chaos_theory.up ) ) & ( cooldown.eye_beam.remains < gcd.max * 3 & cooldown.blade_dance.remains || cooldown.metamorphosis.remains < gcd.max * 3 )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & cooldown.metamorphosis.remains & ( ! hero_tree.felscarred || cooldown.eye_beam.remains )",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & cooldown.blade_dance.remains < gcd.max * 3 & ( ! hero_tree.felscarred || cooldown.eye_beam.remains ) & cooldown.metamorphosis.remains",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.momentum.enabled & buff.momentum.remains < gcd.max * 2",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges = 2 & active_enemies > 1 & debuff.essence_break.down",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.inner_demon.up ) & ( cooldown.eye_beam.remains < gcd.max * 3 & cooldown.blade_dance.remains || cooldown.metamorphosis.remains < gcd.max * 3 )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury > 20 & ( cooldown.metamorphosis.remains > 10 || cooldown.blade_dance.remains < gcd.max * 2 ) & ( buff.unbound_chaos.down || buff.inertia.up || ! talent.inertia.enabled ) & buff.out_of_range.remains < gcd.max & ( ! talent.shattered_destiny.enabled || cooldown.eye_beam.remains > 4 ) & ( ! hero_tree.felscarred || active_enemies > 1 || cooldown.metamorphosis.remains > 5 & cooldown.eye_beam.remains ) || fight_remains < 10",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.blade_dance.remains & talent.inertia.enabled & buff.metamorphosis.remains > 10 & hero_tree.felscarred & full_recharge_time < gcd.max * 2 & buff.unbound_chaos.down & debuff.essence_break.down",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury > 20 & ( cooldown.metamorphosis.remains > 10 || cooldown.blade_dance.remains < gcd.max * 2 ) & ( buff.unbound_chaos.down || buff.inertia.up || ! talent.inertia.enabled ) & buff.out_of_range.remains < gcd.max & ( ! talent.shattered_destiny.enabled || cooldown.eye_beam.remains > 4 ) || fight_remains < 10",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.blade_dance.remains & debuff.essence_break.down",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge.up & buff.demonsurge.remains < gcd.max * 3 & buff.demonsurge_consuming_fire.up",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & cooldown.blade_dance.remains > gcd.max + 0.5 & buff.unbound_chaos.down & talent.inertia.enabled & buff.inertia.down & full_recharge_time + 3 < cooldown.eye_beam.remains & buff.metamorphosis.remains > 5",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.cycle_of_hatred.enabled",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( debuff.essence_break.up || cooldown.essence_break.remains >= gcd.max * 2 || ( cooldown.metamorphosis.up & cooldown.eye_beam.remains & ! talent.restless_hunter.enabled ) || ! talent.essence_break.enabled || ( prev_gcd.1.metamorphosis & talent.chaotic_transformation.enabled ) ) & talent.cycle_of_hatred.enabled",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & buff.inner_demon.down",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & buff.inner_demon.down",
|
|
["action"] = "abyssal_gaze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & ( cooldown.blade_dance.remains > gcd.max * 2 || fury > 60 ) & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > 10 )",
|
|
["action"] = "glaive_tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 & debuff.essence_break.down",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.soulscar.enabled & talent.furious_throws.enabled & active_enemies > 1 & debuff.essence_break.down",
|
|
["action"] = "throw_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.blade_dance.remains || fury > 60 || soul_fragments > 0 || buff.metamorphosis.remains < 5 & cooldown.felblade.up",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains > 5 & buff.out_of_range.down",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.out_of_range.down || fury.deficit > 40 )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & buff.out_of_range.down",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.out_of_range.down & recharge_time < ( cooldown.eye_beam.remains <? buff.metamorphosis.remains ) & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > full_recharge_time )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.momentum.enabled",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["action"] = "annihilation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.down & recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1",
|
|
["action"] = "throw_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.down & recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["action"] = "demons_bite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cooldown"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( cooldown.eye_beam.remains >= 20 & ( ! talent.essence_break.enabled || debuff.essence_break.up ) & buff.fel_barrage.down & ( raid_event.adds.in > 40 || ( raid_event.adds.remains > 8 || ! talent.fel_barrage.enabled ) & active_enemies > 2 ) || ! talent.chaotic_transformation.enabled || boss & fight_remains < 30 ) & buff.inner_demon.down & ( ! talent.restless_hunter.enabled & cooldown.blade_dance.remains > gcd.max * 3 || prev_gcd.1.death_sweep ) ) & ! talent.inertia.enabled & ! talent.essence_break.enabled & ( hero_tree.aldrachi_reaver || buff.demonsurge_death_sweep.down ) & time > 15",
|
|
["action"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.blade_dance.remains & ( ( prev_gcd.1.death_sweep || prev_gcd.2.death_sweep || prev_gcd.3.death_sweep || buff.metamorphosis.up & buff.metamorphosis.remains < gcd.max ) & cooldown.eye_beam.remains & ( ! talent.essence_break.enabled || debuff.essence_break.up || talent.shattered_destiny.enabled || hero_tree.felscarred ) & buff.fel_barrage.down & ( raid_event.adds.in > 40 || ( raid_event.adds.remains > 8 || ! talent.fel_barrage.enabled ) & active_enemies > 2 ) || ! talent.chaotic_transformation.enabled || boss & fight_remains < 30 ) & ( buff.inner_demon.down & ( buff.rending_strike.down || ! talent.restless_hunter.enabled || prev_gcd.1.death_sweep ) ) ) & ( talent.inertia.enabled || talent.essence_break.enabled ) & ( hero_tree.aldrachi_reaver || ( buff.demonsurge_death_sweep.down || buff.metamorphosis.remains < gcd.max ) & ( buff.demonsurge_annihilation.down ) ) & time > 15",
|
|
["action"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 35 || buff.metamorphosis.up || debuff.essence_break.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "equipped.mad_queens_mandate || equipped.treacherous_transmitter || equipped.skardyns_grace",
|
|
["var_name"] = "special_trinket",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mad_queens_mandate",
|
|
["criteria"] = "( ( ! talent.initiative.enabled || buff.initiative.up || time > 5 ) & ( buff.metamorphosis.remains > 5 || buff.metamorphosis.down ) & ( trinket.t1.is.mad_queens_mandate & ( trinket.t2.cooldown.duration < 10 || trinket.t2.cooldown.remains > 10 || ! trinket.t2.has_use_buff ) || trinket.t2.is.mad_queens_mandate & ( trinket.t1.cooldown.duration < 10 || trinket.t1.cooldown.remains > 10 || ! trinket.t1.has_use_buff ) ) & fight_remains > 120 || fight_remains < 10 & fight_remains < buff.metamorphosis.remains ) & debuff.essence_break.down || fight_remains < 5",
|
|
["name"] = "mad_queens_mandate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "treacherous_transmitter",
|
|
["criteria"] = "! equipped.mad_queens_mandate || equipped.mad_queens_mandate & ( trinket.t1.is.mad_queens_mandate & trinket.t1.cooldown.remains > fight_remains || trinket.t2.is.mad_queens_mandate & trinket.t2.cooldown.remains > fight_remains ) || fight_remains > 25",
|
|
["name"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "skardyns_grace",
|
|
["criteria"] = "( ! equipped.mad_queens_mandate || fight_remains > 25 || trinket.t2.is.skardyns_grace & trinket.t1.cooldown.remains > fight_remains || trinket.t1.is.skardyns_grace & trinket.t2.cooldown.remains > fight_remains || trinket.t1.cooldown.duration < 10 || trinket.t2.cooldown.duration < 10 ) & buff.metamorphosis.up",
|
|
["name"] = "skardyns_grace",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "( ( cooldown.eye_beam.remains < gcd.max & active_enemies > 1 || buff.metamorphosis.up ) & ( raid_event.adds.in > trinket.t1.cooldown.duration - 15 || raid_event.adds.remains > 8 ) || ! trinket.t1.has_use_buff || fight_remains < 25 ) & ! trinket.t1.is.skardyns_grace & ! trinket.t1.is.mad_queens_mandate & ! trinket.t1.is.treacherous_transmitter & ( ! variable.special_trinket || trinket.t2.cooldown.remains > 20 )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "( ( cooldown.eye_beam.remains < gcd.max & active_enemies > 1 || buff.metamorphosis.up ) & ( raid_event.adds.in > trinket.t2.cooldown.duration - 15 || raid_event.adds.remains > 8 ) || ! trinket.t2.has_use_buff || fight_remains < 25 ) & ! trinket.t2.is.skardyns_grace & ! trinket.t2.is.mad_queens_mandate & ! trinket.t2.is.treacherous_transmitter & ( ! variable.special_trinket || trinket.t1.cooldown.remains > 20 )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > 90 ) & ( debuff.reavers_mark.up || ! hero_tree.aldrachi_reaver ) & buff.reavers_glaive.down & ( buff.metamorphosis.remains > 5 || buff.metamorphosis.down ) & ( ! talent.initiative.enabled || buff.initiative.up || time > 5 ) & time > 5",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & ( debuff.reavers_mark.remains >= 2 - talent.quickened_sigils.enabled || ! hero_tree.aldrachi_reaver ) & cooldown.blade_dance.remains & time > 15",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
},
|
|
["fel_barrage"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.felblade.remains < gcd.max || cooldown.sigil_of_flame.remains < gcd.max",
|
|
["var_name"] = "generator_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.demon_blades.enabled * ( 1 / ( 2.6 * attack_haste ) * 12 * ( ( hero_tree.felscarred & buff.metamorphosis.up ) * 0.33 + 1 ) ) + buff.immolation_aura.stack * 6 + buff.tactical_retreat.up * 10",
|
|
["var_name"] = "fury_gen",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "gcd.max * 32",
|
|
["var_name"] = "gcd_drain",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inner_demon.up",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.down & ( active_enemies > 1 & raid_event.adds.up || raid_event.adds.in > 40 )",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.down & ( active_enemies > 1 & raid_event.adds.up || raid_event.adds.in > 40 )",
|
|
["action"] = "abyssal_gaze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.down & buff.metamorphosis.up",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.down",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.down & ( active_enemies > 2 || buff.fel_barrage.up ) & ( ! talent.inertia.enabled || cooldown.eye_beam.remains > recharge_time + 3 )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.down & active_enemies > 1",
|
|
["action"] = "glaive_tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.down",
|
|
["action"] = "blade_dance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury > 100 & ( raid_event.adds.in > 90 || raid_event.adds.in < gcd.max || raid_event.adds.remains > 4 & active_enemies > 2 )",
|
|
["action"] = "fel_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.up & fury > 20 & buff.fel_barrage.up",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit > 40 & buff.fel_barrage.up & ( ! talent.student_of_suffering.enabled || cooldown.eye_beam.remains > 30 )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit > 40 & buff.fel_barrage.up",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.up & fury.deficit > 40",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury - variable.gcd_drain - 35 > 0 & ( buff.fel_barrage.remains < 3 || variable.generator_up || fury > 80 || variable.fury_gen > 18 )",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury - variable.gcd_drain - 30 > 0 & ( buff.fel_barrage.remains < 3 || variable.generator_up || fury > 80 || variable.fury_gen > 18 )",
|
|
["action"] = "glaive_tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury - variable.gcd_drain - 35 > 0 & ( buff.fel_barrage.remains < 3 || variable.generator_up || fury > 80 || variable.fury_gen > 18 )",
|
|
["action"] = "blade_dance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit > 40 & buff.fel_barrage.up",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.up",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury > 40 & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > 80 )",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury - variable.gcd_drain - 40 > 20 & ( buff.fel_barrage.remains < 3 || variable.generator_up || fury > 80 || variable.fury_gen > 18 )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury - variable.gcd_drain - 40 > 20 & ( cooldown.fel_barrage.remains & cooldown.fel_barrage.remains < 10 & fury > 100 || buff.fel_barrage.up & ( buff.fel_barrage.remains * variable.fury_gen - buff.fel_barrage.remains * 32 ) > 0 )",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["action"] = "demons_bite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["author"] = "SimC",
|
|
},
|
|
["Subtlety"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20241101,
|
|
["spec"] = 261,
|
|
["desc"] = "2024-11-01: SimC Updates - Syrif\n\n2024-10-06: SimC updates, SnD out-of-combat only if refreshable; Gear-a-Rang out of stealth\n\n2024-09-22: Efficiency updates\n\n2024-09-03, 09-11: SimC updates\n\n2024-08-15, 22: SimC updates\n\n2024-07-28: The War Within",
|
|
["lists"] = {
|
|
["fill"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy.deficit >= 15 + energy.regen",
|
|
["action"] = "arcane_torrent",
|
|
["description"] = "This list usually contains Cooldowns with neglectable impact that causes global cooldowns",
|
|
},
|
|
{
|
|
["action"] = "arcane_pulse",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bag_of_tricks",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "stealth",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "kick",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.shadow_dance.up || buff.stealth.up || buff.vanish.up",
|
|
["var_name"] = "stealth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.shadow_dance.up || ! buff.slice_and_dice.up || buff.darkest_night.up || active_enemies >= 8 & ! talent.replicating_shadows.enabled & talent.unseen_blade.enabled",
|
|
["var_name"] = "skip_rupture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( dot.rupture.ticking || variable.skip_rupture ) & buff.slice_and_dice.up",
|
|
["var_name"] = "maintenance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.shadow_dance.up || ( cooldown.flagellation.remains < 40 & cooldown.flagellation.remains > 20 & talent.death_perception.enabled )",
|
|
["var_name"] = "secret",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( buff.flagellation_buff.up & buff.shadow_dance.up ) || ! talent.shadow_blades.enabled & buff.symbols_of_death.up || boss & fight_remains < 20",
|
|
["var_name"] = "racial_sync",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "combo_points <= 1 || buff.darkest_night.up & combo_points >= 7 || effective_combo_points >= 6 & talent.unseen_blade.enabled",
|
|
["var_name"] = "shd_cp",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Cooldowns",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.racial_sync",
|
|
["action"] = "blood_fury",
|
|
["description"] = "Racials",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.racial_sync",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.racial_sync & buff.shadow_dance.up",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.racial_sync",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["description"] = "Items (Trinkets)",
|
|
["criteria"] = "cooldown.flagellation.remains <= 2 || boss & fight_remains <= 15",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["criteria"] = "dot.rupture.ticking & buff.flagellation_buff.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "mad_queens_mandate",
|
|
["action"] = "mad_queens_mandate",
|
|
["criteria"] = "( ! talent.lingering_darkness.enabled || buff.lingering_darkness.up || equipped.treacherous_transmitter ) & ( ! equipped.treacherous_transmitter || cooldown.treacherous_transmitter.remains > 20 ) || boss & fight_remains <= 15",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["slots"] = "trinket1",
|
|
["action"] = "trinket1",
|
|
["criteria"] = "( variable.trinket_sync_slot = 1 & ( buff.shadow_blades.up || boss & fight_remains <= 20 ) || ( variable.trinket_sync_slot = 2 & ( ! trinket.t2.cooldown.ready & ! buff.shadow_blades.up & cooldown.shadow_blades.remains > 20 ) ) || ! variable.trinket_sync_slot )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["slots"] = "trinket2",
|
|
["action"] = "trinket2",
|
|
["criteria"] = "( variable.trinket_sync_slot = 2 & ( buff.shadow_blades.up || boss & fight_remains <= 20 ) || ( variable.trinket_sync_slot = 1 & ( ! trinket.t1.cooldown.ready & ! buff.shadow_blades.up & cooldown.shadow_blades.remains > 20 ) ) || ! variable.trinket_sync_slot )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Cooldowns for Stealth",
|
|
["criteria"] = "! variable.stealth",
|
|
["list_name"] = "stealth_cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Finishing Rules",
|
|
["criteria"] = "! buff.darkest_night.up & effective_combo_points >= 6 || buff.darkest_night.up & combo_points = cp_max_spend",
|
|
["list_name"] = "finish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Combo Point Builder",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "build",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Filler, Spells used if you can use nothing else.",
|
|
["criteria"] = "! variable.stealth",
|
|
["list_name"] = "fill",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "apply_poison",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "toggle.funnel",
|
|
["description"] = "Swap to priority rotation if the variable is enabled",
|
|
["var_name"] = "priority_rotation",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["criteria"] = "trinket.t1.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_sync_slot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["criteria"] = "trinket.t2.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_sync_slot",
|
|
},
|
|
{
|
|
["action"] = "stealth",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["finish"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.secret",
|
|
["action"] = "secret_technique",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.skip_rupture & ( ! dot.rupture.ticking || refreshable ) & target.time_to_die - remains > 6",
|
|
["action"] = "rupture",
|
|
["description"] = "Maintenance Finisher",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rupture",
|
|
["criteria"] = "! variable.skip_rupture & ! variable.priority_rotation & target.time_to_die >= ( 2 * combo_points ) & refreshable & active_enemies >= 2",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.priority_rotation & variable.maintenance & active_enemies >= 2 & ! buff.flawless_form.up & ! buff.darkest_night.up",
|
|
["action"] = "black_powder",
|
|
["description"] = "Direct Damage Finisher",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.fazed.up",
|
|
["action"] = "dispatch",
|
|
},
|
|
{
|
|
["action"] = "eviscerate",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.secret_technique.up & buff.shadow_dance.up & combo_points >= 6 & variable.secret",
|
|
["action"] = "cold_blood",
|
|
["description"] = "Cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bloodlust.up || boss & fight_remains < 30 || buff.flagellation_buff.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.symbols_of_death.remains <= 3 & variable.maintenance & ( buff.flagellation_buff.up & cooldown.secret_technique.remains < 8 || ! talent.flagellation.enabled || buff.flagellation_persist.up & talent.unseen_blade.enabled || cooldown.flagellation.remains >= 30 - 15 * ! talent.death_perception.enabled & cooldown.secret_technique.remains < 8 || ! talent.death_perception.enabled ) || boss & fight_remains <= 15 )",
|
|
["action"] = "symbols_of_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.maintenance & variable.shd_cp & buff.shadow_dance.up & ! buff.premeditation.up",
|
|
["action"] = "shadow_blades",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.shadow_dance.remains > 2 & ! buff.thistle_tea.up",
|
|
["action"] = "thistle_tea",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points >= 5 || boss & fight_remains <= 25",
|
|
["action"] = "flagellation",
|
|
},
|
|
},
|
|
["stealth_cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.shd_cp & variable.maintenance & cooldown.secret_technique.remains <= 24 & ( buff.symbols_of_death.remains >= 6 || buff.flagellation_persist.remains >= 6 ) || boss & fight_remains <= 10",
|
|
["action"] = "shadow_dance",
|
|
["description"] = "Shadow Dance, Vanish, Shadowmeld",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy >= 40 & ! buff.subterfuge.up & effective_combo_points <= 3",
|
|
["action"] = "vanish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy >= 40 & combo_points.deficit >= 3",
|
|
["action"] = "shadowmeld",
|
|
},
|
|
},
|
|
["build"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadowstrike",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "debuff.find_weakness.remains <= 2 & active_enemies = 2 & talent.unseen_blade.enabled || ! used_for_danse & ! talent.premeditation.enabled",
|
|
["description"] = "Combo Point Builder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.deathstalkers_mark.enabled & ! buff.premeditation.up & active_enemies >= ( 2 + 3 * buff.shadow_dance.up ) || buff.clear_the_witnesses.up & ! buff.symbols_of_death.up || buff.flawless_form.up & active_enemies >= 3 & ! variable.stealth",
|
|
["action"] = "shuriken_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.lingering_darkness.up || talent.deathstalkers_mark.enabled & cooldown.shadow_blades.remains >= 32 & active_enemies >= 2 || talent.unseen_blade.enabled & buff.symbols_of_death.up & active_enemies >= 4",
|
|
["action"] = "shuriken_tornado",
|
|
},
|
|
{
|
|
["action"] = "shadowstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points.deficit >= 3",
|
|
["action"] = "goremaws_bite",
|
|
},
|
|
{
|
|
["action"] = "gloomblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "backstab",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241101,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 4: Converted 'talent.replicating_shadows' to 'talent.replicating_shadows.enabled' (1x).\nLine 4: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\nLine 6: Converted 'talent.death_perception' to 'talent.death_perception.enabled' (1x).\nLine 7: Converted 'talent.shadow_blades' to 'talent.shadow_blades.enabled' (1x).\nLine 8: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\nLine 16: Converted 'talent.lingering_darkness' to 'talent.lingering_darkness.enabled' (1x).\nLine 16: Converted 'trinket.treacherous_transmitter.cooldown.remains' to 'cooldown.treacherous_transmitter.remains'.\nLine 17: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 17: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 18: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 18: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\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 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 6: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\n\nThe import for 'cds' required some automated changes.\nLine 3: Converted 'talent.flagellation' to 'talent.flagellation.enabled' (1x).\nLine 3: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\nLine 3: Converted 'talent.death_perception' to 'talent.death_perception.enabled' (1x).\nLine 3: Converted 'talent.death_perception' to 'talent.death_perception.enabled' (1x).\n\nThe import for 'build' required some automated changes.\nLine 1: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\nLine 1: Converted 'talent.premeditation' to 'talent.premeditation.enabled' (1x).\nLine 2: Converted 'talent.deathstalkers_mark' to 'talent.deathstalkers_mark.enabled' (1x).\nLine 3: Converted 'talent.deathstalkers_mark' to 'talent.deathstalkers_mark.enabled' (1x).\nLine 3: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\n\nImported 7 action lists.\n",
|
|
["author"] = "SimC",
|
|
["profile"] = "actions.precombat+=/apply_poison\n# Swap to priority rotation if the variable is enabled\nactions.precombat+=/variable,name=priority_rotation,value=toggle.funnel\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)\nactions.precombat+=/variable,name=trinket_sync_slot,value=1,if=trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_sync_slot,value=2,if=trinket.2.is.treacherous_transmitter\nactions.precombat+=/stealth\n\n\nactions+=/stealth\nactions+=/kick\nactions+=/variable,name=stealth,value=buff.shadow_dance.up||buff.stealth.up||buff.vanish.up\nactions+=/variable,name=skip_rupture,value=buff.shadow_dance.up||!buff.slice_and_dice.up||buff.darkest_night.up||active_enemies>=8&!talent.replicating_shadows&talent.unseen_blade\nactions+=/variable,name=maintenance,value=(dot.rupture.ticking||variable.skip_rupture)&buff.slice_and_dice.up\nactions+=/variable,name=secret,value=buff.shadow_dance.up||(cooldown.flagellation.remains<40&cooldown.flagellation.remains>20&talent.death_perception)\nactions+=/variable,name=racial_sync,value=(buff.flagellation_buff.up&buff.shadow_dance.up)||!talent.shadow_blades&buff.symbols_of_death.up||boss&fight_remains<20\nactions+=/variable,name=shd_cp,value=combo_points<=1||buff.darkest_night.up&combo_points>=7||effective_combo_points>=6&talent.unseen_blade\n# Cooldowns\nactions+=/call_action_list,name=cds\n# Racials\nactions+=/blood_fury,if=variable.racial_sync\nactions+=/berserking,if=variable.racial_sync\nactions+=/fireblood,if=variable.racial_sync&buff.shadow_dance.up\nactions+=/ancestral_call,if=variable.racial_sync\n## actions+=/invoke_external_buff,name=power_infusion,if=buff.shadow_dance.up\n# Items (Trinkets)\nactions+=/use_item,name=treacherous_transmitter,if=cooldown.flagellation.remains<=2||boss&fight_remains<=15\n## actions+=/do_treacherous_transmitter_task,if=buff.shadow_dance.up||boss&fight_remains<=15\nactions+=/use_item,name=imperfect_ascendancy_serum,use_off_gcd=1,if=dot.rupture.ticking&buff.flagellation_buff.up\nactions+=/use_item,name=mad_queens_mandate,if=(!talent.lingering_darkness||buff.lingering_darkness.up||equipped.treacherous_transmitter)&(!equipped.treacherous_transmitter||trinket.treacherous_transmitter.cooldown.remains>20)||boss&fight_remains<=15\nactions+=/use_items,slots=trinket1,if=(variable.trinket_sync_slot=1&(buff.shadow_blades.up||boss&fight_remains<=20)||(variable.trinket_sync_slot=2&(!trinket.2.cooldown.ready&!buff.shadow_blades.up&cooldown.shadow_blades.remains>20))||!variable.trinket_sync_slot)\nactions+=/use_items,slots=trinket2,if=(variable.trinket_sync_slot=2&(buff.shadow_blades.up||boss&fight_remains<=20)||(variable.trinket_sync_slot=1&(!trinket.1.cooldown.ready&!buff.shadow_blades.up&cooldown.shadow_blades.remains>20))||!variable.trinket_sync_slot)\n\n# Cooldowns for Stealth\nactions+=/call_action_list,name=stealth_cds,if=!variable.stealth\n# Finishing Rules\nactions+=/call_action_list,name=finish,if=!buff.darkest_night.up&effective_combo_points>=6||buff.darkest_night.up&combo_points=cp_max_spend\n# Combo Point Builder\nactions+=/call_action_list,name=build\n# Filler, Spells used if you can use nothing else.\nactions+=/call_action_list,name=fill,if=!variable.stealth\n\n# Combo Point Builder\nactions.build+=/shadowstrike,cycle_targets=1,if=debuff.find_weakness.remains<=2&active_enemies=2&talent.unseen_blade||!used_for_danse&!talent.premeditation\nactions.build+=/shuriken_storm,if=talent.deathstalkers_mark&!buff.premeditation.up&active_enemies>=(2+3*buff.shadow_dance.up)||buff.clear_the_witnesses.up&!buff.symbols_of_death.up||buff.flawless_form.up&active_enemies>=3&!variable.stealth\nactions.build+=/shuriken_tornado,if=buff.lingering_darkness.up||talent.deathstalkers_mark&cooldown.shadow_blades.remains>=32&active_enemies>=2||talent.unseen_blade&buff.symbols_of_death.up&active_enemies>=4\nactions.build+=/shadowstrike\nactions.build+=/goremaws_bite,if=combo_points.deficit>=3\nactions.build+=/gloomblade\nactions.build+=/backstab\n\n# Cooldowns\nactions.cds+=/cold_blood,if=cooldown.secret_technique.up&buff.shadow_dance.up&combo_points>=6&variable.secret\nactions.cds+=/potion,if=buff.bloodlust.up||boss&fight_remains<30||buff.flagellation_buff.up\nactions.cds+=/symbols_of_death,if=(buff.symbols_of_death.remains<=3&variable.maintenance&(buff.flagellation_buff.up&cooldown.secret_technique.remains<8||!talent.flagellation||buff.flagellation_persist.up&talent.unseen_blade||cooldown.flagellation.remains>=30-15*!talent.death_perception&cooldown.secret_technique.remains<8||!talent.death_perception)||boss&fight_remains<=15)\nactions.cds+=/shadow_blades,if=variable.maintenance&variable.shd_cp&buff.shadow_dance.up&!buff.premeditation.up\nactions.cds+=/thistle_tea,if=buff.shadow_dance.remains>2&!buff.thistle_tea.up\nactions.cds+=/flagellation,if=combo_points>=5||boss&fight_remains<=25\n\n# This list usually contains Cooldowns with neglectable impact that causes global cooldowns\nactions.fill+=/arcane_torrent,if=energy.deficit>=15+energy.regen\nactions.fill+=/arcane_pulse\nactions.fill+=/lights_judgment\nactions.fill+=/bag_of_tricks\n\nactions.finish+=/secret_technique,if=variable.secret\n# Maintenance Finisher\nactions.finish+=/rupture,if=!variable.skip_rupture&(!dot.rupture.ticking||refreshable)&target.time_to_die-remains>6\nactions.finish+=/rupture,cycle_targets=1,if=!variable.skip_rupture&!variable.priority_rotation&target.time_to_die>=(2*combo_points)&refreshable&active_enemies>=2\n# Direct Damage Finisher\nactions.finish+=/black_powder,if=!variable.priority_rotation&variable.maintenance&active_enemies>=2&!buff.flawless_form.up&!buff.darkest_night.up\nactions.finish+=/coup_de_grace,if=debuff.fazed.up\nactions.finish+=/eviscerate\n\n# Shadow Dance, Vanish, Shadowmeld\nactions.stealth_cds+=/shadow_dance,if=variable.shd_cp&variable.maintenance&cooldown.secret_technique.remains<=24&(buff.symbols_of_death.remains>=6||buff.flagellation_persist.remains>=6)||boss&fight_remains<=10\nactions.stealth_cds+=/vanish,if=energy>=40&!buff.subterfuge.up&effective_combo_points<=3\nactions.stealth_cds+=/shadowmeld,if=energy>=40&combo_points.deficit>=3",
|
|
},
|
|
["Protection Paladin"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20271021,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-10-11, 10-21: Update from SimC\n\n2024-09-08: Restore mitigation action list\n\n2024-09-02, 09-04, 09-08: SimC update\n\n2024-08-11, 22: Update from SimC\n\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["standard"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.lights_guidance.enabled & ( cooldown.eye_of_tyr.remains < 2 || buff.hammer_of_light_ready.up ) & ( ! talent.redoubt.enabled || buff.redoubt.stack >= 2 || ! talent.bastion_of_light.enabled ) & ! buff.hammer_of_light_free.up",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "hammer_of_light",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hammer_of_light_free.remains < 2 || buff.shake_the_heavens.duration < 1 || ! buff.shake_the_heavens.up || cooldown.eye_of_tyr.remains < 1.5 || fight_remains < 2",
|
|
["action"] = "hammer_of_light",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.righteous_protector.enabled || cooldown.righteous_protector_icd.remains = 0 ) & ! buff.hammer_of_light_ready.up",
|
|
["action"] = "shield_of_the_righteous",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_armament = sacred_weapon & ( ! buff.sacred_weapon.up || ( buff.sacred_weapon.remains < 6 & ! buff.avenging_wrath.up & cooldown.avenging_wrath.remains <= 30 ) )",
|
|
["action"] = "holy_armaments",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "judgment",
|
|
["criteria"] = "spell_targets.shield_of_the_righteous > 3 & buff.bulwark_of_righteous_fury.stack >= 3 & holy_power < 3",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.bulwark_of_righteous_fury.up & talent.bulwark_of_righteous_fury.enabled & spell_targets.shield_of_the_righteous >= 3",
|
|
["action"] = "avengers_shield",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 3 & ! buff.avenging_wrath.up",
|
|
["action"] = "hammer_of_the_righteous",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 3 & ! buff.avenging_wrath.up",
|
|
["action"] = "blessed_hammer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 2 & ! buff.avenging_wrath.up",
|
|
["action"] = "crusader_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "judgment",
|
|
["criteria"] = "charges >= 2 || full_recharge_time <= gcd.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.divine_guidance.stack = 5",
|
|
["action"] = "consecration",
|
|
},
|
|
{
|
|
["action"] = "hammer_of_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_armament = holy_bulwark & charges = 2",
|
|
["action"] = "holy_armaments",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! raid_event.adds.exists || raid_event.adds.in > 10 )",
|
|
["action"] = "divine_toll",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "judgment",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 3",
|
|
["action"] = "hammer_of_the_righteous",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 3",
|
|
["action"] = "blessed_hammer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 2",
|
|
["action"] = "crusader_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.lights_guidance.enabled",
|
|
["action"] = "avengers_shield",
|
|
["description"] = "In single target, Templar should prioritize maintaining Shake the Heavens by casting spells listed in Higher Calling.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! consecration.up",
|
|
["action"] = "consecration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.inmost_light.enabled & raid_event.adds.in >= 45 || spell_targets.shield_of_the_righteous >= 3 ) & ! talent.lights_deliverance.enabled",
|
|
["action"] = "eye_of_tyr",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_armament = holy_bulwark",
|
|
["action"] = "holy_armaments",
|
|
},
|
|
{
|
|
["action"] = "blessed_hammer",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "hammer_of_the_righteous",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "crusader_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.shining_light_free.up & ( talent.blessed_assurance.enabled || ( talent.lights_guidance.enabled & cooldown.hammerfall_icd.remains = 0 ) )",
|
|
["action"] = "word_of_glory",
|
|
},
|
|
{
|
|
["action"] = "avengers_shield",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.lights_deliverance.enabled",
|
|
["action"] = "eye_of_tyr",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.shining_light_free.up",
|
|
["action"] = "word_of_glory",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "holy_power < 5",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["action"] = "consecration",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "rebuke",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "mitigation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "standard",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "devotion_aura",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "consecration",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["criteria"] = "trinket.t1.has_cooldown & trinket.t1.has_stat.any_dps & ( ! trinket.t2.has_stat.any_dps || trinket.t1.cooldown.duration >= trinket.t2.cooldown.duration ) || ! trinket.t2.has_cooldown",
|
|
["var_name"] = "trinket_sync_slot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["criteria"] = "trinket.t2.has_cooldown & trinket.t2.has_stat.any_dps & ( ! trinket.t1.has_stat.any_dps || trinket.t2.cooldown.duration > trinket.t1.cooldown.duration ) || ! trinket.t1.has_cooldown",
|
|
["var_name"] = "trinket_sync_slot",
|
|
},
|
|
},
|
|
["mitigation"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & buff.shield_of_the_righteous.down & ( holy_power.deficit = 0 || buff.divine_purpose.up )",
|
|
["action"] = "shield_of_the_righteous",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "health.pct < wog_health & ( holy_power.deficit = 0 || buff.divine_purpose.up || buff.shining_light_free.up )",
|
|
["action"] = "word_of_glory",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.final_stand.enabled & tanking & incoming_damage_5s > ds_damage & ! ( buff.ardent_defender.up || buff.guardian_of_ancient_kings.up || buff.divine_shield.up || buff.potion.up )",
|
|
["action"] = "divine_shield",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & incoming_damage_5s > goak_damage & ! ( buff.ardent_defender.up || buff.guardian_of_ancient_kings.up || buff.divine_shield.up || buff.potion.up )",
|
|
["action"] = "guardian_of_ancient_kings",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "defensive_sentinel & tanking & incoming_damage_5s > goak_damage & ! ( buff.ardent_defender.up || buff.guardian_of_ancient_kings.up || buff.divine_shield.up || buff.potion.up )",
|
|
["action"] = "avenging_wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & incoming_damage_5s > goak_damage & ! ( buff.ardent_defender.up || buff.guardian_of_ancient_kings.up || buff.divine_shield.up || buff.potion.up )",
|
|
["action"] = "ardent_defender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "health.pct < 15",
|
|
["action"] = "lay_on_hands",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["slots"] = "trinket1",
|
|
["action"] = "trinket1",
|
|
["criteria"] = "( variable.trinket_sync_slot = 1 & ( buff.avenging_wrath.up || fight_remains <= 40 ) || ( variable.trinket_sync_slot = 2 & ( ! trinket.t2.cooldown.ready || ! buff.avenging_wrath.up ) ) || ! variable.trinket_sync_slot )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["slots"] = "trinket2",
|
|
["action"] = "trinket2",
|
|
["criteria"] = "( variable.trinket_sync_slot = 2 & ( buff.avenging_wrath.up || fight_remains <= 40 ) || ( variable.trinket_sync_slot = 1 & ( ! trinket.t1.cooldown.ready || ! buff.avenging_wrath.up ) ) || ! variable.trinket_sync_slot )",
|
|
},
|
|
},
|
|
["hammer_of_light"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.blessing_of_dawn.stack > 0 || ! talent.of_dusk_and_dawn.enabled ) || spell_targets.shield_of_the_righteous >= 5",
|
|
["action"] = "hammer_of_light",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hpg_to_2dawn = 5 || ! talent.of_dusk_and_dawn.enabled",
|
|
["action"] = "eye_of_tyr",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hpg_to_2dawn = 4",
|
|
["action"] = "shield_of_the_righteous",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hpg_to_2dawn = 1 || buff.blessing_of_dawn.stack > 0",
|
|
["action"] = "eye_of_tyr",
|
|
},
|
|
{
|
|
["action"] = "hammer_of_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blessed_hammer",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "hammer_of_the_righteous",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "crusader_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "divine_toll",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.lights_judgment >= 2 || ! raid_event.adds.exists || raid_event.adds.in > 75 || raid_event.adds.up",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["action"] = "avenging_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avenging_wrath.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.avenging_wrath.remains < 15 || ( time > 10 ) )",
|
|
["action"] = "moment_of_glory",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.shield_of_the_righteous >= 3",
|
|
["action"] = "divine_toll",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avenging_wrath.up || cooldown.avenging_wrath.remains <= 30",
|
|
["action"] = "bastion_of_light",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avenging_wrath.remains > 8",
|
|
["action"] = "fireblood",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20271021,
|
|
["warnings"] = "The import for 'precombat' required some automated changes.\nLine 5: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 5: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 5: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 6: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 6: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 6: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 1: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 1: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 2: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 2: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\n\nImported 7 action lists.\n",
|
|
["profile"] = "## actions.precombat+=/rite_of_sanctification\n## actions.precombat+=/rite_of_adjuration\nactions.precombat+=/devotion_aura\nactions.precombat+=/lights_judgment\nactions.precombat+=/arcane_torrent\nactions.precombat+=/consecration\nactions.precombat+=/variable,name=trinket_sync_slot,value=1,if=trinket.1.has_cooldown&trinket.1.has_stat.any_dps&(!trinket.2.has_stat.any_dps||trinket.1.cooldown.duration>=trinket.2.cooldown.duration)||!trinket.2.has_cooldown\nactions.precombat+=/variable,name=trinket_sync_slot,value=2,if=trinket.2.has_cooldown&trinket.2.has_stat.any_dps&(!trinket.1.has_stat.any_dps||trinket.2.cooldown.duration>trinket.1.cooldown.duration)||!trinket.1.has_cooldown\n\nactions+=/rebuke\nactions+=/call_action_list,name=cooldowns\nactions+=/call_action_list,name=mitigation\nactions+=/call_action_list,name=trinkets\nactions+=/call_action_list,name=standard\n\nactions.cooldowns+=/lights_judgment,if=spell_targets.lights_judgment>=2||!raid_event.adds.exists||raid_event.adds.in>75||raid_event.adds.up\nactions.cooldowns+=/avenging_wrath\nactions.cooldowns+=/potion,if=buff.avenging_wrath.up\nactions.cooldowns+=/moment_of_glory,if=(buff.avenging_wrath.remains<15||(time>10))\nactions.cooldowns+=/divine_toll,if=spell_targets.shield_of_the_righteous>=3\nactions.cooldowns+=/bastion_of_light,if=buff.avenging_wrath.up||cooldown.avenging_wrath.remains<=30\n## actions.cooldowns+=/invoke_external_buff,name=power_infusion,if=buff.avenging_wrath.up\nactions.cooldowns+=/fireblood,if=buff.avenging_wrath.remains>8\n\nactions.mitigation+=/shield_of_the_righteous,if=tanking&buff.shield_of_the_righteous.down&(holy_power.deficit=0||buff.divine_purpose.up)\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+=/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+=/guardian_of_ancient_kings,if=tanking&incoming_damage_5s>goak_damage&!(buff.ardent_defender.up||buff.guardian_of_ancient_kings.up||buff.divine_shield.up||buff.potion.up)\nactions.mitigation+=/sentinel,if=defensive_sentinel&tanking&incoming_damage_5s>goak_damage&!(buff.ardent_defender.up||buff.guardian_of_ancient_kings.up||buff.divine_shield.up||buff.potion.up)\nactions.mitigation+=/ardent_defender,if=tanking&incoming_damage_5s>goak_damage&!(buff.ardent_defender.up||buff.guardian_of_ancient_kings.up||buff.divine_shield.up||buff.potion.up)\nactions.mitigation+=/lay_on_hands,if=health.pct<15\n\nactions.standard+=/call_action_list,name=hammer_of_light,if=talent.lights_guidance.enabled&(cooldown.eye_of_tyr.remains<2||buff.hammer_of_light_ready.up)&(!talent.redoubt.enabled||buff.redoubt.stack>=2||!talent.bastion_of_light.enabled)&!buff.hammer_of_light_free.up\nactions.standard+=/hammer_of_light,if=buff.hammer_of_light_free.remains<2||buff.shake_the_heavens.duration<1||!buff.shake_the_heavens.up||cooldown.eye_of_tyr.remains<1.5||fight_remains<2\nactions.standard+=/shield_of_the_righteous,if=(!talent.righteous_protector.enabled||cooldown.righteous_protector_icd.remains=0)&!buff.hammer_of_light_ready.up\nactions.standard+=/holy_armaments,if=next_armament=sacred_weapon&(!buff.sacred_weapon.up||(buff.sacred_weapon.remains<6&!buff.avenging_wrath.up&cooldown.avenging_wrath.remains<=30))\nactions.standard+=/judgment,cycle_targets=1,if=spell_targets.shield_of_the_righteous>3&buff.bulwark_of_righteous_fury.stack>=3&holy_power<3\nactions.standard+=/avengers_shield,if=!buff.bulwark_of_righteous_fury.up&talent.bulwark_of_righteous_fury.enabled&spell_targets.shield_of_the_righteous>=3\nactions.standard+=/hammer_of_the_righteous,if=buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<3&!buff.avenging_wrath.up\nactions.standard+=/blessed_hammer,if=buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<3&!buff.avenging_wrath.up\nactions.standard+=/crusader_strike,if=buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<2&!buff.avenging_wrath.up\nactions.standard+=/judgment,cycle_targets=1,if=charges>=2||full_recharge_time<=gcd.max\nactions.standard+=/consecration,if=buff.divine_guidance.stack=5\nactions.standard+=/hammer_of_wrath\nactions.standard+=/holy_armaments,if=next_armament=holy_bulwark&charges=2\nactions.standard+=/divine_toll,if=(!raid_event.adds.exists||raid_event.adds.in>10)\nactions.standard+=/judgment,cycle_targets=1\nactions.standard+=/hammer_of_the_righteous,if=buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<3\nactions.standard+=/blessed_hammer,if=buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<3\nactions.standard+=/crusader_strike,if=buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<2\n# In single target, Templar should prioritize maintaining Shake the Heavens by casting spells listed in Higher Calling.\nactions.standard+=/avengers_shield,if=!talent.lights_guidance.enabled\nactions.standard+=/consecration,if=!consecration.up\nactions.standard+=/eye_of_tyr,if=(talent.inmost_light.enabled&raid_event.adds.in>=45||spell_targets.shield_of_the_righteous>=3)&!talent.lights_deliverance.enabled\nactions.standard+=/holy_armaments,if=next_armament=holy_bulwark\nactions.standard+=/blessed_hammer\nactions.standard+=/hammer_of_the_righteous\nactions.standard+=/crusader_strike\nactions.standard+=/word_of_glory,if=buff.shining_light_free.up&(talent.blessed_assurance.enabled||(talent.lights_guidance.enabled&cooldown.hammerfall_icd.remains=0))\nactions.standard+=/avengers_shield\nactions.standard+=/eye_of_tyr,if=!talent.lights_deliverance.enabled\nactions.standard+=/word_of_glory,if=buff.shining_light_free.up\nactions.standard+=/arcane_torrent,if=holy_power<5\nactions.standard+=/consecration\n\nactions.hammer_of_light+=/hammer_of_light,if=(buff.blessing_of_dawn.stack>0||!talent.of_dusk_and_dawn.enabled)||spell_targets.shield_of_the_righteous>=5\nactions.hammer_of_light+=/eye_of_tyr,if=hpg_to_2dawn=5||!talent.of_dusk_and_dawn.enabled\nactions.hammer_of_light+=/shield_of_the_righteous,if=hpg_to_2dawn=4\nactions.hammer_of_light+=/eye_of_tyr,if=hpg_to_2dawn=1||buff.blessing_of_dawn.stack>0\nactions.hammer_of_light+=/hammer_of_wrath\nactions.hammer_of_light+=/judgment\nactions.hammer_of_light+=/blessed_hammer\nactions.hammer_of_light+=/hammer_of_the_righteous\nactions.hammer_of_light+=/crusader_strike\nactions.hammer_of_light+=/divine_toll\n\nactions.trinkets+=/use_items,slots=trinket1,if=(variable.trinket_sync_slot=1&(buff.avenging_wrath.up||fight_remains<=40)||(variable.trinket_sync_slot=2&(!trinket.2.cooldown.ready||!buff.avenging_wrath.up))||!variable.trinket_sync_slot)\nactions.trinkets+=/use_items,slots=trinket2,if=(variable.trinket_sync_slot=2&(buff.avenging_wrath.up||fight_remains<=40)||(variable.trinket_sync_slot=1&(!trinket.1.cooldown.ready||!buff.avenging_wrath.up))||!variable.trinket_sync_slot)",
|
|
["spec"] = 66,
|
|
},
|
|
["Feral"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20241022,
|
|
["spec"] = 103,
|
|
["desc"] = "2024-10-22: 11.0.5\n\n2024-09-21: SimC update\n\n2024-09-10: Fix Ferocious Bite max_energy\n\n2024-09-04, 09-08: SimC update\n\n2024-09-03: Tweak targeting\n\n2024-08-24: SimC priority update\n\n2024-08-15: Adjust Ferocious Bite for Wildstalker\n\n2024-08-11: Mark of the Wild, priority update\n\n2024-08-08: Interrupt and Soothe\n\n2024-07-24: The War Within",
|
|
["profile"] = "actions.precombat+=/mark_of_the_wild\nactions.precombat+=/prowl,if=!buff.prowl.up\nactions.precombat+=/cat_form,if=!buff.cat_form.up\n# check if trinket slot contains a stat on use (variable is just kept in case of things like mirror not working with has_use_buff)\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff&!trinket.1.is.imperfect_ascendancy_serum&!trinket.1.is.ovinaxs_mercurial_egg&!trinket.1.is.concoction_kiss_of_death\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff&!trinket.2.is.imperfect_ascendancy_serum&!trinket.2.is.ovinaxs_mercurial_egg&!trinket.2.is.concoction_kiss_of_death\n# if we are playing 2 minute convoke, we prefer 2 minute on-use over 3 minute on-use even without berserk: heart of the lion\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=talent.convoke_the_spirits&!talent.ashamanes_guidance&variable.trinket_1_buffs&(trinket.1.cooldown.duration%%120=0||120%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=talent.convoke_the_spirits&!talent.ashamanes_guidance&variable.trinket_2_buffs&(trinket.1.cooldown.duration%%120=0||120%%trinket.1.cooldown.duration=0)\n# if we aren't playing 2 minute convoke, then we can sync 3 minute cds with berserk sans hotl\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=!(talent.convoke_the_spirits&!talent.ashamanes_guidance)&variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%%trinket.1.cooldown.duration=0||trinket.1.cooldown.duration%%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=!(talent.convoke_the_spirits&!talent.ashamanes_guidance)&variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%%trinket.2.cooldown.duration=0||trinket.2.cooldown.duration%%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%%trinket.2.cooldown.duration=0)\n# prioritize trinkets that line-up with cds->main-stat on uses->longer cd trinkets->shorter duration trinkets\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.agility)*(1.2+trinket.2.has_buff.mastery)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.agility)*(1.2+trinket.1.has_buff.mastery)*(variable.trinket_1_sync))\n\nactions+=/prowl,if=buff.bs_inc.down&!buff.prowl.up\nactions+=/cat_form,if=!buff.cat_form.up&!talent.fluid_form\nactions+=/skull_bash\nactions+=/soothe\n## Line up <a href='https://www.wowhead.com/spell=10060/power-infusion'>Power Infusion</a> with Berserk.\n## actions+=/invoke_external_buff,name=power_infusion,if=buff.bs_inc.up||!talent.berserk_heart_of_the_lion\nactions+=/call_action_list,name=variable\n## actions+=/stop_moving,if=gcd.remains=0&equipped.ovinaxs_mercurial_egg\nactions+=/tigers_fury,if=(energy.deficit>35||combo_points=5||combo_points>=3&dot.rip.refreshable&buff.bloodtalons.up)&(boss&fight_remains<=15||(cooldown.bs_inc.remains>20&fight_remains>5)||(cooldown.bs_inc.ready&fight_remains>12||boss))\nactions+=/rake,cycle_targets=1,if=buff.shadowmeld.up||buff.prowl.up\nactions+=/natures_vigil,if=variable.regrowth&health.percent<70&(buff.bs_inc.up||buff.tigers_fury.up)\nactions+=/renewal,if=variable.regrowth&health.percent<70\nactions+=/adaptive_swarm,cycle_targets=1,if=dot.adaptive_swarm_damage.stack<3&(!dot.adaptive_swarm_damage.ticking||dot.adaptive_swarm_damage.remains<2)&!action.adaptive_swarm.in_flight&(spell_targets=1||!talent.unbridled_swarm)&(dot.rip.ticking||hero_tree.druid_of_the_claw)\nactions+=/adaptive_swarm,cycle_targets=1,if=buff.cat_form.up&dot.adaptive_swarm_damage.stack<3&talent.unbridled_swarm.enabled&spell_targets.swipe_cat>1&dot.rip.ticking\nactions+=/ferocious_bite,if=buff.apex_predators_craving.up&!(variable.need_bt&active_bt_triggers=2)\nactions+=/call_action_list,name=cooldown,strict=1,if=dot.rip.ticking\n# with wildstalker and not both raging fury + veinripper, low cp rips for snapshot reasons is worth\nactions+=/rip,if=spell_targets=1&hero_tree.wildstalker&!(talent.raging_fury&talent.veinripper)&(buff.bloodtalons.up||!talent.bloodtalons)&(dot.rip.remains<5&buff.tigers_fury.remains>10&combo_points>=3||((buff.tigers_fury.remains<3&combo_points=5)||buff.tigers_fury.remains<=1)&buff.tigers_fury.up&combo_points>=3&remains<cooldown.tigers_fury.remains)\nactions+=/call_action_list,name=finisher,if=combo_points=5\nactions+=/call_action_list,name=builder,if=spell_targets.swipe_cat=1&combo_points<5&(variable.time_to_pool<=0||!variable.need_bt||variable.proccing_bt)\nactions+=/call_action_list,name=aoe_builder,if=spell_targets.swipe_cat>=2&combo_points<5&(variable.time_to_pool<=0||!variable.need_bt||variable.proccing_bt)\nactions+=/regrowth,if=buff.predatory_swiftness.up&variable.regrowth&selection_time>gcd.max\n\nactions.aoe_builder+=/variable,name=proccing_bt,op=set,value=variable.need_bt\n# maintain thrash highest prio\nactions.aoe_builder+=/thrash_cat,if=refreshable&!talent.thrashing_claws&!(variable.need_bt&buff.bt_thrash.up)\n# avoid capping brs charges. Also send brutal slashes/ws swipe in aoe, even if we need to proc bloodtalons, during berserk.\nactions.aoe_builder+=/brutal_slash,cycle_targets=1,if=(cooldown.brutal_slash.full_recharge_time<4||time_to_die<4||raid_event.adds.remains<4||(buff.bs_inc.up&spell_targets>=3-hero_tree.druid_of_the_claw))&!(variable.need_bt&buff.bt_swipe.up&(buff.bs_inc.down||spell_targets<3-hero_tree.druid_of_the_claw))\nactions.aoe_builder+=/swipe_cat,if=talent.wild_slashes&(time_to_die<4||raid_event.adds.remains<4||buff.bs_inc.up&spell_targets>=3-hero_tree.druid_of_the_claw)&!(variable.need_bt&buff.bt_swipe.up&(buff.bs_inc.down||spell_targets<3-hero_tree.druid_of_the_claw))\n# with wild slashes we swipe at 5+ targets over raking/moonfire\nactions.aoe_builder+=/swipe_cat,if=time_to_die<4||(talent.wild_slashes&spell_targets.swipe_cat>4&!(variable.need_bt&buff.bt_swipe.up))\nactions.aoe_builder+=/prowl,if=dot.rake.refreshable||dot.rake.pmultiplier<1.4&!(variable.need_bt&buff.bt_rake.up)&action.rake.ready&gcd.remains=0&!buff.sudden_ambush.up&!variable.cc_capped\nactions.aoe_builder+=/shadowmeld,if=dot.rake.refreshable||dot.rake.pmultiplier<1.4&!(variable.need_bt&buff.bt_rake.up)&action.rake.ready&!buff.sudden_ambush.up&!buff.prowl.up&!variable.cc_capped\n# dcr rake > moonfire\nactions.aoe_builder+=/rake,cycle_targets=1,if=refreshable&talent.doubleclawed_rake&!(variable.need_bt&buff.bt_rake.up)&!variable.cc_capped\n# at 3t with wild slashes, swipe is better than moonfiring/st rake\nactions.aoe_builder+=/swipe_cat,if=talent.wild_slashes&spell_targets.swipe_cat>2&!(variable.need_bt&buff.bt_swipe.up)\n# li moonfire is better than non-dcr rake in aoe\nactions.aoe_builder+=/moonfire_cat,cycle_targets=1,if=refreshable&!(variable.need_bt&buff.bt_moonfire.up)&!variable.cc_capped\nactions.aoe_builder+=/rake,cycle_targets=1,if=refreshable&!(variable.need_bt&buff.bt_rake.up)&!variable.cc_capped\n# fillers\nactions.aoe_builder+=/brutal_slash,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.aoe_builder+=/swipe_cat,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.aoe_builder+=/shred,if=!buff.sudden_ambush.up&!variable.easy_swipe&!(variable.need_bt&buff.bt_shred.up)\nactions.aoe_builder+=/thrash_cat,if=!talent.thrashing_claws&!(variable.need_bt&buff.bt_thrash.up)\n# fallback bt actions\nactions.aoe_builder+=/rake,cycle_targets=1,if=talent.doubleclawed_rake&buff.sudden_ambush.up&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/moonfire_cat,cycle_targets=1,if=variable.need_bt&buff.bt_moonfire.down\nactions.aoe_builder+=/rake,cycle_targets=1,if=buff.sudden_ambush.up&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/shred,if=variable.need_bt&buff.bt_shred.down&!variable.easy_swipe\nactions.aoe_builder+=/rake,cycle_targets=1,if=dot.rake.pmultiplier<1.6&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/thrash_cat,if=variable.need_bt&buff.bt_shred.down\n\nactions.builder+=/prowl,if=gcd.remains=0&energy>=35&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)*!(variable.need_bt&buff.bt_rake.up)&buff.tigers_fury.up&!buff.shadowmeld.up\nactions.builder+=/shadowmeld,if=gcd.remains=0&energy>=35&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)*!(variable.need_bt&buff.bt_rake.up)&buff.tigers_fury.up&!buff.prowl.up\n# upgrade to stealth rakes, otherwise refresh in pandemic. Delay rake as long as possible if it would downgrade\nactions.builder+=/rake,if=((refreshable&persistent_multiplier>=dot.rake.pmultiplier||dot.rake.remains<3.5)||buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier)&!(variable.need_bt&buff.bt_rake.up)\nactions.builder+=/brutal_slash,if=cooldown.brutal_slash.full_recharge_time<4&!(variable.need_bt&buff.bt_swipe.up)\nactions.builder+=/moonfire_cat,if=refreshable\nactions.builder+=/thrash_cat,if=refreshable&!talent.thrashing_claws\nactions.builder+=/shred,if=buff.clearcasting.up&!(variable.need_bt&buff.bt_shred.up)\n# pool energy if we need to refresh dot in the next 1.5s [Hekili] TODO: Sim character to see how frequently this fires, determine if `wait` value should be adjusted.\nactions.builder+=/pool_resource,wait=0.2,if=variable.dot_refresh_soon&energy.deficit>70&!variable.need_bt&!buff.bs_inc.up&cooldown.tigers_fury.remains>3\nactions.builder+=/brutal_slash,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.builder+=/shred,if=!(variable.need_bt&buff.bt_shred.up)\nactions.builder+=/swipe_cat,if=variable.need_bt&buff.bt_swipe.down\n# clip rake for bt if it wont downgrade its snapshot\nactions.builder+=/rake,if=variable.need_bt&buff.bt_rake.down&persistent_multiplier>=dot.rake.pmultiplier\nactions.builder+=/moonfire_cat,if=variable.need_bt&buff.bt_moonfire.down\nactions.builder+=/thrash_cat,if=variable.need_bt&buff.bt_thrash.down\n\nactions.cooldown+=/incarnation,if=fight_remains>17||boss\n# non-stat on use trinkets get used on cooldown, so long as it wont interfere with a stat on-use trinket\nactions.cooldown+=/use_item,slot=trinket1,if=trinket.1.has_use_damage&(trinket.2.cooldown.remains>20||!variable.trinket_2_buffs)\nactions.cooldown+=/use_item,slot=trinket2,if=trinket.2.has_use_damage&(trinket.1.cooldown.remains>20||!variable.trinket_1_buffs)\n# berserk with tigers fury\nactions.cooldown+=/berserk,if=buff.tigers_fury.up&(fight_remains>12||boss)\nactions.cooldown+=/berserking,if=buff.bs_inc.up\n# todo make last set of cds line up again now that we know potions.remains is the syntax\nactions.cooldown+=/potion,if=buff.bs_inc.up||boss&fight_remains<32||(!variable.lastzerk&variable.lastconvoke&cooldown.convoke_the_spirits.remains<10)\n# non trinket gear-on-uses have variable rules on whether or not they trigger the trinket shared CD. For the cases they do we will need specific APL entries. For now just use on cooldown.\nactions.cooldown+=/use_items\n# stat on-use trinkets, prefers trinket with higher priority.\nactions.cooldown+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&(buff.bs_inc.up||((buff.tigers_fury.up&cooldown.tigers_fury.remains>25)&(cooldown.convoke_the_spirits.remains<6||(variable.trinket_2_buffs&cooldown.convoke_the_spirits.remains-trinket.2.cooldown.remains>0)||!talent.convoke_the_spirits&cooldown.bs_inc.remains-trinket.2.cooldown.remains>0)))&(!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains&boss\nactions.cooldown+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&(buff.bs_inc.up||((buff.tigers_fury.up&cooldown.tigers_fury.remains>25)&(cooldown.convoke_the_spirits.remains<6||(variable.trinket_1_buffs&cooldown.convoke_the_spirits.remains-trinket.1.cooldown.remains>0)||!talent.convoke_the_spirits&cooldown.bs_inc.remains-trinket.1.cooldown.remains>0)))&(!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains&boss\n## actions.cooldown+=/do_treacherous_transmitter_task,if=buff.tigers_fury.up||fight_remains<22\nactions.cooldown+=/feral_frenzy,if=combo_points<=1||buff.bs_inc.up&combo_points<=2\n# always line up convoke with berserk if you can\nactions.cooldown+=/convoke_the_spirits,if=boss&fight_remains<5||(cooldown.bs_inc.remains>45||buff.bs_inc.up||!talent.berserk_heart_of_the_lion)&(buff.tigers_fury.up&(combo_points<=4||buff.bs_inc.up&combo_points<=3)&(target.time_to_die>5-talent.ashamanes_guidance.enabled||boss))\n\n# maintain/upgrade pws, if we have 6.5+s left on pw, we will instead bite if we have rampant ferocity talented. Without rampant, we will bite a vined target with 6 or fewer targets. If we have Ravage, we use specifically Ravage at 7 or fewer targets.\nactions.finisher+=/primal_wrath,if=spell_targets.primal_wrath>1&((dot.primal_wrath.remains<6.5&!buff.bs_inc.up||dot.primal_wrath.refreshable)||(!talent.rampant_ferocity.enabled&(spell_targets.primal_wrath>1&!dot.bloodseeker_vines.ticking&!buff.ravage.up||spell_targets.primal_wrath>6+talent.ravage)))\n# rip if single target or pw isnt up. Rip with bloodtalons if talented. If tigers fury will be up before rip falls off, then delay refresh\nactions.finisher+=/rip,cycle_targets=1,if=refreshable&(!talent.primal_wrath||spell_targets=1)&(buff.bloodtalons.up||!talent.bloodtalons)&(buff.tigers_fury.up||dot.rip.remains<cooldown.tigers_fury.remains)&(remains<fight_remains||remains<4&buff.ravage.up)\nactions.finisher+=/pool_resource,for_next=1\nactions.finisher+=/ferocious_bite,max_energy=1,cycle_targets=1,if=!buff.bs_inc.up\nactions.finisher+=/ferocious_bite,cycle_targets=1,if=buff.bs_inc.up\n\n# most expensive bt cycle is Shred + Thrash + Rake, 40+40+35 for 115 energy. During incarn it is 32+32+28 for 92energy\nactions.variable+=/variable,name=effective_energy,op=set,value=energy+(40*buff.clearcasting.stack)+(3*energy.regen)+(50*(cooldown.tigers_fury.remains<3.5))\n# estimated time until we have enough energy to proc bloodtalons.\nactions.variable+=/variable,name=time_to_pool,op=set,value=((115-variable.effective_energy-(23*buff.incarnation.up))%energy.regen)\n# this returns true if we have a dot nearing pandemic range\nactions.variable+=/variable,name=dot_refresh_soon,value=(!talent.thrashing_claws&(dot.thrash_cat.remains-dot.thrash_cat.duration*0.3<=2))||(talent.lunar_inspiration&(dot.moonfire_cat.remains-dot.moonfire_cat.duration*0.3<=2))||((dot.rake.pmultiplier<1.6||buff.sudden_ambush.up)&(dot.rake.remains-dot.rake.duration*0.3<=2))\n# try to proc bt if we have 1 or 0 sacks of bloodtalons\nactions.variable+=/variable,name=need_bt,value=talent.bloodtalons&buff.bloodtalons.stack<=1\n# capped on clearcasting stacks\nactions.variable+=/variable,name=cc_capped,value=buff.clearcasting.stack=(1+talent.moment_of_clarity)\n# checks if theres exactly 1 convoke remaining in sim\nactions.variable+=/variable,name=lastconvoke,value=(cooldown.convoke_the_spirits.remains+cooldown.convoke_the_spirits.duration)>fight_remains&cooldown.convoke_the_spirits.remains<fight_remains\n# checks if theres exactly 1 berserk cast remaining in sim : at least 5s spare for now, TODO: check #s\nactions.variable+=/variable,name=lastzerk,value=(cooldown.bs_inc.remains+cooldown.bs_inc.duration+5)>fight_remains&cooldown.convoke_the_spirits.remains<fight_remains\n# approximates if theres exactly 1 potion cast remaining with duration to spare\nactions.variable+=/variable,name=lastpotion,value=(cooldown.potions.remains+cooldown.potions.duration+15)>fight_remains&cooldown.potions.remains+15<fight_remains\n# optional variable that sends regrowth and renewal casts. Turned off by default\nactions.variable+=/variable,name=regrowth,op=reset,value=settings.regrowth\n# optional variable that forgoes shredding in AoE. Turned off by default\nactions.variable+=/variable,name=easy_swipe,op=reset\nactions.variable+=/variable,name=proccing_bt,op=set,value=variable.need_bt\n# track moonfire snapshot\nactions.variable+=/variable,name=moonfire_snapshotted,value=buff.tigers_fury.up,op=set,if=prev.lunar_inspiration",
|
|
["version"] = 20241022,
|
|
["warnings"] = "The import for 'aoe_builder' required some automated changes.\nLine 2: Converted 'talent.thrashing_claws' to 'talent.thrashing_claws.enabled' (1x).\nLine 4: Converted 'talent.wild_slashes' to 'talent.wild_slashes.enabled' (1x).\nLine 5: Converted 'talent.wild_slashes' to 'talent.wild_slashes.enabled' (1x).\nLine 8: Converted 'talent.doubleclawed_rake' to 'talent.doubleclawed_rake.enabled' (1x).\nLine 9: Converted 'talent.wild_slashes' to 'talent.wild_slashes.enabled' (1x).\nLine 15: Converted 'talent.thrashing_claws' to 'talent.thrashing_claws.enabled' (1x).\nLine 16: Converted 'talent.doubleclawed_rake' to 'talent.doubleclawed_rake.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 2: Converted 'talent.fluid_form' to 'talent.fluid_form.enabled' (1x).\nLine 10: Converted 'talent.unbridled_swarm' to 'talent.unbridled_swarm.enabled' (1x).\nLine 14: Converted 'talent.raging_fury' to 'talent.raging_fury.enabled' (1x).\nLine 14: Converted 'talent.veinripper' to 'talent.veinripper.enabled' (1x).\nLine 14: Converted 'talent.bloodtalons' to 'talent.bloodtalons.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.is.imperfect_ascendancy_serum' to 'trinket.t1.is.imperfect_ascendancy_serum' (1x).\nLine 4: Converted 'trinket.1.is.ovinaxs_mercurial_egg' to 'trinket.t1.is.ovinaxs_mercurial_egg' (1x).\nLine 4: Converted 'trinket.1.is.concoction_kiss_of_death' to 'trinket.t1.is.concoction_kiss_of_death' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.is.imperfect_ascendancy_serum' to 'trinket.t2.is.imperfect_ascendancy_serum' (1x).\nLine 5: Converted 'trinket.2.is.ovinaxs_mercurial_egg' to 'trinket.t2.is.ovinaxs_mercurial_egg' (1x).\nLine 5: Converted 'trinket.2.is.concoction_kiss_of_death' to 'trinket.t2.is.concoction_kiss_of_death' (1x).\nLine 6: Converted 'talent.convoke_the_spirits' to 'talent.convoke_the_spirits.enabled' (1x).\nLine 6: Converted 'talent.ashamanes_guidance' to 'talent.ashamanes_guidance.enabled' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted operations in 'talent.convoke_the_spirits.enabled&!talent.ashamanes_guidance.enabled&variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%120=0||120%%trinket.t1.cooldown.duration=0)' to 'talent.convoke_the_spirits.enabled&!talent.ashamanes_guidance.enabled&variable.trinket_1_buffs&(trinket.t1.cooldown.duration%120=0||120%trinket.t1.cooldown.duration=0)'.\nLine 7: Converted 'talent.convoke_the_spirits' to 'talent.convoke_the_spirits.enabled' (1x).\nLine 7: Converted 'talent.ashamanes_guidance' to 'talent.ashamanes_guidance.enabled' (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 operations in 'talent.convoke_the_spirits.enabled&!talent.ashamanes_guidance.enabled&variable.trinket_2_buffs&(trinket.t1.cooldown.duration%%120=0||120%%trinket.t1.cooldown.duration=0)' to 'talent.convoke_the_spirits.enabled&!talent.ashamanes_guidance.enabled&variable.trinket_2_buffs&(trinket.t1.cooldown.duration%120=0||120%trinket.t1.cooldown.duration=0)'.\nLine 8: Converted 'talent.convoke_the_spirits' to 'talent.convoke_the_spirits.enabled' (1x).\nLine 8: Converted 'talent.ashamanes_guidance' to 'talent.ashamanes_guidance.enabled' (1x).\nLine 8: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 8: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 8: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 8: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 8: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 8: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 8: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 8: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 8: Converted operations in '!(talent.convoke_the_spirits.enabled&!talent.ashamanes_guidance.enabled)&variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%%trinket.t1.cooldown.duration=0||trinket.t1.cooldown.duration%%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%%trinket.t1.cooldown.duration=0)' to '!(talent.convoke_the_spirits.enabled&!talent.ashamanes_guidance.enabled)&variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%trinket.t1.cooldown.duration=0||trinket.t1.cooldown.duration%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%trinket.t1.cooldown.duration=0)'.\nLine 9: Converted 'talent.convoke_the_spirits' to 'talent.convoke_the_spirits.enabled' (1x).\nLine 9: Converted 'talent.ashamanes_guidance' to 'talent.ashamanes_guidance.enabled' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 9: Converted operations in '!(talent.convoke_the_spirits.enabled&!talent.ashamanes_guidance.enabled)&variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%%trinket.t2.cooldown.duration=0||trinket.t2.cooldown.duration%%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%%trinket.t2.cooldown.duration=0)' to '!(talent.convoke_the_spirits.enabled&!talent.ashamanes_guidance.enabled)&variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%trinket.t2.cooldown.duration=0||trinket.t2.cooldown.duration%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%trinket.t2.cooldown.duration=0)'.\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.agility' to 'trinket.t2.has_buff.agility' (1x).\nLine 10: Converted 'trinket.2.has_buff.agility' to 'trinket.t2.has_use_buff' (1x).\nLine 10: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 10: Converted 'trinket.2.has_buff.mastery' 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.agility' to 'trinket.t1.has_buff.agility' (1x).\nLine 10: Converted 'trinket.1.has_buff.agility' to 'trinket.t1.has_use_buff' (1x).\nLine 10: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 10: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 10: Converted 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)*(1.2+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(1.2+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)*(1.2+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(1.2+trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\n\nThe import for 'builder' required some automated changes.\nLine 6: Converted 'talent.thrashing_claws' to 'talent.thrashing_claws.enabled' (1x).\n\nThe import for 'variable' required some automated changes.\nLine 2: Converted operations in '((115-variable.effective_energy-(23*buff.incarnation.up))%energy.regen)' to '((115-variable.effective_energy-(23*buff.incarnation.up))/energy.regen)'.\nLine 3: Converted 'talent.thrashing_claws' to 'talent.thrashing_claws.enabled' (1x).\nLine 3: Converted 'talent.lunar_inspiration' to 'talent.lunar_inspiration.enabled' (1x).\nLine 4: Converted 'talent.bloodtalons' to 'talent.bloodtalons.enabled' (1x).\nLine 5: Converted 'talent.moment_of_clarity' to 'talent.moment_of_clarity.enabled' (1x).\n\nThe import for 'cooldown' required some automated changes.\nLine 2: Converted 'trinket.1.has_use_damage' to 'trinket.t1.has_use_damage' (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 3: Converted 'trinket.2.has_use_damage' to 'trinket.t2.has_use_damage' (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 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 'talent.convoke_the_spirits' to 'talent.convoke_the_spirits.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 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 8: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 8: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (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 'talent.convoke_the_spirits' to 'talent.convoke_the_spirits.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).\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 9: Converted 'trinket.2.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 11: Converted 'talent.berserk_heart_of_the_lion' to 'talent.berserk_heart_of_the_lion.enabled' (1x).\n\nThe import for 'finisher' required some automated changes.\nLine 1: Converted 'talent.ravage' to 'talent.ravage.enabled' (1x).\nLine 2: Converted 'talent.primal_wrath' to 'talent.primal_wrath.enabled' (1x).\nLine 2: Converted 'talent.bloodtalons' to 'talent.bloodtalons.enabled' (1x).\n\nImported 7 action lists.\n",
|
|
["lists"] = {
|
|
["aoe_builder"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.need_bt",
|
|
["var_name"] = "proccing_bt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "maintain thrash highest prio",
|
|
["criteria"] = "refreshable & ! talent.thrashing_claws.enabled & ! ( variable.need_bt & buff.bt_thrash.up )",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "brutal_slash",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "( cooldown.brutal_slash.full_recharge_time < 4 || time_to_die < 4 || raid_event.adds.remains < 4 || ( buff.bs_inc.up & spell_targets >= 3 - hero_tree.druid_of_the_claw ) ) & ! ( variable.need_bt & buff.bt_swipe.up & ( buff.bs_inc.down || spell_targets < 3 - hero_tree.druid_of_the_claw ) )",
|
|
["description"] = "avoid capping brs charges. Also send brutal slashes/ws swipe in aoe, even if we need to proc bloodtalons, during berserk.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.wild_slashes.enabled & ( time_to_die < 4 || raid_event.adds.remains < 4 || buff.bs_inc.up & spell_targets >= 3 - hero_tree.druid_of_the_claw ) & ! ( variable.need_bt & buff.bt_swipe.up & ( buff.bs_inc.down || spell_targets < 3 - hero_tree.druid_of_the_claw ) )",
|
|
["action"] = "swipe_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "with wild slashes we swipe at 5+ targets over raking/moonfire",
|
|
["criteria"] = "time_to_die < 4 || ( talent.wild_slashes.enabled & spell_targets.swipe_cat > 4 & ! ( variable.need_bt & buff.bt_swipe.up ) )",
|
|
["action"] = "swipe_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rake.refreshable || dot.rake.pmultiplier < 1.4 & ! ( variable.need_bt & buff.bt_rake.up ) & action.rake.ready & gcd.remains = 0 & ! buff.sudden_ambush.up & ! variable.cc_capped",
|
|
["action"] = "prowl",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rake.refreshable || dot.rake.pmultiplier < 1.4 & ! ( variable.need_bt & buff.bt_rake.up ) & action.rake.ready & ! buff.sudden_ambush.up & ! buff.prowl.up & ! variable.cc_capped",
|
|
["action"] = "shadowmeld",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rake",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "refreshable & talent.doubleclawed_rake.enabled & ! ( variable.need_bt & buff.bt_rake.up ) & ! variable.cc_capped",
|
|
["description"] = "dcr rake > moonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "at 3t with wild slashes, swipe is better than moonfiring/st rake",
|
|
["criteria"] = "talent.wild_slashes.enabled & spell_targets.swipe_cat > 2 & ! ( variable.need_bt & buff.bt_swipe.up )",
|
|
["action"] = "swipe_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lunar_inspiration",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "refreshable & ! ( variable.need_bt & buff.bt_moonfire.up ) & ! variable.cc_capped",
|
|
["description"] = "li moonfire is better than non-dcr rake in aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rake",
|
|
["criteria"] = "refreshable & ! ( variable.need_bt & buff.bt_rake.up ) & ! variable.cc_capped",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "fillers",
|
|
["criteria"] = "! ( variable.need_bt & buff.bt_swipe.up )",
|
|
["action"] = "brutal_slash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ( variable.need_bt & buff.bt_swipe.up )",
|
|
["action"] = "swipe_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.sudden_ambush.up & ! variable.easy_swipe & ! ( variable.need_bt & buff.bt_shred.up )",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.thrashing_claws.enabled & ! ( variable.need_bt & buff.bt_thrash.up )",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rake",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "talent.doubleclawed_rake.enabled & buff.sudden_ambush.up & variable.need_bt & buff.bt_rake.down",
|
|
["description"] = "fallback bt actions",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lunar_inspiration",
|
|
["criteria"] = "variable.need_bt & buff.bt_moonfire.down",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rake",
|
|
["criteria"] = "buff.sudden_ambush.up & variable.need_bt & buff.bt_rake.down",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_shred.down & ! variable.easy_swipe",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rake",
|
|
["criteria"] = "dot.rake.pmultiplier < 1.6 & variable.need_bt & buff.bt_rake.down",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_shred.down",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bs_inc.down & ! buff.prowl.up",
|
|
["action"] = "prowl",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.cat_form.up & ! talent.fluid_form.enabled",
|
|
["action"] = "cat_form",
|
|
},
|
|
{
|
|
["action"] = "skull_bash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soothe",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "variable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( energy.deficit > 35 || combo_points = 5 || combo_points >= 3 & dot.rip.refreshable & buff.bloodtalons.up ) & ( boss & fight_remains <= 15 || ( cooldown.bs_inc.remains > 20 & fight_remains > 5 ) || ( cooldown.bs_inc.ready & fight_remains > 12 || boss ) )",
|
|
["action"] = "tigers_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rake",
|
|
["criteria"] = "buff.shadowmeld.up || buff.prowl.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.regrowth & health.percent < 70 & ( buff.bs_inc.up || buff.tigers_fury.up )",
|
|
["action"] = "natures_vigil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.regrowth & health.percent < 70",
|
|
["action"] = "renewal",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "adaptive_swarm",
|
|
["criteria"] = "dot.adaptive_swarm_damage.stack < 3 & ( ! dot.adaptive_swarm_damage.ticking || dot.adaptive_swarm_damage.remains < 2 ) & ! action.adaptive_swarm.in_flight & ( spell_targets = 1 || ! talent.unbridled_swarm.enabled ) & ( dot.rip.ticking || hero_tree.druid_of_the_claw )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "adaptive_swarm",
|
|
["criteria"] = "buff.cat_form.up & dot.adaptive_swarm_damage.stack < 3 & talent.unbridled_swarm.enabled & spell_targets.swipe_cat > 1 & dot.rip.ticking",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.apex_predators_craving.up & ! ( variable.need_bt & active_bt_triggers = 2 )",
|
|
["action"] = "ferocious_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "dot.rip.ticking",
|
|
["list_name"] = "cooldown",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "with wildstalker and not both raging fury + veinripper, low cp rips for snapshot reasons is worth",
|
|
["criteria"] = "spell_targets = 1 & hero_tree.wildstalker & ! ( talent.raging_fury.enabled & talent.veinripper.enabled ) & ( buff.bloodtalons.up || ! talent.bloodtalons.enabled ) & ( dot.rip.remains < 5 & buff.tigers_fury.remains > 10 & combo_points >= 3 || ( ( buff.tigers_fury.remains < 3 & combo_points = 5 ) || buff.tigers_fury.remains <= 1 ) & buff.tigers_fury.up & combo_points >= 3 & remains < cooldown.tigers_fury.remains )",
|
|
["action"] = "rip",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points = 5",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "finisher",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.swipe_cat = 1 & combo_points < 5 & ( variable.time_to_pool <= 0 || ! variable.need_bt || variable.proccing_bt )",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "builder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.swipe_cat >= 2 & combo_points < 5 & ( variable.time_to_pool <= 0 || ! variable.need_bt || variable.proccing_bt )",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "aoe_builder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.predatory_swiftness.up & variable.regrowth & selection_time > gcd.max",
|
|
["action"] = "regrowth",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "mark_of_the_wild",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.prowl.up",
|
|
["action"] = "prowl",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.cat_form.up",
|
|
["action"] = "cat_form",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff & ! trinket.t1.is.imperfect_ascendancy_serum & ! trinket.t1.is.ovinaxs_mercurial_egg & ! trinket.t1.is.concoction_kiss_of_death",
|
|
["description"] = "check if trinket slot contains a stat on use (variable is just kept in case of things like mirror not working with has_use_buff)",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff & ! trinket.t2.is.imperfect_ascendancy_serum & ! trinket.t2.is.ovinaxs_mercurial_egg & ! trinket.t2.is.concoction_kiss_of_death",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "if we are playing 2 minute convoke, we prefer 2 minute on-use over 3 minute on-use even without berserk: heart of the lion",
|
|
["criteria"] = "talent.convoke_the_spirits.enabled & ! talent.ashamanes_guidance.enabled & variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % 120 = 0 || 120 % trinket.t1.cooldown.duration = 0 )",
|
|
["value"] = "1",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["var_name"] = "trinket_1_sync",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["criteria"] = "talent.convoke_the_spirits.enabled & ! talent.ashamanes_guidance.enabled & variable.trinket_2_buffs & ( trinket.t1.cooldown.duration % 120 = 0 || 120 % trinket.t1.cooldown.duration = 0 )",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "if we aren't playing 2 minute convoke, then we can sync 3 minute cds with berserk sans hotl",
|
|
["criteria"] = "! ( talent.convoke_the_spirits.enabled & ! talent.ashamanes_guidance.enabled ) & variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % cooldown.bs_inc.duration = 0 || cooldown.bs_inc.duration % trinket.t1.cooldown.duration = 0 || trinket.t1.cooldown.duration % cooldown.convoke_the_spirits.duration = 0 || cooldown.convoke_the_spirits.duration % trinket.t1.cooldown.duration = 0 )",
|
|
["value"] = "1",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["var_name"] = "trinket_1_sync",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["criteria"] = "! ( talent.convoke_the_spirits.enabled & ! talent.ashamanes_guidance.enabled ) & variable.trinket_2_buffs & ( trinket.t2.cooldown.duration % cooldown.bs_inc.duration = 0 || cooldown.bs_inc.duration % trinket.t2.cooldown.duration = 0 || trinket.t2.cooldown.duration % cooldown.convoke_the_spirits.duration = 0 || cooldown.convoke_the_spirits.duration % trinket.t2.cooldown.duration = 0 )",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "prioritize trinkets that line-up with cds->main-stat on uses->longer cd trinkets->shorter duration trinkets",
|
|
["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 ) * ( 1.2 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( 1.2 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
["value"] = "2",
|
|
["action"] = "variable",
|
|
["value_else"] = "1",
|
|
["var_name"] = "trinket_priority",
|
|
},
|
|
},
|
|
["builder"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "gcd.remains = 0 & energy >= 35 & ! buff.sudden_ambush.up & ( dot.rake.refreshable || dot.rake.pmultiplier < 1.4 ) * ! ( variable.need_bt & buff.bt_rake.up ) & buff.tigers_fury.up & ! buff.shadowmeld.up",
|
|
["action"] = "prowl",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "gcd.remains = 0 & energy >= 35 & ! buff.sudden_ambush.up & ( dot.rake.refreshable || dot.rake.pmultiplier < 1.4 ) * ! ( variable.need_bt & buff.bt_rake.up ) & buff.tigers_fury.up & ! buff.prowl.up",
|
|
["action"] = "shadowmeld",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "upgrade to stealth rakes, otherwise refresh in pandemic. Delay rake as long as possible if it would downgrade",
|
|
["criteria"] = "( ( refreshable & persistent_multiplier >= dot.rake.pmultiplier || dot.rake.remains < 3.5 ) || buff.sudden_ambush.up & persistent_multiplier > dot.rake.pmultiplier ) & ! ( variable.need_bt & buff.bt_rake.up )",
|
|
["action"] = "rake",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.brutal_slash.full_recharge_time < 4 & ! ( variable.need_bt & buff.bt_swipe.up )",
|
|
["action"] = "brutal_slash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable",
|
|
["action"] = "lunar_inspiration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! talent.thrashing_claws.enabled",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.clearcasting.up & ! ( variable.need_bt & buff.bt_shred.up )",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "pool_resource",
|
|
["description"] = "pool energy if we need to refresh dot in the next 1.5s [Hekili] TODO: Sim character to see how frequently this fires, determine if `wait` value should be adjusted.",
|
|
["criteria"] = "variable.dot_refresh_soon & energy.deficit > 70 & ! variable.need_bt & ! buff.bs_inc.up & cooldown.tigers_fury.remains > 3",
|
|
["wait"] = "0.2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ( variable.need_bt & buff.bt_swipe.up )",
|
|
["action"] = "brutal_slash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ( variable.need_bt & buff.bt_shred.up )",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_swipe.down",
|
|
["action"] = "swipe_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "clip rake for bt if it wont downgrade its snapshot",
|
|
["criteria"] = "variable.need_bt & buff.bt_rake.down & persistent_multiplier >= dot.rake.pmultiplier",
|
|
["action"] = "rake",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_moonfire.down",
|
|
["action"] = "lunar_inspiration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_thrash.down",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
},
|
|
["variable"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "energy + ( 40 * buff.clearcasting.stack ) + ( 3 * energy.regen ) + ( 50 * ( cooldown.tigers_fury.remains < 3.5 ) )",
|
|
["description"] = "most expensive bt cycle is Shred + Thrash + Rake, 40+40+35 for 115 energy. During incarn it is 32+32+28 for 92energy",
|
|
["var_name"] = "effective_energy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( ( 115 - variable.effective_energy - ( 23 * buff.incarnation.up ) ) / energy.regen )",
|
|
["description"] = "estimated time until we have enough energy to proc bloodtalons.",
|
|
["var_name"] = "time_to_pool",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( ! talent.thrashing_claws.enabled & ( dot.thrash_cat.remains - dot.thrash_cat.duration * 0.3 <= 2 ) ) || ( talent.lunar_inspiration.enabled & ( dot.moonfire_cat.remains - dot.moonfire_cat.duration * 0.3 <= 2 ) ) || ( ( dot.rake.pmultiplier < 1.6 || buff.sudden_ambush.up ) & ( dot.rake.remains - dot.rake.duration * 0.3 <= 2 ) )",
|
|
["description"] = "this returns true if we have a dot nearing pandemic range",
|
|
["var_name"] = "dot_refresh_soon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.bloodtalons.enabled & buff.bloodtalons.stack <= 1",
|
|
["description"] = "try to proc bt if we have 1 or 0 sacks of bloodtalons",
|
|
["var_name"] = "need_bt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.clearcasting.stack = ( 1 + talent.moment_of_clarity.enabled )",
|
|
["description"] = "capped on clearcasting stacks",
|
|
["var_name"] = "cc_capped",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( cooldown.convoke_the_spirits.remains + cooldown.convoke_the_spirits.duration ) > fight_remains & cooldown.convoke_the_spirits.remains < fight_remains",
|
|
["description"] = "checks if theres exactly 1 convoke remaining in sim",
|
|
["var_name"] = "lastconvoke",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( cooldown.bs_inc.remains + cooldown.bs_inc.duration + 5 ) > fight_remains & cooldown.convoke_the_spirits.remains < fight_remains",
|
|
["description"] = "checks if theres exactly 1 berserk cast remaining in sim : at least 5s spare for now, TODO: check #s",
|
|
["var_name"] = "lastzerk",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( cooldown.potions.remains + cooldown.potions.duration + 15 ) > fight_remains & cooldown.potions.remains + 15 < fight_remains",
|
|
["description"] = "approximates if theres exactly 1 potion cast remaining with duration to spare",
|
|
["var_name"] = "lastpotion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["value"] = "settings.regrowth",
|
|
["description"] = "optional variable that sends regrowth and renewal casts. Turned off by default",
|
|
["var_name"] = "regrowth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "easy_swipe",
|
|
["description"] = "optional variable that forgoes shredding in AoE. Turned off by default",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.need_bt",
|
|
["var_name"] = "proccing_bt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "moonfire_snapshotted",
|
|
["criteria"] = "prev.lunar_inspiration",
|
|
["description"] = "track moonfire snapshot",
|
|
["value"] = "buff.tigers_fury.up",
|
|
},
|
|
},
|
|
["cooldown"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > 17 || boss",
|
|
["action"] = "incarnation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["criteria"] = "trinket.t1.has_use_damage & ( trinket.t2.cooldown.remains > 20 || ! variable.trinket_2_buffs )",
|
|
["description"] = "non-stat on use trinkets get used on cooldown, so long as it wont interfere with a stat on-use trinket",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "trinket.t2.has_use_damage & ( trinket.t1.cooldown.remains > 20 || ! variable.trinket_1_buffs )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "berserk with tigers fury",
|
|
["criteria"] = "buff.tigers_fury.up & ( fight_remains > 12 || boss )",
|
|
["action"] = "berserk",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bs_inc.up",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "todo make last set of cds line up again now that we know potions.remains is the syntax",
|
|
["criteria"] = "buff.bs_inc.up || boss & fight_remains < 32 || ( ! variable.lastzerk & variable.lastconvoke & cooldown.convoke_the_spirits.remains < 10 )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "non trinket gear-on-uses have variable rules on whether or not they trigger the trinket shared CD. For the cases they do we will need specific APL entries. For now just use on cooldown.",
|
|
["action"] = "use_items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["criteria"] = "variable.trinket_1_buffs & ( buff.bs_inc.up || ( ( buff.tigers_fury.up & cooldown.tigers_fury.remains > 25 ) & ( cooldown.convoke_the_spirits.remains < 6 || ( variable.trinket_2_buffs & cooldown.convoke_the_spirits.remains - trinket.t2.cooldown.remains > 0 ) || ! talent.convoke_the_spirits.enabled & cooldown.bs_inc.remains - trinket.t2.cooldown.remains > 0 ) ) ) & ( ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || trinket.t1.buff_duration >= fight_remains & boss",
|
|
["description"] = "stat on-use trinkets, prefers trinket with higher priority.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "variable.trinket_2_buffs & ( buff.bs_inc.up || ( ( buff.tigers_fury.up & cooldown.tigers_fury.remains > 25 ) & ( cooldown.convoke_the_spirits.remains < 6 || ( variable.trinket_1_buffs & cooldown.convoke_the_spirits.remains - trinket.t1.cooldown.remains > 0 ) || ! talent.convoke_the_spirits.enabled & cooldown.bs_inc.remains - trinket.t1.cooldown.remains > 0 ) ) ) & ( ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || trinket.t2.buff_duration >= fight_remains & boss",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points <= 1 || buff.bs_inc.up & combo_points <= 2",
|
|
["action"] = "feral_frenzy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "always line up convoke with berserk if you can",
|
|
["criteria"] = "boss & fight_remains < 5 || ( cooldown.bs_inc.remains > 45 || buff.bs_inc.up || ! talent.berserk_heart_of_the_lion.enabled ) & ( buff.tigers_fury.up & ( combo_points <= 4 || buff.bs_inc.up & combo_points <= 3 ) & ( target.time_to_die > 5 - talent.ashamanes_guidance.enabled || boss ) )",
|
|
["action"] = "convoke_the_spirits",
|
|
},
|
|
},
|
|
["finisher"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "maintain/upgrade pws, if we have 6.5+s left on pw, we will instead bite if we have rampant ferocity talented. Without rampant, we will bite a vined target with 6 or fewer targets. If we have Ravage, we use specifically Ravage at 7 or fewer targets.",
|
|
["criteria"] = "spell_targets.primal_wrath > 1 & ( ( dot.primal_wrath.remains < 6.5 & ! buff.bs_inc.up || dot.primal_wrath.refreshable ) || ( ! talent.rampant_ferocity.enabled & ( spell_targets.primal_wrath > 1 & ! dot.bloodseeker_vines.ticking & ! buff.ravage.up || spell_targets.primal_wrath > 6 + talent.ravage.enabled ) ) )",
|
|
["action"] = "primal_wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rip",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "refreshable & ( ! talent.primal_wrath.enabled || spell_targets = 1 ) & ( buff.bloodtalons.up || ! talent.bloodtalons.enabled ) & ( buff.tigers_fury.up || dot.rip.remains < cooldown.tigers_fury.remains ) & ( remains < fight_remains || remains < 4 & buff.ravage.up )",
|
|
["description"] = "rip if single target or pw isnt up. Rip with bloodtalons if talented. If tigers fury will be up before rip falls off, then delay refresh",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ferocious_bite",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "! buff.bs_inc.up",
|
|
["max_energy"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ferocious_bite",
|
|
["criteria"] = "buff.bs_inc.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
},
|
|
["author"] = "Makahiki",
|
|
},
|
|
["Holy Priest"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20240828,
|
|
["spec"] = 257,
|
|
["desc"] = "Healer priorities are DPS-focused only\n\n2024-08-28: Use cooldowns action list\n\n2024-07-30: The War Within",
|
|
["profile"] = "actions.precombat+=/power_word_fortitude\n\nactions+=/call_action_list,name=cooldowns\n# Always use HF if we have empyreal blaze (dot extension) or harmonious apparatus (cd reduction) or if it's not currently ticking. Otherwise, only use when refreshable to be sure we get the longest duration possible. It's worth it to cast even when the target will die soon based on just the initial hit damage. We also don't want to cast immediately once empyreal blaze is up when we are prepping divine word\nactions+=/holy_fire,cycle_targets=1,if=(talent.empyreal_blaze||talent.harmonious_apparatus||!ticking||refreshable)&!(buff.empyreal_blaze.up&(cooldown.divine_word.up||buff.divine_word.up)&cooldown.holy_word_chastise.up)\n# Don't cast SW:P during apotheosis or divine favor: chastise. We also don't cycle targets because it isn't worth the GCDs, since Smite deals slightly more damage than a full SW:P.\nactions+=/shadow_word_pain,if=(refreshable||!ticking)&(target.time_to_die>=dot.shadow_word_pain.duration)&!buff.divine_favor_chastise.up&!buff.apotheosis.up\n# Prepare to enter divine favor: chastise\nactions+=/call_action_list,name=divine_favor_chastise_prep,if=talent.divine_word&talent.holy_word_chastise&buff.divine_favor_chastise.down\n# Enter Divine Favor rotation with divine favor: chastise buff up\nactions+=/run_action_list,name=divine_favor_chastise_active,strict=1,if=buff.divine_favor_chastise.up\n# Run divine favor fillers rotation with buff down\nactions+=/run_action_list,name=divine_favor_filler,if=talent.divine_word&talent.holy_word_chastise&buff.divine_favor_chastise.down\n# Run divine image rotation with divine image talented\nactions+=/run_action_list,name=divine_image,strict=1,if=talent.divine_image\n# Otherwise generic rotation\nactions+=/run_action_list,name=generic\n\nactions.divine_favor_chastise_prep+=/variable,name=empyreal_exec_time,op=set,value=0\n# apotheosis_exec_time: Store how long Apotheosis will take to execute\nactions.divine_favor_chastise_prep+=/variable,name=apotheosis_exec_time,op=setif,condition=talent.apotheosis,value=action.apotheosis.execute_time,value_else=0\n# Use apotheosis to get Chastise back if its on cooldown and Divine Word will be up soon. We can use Apotheosis (2min CD) to reset Chastise for every other Divine Word (1min CD).\nactions.divine_favor_chastise_prep+=/apotheosis,if=(cooldown.holy_word_chastise.remains>cooldown.divine_word.remains)&(cooldown.divine_word.remains<=(variable.empyreal_exec_time+variable.apotheosis_exec_time))\n# Divine Word only if we can sync with Chastise and (if talented) Empyreal Blaze\nactions.divine_favor_chastise_prep+=/divine_word,if=cooldown.holy_word_chastise.up&(!talent.empyreal_blaze||buff.empyreal_blaze.up)\n# Holy word chastise to trigger divine favor: chastise\nactions.divine_favor_chastise_prep+=/holy_word_chastise,if=!talent.empyreal_blaze&buff.divine_word.up||talent.empyreal_blaze&buff.empyreal_blaze.down\n\nactions.divine_favor_chastise_active+=/halo,if=spell_targets.halo>=2\nactions.divine_favor_chastise_active+=/divine_star,if=spell_targets.divine_star>=2\n# There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do\nactions.divine_favor_chastise_active+=/holy_nova,if=(spell_targets.holy_nova>=2&buff.rhapsody.stack>=18)||(spell_targets.holy_nova>=3&buff.rhapsody.stack>=9)||(spell_targets.holy_nova>=4&buff.rhapsody.stack>=4)||spell_targets.holy_nova>=5\nactions.divine_favor_chastise_active+=/mindgames\nactions.divine_favor_chastise_active+=/shadow_word_death,if=target.health.pct<20\nactions.divine_favor_chastise_active+=/holy_word_chastise\n# We want to cycle smite to different targets to spread holy fire dots in AOE situations, this will buff holy nova's damage\nactions.divine_favor_chastise_active+=/smite,cycle_targets=1,if=spell_targets.holy_nova>=2\nactions.divine_favor_chastise_active+=/smite\n\nactions.divine_favor_filler+=/halo,if=spell_targets.halo>=2\nactions.divine_favor_filler+=/divine_star,if=spell_targets.divine_star>=2\n# There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do\nactions.divine_favor_filler+=/holy_nova,if=(spell_targets.holy_nova>=2&buff.rhapsody.stack>=18)||(spell_targets.holy_nova>=3&buff.rhapsody.stack>=9)||(spell_targets.holy_nova>=4&buff.rhapsody.stack>=4)||spell_targets.holy_nova>=5\nactions.divine_favor_filler+=/mindgames\nactions.divine_favor_filler+=/shadow_word_death,if=target.health.pct<20\n# We can use chastise for damage as long as we will have apotheosis available before the next divine word, otherwise only use it when it will be back up at the same time as divine word\nactions.divine_favor_filler+=/holy_word_chastise,if=(cooldown.apotheosis.remains<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+=/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\n# Hold Apotheosis if chastise will be up soon\nactions.generic+=/apotheosis,if=cooldown.holy_word_chastise.remains>(gcd.max*3)\nactions.generic+=/halo,if=spell_targets.halo>=2\nactions.generic+=/divine_star,if=spell_targets.divine_star>=2\n# There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do\nactions.generic+=/holy_nova,if=(spell_targets.holy_nova>=2&buff.rhapsody.stack>=18)||(spell_targets.holy_nova>=3&buff.rhapsody.stack>=9)||(spell_targets.holy_nova>=4&buff.rhapsody.stack>=4)||spell_targets.holy_nova>=5\nactions.generic+=/mindgames\nactions.generic+=/shadow_word_death,if=target.health.pct<20\nactions.generic+=/smite\n\nactions.cooldowns+=/shadowfiend\n# Sync PI with divine favor: chastise if we took divine word\nactions.cooldowns+=/power_infusion,if=(!talent.divine_word||(cooldown.divine_word.up&cooldown.holy_word_chastise.up))\n# Only potion in sync with power infusion\nactions.cooldowns+=/potion,if=buff.power_infusion.up\n# hold trinkets to use with PI\nactions.cooldowns+=/use_items,if=buff.power_infusion.up",
|
|
["version"] = 20240828,
|
|
["warnings"] = "The import for 'cooldowns' required some automated changes.\nLine 2: Converted 'talent.divine_word' to 'talent.divine_word.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 2: Converted 'talent.empyreal_blaze' to 'talent.empyreal_blaze.enabled' (1x).\nLine 2: Converted 'talent.harmonious_apparatus' to 'talent.harmonious_apparatus.enabled' (1x).\nLine 4: Converted 'talent.divine_word' to 'talent.divine_word.enabled' (1x).\nLine 4: Converted 'talent.holy_word_chastise' to 'talent.holy_word_chastise.enabled' (1x).\nLine 6: Converted 'talent.divine_word' to 'talent.divine_word.enabled' (1x).\nLine 6: Converted 'talent.holy_word_chastise' to 'talent.holy_word_chastise.enabled' (1x).\nLine 7: Converted 'talent.divine_image' to 'talent.divine_image.enabled' (1x).\n\nThe import for 'divine_favor_chastise_prep' required some automated changes.\nLine 2: Converted 'talent.apotheosis' to 'talent.apotheosis.enabled' (1x).\nLine 4: Converted 'talent.empyreal_blaze' to 'talent.empyreal_blaze.enabled' (1x).\nLine 5: Converted 'talent.empyreal_blaze' to 'talent.empyreal_blaze.enabled' (1x).\nLine 5: Converted 'talent.empyreal_blaze' to 'talent.empyreal_blaze.enabled' (1x).\n\nImported 8 action lists.\n",
|
|
["author"] = "Kapulani",
|
|
["lists"] = {
|
|
["divine_favor_chastise_prep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "empyreal_exec_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "apotheosis_exec_time: Store how long Apotheosis will take to execute",
|
|
["var_name"] = "apotheosis_exec_time",
|
|
["value"] = "action.apotheosis.execute_time",
|
|
["action"] = "variable",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.apotheosis.enabled",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Holy word chastise to trigger divine favor: chastise",
|
|
["criteria"] = "! talent.empyreal_blaze.enabled & buff.divine_word.up || talent.empyreal_blaze.enabled & buff.empyreal_blaze.down",
|
|
["action"] = "holy_word_chastise",
|
|
},
|
|
},
|
|
["divine_image"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.answered_prayers.down & ! ( cooldown.holy_word_sanctify.up || cooldown.holy_word_serenity.up || cooldown.holy_word_chastise.up )",
|
|
["action"] = "apotheosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "holy_word_sanctify",
|
|
["line_cd"] = "9",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "holy_word_serenity",
|
|
["line_cd"] = "9",
|
|
},
|
|
{
|
|
["action"] = "holy_word_chastise",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.halo >= 2",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.divine_star >= 2",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
},
|
|
{
|
|
["action"] = "mindgames",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 20",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["action"] = "smite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "holy_fire",
|
|
["cycle_targets"] = 1,
|
|
["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",
|
|
["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 )",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Prepare to enter divine favor: chastise",
|
|
["criteria"] = "talent.divine_word.enabled & talent.holy_word_chastise.enabled & buff.divine_favor_chastise.down",
|
|
["list_name"] = "divine_favor_chastise_prep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["description"] = "Enter Divine Favor rotation with divine favor: chastise buff up",
|
|
["strict"] = 1,
|
|
["criteria"] = "buff.divine_favor_chastise.up",
|
|
["list_name"] = "divine_favor_chastise_active",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["description"] = "Run divine favor fillers rotation with buff down",
|
|
["criteria"] = "talent.divine_word.enabled & talent.holy_word_chastise.enabled & buff.divine_favor_chastise.down",
|
|
["list_name"] = "divine_favor_filler",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["description"] = "Run divine image rotation with divine image talented",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.divine_image.enabled",
|
|
["list_name"] = "divine_image",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["description"] = "Otherwise generic rotation",
|
|
["list_name"] = "generic",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "power_word_fortitude",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["divine_favor_chastise_active"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.halo >= 2",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.divine_star >= 2",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
},
|
|
{
|
|
["action"] = "mindgames",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 20",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["action"] = "holy_word_chastise",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "smite",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "We want to cycle smite to different targets to spread holy fire dots in AOE situations, this will buff holy nova's damage",
|
|
["criteria"] = "spell_targets.holy_nova >= 2",
|
|
},
|
|
{
|
|
["action"] = "smite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["action"] = "mindbender",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Only potion in sync with power infusion",
|
|
["criteria"] = "buff.power_infusion.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "hold trinkets to use with PI",
|
|
["criteria"] = "buff.power_infusion.up",
|
|
["action"] = "use_items",
|
|
},
|
|
},
|
|
["generic"] = {
|
|
{
|
|
["action"] = "holy_word_chastise",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Hold Apotheosis if chastise will be up soon",
|
|
["criteria"] = "cooldown.holy_word_chastise.remains > ( gcd.max * 3 )",
|
|
["action"] = "apotheosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.halo >= 2",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.divine_star >= 2",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["action"] = "mindgames",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 20",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["action"] = "smite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["divine_favor_filler"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.halo >= 2",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.divine_star >= 2",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
},
|
|
{
|
|
["action"] = "mindgames",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 20",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["action"] = "smite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["Vengeance"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241029,
|
|
["spec"] = 581,
|
|
["desc"] = "2024-10-29: 11.0.5\n\n2024-10-21: SimC update, increase defensiveness a bit\n\n2024-09-22: SimC update\n\n2024-09-12: Reimplement Demonsurge\n\n2024-09-10: SimC update\n\n2024-09-09: Tweak variable names to be consistent for FS vs. AR; fix wait loop\n\n2024-09-01, 09-08: SimC update\n\n2024-07-23: The War Within",
|
|
["profile"] = "actions.precombat+=/variable,name=single_target,value=spell_targets.spirit_bomb=1\nactions.precombat+=/variable,name=small_aoe,value=spell_targets.spirit_bomb>=2&spell_targets.spirit_bomb<=5\nactions.precombat+=/variable,name=big_aoe,value=spell_targets.spirit_bomb>=6\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_buff.agility||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_buff.agility||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit)\nactions.precombat+=/arcane_torrent\nactions.precombat+=/sigil_of_flame,if=hero_tree.aldrachi_reaver||(hero_tree.felscarred&talent.student_of_suffering)\nactions.precombat+=/immolation_aura\n\nactions+=/disrupt\nactions+=/demon_spikes,use_off_gcd=1,if=!buff.demon_spikes.up&(tanking||time<5)\nactions+=/variable,name=num_spawnable_souls,op=reset,default=0\nactions+=/variable,name=num_spawnable_souls,op=max,value=1,if=talent.soul_sigils&cooldown.sigil_of_flame.up\nactions+=/variable,name=num_spawnable_souls,op=max,value=2,if=talent.fracture&cooldown.fracture.charges_fractional>=1&!buff.metamorphosis.up\nactions+=/variable,name=num_spawnable_souls,op=max,value=3,if=talent.fracture&cooldown.fracture.charges_fractional>=1&buff.metamorphosis.up\nactions+=/variable,name=num_spawnable_souls,op=add,value=1,if=talent.soul_carver&(cooldown.soul_carver.remains>(cooldown.soul_carver.duration-3))\nactions+=/infernal_strike,use_off_gcd=1\nactions+=/run_action_list,name=ar,strict=1,if=!hero_tree.felscarred\nactions+=/run_action_list,name=fs,strict=1,if=hero_tree.felscarred\n\nactions.ar+=/variable,name=spb_threshold,op=setif,condition=talent.fiery_demise&dot.fiery_brand.ticking,value=(variable.single_target*5)+(variable.small_aoe*5)+(variable.big_aoe*4),value_else=(variable.single_target*5)+(variable.small_aoe*5)+(variable.big_aoe*4)\nactions.ar+=/variable,name=can_spb,op=setif,condition=talent.spirit_bomb,value=soul_fragments>=variable.spb_threshold,value_else=0\nactions.ar+=/variable,name=can_spb_soon,op=setif,condition=talent.spirit_bomb,value=soul_fragments>=variable.spb_threshold,value_else=0\nactions.ar+=/variable,name=can_spb_one_gcd,op=setif,condition=talent.spirit_bomb,value=(soul_fragments+variable.num_spawnable_souls)>=variable.spb_threshold,value_else=0\nactions.ar+=/variable,name=double_rm_remains,op=setif,condition=(variable.double_rm_expires-time)>0,value=variable.double_rm_expires-time,value_else=0\nactions.ar+=/variable,name=trigger_overflow,op=set,value=0,if=!buff.glaive_flurry.up&!buff.rending_strike.up&!prev_gcd.1.reavers_glaive\nactions.ar+=/variable,name=rg_enhance_cleave,op=setif,condition=variable.trigger_overflow||(spell_targets.spirit_bomb>=4)||(fight_remains<10||target.time_to_die<10),value=1,value_else=0\nactions.ar+=/variable,name=souls_before_next_rg_sequence,value=soul_fragments+buff.art_of_the_glaive.stack\nactions.ar+=/variable,name=souls_before_next_rg_sequence,op=add,value=(1.1*(1+stat.haste))*(variable.double_rm_remains-(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max)))\nactions.ar+=/variable,name=souls_before_next_rg_sequence,op=add,value=3+talent.soul_sigils,if=cooldown.sigil_of_spite.remains<(variable.double_rm_remains-gcd.max-(2-talent.soul_sigils))\nactions.ar+=/variable,name=souls_before_next_rg_sequence,op=add,value=3,if=cooldown.soul_carver.remains<(variable.double_rm_remains-gcd.max)\nactions.ar+=/variable,name=souls_before_next_rg_sequence,op=add,value=3,if=cooldown.soul_carver.remains<(variable.double_rm_remains-gcd.max-3)\nactions.ar+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs||(variable.trinket_1_buffs&((buff.rending_strike.up&buff.glaive_flurry.up)||(prev_gcd.1.reavers_glaive)||(buff.thrill_of_the_fight_damage.remains>8)||(buff.reavers_glaive.up&cooldown.the_hunt.remains<5)))\nactions.ar+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs||(variable.trinket_2_buffs&((buff.rending_strike.up&buff.glaive_flurry.up)||(prev_gcd.1.reavers_glaive)||(buff.thrill_of_the_fight_damage.remains>8)||(buff.reavers_glaive.up&cooldown.the_hunt.remains<5)))\nactions.ar+=/potion,use_off_gcd=1,if=(buff.rending_strike.up&buff.glaive_flurry.up)||prev_gcd.1.reavers_glaive\n##actions.ar+=/call_action_list,name=externals,if=(buff.rending_strike.up&buff.glaive_flurry.up)||prev_gcd.1.reavers_glaive\nactions.ar+=/run_action_list,name=rg_sequence,strict=1,if=buff.glaive_flurry.up||buff.rending_strike.up||prev_gcd.1.reavers_glaive\nactions.ar+=/metamorphosis,use_off_gcd=1,if=time<5||cooldown.fel_devastation.remains>=20\nactions.ar+=/the_hunt,if=!buff.reavers_glaive.up&(buff.art_of_the_glaive.stack+soul_fragments)<20\nactions.ar+=/spirit_bomb,if=variable.can_spb&(soul_fragments>2||prev_gcd.1.sigil_of_spite||prev_gcd.1.soul_carver||(spell_targets.spirit_bomb>=4&talent.fallout&cooldown.immolation_aura.remains<gcd.max))\nactions.ar+=/immolation_aura,if=(spell_targets.spirit_bomb>=4)||(!buff.reavers_glaive.up||(variable.double_rm_remains>((action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))+gcd.max)))\nactions.ar+=/sigil_of_flame,if=(talent.ascending_flame||(!prev_gcd.1.sigil_of_flame&dot.sigil_of_flame.remains<(4-talent.quickened_sigils)))&(!buff.reavers_glaive.up||(variable.double_rm_remains>((action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))+gcd.max)))\nactions.ar+=/run_action_list,name=rg_overflow,if=buff.reavers_glaive.up&spell_targets.spirit_bomb<4&debuff.reavers_mark.up&(variable.double_rm_remains>(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max)))&(!buff.thrill_of_the_fight_damage.up||(buff.thrill_of_the_fight_damage.remains<(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))&((variable.double_rm_remains-(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max)))>(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max)))&((variable.souls_before_next_rg_sequence>=20)||(variable.double_rm_remains>((action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))+cooldown.the_hunt.remains+action.the_hunt.execute_time)))\nactions.ar+=/call_action_list,name=ar_execute,if=(fight_remains<10||target.time_to_die<10)\nactions.ar+=/soul_cleave,if=!buff.reavers_glaive.up&(variable.double_rm_remains<=(execute_time+(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))&(soul_fragments<3&((buff.art_of_the_glaive.stack+soul_fragments)>=20))\nactions.ar+=/spirit_bomb,if=!buff.reavers_glaive.up&(variable.double_rm_remains<=(execute_time+(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))&((buff.art_of_the_glaive.stack+soul_fragments)>=20)\nactions.ar+=/bulk_extraction,if=!buff.reavers_glaive.up&(variable.double_rm_remains<=(execute_time+(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))&((buff.art_of_the_glaive.stack+(spell_targets>?5))>=20)\nactions.ar+=/reavers_glaive,if=(fury+(variable.rg_enhance_cleave*25)+(talent.keen_engagement*20))>=30&((!buff.thrill_of_the_fight_attack_speed.up||(variable.double_rm_remains<=(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))||(spell_targets.spirit_bomb>=4))&!(buff.rending_strike.up||buff.glaive_flurry.up)\nactions.ar+=/call_action_list,name=rg_prep,if=(fury+(variable.rg_enhance_cleave*25)+(talent.keen_engagement*20))<30&((!buff.thrill_of_the_fight_attack_speed.up||(variable.double_rm_remains<=(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))||(spell_targets.spirit_bomb>=4))\nactions.ar+=/fiery_brand,if=(!talent.fiery_demise&active_dot.fiery_brand=0)||(talent.down_in_flames&(full_recharge_time<gcd.max))||(talent.fiery_demise&active_dot.fiery_brand=0&(buff.reavers_glaive.up||cooldown.the_hunt.remains<5||buff.art_of_the_glaive.stack>=15||buff.thrill_of_the_fight_damage.remains>5))\nactions.ar+=/sigil_of_spite,if=buff.thrill_of_the_fight_damage.up||(fury>=80&(variable.can_spb||variable.can_spb_soon))||((soul_fragments+buff.art_of_the_glaive.stack+((1.1*(1+raw_haste_pct))*(variable.double_rm_remains-(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max)))))<20)\nactions.ar+=/spirit_bomb,if=variable.can_spb\nactions.ar+=/felblade,if=(variable.can_spb||variable.can_spb_soon)&fury<40\nactions.ar+=/vengeful_retreat,use_off_gcd=1,if=(variable.can_spb||variable.can_spb_soon)&fury<40&!cooldown.felblade.up&talent.unhindered_assault\nactions.ar+=/fracture,if=(variable.can_spb||variable.can_spb_soon||variable.can_spb_one_gcd)&fury<40\nactions.ar+=/soul_carver,if=buff.thrill_of_the_fight_damage.up||((soul_fragments+buff.art_of_the_glaive.stack+((1.1*(1+raw_haste_pct))*(variable.double_rm_remains-(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max)))))<20)\nactions.ar+=/fel_devastation,if=!buff.metamorphosis.up&((variable.double_rm_remains>((action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))+2))||(spell_targets.spirit_bomb>=4))&((action.fracture.full_recharge_time<(2+gcd.max))||(!variable.single_target&buff.thrill_of_the_fight_damage.up))\nactions.ar+=/felblade,if=cooldown.fel_devastation.remains<gcd.max&fury<50\nactions.ar+=/vengeful_retreat,use_off_gcd=1,if=cooldown.fel_devastation.remains<gcd.max&fury<50&!cooldown.felblade.up&talent.unhindered_assault\nactions.ar+=/fracture,if=cooldown.fel_devastation.remains<gcd.max&fury<50\nactions.ar+=/fracture,if=(full_recharge_time<gcd.max)||buff.metamorphosis.up||variable.can_spb||variable.can_spb_soon||buff.warblades_hunger.stack>=5\nactions.ar+=/soul_cleave,if=soul_fragments>=1\nactions.ar+=/bulk_extraction,if=spell_targets>=3\nactions.ar+=/fracture\nactions.ar+=/soul_cleave\nactions.ar+=/shear\nactions.ar+=/felblade\nactions.ar+=/throw_glaive\n\nactions.ar_execute+=/metamorphosis,use_off_gcd=1\nactions.ar_execute+=/reavers_glaive,if=(fury+(variable.rg_enhance_cleave*25)+(talent.keen_engagement*20))>=30&!(buff.rending_strike.up||buff.glaive_flurry.up)\nactions.ar_execute+=/call_action_list,name=rg_prep,if=buff.reavers_glaive.up&(fury+(variable.rg_enhance_cleave*25)+(talent.keen_engagement*20))<30\nactions.ar_execute+=/the_hunt,if=!buff.reavers_glaive.up\nactions.ar_execute+=/bulk_extraction,if=spell_targets>=3&buff.art_of_the_glaive.stack>=20\nactions.ar_execute+=/sigil_of_flame\nactions.ar_execute+=/fiery_brand\nactions.ar_execute+=/sigil_of_spite\nactions.ar_execute+=/soul_carver\nactions.ar_execute+=/fel_devastation\n\n## actions.externals+=/invoke_external_buff,name=symbol_of_hope\n## actions.externals+=/invoke_external_buff,name=power_infusion\n\nactions.fel_dev+=/spirit_burst,if=buff.demonsurge_spirit_burst.up&(variable.can_spburst||soul_fragments>=4||(buff.metamorphosis.remains<(gcd.max*2)))\nactions.fel_dev+=/soul_sunder,if=buff.demonsurge_soul_sunder.up&(!buff.demonsurge_spirit_burst.up||(buff.metamorphosis.remains<(gcd.max*2)))\nactions.fel_dev+=/sigil_of_spite,if=(!talent.cycle_of_binding||(cooldown.sigil_of_spite.duration<(cooldown.metamorphosis.remains+18)))&(soul_fragments<=2&buff.demonsurge_spirit_burst.up)\nactions.fel_dev+=/soul_carver,if=soul_fragments<=2&!prev_gcd.1.sigil_of_spite&buff.demonsurge_spirit_burst.up\nactions.fel_dev+=/fracture,if=soul_fragments<=2&buff.demonsurge_spirit_burst.up\nactions.fel_dev+=/felblade,if=buff.demonsurge_spirit_burst.up||buff.demonsurge_soul_sunder.up\nactions.fel_dev+=/fracture,if=buff.demonsurge_spirit_burst.up||buff.demonsurge_soul_sunder.up\n\nactions.fel_dev_prep+=/potion,use_off_gcd=1,if=prev_gcd.1.fiery_brand\nactions.fel_dev_prep+=/sigil_of_flame,if=!variable.hold_sof_for_precombat&!variable.hold_sof_for_student&!variable.hold_sof_for_dot\nactions.fel_dev_prep+=/fiery_brand,if=talent.fiery_demise&((fury+variable.fel_dev_passive_fury_gen)>=120)&(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4)&active_dot.fiery_brand=0&((cooldown.metamorphosis.remains<(execute_time+action.fel_devastation.execute_time+(gcd.max*2)))||variable.fiery_brand_back_before_meta)\nactions.fel_dev_prep+=/fel_devastation,if=((fury+variable.fel_dev_passive_fury_gen)>=120)&(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4)\nactions.fel_dev_prep+=/sigil_of_spite,if=(!talent.cycle_of_binding||(cooldown.sigil_of_spite.duration<(cooldown.metamorphosis.remains+18)))&(soul_fragments<=1||(!(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4)&action.fracture.charges_fractional<1))\nactions.fel_dev_prep+=/soul_carver,if=(!talent.cycle_of_binding||cooldown.metamorphosis.remains>20)&(soul_fragments<=1||(!(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4)&action.fracture.charges_fractional<1))&!prev_gcd.1.sigil_of_spite&!prev_gcd.2.sigil_of_spite\nactions.fel_dev_prep+=/felblade,if=(fury+variable.fel_dev_passive_fury_gen)<120&(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4)\nactions.fel_dev_prep+=/fracture,if=!(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4)||(fury+variable.fel_dev_passive_fury_gen)<120\nactions.fel_dev_prep+=/felblade\nactions.fel_dev_prep+=/fracture\n## actions.fel_dev_prep+=/wait,sec=0.1,if=(!(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4)||!((fury+variable.fel_dev_passive_fury_gen)>=120))&action.fracture.charges_fractional>=0.7\nactions.fel_dev_prep+=/fel_devastation\nactions.fel_dev_prep+=/soul_cleave,if=((fury+variable.fel_dev_passive_fury_gen)>=150)\nactions.fel_dev_prep+=/throw_glaive\n\nactions.fs+=/variable,name=crit_pct,op=set,value=(action.sigil_of_flame.crit_pct+(talent.aura_of_pain*6))%100,if=active_dot.sigil_of_flame>0&talent.volatile_flameblood\nactions.fs+=/variable,name=fel_dev_sequence_time,op=set,value=2+(2*gcd.max)\nactions.fs+=/variable,name=fel_dev_sequence_time,op=add,value=gcd.max,if=talent.fiery_demise&cooldown.fiery_brand.up\nactions.fs+=/variable,name=fel_dev_sequence_time,op=add,value=gcd.max,if=cooldown.sigil_of_flame.up||cooldown.sigil_of_flame.remains<variable.fel_dev_sequence_time\nactions.fs+=/variable,name=fel_dev_sequence_time,op=add,value=gcd.max,if=cooldown.immolation_aura.up||cooldown.immolation_aura.remains<variable.fel_dev_sequence_time\nactions.fs+=/variable,name=fel_dev_passive_fury_gen,op=set,value=0\nactions.fs+=/variable,name=fel_dev_passive_fury_gen,op=add,value=2.5*floor((buff.student_of_suffering.remains>?variable.fel_dev_sequence_time)),if=talent.student_of_suffering.enabled&(buff.student_of_suffering.remains>1||prev_gcd.1.sigil_of_flame)\nactions.fs+=/variable,name=fel_dev_passive_fury_gen,op=add,value=30+(2*talent.flames_of_fury*spell_targets.sigil_of_flame),if=(cooldown.sigil_of_flame.remains<variable.fel_dev_sequence_time)\nactions.fs+=/variable,name=fel_dev_passive_fury_gen,op=add,value=8,if=cooldown.immolation_aura.remains<variable.fel_dev_sequence_time\nactions.fs+=/variable,name=fel_dev_passive_fury_gen,op=add,value=2*floor((buff.immolation_aura.remains>?variable.fel_dev_sequence_time)),if=buff.immolation_aura.remains>1\nactions.fs+=/variable,name=fel_dev_passive_fury_gen,op=add,value=7.5*variable.crit_pct*floor((buff.immolation_aura.remains>?variable.fel_dev_sequence_time)),if=talent.volatile_flameblood&buff.immolation_aura.remains>1\nactions.fs+=/variable,name=fel_dev_passive_fury_gen,op=add,value=22,if=talent.darkglare_boon.enabled\nactions.fs+=/variable,name=spbomb_threshold,op=setif,condition=talent.fiery_demise&dot.fiery_brand.ticking,value=(variable.single_target*5)+(variable.small_aoe*5)+(variable.big_aoe*4),value_else=(variable.single_target*5)+(variable.small_aoe*5)+(variable.big_aoe*4)\nactions.fs+=/variable,name=can_spbomb,op=setif,condition=talent.spirit_bomb,value=soul_fragments>=variable.spbomb_threshold,value_else=0\nactions.fs+=/variable,name=can_spbomb_soon,op=setif,condition=talent.spirit_bomb,value=soul_fragments>=variable.spbomb_threshold,value_else=0\nactions.fs+=/variable,name=can_spbomb_one_gcd,op=setif,condition=talent.spirit_bomb,value=(soul_fragments+variable.num_spawnable_souls)>=variable.spbomb_threshold,value_else=0\nactions.fs+=/variable,name=spburst_threshold,op=setif,condition=talent.fiery_demise&dot.fiery_brand.ticking,value=(variable.single_target*5)+(variable.small_aoe*5)+(variable.big_aoe*4),value_else=(variable.single_target*5)+(variable.small_aoe*5)+(variable.big_aoe*4)\nactions.fs+=/variable,name=can_spburst,op=setif,condition=talent.spirit_bomb,value=soul_fragments>=variable.spburst_threshold,value_else=0\nactions.fs+=/variable,name=can_spburst_soon,op=setif,condition=talent.spirit_bomb,value=soul_fragments>=variable.spburst_threshold,value_else=0\nactions.fs+=/variable,name=can_spburst_one_gcd,op=setif,condition=talent.spirit_bomb,value=(soul_fragments+variable.num_spawnable_souls)>=variable.spburst_threshold,value_else=0\nactions.fs+=/variable,name=meta_prep_time,op=set,value=0\nactions.fs+=/variable,name=meta_prep_time,op=add,value=action.fiery_brand.execute_time,if=talent.fiery_demise&cooldown.fiery_brand.up\nactions.fs+=/variable,name=meta_prep_time,op=add,value=action.sigil_of_flame.execute_time*action.sigil_of_flame.charges\nactions.fs+=/variable,name=dont_soul_cleave,op=setif,condition=buff.metamorphosis.up&buff.demonsurge_hardcast.up,value=buff.demonsurge_spirit_burst.up||(buff.metamorphosis.remains<(gcd.max*2)&((fury+variable.fel_dev_passive_fury_gen)<120||!(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4))),value_else=(cooldown.fel_devastation.remains<(gcd.max*3)&((fury+variable.fel_dev_passive_fury_gen)<120)!(variable.can_spburst||variable.can_spburst_soon||soul_fragments>=4)))\nactions.fs+=/variable,name=fiery_brand_back_before_meta,op=setif,condition=talent.down_in_flames,value=charges>=max_charges||(charges_fractional>=1&cooldown.fiery_brand.full_recharge_time<=gcd.remains+execute_time)||(charges_fractional>=1&((1-(charges_fractional-1))*cooldown.fiery_brand.duration)<=cooldown.metamorphosis.remains),value_else=(cooldown.fiery_brand.duration<=cooldown.metamorphosis.remains)\nactions.fs+=/variable,name=hold_sof_for_meta,op=setif,condition=talent.illuminated_sigils,value=(charges_fractional>=1&((1-(charges_fractional-1))*cooldown.sigil_of_flame.duration)>cooldown.metamorphosis.remains),value_else=cooldown.sigil_of_flame.duration>cooldown.metamorphosis.remains\nactions.fs+=/variable,name=hold_sof_for_fel_dev,op=setif,condition=talent.illuminated_sigils,value=(charges_fractional>=1&((1-(charges_fractional-1))*cooldown.sigil_of_flame.duration)>cooldown.fel_devastation.remains),value_else=cooldown.sigil_of_flame.duration>cooldown.fel_devastation.remains\nactions.fs+=/variable,name=hold_sof_for_student,op=setif,condition=talent.student_of_suffering,value=prev_gcd.1.sigil_of_flame||(buff.student_of_suffering.remains>(4-talent.quickened_sigils)),value_else=0\nactions.fs+=/variable,name=hold_sof_for_dot,op=setif,condition=talent.ascending_flame,value=0,value_else=prev_gcd.1.sigil_of_flame||(dot.sigil_of_flame.remains>(4-talent.quickened_sigils))\nactions.fs+=/variable,name=hold_sof_for_precombat,value=(talent.illuminated_sigils&time<(2-talent.quickened_sigils))\nactions.fs+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs||(variable.trinket_1_buffs&((buff.metamorphosis.up&buff.demonsurge_hardcast.up)||(buff.metamorphosis.up&!buff.demonsurge_hardcast.up&cooldown.metamorphosis.remains<10)||(cooldown.metamorphosis.remains>trinket.1.cooldown.duration)||(variable.trinket_2_buffs&trinket.2.cooldown.remains<cooldown.metamorphosis.remains)))\nactions.fs+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs||(variable.trinket_2_buffs&((buff.metamorphosis.up&buff.demonsurge_hardcast.up)||(buff.metamorphosis.up&!buff.demonsurge_hardcast.up&cooldown.metamorphosis.remains<10)||(cooldown.metamorphosis.remains>trinket.2.cooldown.duration)||(variable.trinket_1_buffs&trinket.1.cooldown.remains<cooldown.metamorphosis.remains)))\nactions.fs+=/immolation_aura,if=time<4\nactions.fs+=/immolation_aura,if=!(cooldown.metamorphosis.up&prev_gcd.1.sigil_of_flame)&!(talent.fallout&talent.spirit_bomb&spell_targets.spirit_bomb>=3&((buff.metamorphosis.up&(variable.can_spburst||variable.can_spburst_soon))||(!buff.metamorphosis.up&(variable.can_spbomb||variable.can_spbomb_soon))))&!(buff.metamorphosis.up&buff.demonsurge_hardcast.up)\nactions.fs+=/sigil_of_flame,if=!talent.student_of_suffering&!variable.hold_sof_for_dot&!variable.hold_sof_for_precombat\nactions.fs+=/sigil_of_flame,if=!variable.hold_sof_for_precombat&(charges=max_charges||(!variable.hold_sof_for_student&!variable.hold_sof_for_dot&!variable.hold_sof_for_meta&!variable.hold_sof_for_fel_dev))\nactions.fs+=/fiery_brand,if=active_dot.fiery_brand=0&(!talent.fiery_demise||((talent.down_in_flames&charges>=max_charges)||variable.fiery_brand_back_before_meta))\nactions.fs+=/call_action_list,name=fs_execute,if=fight_remains<20\nactions.fs+=/run_action_list,name=fel_dev,if=buff.metamorphosis.up&!buff.demonsurge_hardcast.up&(buff.demonsurge_soul_sunder.up||buff.demonsurge_spirit_burst.up)\nactions.fs+=/run_action_list,name=metamorphosis,strict=1,if=buff.metamorphosis.up&buff.demonsurge_hardcast.up\nactions.fs+=/run_action_list,name=fel_dev_prep,if=!buff.demonsurge_hardcast.up&(cooldown.fel_devastation.up||(cooldown.fel_devastation.remains<=(gcd.max*3)))\nactions.fs+=/run_action_list,name=meta_prep,if=(cooldown.metamorphosis.remains<=variable.meta_prep_time)&!cooldown.fel_devastation.up&!cooldown.fel_devastation.remains<10&!buff.demonsurge_soul_sunder.up&!buff.demonsurge_spirit_burst.up\nactions.fs+=/the_hunt\nactions.fs+=/felblade,if=((cooldown.sigil_of_spite.remains<execute_time||cooldown.soul_carver.remains<execute_time)&cooldown.fel_devastation.remains<(execute_time+gcd.max)&fury<50)\nactions.fs+=/soul_carver,if=(!talent.fiery_demise||talent.fiery_demise&dot.fiery_brand.ticking)&((!talent.spirit_bomb||variable.single_target)||(talent.spirit_bomb&!prev_gcd.1.sigil_of_spite&((soul_fragments+3<=5&fury>=40)||(soul_fragments=0&fury>=15))))\nactions.fs+=/sigil_of_spite,if=(!talent.cycle_of_binding||(cooldown.sigil_of_spite.duration<(cooldown.metamorphosis.remains+18)))&(!talent.spirit_bomb||(fury>=80&(variable.can_spbomb||variable.can_spbomb_soon))||(soul_fragments<=(2-talent.soul_sigils.rank)))\nactions.fs+=/spirit_burst,if=variable.can_spburst&talent.fiery_demise&dot.fiery_brand.ticking&cooldown.fel_devastation.remains>=(gcd.max*3)\nactions.fs+=/spirit_bomb,if=variable.can_spbomb&talent.fiery_demise&dot.fiery_brand.ticking&cooldown.fel_devastation.remains>=(gcd.max*3)\nactions.fs+=/soul_sunder,if=variable.single_target&!variable.dont_soul_cleave\nactions.fs+=/soul_cleave,if=variable.single_target&!variable.dont_soul_cleave\nactions.fs+=/spirit_burst,if=variable.can_spburst&cooldown.fel_devastation.remains>=(gcd.max*3)\nactions.fs+=/spirit_bomb,if=variable.can_spbomb&cooldown.fel_devastation.remains>=(gcd.max*3)\nactions.fs+=/felblade,if=((fury<40&((buff.metamorphosis.up&(variable.can_spburst||variable.can_spburst_soon))||(!buff.metamorphosis.up&(variable.can_spbomb||variable.can_spbomb_soon)))))\nactions.fs+=/fracture,if=((fury<40&((buff.metamorphosis.up&(variable.can_spburst||variable.can_spburst_soon))||(!buff.metamorphosis.up&(variable.can_spbomb||variable.can_spbomb_soon))))||(buff.metamorphosis.up&variable.can_spburst_one_gcd)||(!buff.metamorphosis.up&variable.can_spbomb_one_gcd))\nactions.fs+=/felblade,if=fury.deficit>=40\nactions.fs+=/soul_sunder,if=!variable.dont_soul_cleave\nactions.fs+=/soul_cleave,if=!variable.dont_soul_cleave\nactions.fs+=/fracture\nactions.fs+=/throw_glaive\n\nactions.fs_execute+=/metamorphosis,use_off_gcd=1\nactions.fs_execute+=/the_hunt\nactions.fs_execute+=/sigil_of_flame\nactions.fs_execute+=/fiery_brand\nactions.fs_execute+=/sigil_of_spite\nactions.fs_execute+=/soul_carver\nactions.fs_execute+=/fel_devastation\n\nactions.meta_prep+=/metamorphosis,use_off_gcd=1,if=cooldown.sigil_of_flame.charges<1\nactions.meta_prep+=/fiery_brand,if=talent.fiery_demise&((talent.down_in_flames&charges>=max_charges)||active_dot.fiery_brand=0)\nactions.meta_prep+=/potion,use_off_gcd=1\nactions.meta_prep+=/sigil_of_flame\n\n## actions.metamorphosis+=/call_action_list,name=externals\nactions.metamorphosis+=/fel_desolation,if=buff.metamorphosis.remains<(gcd.max*3)\nactions.metamorphosis+=/felblade,if=fury<50&(buff.metamorphosis.remains<(gcd.max*3))&cooldown.fel_desolation.up\nactions.metamorphosis+=/fracture,if=fury<50&!cooldown.felblade.up&(buff.metamorphosis.remains<(gcd.max*3))&cooldown.fel_desolation.up\nactions.metamorphosis+=/sigil_of_doom,if=talent.illuminated_sigils&talent.cycle_of_binding&charges=max_charges\nactions.metamorphosis+=/immolation_aura\nactions.metamorphosis+=/sigil_of_doom,if=!talent.student_of_suffering&(talent.ascending_flame||(!talent.ascending_flame&!prev_gcd.1.sigil_of_doom&(dot.sigil_of_doom.remains<(4-talent.quickened_sigils))))\nactions.metamorphosis+=/sigil_of_doom,if=talent.student_of_suffering&!prev_gcd.1.sigil_of_flame&!prev_gcd.1.sigil_of_doom&(buff.student_of_suffering.remains<(4-talent.quickened_sigils))\nactions.metamorphosis+=/sigil_of_doom,if=buff.metamorphosis.remains<((2-talent.quickened_sigils)+(charges*gcd.max))\nactions.metamorphosis+=/fel_desolation,if=soul_fragments<=3&(soul_fragments>=2||prev_gcd.1.sigil_of_spite)\nactions.metamorphosis+=/felblade,if=((cooldown.sigil_of_spite.remains<execute_time||cooldown.soul_carver.remains<execute_time)&cooldown.fel_desolation.remains<(execute_time+gcd.max)&fury<50)\nactions.metamorphosis+=/soul_carver,if=(!talent.spirit_bomb||(variable.single_target&!buff.demonsurge_spirit_burst.up))||(((soul_fragments+3)<=6)&fury>=40&!prev_gcd.1.sigil_of_spite)\nactions.metamorphosis+=/sigil_of_spite,if=!talent.spirit_bomb||(fury>=80&(variable.can_spburst||variable.can_spburst_soon))||(soul_fragments<=(2-talent.soul_sigils.rank))\nactions.metamorphosis+=/spirit_burst,if=variable.can_spburst&buff.demonsurge_spirit_burst.up\nactions.metamorphosis+=/fel_desolation\nactions.metamorphosis+=/the_hunt\nactions.metamorphosis+=/soul_sunder,if=buff.demonsurge_soul_sunder.up&!buff.demonsurge_spirit_burst.up&!variable.can_spburst_one_gcd\nactions.metamorphosis+=/spirit_burst,if=variable.can_spburst&(talent.fiery_demise&dot.fiery_brand.ticking||variable.big_aoe)&buff.metamorphosis.remains>(gcd.max*2)\nactions.metamorphosis+=/felblade,if=fury<40&(variable.can_spburst||variable.can_spburst_soon)&(buff.demonsurge_spirit_burst.up||talent.fiery_demise&dot.fiery_brand.ticking||variable.big_aoe)\nactions.metamorphosis+=/fracture,if=fury<40&(variable.can_spburst||variable.can_spburst_soon||variable.can_spburst_one_gcd)&(buff.demonsurge_spirit_burst.up||talent.fiery_demise&dot.fiery_brand.ticking||variable.big_aoe)\nactions.metamorphosis+=/fracture,if=variable.can_spburst_one_gcd&(buff.demonsurge_spirit_burst.up||variable.big_aoe)&!prev_gcd.1.fracture\nactions.metamorphosis+=/soul_sunder,if=variable.single_target&!variable.dont_soul_cleave\nactions.metamorphosis+=/spirit_burst,if=variable.can_spburst&buff.metamorphosis.remains>(gcd.max*2)\nactions.metamorphosis+=/felblade,if=fury.deficit>=40\nactions.metamorphosis+=/soul_sunder,if=!variable.dont_soul_cleave&!(variable.big_aoe&(variable.can_spburst||variable.can_spburst_soon))\nactions.metamorphosis+=/felblade\nactions.metamorphosis+=/fracture,if=!prev_gcd.1.fracture\n\nactions.rg_overflow+=/variable,name=trigger_overflow,op=set,value=1\nactions.rg_overflow+=/variable,name=rg_enhance_cleave,op=set,value=1\nactions.rg_overflow+=/reavers_glaive,if=(fury+(variable.rg_enhance_cleave*25)+(talent.keen_engagement*20))>=30&!buff.rending_strike.up&!buff.glaive_flurry.up\nactions.rg_overflow+=/call_action_list,name=rg_prep,if=(fury+(variable.rg_enhance_cleave*25)+(talent.keen_engagement*20))<30\n\nactions.rg_prep+=/felblade\nactions.rg_prep+=/vengeful_retreat,use_off_gcd=1,if=!cooldown.felblade.up&talent.unhindered_assault\nactions.rg_prep+=/sigil_of_flame\nactions.rg_prep+=/immolation_aura\nactions.rg_prep+=/fracture\n\nactions.rg_sequence+=/variable,name=double_rm_expires,value=time+action.fracture.execute_time+20,if=!buff.glaive_flurry.up&buff.rending_strike.up\nactions.rg_sequence+=/call_action_list,name=rg_sequence_filler,if=(fury<30&((!variable.rg_enhance_cleave&buff.glaive_flurry.up&buff.rending_strike.up)||(variable.rg_enhance_cleave&!buff.rending_strike.up)))||(action.fracture.charges_fractional<1&((variable.rg_enhance_cleave&buff.rending_strike.up&buff.glaive_flurry.up)||(!variable.rg_enhance_cleave&!buff.glaive_flurry.up)))\nactions.rg_sequence+=/fracture,if=((variable.rg_enhance_cleave&buff.rending_strike.up&buff.glaive_flurry.up)||(!variable.rg_enhance_cleave&!buff.glaive_flurry.up))\nactions.rg_sequence+=/shear,if=((variable.rg_enhance_cleave&buff.rending_strike.up&buff.glaive_flurry.up)||(!variable.rg_enhance_cleave&!buff.glaive_flurry.up))\nactions.rg_sequence+=/soul_cleave,if=((!variable.rg_enhance_cleave&buff.glaive_flurry.up&buff.rending_strike.up)||(variable.rg_enhance_cleave&!buff.rending_strike.up))\n\nactions.rg_sequence_filler+=/felblade\nactions.rg_sequence_filler+=/fracture,if=!buff.rending_strike.up\n## actions.rg_sequence_filler+=/wait,sec=0.1,if=action.fracture.charges_fractional>=0.8&((variable.rg_enhance_cleave&buff.rending_strike.up&buff.glaive_flurry.up)||(!variable.rg_enhance_cleave&!buff.glaive_flurry.up))\nactions.rg_sequence_filler+=/sigil_of_flame\nactions.rg_sequence_filler+=/sigil_of_spite\nactions.rg_sequence_filler+=/soul_carver\nactions.rg_sequence_filler+=/fel_devastation\nactions.rg_sequence_filler+=/throw_glaive",
|
|
["version"] = 20241029,
|
|
["warnings"] = "The import for 'rg_prep' required some automated changes.\nLine 2: Converted 'talent.unhindered_assault' to 'talent.unhindered_assault.enabled' (1x).\n\nThe import for 'fs' required some automated changes.\nLine 1: Converted 'talent.aura_of_pain' to 'talent.aura_of_pain.enabled' (1x).\nLine 1: Converted operations in '(action.sigil_of_flame.crit_pct+(talent.aura_of_pain.enabled*6))%100' to '(action.sigil_of_flame.crit_pct+(talent.aura_of_pain.enabled*6))/100'.\nLine 1: Converted 'talent.volatile_flameblood' to 'talent.volatile_flameblood.enabled' (1x).\nLine 3: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 8: Converted 'talent.flames_of_fury' to 'talent.flames_of_fury.enabled' (1x).\nLine 11: Converted 'talent.volatile_flameblood' to 'talent.volatile_flameblood.enabled' (1x).\nLine 13: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 14: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 15: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 16: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 17: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 18: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 19: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 20: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 22: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 25: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\nLine 26: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 27: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 28: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 28: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 29: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 29: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 30: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 30: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 31: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 31: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 31: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 31: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 32: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 32: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 32: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 32: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 34: Converted 'talent.fallout' to 'talent.fallout.enabled' (1x).\nLine 34: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 35: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 37: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 37: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\nLine 45: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 45: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 45: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 45: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 46: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 46: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 47: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 48: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\n\nThe import for 'fel_dev' required some automated changes.\nLine 3: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\n\nThe import for 'rg_overflow' required some automated changes.\nLine 3: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 4: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\n\nThe import for 'metamorphosis' required some automated changes.\nLine 4: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 4: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 6: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 6: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 6: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 6: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 7: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 7: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 8: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 11: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 12: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 17: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 18: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 19: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 4: Converted 'talent.soul_sigils' to 'talent.soul_sigils.enabled' (1x).\nLine 5: Converted 'talent.fracture' to 'talent.fracture.enabled' (1x).\nLine 6: Converted 'talent.fracture' to 'talent.fracture.enabled' (1x).\nLine 7: Converted 'talent.soul_carver' to 'talent.soul_carver.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.agility' to 'trinket.t1.has_buff.agility' (1x).\nLine 4: Converted 'trinket.1.has_buff.agility' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 4: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 4: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 4: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 4: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.agility' to 'trinket.t2.has_buff.agility' (1x).\nLine 5: Converted 'trinket.2.has_buff.agility' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 5: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 5: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 5: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 5: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\nLine 7: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'meta_prep' required some automated changes.\nLine 2: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 2: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\n\nThe import for 'ar' required some automated changes.\nLine 1: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 2: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 3: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 4: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 10: Converted 'talent.soul_sigils' to 'talent.soul_sigils.enabled' (1x).\nLine 10: Converted 'talent.soul_sigils' to 'talent.soul_sigils.enabled' (1x).\nLine 19: Converted 'talent.fallout' to 'talent.fallout.enabled' (1x).\nLine 21: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 21: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 27: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 28: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 29: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 29: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\nLine 29: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 33: Converted 'talent.unhindered_assault' to 'talent.unhindered_assault.enabled' (1x).\nLine 38: Converted 'talent.unhindered_assault' to 'talent.unhindered_assault.enabled' (1x).\n\nThe import for 'fel_dev_prep' required some automated changes.\nLine 3: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 5: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 6: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\n\nThe import for 'ar_execute' required some automated changes.\nLine 2: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 3: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\n\nImported 14 action lists.\n",
|
|
["lists"] = {
|
|
["rg_prep"] = {
|
|
{
|
|
["action"] = "felblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! cooldown.felblade.up & talent.unhindered_assault.enabled",
|
|
["action"] = "vengeful_retreat",
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "immolation_aura",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fracture",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["fs"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( action.sigil_of_flame.crit_pct + ( talent.aura_of_pain.enabled * 6 ) ) / 100",
|
|
["var_name"] = "crit_pct",
|
|
["criteria"] = "active_dot.sigil_of_flame > 0 & talent.volatile_flameblood.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2 + ( 2 * gcd.max )",
|
|
["var_name"] = "fel_dev_sequence_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "gcd.max",
|
|
["var_name"] = "fel_dev_sequence_time",
|
|
["criteria"] = "talent.fiery_demise.enabled & cooldown.fiery_brand.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "gcd.max",
|
|
["var_name"] = "fel_dev_sequence_time",
|
|
["criteria"] = "cooldown.sigil_of_flame.up || cooldown.sigil_of_flame.remains < variable.fel_dev_sequence_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "gcd.max",
|
|
["var_name"] = "fel_dev_sequence_time",
|
|
["criteria"] = "cooldown.immolation_aura.up || cooldown.immolation_aura.remains < variable.fel_dev_sequence_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "2.5 * floor ( ( buff.student_of_suffering.remains >? variable.fel_dev_sequence_time ) )",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
["criteria"] = "talent.student_of_suffering.enabled & ( buff.student_of_suffering.remains > 1 || prev_gcd.1.sigil_of_flame )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "30 + ( 2 * talent.flames_of_fury.enabled * spell_targets.sigil_of_flame )",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
["criteria"] = "( cooldown.sigil_of_flame.remains < variable.fel_dev_sequence_time )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "8",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
["criteria"] = "cooldown.immolation_aura.remains < variable.fel_dev_sequence_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "2 * floor ( ( buff.immolation_aura.remains >? variable.fel_dev_sequence_time ) )",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
["criteria"] = "buff.immolation_aura.remains > 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "7.5 * variable.crit_pct * floor ( ( buff.immolation_aura.remains >? variable.fel_dev_sequence_time ) )",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
["criteria"] = "talent.volatile_flameblood.enabled & buff.immolation_aura.remains > 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "22",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
["criteria"] = "talent.darkglare_boon.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "spbomb_threshold",
|
|
["value"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
["value_else"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
["criteria"] = "talent.fiery_demise.enabled & dot.fiery_brand.ticking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spbomb",
|
|
["value"] = "soul_fragments >= variable.spbomb_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spbomb_soon",
|
|
["value"] = "soul_fragments >= variable.spbomb_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spbomb_one_gcd",
|
|
["value"] = "( soul_fragments + variable.num_spawnable_souls ) >= variable.spbomb_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "spburst_threshold",
|
|
["value"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
["value_else"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
["criteria"] = "talent.fiery_demise.enabled & dot.fiery_brand.ticking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spburst",
|
|
["value"] = "soul_fragments >= variable.spburst_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spburst_soon",
|
|
["value"] = "soul_fragments >= variable.spburst_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spburst_one_gcd",
|
|
["value"] = "( soul_fragments + variable.num_spawnable_souls ) >= variable.spburst_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "meta_prep_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.fiery_brand.execute_time",
|
|
["var_name"] = "meta_prep_time",
|
|
["criteria"] = "talent.fiery_demise.enabled & cooldown.fiery_brand.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.sigil_of_flame.execute_time * action.sigil_of_flame.charges",
|
|
["var_name"] = "meta_prep_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "dont_soul_cleave",
|
|
["value"] = "buff.demonsurge_spirit_burst.up || ( buff.metamorphosis.remains < ( gcd.max * 2 ) & ( ( fury + variable.fel_dev_passive_fury_gen ) < 120 || ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) ) )",
|
|
["value_else"] = "( cooldown.fel_devastation.remains < ( gcd.max * 3 ) & ( ( fury + variable.fel_dev_passive_fury_gen ) < 120 ) ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) ) )",
|
|
["criteria"] = "buff.metamorphosis.up & buff.demonsurge_hardcast.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "fiery_brand_back_before_meta",
|
|
["value"] = "charges >= max_charges || ( charges_fractional >= 1 & cooldown.fiery_brand.full_recharge_time <= gcd.remains + execute_time ) || ( charges_fractional >= 1 & ( ( 1 - ( charges_fractional - 1 ) ) * cooldown.fiery_brand.duration ) <= cooldown.metamorphosis.remains )",
|
|
["value_else"] = "( cooldown.fiery_brand.duration <= cooldown.metamorphosis.remains )",
|
|
["criteria"] = "talent.down_in_flames.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "hold_sof_for_meta",
|
|
["value"] = "( charges_fractional >= 1 & ( ( 1 - ( charges_fractional - 1 ) ) * cooldown.sigil_of_flame.duration ) > cooldown.metamorphosis.remains )",
|
|
["value_else"] = "cooldown.sigil_of_flame.duration > cooldown.metamorphosis.remains",
|
|
["criteria"] = "talent.illuminated_sigils.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "hold_sof_for_fel_dev",
|
|
["value"] = "( charges_fractional >= 1 & ( ( 1 - ( charges_fractional - 1 ) ) * cooldown.sigil_of_flame.duration ) > cooldown.fel_devastation.remains )",
|
|
["value_else"] = "cooldown.sigil_of_flame.duration > cooldown.fel_devastation.remains",
|
|
["criteria"] = "talent.illuminated_sigils.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "hold_sof_for_student",
|
|
["value"] = "prev_gcd.1.sigil_of_flame || ( buff.student_of_suffering.remains > ( 4 - talent.quickened_sigils.enabled ) )",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.student_of_suffering.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "hold_sof_for_dot",
|
|
["value"] = "0",
|
|
["value_else"] = "prev_gcd.1.sigil_of_flame || ( dot.sigil_of_flame.remains > ( 4 - talent.quickened_sigils.enabled ) )",
|
|
["criteria"] = "talent.ascending_flame.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( talent.illuminated_sigils.enabled & time < ( 2 - talent.quickened_sigils.enabled ) )",
|
|
["var_name"] = "hold_sof_for_precombat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_1_buffs || ( variable.trinket_1_buffs & ( ( buff.metamorphosis.up & buff.demonsurge_hardcast.up ) || ( buff.metamorphosis.up & ! buff.demonsurge_hardcast.up & cooldown.metamorphosis.remains < 10 ) || ( cooldown.metamorphosis.remains > trinket.t1.cooldown.duration ) || ( variable.trinket_2_buffs & trinket.t2.cooldown.remains < cooldown.metamorphosis.remains ) ) )",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_2_buffs || ( variable.trinket_2_buffs & ( ( buff.metamorphosis.up & buff.demonsurge_hardcast.up ) || ( buff.metamorphosis.up & ! buff.demonsurge_hardcast.up & cooldown.metamorphosis.remains < 10 ) || ( cooldown.metamorphosis.remains > trinket.t2.cooldown.duration ) || ( variable.trinket_1_buffs & trinket.t1.cooldown.remains < cooldown.metamorphosis.remains ) ) )",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time < 4",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ( cooldown.metamorphosis.up & prev_gcd.1.sigil_of_flame ) & ! ( talent.fallout.enabled & talent.spirit_bomb.enabled & spell_targets.spirit_bomb >= 3 & ( ( buff.metamorphosis.up & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( ! buff.metamorphosis.up & ( variable.can_spbomb || variable.can_spbomb_soon ) ) ) ) & ! ( buff.metamorphosis.up & buff.demonsurge_hardcast.up )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.student_of_suffering.enabled & ! variable.hold_sof_for_dot & ! variable.hold_sof_for_precombat",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.hold_sof_for_precombat & ( charges = max_charges || ( ! variable.hold_sof_for_student & ! variable.hold_sof_for_dot & ! variable.hold_sof_for_meta & ! variable.hold_sof_for_fel_dev ) )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.fiery_brand = 0 & ( ! talent.fiery_demise.enabled || ( ( talent.down_in_flames.enabled & charges >= max_charges ) || variable.fiery_brand_back_before_meta ) )",
|
|
["action"] = "fiery_brand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "fight_remains < 20",
|
|
["list_name"] = "fs_execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "buff.metamorphosis.up & ! buff.demonsurge_hardcast.up & ( buff.demonsurge_soul_sunder.up || buff.demonsurge_spirit_burst.up )",
|
|
["list_name"] = "fel_dev",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "buff.metamorphosis.up & buff.demonsurge_hardcast.up",
|
|
["list_name"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "! buff.demonsurge_hardcast.up & ( cooldown.fel_devastation.up || ( cooldown.fel_devastation.remains <= ( gcd.max * 3 ) ) )",
|
|
["list_name"] = "fel_dev_prep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "( cooldown.metamorphosis.remains <= variable.meta_prep_time ) & ! cooldown.fel_devastation.up & ! cooldown.fel_devastation.remains < 10 & ! buff.demonsurge_soul_sunder.up & ! buff.demonsurge_spirit_burst.up",
|
|
["list_name"] = "meta_prep",
|
|
},
|
|
{
|
|
["action"] = "the_hunt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( cooldown.sigil_of_spite.remains < execute_time || cooldown.soul_carver.remains < execute_time ) & cooldown.fel_devastation.remains < ( execute_time + gcd.max ) & fury < 50 )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.fiery_demise.enabled || talent.fiery_demise.enabled & dot.fiery_brand.ticking ) & ( ( ! talent.spirit_bomb.enabled || variable.single_target ) || ( talent.spirit_bomb.enabled & ! prev_gcd.1.sigil_of_spite & ( ( soul_fragments + 3 <= 5 & fury >= 40 ) || ( soul_fragments = 0 & fury >= 15 ) ) ) )",
|
|
["action"] = "soul_carver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.cycle_of_binding.enabled || ( cooldown.sigil_of_spite.duration < ( cooldown.metamorphosis.remains + 18 ) ) ) & ( ! talent.spirit_bomb.enabled || ( fury >= 80 & ( variable.can_spbomb || variable.can_spbomb_soon ) ) || ( soul_fragments <= ( 2 - talent.soul_sigils.rank ) ) )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst & talent.fiery_demise.enabled & dot.fiery_brand.ticking & cooldown.fel_devastation.remains >= ( gcd.max * 3 )",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spbomb & talent.fiery_demise.enabled & dot.fiery_brand.ticking & cooldown.fel_devastation.remains >= ( gcd.max * 3 )",
|
|
["action"] = "spirit_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.single_target & ! variable.dont_soul_cleave",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.single_target & ! variable.dont_soul_cleave",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst & cooldown.fel_devastation.remains >= ( gcd.max * 3 )",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spbomb & cooldown.fel_devastation.remains >= ( gcd.max * 3 )",
|
|
["action"] = "spirit_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( fury < 40 & ( ( buff.metamorphosis.up & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( ! buff.metamorphosis.up & ( variable.can_spbomb || variable.can_spbomb_soon ) ) ) ) )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( fury < 40 & ( ( buff.metamorphosis.up & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( ! buff.metamorphosis.up & ( variable.can_spbomb || variable.can_spbomb_soon ) ) ) ) || ( buff.metamorphosis.up & variable.can_spburst_one_gcd ) || ( ! buff.metamorphosis.up & variable.can_spbomb_one_gcd ) )",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit >= 40",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.dont_soul_cleave",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.dont_soul_cleave",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
{
|
|
["action"] = "fracture",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "throw_glaive",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["ar_execute"] = {
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "metamorphosis",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) >= 30 & ! ( buff.rending_strike.up || buff.glaive_flurry.up )",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "buff.reavers_glaive.up & ( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) < 30",
|
|
["list_name"] = "rg_prep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.reavers_glaive.up",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets >= 3 & buff.art_of_the_glaive.stack >= 20",
|
|
["action"] = "bulk_extraction",
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fiery_brand",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sigil_of_spite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soul_carver",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fel_devastation",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["fel_dev"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge_spirit_burst.up & ( variable.can_spburst || soul_fragments >= 4 || ( buff.metamorphosis.remains < ( gcd.max * 2 ) ) )",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge_soul_sunder.up & ( ! buff.demonsurge_spirit_burst.up || ( buff.metamorphosis.remains < ( gcd.max * 2 ) ) )",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.cycle_of_binding.enabled || ( cooldown.sigil_of_spite.duration < ( cooldown.metamorphosis.remains + 18 ) ) ) & ( soul_fragments <= 2 & buff.demonsurge_spirit_burst.up )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_fragments <= 2 & ! prev_gcd.1.sigil_of_spite & buff.demonsurge_spirit_burst.up",
|
|
["action"] = "soul_carver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_fragments <= 2 & buff.demonsurge_spirit_burst.up",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge_spirit_burst.up || buff.demonsurge_soul_sunder.up",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge_spirit_burst.up || buff.demonsurge_soul_sunder.up",
|
|
["action"] = "fracture",
|
|
},
|
|
},
|
|
["fel_dev_prep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "prev_gcd.1.fiery_brand",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.hold_sof_for_precombat & ! variable.hold_sof_for_student & ! variable.hold_sof_for_dot",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fiery_demise.enabled & ( ( fury + variable.fel_dev_passive_fury_gen ) >= 120 ) & ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) & active_dot.fiery_brand = 0 & ( ( cooldown.metamorphosis.remains < ( execute_time + action.fel_devastation.execute_time + ( gcd.max * 2 ) ) ) || variable.fiery_brand_back_before_meta )",
|
|
["action"] = "fiery_brand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( fury + variable.fel_dev_passive_fury_gen ) >= 120 ) & ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 )",
|
|
["action"] = "fel_devastation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.cycle_of_binding.enabled || ( cooldown.sigil_of_spite.duration < ( cooldown.metamorphosis.remains + 18 ) ) ) & ( soul_fragments <= 1 || ( ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) & action.fracture.charges_fractional < 1 ) )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.cycle_of_binding.enabled || cooldown.metamorphosis.remains > 20 ) & ( soul_fragments <= 1 || ( ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) & action.fracture.charges_fractional < 1 ) ) & ! prev_gcd.1.sigil_of_spite & ! prev_gcd.2.sigil_of_spite",
|
|
["action"] = "soul_carver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( fury + variable.fel_dev_passive_fury_gen ) < 120 & ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) || ( fury + variable.fel_dev_passive_fury_gen ) < 120",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["action"] = "felblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fracture",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fel_devastation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( fury + variable.fel_dev_passive_fury_gen ) >= 150 )",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
{
|
|
["action"] = "throw_glaive",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["fs_execute"] = {
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "metamorphosis",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "the_hunt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fiery_brand",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sigil_of_spite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soul_carver",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fel_devastation",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["ar"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "spb_threshold",
|
|
["value"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
["value_else"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
["criteria"] = "talent.fiery_demise.enabled & dot.fiery_brand.ticking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spb",
|
|
["value"] = "soul_fragments >= variable.spb_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spb_soon",
|
|
["value"] = "soul_fragments >= variable.spb_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spb_one_gcd",
|
|
["value"] = "( soul_fragments + variable.num_spawnable_souls ) >= variable.spb_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "double_rm_remains",
|
|
["value"] = "variable.double_rm_expires - time",
|
|
["value_else"] = "0",
|
|
["criteria"] = "( variable.double_rm_expires - time ) > 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "trigger_overflow",
|
|
["criteria"] = "! buff.glaive_flurry.up & ! buff.rending_strike.up & ! prev_gcd.1.reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "rg_enhance_cleave",
|
|
["value"] = "1",
|
|
["value_else"] = "0",
|
|
["criteria"] = "variable.trigger_overflow || ( spell_targets.spirit_bomb >= 4 ) || ( fight_remains < 10 || target.time_to_die < 10 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "soul_fragments + buff.art_of_the_glaive.stack",
|
|
["var_name"] = "souls_before_next_rg_sequence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "( 1.1 * ( 1 + stat.haste ) ) * ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) )",
|
|
["var_name"] = "souls_before_next_rg_sequence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "3 + talent.soul_sigils.enabled",
|
|
["var_name"] = "souls_before_next_rg_sequence",
|
|
["criteria"] = "cooldown.sigil_of_spite.remains < ( variable.double_rm_remains - gcd.max - ( 2 - talent.soul_sigils.enabled ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "3",
|
|
["var_name"] = "souls_before_next_rg_sequence",
|
|
["criteria"] = "cooldown.soul_carver.remains < ( variable.double_rm_remains - gcd.max )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "3",
|
|
["var_name"] = "souls_before_next_rg_sequence",
|
|
["criteria"] = "cooldown.soul_carver.remains < ( variable.double_rm_remains - gcd.max - 3 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_1_buffs || ( variable.trinket_1_buffs & ( ( buff.rending_strike.up & buff.glaive_flurry.up ) || ( prev_gcd.1.reavers_glaive ) || ( buff.thrill_of_the_fight_damage.remains > 8 ) || ( buff.reavers_glaive.up & cooldown.the_hunt.remains < 5 ) ) )",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_2_buffs || ( variable.trinket_2_buffs & ( ( buff.rending_strike.up & buff.glaive_flurry.up ) || ( prev_gcd.1.reavers_glaive ) || ( buff.thrill_of_the_fight_damage.remains > 8 ) || ( buff.reavers_glaive.up & cooldown.the_hunt.remains < 5 ) ) )",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "( buff.rending_strike.up & buff.glaive_flurry.up ) || prev_gcd.1.reavers_glaive",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "buff.glaive_flurry.up || buff.rending_strike.up || prev_gcd.1.reavers_glaive",
|
|
["list_name"] = "rg_sequence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "time < 5 || cooldown.fel_devastation.remains >= 20",
|
|
["action"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.reavers_glaive.up & ( buff.art_of_the_glaive.stack + soul_fragments ) < 20",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spb & ( soul_fragments > 2 || prev_gcd.1.sigil_of_spite || prev_gcd.1.soul_carver || ( spell_targets.spirit_bomb >= 4 & talent.fallout.enabled & cooldown.immolation_aura.remains < gcd.max ) )",
|
|
["action"] = "spirit_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( spell_targets.spirit_bomb >= 4 ) || ( ! buff.reavers_glaive.up || ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + gcd.max ) ) )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.ascending_flame.enabled || ( ! prev_gcd.1.sigil_of_flame & dot.sigil_of_flame.remains < ( 4 - talent.quickened_sigils.enabled ) ) ) & ( ! buff.reavers_glaive.up || ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + gcd.max ) ) )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "buff.reavers_glaive.up & spell_targets.spirit_bomb < 4 & debuff.reavers_mark.up & ( variable.double_rm_remains > ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) & ( ! buff.thrill_of_the_fight_damage.up || ( buff.thrill_of_the_fight_damage.remains < ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) > ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) & ( ( variable.souls_before_next_rg_sequence >= 20 ) || ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + cooldown.the_hunt.remains + action.the_hunt.execute_time ) ) )",
|
|
["list_name"] = "rg_overflow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "( fight_remains < 10 || target.time_to_die < 10 )",
|
|
["list_name"] = "ar_execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.reavers_glaive.up & ( variable.double_rm_remains <= ( execute_time + ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( soul_fragments < 3 & ( ( buff.art_of_the_glaive.stack + soul_fragments ) >= 20 ) )",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.reavers_glaive.up & ( variable.double_rm_remains <= ( execute_time + ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( ( buff.art_of_the_glaive.stack + soul_fragments ) >= 20 )",
|
|
["action"] = "spirit_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.reavers_glaive.up & ( variable.double_rm_remains <= ( execute_time + ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( ( buff.art_of_the_glaive.stack + ( spell_targets >? 5 ) ) >= 20 )",
|
|
["action"] = "bulk_extraction",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) >= 30 & ( ( ! buff.thrill_of_the_fight_attack_speed.up || ( variable.double_rm_remains <= ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) || ( spell_targets.spirit_bomb >= 4 ) ) & ! ( buff.rending_strike.up || buff.glaive_flurry.up )",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) < 30 & ( ( ! buff.thrill_of_the_fight_attack_speed.up || ( variable.double_rm_remains <= ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) || ( spell_targets.spirit_bomb >= 4 ) )",
|
|
["list_name"] = "rg_prep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.fiery_demise.enabled & active_dot.fiery_brand = 0 ) || ( talent.down_in_flames.enabled & ( full_recharge_time < gcd.max ) ) || ( talent.fiery_demise.enabled & active_dot.fiery_brand = 0 & ( buff.reavers_glaive.up || cooldown.the_hunt.remains < 5 || buff.art_of_the_glaive.stack >= 15 || buff.thrill_of_the_fight_damage.remains > 5 ) )",
|
|
["action"] = "fiery_brand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.thrill_of_the_fight_damage.up || ( fury >= 80 & ( variable.can_spb || variable.can_spb_soon ) ) || ( ( soul_fragments + buff.art_of_the_glaive.stack + ( ( 1.1 * ( 1 + raw_haste_pct ) ) * ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) ) < 20 )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spb",
|
|
["action"] = "spirit_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.can_spb || variable.can_spb_soon ) & fury < 40",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "( variable.can_spb || variable.can_spb_soon ) & fury < 40 & ! cooldown.felblade.up & talent.unhindered_assault.enabled",
|
|
["action"] = "vengeful_retreat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.can_spb || variable.can_spb_soon || variable.can_spb_one_gcd ) & fury < 40",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.thrill_of_the_fight_damage.up || ( ( soul_fragments + buff.art_of_the_glaive.stack + ( ( 1.1 * ( 1 + raw_haste_pct ) ) * ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) ) < 20 )",
|
|
["action"] = "soul_carver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.metamorphosis.up & ( ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + 2 ) ) || ( spell_targets.spirit_bomb >= 4 ) ) & ( ( action.fracture.full_recharge_time < ( 2 + gcd.max ) ) || ( ! variable.single_target & buff.thrill_of_the_fight_damage.up ) )",
|
|
["action"] = "fel_devastation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.fel_devastation.remains < gcd.max & fury < 50",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "cooldown.fel_devastation.remains < gcd.max & fury < 50 & ! cooldown.felblade.up & talent.unhindered_assault.enabled",
|
|
["action"] = "vengeful_retreat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.fel_devastation.remains < gcd.max & fury < 50",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( full_recharge_time < gcd.max ) || buff.metamorphosis.up || variable.can_spb || variable.can_spb_soon || buff.warblades_hunger.stack >= 5",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_fragments >= 1",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets >= 3",
|
|
["action"] = "bulk_extraction",
|
|
},
|
|
{
|
|
["action"] = "fracture",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soul_cleave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "shear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "felblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "throw_glaive",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["metamorphosis"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains < ( gcd.max * 3 )",
|
|
["action"] = "fel_desolation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury < 50 & ( buff.metamorphosis.remains < ( gcd.max * 3 ) ) & cooldown.fel_desolation.up",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury < 50 & ! cooldown.felblade.up & ( buff.metamorphosis.remains < ( gcd.max * 3 ) ) & cooldown.fel_desolation.up",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.illuminated_sigils.enabled & talent.cycle_of_binding.enabled & charges = max_charges",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["action"] = "immolation_aura",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.student_of_suffering.enabled & ( talent.ascending_flame.enabled || ( ! talent.ascending_flame.enabled & ! prev_gcd.1.sigil_of_doom & ( dot.sigil_of_doom.remains < ( 4 - talent.quickened_sigils.enabled ) ) ) )",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.student_of_suffering.enabled & ! prev_gcd.1.sigil_of_flame & ! prev_gcd.1.sigil_of_doom & ( buff.student_of_suffering.remains < ( 4 - talent.quickened_sigils.enabled ) )",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains < ( ( 2 - talent.quickened_sigils.enabled ) + ( charges * gcd.max ) )",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_fragments <= 3 & ( soul_fragments >= 2 || prev_gcd.1.sigil_of_spite )",
|
|
["action"] = "fel_desolation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( cooldown.sigil_of_spite.remains < execute_time || cooldown.soul_carver.remains < execute_time ) & cooldown.fel_desolation.remains < ( execute_time + gcd.max ) & fury < 50 )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.spirit_bomb.enabled || ( variable.single_target & ! buff.demonsurge_spirit_burst.up ) ) || ( ( ( soul_fragments + 3 ) <= 6 ) & fury >= 40 & ! prev_gcd.1.sigil_of_spite )",
|
|
["action"] = "soul_carver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.spirit_bomb.enabled || ( fury >= 80 & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( soul_fragments <= ( 2 - talent.soul_sigils.rank ) )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst & buff.demonsurge_spirit_burst.up",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["action"] = "fel_desolation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "the_hunt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge_soul_sunder.up & ! buff.demonsurge_spirit_burst.up & ! variable.can_spburst_one_gcd",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst & ( talent.fiery_demise.enabled & dot.fiery_brand.ticking || variable.big_aoe ) & buff.metamorphosis.remains > ( gcd.max * 2 )",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury < 40 & ( variable.can_spburst || variable.can_spburst_soon ) & ( buff.demonsurge_spirit_burst.up || talent.fiery_demise.enabled & dot.fiery_brand.ticking || variable.big_aoe )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury < 40 & ( variable.can_spburst || variable.can_spburst_soon || variable.can_spburst_one_gcd ) & ( buff.demonsurge_spirit_burst.up || talent.fiery_demise.enabled & dot.fiery_brand.ticking || variable.big_aoe )",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst_one_gcd & ( buff.demonsurge_spirit_burst.up || variable.big_aoe ) & ! prev_gcd.1.fracture",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.single_target & ! variable.dont_soul_cleave",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst & buff.metamorphosis.remains > ( gcd.max * 2 )",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit >= 40",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.dont_soul_cleave & ! ( variable.big_aoe & ( variable.can_spburst || variable.can_spburst_soon ) )",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["action"] = "felblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! prev_gcd.1.fracture",
|
|
["action"] = "fracture",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "disrupt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! buff.demon_spikes.up & ( tanking || time < 5 )",
|
|
["action"] = "demon_spikes",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "num_spawnable_souls",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "max",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "num_spawnable_souls",
|
|
["criteria"] = "talent.soul_sigils.enabled & cooldown.sigil_of_flame.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "max",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["var_name"] = "num_spawnable_souls",
|
|
["criteria"] = "talent.fracture.enabled & cooldown.fracture.charges_fractional >= 1 & ! buff.metamorphosis.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "max",
|
|
["action"] = "variable",
|
|
["value"] = "3",
|
|
["var_name"] = "num_spawnable_souls",
|
|
["criteria"] = "talent.fracture.enabled & cooldown.fracture.charges_fractional >= 1 & buff.metamorphosis.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "num_spawnable_souls",
|
|
["criteria"] = "talent.soul_carver.enabled & ( cooldown.soul_carver.remains > ( cooldown.soul_carver.duration - 3 ) )",
|
|
},
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "infernal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! hero_tree.felscarred",
|
|
["list_name"] = "ar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "hero_tree.felscarred",
|
|
["list_name"] = "fs",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "spell_targets.spirit_bomb = 1",
|
|
["var_name"] = "single_target",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "spell_targets.spirit_bomb >= 2 & spell_targets.spirit_bomb <= 5",
|
|
["var_name"] = "small_aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "spell_targets.spirit_bomb >= 6",
|
|
["var_name"] = "big_aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff )",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff )",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hero_tree.aldrachi_reaver || ( hero_tree.felscarred & talent.student_of_suffering.enabled )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["action"] = "immolation_aura",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["rg_sequence_filler"] = {
|
|
{
|
|
["action"] = "felblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.rending_strike.up",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sigil_of_spite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soul_carver",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fel_devastation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "throw_glaive",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["rg_sequence"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "time + action.fracture.execute_time + 20",
|
|
["var_name"] = "double_rm_expires",
|
|
["criteria"] = "! buff.glaive_flurry.up & buff.rending_strike.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "( fury < 30 & ( ( ! variable.rg_enhance_cleave & buff.glaive_flurry.up & buff.rending_strike.up ) || ( variable.rg_enhance_cleave & ! buff.rending_strike.up ) ) ) || ( action.fracture.charges_fractional < 1 & ( ( variable.rg_enhance_cleave & buff.rending_strike.up & buff.glaive_flurry.up ) || ( ! variable.rg_enhance_cleave & ! buff.glaive_flurry.up ) ) )",
|
|
["list_name"] = "rg_sequence_filler",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( variable.rg_enhance_cleave & buff.rending_strike.up & buff.glaive_flurry.up ) || ( ! variable.rg_enhance_cleave & ! buff.glaive_flurry.up ) )",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( variable.rg_enhance_cleave & buff.rending_strike.up & buff.glaive_flurry.up ) || ( ! variable.rg_enhance_cleave & ! buff.glaive_flurry.up ) )",
|
|
["action"] = "shear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ! variable.rg_enhance_cleave & buff.glaive_flurry.up & buff.rending_strike.up ) || ( variable.rg_enhance_cleave & ! buff.rending_strike.up ) )",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
},
|
|
["meta_prep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "cooldown.sigil_of_flame.charges < 1",
|
|
["action"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fiery_demise.enabled & ( ( talent.down_in_flames.enabled & charges >= max_charges ) || active_dot.fiery_brand = 0 )",
|
|
["action"] = "fiery_brand",
|
|
},
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["rg_overflow"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "trigger_overflow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "rg_enhance_cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) >= 30 & ! buff.rending_strike.up & ! buff.glaive_flurry.up",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) < 30",
|
|
["list_name"] = "rg_prep",
|
|
},
|
|
},
|
|
},
|
|
["author"] = "SimC",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|