You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65971 lines
4.4 MiB
65971 lines
4.4 MiB
|
|
HekiliDB = {
|
|
["namespaces"] = {
|
|
},
|
|
["profileKeys"] = {
|
|
["Quillandrus - Deathwing"] = "Default",
|
|
["Quillvolta - Deathwing"] = "Default",
|
|
["Quillox - Deathwing"] = "Default",
|
|
["Quillstrum - Deathwing"] = "Quillstrum - Deathwing",
|
|
["Quilligan - Deathwing"] = "Default",
|
|
["Quillmar - Deathwing"] = "Default",
|
|
["Quillmog - Deathwing"] = "Quillmog - Deathwing",
|
|
["Quillandreia - Deathwing"] = "Default",
|
|
["Quilladin - Deathwing"] = "Default",
|
|
["Quillten - Deathwing"] = "Quillten - Deathwing",
|
|
["Quillikus - Thunderhorn"] = "Quillikus - Thunderhorn",
|
|
["Quillcroft - Thunderhorn"] = "Quillcroft - Thunderhorn",
|
|
["Quillithar - Deathwing"] = "Default",
|
|
["Quillastra - Deathwing"] = "Quillastra - Deathwing",
|
|
["Quillika - Thunderhorn"] = "Quillika - Thunderhorn",
|
|
["Quillshake - Deathwing"] = "Default",
|
|
["Quilldara - Deathwing"] = "Default",
|
|
["Quillika - Deathwing"] = "Quillika - Deathwing",
|
|
["Quillvyn - Deathwing"] = "Default",
|
|
["Notch - Sporeggar"] = "Default",
|
|
["Quillichaa - Deathwing"] = "Default",
|
|
["Quillord - Deathwing"] = "Default",
|
|
["Quillight - Deathwing"] = "Default",
|
|
["Quilloria - Deathwing"] = "Default",
|
|
["Quillthus - Deathwing"] = "Default",
|
|
["Quillithor - Deathwing"] = "Default",
|
|
["Quillessa - Deathwing"] = "Default",
|
|
["Quilago - Thunderhorn"] = "Quilago - Thunderhorn",
|
|
["Quillphis - Deathwing"] = "Quillphis - Deathwing",
|
|
["Quillark - Thunderhorn"] = "Default",
|
|
["Quillspeth - Thunderhorn"] = "Quillspeth - Thunderhorn",
|
|
["Quildra - Thunderhorn"] = "Default",
|
|
["Quillrata - Deathwing"] = "Default",
|
|
["Quilberg - Thunderhorn"] = "Quilberg - Thunderhorn",
|
|
["Quilkin - Thunderhorn"] = "Quilkin - Thunderhorn",
|
|
["Quildra - Deathwing"] = "Quildra - Deathwing",
|
|
["Quillum - Deathwing"] = "Quillum - Deathwing",
|
|
["Quilldraka - Deathwing"] = "Default",
|
|
["Quillandria - Thunderhorn"] = "Quillandria - Thunderhorn",
|
|
["Quillick - Thunderhorn"] = "Quillick - Thunderhorn",
|
|
["Quillidania - Deathwing"] = "Quillidania - Deathwing",
|
|
["Quillshi - Deathwing"] = "Default",
|
|
["Quillidan - Thunderhorn"] = "Default",
|
|
["Quillson - Thunderhorn"] = "Quillson - Thunderhorn",
|
|
["Quillisium - Deathwing"] = "Quillisium - Deathwing",
|
|
["Quillikan - Deathwing"] = "Quillikan - Deathwing",
|
|
["Quillow - Thunderhorn"] = "Default",
|
|
["Quilenko - Thunderhorn"] = "Quilenko - Thunderhorn",
|
|
["Quilbee - Thunderhorn"] = "Quilbee - Thunderhorn",
|
|
["Quillzana - Thunderhorn"] = "Quillzana - Thunderhorn",
|
|
},
|
|
["profiles"] = {
|
|
["Quillidania - Deathwing"] = {
|
|
["toggles"] = {
|
|
["cooldowns"] = {
|
|
["value"] = false,
|
|
},
|
|
["defensives"] = {
|
|
["value"] = false,
|
|
},
|
|
["interrupts"] = {
|
|
["value"] = false,
|
|
},
|
|
},
|
|
["specs"] = {
|
|
[581] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["frailty_stacks"] = 1,
|
|
["brand_charges"] = 0,
|
|
["infernal_charges"] = 1,
|
|
},
|
|
["potion"] = "superior_steelskin_potion",
|
|
},
|
|
[577] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["retreat_and_return"] = "off",
|
|
["retreat_filler"] = false,
|
|
["fel_rush_charges"] = 0,
|
|
["demon_blades_acknowledged"] = false,
|
|
["throw_glaive_charges"] = 0,
|
|
["recommend_movement"] = false,
|
|
["fel_rush_filler"] = true,
|
|
["unbound_movement"] = false,
|
|
},
|
|
["potion"] = "potion_of_unbridled_fury",
|
|
},
|
|
},
|
|
["displays"] = {
|
|
["Interrupts"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = -655.999755859375,
|
|
["y"] = -191.0000305175781,
|
|
},
|
|
["Cooldowns"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = -655.9996337890625,
|
|
["y"] = -130.0000915527344,
|
|
},
|
|
["Primary"] = {
|
|
["rel"] = "CENTER",
|
|
["elvuiCooldown"] = true,
|
|
["y"] = -191.0006866455078,
|
|
["x"] = -54,
|
|
},
|
|
["AOE"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = -54,
|
|
["y"] = -190.9997100830078,
|
|
},
|
|
["Defensives"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = -655.999755859375,
|
|
["y"] = -247.0000610351563,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Havoc"] = {
|
|
["source"] = "SimulationCraft",
|
|
["builtIn"] = true,
|
|
["date"] = 20250413,
|
|
["spec"] = 577,
|
|
["desc"] = "2025-04-13: Save Reaver's Glaive even if we'll waste Art of the Glaive stacks\n\n2025-04-06: Flex Openers\n\n2025-03-14: Sync with SimC\n\n2025-03-01: Sync with SimC\n\n2025-02-26: (minor) Sync with SimC",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/demonhunter_havoc.simc\n## Up to date with SimC: March 9 2025 - 91f125a\n\nactions.precombat+=/variable,name=trinket1_steroids,value=trinket.1.is.improvised_seaforium_pacemaker\nactions.precombat+=/variable,name=trinket2_steroids,value=trinket.2.is.improvised_seaforium_pacemaker\n# Blacklist for trinkets to hold trinket cooldowns for Initiative and Necessary Strike line-up outside standard trinket implementation\nactions.precombat+=/variable,name=trinket1_crit,value=trinket.1.is.mad_queens_mandate||trinket.1.is.junkmaestros_mega_magnet||trinket.1.is.geargrinders_spare_keys||trinket.1.is.ravenous_honey_buzzer||trinket.1.is.grim_codex\nactions.precombat+=/variable,name=trinket2_crit,value=trinket.2.is.mad_queens_mandate||trinket.2.is.junkmaestros_mega_magnet||trinket.2.is.geargrinders_spare_keys||trinket.2.is.ravenous_honey_buzzer||trinket.2.is.grim_codex\nactions.precombat+=/variable,name=rg_ds,default=0,op=reset\nactions.precombat+=/sigil_of_flame\nactions.precombat+=/immolation_aura\n\nactions+=/disrupt\n## [Hekili] `retarget_auto_attack` is not implemented.\n### Spread Burning Wounds for uptime in multitarget scenarios\n## actions+=/retarget_auto_attack,line_cd=1,target_if=min:debuff.burning_wound.remains,if=talent.burning_wound&talent.demon_blades&active_dot.burning_wound<(spell_targets>?3)\n## actions+=/retarget_auto_attack,line_cd=1,target_if=min:!target.is_boss,if=talent.burning_wound&talent.demon_blades&active_dot.burning_wound=(spell_targets>?3)\n# Fury generated per second\nactions+=/variable,name=fury_gen,op=set,value=talent.demon_blades*(1%(2.6*attack_haste)*((talent.demonsurge&buff.metamorphosis.up)*3+12))+buff.immolation_aura.stack*6+buff.tactical_retreat.up*10\n# Tier 33 tier set check for trinket lineups withs Necessary Sacrifice\nactions+=/variable,name=tier33_4piece,value=(buff.initiative.up||!talent.initiative)&(buff.necessary_sacrifice.up||!set_bonus.thewarwithin_season_2_4pc)\n# Double on use trinket holding for using a stat cooldown trinket and an on use damage trinket\nactions+=/variable,name=double_on_use,value=!equipped.signet_of_the_priory&!equipped.house_of_cards||(trinket.1.is.house_of_cards||trinket.1.is.signet_of_the_priory)&trinket.1.cooldown.remains>20||(trinket.2.is.house_of_cards||trinket.2.is.signet_of_the_priory)&trinket.2.cooldown.remains>20\n# Use to determine if we traversed either of the opener lists.\nactions.ar+=/variable,name=opened,value=false\n# Separate actionlists for each hero tree\nactions+=/run_action_list,name=ar,strict=1,if=hero_tree.aldrachi_reaver\n## [Syrif] - Fallback for people levelling\nactions+=/run_action_list,name=fs,strict=1,if=!hero_tree.aldrachi_reaver\n\n\n# Aldrachi Reaver\nactions.ar=variable,name=rg_inc,op=set,value=buff.rending_strike.down&buff.glaive_flurry.up&cooldown.blade_dance.up&gcd.remains=0||variable.rg_inc&prev_gcd.1.death_sweep\n## [Hekili] `pick_up_fragment` is not implemented.\n## actions.ar+=/pick_up_fragment,use_off_gcd=1,if=fury<=90\nactions.ar+=/variable,name=fel_barrage,op=set,value=talent.fel_barrage&(cooldown.fel_barrage.remains<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.ar+=/chaos_strike,if=buff.rending_strike.up&buff.glaive_flurry.up&(variable.rg_ds=2||active_enemies>2)&time>10\nactions.ar+=/annihilation,if=buff.rending_strike.up&buff.glaive_flurry.up&(variable.rg_ds=2||active_enemies>2)\n## [Hekili] Remove `action.reavers_glaive.last_used` check that prevented using Reaver's Glaive after the opener.\nactions.ar+=/reavers_glaive,if=buff.glaive_flurry.down&buff.rending_strike.down&buff.thrill_of_the_fight_damage.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&debuff.essence_break.down&(buff.art_of_the_glaive.stack>3||buff.metamorphosis.remains>2||cooldown.eye_beam.remains<10||fight_remains<10)\nactions.ar+=/reavers_glaive,if=buff.glaive_flurry.down&buff.rending_strike.down&buff.thrill_of_the_fight_damage.remains<4&(buff.thrill_of_the_fight_damage.up||!prev_gcd.1.death_sweep||!variable.rg_inc)&active_enemies>2||boss&fight_remains<10\nactions.ar+=/call_action_list,name=ar_cooldown\n## [Hekili] No performance loss in sims changing from Run Action List to Call Action List; checking CDs toggle will help keep cromulent.\nactions.ar+=/call_action_list,name=ar_opener,if=time<15&toggle.cooldowns&(cooldown.eye_beam.up||cooldown.metamorphosis.up||talent.essence_break&cooldown.essence_break.up)\nactions.ar+=/sigil_of_spite,if=debuff.essence_break.down&(!talent.reavers_mark||active_dot.reavers_mark>0||debuff.reavers_mark.remains>=2-talent.quickened_sigils)\nactions.ar+=/run_action_list,name=ar_fel_barrage,if=variable.fel_barrage&raid_event.adds.up\nactions.ar+=/immolation_aura,if=active_enemies>2&talent.ragefire&(!talent.fel_barrage||cooldown.fel_barrage.remains>recharge_time)&debuff.essence_break.down&(buff.metamorphosis.down||buff.metamorphosis.remains>5)\nactions.ar+=/immolation_aura,if=active_enemies>2&talent.ragefire&raid_event.adds.up&raid_event.adds.remains<15&raid_event.adds.remains>5&debuff.essence_break.down\n## [Syrif] - Rework trinket conditions to work with existing metatable structure\nactions.ar+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&(cooldown.eye_beam.remains>15&gcd.remains<0.3||gcd.remains<0.2&cooldown.eye_beam.remains<=gcd.remains&cooldown.metamorphosis.remains>10)&(!variable.trinket1_steroids&!variable.trinket2_steroids||variable.trinket1_steroids&trinket.t1.has_stat.any_dps&trinket.t1.has_cooldown&(trinket.t1.cooldown.remains<gcd.max*3||trinket.t1.cooldown.remains>30)||variable.trinket2_steroids&trinket.t2.has_stat.any_dps&trinket.t1.has_cooldown&(trinket.t2.cooldown.remains<gcd.max*3||trinket.t1.cooldown.remains>30))&time>20&(!talent.inertia&buff.unbound_chaos.down||buff.inertia_trigger.down&buff.metamorphosis.down)\nactions.ar+=/run_action_list,name=ar_fel_barrage,if=variable.fel_barrage||!talent.demon_blades&talent.fel_barrage&(buff.fel_barrage.up||cooldown.fel_barrage.up)&buff.metamorphosis.down\nactions.ar+=/felblade,if=!talent.inertia&active_enemies=1&buff.unbound_chaos.up&buff.initiative.up&debuff.essence_break.down&buff.metamorphosis.down\nactions.ar+=/felblade,if=buff.inertia_trigger.up&talent.inertia&cooldown.eye_beam.remains<=0.5&(cooldown.metamorphosis.remains&talent.looks_can_kill||active_enemies>1)\nactions.ar+=/run_action_list,name=ar_meta,if=buff.metamorphosis.up\nactions.ar+=/felblade,if=buff.inertia_trigger.up&talent.inertia&buff.inertia.down&cooldown.blade_dance.remains<4&(cooldown.eye_beam.remains>5&cooldown.eye_beam.remains>buff.unbound_chaos.remains||cooldown.eye_beam.remains<=gcd.max&cooldown.vengeful_retreat.remains<=gcd.max+1)\n## [Hekili] Note that, with procs, you can get back-to-back Immolation Auras here and that's consistent with the sim: https://www.raidbots.com/simbot/report/d2c3niKvdSVyDbQdsaDsrB/simc\n## actions.ar+=/immolation_aura,if=time<15&active_enemies=1&talent.a_fire_inside&talent.burning_wound&buff.metamorphosis.down\nactions.ar+=/immolation_aura,if=talent.a_fire_inside&talent.burning_wound&full_recharge_time<gcd.max*2&(raid_event.adds.in>full_recharge_time||active_enemies>desired_targets)\nactions.ar+=/immolation_aura,if=active_enemies>desired_targets&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>full_recharge_time)\nactions.ar+=/immolation_aura,if=fight_remains<15&cooldown.blade_dance.remains&talent.ragefire\n## [Syrif] - Rework trinket conditions to work with existing metatable structure\nactions.ar+=/eye_beam,if=(cooldown.blade_dance.remains<7||raid_event.adds.up)&(!variable.trinket1_steroids&!variable.trinket2_steroids||variable.trinket1_steroids&trinket.t1.has_stat.any_dps&trinket.t1.has_cooldown&(trinket.t1.cooldown.remains<gcd.max*3||trinket.t1.cooldown.remains>30)||variable.trinket2_steroids&trinket.t2.has_stat.any_dps&trinket.t1.has_cooldown&(trinket.t2.cooldown.remains<gcd.max*3||trinket.t1.cooldown.remains>30))||boss&fight_remains<10\nactions.ar+=/blade_dance,if=cooldown.eye_beam.remains>=gcd.max*3&buff.rending_strike.down\nactions.ar+=/chaos_strike,if=buff.rending_strike.up\nactions.ar+=/sigil_of_flame,if=active_enemies>3||debuff.essence_break.down\nactions.ar+=/felblade,if=fury.deficit>=40+variable.fury_gen*0.5&!buff.inertia_trigger.up\nactions.ar+=/glaive_tempest,if=active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>10\nactions.ar+=/chaos_strike,if=debuff.essence_break.up\nactions.ar+=/throw_glaive,if=active_enemies>1&talent.furious_throws&(!talent.screaming_brutality||charges=2||full_recharge_time<cooldown.blade_dance.remains)\nactions.ar+=/chaos_strike,if=cooldown.eye_beam.remains>gcd.max*2||fury>80\nactions.ar+=/felblade,if=active_enemies=1&!talent.a_fire_inside&debuff.essence_break.down\nactions.ar+=/immolation_aura,if=raid_event.adds.in>full_recharge_time||active_enemies>desired_targets&active_enemies>2\nactions.ar+=/sigil_of_flame,if=buff.out_of_range.down&debuff.essence_break.down&(!talent.fel_barrage||cooldown.fel_barrage.remains>25||active_enemies=1&!raid_event.adds.exists)\nactions.ar+=/demons_bite\nactions.ar+=/throw_glaive,if=buff.unbound_chaos.down&recharge_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.ar+=/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.ar+=/arcane_torrent,if=buff.out_of_range.down&debuff.essence_break.down&fury<100\n\nactions.ar_cooldown+=/metamorphosis,if=(((cooldown.eye_beam.remains>=20||talent.cycle_of_hatred&cooldown.eye_beam.remains>=13)&(!talent.essence_break||debuff.essence_break.up)&buff.fel_barrage.down&(raid_event.adds.in>40||(raid_event.adds.remains>8||!talent.fel_barrage)&active_enemies>2)||!talent.chaotic_transformation||boss&fight_remains<30)&buff.inner_demon.down&(!talent.restless_hunter&cooldown.blade_dance.remains>gcd.max*3||prev_gcd.1.death_sweep))&!talent.inertia&!talent.essence_break&(variable.opened||time>15)\nactions.ar_cooldown+=/metamorphosis,if=(cooldown.blade_dance.remains&((prev_gcd.1.death_sweep||prev_gcd.2.death_sweep||prev_gcd.3.death_sweep||buff.metamorphosis.up&buff.metamorphosis.remains<gcd.max)&cooldown.eye_beam.remains&(!talent.essence_break||debuff.essence_break.up||talent.shattered_destiny)&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)&(variable.opened||time>15)\nactions.ar_cooldown+=/potion,if=boss&fight_remains<35||(buff.metamorphosis.up||debuff.essence_break.up)&time>10\n## [Hekili] `invoke_external_buff` is not implemented.\n## actions.ar_cooldown+=/invoke_external_buff,name=power_infusion,if=buff.metamorphosis.up||boss&fight_remains<=20\nactions.ar_cooldown+=/variable,name=special_trinket,op=set,value=equipped.mad_queens_mandate||equipped.treacherous_transmitter||equipped.skardyns_grace||equipped.signet_of_the_priory||equipped.junkmaestros_mega_magnet||equipped.geargrinders_spare_keys||equipped.mister_locknstalk||equipped.ravenous_honey_buzzer||equipped.grim_codex\nactions.ar_cooldown+=/use_item,name=mad_queens_mandate,if=((!talent.initiative||buff.initiative.up||time>5)&(buff.metamorphosis.remains>5||buff.metamorphosis.down)&(trinket.1.is.mad_queens_mandate&(trinket.2.cooldown.duration<10||trinket.2.cooldown.remains>10||!trinket.2.has_buff.any)||trinket.2.is.mad_queens_mandate&(trinket.1.cooldown.duration<10||trinket.1.cooldown.remains>10||!trinket.1.has_buff.any))&fight_remains>120||boss&fight_remains<10&fight_remains<buff.metamorphosis.remains)&debuff.essence_break.down||fight_remains<5\nactions.ar_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.ar_cooldown+=/use_item,name=skardyns_grace,if=(!equipped.mad_queens_mandate||fight_remains>25||trinket.2.is.skardyns_grace&trinket.1.cooldown.remains>fight_remains||trinket.1.is.skardyns_grace&trinket.2.cooldown.remains>fight_remains||trinket.1.cooldown.duration<10||trinket.2.cooldown.duration<10)&buff.metamorphosis.up\nactions.ar_cooldown+=/use_item,name=house_of_cards,if=(cooldown.eye_beam.up||buff.metamorphosis.up)||boss&fight_remains<20\nactions.ar_cooldown+=/use_item,name=signet_of_the_priory,if=time<20&(!talent.inertia||buff.inertia.up)||buff.metamorphosis.up&time>20||boss&fight_remains<20\nactions.ar_cooldown+=/use_item,name=junkmaestros_mega_magnet,if=variable.tier33_4piece&variable.double_on_use||fight_remains<20\nactions.ar_cooldown+=/use_item,name=geargrinders_spare_keys,if=variable.tier33_4piece&variable.double_on_use||fight_remains<20\nactions.ar_cooldown+=/use_item,name=grim_codex,if=variable.tier33_4piece&variable.double_on_use||boss&fight_remains<10\nactions.ar_cooldown+=/use_item,name=ravenous_honey_buzzer,if=(variable.tier33_4piece&(buff.inertia.down&(cooldown.essence_break.remains&debuff.essence_break.down||!talent.essence_break))&(trinket.1.is.ravenous_honey_buzzer&(trinket.2.cooldown.duration<10||trinket.2.cooldown.remains>10||!trinket.2.has_buff.any)||trinket.2.is.ravenous_honey_buzzer&(trinket.1.cooldown.duration<10||trinket.1.cooldown.remains>10||!trinket.1.has_buff.any))&fight_remains>120||boss&fight_remains<10&fight_remains<buff.metamorphosis.remains)||fight_remains<5\n## [Hekili] `do_treacherous_transmitter_task` is not implemented.\n## actions.ar_cooldown+=/do_treacherous_transmitter_task,if=cooldown.eye_beam.remains>15||cooldown.eye_beam.remains<5||boss&fight_remains<20\nactions.ar_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||boss&fight_remains<25)&!trinket.1.is.mister_locknstalk&!variable.trinket1_crit&!trinket.1.is.skardyns_grace&!trinket.1.is.treacherous_transmitter&(!variable.special_trinket||trinket.2.cooldown.remains>20)\nactions.ar_cooldown+=/use_item,slot=trinket2,if=((cooldown.eye_beam.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||boss&fight_remains<25)&!trinket.2.is.mister_locknstalk&!variable.trinket2_crit&!trinket.2.is.skardyns_grace&!trinket.2.is.treacherous_transmitter&(!variable.special_trinket||trinket.1.cooldown.remains>20)\nactions.ar_cooldown+=/the_hunt,if=debuff.essence_break.down&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>90)&(!talent.reavers_mark||debuff.reavers_mark.up)&buff.reavers_glaive.down&(buff.metamorphosis.remains>5||buff.metamorphosis.down)&(!talent.initiative||buff.initiative.up||time>5)&time>5&(!talent.inertia&buff.unbound_chaos.down||buff.inertia_trigger.down)\nactions.ar_cooldown+=/sigil_of_spite,if=debuff.essence_break.down&(!talent.reavers_mark||active_dot.reavers_mark>0||debuff.reavers_mark.remains>=2-talent.quickened_sigils)&cooldown.blade_dance.remains&time>15\n\nactions.ar_fel_barrage+=/variable,name=generator_up,op=set,value=cooldown.felblade.remains<gcd.max||cooldown.sigil_of_flame.remains<gcd.max\nactions.ar_fel_barrage+=/variable,name=gcd_drain,op=set,value=gcd.max*32\nactions.ar_fel_barrage+=/annihilation,if=buff.inner_demon.up\nactions.ar_fel_barrage+=/eye_beam,if=buff.fel_barrage.down&(active_enemies>1&raid_event.adds.up||raid_event.adds.in>40)\nactions.ar_fel_barrage+=/essence_break,if=buff.fel_barrage.down&buff.metamorphosis.up\nactions.ar_fel_barrage+=/death_sweep,if=buff.fel_barrage.down\nactions.ar_fel_barrage+=/immolation_aura,if=(active_enemies>2||buff.fel_barrage.up)&(cooldown.eye_beam.remains>recharge_time+3)\nactions.ar_fel_barrage+=/glaive_tempest,if=buff.fel_barrage.down&active_enemies>1\nactions.ar_fel_barrage+=/blade_dance,if=buff.fel_barrage.down\nactions.ar_fel_barrage+=/fel_barrage,if=fury>100&(raid_event.adds.in>90||raid_event.adds.in<gcd.max||raid_event.adds.remains>4&active_enemies>2)\nactions.ar_fel_barrage+=/felblade,if=buff.inertia_trigger.up&buff.fel_barrage.up\nactions.ar_fel_barrage+=/sigil_of_flame,if=fury.deficit>40&buff.fel_barrage.up\nactions.ar_fel_barrage+=/felblade,if=buff.fel_barrage.up&fury.deficit>40\nactions.ar_fel_barrage+=/death_sweep,if=fury-variable.gcd_drain-35>0&(buff.fel_barrage.remains<3||variable.generator_up||fury>80||variable.fury_gen>18)\nactions.ar_fel_barrage+=/glaive_tempest,if=fury-variable.gcd_drain-30>0&(buff.fel_barrage.remains<3||variable.generator_up||fury>80||variable.fury_gen>18)\nactions.ar_fel_barrage+=/blade_dance,if=fury-variable.gcd_drain-35>0&(buff.fel_barrage.remains<3||variable.generator_up||fury>80||variable.fury_gen>18)\nactions.ar_fel_barrage+=/arcane_torrent,if=fury.deficit>40&buff.fel_barrage.up\nactions.ar_fel_barrage+=/the_hunt,if=fury>40&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>80)\nactions.ar_fel_barrage+=/annihilation,if=fury-variable.gcd_drain-40>20&(buff.fel_barrage.remains<3||variable.generator_up||fury>80||variable.fury_gen>18)\nactions.ar_fel_barrage+=/chaos_strike,if=fury-variable.gcd_drain-40>20&(cooldown.fel_barrage.remains&cooldown.fel_barrage.remains<10&fury>100||buff.fel_barrage.up&(buff.fel_barrage.remains*variable.fury_gen-buff.fel_barrage.remains*32)>0)\nactions.ar_fel_barrage+=/demons_bite\n\nactions.ar_meta+=/death_sweep,if=buff.metamorphosis.remains<gcd.max||debuff.essence_break.up\n## [Hekili] For future consideration, APL revisions that produce better results than using the ar_opener action list in AOE scenarios.\n## actions.ar_meta+=/death_sweep,line_cd=15,if=time<15&cooldown.annihilation.remains&(cooldown.eye_beam.up||cooldown.metamorphosis.up||talent.essence_break&cooldown.essence_break.up)\nactions.ar_meta+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&(variable.opened||time>15||cooldown.death_sweep.remains)&(cooldown.metamorphosis.remains&(!talent.essence_break||cooldown.essence_break.remains<=0.6||cooldown.essence_break.remains>10)||cooldown.metamorphosis.up&talent.essence_break&cooldown.essence_break.remains<=0.6&buff.inner_demon.down&cooldown.blade_dance.remains<=gcd.max+0.5||talent.restless_hunter)&cooldown.eye_beam.remains&(!talent.inertia&buff.unbound_chaos.down||buff.inertia_trigger.down)\nactions.ar_meta+=/felblade,if=talent.inertia&buff.inertia_trigger.up&cooldown.essence_break.remains<=1&cooldown.blade_dance.remains<=gcd.max*2&cooldown.metamorphosis.remains<=gcd.max*3\nactions.ar_meta+=/essence_break,if=fury>=30&talent.restless_hunter&cooldown.metamorphosis.up&(talent.inertia&buff.inertia.up||!talent.inertia)&cooldown.blade_dance.remains<=gcd.max\nactions.ar_meta+=/annihilation,if=buff.metamorphosis.remains<gcd.max||debuff.essence_break.remains&debuff.essence_break.remains<0.5&cooldown.blade_dance.remains||buff.inner_demon.up&cooldown.essence_break.up&cooldown.metamorphosis.up\nactions.ar_meta+=/felblade,if=buff.inertia_trigger.up&talent.inertia&cooldown.metamorphosis.remains&(cooldown.eye_beam.remains<=0.5||cooldown.essence_break.remains<=0.5||cooldown.blade_dance.remains<=5.5||buff.initiative.remains<gcd.remains)\n## [Syrif] - Combine 2 fel rush lines\nactions.ar_meta+=/fel_rush,if=buff.inertia_trigger.up&talent.inertia&((cooldown.metamorphosis.remains&active_enemies>2)||(cooldown.blade_dance.remains<gcd.max*3&cooldown.metamorphosis.remains&active_enemies>2))\nactions.ar_meta+=/immolation_aura,if=charges=2&active_enemies>1&debuff.essence_break.down\nactions.ar_meta+=/annihilation,if=buff.inner_demon.up&(cooldown.eye_beam.remains<gcd.max*3&cooldown.blade_dance.remains||cooldown.metamorphosis.remains<gcd.max*3)\nactions.ar_meta+=/essence_break,if=time<20&buff.thrill_of_the_fight_damage.remains>gcd.max*4&buff.metamorphosis.remains>=gcd.max*2&cooldown.metamorphosis.up&cooldown.death_sweep.remains<=gcd.max&buff.inertia.up\nactions.ar_meta+=/essence_break,if=fury>20&(cooldown.blade_dance.remains<gcd.max*3||cooldown.blade_dance.up)&(buff.unbound_chaos.down&!talent.inertia||buff.inertia.up)&buff.out_of_range.remains<gcd.max&(!talent.shattered_destiny||cooldown.eye_beam.remains>4)||boss&fight_remains<10\nactions.ar_meta+=/death_sweep\nactions.ar_meta+=/eye_beam,if=debuff.essence_break.down&buff.inner_demon.down\nactions.ar_meta+=/glaive_tempest,if=debuff.essence_break.down&(cooldown.blade_dance.remains>gcd.max*2||fury>60)&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>10)\nactions.ar_meta+=/sigil_of_flame,if=active_enemies>2&debuff.essence_break.down\nactions.ar_meta+=/throw_glaive,if=talent.soulscar&talent.furious_throws&active_enemies>1&debuff.essence_break.down&(charges=2||full_recharge_time<cooldown.blade_dance.remains)\n## [Hekili] `soul_fragments` is not implemented.\n## actions.ar_meta+=/annihilation,if=cooldown.blade_dance.remains||fury>60||soul_fragments.total>0||buff.metamorphosis.remains<5&cooldown.felblade.up\nactions.ar_meta+=/annihilation,if=cooldown.blade_dance.remains||fury>60||buff.metamorphosis.remains<5&cooldown.felblade.up\nactions.ar_meta+=/sigil_of_flame,if=buff.metamorphosis.remains>5&buff.out_of_range.down\nactions.ar_meta+=/felblade,if=fury.deficit>40&!buff.inertia_trigger.up\nactions.ar_meta+=/sigil_of_flame,if=debuff.essence_break.down&buff.out_of_range.down\nactions.ar_meta+=/immolation_aura,if=buff.out_of_range.down&recharge_time<(cooldown.eye_beam.remains<?buff.metamorphosis.remains)&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>full_recharge_time)\nactions.ar_meta+=/annihilation\nactions.ar_meta+=/fel_rush,if=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.ar_meta+=/demons_bite\n\nactions.ar_opener+=/potion\nactions.ar_opener+=/the_hunt,if=buff.reavers_glaive.down&buff.glaive_flurry.down&buff.rending_strike.down\nactions.ar_opener+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&time>4&buff.metamorphosis.up&(!talent.inertia||buff.inertia_trigger.down)&buff.inner_demon.down&cooldown.blade_dance.remains&gcd.remains<0.1\nactions.ar_opener+=/annihilation,if=buff.rending_strike.up&buff.thrill_of_the_fight_damage.down\nactions.ar_opener+=/felblade,if=!talent.inertia&talent.unbound_chaos&buff.unbound_chaos.up&buff.initiative.up&debuff.essence_break.down&active_enemies<=2\nactions.ar_opener+=/fel_rush,if=!talent.inertia&talent.unbound_chaos&buff.unbound_chaos.up&buff.initiative.up&debuff.essence_break.down&active_enemies>2\nactions.ar_opener+=/annihilation,if=talent.inner_demon&buff.inner_demon.up&cooldown.essence_break.up\nactions.ar_opener+=/essence_break,if=(buff.inertia.up||!talent.inertia)&buff.metamorphosis.up&cooldown.blade_dance.remains<=gcd.max&(!talent.reavers_mark||active_dot.reavers_mark>0||debuff.reavers_mark.remains>=2-talent.quickened_sigils)\nactions.ar_opener+=/felblade,if=buff.inertia_trigger.up&talent.inertia&talent.restless_hunter&cooldown.essence_break.up&cooldown.metamorphosis.up&buff.metamorphosis.up&cooldown.blade_dance.remains<=gcd.max\nactions.ar_opener+=/felblade,if=talent.inertia&buff.inertia_trigger.up&(buff.inertia.down&buff.metamorphosis.up)&debuff.essence_break.down&active_enemies<=2\nactions.ar_opener+=/fel_rush,if=talent.inertia&buff.inertia_trigger.up&(buff.inertia.down&buff.metamorphosis.up)&debuff.essence_break.down&(cooldown.felblade.remains||active_enemies>2)\nactions.ar_opener+=/felblade,if=talent.inertia&buff.inertia_trigger.up&buff.metamorphosis.up&cooldown.metamorphosis.remains&debuff.essence_break.down\nactions.ar_opener+=/the_hunt,if=(buff.metamorphosis.up&hero_tree.aldrachi_reaver&talent.shattered_destiny||!talent.shattered_destiny&hero_tree.aldrachi_reaver||hero_tree.felscarred)&(!talent.initiative||talent.inertia||buff.initiative.up||time>5)\nactions.ar_opener+=/felblade,if=fury<40&buff.inertia_trigger.down&debuff.essence_break.down\nactions.ar_opener+=/reavers_glaive,if=debuff.reavers_mark.down&debuff.essence_break.down\nactions.ar_opener+=/chaos_strike,if=buff.rending_strike.up&active_enemies>2\nactions.ar_opener+=/blade_dance,if=buff.glaive_flurry.up&active_enemies>2\nactions.ar_opener+=/immolation_aura,if=talent.a_fire_inside&talent.burning_wound&buff.metamorphosis.down\nactions.ar_opener+=/metamorphosis,if=buff.metamorphosis.up&cooldown.blade_dance.remains>gcd.max*2&buff.inner_demon.down&(!talent.restless_hunter||prev_gcd.1.death_sweep)&(cooldown.essence_break.remains||!talent.essence_break)\nactions.ar_opener+=/sigil_of_spite,if=(!talent.reavers_mark||active_dot.reavers_mark>0||debuff.reavers_mark.up)&(cooldown.eye_beam.remains&cooldown.metamorphosis.remains)\nactions.ar_opener+=/eye_beam,if=buff.metamorphosis.down||debuff.essence_break.down&buff.inner_demon.down&(cooldown.blade_dance.remains||talent.essence_break&cooldown.essence_break.up)\nactions.ar_opener+=/essence_break,if=cooldown.blade_dance.remains<gcd.max&!hero_tree.felscarred&!talent.shattered_destiny&buff.metamorphosis.up||cooldown.eye_beam.remains&cooldown.metamorphosis.remains\nactions.ar_opener+=/death_sweep\nactions.ar_opener+=/annihilation\nactions.ar_opener+=/demons_bite\nactions.ar_opener+=/variable,name=opened,value=true\n\n# Fel-Scarred\n## [Hekili] `pick_up_fragments` is not implemented.\n## actions.fs=pick_up_fragment,use_off_gcd=1,if=fury.deficit>=30\nactions.fs+=/call_action_list,name=fs_cooldown\nactions.fs+=/call_action_list,name=fs_opener,if=time<15&toggle.cooldowns&(cooldown.eye_beam.up||cooldown.metamorphosis.up||talent.essence_break&cooldown.essence_break.up||buff.demonsurge.stack<3+talent.student_of_suffering+talent.a_fire_inside)\nactions.fs+=/felblade,if=talent.unbound_chaos&buff.unbound_chaos.up&!talent.inertia&active_enemies<=2&(talent.student_of_suffering&cooldown.eye_beam.remains-gcd.max*2<=buff.unbound_chaos.remains||hero_tree.aldrachi_reaver)\nactions.fs+=/fel_rush,if=talent.unbound_chaos&buff.unbound_chaos.up&!talent.inertia&active_enemies>3&(talent.student_of_suffering&cooldown.eye_beam.remains-gcd.max*2<=buff.unbound_chaos.remains)\nactions.fs+=/run_action_list,name=fs_meta,if=buff.metamorphosis.up\nactions.fs+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&(cooldown.eye_beam.remains>15&gcd.remains<0.3||gcd.remains<0.2&cooldown.eye_beam.remains<=gcd.remains&(cooldown.metamorphosis.remains>10||cooldown.blade_dance.remains<gcd.max*3))&(!talent.student_of_suffering||cooldown.sigil_of_flame.remains)&(cooldown.essence_break.remains<=gcd.max*2&talent.student_of_suffering&cooldown.sigil_of_flame.remains||cooldown.essence_break.remains>=18||!talent.student_of_suffering)&(cooldown.metamorphosis.remains>10||hero_tree.aldrachi_reaver)&time>20\nactions.fs+=/sigil_of_flame,if=talent.student_of_suffering&cooldown.eye_beam.remains<=gcd.max&(cooldown.essence_break.remains<gcd.max*3)&(cooldown.metamorphosis.remains>10||cooldown.blade_dance.remains<gcd.max*2)\nactions.fs+=/eye_beam,if=(!talent.initiative||buff.initiative.up||cooldown.vengeful_retreat.remains>=10||cooldown.metamorphosis.up)&(cooldown.blade_dance.remains<7||raid_event.adds.up)||boss&fight_remains<10\nactions.fs+=/blade_dance,if=cooldown.eye_beam.remains>=gcd.max*4||debuff.essence_break.up\nactions.fs+=/chaos_strike,if=debuff.essence_break.up\nactions.fs+=/immolation_aura,if=talent.a_fire_inside&talent.isolated_prey&talent.flamebound&active_enemies=1&cooldown.eye_beam.remains>=gcd.max\nactions.fs+=/felblade,if=fury.deficit>40+variable.fury_gen*(0.5%gcd.max)&(cooldown.vengeful_retreat.remains>=action.felblade.cooldown+0.5&talent.inertia&active_enemies=1||!talent.inertia||hero_tree.aldrachi_reaver||cooldown.essence_break.remains)&cooldown.metamorphosis.remains&cooldown.eye_beam.remains>=0.5+gcd.max*(talent.student_of_suffering&cooldown.sigil_of_flame.remains<=gcd.max)\nactions.fs+=/chaos_strike,if=cooldown.eye_beam.remains>=gcd.max*4||(fury>=70-30*(talent.student_of_suffering&(cooldown.sigil_of_flame.remains<=gcd.max||cooldown.sigil_of_flame.up))-buff.chaos_theory.up*20-variable.fury_gen)\nactions.fs+=/immolation_aura,if=raid_event.adds.in>full_recharge_time&cooldown.eye_beam.remains>=gcd.max*(1+talent.student_of_suffering&(cooldown.sigil_of_flame.remains<=gcd.max||cooldown.sigil_of_flame.up))||active_enemies>desired_targets&active_enemies>2\nactions.fs+=/felblade,if=buff.out_of_range.down&buff.inertia_trigger.down&cooldown.eye_beam.remains>=gcd.max*(1+talent.student_of_suffering&(cooldown.sigil_of_flame.remains<=gcd.max||cooldown.sigil_of_flame.up))\nactions.fs+=/sigil_of_flame,if=buff.out_of_range.down&debuff.essence_break.down&!talent.student_of_suffering&(!talent.fel_barrage||cooldown.fel_barrage.remains>25||(active_enemies=1&!raid_event.adds.exists))\nactions.fs+=/throw_glaive,if=recharge_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.fs+=/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.fs+=/arcane_torrent,if=buff.out_of_range.down&debuff.essence_break.down&fury<100\n\nactions.fs_cooldown+=/metamorphosis,if=((cooldown.eye_beam.remains>=20&(!talent.essence_break||debuff.essence_break.up)&buff.fel_barrage.down&(raid_event.adds.in>40||(raid_event.adds.remains>8||!talent.fel_barrage)&active_enemies>2)||!talent.chaotic_transformation||boss&fight_remains<30)&buff.inner_demon.down&(!talent.restless_hunter&cooldown.blade_dance.remains>gcd.max*3||prev_gcd.1.death_sweep))&!talent.inertia&!talent.essence_break&(hero_tree.aldrachi_reaver||buff.demonsurge_death_sweep.down)&(variable.opened||time>15)\nactions.fs_cooldown+=/metamorphosis,if=(cooldown.blade_dance.remains&(buff.metamorphosis.up&cooldown.eye_beam.remains&(!talent.essence_break||debuff.essence_break.up||talent.shattered_destiny||hero_tree.felscarred)&buff.fel_barrage.down&(raid_event.adds.in>40||(raid_event.adds.remains>8||!talent.fel_barrage)&active_enemies>2)||!talent.chaotic_transformation||boss&fight_remains<30)&(buff.inner_demon.down&(!talent.restless_hunter||prev_gcd.1.death_sweep)))&(talent.inertia||talent.essence_break)&(hero_tree.aldrachi_reaver||(buff.demonsurge_death_sweep.down&buff.metamorphosis.up||buff.metamorphosis.remains<gcd.max)&(buff.demonsurge_annihilation.down))&(variable.opened||time>15)\nactions.fs_cooldown+=/potion,if=boss&fight_remains<35||buff.metamorphosis.up||debuff.essence_break.up\n## [Hekili] `invoke_external_buff` is not implemented.\n## actions.fs_cooldown+=/invoke_external_buff,name=power_infusion,if=buff.metamorphosis.up||boss&fight_remains<=20\nactions.fs_cooldown+=/variable,name=special_trinket,op=set,value=equipped.mad_queens_mandate||equipped.treacherous_transmitter||equipped.skardyns_grace||equipped.signet_of_the_priory||equipped.junkmaestros_mega_magnet||equipped.geargrinders_spare_keys||equipped.mister_locknstalk||equipped.ravenous_honey_buzzer\nactions.fs_cooldown+=/use_item,name=mad_queens_mandate,if=((!talent.initiative||buff.initiative.up||time>5)&(buff.metamorphosis.remains>5||buff.metamorphosis.down)&(trinket.1.is.mad_queens_mandate&(trinket.2.cooldown.duration<10||trinket.2.cooldown.remains>10||!trinket.2.has_buff.any)||trinket.2.is.mad_queens_mandate&(trinket.1.cooldown.duration<10||trinket.1.cooldown.remains>10||!trinket.1.has_buff.any))&fight_remains>120||boss&fight_remains<10&fight_remains<buff.metamorphosis.remains)&debuff.essence_break.down||fight_remains<5\nactions.fs_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.fs_cooldown+=/use_item,name=skardyns_grace,if=(!equipped.mad_queens_mandate||fight_remains>25||trinket.2.is.skardyns_grace&trinket.1.cooldown.remains>fight_remains||trinket.1.is.skardyns_grace&trinket.2.cooldown.remains>fight_remains||trinket.1.cooldown.duration<10||trinket.2.cooldown.duration<10)&buff.metamorphosis.up\nactions.fs_cooldown+=/use_item,name=signet_of_the_priory,if=time<20&(!talent.inertia||buff.inertia.up)||(buff.metamorphosis.up&cooldown.essence_break.up||boss&fight_remains<20)&time>20\nactions.fs_cooldown+=/use_item,name=junkmaestros_mega_magnet,if=buff.initiative.up\nactions.fs_cooldown+=/use_item,name=geargrinders_spare_keys,if=buff.initiative.up\n## [Hekili] `do_treacherous_transmitter` is not implemented.\n## actions.fs_cooldown+=/do_treacherous_transmitter_task,if=cooldown.eye_beam.remains>15||cooldown.eye_beam.remains<5||boss&fight_remains<20\nactions.fs_cooldown+=/use_item,slot=trinket1,if=((cooldown.eye_beam.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||boss&fight_remains<25)&!trinket.1.is.skardyns_grace&!trinket.1.is.mad_queens_mandate&!trinket.1.is.treacherous_transmitter&(!variable.special_trinket||trinket.2.cooldown.remains>20)\nactions.fs_cooldown+=/use_item,slot=trinket2,if=((cooldown.eye_beam.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||boss&fight_remains<25)&!trinket.2.is.skardyns_grace&!trinket.2.is.mad_queens_mandate&!trinket.2.is.treacherous_transmitter&(!variable.special_trinket||trinket.1.cooldown.remains>20)\nactions.fs_cooldown+=/the_hunt,if=debuff.essence_break.down&(active_dot.reavers_mark>0||debuff.reavers_mark.up||!talent.reavers_mark)&buff.reavers_glaive.down&(buff.metamorphosis.remains>5||buff.metamorphosis.down)&(!talent.initiative||buff.initiative.up||time>5)&time>5&(!talent.inertia&buff.unbound_chaos.down||buff.inertia_trigger.down)&(hero_tree.aldrachi_reaver||buff.metamorphosis.down)||boss&fight_remains<=30\nactions.fs_cooldown+=/sigil_of_spite,if=debuff.essence_break.down&cooldown.blade_dance.remains&(variable.opened||time>15)\n\nactions.fs_meta=death_sweep,if=buff.metamorphosis.remains<gcd.max||debuff.essence_break.up||prev_gcd.1.metamorphosis\nactions.fs_meta+=/sigil_of_doom,if=talent.student_of_suffering&buff.demonsurge_sigil_of_doom.down&debuff.essence_break.down&(talent.student_of_suffering&((talent.essence_break&cooldown.essence_break.remains>30-gcd.max||cooldown.essence_break.remains<=gcd.max+talent.inertia&(cooldown.vengeful_retreat.remains<=gcd||buff.initiative.up)+gcd.max*(cooldown.eye_beam.remains<=gcd.max))||(!talent.essence_break&(cooldown.eye_beam.remains>=10||cooldown.eye_beam.remains<=gcd.max))))\nactions.fs_meta+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&(gcd.remains<0.3||talent.inertia&cooldown.eye_beam.remains>gcd.remains&(buff.cycle_of_hatred.stack=2||buff.cycle_of_hatred.stack=3))&(cooldown.metamorphosis.remains&(buff.demonsurge_annihilation.down&buff.demonsurge_death_sweep.down)||talent.restless_hunter&(!hero_tree.felscarred||buff.demonsurge_annihilation.down))&(!talent.inertia&buff.unbound_chaos.down||buff.inertia_trigger.down)&(!talent.essence_break||cooldown.essence_break.remains>18||cooldown.essence_break.remains<=gcd.remains+talent.inertia*1.5&(!talent.student_of_suffering||(buff.student_of_suffering.up||cooldown.sigil_of_flame.remains>5)))&(cooldown.eye_beam.remains>5||cooldown.eye_beam.remains<=gcd.remains||cooldown.eye_beam.up)\nactions.fs_meta+=/death_sweep,if=hero_tree.felscarred&talent.essence_break&buff.demonsurge_death_sweep.up&(buff.inertia.up&(cooldown.essence_break.remains>buff.inertia.remains||!talent.essence_break)||cooldown.metamorphosis.remains<=5&buff.inertia_trigger.down||buff.inertia.up&buff.demonsurge_abyssal_gaze.up)||talent.inertia&buff.inertia_trigger.down&cooldown.vengeful_retreat.remains>=gcd.max&buff.inertia.down\nactions.fs_meta+=/annihilation,if=buff.metamorphosis.remains<gcd.max&cooldown.blade_dance.remains<buff.metamorphosis.remains||debuff.essence_break.remains&debuff.essence_break.remains<0.5||talent.restless_hunter&(buff.demonsurge_annihilation.up||hero_tree.aldrachi_reaver&buff.inner_demon.up)&cooldown.essence_break.up&cooldown.metamorphosis.up\nactions.fs_meta+=/annihilation,if=(hero_tree.felscarred&buff.demonsurge_annihilation.up&talent.restless_hunter)&(cooldown.eye_beam.remains<gcd.max*3&cooldown.blade_dance.remains||cooldown.metamorphosis.remains<gcd.max*3)\nactions.fs_meta+=/felblade,if=buff.inertia_trigger.up&talent.inertia&debuff.essence_break.down&cooldown.metamorphosis.remains&(!hero_tree.felscarred||cooldown.eye_beam.remains)&(cooldown.blade_dance.remains<=5.5&(talent.essence_break&cooldown.essence_break.remains<=0.5||!talent.essence_break||cooldown.essence_break.remains>=buff.inertia_trigger.remains&cooldown.blade_dance.remains<=4.5&(cooldown.blade_dance.remains||cooldown.blade_dance.remains<=0.5))||buff.metamorphosis.remains<=5.5+talent.shattered_destiny*2)\nactions.fs_meta+=/fel_rush,if=buff.inertia_trigger.up&talent.inertia&debuff.essence_break.down&cooldown.metamorphosis.remains&(!hero_tree.felscarred||cooldown.eye_beam.remains)&(active_enemies>2||hero_tree.felscarred)&(cooldown.felblade.remains&cooldown.essence_break.remains<=0.6)\nactions.fs_meta+=/annihilation,if=buff.inner_demon.up&cooldown.blade_dance.remains&(cooldown.eye_beam.remains<gcd.max*3||cooldown.metamorphosis.remains<gcd.max*3)\nactions.fs_meta+=/essence_break,if=fury>20&(cooldown.metamorphosis.remains>10||cooldown.blade_dance.remains<gcd.max*2)&(buff.inertia_trigger.down||buff.inertia.up&buff.inertia.remains>=gcd.max*3||!talent.inertia)&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)&(!buff.cycle_of_hatred.stack=3||buff.initiative.up)||fight_remains<5\nactions.fs_meta+=/sigil_of_doom,if=cooldown.blade_dance.remains&debuff.essence_break.down&(cooldown.eye_beam.remains>=20||cooldown.eye_beam.remains<=gcd.max)&(!talent.student_of_suffering||buff.demonsurge_sigil_of_doom.up)\nactions.fs_meta+=/immolation_aura,if=buff.demonsurge.up&debuff.essence_break.down&buff.demonsurge_consuming_fire.up&cooldown.blade_dance.remains>=gcd.max&cooldown.eye_beam.remains>=gcd.max&fury.deficit>10+variable.fury_gen\nactions.fs_meta+=/eye_beam,if=debuff.essence_break.down&buff.inner_demon.down\nactions.fs_meta+=/abyssal_gaze,if=debuff.essence_break.down&buff.inner_demon.down&(buff.cycle_of_hatred.stack<4||cooldown.essence_break.remains>=20-gcd.max*talent.student_of_suffering||cooldown.sigil_of_flame.remains&talent.student_of_suffering||cooldown.essence_break.remains<=gcd.max)\nactions.fs_meta+=/death_sweep,if=cooldown.essence_break.remains>=gcd.max*2+talent.student_of_suffering*gcd.max||debuff.essence_break.up||!talent.essence_break\n## [Hekili] `soul_fragments` is not implemented.\n## actions.fs_meta+=/annihilation,if=cooldown.blade_dance.remains||fury>60||soul_fragments.total>0||buff.metamorphosis.remains<5\nactions.fs_meta+=/annihilation,if=cooldown.blade_dance.remains||fury>60||buff.metamorphosis.remains<5\nactions.fs_meta+=/immolation_aura,if=buff.out_of_range.down&recharge_time<(cooldown.eye_beam.remains<?buff.metamorphosis.remains)&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>full_recharge_time)\nactions.fs_meta+=/felblade,if=(buff.out_of_range.down||fury.deficit>40+variable.fury_gen*(0.5%gcd.max))&!buff.inertia_trigger.up\nactions.fs_meta+=/annihilation\nactions.fs_meta+=/throw_glaive,if=buff.unbound_chaos.down&recharge_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.fs_meta+=/fel_rush,if=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.fs_meta+=/demons_bite\n\nactions.fs_opener=potion,if=buff.initiative.up||!talent.initiative\nactions.fs_opener+=/felblade,if=cooldown.the_hunt.up&!talent.a_fire_inside&fury<40\nactions.fs_opener+=/the_hunt,if=talent.inertia||buff.initiative.up||!talent.initiative\nactions.fs_opener+=/felblade,if=talent.inertia&buff.inertia_trigger.up&active_enemies=1&buff.metamorphosis.up&cooldown.metamorphosis.up&cooldown.essence_break.up&buff.inner_demon.down&buff.demonsurge_annihilation.down\nactions.fs_opener+=/fel_rush,if=talent.inertia&buff.inertia_trigger.up&(cooldown.felblade.remains||active_enemies>1)&buff.metamorphosis.up&cooldown.metamorphosis.up&cooldown.essence_break.up&buff.inner_demon.down&buff.demonsurge_annihilation.down\nactions.fs_opener+=/essence_break,if=buff.metamorphosis.up&(!talent.inertia||buff.inertia.up)&buff.inner_demon.down&buff.demonsurge_annihilation.down\nactions.fs_opener+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&time>4&buff.metamorphosis.up&(!talent.inertia||buff.inertia_trigger.down)&talent.essence_break&buff.inner_demon.down&(buff.initiative.down||gcd.remains<0.1)&cooldown.blade_dance.remains\nactions.fs_opener+=/felblade,if=talent.inertia&buff.inertia_trigger.up&hero_tree.felscarred&debuff.essence_break.down&talent.essence_break&cooldown.metamorphosis.remains&active_enemies<=2&cooldown.sigil_of_flame.remains\nactions.fs_opener+=/sigil_of_doom,if=(buff.inner_demon.down||buff.out_of_range.up)&debuff.essence_break.down\nactions.fs_opener+=/annihilation,if=(buff.inner_demon.up||buff.demonsurge_annihilation.up)&(cooldown.metamorphosis.up||!talent.essence_break&cooldown.blade_dance.remains)\nactions.fs_opener+=/death_sweep,if=hero_tree.felscarred&buff.demonsurge_death_sweep.up&!talent.restless_hunter\nactions.fs_opener+=/annihilation,if=hero_tree.felscarred&buff.demonsurge_annihilation.up&(!talent.essence_break||buff.inner_demon.up)\nactions.fs_opener+=/immolation_aura,if=talent.a_fire_inside&talent.burning_wound&buff.metamorphosis.down\nactions.fs_opener+=/felblade,if=fury<40&debuff.essence_break.down&buff.inertia_trigger.down&cooldown.metamorphosis.up\nactions.fs_opener+=/metamorphosis,if=buff.metamorphosis.up&buff.inner_demon.down&buff.demonsurge_annihilation.down&cooldown.blade_dance.remains\nactions.fs_opener+=/eye_beam,if=buff.metamorphosis.down||debuff.essence_break.down&buff.inner_demon.down&(cooldown.blade_dance.remains||talent.essence_break&cooldown.essence_break.up)&(!talent.a_fire_inside||action.immolation_aura.charges=0)\nactions.fs_opener+=/abyssal_gaze,if=debuff.essence_break.down&buff.inner_demon.down\nactions.fs_opener+=/death_sweep\nactions.fs_opener+=/annihilation\nactions.fs_opener+=/demons_bite\nactions.fs_opener+=/variable,name=opened,value=true",
|
|
["version"] = 20250413,
|
|
["warnings"] = "The import for 'fs_cooldown' required some automated changes.\nLine 5: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 5: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 5: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.2.is.skardyns_grace' to 'trinket.t2.is.skardyns_grace' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.1.is.skardyns_grace' to 'trinket.t1.is.skardyns_grace' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 11: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 11: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 11: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 11: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_use_buff' (1x).\nLine 11: Converted 'trinket.1.is.skardyns_grace' to 'trinket.t1.is.skardyns_grace' (1x).\nLine 11: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 11: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 12: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 12: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 12: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 12: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (1x).\nLine 12: Converted 'trinket.2.is.skardyns_grace' to 'trinket.t2.is.skardyns_grace' (1x).\nLine 12: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 12: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 12: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 12: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nThe following auras were used in the action list but were not found in the addon database:\n - any\n\nThe import for 'fs' required some automated changes.\nLine 12: Converted operations in 'fury.deficit>40+variable.fury_gen*(0.5%gcd.max)&(cooldown.vengeful_retreat.remains>=action.felblade.cooldown+0.5&talent.inertia.enabled&active_enemies=1||!talent.inertia.enabled||hero_tree.aldrachi_reaver||cooldown.essence_break.remains)&cooldown.metamorphosis.remains&cooldown.eye_beam.remains>=0.5+gcd.max*(talent.student_of_suffering.enabled&cooldown.sigil_of_flame.remains<=gcd.max)' to 'fury.deficit>40+variable.fury_gen*(0.5/gcd.max)&(cooldown.vengeful_retreat.remains>=action.felblade.cooldown+0.5&talent.inertia.enabled&active_enemies=1||!talent.inertia.enabled||hero_tree.aldrachi_reaver||cooldown.essence_break.remains)&cooldown.metamorphosis.remains&cooldown.eye_beam.remains>=0.5+gcd.max*(talent.student_of_suffering.enabled&cooldown.sigil_of_flame.remains<=gcd.max)'.\n\nThe import for 'precombat' required some automated changes.\nLine 1: Converted 'trinket.1.is.improvised_seaforium_pacemaker' to 'trinket.t1.is.improvised_seaforium_pacemaker' (1x).\nLine 2: Converted 'trinket.2.is.improvised_seaforium_pacemaker' to 'trinket.t2.is.improvised_seaforium_pacemaker' (1x).\nLine 3: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 3: Converted 'trinket.1.is.junkmaestros_mega_magnet' to 'trinket.t1.is.junkmaestros_mega_magnet' (1x).\nLine 3: Converted 'trinket.1.is.geargrinders_spare_keys' to 'trinket.t1.is.geargrinders_spare_keys' (1x).\nLine 3: Converted 'trinket.1.is.ravenous_honey_buzzer' to 'trinket.t1.is.ravenous_honey_buzzer' (1x).\nLine 3: Converted 'trinket.1.is.grim_codex' to 'trinket.t1.is.grim_codex' (1x).\nLine 4: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 4: Converted 'trinket.2.is.junkmaestros_mega_magnet' to 'trinket.t2.is.junkmaestros_mega_magnet' (1x).\nLine 4: Converted 'trinket.2.is.geargrinders_spare_keys' to 'trinket.t2.is.geargrinders_spare_keys' (1x).\nLine 4: Converted 'trinket.2.is.ravenous_honey_buzzer' to 'trinket.t2.is.ravenous_honey_buzzer' (1x).\nLine 4: Converted 'trinket.2.is.grim_codex' to 'trinket.t2.is.grim_codex' (1x).\n\nThe import for 'default' required some automated changes.\nLine 2: Converted operations in 'talent.demon_blades.enabled*(1%(2.6*attack_haste)*((talent.demonsurge.enabled&buff.metamorphosis.up)*3+12))+buff.immolation_aura.stack*6+buff.tactical_retreat.up*10' to 'talent.demon_blades.enabled*(1/(2.6*attack_haste)*((talent.demonsurge.enabled&buff.metamorphosis.up)*3+12))+buff.immolation_aura.stack*6+buff.tactical_retreat.up*10'.\nLine 4: Converted 'trinket.1.is.house_of_cards' to 'trinket.t1.is.house_of_cards' (1x).\nLine 4: Converted 'trinket.1.is.signet_of_the_priory' to 'trinket.t1.is.signet_of_the_priory' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.2.is.house_of_cards' to 'trinket.t2.is.house_of_cards' (1x).\nLine 4: Converted 'trinket.2.is.signet_of_the_priory' to 'trinket.t2.is.signet_of_the_priory' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\n\nThe import for 'ar_cooldown' required some automated changes.\nLine 5: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 5: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 5: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.2.is.skardyns_grace' to 'trinket.t2.is.skardyns_grace' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.1.is.skardyns_grace' to 'trinket.t1.is.skardyns_grace' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 13: Converted 'trinket.1.is.ravenous_honey_buzzer' to 'trinket.t1.is.ravenous_honey_buzzer' (1x).\nLine 13: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 13: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 13: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 13: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 13: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 13: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (1x).\nLine 13: Converted 'trinket.2.is.ravenous_honey_buzzer' to 'trinket.t2.is.ravenous_honey_buzzer' (1x).\nLine 13: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 13: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 13: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 13: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 13: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 13: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 14: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 14: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.is.mister_locknstalk' to 'trinket.t1.is.mister_locknstalk' (1x).\nLine 14: Converted 'trinket.1.is.skardyns_grace' to 'trinket.t1.is.skardyns_grace' (1x).\nLine 14: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 14: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 14: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 15: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 15: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 15: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 15: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (1x).\nLine 15: Converted 'trinket.2.is.mister_locknstalk' to 'trinket.t2.is.mister_locknstalk' (1x).\nLine 15: Converted 'trinket.2.is.skardyns_grace' to 'trinket.t2.is.skardyns_grace' (1x).\nLine 15: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 15: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 15: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nThe following auras were used in the action list but were not found in the addon database:\n - any\n\nThe import for 'fs_meta' required some automated changes.\nLine 18: Converted operations in '(buff.out_of_range.down||fury.deficit>40+variable.fury_gen*(0.5%gcd.max))&!buff.inertia_trigger.up' to '(buff.out_of_range.down||fury.deficit>40+variable.fury_gen*(0.5/gcd.max))&!buff.inertia_trigger.up'.\n\nThe import for 'ar' required some automated changes.\nLine 14: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 14: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 14: Converted 'trinket.t2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 14: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 23: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 23: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 23: Converted 'trinket.t2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 23: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\n\nImported 11 action lists.\n",
|
|
["lists"] = {
|
|
["fs_cooldown"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( cooldown.eye_beam.remains >= 20 & ( ! talent.essence_break.enabled || debuff.essence_break.up ) & buff.fel_barrage.down & ( raid_event.adds.in > 40 || ( raid_event.adds.remains > 8 || ! talent.fel_barrage.enabled ) & active_enemies > 2 ) || ! talent.chaotic_transformation.enabled || boss & fight_remains < 30 ) & buff.inner_demon.down & ( ! talent.restless_hunter.enabled & cooldown.blade_dance.remains > gcd.max * 3 || prev_gcd.1.death_sweep ) ) & ! talent.inertia.enabled & ! talent.essence_break.enabled & ( hero_tree.aldrachi_reaver || buff.demonsurge_death_sweep.down ) & ( variable.opened || time > 15 )",
|
|
["action"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.blade_dance.remains & ( buff.metamorphosis.up & cooldown.eye_beam.remains & ( ! talent.essence_break.enabled || debuff.essence_break.up || talent.shattered_destiny.enabled || hero_tree.felscarred ) & buff.fel_barrage.down & ( raid_event.adds.in > 40 || ( raid_event.adds.remains > 8 || ! talent.fel_barrage.enabled ) & active_enemies > 2 ) || ! talent.chaotic_transformation.enabled || boss & fight_remains < 30 ) & ( buff.inner_demon.down & ( ! talent.restless_hunter.enabled || prev_gcd.1.death_sweep ) ) ) & ( talent.inertia.enabled || talent.essence_break.enabled ) & ( hero_tree.aldrachi_reaver || ( buff.demonsurge_death_sweep.down & buff.metamorphosis.up || buff.metamorphosis.remains < gcd.max ) & ( buff.demonsurge_annihilation.down ) ) & ( variable.opened || time > 15 )",
|
|
["action"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 35 || buff.metamorphosis.up || debuff.essence_break.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "equipped.mad_queens_mandate || equipped.treacherous_transmitter || equipped.skardyns_grace || equipped.signet_of_the_priory || equipped.junkmaestros_mega_magnet || equipped.geargrinders_spare_keys || equipped.mister_locknstalk || equipped.ravenous_honey_buzzer",
|
|
["var_name"] = "special_trinket",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mad_queens_mandate",
|
|
["criteria"] = "( ( ! talent.initiative.enabled || buff.initiative.up || time > 5 ) & ( buff.metamorphosis.remains > 5 || buff.metamorphosis.down ) & ( trinket.t1.is.mad_queens_mandate & ( trinket.t2.cooldown.duration < 10 || trinket.t2.cooldown.remains > 10 || ! trinket.t2.has_use_buff ) || trinket.t2.is.mad_queens_mandate & ( trinket.t1.cooldown.duration < 10 || trinket.t1.cooldown.remains > 10 || ! trinket.t1.has_use_buff ) ) & fight_remains > 120 || boss & fight_remains < 10 & fight_remains < buff.metamorphosis.remains ) & debuff.essence_break.down || fight_remains < 5",
|
|
["name"] = "mad_queens_mandate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "treacherous_transmitter",
|
|
["criteria"] = "! equipped.mad_queens_mandate || equipped.mad_queens_mandate & ( trinket.t1.is.mad_queens_mandate & trinket.t1.cooldown.remains > fight_remains || trinket.t2.is.mad_queens_mandate & trinket.t2.cooldown.remains > fight_remains ) || fight_remains > 25",
|
|
["name"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "skardyns_grace",
|
|
["criteria"] = "( ! equipped.mad_queens_mandate || fight_remains > 25 || trinket.t2.is.skardyns_grace & trinket.t1.cooldown.remains > fight_remains || trinket.t1.is.skardyns_grace & trinket.t2.cooldown.remains > fight_remains || trinket.t1.cooldown.duration < 10 || trinket.t2.cooldown.duration < 10 ) & buff.metamorphosis.up",
|
|
["name"] = "skardyns_grace",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "signet_of_the_priory",
|
|
["criteria"] = "time < 20 & ( ! talent.inertia.enabled || buff.inertia.up ) || ( buff.metamorphosis.up & cooldown.essence_break.up || boss & fight_remains < 20 ) & time > 20",
|
|
["name"] = "signet_of_the_priory",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "junkmaestros_mega_magnet",
|
|
["criteria"] = "buff.initiative.up",
|
|
["name"] = "junkmaestros_mega_magnet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "geargrinders_spare_keys",
|
|
["criteria"] = "buff.initiative.up",
|
|
["name"] = "geargrinders_spare_keys",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "( ( cooldown.eye_beam.remains < gcd.max & active_enemies > 1 || buff.metamorphosis.up ) & ( raid_event.adds.in > trinket.t1.cooldown.duration - 15 || raid_event.adds.remains > 8 ) || ! trinket.t1.has_use_buff || boss & fight_remains < 25 ) & ! trinket.t1.is.skardyns_grace & ! trinket.t1.is.mad_queens_mandate & ! trinket.t1.is.treacherous_transmitter & ( ! variable.special_trinket || trinket.t2.cooldown.remains > 20 )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "( ( cooldown.eye_beam.remains < gcd.max & active_enemies > 1 || buff.metamorphosis.up ) & ( raid_event.adds.in > trinket.t2.cooldown.duration - 15 || raid_event.adds.remains > 8 ) || ! trinket.t2.has_use_buff || boss & fight_remains < 25 ) & ! trinket.t2.is.skardyns_grace & ! trinket.t2.is.mad_queens_mandate & ! trinket.t2.is.treacherous_transmitter & ( ! variable.special_trinket || trinket.t1.cooldown.remains > 20 )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & ( active_dot.reavers_mark > 0 || debuff.reavers_mark.up || ! talent.reavers_mark.enabled ) & buff.reavers_glaive.down & ( buff.metamorphosis.remains > 5 || buff.metamorphosis.down ) & ( ! talent.initiative.enabled || buff.initiative.up || time > 5 ) & time > 5 & ( ! talent.inertia.enabled & buff.unbound_chaos.down || buff.inertia_trigger.down ) & ( hero_tree.aldrachi_reaver || buff.metamorphosis.down ) || boss & fight_remains <= 30",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & cooldown.blade_dance.remains & ( variable.opened || time > 15 )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
},
|
|
["fs"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Fel-Scarred",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "fs_cooldown",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time < 15 & toggle.cooldowns & ( cooldown.eye_beam.up || cooldown.metamorphosis.up || talent.essence_break.enabled & cooldown.essence_break.up || buff.demonsurge.stack < 3 + talent.student_of_suffering.enabled + talent.a_fire_inside.enabled )",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "fs_opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unbound_chaos.enabled & buff.unbound_chaos.up & ! talent.inertia.enabled & active_enemies <= 2 & ( talent.student_of_suffering.enabled & cooldown.eye_beam.remains - gcd.max * 2 <= buff.unbound_chaos.remains || hero_tree.aldrachi_reaver )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unbound_chaos.enabled & buff.unbound_chaos.up & ! talent.inertia.enabled & active_enemies > 3 & ( talent.student_of_suffering.enabled & cooldown.eye_beam.remains - gcd.max * 2 <= buff.unbound_chaos.remains )",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.up",
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "fs_meta",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vengeful_retreat",
|
|
["criteria"] = "talent.initiative.enabled & ( cooldown.eye_beam.remains > 15 & gcd.remains < 0.3 || gcd.remains < 0.2 & cooldown.eye_beam.remains <= gcd.remains & ( cooldown.metamorphosis.remains > 10 || cooldown.blade_dance.remains < gcd.max * 3 ) ) & ( ! talent.student_of_suffering.enabled || cooldown.sigil_of_flame.remains ) & ( cooldown.essence_break.remains <= gcd.max * 2 & talent.student_of_suffering.enabled & cooldown.sigil_of_flame.remains || cooldown.essence_break.remains >= 18 || ! talent.student_of_suffering.enabled ) & ( cooldown.metamorphosis.remains > 10 || hero_tree.aldrachi_reaver ) & time > 20",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.student_of_suffering.enabled & cooldown.eye_beam.remains <= gcd.max & ( cooldown.essence_break.remains < gcd.max * 3 ) & ( cooldown.metamorphosis.remains > 10 || cooldown.blade_dance.remains < gcd.max * 2 )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.initiative.enabled || buff.initiative.up || cooldown.vengeful_retreat.remains >= 10 || cooldown.metamorphosis.up ) & ( cooldown.blade_dance.remains < 7 || raid_event.adds.up ) || boss & fight_remains < 10",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.eye_beam.remains >= gcd.max * 4 || debuff.essence_break.up",
|
|
["action"] = "blade_dance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.up",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.a_fire_inside.enabled & talent.isolated_prey.enabled & talent.flamebound.enabled & active_enemies = 1 & cooldown.eye_beam.remains >= gcd.max",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit > 40 + variable.fury_gen * ( 0.5 / gcd.max ) & ( cooldown.vengeful_retreat.remains >= action.felblade.cooldown + 0.5 & talent.inertia.enabled & active_enemies = 1 || ! talent.inertia.enabled || hero_tree.aldrachi_reaver || cooldown.essence_break.remains ) & cooldown.metamorphosis.remains & cooldown.eye_beam.remains >= 0.5 + gcd.max * ( talent.student_of_suffering.enabled & cooldown.sigil_of_flame.remains <= gcd.max )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.eye_beam.remains >= gcd.max * 4 || ( fury >= 70 - 30 * ( talent.student_of_suffering.enabled & ( cooldown.sigil_of_flame.remains <= gcd.max || cooldown.sigil_of_flame.up ) ) - buff.chaos_theory.up * 20 - variable.fury_gen )",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > full_recharge_time & cooldown.eye_beam.remains >= gcd.max * ( 1 + talent.student_of_suffering.enabled & ( cooldown.sigil_of_flame.remains <= gcd.max || cooldown.sigil_of_flame.up ) ) || active_enemies > desired_targets & active_enemies > 2",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.out_of_range.down & buff.inertia_trigger.down & cooldown.eye_beam.remains >= gcd.max * ( 1 + talent.student_of_suffering.enabled & ( cooldown.sigil_of_flame.remains <= gcd.max || cooldown.sigil_of_flame.up ) )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.out_of_range.down & debuff.essence_break.down & ! talent.student_of_suffering.enabled & ( ! talent.fel_barrage.enabled || cooldown.fel_barrage.remains > 25 || ( active_enemies = 1 & ! raid_event.adds.exists ) )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1",
|
|
["action"] = "throw_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.down & recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & active_enemies > 1",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.out_of_range.down & debuff.essence_break.down & fury < 100",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
["ar_cooldown"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ( cooldown.eye_beam.remains >= 20 || talent.cycle_of_hatred.enabled & cooldown.eye_beam.remains >= 13 ) & ( ! talent.essence_break.enabled || debuff.essence_break.up ) & buff.fel_barrage.down & ( raid_event.adds.in > 40 || ( raid_event.adds.remains > 8 || ! talent.fel_barrage.enabled ) & active_enemies > 2 ) || ! talent.chaotic_transformation.enabled || boss & fight_remains < 30 ) & buff.inner_demon.down & ( ! talent.restless_hunter.enabled & cooldown.blade_dance.remains > gcd.max * 3 || prev_gcd.1.death_sweep ) ) & ! talent.inertia.enabled & ! talent.essence_break.enabled & ( variable.opened || time > 15 )",
|
|
["action"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.blade_dance.remains & ( ( prev_gcd.1.death_sweep || prev_gcd.2.death_sweep || prev_gcd.3.death_sweep || buff.metamorphosis.up & buff.metamorphosis.remains < gcd.max ) & cooldown.eye_beam.remains & ( ! talent.essence_break.enabled || debuff.essence_break.up || talent.shattered_destiny.enabled ) & buff.fel_barrage.down & ( raid_event.adds.in > 40 || ( raid_event.adds.remains > 8 || ! talent.fel_barrage.enabled ) & active_enemies > 2 ) || ! talent.chaotic_transformation.enabled || boss & fight_remains < 30 ) & ( buff.inner_demon.down & ( buff.rending_strike.down || ! talent.restless_hunter.enabled || prev_gcd.1.death_sweep ) ) ) & ( talent.inertia.enabled || talent.essence_break.enabled ) & ( variable.opened || time > 15 )",
|
|
["action"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 35 || ( buff.metamorphosis.up || debuff.essence_break.up ) & time > 10",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "equipped.mad_queens_mandate || equipped.treacherous_transmitter || equipped.skardyns_grace || equipped.signet_of_the_priory || equipped.junkmaestros_mega_magnet || equipped.geargrinders_spare_keys || equipped.mister_locknstalk || equipped.ravenous_honey_buzzer || equipped.grim_codex",
|
|
["var_name"] = "special_trinket",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mad_queens_mandate",
|
|
["criteria"] = "( ( ! talent.initiative.enabled || buff.initiative.up || time > 5 ) & ( buff.metamorphosis.remains > 5 || buff.metamorphosis.down ) & ( trinket.t1.is.mad_queens_mandate & ( trinket.t2.cooldown.duration < 10 || trinket.t2.cooldown.remains > 10 || ! trinket.t2.has_use_buff ) || trinket.t2.is.mad_queens_mandate & ( trinket.t1.cooldown.duration < 10 || trinket.t1.cooldown.remains > 10 || ! trinket.t1.has_use_buff ) ) & fight_remains > 120 || boss & fight_remains < 10 & fight_remains < buff.metamorphosis.remains ) & debuff.essence_break.down || fight_remains < 5",
|
|
["name"] = "mad_queens_mandate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "treacherous_transmitter",
|
|
["criteria"] = "! equipped.mad_queens_mandate || equipped.mad_queens_mandate & ( trinket.t1.is.mad_queens_mandate & trinket.t1.cooldown.remains > fight_remains || trinket.t2.is.mad_queens_mandate & trinket.t2.cooldown.remains > fight_remains ) || fight_remains > 25",
|
|
["name"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "skardyns_grace",
|
|
["criteria"] = "( ! equipped.mad_queens_mandate || fight_remains > 25 || trinket.t2.is.skardyns_grace & trinket.t1.cooldown.remains > fight_remains || trinket.t1.is.skardyns_grace & trinket.t2.cooldown.remains > fight_remains || trinket.t1.cooldown.duration < 10 || trinket.t2.cooldown.duration < 10 ) & buff.metamorphosis.up",
|
|
["name"] = "skardyns_grace",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "house_of_cards",
|
|
["criteria"] = "( cooldown.eye_beam.up || buff.metamorphosis.up ) || boss & fight_remains < 20",
|
|
["name"] = "house_of_cards",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "signet_of_the_priory",
|
|
["criteria"] = "time < 20 & ( ! talent.inertia.enabled || buff.inertia.up ) || buff.metamorphosis.up & time > 20 || boss & fight_remains < 20",
|
|
["name"] = "signet_of_the_priory",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "junkmaestros_mega_magnet",
|
|
["criteria"] = "variable.tier33_4piece & variable.double_on_use || fight_remains < 20",
|
|
["name"] = "junkmaestros_mega_magnet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "geargrinders_spare_keys",
|
|
["criteria"] = "variable.tier33_4piece & variable.double_on_use || fight_remains < 20",
|
|
["name"] = "geargrinders_spare_keys",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "grim_codex",
|
|
["criteria"] = "variable.tier33_4piece & variable.double_on_use || boss & fight_remains < 10",
|
|
["name"] = "grim_codex",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ravenous_honey_buzzer",
|
|
["criteria"] = "( variable.tier33_4piece & ( buff.inertia.down & ( cooldown.essence_break.remains & debuff.essence_break.down || ! talent.essence_break.enabled ) ) & ( trinket.t1.is.ravenous_honey_buzzer & ( trinket.t2.cooldown.duration < 10 || trinket.t2.cooldown.remains > 10 || ! trinket.t2.has_use_buff ) || trinket.t2.is.ravenous_honey_buzzer & ( trinket.t1.cooldown.duration < 10 || trinket.t1.cooldown.remains > 10 || ! trinket.t1.has_use_buff ) ) & fight_remains > 120 || boss & fight_remains < 10 & fight_remains < buff.metamorphosis.remains ) || fight_remains < 5",
|
|
["name"] = "ravenous_honey_buzzer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "( ( cooldown.eye_beam.remains < gcd.max & active_enemies > 1 || buff.metamorphosis.up ) & ( raid_event.adds.in > trinket.t1.cooldown.duration - 15 || raid_event.adds.remains > 8 ) || ! trinket.t1.has_use_buff || boss & fight_remains < 25 ) & ! trinket.t1.is.mister_locknstalk & ! variable.trinket1_crit & ! trinket.t1.is.skardyns_grace & ! trinket.t1.is.treacherous_transmitter & ( ! variable.special_trinket || trinket.t2.cooldown.remains > 20 )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "( ( cooldown.eye_beam.remains < gcd.max & active_enemies > 1 || buff.metamorphosis.up ) & ( raid_event.adds.in > trinket.t2.cooldown.duration - 15 || raid_event.adds.remains > 8 ) || ! trinket.t2.has_use_buff || boss & fight_remains < 25 ) & ! trinket.t2.is.mister_locknstalk & ! variable.trinket2_crit & ! trinket.t2.is.skardyns_grace & ! trinket.t2.is.treacherous_transmitter & ( ! variable.special_trinket || trinket.t1.cooldown.remains > 20 )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > 90 ) & ( ! talent.reavers_mark.enabled || debuff.reavers_mark.up ) & buff.reavers_glaive.down & ( buff.metamorphosis.remains > 5 || buff.metamorphosis.down ) & ( ! talent.initiative.enabled || buff.initiative.up || time > 5 ) & time > 5 & ( ! talent.inertia.enabled & buff.unbound_chaos.down || buff.inertia_trigger.down )",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & ( ! talent.reavers_mark.enabled || active_dot.reavers_mark > 0 || debuff.reavers_mark.remains >= 2 - talent.quickened_sigils.enabled ) & cooldown.blade_dance.remains & time > 15",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
},
|
|
["ar_fel_barrage"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.felblade.remains < gcd.max || cooldown.sigil_of_flame.remains < gcd.max",
|
|
["var_name"] = "generator_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "gcd.max * 32",
|
|
["var_name"] = "gcd_drain",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inner_demon.up",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.down & ( active_enemies > 1 & raid_event.adds.up || raid_event.adds.in > 40 )",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.down & buff.metamorphosis.up",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.down",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_enemies > 2 || buff.fel_barrage.up ) & ( cooldown.eye_beam.remains > recharge_time + 3 )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.down & active_enemies > 1",
|
|
["action"] = "glaive_tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.down",
|
|
["action"] = "blade_dance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury > 100 & ( raid_event.adds.in > 90 || raid_event.adds.in < gcd.max || raid_event.adds.remains > 4 & active_enemies > 2 )",
|
|
["action"] = "fel_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & buff.fel_barrage.up",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit > 40 & buff.fel_barrage.up",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.up & fury.deficit > 40",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury - variable.gcd_drain - 35 > 0 & ( buff.fel_barrage.remains < 3 || variable.generator_up || fury > 80 || variable.fury_gen > 18 )",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury - variable.gcd_drain - 30 > 0 & ( buff.fel_barrage.remains < 3 || variable.generator_up || fury > 80 || variable.fury_gen > 18 )",
|
|
["action"] = "glaive_tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury - variable.gcd_drain - 35 > 0 & ( buff.fel_barrage.remains < 3 || variable.generator_up || fury > 80 || variable.fury_gen > 18 )",
|
|
["action"] = "blade_dance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit > 40 & buff.fel_barrage.up",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury > 40 & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > 80 )",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury - variable.gcd_drain - 40 > 20 & ( buff.fel_barrage.remains < 3 || variable.generator_up || fury > 80 || variable.fury_gen > 18 )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury - variable.gcd_drain - 40 > 20 & ( cooldown.fel_barrage.remains & cooldown.fel_barrage.remains < 10 & fury > 100 || buff.fel_barrage.up & ( buff.fel_barrage.remains * variable.fury_gen - buff.fel_barrage.remains * 32 ) > 0 )",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["action"] = "demons_bite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["ar_meta"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains < gcd.max || debuff.essence_break.up",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vengeful_retreat",
|
|
["criteria"] = "talent.initiative.enabled & ( variable.opened || time > 15 || cooldown.death_sweep.remains ) & ( cooldown.metamorphosis.remains & ( ! talent.essence_break.enabled || cooldown.essence_break.remains <= 0.6 || cooldown.essence_break.remains > 10 ) || cooldown.metamorphosis.up & talent.essence_break.enabled & cooldown.essence_break.remains <= 0.6 & buff.inner_demon.down & cooldown.blade_dance.remains <= gcd.max + 0.5 || talent.restless_hunter.enabled ) & cooldown.eye_beam.remains & ( ! talent.inertia.enabled & buff.unbound_chaos.down || buff.inertia_trigger.down )",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & cooldown.essence_break.remains <= 1 & cooldown.blade_dance.remains <= gcd.max * 2 & cooldown.metamorphosis.remains <= gcd.max * 3",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury >= 30 & talent.restless_hunter.enabled & cooldown.metamorphosis.up & ( talent.inertia.enabled & buff.inertia.up || ! talent.inertia.enabled ) & cooldown.blade_dance.remains <= gcd.max",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains < gcd.max || debuff.essence_break.remains & debuff.essence_break.remains < 0.5 & cooldown.blade_dance.remains || buff.inner_demon.up & cooldown.essence_break.up & cooldown.metamorphosis.up",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & cooldown.metamorphosis.remains & ( cooldown.eye_beam.remains <= 0.5 || cooldown.essence_break.remains <= 0.5 || cooldown.blade_dance.remains <= 5.5 || buff.initiative.remains < gcd.remains )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & ( ( cooldown.metamorphosis.remains & active_enemies > 2 ) || ( cooldown.blade_dance.remains < gcd.max * 3 & cooldown.metamorphosis.remains & active_enemies > 2 ) )",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges = 2 & active_enemies > 1 & debuff.essence_break.down",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inner_demon.up & ( cooldown.eye_beam.remains < gcd.max * 3 & cooldown.blade_dance.remains || cooldown.metamorphosis.remains < gcd.max * 3 )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time < 20 & buff.thrill_of_the_fight_damage.remains > gcd.max * 4 & buff.metamorphosis.remains >= gcd.max * 2 & cooldown.metamorphosis.up & cooldown.death_sweep.remains <= gcd.max & buff.inertia.up",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury > 20 & ( cooldown.blade_dance.remains < gcd.max * 3 || cooldown.blade_dance.up ) & ( buff.unbound_chaos.down & ! talent.inertia.enabled || buff.inertia.up ) & buff.out_of_range.remains < gcd.max & ( ! talent.shattered_destiny.enabled || cooldown.eye_beam.remains > 4 ) || boss & fight_remains < 10",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["action"] = "death_sweep",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & buff.inner_demon.down",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & ( cooldown.blade_dance.remains > gcd.max * 2 || fury > 60 ) & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > 10 )",
|
|
["action"] = "glaive_tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 & debuff.essence_break.down",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.soulscar.enabled & talent.furious_throws.enabled & active_enemies > 1 & debuff.essence_break.down & ( charges = 2 || full_recharge_time < cooldown.blade_dance.remains )",
|
|
["action"] = "throw_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.blade_dance.remains || fury > 60 || buff.metamorphosis.remains < 5 & cooldown.felblade.up",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains > 5 & buff.out_of_range.down",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit > 40 & ! buff.inertia_trigger.up",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & buff.out_of_range.down",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.out_of_range.down & recharge_time < ( cooldown.eye_beam.remains <? buff.metamorphosis.remains ) & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > full_recharge_time )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["action"] = "annihilation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["action"] = "demons_bite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "disrupt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.demon_blades.enabled * ( 1 / ( 2.6 * attack_haste ) * ( ( talent.demonsurge.enabled & buff.metamorphosis.up ) * 3 + 12 ) ) + buff.immolation_aura.stack * 6 + buff.tactical_retreat.up * 10",
|
|
["description"] = "Fury generated per second",
|
|
["var_name"] = "fury_gen",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( buff.initiative.up || ! talent.initiative.enabled ) & ( buff.necessary_sacrifice.up || ! set_bonus.thewarwithin_season_2_4pc )",
|
|
["description"] = "Tier 33 tier set check for trinket lineups withs Necessary Sacrifice",
|
|
["var_name"] = "tier33_4piece",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! equipped.signet_of_the_priory & ! equipped.house_of_cards || ( trinket.t1.is.house_of_cards || trinket.t1.is.signet_of_the_priory ) & trinket.t1.cooldown.remains > 20 || ( trinket.t2.is.house_of_cards || trinket.t2.is.signet_of_the_priory ) & trinket.t2.cooldown.remains > 20",
|
|
["description"] = "Double on use trinket holding for using a stat cooldown trinket and an on use damage trinket",
|
|
["var_name"] = "double_on_use",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["description"] = "Separate actionlists for each hero tree",
|
|
["strict"] = 1,
|
|
["criteria"] = "hero_tree.aldrachi_reaver",
|
|
["list_name"] = "ar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! hero_tree.aldrachi_reaver",
|
|
["list_name"] = "fs",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.improvised_seaforium_pacemaker",
|
|
["var_name"] = "trinket1_steroids",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.improvised_seaforium_pacemaker",
|
|
["var_name"] = "trinket2_steroids",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.mad_queens_mandate || trinket.t1.is.junkmaestros_mega_magnet || trinket.t1.is.geargrinders_spare_keys || trinket.t1.is.ravenous_honey_buzzer || trinket.t1.is.grim_codex",
|
|
["description"] = "Blacklist for trinkets to hold trinket cooldowns for Initiative and Necessary Strike line-up outside standard trinket implementation",
|
|
["var_name"] = "trinket1_crit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.mad_queens_mandate || trinket.t2.is.junkmaestros_mega_magnet || trinket.t2.is.geargrinders_spare_keys || trinket.t2.is.ravenous_honey_buzzer || trinket.t2.is.grim_codex",
|
|
["var_name"] = "trinket2_crit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "rg_ds",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "immolation_aura",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["ar_opener"] = {
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reavers_glaive.down & buff.glaive_flurry.down & buff.rending_strike.down",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vengeful_retreat",
|
|
["criteria"] = "talent.initiative.enabled & time > 4 & buff.metamorphosis.up & ( ! talent.inertia.enabled || buff.inertia_trigger.down ) & buff.inner_demon.down & cooldown.blade_dance.remains & gcd.remains < 0.1",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up & buff.thrill_of_the_fight_damage.down",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.inertia.enabled & talent.unbound_chaos.enabled & buff.unbound_chaos.up & buff.initiative.up & debuff.essence_break.down & active_enemies <= 2",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.inertia.enabled & talent.unbound_chaos.enabled & buff.unbound_chaos.up & buff.initiative.up & debuff.essence_break.down & active_enemies > 2",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inner_demon.enabled & buff.inner_demon.up & cooldown.essence_break.up",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.inertia.up || ! talent.inertia.enabled ) & buff.metamorphosis.up & cooldown.blade_dance.remains <= gcd.max & ( ! talent.reavers_mark.enabled || active_dot.reavers_mark > 0 || debuff.reavers_mark.remains >= 2 - talent.quickened_sigils.enabled )",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & talent.restless_hunter.enabled & cooldown.essence_break.up & cooldown.metamorphosis.up & buff.metamorphosis.up & cooldown.blade_dance.remains <= gcd.max",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & ( buff.inertia.down & buff.metamorphosis.up ) & debuff.essence_break.down & active_enemies <= 2",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & ( buff.inertia.down & buff.metamorphosis.up ) & debuff.essence_break.down & ( cooldown.felblade.remains || active_enemies > 2 )",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & buff.metamorphosis.up & cooldown.metamorphosis.remains & debuff.essence_break.down",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.metamorphosis.up & hero_tree.aldrachi_reaver & talent.shattered_destiny.enabled || ! talent.shattered_destiny.enabled & hero_tree.aldrachi_reaver || hero_tree.felscarred ) & ( ! talent.initiative.enabled || talent.inertia.enabled || buff.initiative.up || time > 5 )",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury < 40 & buff.inertia_trigger.down & debuff.essence_break.down",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.reavers_mark.down & debuff.essence_break.down",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up & active_enemies > 2",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.glaive_flurry.up & active_enemies > 2",
|
|
["action"] = "blade_dance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.a_fire_inside.enabled & talent.burning_wound.enabled & buff.metamorphosis.down",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.up & cooldown.blade_dance.remains > gcd.max * 2 & buff.inner_demon.down & ( ! talent.restless_hunter.enabled || prev_gcd.1.death_sweep ) & ( cooldown.essence_break.remains || ! talent.essence_break.enabled )",
|
|
["action"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.reavers_mark.enabled || active_dot.reavers_mark > 0 || debuff.reavers_mark.up ) & ( cooldown.eye_beam.remains & cooldown.metamorphosis.remains )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.down || debuff.essence_break.down & buff.inner_demon.down & ( cooldown.blade_dance.remains || talent.essence_break.enabled & cooldown.essence_break.up )",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.blade_dance.remains < gcd.max & ! hero_tree.felscarred & ! talent.shattered_destiny.enabled & buff.metamorphosis.up || cooldown.eye_beam.remains & cooldown.metamorphosis.remains",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["action"] = "death_sweep",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "annihilation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "demons_bite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "true",
|
|
["var_name"] = "opened",
|
|
},
|
|
},
|
|
["ar"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "false",
|
|
["description"] = "Use to determine if we traversed either of the opener lists.",
|
|
["var_name"] = "opened",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.rending_strike.down & buff.glaive_flurry.up & cooldown.blade_dance.up & gcd.remains = 0 || variable.rg_inc & prev_gcd.1.death_sweep",
|
|
["description"] = "Aldrachi Reaver",
|
|
["var_name"] = "rg_inc",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.fel_barrage.enabled & ( cooldown.fel_barrage.remains < gcd.max * 7 & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in < gcd.max * 7 || raid_event.adds.in > 90 ) & ( cooldown.metamorphosis.remains || active_enemies > 2 ) || buff.fel_barrage.up ) & ! ( active_enemies = 1 & ! raid_event.adds.exists )",
|
|
["var_name"] = "fel_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up & buff.glaive_flurry.up & ( variable.rg_ds = 2 || active_enemies > 2 ) & time > 10",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up & buff.glaive_flurry.up & ( variable.rg_ds = 2 || active_enemies > 2 )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.glaive_flurry.down & buff.rending_strike.down & buff.thrill_of_the_fight_damage.remains < gcd.max * 4 + ( variable.rg_ds = 2 ) + ( cooldown.the_hunt.remains < gcd.max * 3 ) * 3 + ( cooldown.eye_beam.remains < gcd.max * 3 & talent.shattered_destiny.enabled ) * 3 & ( variable.rg_ds = 0 || variable.rg_ds = 1 & cooldown.blade_dance.up || variable.rg_ds = 2 & cooldown.blade_dance.remains ) & ( buff.thrill_of_the_fight_damage.up || ! prev_gcd.1.death_sweep || ! variable.rg_inc ) & active_enemies < 3 & debuff.essence_break.down & ( buff.art_of_the_glaive.stack > 3 || buff.metamorphosis.remains > 2 || cooldown.eye_beam.remains < 10 || fight_remains < 10 )",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.glaive_flurry.down & buff.rending_strike.down & buff.thrill_of_the_fight_damage.remains < 4 & ( buff.thrill_of_the_fight_damage.up || ! prev_gcd.1.death_sweep || ! variable.rg_inc ) & active_enemies > 2 || boss & fight_remains < 10",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "ar_cooldown",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time < 15 & toggle.cooldowns & ( cooldown.eye_beam.up || cooldown.metamorphosis.up || talent.essence_break.enabled & cooldown.essence_break.up )",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "ar_opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & ( ! talent.reavers_mark.enabled || active_dot.reavers_mark > 0 || debuff.reavers_mark.remains >= 2 - talent.quickened_sigils.enabled )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.fel_barrage & raid_event.adds.up",
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "ar_fel_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 & talent.ragefire.enabled & ( ! talent.fel_barrage.enabled || cooldown.fel_barrage.remains > recharge_time ) & debuff.essence_break.down & ( buff.metamorphosis.down || buff.metamorphosis.remains > 5 )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 & talent.ragefire.enabled & raid_event.adds.up & raid_event.adds.remains < 15 & raid_event.adds.remains > 5 & debuff.essence_break.down",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vengeful_retreat",
|
|
["criteria"] = "talent.initiative.enabled & ( cooldown.eye_beam.remains > 15 & gcd.remains < 0.3 || gcd.remains < 0.2 & cooldown.eye_beam.remains <= gcd.remains & cooldown.metamorphosis.remains > 10 ) & ( ! variable.trinket1_steroids & ! variable.trinket2_steroids || variable.trinket1_steroids & trinket.t1.has_stat.any_dps & trinket.t1.has_cooldown & ( trinket.t1.cooldown.remains < gcd.max * 3 || trinket.t1.cooldown.remains > 30 ) || variable.trinket2_steroids & trinket.t2.has_stat.any_dps & trinket.t1.has_cooldown & ( trinket.t2.cooldown.remains < gcd.max * 3 || trinket.t1.cooldown.remains > 30 ) ) & time > 20 & ( ! talent.inertia.enabled & buff.unbound_chaos.down || buff.inertia_trigger.down & buff.metamorphosis.down )",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.fel_barrage || ! talent.demon_blades.enabled & talent.fel_barrage.enabled & ( buff.fel_barrage.up || cooldown.fel_barrage.up ) & buff.metamorphosis.down",
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "ar_fel_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.inertia.enabled & active_enemies = 1 & buff.unbound_chaos.up & buff.initiative.up & debuff.essence_break.down & buff.metamorphosis.down",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & cooldown.eye_beam.remains <= 0.5 & ( cooldown.metamorphosis.remains & talent.looks_can_kill.enabled || active_enemies > 1 )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.up",
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "ar_meta",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & buff.inertia.down & cooldown.blade_dance.remains < 4 & ( cooldown.eye_beam.remains > 5 & cooldown.eye_beam.remains > buff.unbound_chaos.remains || cooldown.eye_beam.remains <= gcd.max & cooldown.vengeful_retreat.remains <= gcd.max + 1 )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.a_fire_inside.enabled & talent.burning_wound.enabled & full_recharge_time < gcd.max * 2 & ( raid_event.adds.in > full_recharge_time || active_enemies > desired_targets )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > desired_targets & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > full_recharge_time )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 15 & cooldown.blade_dance.remains & talent.ragefire.enabled",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.blade_dance.remains < 7 || raid_event.adds.up ) & ( ! variable.trinket1_steroids & ! variable.trinket2_steroids || variable.trinket1_steroids & trinket.t1.has_stat.any_dps & trinket.t1.has_cooldown & ( trinket.t1.cooldown.remains < gcd.max * 3 || trinket.t1.cooldown.remains > 30 ) || variable.trinket2_steroids & trinket.t2.has_stat.any_dps & trinket.t1.has_cooldown & ( trinket.t2.cooldown.remains < gcd.max * 3 || trinket.t1.cooldown.remains > 30 ) ) || boss & fight_remains < 10",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.eye_beam.remains >= gcd.max * 3 & buff.rending_strike.down",
|
|
["action"] = "blade_dance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 3 || debuff.essence_break.down",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit >= 40 + variable.fury_gen * 0.5 & ! buff.inertia_trigger.up",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > 10",
|
|
["action"] = "glaive_tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.up",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & talent.furious_throws.enabled & ( ! talent.screaming_brutality.enabled || charges = 2 || full_recharge_time < cooldown.blade_dance.remains )",
|
|
["action"] = "throw_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.eye_beam.remains > gcd.max * 2 || fury > 80",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & ! talent.a_fire_inside.enabled & debuff.essence_break.down",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > full_recharge_time || active_enemies > desired_targets & active_enemies > 2",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.out_of_range.down & debuff.essence_break.down & ( ! talent.fel_barrage.enabled || cooldown.fel_barrage.remains > 25 || active_enemies = 1 & ! raid_event.adds.exists )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["action"] = "demons_bite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.down & recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1",
|
|
["action"] = "throw_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.down & recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & active_enemies > 1",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.out_of_range.down & debuff.essence_break.down & fury < 100",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
["fs_meta"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains < gcd.max || debuff.essence_break.up || prev_gcd.1.metamorphosis",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.student_of_suffering.enabled & buff.demonsurge_sigil_of_doom.down & debuff.essence_break.down & ( talent.student_of_suffering.enabled & ( ( talent.essence_break.enabled & cooldown.essence_break.remains > 30 - gcd.max || cooldown.essence_break.remains <= gcd.max + talent.inertia.enabled & ( cooldown.vengeful_retreat.remains <= gcd.max || buff.initiative.up ) + gcd.max * ( cooldown.eye_beam.remains <= gcd.max ) ) || ( ! talent.essence_break.enabled & ( cooldown.eye_beam.remains >= 10 || cooldown.eye_beam.remains <= gcd.max ) ) ) )",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vengeful_retreat",
|
|
["criteria"] = "talent.initiative.enabled & ( gcd.remains < 0.3 || talent.inertia.enabled & cooldown.eye_beam.remains > gcd.remains & ( buff.cycle_of_hatred.stack = 2 || buff.cycle_of_hatred.stack = 3 ) ) & ( cooldown.metamorphosis.remains & ( buff.demonsurge_annihilation.down & buff.demonsurge_death_sweep.down ) || talent.restless_hunter.enabled & ( ! hero_tree.felscarred || buff.demonsurge_annihilation.down ) ) & ( ! talent.inertia.enabled & buff.unbound_chaos.down || buff.inertia_trigger.down ) & ( ! talent.essence_break.enabled || cooldown.essence_break.remains > 18 || cooldown.essence_break.remains <= gcd.remains + talent.inertia.enabled * 1.5 & ( ! talent.student_of_suffering.enabled || ( buff.student_of_suffering.up || cooldown.sigil_of_flame.remains > 5 ) ) ) & ( cooldown.eye_beam.remains > 5 || cooldown.eye_beam.remains <= gcd.remains || cooldown.eye_beam.up )",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hero_tree.felscarred & talent.essence_break.enabled & buff.demonsurge_death_sweep.up & ( buff.inertia.up & ( cooldown.essence_break.remains > buff.inertia.remains || ! talent.essence_break.enabled ) || cooldown.metamorphosis.remains <= 5 & buff.inertia_trigger.down || buff.inertia.up & buff.demonsurge_abyssal_gaze.up ) || talent.inertia.enabled & buff.inertia_trigger.down & cooldown.vengeful_retreat.remains >= gcd.max & buff.inertia.down",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains < gcd.max & cooldown.blade_dance.remains < buff.metamorphosis.remains || debuff.essence_break.remains & debuff.essence_break.remains < 0.5 || talent.restless_hunter.enabled & ( buff.demonsurge_annihilation.up || hero_tree.aldrachi_reaver & buff.inner_demon.up ) & cooldown.essence_break.up & cooldown.metamorphosis.up",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( hero_tree.felscarred & buff.demonsurge_annihilation.up & talent.restless_hunter.enabled ) & ( cooldown.eye_beam.remains < gcd.max * 3 & cooldown.blade_dance.remains || cooldown.metamorphosis.remains < gcd.max * 3 )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & debuff.essence_break.down & cooldown.metamorphosis.remains & ( ! hero_tree.felscarred || cooldown.eye_beam.remains ) & ( cooldown.blade_dance.remains <= 5.5 & ( talent.essence_break.enabled & cooldown.essence_break.remains <= 0.5 || ! talent.essence_break.enabled || cooldown.essence_break.remains >= buff.inertia_trigger.remains & cooldown.blade_dance.remains <= 4.5 & ( cooldown.blade_dance.remains || cooldown.blade_dance.remains <= 0.5 ) ) || buff.metamorphosis.remains <= 5.5 + talent.shattered_destiny.enabled * 2 )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & debuff.essence_break.down & cooldown.metamorphosis.remains & ( ! hero_tree.felscarred || cooldown.eye_beam.remains ) & ( active_enemies > 2 || hero_tree.felscarred ) & ( cooldown.felblade.remains & cooldown.essence_break.remains <= 0.6 )",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inner_demon.up & cooldown.blade_dance.remains & ( cooldown.eye_beam.remains < gcd.max * 3 || cooldown.metamorphosis.remains < gcd.max * 3 )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury > 20 & ( cooldown.metamorphosis.remains > 10 || cooldown.blade_dance.remains < gcd.max * 2 ) & ( buff.inertia_trigger.down || buff.inertia.up & buff.inertia.remains >= gcd.max * 3 || ! talent.inertia.enabled ) & buff.out_of_range.remains < gcd.max & ( ! talent.shattered_destiny.enabled || cooldown.eye_beam.remains > 4 ) & ( ! hero_tree.felscarred || active_enemies > 1 || cooldown.metamorphosis.remains > 5 & cooldown.eye_beam.remains ) & ( ! buff.cycle_of_hatred.stack = 3 || buff.initiative.up ) || fight_remains < 5",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.blade_dance.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains >= 20 || cooldown.eye_beam.remains <= gcd.max ) & ( ! talent.student_of_suffering.enabled || buff.demonsurge_sigil_of_doom.up )",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge.up & debuff.essence_break.down & buff.demonsurge_consuming_fire.up & cooldown.blade_dance.remains >= gcd.max & cooldown.eye_beam.remains >= gcd.max & fury.deficit > 10 + variable.fury_gen",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & buff.inner_demon.down",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & buff.inner_demon.down & ( buff.cycle_of_hatred.stack < 4 || cooldown.essence_break.remains >= 20 - gcd.max * talent.student_of_suffering.enabled || cooldown.sigil_of_flame.remains & talent.student_of_suffering.enabled || cooldown.essence_break.remains <= gcd.max )",
|
|
["action"] = "abyssal_gaze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.essence_break.remains >= gcd.max * 2 + talent.student_of_suffering.enabled * gcd.max || debuff.essence_break.up || ! talent.essence_break.enabled",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.blade_dance.remains || fury > 60 || buff.metamorphosis.remains < 5",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.out_of_range.down & recharge_time < ( cooldown.eye_beam.remains <? buff.metamorphosis.remains ) & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > full_recharge_time )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.out_of_range.down || fury.deficit > 40 + variable.fury_gen * ( 0.5 / gcd.max ) ) & ! buff.inertia_trigger.up",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["action"] = "annihilation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.down & recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1",
|
|
["action"] = "throw_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["action"] = "demons_bite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["fs_opener"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.initiative.up || ! talent.initiative.enabled",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.the_hunt.up & ! talent.a_fire_inside.enabled & fury < 40",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled || buff.initiative.up || ! talent.initiative.enabled",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & active_enemies = 1 & buff.metamorphosis.up & cooldown.metamorphosis.up & cooldown.essence_break.up & buff.inner_demon.down & buff.demonsurge_annihilation.down",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & ( cooldown.felblade.remains || active_enemies > 1 ) & buff.metamorphosis.up & cooldown.metamorphosis.up & cooldown.essence_break.up & buff.inner_demon.down & buff.demonsurge_annihilation.down",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.up & ( ! talent.inertia.enabled || buff.inertia.up ) & buff.inner_demon.down & buff.demonsurge_annihilation.down",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vengeful_retreat",
|
|
["criteria"] = "talent.initiative.enabled & time > 4 & buff.metamorphosis.up & ( ! talent.inertia.enabled || buff.inertia_trigger.down ) & talent.essence_break.enabled & buff.inner_demon.down & ( buff.initiative.down || gcd.remains < 0.1 ) & cooldown.blade_dance.remains",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & hero_tree.felscarred & debuff.essence_break.down & talent.essence_break.enabled & cooldown.metamorphosis.remains & active_enemies <= 2 & cooldown.sigil_of_flame.remains",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.inner_demon.down || buff.out_of_range.up ) & debuff.essence_break.down",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.inner_demon.up || buff.demonsurge_annihilation.up ) & ( cooldown.metamorphosis.up || ! talent.essence_break.enabled & cooldown.blade_dance.remains )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hero_tree.felscarred & buff.demonsurge_death_sweep.up & ! talent.restless_hunter.enabled",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hero_tree.felscarred & buff.demonsurge_annihilation.up & ( ! talent.essence_break.enabled || buff.inner_demon.up )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.a_fire_inside.enabled & talent.burning_wound.enabled & buff.metamorphosis.down",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury < 40 & debuff.essence_break.down & buff.inertia_trigger.down & cooldown.metamorphosis.up",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.up & buff.inner_demon.down & buff.demonsurge_annihilation.down & cooldown.blade_dance.remains",
|
|
["action"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.down || debuff.essence_break.down & buff.inner_demon.down & ( cooldown.blade_dance.remains || talent.essence_break.enabled & cooldown.essence_break.up ) & ( ! talent.a_fire_inside.enabled || action.immolation_aura.charges = 0 )",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & buff.inner_demon.down",
|
|
["action"] = "abyssal_gaze",
|
|
},
|
|
{
|
|
["action"] = "death_sweep",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "annihilation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "demons_bite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "true",
|
|
["var_name"] = "opened",
|
|
},
|
|
},
|
|
},
|
|
["author"] = "SimC",
|
|
},
|
|
["Vengeance"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250303,
|
|
["spec"] = 581,
|
|
["desc"] = "2025-03-03: Fixes for Aldrachi Reaver.\n\n2024-10-29: 11.0.5\n\n2024-10-21: SimC update, increase defensiveness a bit\n\n2024-09-22: SimC update\n\n2024-09-12: Reimplement Demonsurge\n\n2024-09-10: SimC update\n\n2024-09-09: Tweak variable names to be consistent for FS vs. AR; fix wait loop\n\n2024-09-01, 09-08: SimC update\n\n2024-07-23: The War Within",
|
|
["profile"] = "actions.precombat+=/variable,name=single_target,value=spell_targets.spirit_bomb=1\nactions.precombat+=/variable,name=small_aoe,value=spell_targets.spirit_bomb>=2&spell_targets.spirit_bomb<=5\nactions.precombat+=/variable,name=big_aoe,value=spell_targets.spirit_bomb>=6\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_buff.agility||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_buff.agility||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit)\nactions.precombat+=/arcane_torrent\nactions.precombat+=/sigil_of_flame,if=hero_tree.aldrachi_reaver||(hero_tree.felscarred&talent.student_of_suffering)\nactions.precombat+=/immolation_aura\n\nactions+=/disrupt\nactions+=/demon_spikes,use_off_gcd=1,if=!buff.demon_spikes.up&(tanking||time<5)\nactions+=/variable,name=num_spawnable_souls,op=reset,default=0\nactions+=/variable,name=num_spawnable_souls,op=max,value=1,if=talent.soul_sigils&cooldown.sigil_of_flame.up\nactions+=/variable,name=num_spawnable_souls,op=max,value=2,if=talent.fracture&cooldown.fracture.charges_fractional>=1&!buff.metamorphosis.up\nactions+=/variable,name=num_spawnable_souls,op=max,value=3,if=talent.fracture&cooldown.fracture.charges_fractional>=1&buff.metamorphosis.up\nactions+=/variable,name=num_spawnable_souls,op=add,value=1,if=talent.soul_carver&(cooldown.soul_carver.remains>(cooldown.soul_carver.duration-3))\nactions+=/infernal_strike,use_off_gcd=1\nactions+=/run_action_list,name=ar,strict=1,if=!hero_tree.felscarred\nactions+=/run_action_list,name=fs,strict=1,if=hero_tree.felscarred\n\nactions.ar+=/variable,name=spb_threshold,op=setif,condition=talent.fiery_demise&dot.fiery_brand.ticking,value=(variable.single_target*5)+(variable.small_aoe*5)+(variable.big_aoe*4),value_else=(variable.single_target*5)+(variable.small_aoe*5)+(variable.big_aoe*4)\nactions.ar+=/variable,name=can_spb,op=setif,condition=talent.spirit_bomb,value=soul_fragments>=variable.spb_threshold,value_else=0\nactions.ar+=/variable,name=can_spb_soon,op=setif,condition=talent.spirit_bomb,value=soul_fragments>=variable.spb_threshold,value_else=0\nactions.ar+=/variable,name=can_spb_one_gcd,op=setif,condition=talent.spirit_bomb,value=(soul_fragments+variable.num_spawnable_souls)>=variable.spb_threshold,value_else=0\n## [Hekili] Move `double_rm_expires` variable from `rg_sequence` to here to prevent an unused variable warning.\nactions.ar+=/variable,name=double_rm_expires,value=time+action.fracture.execute_time+20,if=!buff.glaive_flurry.up&buff.rending_strike.up\nactions.ar+=/variable,name=double_rm_remains,op=setif,condition=(variable.double_rm_expires-time)>0,value=variable.double_rm_expires-time,value_else=0\nactions.ar+=/variable,name=trigger_overflow,op=set,value=0,if=!buff.glaive_flurry.up&!buff.rending_strike.up&!prev_gcd.1.reavers_glaive\nactions.ar+=/variable,name=rg_enhance_cleave,op=setif,condition=variable.trigger_overflow||(spell_targets.spirit_bomb>=4)||(fight_remains<10||target.time_to_die<10),value=1,value_else=0\nactions.ar+=/variable,name=souls_before_next_rg_sequence,value=soul_fragments+buff.art_of_the_glaive.stack\nactions.ar+=/variable,name=souls_before_next_rg_sequence,op=add,value=(1.1*(1+stat.haste))*(variable.double_rm_remains-(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max)))\nactions.ar+=/variable,name=souls_before_next_rg_sequence,op=add,value=3+talent.soul_sigils,if=cooldown.sigil_of_spite.remains<(variable.double_rm_remains-gcd.max-(2-talent.soul_sigils))\nactions.ar+=/variable,name=souls_before_next_rg_sequence,op=add,value=3,if=cooldown.soul_carver.remains<(variable.double_rm_remains-gcd.max)\nactions.ar+=/variable,name=souls_before_next_rg_sequence,op=add,value=3,if=cooldown.soul_carver.remains<(variable.double_rm_remains-gcd.max-3)\nactions.ar+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs||(variable.trinket_1_buffs&((buff.rending_strike.up&buff.glaive_flurry.up)||(prev_gcd.1.reavers_glaive)||(buff.thrill_of_the_fight_damage.remains>8)||(buff.reavers_glaive.up&cooldown.the_hunt.remains<5)))\nactions.ar+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs||(variable.trinket_2_buffs&((buff.rending_strike.up&buff.glaive_flurry.up)||(prev_gcd.1.reavers_glaive)||(buff.thrill_of_the_fight_damage.remains>8)||(buff.reavers_glaive.up&cooldown.the_hunt.remains<5)))\nactions.ar+=/potion,use_off_gcd=1,if=(buff.rending_strike.up&buff.glaive_flurry.up)||prev_gcd.1.reavers_glaive\n##actions.ar+=/call_action_list,name=externals,if=(buff.rending_strike.up&buff.glaive_flurry.up)||prev_gcd.1.reavers_glaive\nactions.ar+=/run_action_list,name=rg_sequence,strict=1,if=buff.glaive_flurry.up||buff.rending_strike.up||prev_gcd.1.reavers_glaive\nactions.ar+=/metamorphosis,use_off_gcd=1,if=time<5||cooldown.fel_devastation.remains>=20\nactions.ar+=/the_hunt,if=!buff.reavers_glaive.up&(buff.art_of_the_glaive.stack+soul_fragments)<20\nactions.ar+=/spirit_bomb,if=variable.can_spb&(soul_fragments>2||prev_gcd.1.sigil_of_spite||prev_gcd.1.soul_carver||(spell_targets.spirit_bomb>=4&talent.fallout&cooldown.immolation_aura.remains<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)))\n## [Hekili] Only call `ar_execute` on boss fights.\nactions.ar+=/call_action_list,name=ar_execute,if=boss&(fight_remains<10||target.time_to_die<10)\nactions.ar+=/soul_cleave,if=!buff.reavers_glaive.up&(variable.double_rm_remains<=(execute_time+(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))&(soul_fragments<3&((buff.art_of_the_glaive.stack+soul_fragments)>=20))\nactions.ar+=/spirit_bomb,if=!buff.reavers_glaive.up&(variable.double_rm_remains<=(execute_time+(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))&((buff.art_of_the_glaive.stack+soul_fragments)>=20)\nactions.ar+=/bulk_extraction,if=!buff.reavers_glaive.up&(variable.double_rm_remains<=(execute_time+(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))&((buff.art_of_the_glaive.stack+(spell_targets>?5))>=20)\nactions.ar+=/reavers_glaive,if=(fury+(variable.rg_enhance_cleave*25)+(talent.keen_engagement*20))>=30&((!buff.thrill_of_the_fight_attack_speed.up||(variable.double_rm_remains<=(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))||(spell_targets.spirit_bomb>=4))&!(buff.rending_strike.up||buff.glaive_flurry.up)\nactions.ar+=/call_action_list,name=rg_prep,if=(fury+(variable.rg_enhance_cleave*25)+(talent.keen_engagement*20))<30&((!buff.thrill_of_the_fight_attack_speed.up||(variable.double_rm_remains<=(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))||(spell_targets.spirit_bomb>=4))\nactions.ar+=/fiery_brand,if=(!talent.fiery_demise&active_dot.fiery_brand=0)||(talent.down_in_flames&(full_recharge_time<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+=/call_action_list,name=rg_sequence_filler,if=(fury<30&((!variable.rg_enhance_cleave&buff.glaive_flurry.up&buff.rending_strike.up)||(variable.rg_enhance_cleave&!buff.rending_strike.up)))||(action.fracture.charges_fractional<1&((variable.rg_enhance_cleave&buff.rending_strike.up&buff.glaive_flurry.up)||(!variable.rg_enhance_cleave&!buff.glaive_flurry.up)))\nactions.rg_sequence+=/fracture,if=((variable.rg_enhance_cleave&buff.rending_strike.up&buff.glaive_flurry.up)||(!variable.rg_enhance_cleave&!buff.glaive_flurry.up))\nactions.rg_sequence+=/shear,if=((variable.rg_enhance_cleave&buff.rending_strike.up&buff.glaive_flurry.up)||(!variable.rg_enhance_cleave&!buff.glaive_flurry.up))\nactions.rg_sequence+=/soul_cleave,if=((!variable.rg_enhance_cleave&buff.glaive_flurry.up&buff.rending_strike.up)||(variable.rg_enhance_cleave&!buff.rending_strike.up))\n## [Hekili] Fall-through actions in case the \"wrong\" sequence of empowered spells was cast.\nactions.rg_sequence+=/fracture,if=buff.rending_strike.up&!buff.glaive_flurry.up\nactions.rg_sequence+=/shear,if=buff.rending_strike.up&!buff.glaive_flurry.up\nactions.rg_sequence+=/soul_cleave,if=!buff.rending_strike.up&buff.glaive_flurry.up\n\nactions.rg_sequence_filler+=/felblade\nactions.rg_sequence_filler+=/fracture,if=!buff.rending_strike.up\n## actions.rg_sequence_filler+=/wait,sec=0.1,if=action.fracture.charges_fractional>=0.8&((variable.rg_enhance_cleave&buff.rending_strike.up&buff.glaive_flurry.up)||(!variable.rg_enhance_cleave&!buff.glaive_flurry.up))\nactions.rg_sequence_filler+=/sigil_of_flame\nactions.rg_sequence_filler+=/sigil_of_spite\nactions.rg_sequence_filler+=/soul_carver\nactions.rg_sequence_filler+=/fel_devastation\nactions.rg_sequence_filler+=/throw_glaive",
|
|
["version"] = 20250303,
|
|
["warnings"] = "The import for 'rg_prep' required some automated changes.\nLine 2: Converted 'talent.unhindered_assault' to 'talent.unhindered_assault.enabled' (1x).\n\nThe import for 'fs' required some automated changes.\nLine 1: Converted 'talent.aura_of_pain' to 'talent.aura_of_pain.enabled' (1x).\nLine 1: Converted operations in '(action.sigil_of_flame.crit_pct+(talent.aura_of_pain.enabled*6))%100' to '(action.sigil_of_flame.crit_pct+(talent.aura_of_pain.enabled*6))/100'.\nLine 1: Converted 'talent.volatile_flameblood' to 'talent.volatile_flameblood.enabled' (1x).\nLine 3: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 8: Converted 'talent.flames_of_fury' to 'talent.flames_of_fury.enabled' (1x).\nLine 11: Converted 'talent.volatile_flameblood' to 'talent.volatile_flameblood.enabled' (1x).\nLine 13: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 14: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 15: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 16: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 17: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 18: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 19: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 20: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 22: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 25: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\nLine 26: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 27: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 28: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 28: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 29: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 29: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 30: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 30: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 31: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 31: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 31: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 31: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 32: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 32: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 32: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 32: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 34: Converted 'talent.fallout' to 'talent.fallout.enabled' (1x).\nLine 34: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 35: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 37: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 37: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\nLine 45: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 45: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 45: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 45: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 46: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 46: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 47: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 48: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\n\nThe import for 'fel_dev' required some automated changes.\nLine 3: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\n\nThe import for 'rg_overflow' required some automated changes.\nLine 3: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 4: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\n\nThe import for 'metamorphosis' required some automated changes.\nLine 4: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 4: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 6: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 6: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 6: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 6: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 7: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 7: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 8: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 11: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 12: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 17: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 18: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 19: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 4: Converted 'talent.soul_sigils' to 'talent.soul_sigils.enabled' (1x).\nLine 5: Converted 'talent.fracture' to 'talent.fracture.enabled' (1x).\nLine 6: Converted 'talent.fracture' to 'talent.fracture.enabled' (1x).\nLine 7: Converted 'talent.soul_carver' to 'talent.soul_carver.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.agility' to 'trinket.t1.has_buff.agility' (1x).\nLine 4: Converted 'trinket.1.has_buff.agility' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 4: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 4: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 4: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 4: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.agility' to 'trinket.t2.has_buff.agility' (1x).\nLine 5: Converted 'trinket.2.has_buff.agility' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 5: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 5: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 5: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 5: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\nLine 7: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'meta_prep' required some automated changes.\nLine 2: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 2: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\n\nThe import for 'ar' required some automated changes.\nLine 1: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 2: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 3: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 4: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 11: Converted 'talent.soul_sigils' to 'talent.soul_sigils.enabled' (1x).\nLine 11: Converted 'talent.soul_sigils' to 'talent.soul_sigils.enabled' (1x).\nLine 20: Converted 'talent.fallout' to 'talent.fallout.enabled' (1x).\nLine 22: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 22: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 28: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 29: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 30: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 30: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\nLine 30: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 34: Converted 'talent.unhindered_assault' to 'talent.unhindered_assault.enabled' (1x).\nLine 39: Converted 'talent.unhindered_assault' to 'talent.unhindered_assault.enabled' (1x).\n\nThe import for 'fel_dev_prep' required some automated changes.\nLine 3: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 5: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 6: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\n\nThe import for 'ar_execute' required some automated changes.\nLine 2: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 3: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\n\nImported 14 action lists.\n",
|
|
["author"] = "SimC",
|
|
["lists"] = {
|
|
["rg_prep"] = {
|
|
{
|
|
["action"] = "felblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "vengeful_retreat",
|
|
["criteria"] = "! cooldown.felblade.up & talent.unhindered_assault.enabled",
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "immolation_aura",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fracture",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["fs"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( action.sigil_of_flame.crit_pct + ( talent.aura_of_pain.enabled * 6 ) ) / 100",
|
|
["var_name"] = "crit_pct",
|
|
["criteria"] = "active_dot.sigil_of_flame > 0 & talent.volatile_flameblood.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2 + ( 2 * gcd.max )",
|
|
["var_name"] = "fel_dev_sequence_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "gcd.max",
|
|
["var_name"] = "fel_dev_sequence_time",
|
|
["criteria"] = "talent.fiery_demise.enabled & cooldown.fiery_brand.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "gcd.max",
|
|
["var_name"] = "fel_dev_sequence_time",
|
|
["criteria"] = "cooldown.sigil_of_flame.up || cooldown.sigil_of_flame.remains < variable.fel_dev_sequence_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "gcd.max",
|
|
["var_name"] = "fel_dev_sequence_time",
|
|
["criteria"] = "cooldown.immolation_aura.up || cooldown.immolation_aura.remains < variable.fel_dev_sequence_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "2.5 * floor ( ( buff.student_of_suffering.remains >? variable.fel_dev_sequence_time ) )",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
["criteria"] = "talent.student_of_suffering.enabled & ( buff.student_of_suffering.remains > 1 || prev_gcd.1.sigil_of_flame )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "30 + ( 2 * talent.flames_of_fury.enabled * spell_targets.sigil_of_flame )",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
["criteria"] = "( cooldown.sigil_of_flame.remains < variable.fel_dev_sequence_time )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "8",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
["criteria"] = "cooldown.immolation_aura.remains < variable.fel_dev_sequence_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "2 * floor ( ( buff.immolation_aura.remains >? variable.fel_dev_sequence_time ) )",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
["criteria"] = "buff.immolation_aura.remains > 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "7.5 * variable.crit_pct * floor ( ( buff.immolation_aura.remains >? variable.fel_dev_sequence_time ) )",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
["criteria"] = "talent.volatile_flameblood.enabled & buff.immolation_aura.remains > 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "22",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
["criteria"] = "talent.darkglare_boon.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "spbomb_threshold",
|
|
["value"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
["value_else"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
["criteria"] = "talent.fiery_demise.enabled & dot.fiery_brand.ticking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spbomb",
|
|
["value"] = "soul_fragments >= variable.spbomb_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spbomb_soon",
|
|
["value"] = "soul_fragments >= variable.spbomb_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spbomb_one_gcd",
|
|
["value"] = "( soul_fragments + variable.num_spawnable_souls ) >= variable.spbomb_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "spburst_threshold",
|
|
["value"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
["value_else"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
["criteria"] = "talent.fiery_demise.enabled & dot.fiery_brand.ticking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spburst",
|
|
["value"] = "soul_fragments >= variable.spburst_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spburst_soon",
|
|
["value"] = "soul_fragments >= variable.spburst_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spburst_one_gcd",
|
|
["value"] = "( soul_fragments + variable.num_spawnable_souls ) >= variable.spburst_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "meta_prep_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.fiery_brand.execute_time",
|
|
["var_name"] = "meta_prep_time",
|
|
["criteria"] = "talent.fiery_demise.enabled & cooldown.fiery_brand.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.sigil_of_flame.execute_time * action.sigil_of_flame.charges",
|
|
["var_name"] = "meta_prep_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "dont_soul_cleave",
|
|
["value"] = "buff.demonsurge_spirit_burst.up || ( buff.metamorphosis.remains < ( gcd.max * 2 ) & ( ( fury + variable.fel_dev_passive_fury_gen ) < 120 || ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) ) )",
|
|
["value_else"] = "( cooldown.fel_devastation.remains < ( gcd.max * 3 ) & ( ( fury + variable.fel_dev_passive_fury_gen ) < 120 ) || ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) ) )",
|
|
["criteria"] = "buff.metamorphosis.up & buff.demonsurge_hardcast.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "fiery_brand_back_before_meta",
|
|
["value"] = "charges >= max_charges || ( charges_fractional >= 1 & cooldown.fiery_brand.full_recharge_time <= gcd.remains + execute_time ) || ( charges_fractional >= 1 & ( ( 1 - ( charges_fractional - 1 ) ) * cooldown.fiery_brand.duration ) <= cooldown.metamorphosis.remains )",
|
|
["value_else"] = "( cooldown.fiery_brand.duration <= cooldown.metamorphosis.remains )",
|
|
["criteria"] = "talent.down_in_flames.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "hold_sof_for_meta",
|
|
["value"] = "( charges_fractional >= 1 & ( ( 1 - ( charges_fractional - 1 ) ) * cooldown.sigil_of_flame.duration ) > cooldown.metamorphosis.remains )",
|
|
["value_else"] = "cooldown.sigil_of_flame.duration > cooldown.metamorphosis.remains",
|
|
["criteria"] = "talent.illuminated_sigils.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "hold_sof_for_fel_dev",
|
|
["value"] = "( charges_fractional >= 1 & ( ( 1 - ( charges_fractional - 1 ) ) * cooldown.sigil_of_flame.duration ) > cooldown.fel_devastation.remains )",
|
|
["value_else"] = "cooldown.sigil_of_flame.duration > cooldown.fel_devastation.remains",
|
|
["criteria"] = "talent.illuminated_sigils.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "hold_sof_for_student",
|
|
["value"] = "prev_gcd.1.sigil_of_flame || ( buff.student_of_suffering.remains > ( 4 - talent.quickened_sigils.enabled ) )",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.student_of_suffering.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "hold_sof_for_dot",
|
|
["value"] = "0",
|
|
["value_else"] = "prev_gcd.1.sigil_of_flame || ( dot.sigil_of_flame.remains > ( 4 - talent.quickened_sigils.enabled ) )",
|
|
["criteria"] = "talent.ascending_flame.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( talent.illuminated_sigils.enabled & time < ( 2 - talent.quickened_sigils.enabled ) )",
|
|
["var_name"] = "hold_sof_for_precombat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_1_buffs || ( variable.trinket_1_buffs & ( ( buff.metamorphosis.up & buff.demonsurge_hardcast.up ) || ( buff.metamorphosis.up & ! buff.demonsurge_hardcast.up & cooldown.metamorphosis.remains < 10 ) || ( cooldown.metamorphosis.remains > trinket.t1.cooldown.duration ) || ( variable.trinket_2_buffs & trinket.t2.cooldown.remains < cooldown.metamorphosis.remains ) ) )",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_2_buffs || ( variable.trinket_2_buffs & ( ( buff.metamorphosis.up & buff.demonsurge_hardcast.up ) || ( buff.metamorphosis.up & ! buff.demonsurge_hardcast.up & cooldown.metamorphosis.remains < 10 ) || ( cooldown.metamorphosis.remains > trinket.t2.cooldown.duration ) || ( variable.trinket_1_buffs & trinket.t1.cooldown.remains < cooldown.metamorphosis.remains ) ) )",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time < 4",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ( cooldown.metamorphosis.up & prev_gcd.1.sigil_of_flame ) & ! ( talent.fallout.enabled & talent.spirit_bomb.enabled & spell_targets.spirit_bomb >= 3 & ( ( buff.metamorphosis.up & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( ! buff.metamorphosis.up & ( variable.can_spbomb || variable.can_spbomb_soon ) ) ) ) & ! ( buff.metamorphosis.up & buff.demonsurge_hardcast.up )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.student_of_suffering.enabled & ! variable.hold_sof_for_dot & ! variable.hold_sof_for_precombat",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.hold_sof_for_precombat & ( charges = max_charges || ( ! variable.hold_sof_for_student & ! variable.hold_sof_for_dot & ! variable.hold_sof_for_meta & ! variable.hold_sof_for_fel_dev ) )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.fiery_brand = 0 & ( ! talent.fiery_demise.enabled || ( ( talent.down_in_flames.enabled & charges >= max_charges ) || variable.fiery_brand_back_before_meta ) )",
|
|
["action"] = "fiery_brand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "fight_remains < 20",
|
|
["list_name"] = "fs_execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "buff.metamorphosis.up & ! buff.demonsurge_hardcast.up & ( buff.demonsurge_soul_sunder.up || buff.demonsurge_spirit_burst.up )",
|
|
["list_name"] = "fel_dev",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "buff.metamorphosis.up & buff.demonsurge_hardcast.up",
|
|
["list_name"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "! buff.demonsurge_hardcast.up & ( cooldown.fel_devastation.up || ( cooldown.fel_devastation.remains <= ( gcd.max * 3 ) ) )",
|
|
["list_name"] = "fel_dev_prep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "( cooldown.metamorphosis.remains <= variable.meta_prep_time ) & ! cooldown.fel_devastation.up & ! cooldown.fel_devastation.remains < 10 & ! buff.demonsurge_soul_sunder.up & ! buff.demonsurge_spirit_burst.up",
|
|
["list_name"] = "meta_prep",
|
|
},
|
|
{
|
|
["action"] = "the_hunt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( cooldown.sigil_of_spite.remains < execute_time || cooldown.soul_carver.remains < execute_time ) & cooldown.fel_devastation.remains < ( execute_time + gcd.max ) & fury < 50 )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.fiery_demise.enabled || talent.fiery_demise.enabled & dot.fiery_brand.ticking ) & ( ( ! talent.spirit_bomb.enabled || variable.single_target ) || ( talent.spirit_bomb.enabled & ! prev_gcd.1.sigil_of_spite & ( ( soul_fragments + 3 <= 5 & fury >= 40 ) || ( soul_fragments = 0 & fury >= 15 ) ) ) )",
|
|
["action"] = "soul_carver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.cycle_of_binding.enabled || ( cooldown.sigil_of_spite.duration < ( cooldown.metamorphosis.remains + 18 ) ) ) & ( ! talent.spirit_bomb.enabled || ( fury >= 80 & ( variable.can_spbomb || variable.can_spbomb_soon ) ) || ( soul_fragments <= ( 2 - talent.soul_sigils.rank ) ) )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst & talent.fiery_demise.enabled & dot.fiery_brand.ticking & cooldown.fel_devastation.remains >= ( gcd.max * 3 )",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spbomb & talent.fiery_demise.enabled & dot.fiery_brand.ticking & cooldown.fel_devastation.remains >= ( gcd.max * 3 )",
|
|
["action"] = "spirit_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.single_target & ! variable.dont_soul_cleave",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.single_target & ! variable.dont_soul_cleave",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst & cooldown.fel_devastation.remains >= ( gcd.max * 3 )",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spbomb & cooldown.fel_devastation.remains >= ( gcd.max * 3 )",
|
|
["action"] = "spirit_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( fury < 40 & ( ( buff.metamorphosis.up & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( ! buff.metamorphosis.up & ( variable.can_spbomb || variable.can_spbomb_soon ) ) ) ) )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( fury < 40 & ( ( buff.metamorphosis.up & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( ! buff.metamorphosis.up & ( variable.can_spbomb || variable.can_spbomb_soon ) ) ) ) || ( buff.metamorphosis.up & variable.can_spburst_one_gcd ) || ( ! buff.metamorphosis.up & variable.can_spbomb_one_gcd ) )",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit >= 40",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.dont_soul_cleave",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.dont_soul_cleave",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
{
|
|
["action"] = "fracture",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "throw_glaive",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["rg_overflow"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "trigger_overflow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "rg_enhance_cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) >= 30 & ! buff.rending_strike.up & ! buff.glaive_flurry.up",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) < 30",
|
|
["list_name"] = "rg_prep",
|
|
},
|
|
},
|
|
["fel_dev"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge_spirit_burst.up & ( variable.can_spburst || soul_fragments >= 4 || ( buff.metamorphosis.remains < ( gcd.max * 2 ) ) )",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge_soul_sunder.up & ( ! buff.demonsurge_spirit_burst.up || ( buff.metamorphosis.remains < ( gcd.max * 2 ) ) )",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.cycle_of_binding.enabled || ( cooldown.sigil_of_spite.duration < ( cooldown.metamorphosis.remains + 18 ) ) ) & ( soul_fragments <= 2 & buff.demonsurge_spirit_burst.up )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_fragments <= 2 & ! prev_gcd.1.sigil_of_spite & buff.demonsurge_spirit_burst.up",
|
|
["action"] = "soul_carver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_fragments <= 2 & buff.demonsurge_spirit_burst.up",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge_spirit_burst.up || buff.demonsurge_soul_sunder.up",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge_spirit_burst.up || buff.demonsurge_soul_sunder.up",
|
|
["action"] = "fracture",
|
|
},
|
|
},
|
|
["meta_prep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "metamorphosis",
|
|
["criteria"] = "cooldown.sigil_of_flame.charges < 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fiery_demise.enabled & ( ( talent.down_in_flames.enabled & charges >= max_charges ) || active_dot.fiery_brand = 0 )",
|
|
["action"] = "fiery_brand",
|
|
},
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["fs_execute"] = {
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "metamorphosis",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "the_hunt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fiery_brand",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sigil_of_spite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soul_carver",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fel_devastation",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["rg_sequence"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "( fury < 30 & ( ( ! variable.rg_enhance_cleave & buff.glaive_flurry.up & buff.rending_strike.up ) || ( variable.rg_enhance_cleave & ! buff.rending_strike.up ) ) ) || ( action.fracture.charges_fractional < 1 & ( ( variable.rg_enhance_cleave & buff.rending_strike.up & buff.glaive_flurry.up ) || ( ! variable.rg_enhance_cleave & ! buff.glaive_flurry.up ) ) )",
|
|
["list_name"] = "rg_sequence_filler",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( variable.rg_enhance_cleave & buff.rending_strike.up & buff.glaive_flurry.up ) || ( ! variable.rg_enhance_cleave & ! buff.glaive_flurry.up ) )",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( variable.rg_enhance_cleave & buff.rending_strike.up & buff.glaive_flurry.up ) || ( ! variable.rg_enhance_cleave & ! buff.glaive_flurry.up ) )",
|
|
["action"] = "shear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ! variable.rg_enhance_cleave & buff.glaive_flurry.up & buff.rending_strike.up ) || ( variable.rg_enhance_cleave & ! buff.rending_strike.up ) )",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up & ! buff.glaive_flurry.up",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up & ! buff.glaive_flurry.up",
|
|
["action"] = "shear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.rending_strike.up & buff.glaive_flurry.up",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
},
|
|
["metamorphosis"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains < ( gcd.max * 3 )",
|
|
["action"] = "fel_desolation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury < 50 & ( buff.metamorphosis.remains < ( gcd.max * 3 ) ) & cooldown.fel_desolation.up",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury < 50 & ! cooldown.felblade.up & ( buff.metamorphosis.remains < ( gcd.max * 3 ) ) & cooldown.fel_desolation.up",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.illuminated_sigils.enabled & talent.cycle_of_binding.enabled & charges = max_charges",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["action"] = "immolation_aura",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.student_of_suffering.enabled & ( talent.ascending_flame.enabled || ( ! talent.ascending_flame.enabled & ! prev_gcd.1.sigil_of_doom & ( dot.sigil_of_doom.remains < ( 4 - talent.quickened_sigils.enabled ) ) ) )",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.student_of_suffering.enabled & ! prev_gcd.1.sigil_of_flame & ! prev_gcd.1.sigil_of_doom & ( buff.student_of_suffering.remains < ( 4 - talent.quickened_sigils.enabled ) )",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains < ( ( 2 - talent.quickened_sigils.enabled ) + ( charges * gcd.max ) )",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_fragments <= 3 & ( soul_fragments >= 2 || prev_gcd.1.sigil_of_spite )",
|
|
["action"] = "fel_desolation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( cooldown.sigil_of_spite.remains < execute_time || cooldown.soul_carver.remains < execute_time ) & cooldown.fel_desolation.remains < ( execute_time + gcd.max ) & fury < 50 )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.spirit_bomb.enabled || ( variable.single_target & ! buff.demonsurge_spirit_burst.up ) ) || ( ( ( soul_fragments + 3 ) <= 6 ) & fury >= 40 & ! prev_gcd.1.sigil_of_spite )",
|
|
["action"] = "soul_carver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.spirit_bomb.enabled || ( fury >= 80 & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( soul_fragments <= ( 2 - talent.soul_sigils.rank ) )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst & buff.demonsurge_spirit_burst.up",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["action"] = "fel_desolation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "the_hunt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge_soul_sunder.up & ! buff.demonsurge_spirit_burst.up & ! variable.can_spburst_one_gcd",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst & ( talent.fiery_demise.enabled & dot.fiery_brand.ticking || variable.big_aoe ) & buff.metamorphosis.remains > ( gcd.max * 2 )",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury < 40 & ( variable.can_spburst || variable.can_spburst_soon ) & ( buff.demonsurge_spirit_burst.up || talent.fiery_demise.enabled & dot.fiery_brand.ticking || variable.big_aoe )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury < 40 & ( variable.can_spburst || variable.can_spburst_soon || variable.can_spburst_one_gcd ) & ( buff.demonsurge_spirit_burst.up || talent.fiery_demise.enabled & dot.fiery_brand.ticking || variable.big_aoe )",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst_one_gcd & ( buff.demonsurge_spirit_burst.up || variable.big_aoe ) & ! prev_gcd.1.fracture",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.single_target & ! variable.dont_soul_cleave",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst & buff.metamorphosis.remains > ( gcd.max * 2 )",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit >= 40",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.dont_soul_cleave & ! ( variable.big_aoe & ( variable.can_spburst || variable.can_spburst_soon ) )",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["action"] = "felblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! prev_gcd.1.fracture",
|
|
["action"] = "fracture",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "disrupt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "demon_spikes",
|
|
["criteria"] = "! buff.demon_spikes.up & ( tanking || time < 5 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "num_spawnable_souls",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "max",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "num_spawnable_souls",
|
|
["criteria"] = "talent.soul_sigils.enabled & cooldown.sigil_of_flame.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "max",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["var_name"] = "num_spawnable_souls",
|
|
["criteria"] = "talent.fracture.enabled & cooldown.fracture.charges_fractional >= 1 & ! buff.metamorphosis.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "max",
|
|
["action"] = "variable",
|
|
["value"] = "3",
|
|
["var_name"] = "num_spawnable_souls",
|
|
["criteria"] = "talent.fracture.enabled & cooldown.fracture.charges_fractional >= 1 & buff.metamorphosis.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "num_spawnable_souls",
|
|
["criteria"] = "talent.soul_carver.enabled & ( cooldown.soul_carver.remains > ( cooldown.soul_carver.duration - 3 ) )",
|
|
},
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "infernal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! hero_tree.felscarred",
|
|
["list_name"] = "ar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "hero_tree.felscarred",
|
|
["list_name"] = "fs",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "spell_targets.spirit_bomb = 1",
|
|
["var_name"] = "single_target",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "spell_targets.spirit_bomb >= 2 & spell_targets.spirit_bomb <= 5",
|
|
["var_name"] = "small_aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "spell_targets.spirit_bomb >= 6",
|
|
["var_name"] = "big_aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff )",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff )",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hero_tree.aldrachi_reaver || ( hero_tree.felscarred & talent.student_of_suffering.enabled )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["action"] = "immolation_aura",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["rg_sequence_filler"] = {
|
|
{
|
|
["action"] = "felblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.rending_strike.up",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sigil_of_spite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soul_carver",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fel_devastation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "throw_glaive",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["fel_dev_prep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "potion",
|
|
["criteria"] = "prev_gcd.1.fiery_brand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.hold_sof_for_precombat & ! variable.hold_sof_for_student & ! variable.hold_sof_for_dot",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fiery_demise.enabled & ( ( fury + variable.fel_dev_passive_fury_gen ) >= 120 ) & ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) & active_dot.fiery_brand = 0 & ( ( cooldown.metamorphosis.remains < ( execute_time + action.fel_devastation.execute_time + ( gcd.max * 2 ) ) ) || variable.fiery_brand_back_before_meta )",
|
|
["action"] = "fiery_brand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( fury + variable.fel_dev_passive_fury_gen ) >= 120 ) & ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 )",
|
|
["action"] = "fel_devastation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.cycle_of_binding.enabled || ( cooldown.sigil_of_spite.duration < ( cooldown.metamorphosis.remains + 18 ) ) ) & ( soul_fragments <= 1 || ( ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) & action.fracture.charges_fractional < 1 ) )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.cycle_of_binding.enabled || cooldown.metamorphosis.remains > 20 ) & ( soul_fragments <= 1 || ( ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) & action.fracture.charges_fractional < 1 ) ) & ! prev_gcd.1.sigil_of_spite & ! prev_gcd.2.sigil_of_spite",
|
|
["action"] = "soul_carver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( fury + variable.fel_dev_passive_fury_gen ) < 120 & ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) || ( fury + variable.fel_dev_passive_fury_gen ) < 120",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["action"] = "felblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fracture",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fel_devastation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( fury + variable.fel_dev_passive_fury_gen ) >= 150 )",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
{
|
|
["action"] = "throw_glaive",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["ar"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "spb_threshold",
|
|
["value"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
["value_else"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
["criteria"] = "talent.fiery_demise.enabled & dot.fiery_brand.ticking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spb",
|
|
["value"] = "soul_fragments >= variable.spb_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spb_soon",
|
|
["value"] = "soul_fragments >= variable.spb_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spb_one_gcd",
|
|
["value"] = "( soul_fragments + variable.num_spawnable_souls ) >= variable.spb_threshold",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "time + action.fracture.execute_time + 20",
|
|
["var_name"] = "double_rm_expires",
|
|
["criteria"] = "! buff.glaive_flurry.up & buff.rending_strike.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "double_rm_remains",
|
|
["value"] = "variable.double_rm_expires - time",
|
|
["value_else"] = "0",
|
|
["criteria"] = "( variable.double_rm_expires - time ) > 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "trigger_overflow",
|
|
["criteria"] = "! buff.glaive_flurry.up & ! buff.rending_strike.up & ! prev_gcd.1.reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "rg_enhance_cleave",
|
|
["value"] = "1",
|
|
["value_else"] = "0",
|
|
["criteria"] = "variable.trigger_overflow || ( spell_targets.spirit_bomb >= 4 ) || ( fight_remains < 10 || target.time_to_die < 10 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "soul_fragments + buff.art_of_the_glaive.stack",
|
|
["var_name"] = "souls_before_next_rg_sequence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "( 1.1 * ( 1 + stat.haste ) ) * ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) )",
|
|
["var_name"] = "souls_before_next_rg_sequence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "3 + talent.soul_sigils.enabled",
|
|
["var_name"] = "souls_before_next_rg_sequence",
|
|
["criteria"] = "cooldown.sigil_of_spite.remains < ( variable.double_rm_remains - gcd.max - ( 2 - talent.soul_sigils.enabled ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "3",
|
|
["var_name"] = "souls_before_next_rg_sequence",
|
|
["criteria"] = "cooldown.soul_carver.remains < ( variable.double_rm_remains - gcd.max )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "3",
|
|
["var_name"] = "souls_before_next_rg_sequence",
|
|
["criteria"] = "cooldown.soul_carver.remains < ( variable.double_rm_remains - gcd.max - 3 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_1_buffs || ( variable.trinket_1_buffs & ( ( buff.rending_strike.up & buff.glaive_flurry.up ) || ( prev_gcd.1.reavers_glaive ) || ( buff.thrill_of_the_fight_damage.remains > 8 ) || ( buff.reavers_glaive.up & cooldown.the_hunt.remains < 5 ) ) )",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_2_buffs || ( variable.trinket_2_buffs & ( ( buff.rending_strike.up & buff.glaive_flurry.up ) || ( prev_gcd.1.reavers_glaive ) || ( buff.thrill_of_the_fight_damage.remains > 8 ) || ( buff.reavers_glaive.up & cooldown.the_hunt.remains < 5 ) ) )",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "potion",
|
|
["criteria"] = "( buff.rending_strike.up & buff.glaive_flurry.up ) || prev_gcd.1.reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "buff.glaive_flurry.up || buff.rending_strike.up || prev_gcd.1.reavers_glaive",
|
|
["list_name"] = "rg_sequence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "metamorphosis",
|
|
["criteria"] = "time < 5 || cooldown.fel_devastation.remains >= 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.reavers_glaive.up & ( buff.art_of_the_glaive.stack + soul_fragments ) < 20",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spb & ( soul_fragments > 2 || prev_gcd.1.sigil_of_spite || prev_gcd.1.soul_carver || ( spell_targets.spirit_bomb >= 4 & talent.fallout.enabled & cooldown.immolation_aura.remains < gcd.max ) )",
|
|
["action"] = "spirit_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( spell_targets.spirit_bomb >= 4 ) || ( ! buff.reavers_glaive.up || ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + gcd.max ) ) )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.ascending_flame.enabled || ( ! prev_gcd.1.sigil_of_flame & dot.sigil_of_flame.remains < ( 4 - talent.quickened_sigils.enabled ) ) ) & ( ! buff.reavers_glaive.up || ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + gcd.max ) ) )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "buff.reavers_glaive.up & spell_targets.spirit_bomb < 4 & debuff.reavers_mark.up & ( variable.double_rm_remains > ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) & ( ! buff.thrill_of_the_fight_damage.up || ( buff.thrill_of_the_fight_damage.remains < ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) > ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) & ( ( variable.souls_before_next_rg_sequence >= 20 ) || ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + cooldown.the_hunt.remains + action.the_hunt.execute_time ) ) )",
|
|
["list_name"] = "rg_overflow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "boss & ( fight_remains < 10 || target.time_to_die < 10 )",
|
|
["list_name"] = "ar_execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.reavers_glaive.up & ( variable.double_rm_remains <= ( execute_time + ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( soul_fragments < 3 & ( ( buff.art_of_the_glaive.stack + soul_fragments ) >= 20 ) )",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.reavers_glaive.up & ( variable.double_rm_remains <= ( execute_time + ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( ( buff.art_of_the_glaive.stack + soul_fragments ) >= 20 )",
|
|
["action"] = "spirit_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.reavers_glaive.up & ( variable.double_rm_remains <= ( execute_time + ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( ( buff.art_of_the_glaive.stack + ( spell_targets >? 5 ) ) >= 20 )",
|
|
["action"] = "bulk_extraction",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) >= 30 & ( ( ! buff.thrill_of_the_fight_attack_speed.up || ( variable.double_rm_remains <= ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) || ( spell_targets.spirit_bomb >= 4 ) ) & ! ( buff.rending_strike.up || buff.glaive_flurry.up )",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) < 30 & ( ( ! buff.thrill_of_the_fight_attack_speed.up || ( variable.double_rm_remains <= ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) || ( spell_targets.spirit_bomb >= 4 ) )",
|
|
["list_name"] = "rg_prep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.fiery_demise.enabled & active_dot.fiery_brand = 0 ) || ( talent.down_in_flames.enabled & ( full_recharge_time < gcd.max ) ) || ( talent.fiery_demise.enabled & active_dot.fiery_brand = 0 & ( buff.reavers_glaive.up || cooldown.the_hunt.remains < 5 || buff.art_of_the_glaive.stack >= 15 || buff.thrill_of_the_fight_damage.remains > 5 ) )",
|
|
["action"] = "fiery_brand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.thrill_of_the_fight_damage.up || ( fury >= 80 & ( variable.can_spb || variable.can_spb_soon ) ) || ( ( soul_fragments + buff.art_of_the_glaive.stack + ( ( 1.1 * ( 1 + raw_haste_pct ) ) * ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) ) < 20 )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spb",
|
|
["action"] = "spirit_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.can_spb || variable.can_spb_soon ) & fury < 40",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "vengeful_retreat",
|
|
["criteria"] = "( variable.can_spb || variable.can_spb_soon ) & fury < 40 & ! cooldown.felblade.up & talent.unhindered_assault.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.can_spb || variable.can_spb_soon || variable.can_spb_one_gcd ) & fury < 40",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.thrill_of_the_fight_damage.up || ( ( soul_fragments + buff.art_of_the_glaive.stack + ( ( 1.1 * ( 1 + raw_haste_pct ) ) * ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) ) < 20 )",
|
|
["action"] = "soul_carver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.metamorphosis.up & ( ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + 2 ) ) || ( spell_targets.spirit_bomb >= 4 ) ) & ( ( action.fracture.full_recharge_time < ( 2 + gcd.max ) ) || ( ! variable.single_target & buff.thrill_of_the_fight_damage.up ) )",
|
|
["action"] = "fel_devastation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.fel_devastation.remains < gcd.max & fury < 50",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "vengeful_retreat",
|
|
["criteria"] = "cooldown.fel_devastation.remains < gcd.max & fury < 50 & ! cooldown.felblade.up & talent.unhindered_assault.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.fel_devastation.remains < gcd.max & fury < 50",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( full_recharge_time < gcd.max ) || buff.metamorphosis.up || variable.can_spb || variable.can_spb_soon || buff.warblades_hunger.stack >= 5",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_fragments >= 1",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets >= 3",
|
|
["action"] = "bulk_extraction",
|
|
},
|
|
{
|
|
["action"] = "fracture",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soul_cleave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "shear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "felblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "throw_glaive",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["ar_execute"] = {
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "metamorphosis",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) >= 30 & ! ( buff.rending_strike.up || buff.glaive_flurry.up )",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "buff.reavers_glaive.up & ( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) < 30",
|
|
["list_name"] = "rg_prep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.reavers_glaive.up",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets >= 3 & buff.art_of_the_glaive.stack >= 20",
|
|
["action"] = "bulk_extraction",
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fiery_brand",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sigil_of_spite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soul_carver",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fel_devastation",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["notifications"] = {
|
|
["enabled"] = false,
|
|
},
|
|
["runOnce"] = {
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["removeOldThrottles_20241115"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["forceEnableEnhancedRecheckBoomkin_20210712"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_577"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_581"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
},
|
|
},
|
|
["Quillandria - Thunderhorn"] = {
|
|
["runOnce"] = {
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["removeOldThrottles_20241115"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_267"] = true,
|
|
["resetAllPotions_20201209"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["resetGlobalCooldownSync_20210403"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_266"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_265"] = true,
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["forceEnableEnhancedRecheckBoomkin_20210712"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
},
|
|
["specs"] = {
|
|
[266] = {
|
|
["maxRefresh"] = 10,
|
|
["debuffPadding"] = 0,
|
|
["enhancedRecheck"] = false,
|
|
["nameplateRange"] = 8,
|
|
["potionsReset"] = 20180919.1,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[267] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["default_pet"] = "summon_sayaad",
|
|
["cataclysm_ttd"] = 11,
|
|
["cleave_apl"] = false,
|
|
["low_ttd_dot"] = 11,
|
|
},
|
|
["debuffPadding"] = 0,
|
|
["enhancedRecheck"] = false,
|
|
["nameplateRange"] = 8,
|
|
["potionsReset"] = 20180919.1,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[265] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["default_pet"] = "summon_sayaad",
|
|
["manage_ds_ticks"] = false,
|
|
},
|
|
["debuffPadding"] = 0,
|
|
["enhancedRecheck"] = false,
|
|
["nameplateRange"] = 8,
|
|
["potionsReset"] = 20180919.1,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[102] = {
|
|
["enhancedRecheck"] = true,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Demonology"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/dragonflight/engine/class_modules/apl/warlock.cpp",
|
|
["builtIn"] = true,
|
|
["date"] = 20250302,
|
|
["spec"] = 266,
|
|
["desc"] = "2025-03-02: Sync with SimC",
|
|
["lists"] = {
|
|
["items"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! pet.demonic_tyrant.active & trinket.t1.cast_time > 0 || ! trinket.t1.cast_time > 0 ) & ( pet.demonic_tyrant.active || ! talent.summon_demonic_tyrant.enabled || variable.trinket_priority = 2 & cooldown.summon_demonic_tyrant.remains > 20 & ! pet.demonic_tyrant.active & trinket.t2.cooldown.remains < cooldown.summon_demonic_tyrant.remains + 5 ) & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 & ! variable.trinket_2_manual ) || variable.trinket_1_buff_duration >= fight_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! pet.demonic_tyrant.active & trinket.t2.cast_time > 0 || ! trinket.t2.cast_time > 0 ) & ( pet.demonic_tyrant.active || ! talent.summon_demonic_tyrant.enabled || variable.trinket_priority = 1 & cooldown.summon_demonic_tyrant.remains > 20 & ! pet.demonic_tyrant.active & trinket.t1.cooldown.remains < cooldown.summon_demonic_tyrant.remains + 5 ) & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 & ! variable.trinket_1_manual ) || variable.trinket_2_buff_duration >= fight_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ( variable.damage_trinket_priority = 1 || trinket.t2.cooldown.remains ) & ( trinket.t1.cast_time > 0 & ! pet.demonic_tyrant.active || ! trinket.t1.cast_time > 0 ) || ( time < 20 & variable.trinket_2_buffs ) || cooldown.summon_demonic_tyrant.remains_expected > 20 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ( variable.damage_trinket_priority = 2 || trinket.t1.cooldown.remains ) & ( trinket.t2.cast_time > 0 & ! pet.demonic_tyrant.active || ! trinket.t2.cast_time > 0 ) || ( time < 20 & variable.trinket_1_buffs ) || cooldown.summon_demonic_tyrant.remains_expected > 20 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "spymasters_web",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "pet.demonic_tyrant.active & fight_remains <= 80 & buff.spymasters_report.stack >= 30 & ( ! variable.trinket_1_buffs & trinket.t2.is.spymasters_web || ! variable.trinket_2_buffs & trinket.t1.is.spymasters_web ) || fight_remains <= 20 & ( trinket.t1.cooldown.remains & trinket.t2.is.spymasters_web || trinket.t2.cooldown.remains & trinket.t1.is.spymasters_web || ! variable.trinket_1_buffs || ! variable.trinket_2_buffs )",
|
|
["action"] = "spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "pet.demonic_tyrant.active & gcd.remains > 0 || fight_remains <= 30",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "mirror_of_fractured_tomorrows",
|
|
["action"] = "mirror_of_fractured_tomorrows",
|
|
["criteria"] = "trinket.t1.is.mirror_of_fractured_tomorrows & variable.trinket_priority = 2 || trinket.t2.is.mirror_of_fractured_tomorrows & variable.trinket_priority = 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_1_buffs & ( variable.damage_trinket_priority = 1 || trinket.t2.cooldown.remains )",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_2_buffs & ( variable.damage_trinket_priority = 2 || trinket.t1.cooldown.remains )",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! equipped.neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "( pet.demonic_tyrant.active || fight_remains <= 15 ) & ! variable.trinket_1_buffs & ! variable.trinket_2_buffs",
|
|
["name"] = "neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "( pet.demonic_tyrant.active || fight_remains <= 15 || trinket.t2.cooldown.remains > cooldown.summon_demonic_tyrant.remains ) & variable.trinket_2_buffs",
|
|
["name"] = "neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "( pet.demonic_tyrant.active || fight_remains <= 15 || trinket.t1.cooldown.remains > cooldown.summon_demonic_tyrant.remains ) & variable.trinket_1_buffs",
|
|
["name"] = "neural_synapse_enhancer",
|
|
},
|
|
},
|
|
["fight_end"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 20",
|
|
["action"] = "grimoire_felguard",
|
|
},
|
|
{
|
|
["action"] = "ruination",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 2 * gcd.max & ! prev_gcd.1.implosion",
|
|
["action"] = "implosion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < gcd.max * 2 * buff.demonic_core.stack + 9 & buff.demonic_core.up & ( soul_shard < 4 || fight_remains < buff.demonic_core.stack * gcd.max )",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 20",
|
|
["action"] = "call_dreadstalkers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 20",
|
|
["action"] = "summon_vilefiend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 20",
|
|
["action"] = "summon_demonic_tyrant",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 10",
|
|
["action"] = "demonic_strength",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonic_core.stack < 3 & fight_remains < 20",
|
|
["action"] = "power_siphon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < gcd.max * 2 * buff.demonic_core.stack + 9 & buff.demonic_core.up & ( soul_shard < 4 || fight_remains < buff.demonic_core.stack * gcd.max )",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard > 2 & fight_remains < gcd.max * 2 * buff.demonic_core.stack + 9",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["action"] = "infernal_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "axe_toss",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "variables",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tyrant.remains > 10",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "pet.demonic_tyrant.active || boss & fight_remains < 22",
|
|
["var_name"] = "check_racials",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "variable.check_racials",
|
|
["list_name"] = "racials",
|
|
},
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "boss & fight_remains < 30",
|
|
["list_name"] = "fight_end",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "time < variable.first_tyrant_time",
|
|
["list_name"] = "opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < gcd.max * 14",
|
|
["list_name"] = "tyrant",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains > 25 || variable.next_tyrant_cd > 25",
|
|
["action"] = "call_dreadstalkers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains > 30",
|
|
["action"] = "summon_vilefiend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonic_core.up & ( ! talent.doom.enabled || buff.demonic_core.stack > 1 || debuff.doom.remains > 10 || debuff.doom.down ) & ( ( ( ! talent.fel_invocation.enabled || cooldown.soul_strike.remains > gcd.max * 2 ) & soul_shard < 4 ) ) & ! prev_gcd.1.demonbolt & ! variable.pool_cores_for_tyrant",
|
|
["action"] = "demonbolt",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonic_core.stack >= 3 - ( talent.doom.enabled & debuff.doom.down ) * 2 & soul_shard <= 3 & ! variable.pool_cores_for_tyrant",
|
|
["action"] = "demonbolt",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonic_core.stack < 3 & cooldown.summon_demonic_tyrant.remains > 25 & ! buff.demonic_power.up",
|
|
["action"] = "power_siphon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "demonic_strength",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "bilescourge_bombers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ( cooldown.demonic_strength.remains || ! talent.demonic_strength.enabled )",
|
|
["action"] = "guillotine",
|
|
},
|
|
{
|
|
["action"] = "ruination",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.infernal_bolt.remains > cast_time & buff.infernal_bolt.remains < 2 * gcd.max || soul_shard < 3 & cooldown.summon_demonic_tyrant.remains > 20",
|
|
["action"] = "infernal_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "two_cast_imps > 0 & variable.impl & ! prev_gcd.1.implosion & ( active_enemies > 3 || active_enemies <= 3 & last_cast_imps > 0 )",
|
|
["action"] = "implosion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.diabolic_ritual_remains > gcd.max & variable.diabolic_ritual_remains < gcd.max + gcd.max & buff.demonic_core.up & soul_shard <= 3",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.diabolic_ritual_remains > gcd.max & variable.diabolic_ritual_remains < soul_shard_deficit * cast_time + gcd.max & soul_shard < 5",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( soul_shard > 2 & ( cooldown.call_dreadstalkers.remains > gcd.max * 4 || buff.demonic_calling.remains - gcd.max > cooldown.call_dreadstalkers.remains ) & cooldown.summon_demonic_tyrant.remains > 17 ) || soul_shard = 5 || soul_shard = 4 & talent.fel_invocation.enabled ) & ( active_enemies = 1 )",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard > 2 & ! ( active_enemies = 1 )",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 4 & buff.demonic_core.stack > 1 & ( ( soul_shard < 4 & ! talent.soul_strike.enabled || cooldown.soul_strike.remains > gcd.max * 2 & talent.fel_invocation.enabled ) || soul_shard < 3 ) & ! variable.pool_cores_for_tyrant",
|
|
["action"] = "demonbolt",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonic_core.up & buff.tyrant.up & soul_shard < 3",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonic_core.stack > 1 & soul_shard < 4",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["action"] = "infernal_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! pet.tyrant.active & cooldown.tyrant_remains > 15 & active_enemies > 1",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["action"] = "shadow_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ( cooldown.demonic_strength.remains || ! talent.demonic_strength.enabled ) & talent.fel_sunder.enabled",
|
|
["action"] = "felstorm",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time > 0 & ! pet.alive & ! buff.grimoire_of_sacrifice.up",
|
|
["action"] = "fel_domination",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! pet.alive & ! buff.grimoire_of_sacrifice.up",
|
|
["action"] = "summon_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "12",
|
|
["var_name"] = "first_tyrant_time",
|
|
["description"] = "Sets the expected Tyrant Setup on pull to take a total 12 seconds long",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "first_tyrant_time",
|
|
["value"] = "action.grimoire_felguard.execute_time",
|
|
["description"] = "Accounts for the execution time of Grimoire Felguard in the setup of Tyrant on Pull",
|
|
["criteria"] = "talent.grimoire_felguard.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "first_tyrant_time",
|
|
["value"] = "action.summon_vilefiend.execute_time",
|
|
["description"] = "Accounts for the execution time of Vilefiend in the the setup of Tyrant on Pull",
|
|
["criteria"] = "talent.summon_vilefiend.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "first_tyrant_time",
|
|
["value"] = "gcd.max",
|
|
["description"] = "Accounts for the execution time of both Grimoire Felguard and Vilefiend in the tyrant Setup on Pull",
|
|
["criteria"] = "talent.grimoire_felguard.enabled || talent.summon_vilefiend.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "action.summon_demonic_tyrant.execute_time + action.shadow_bolt.execute_time",
|
|
["var_name"] = "first_tyrant_time",
|
|
["description"] = "Accounts for Tyrant own Cast Time and an additional Shadowbolt cast time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "min",
|
|
["action"] = "variable",
|
|
["value"] = "10",
|
|
["var_name"] = "first_tyrant_time",
|
|
["description"] = "Sets an absolute minimun of 10s for the First Tyrant Setup",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "in_opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff",
|
|
["var_name"] = "trinket_1_buffs",
|
|
["description"] = "Defines if the the Trinket 1 is a buff Trinket in the trinket logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff",
|
|
["var_name"] = "trinket_2_buffs",
|
|
["description"] = "Defines if the the Trinket 2 is a buff Trinket in the trinket logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.ruby_whelp_shell",
|
|
["var_name"] = "trinket_1_exclude",
|
|
["description"] = "For On Use Trinkets on slot 1 with on use effects you dont want to use in combat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.ruby_whelp_shell",
|
|
["var_name"] = "trinket_2_exclude",
|
|
["description"] = "For On Use Trinkets on slot 2 with on use effects you dont want to use in combat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.spymasters_web || trinket.t1.is.imperfect_ascendancy_serum",
|
|
["var_name"] = "trinket_1_manual",
|
|
["description"] = "Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.spymasters_web || trinket.t2.is.imperfect_ascendancy_serum",
|
|
["var_name"] = "trinket_2_manual",
|
|
["description"] = "Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.buff_duration + ( trinket.t1.is.mirror_of_fractured_tomorrows * 20 )",
|
|
["var_name"] = "trinket_1_buff_duration",
|
|
["description"] = "Defines the Duration of the buff or an expected time for value of the trinket",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.buff_duration + ( trinket.t2.is.mirror_of_fractured_tomorrows * 20 )",
|
|
["var_name"] = "trinket_2_buff_duration",
|
|
["description"] = "Defines the Duration of the buff or an expected time for value of the trinket",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Trinket Automatic Logic for Trinket 1",
|
|
["value"] = "1",
|
|
["var_name"] = "trinket_1_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % cooldown.summon_demonic_tyrant.duration = 0 || cooldown.summon_demonic_tyrant.duration % trinket.t1.cooldown.duration = 0 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Trinket Automatic Logic for Trinket 2",
|
|
["value"] = "1",
|
|
["var_name"] = "trinket_2_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "variable.trinket_2_buffs & ( trinket.t2.cooldown.duration % cooldown.summon_demonic_tyrant.duration = 0 || cooldown.summon_demonic_tyrant.duration % trinket.t2.cooldown.duration = 0 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Automatic Logic in case of 2 Buff Trinkets",
|
|
["value"] = "2",
|
|
["var_name"] = "damage_trinket_priority",
|
|
["action"] = "variable",
|
|
["value_else"] = "1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_2_buffs & trinket.t2.ilvl > trinket.t1.ilvl",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["value"] = "2",
|
|
["value_else"] = "1",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / variable.trinket_2_buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( ( trinket.t1.cooldown.duration / variable.trinket_1_buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) ) * ( 1 + ( ( trinket.t1.ilvl - trinket.t2.ilvl ) / 100 ) ) )",
|
|
},
|
|
{
|
|
["action"] = "power_siphon",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.power_siphon.up || soul_shards.deficit > 1",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["action"] = "shadow_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["racials"] = {
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "berserking",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blood_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["opener"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard >= 5 - talent.fel_invocation.enabled",
|
|
["action"] = "grimoire_felguard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard = 5",
|
|
["action"] = "summon_vilefiend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard < 5 & cooldown.call_dreadstalkers.up",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard = 5",
|
|
["action"] = "call_dreadstalkers",
|
|
},
|
|
{
|
|
["action"] = "ruination",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["tyrant"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "! variable.check_racials & ( variable.imp_despawn & variable.imp_despawn < time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & ( prev_gcd.1.hand_of_guldan || prev_gcd.1.ruination ) & ( variable.imp_despawn & variable.imp_despawn < time + gcd.max + action.summon_demonic_tyrant.cast_time || soul_shard < 2 ) )",
|
|
["list_name"] = "racials",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn & variable.imp_despawn < time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & ( prev_gcd.1.hand_of_guldan || prev_gcd.1.ruination ) & ( variable.imp_despawn & variable.imp_despawn < time + gcd.max + action.summon_demonic_tyrant.cast_time || soul_shard < 2 )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < 15 & ( time < variable.first_tyrant_time || cooldown.summon_demonic_tyrant.remains > ( action.summon_demonic_tyrant.cast_time + 2 * gcd.max ) )",
|
|
["action"] = "power_siphon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dreadstalkers.remains > gcd.max + action.summon_demonic_tyrant.cast_time & ( soul_shard = 5 || variable.imp_despawn )",
|
|
["action"] = "ruination",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.infernal_bolt.remains > cast_time & buff.infernal_bolt.remains < 2 * gcd.max || ! buff.demonic_core.up ) & variable.imp_despawn > time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & soul_shard < 3",
|
|
["action"] = "infernal_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.call_dreadstalkers & soul_shard < 4 & buff.demonic_core.stack < 4",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.2.call_dreadstalkers & prev_gcd.1.shadow_bolt & buff.bloodlust.up & soul_shard < 5",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.summon_vilefiend & ( buff.demonic_calling.down || prev_gcd.2.grimoire_felguard )",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.grimoire_felguard & buff.demonic_core.stack < 3 & buff.demonic_calling.remains > gcd.max * 3",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn > time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & ! buff.demonic_core.up & buff.demonic_art_pit_lord.up & variable.imp_despawn < time + gcd.max * 5 + action.summon_demonic_tyrant.cast_time",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn > time + gcd.max + action.summon_demonic_tyrant.cast_time & variable.imp_despawn < time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & buff.dreadstalkers.remains > gcd.max + action.summon_demonic_tyrant.cast_time & soul_shard > 1",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.demonic_core.up & variable.imp_despawn > time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & variable.imp_despawn < time + gcd.max * 4 + action.summon_demonic_tyrant.cast_time & soul_shard < 3 & buff.dreadstalkers.remains > gcd.max * 2 + action.summon_demonic_tyrant.cast_time",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < 17 - 2 * gcd.max & cooldown.summon_vilefiend.remains < 15 - 2 * gcd.max & cooldown.call_dreadstalkers.remains < 12 - 2 * gcd.max",
|
|
["action"] = "grimoire_felguard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < 15 - 2 * gcd.max & ( buff.grimoire_felguard.up || cooldown.grimoire_felguard.remains > 15 || ! talent.grimoire_felguard.enabled ) & ( buff.dreadstalkers.up || cooldown.call_dreadstalkers.remains < 15 - 2 * gcd.max || ! talent.call_dreadstalkers.enabled )",
|
|
["action"] = "summon_vilefiend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < 12 - 2 * gcd.max & ( buff.vilefiend.up || cooldown.summon_vilefiend.remains < 12 - 2 * gcd.max || ! talent.summon_vilefiend.enabled )",
|
|
["action"] = "call_dreadstalkers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ( variable.imp_despawn & variable.imp_despawn < time + gcd.max * 2.5 + cast_time ) || ( buff.wild_imps.stack > 9 & soul_shards < 2 ) ) & buff.dreadstalkers.up & ( buff.vilefiend.up || ! talent.summon_vilefiend.enabled ) ) || ( buff.dreadstalkers.up & buff.dreadstalkers.remains < gcd.max * 2 + cast_time & ( ( buff.vilefiend.up & buff.vilefiend.remains > 2 * gcd.max ) || ! talent.summon_vilefiend.enabled ) & ( ( buff.grimoire_felguard.up & buff.grimoire_felguard.remains > 2 * gcd.max ) || ! talent.grimoire_felguard.enabled || cooldown.grimoire_felguard.remains > 20 ) )",
|
|
["action"] = "summon_demonic_tyrant",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.imp_despawn || buff.dreadstalkers.remains ) & soul_shard >= 3 || soul_shard = 5",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn & soul_shard < 3",
|
|
["action"] = "infernal_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn & buff.demonic_core.up & soul_shard < 4 || prev_gcd.1.call_dreadstalkers & soul_shard < 4 & buff.demonic_core.stack = 4 || buff.demonic_core.stack = 4 & soul_shard < 4 || buff.demonic_core.stack >= 2 & cooldown.power_siphon.remains < 5",
|
|
["action"] = "demonbolt",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn || soul_shard = 5 & cooldown.summon_vilefiend.remains > gcd.max * 3",
|
|
["action"] = "ruination",
|
|
},
|
|
{
|
|
["action"] = "shadow_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "infernal_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["variables"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.summon_demonic_tyrant.remains_expected",
|
|
["var_name"] = "next_tyrant_cd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "in_opener",
|
|
["criteria"] = "pet.demonic_tyrant.active",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "impl",
|
|
["value"] = "buff.tyrant.down",
|
|
["description"] = "Defines the viability of Implosion when Tyrant is down",
|
|
["criteria"] = "active_enemies > 1 + ( talent.sacrificed_souls.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "impl",
|
|
["value"] = "buff.tyrant.remains < 6",
|
|
["description"] = "Defines the Viability of Implosion while Tyrant is Up",
|
|
["criteria"] = "active_enemies > 2 + ( talent.sacrificed_souls.enabled ) & active_enemies < 5 + ( talent.sacrificed_souls.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "impl",
|
|
["value"] = "buff.tyrant.remains < 8",
|
|
["description"] = "Defines the Viability of Implosion while Tyrant is Up",
|
|
["criteria"] = "active_enemies > 4 + ( talent.sacrificed_souls.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.summon_demonic_tyrant.remains < 20 & variable.next_tyrant_cd < 20 & ( buff.demonic_core.stack <= 2 || ! buff.demonic_core.up ) & cooldown.summon_vilefiend.remains < gcd.max * 8 & cooldown.call_dreadstalkers.remains < gcd.max * 8",
|
|
["var_name"] = "pool_cores_for_tyrant",
|
|
["description"] = "Restricts Demonic Core usage for the sake of having 2 or more Demonic Cores on Tyrant Setup",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.diabolic_ritual_mother_of_chaos.remains",
|
|
["var_name"] = "diabolic_ritual_remains",
|
|
["criteria"] = "buff.diabolic_ritual_mother_of_chaos.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.diabolic_ritual_overlord.remains",
|
|
["var_name"] = "diabolic_ritual_remains",
|
|
["criteria"] = "buff.diabolic_ritual_overlord.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.diabolic_ritual_pit_lord.remains",
|
|
["var_name"] = "diabolic_ritual_remains",
|
|
["criteria"] = "buff.diabolic_ritual_pit_lord.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2 * spell_haste * 6 + 0.58 + time",
|
|
["var_name"] = "imp_despawn",
|
|
["criteria"] = "prev_gcd.1.hand_of_guldan & buff.dreadstalkers.up & cooldown.summon_demonic_tyrant.remains < 13 & variable.imp_despawn = 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ( cooldown.demonic_strength.remains || ! talent.demonic_strength.enabled ) & talent.fel_sunder.enabled",
|
|
["action"] = "felstorm",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250302,
|
|
["warnings"] = "The import for 'items' required some automated changes.\nLine 1: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 1: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 1: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 1: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 2: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 3: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 4: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 7: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 7: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 12: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 12: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 13: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 13: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\n\nThe import for 'default' required some automated changes.\nLine 12: Converted 'talent.doom' to 'talent.doom.enabled' (1x).\nLine 12: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\nLine 12: Converted 'pet.felguard.cooldown.soul_strike.remains' to 'cooldown.soul_strike.remains' (1x).\nLine 13: Converted 'talent.doom' to 'talent.doom.enabled' (1x).\nLine 17: Converted 'talent.demonic_strength' to 'talent.demonic_strength.enabled' (1x).\nLine 23: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\nLine 25: Converted 'talent.soul_strike' to 'talent.soul_strike.enabled' (1x).\nLine 25: Converted 'pet.felguard.cooldown.soul_strike.remains' to 'cooldown.soul_strike.remains' (1x).\nLine 25: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\nLine 31: Converted 'talent.demonic_strength' to 'talent.demonic_strength.enabled' (1x).\nLine 31: Converted 'talent.fel_sunder' to 'talent.fel_sunder.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 10: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 11: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 12: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 13: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 14: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 14: Converted 'trinket.1.is.imperfect_ascendancy_serum' to 'trinket.t1.is.imperfect_ascendancy_serum' (1x).\nLine 15: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 15: Converted 'trinket.2.is.imperfect_ascendancy_serum' to 'trinket.t2.is.imperfect_ascendancy_serum' (1x).\nLine 16: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 16: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 16: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 17: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 17: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 17: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 18: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%trinket.t1.cooldown.duration=0)'.\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 19: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%trinket.t2.cooldown.duration=0)'.\nLine 20: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 20: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nLine 21: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 21: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 21: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 21: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 21: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 21: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 21: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 21: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 21: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nLine 21: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 21: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%variable.trinket_2_buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>(((trinket.t1.cooldown.duration%variable.trinket_1_buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))*(1+((trinket.t1.ilvl-trinket.t2.ilvl)%100)))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/variable.trinket_2_buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>(((trinket.t1.cooldown.duration/variable.trinket_1_buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))*(1+((trinket.t1.ilvl-trinket.t2.ilvl)/100)))'.\n\nThe import for 'variables' required some automated changes.\nLine 11: Converted 'talent.demonic_strength' to 'talent.demonic_strength.enabled' (1x).\nLine 11: Converted 'talent.fel_sunder' to 'talent.fel_sunder.enabled' (1x).\n\nThe import for 'tyrant' required some automated changes.\nLine 14: Converted 'talent.grimoire_felguard' to 'talent.grimoire_felguard.enabled' (1x).\nLine 14: Converted 'talent.call_dreadstalkers' to 'talent.call_dreadstalkers.enabled' (1x).\nLine 15: Converted 'talent.summon_vilefiend' to 'talent.summon_vilefiend.enabled' (1x).\n\nThe import for 'opener' required some automated changes.\nLine 1: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\n\nImported 8 action lists.\n",
|
|
["author"] = "SimC",
|
|
["profile"] = "actions.precombat+=/fel_domination,if=time>0&!pet.alive&!buff.grimoire_of_sacrifice.up\nactions.precombat+=/summon_pet,if=!pet.alive&!buff.grimoire_of_sacrifice.up\n# Sets the expected Tyrant Setup on pull to take a total 12 seconds long\nactions.precombat+=/variable,name=first_tyrant_time,op=set,value=12\n# Accounts for the execution time of Grimoire Felguard in the setup of Tyrant on Pull\nactions.precombat+=/variable,name=first_tyrant_time,op=add,value=action.grimoire_felguard.execute_time,if=talent.grimoire_felguard.enabled\n# Accounts for the execution time of Vilefiend in the the setup of Tyrant on Pull\nactions.precombat+=/variable,name=first_tyrant_time,op=add,value=action.summon_vilefiend.execute_time,if=talent.summon_vilefiend.enabled\n# Accounts for the execution time of both Grimoire Felguard and Vilefiend in the tyrant Setup on Pull\nactions.precombat+=/variable,name=first_tyrant_time,op=add,value=gcd.max,if=talent.grimoire_felguard.enabled||talent.summon_vilefiend.enabled\n# Accounts for Tyrant own Cast Time and an additional Shadowbolt cast time\nactions.precombat+=/variable,name=first_tyrant_time,op=sub,value=action.summon_demonic_tyrant.execute_time+action.shadow_bolt.execute_time\n# Sets an absolute minimun of 10s for the First Tyrant Setup\nactions.precombat+=/variable,name=first_tyrant_time,op=min,value=10\nactions.precombat+=/variable,name=in_opener,op=set,value=1\n# Defines if the the Trinket 1 is a buff Trinket in the trinket logic\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff\n# Defines if the the Trinket 2 is a buff Trinket in the trinket logic\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff\n# For On Use Trinkets on slot 1 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell\n# For On Use Trinkets on slot 2 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell\n# Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.spymasters_web||trinket.1.is.imperfect_ascendancy_serum\n# Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.spymasters_web||trinket.2.is.imperfect_ascendancy_serum\n# Defines the Duration of the buff or an expected time for value of the trinket\nactions.precombat+=/variable,name=trinket_1_buff_duration,value=trinket.1.proc.any_dps.duration+(trinket.1.is.mirror_of_fractured_tomorrows*20)\n# Defines the Duration of the buff or an expected time for value of the trinket\nactions.precombat+=/variable,name=trinket_2_buff_duration,value=trinket.2.proc.any_dps.duration+(trinket.2.is.mirror_of_fractured_tomorrows*20)\n# Trinket Automatic Logic for Trinket 1\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.1.cooldown.duration=0)\n# Trinket Automatic Logic for Trinket 2\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.2.cooldown.duration=0)\n# Automatic Logic in case of 2 Buff Trinkets\nactions.precombat+=/variable,name=damage_trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&!variable.trinket_2_buffs&trinket.2.ilvl>trinket.1.ilvl\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%variable.trinket_2_buff_duration)*(1.5+trinket.2.has_buff.intellect)*(variable.trinket_2_sync))>(((trinket.1.cooldown.duration%variable.trinket_1_buff_duration)*(1.5+trinket.1.has_buff.intellect)*(variable.trinket_1_sync))*(1+((trinket.1.ilvl-trinket.2.ilvl)%100)))\nactions.precombat+=/power_siphon\nactions.precombat+=/lights_judgment\nactions.precombat+=/demonbolt,if=!buff.power_siphon.up||soul_shards.deficit>1\nactions.precombat+=/shadow_bolt\n\nactions+=/axe_toss\nactions+=/call_action_list,name=variables\nactions+=/potion,if=buff.tyrant.remains>10\nactions+=/variable,name=check_racials,op=set,value=pet.demonic_tyrant.active||boss&fight_remains<22\nactions+=/call_action_list,name=racials,if=variable.check_racials,use_off_gcd=1\nactions+=/call_action_list,name=items,use_off_gcd=1\n## actions+=/invoke_external_buff,name=power_infusion,if=fight_remains<15||pet.demonic_tyrant.active&fight_remains<100||fight_remains<25||(pet.demonic_tyrant.active||!talent.summon_demonic_tyrant&buff.dreadstalkers.up)\nactions+=/call_action_list,name=fight_end,if=boss&fight_remains<30\nactions+=/call_action_list,name=opener,strict=1,if=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=buff.demonic_core.up&(!talent.doom||buff.demonic_core.stack>1||debuff.doom.remains>10||debuff.doom.down)&(((!talent.fel_invocation||pet.felguard.cooldown.soul_strike.remains>gcd.max*2)&soul_shard<4))&!prev_gcd.1.demonbolt&!variable.pool_cores_for_tyrant\nactions+=/demonbolt,cycle_targets=1,if=buff.demonic_core.stack>=3-(talent.doom&debuff.doom.down)*2&soul_shard<=3&!variable.pool_cores_for_tyrant\nactions+=/power_siphon,if=buff.demonic_core.stack<3&cooldown.summon_demonic_tyrant.remains>25&!buff.demonic_power.up\nactions+=/demonic_strength,if=active_enemies>1\nactions+=/bilescourge_bombers,if=active_enemies>1\nactions+=/guillotine,if=active_enemies>1&(cooldown.demonic_strength.remains||!talent.demonic_strength)\nactions+=/ruination\nactions+=/infernal_bolt,if=buff.infernal_bolt.remains>cast_time&buff.infernal_bolt.remains<2*gcd.max||soul_shard<3&cooldown.summon_demonic_tyrant.remains>20\nactions+=/implosion,if=two_cast_imps>0&variable.impl&!prev_gcd.1.implosion&(active_enemies>3||active_enemies<=3&last_cast_imps>0)\nactions+=/demonbolt,if=variable.diabolic_ritual_remains>gcd.max&variable.diabolic_ritual_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=active_enemies<4&buff.demonic_core.stack>1&((soul_shard<4&!talent.soul_strike||pet.felguard.cooldown.soul_strike.remains>gcd.max*2&talent.fel_invocation)||soul_shard<3)&!variable.pool_cores_for_tyrant\nactions+=/demonbolt,if=buff.demonic_core.up&buff.tyrant.up&soul_shard<3\nactions+=/demonbolt,if=buff.demonic_core.stack>1&soul_shard<4\nactions+=/infernal_bolt\nactions+=/lights_judgment,if=!pet.tyrant.active&cooldown.tyrant_remains>15&active_enemies>1\nactions+=/shadow_bolt\nactions+=/felstorm,if=active_enemies>1&(cooldown.demonic_strength.remains||!talent.demonic_strength)&talent.fel_sunder\n\nactions.fight_end+=/grimoire_felguard,if=fight_remains<20\nactions.fight_end+=/ruination\nactions.fight_end+=/implosion,if=fight_remains<2*gcd.max&!prev_gcd.1.implosion\nactions.fight_end+=/demonbolt,if=fight_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,name=mirror_of_fractured_tomorrows,if=trinket.1.is.mirror_of_fractured_tomorrows&variable.trinket_priority=2||trinket.2.is.mirror_of_fractured_tomorrows&variable.trinket_priority=1\nactions.items+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(variable.damage_trinket_priority=1||trinket.2.cooldown.remains)\nactions.items+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(variable.damage_trinket_priority=2||trinket.1.cooldown.remains)\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,if=!equipped.neural_synapse_enhancer\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(pet.demonic_tyrant.active||fight_remains<=15)&!variable.trinket_1_buffs&!variable.trinket_2_buffs\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(pet.demonic_tyrant.active||fight_remains<=15||trinket.2.cooldown.remains>cooldown.summon_demonic_tyrant.remains)&variable.trinket_2_buffs\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(pet.demonic_tyrant.active||fight_remains<=15||trinket.1.cooldown.remains>cooldown.summon_demonic_tyrant.remains)&variable.trinket_1_buffs\n\nactions.opener+=/grimoire_felguard,if=soul_shard>=5-talent.fel_invocation\nactions.opener+=/summon_vilefiend,if=soul_shard=5\nactions.opener+=/shadow_bolt,if=soul_shard<5&cooldown.call_dreadstalkers.up\nactions.opener+=/call_dreadstalkers,if=soul_shard=5\nactions.opener+=/ruination\n\nactions.racials+=/berserking,use_off_gcd=1\nactions.racials+=/blood_fury\nactions.racials+=/fireblood\nactions.racials+=/ancestral_call\n\nactions.tyrant+=/call_action_list,name=racials,if=!variable.check_racials&(variable.imp_despawn&variable.imp_despawn<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.5+cast_time)||(buff.wild_imps.stack>9&soul_shards<2))&buff.dreadstalkers.up&(buff.vilefiend.up||!talent.summon_vilefiend.enabled))||(buff.dreadstalkers.up&buff.dreadstalkers.remains<gcd.max*2+cast_time&((buff.vilefiend.up&buff.vilefiend.remains>2*gcd.max)||!talent.summon_vilefiend.enabled)&((buff.grimoire_felguard.up&buff.grimoire_felguard.remains>2*gcd.max)||!talent.grimoire_felguard.enabled||cooldown.grimoire_felguard.remains>20))\nactions.tyrant+=/hand_of_guldan,if=(variable.imp_despawn||buff.dreadstalkers.remains)&soul_shard>=3||soul_shard=5\nactions.tyrant+=/infernal_bolt,if=variable.imp_despawn&soul_shard<3\nactions.tyrant+=/demonbolt,cycle_targets=1,if=variable.imp_despawn&buff.demonic_core.up&soul_shard<4||prev_gcd.1.call_dreadstalkers&soul_shard<4&buff.demonic_core.stack=4||buff.demonic_core.stack=4&soul_shard<4||buff.demonic_core.stack>=2&cooldown.power_siphon.remains<5\nactions.tyrant+=/ruination,if=variable.imp_despawn||soul_shard=5&cooldown.summon_vilefiend.remains>gcd.max*3\nactions.tyrant+=/shadow_bolt\nactions.tyrant+=/infernal_bolt\n\nactions.variables+=/variable,name=next_tyrant_cd,op=set,value=cooldown.summon_demonic_tyrant.remains_expected\nactions.variables+=/variable,name=in_opener,op=set,value=0,if=pet.demonic_tyrant.active\n## Handled internally [Hekili]\n## Sets an expected duration of valid Wild Imps on a tyrant Setup for the sake of casting Tyrant before expiration of Imps\n## actions.variables+=/variable,name=imp_despawn,op=set,value=2*spell_haste*6+0.58+time,if=prev_gcd.1.hand_of_guldan&buff.dreadstalkers.up&cooldown.summon_demonic_tyrant.remains<13&variable.imp_despawn=0\n## Checks the Wild Imps in a Tyrant Setup alongside Dreadstalkers for the sake of casting Tyrant before Expiration Dreadstalkers or Imps\n## actions.variables+=/variable,name=imp_despawn,op=max,value=buff.dreadstalkers.remains+time,if=variable.imp_despawn\n## Checks The Wild Imps in a Tyrant Setup alongside Grimoire Felguard for the sake of casting Tyrant before Expiration of Grimoire Felguard or Imps\n## actions.variables+=/variable,name=imp_despawn,op=max,value=buff.grimoire_felguard.remains+time,if=variable.imp_despawn&buff.grimoire_felguard.up\n## actions.variables+=/variable,name=imp_despawn,op=set,value=0,if=buff.tyrant.up\n# Defines the viability of Implosion when Tyrant is down\nactions.variables+=/variable,name=impl,op=set,value=buff.tyrant.down,if=active_enemies>1+(talent.sacrificed_souls.enabled)\n# Defines the Viability of Implosion while Tyrant is Up\nactions.variables+=/variable,name=impl,op=set,value=buff.tyrant.remains<6,if=active_enemies>2+(talent.sacrificed_souls.enabled)&active_enemies<5+(talent.sacrificed_souls.enabled)\n# Defines the Viability of Implosion while Tyrant is Up\nactions.variables+=/variable,name=impl,op=set,value=buff.tyrant.remains<8,if=active_enemies>4+(talent.sacrificed_souls.enabled)\n# Restricts Demonic Core usage for the sake of having 2 or more Demonic Cores on Tyrant Setup\nactions.variables+=/variable,name=pool_cores_for_tyrant,op=set,value=cooldown.summon_demonic_tyrant.remains<20&variable.next_tyrant_cd<20&(buff.demonic_core.stack<=2||!buff.demonic_core.up)&cooldown.summon_vilefiend.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\nactions.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\nactions.variables+=/felstorm,if=active_enemies>1&(cooldown.demonic_strength.remains||!talent.demonic_strength)&talent.fel_sunder",
|
|
},
|
|
["Destruction"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250303,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-03-03: Sync with SimC",
|
|
["lists"] = {
|
|
["items"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "spymasters_web",
|
|
["action"] = "spymasters_web",
|
|
["criteria"] = "pet.infernal.remains >= 10 & pet.infernal.remains <= 20 & buff.spymasters_report.stack >= 38 & ( fight_remains > 240 || fight_remains <= 140 ) || boss & fight_remains <= 30",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.infernal_active || ! talent.summon_infernal.enabled || variable.trinket_1_will_lose_cast ) & ( variable.trinket_priority = 1 || variable.trinket_2_exclude || ! trinket.t2.has_cooldown || ( trinket.t2.cooldown.remains || variable.trinket_priority = 2 & cooldown.summon_infernal.remains > 20 & ! variable.infernal_active & trinket.t2.cooldown.remains < cooldown.summon_infernal.remains ) ) & variable.trinket_1_buffs & ! variable.trinket_1_manual || ( variable.trinket_1_buff_duration + 1 >= fight_remains )",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.infernal_active || ! talent.summon_infernal.enabled || variable.trinket_2_will_lose_cast ) & ( variable.trinket_priority = 2 || variable.trinket_1_exclude || ! trinket.t1.has_cooldown || ( trinket.t1.cooldown.remains || variable.trinket_priority = 1 & cooldown.summon_infernal.remains > 20 & ! variable.infernal_active & trinket.t1.cooldown.remains < cooldown.summon_infernal.remains ) ) & variable.trinket_2_buffs & ! variable.trinket_2_manual || ( variable.trinket_2_buff_duration + 1 >= fight_remains )",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || talent.summon_infernal.enabled & cooldown.summon_infernal.remains_expected > 20 & ! prev_gcd.1.summon_infernal || ! talent.summon_infernal.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) || talent.summon_infernal.enabled & cooldown.summon_infernal.remains_expected > 20 & ! prev_gcd.1.summon_infernal || ! talent.summon_infernal.enabled )",
|
|
},
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["slot"] = "main_hand",
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_infernal.remains >= 55 & soul_shard < 4.7 & ( active_enemies <= 3 + active_dot.wither || time > 30 )",
|
|
["action"] = "malevolence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "demonic_art",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["sec"] = "( ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) )",
|
|
["action"] = "wait",
|
|
["criteria"] = "( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) < gcd.max * 0.25 ) & soul_shard > 2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) <= action.incinerate.cast_time & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) > gcd.max * 0.25 )",
|
|
["action"] = "incinerate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "havoc_active & havoc_remains > gcd.max & active_enemies < ( 5 + ! talent.wither.enabled ) & ( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled )",
|
|
["list_name"] = "havoc",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard < 4.7 & ( charges > 2 || boss & fight_remains < cooldown.dimensional_rift.duration )",
|
|
["action"] = "dimensional_rift",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.inferno.enabled & soul_shard >= ( 4.5 - 0.1 * ( active_dot.immolate + active_dot.wither ) ) || soul_shard >= ( 3.5 - 0.1 * ( active_dot.immolate + active_dot.wither ) ) || buff.ritual_of_ruin.up",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.wither.refreshable & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.wither.remains ) & ( ! talent.raging_demonfire.enabled || cooldown.channel_demonfire.remains > remains || time < 5 ) & ( active_dot.wither <= 4 || time > 15 ) & target.time_to_die > 18",
|
|
["action"] = "wither",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time & talent.raging_demonfire.enabled",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( buff.malevolence.up & ( ( talent.cataclysm.enabled & active_enemies <= 10 ) || ( talent.inferno.enabled & active_enemies <= 6 ) ) ) || ( talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 6 ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 4 ) || active_enemies <= 3 ) & ( ( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled ) || fight_remains <= 8 )",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( buff.malevolence.up & ( ( talent.cataclysm.enabled & active_enemies <= 10 ) || ( talent.inferno.enabled & active_enemies <= 6 ) ) ) || ( talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 6 ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 4 ) || active_enemies <= 3 ) & ( ( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled ) & time_to_die < 5 || boss & fight_remains <= 8 )",
|
|
["action"] = "shadowburn",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "ruination",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.infernal.active & talent.rain_of_chaos.enabled",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.decimation.up ) & ! talent.raging_demonfire.enabled & havoc_active",
|
|
["action"] = "soul_fire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.decimation.up & active_dot.immolate <= 4",
|
|
["action"] = "soul_fire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard < 2.5",
|
|
["action"] = "infernal_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( soul_shard > 3.5 - ( 0.1 * active_enemies ) & ! talent.rain_of_fire.enabled ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 3 )",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > 15 || talent.wither.enabled",
|
|
["action"] = "cataclysm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled || ( talent.inferno.enabled & active_enemies > 4 ) ) & target.time_to_die > 8 & ( cooldown.malevolence.remains > 15 || ! talent.malevolence.enabled ) || time < 5",
|
|
["action"] = "havoc",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.wither.refreshable & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.wither.remains ) & ( ! talent.raging_demonfire.enabled || cooldown.channel_demonfire.remains > remains || time < 5 ) & active_dot.wither <= cycle_enemies & target.time_to_die > 18",
|
|
["action"] = "wither",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.refreshable & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.immolate.remains ) & ( ! talent.raging_demonfire.enabled || cooldown.channel_demonfire.remains > remains || time < 5 ) & ( active_dot.immolate <= 6 & ! ( talent.diabolic_ritual.enabled & talent.inferno.enabled ) || active_dot.immolate <= 4 ) & target.time_to_die > 18",
|
|
["action"] = "immolate",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "ogcd",
|
|
},
|
|
{
|
|
["action"] = "summon_infernal",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.pyrogenics.down & active_enemies <= 4 & ! talent.diabolic_ritual.enabled",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.refreshable & ( ( ( ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.immolate.remains ) ) || cycle_enemies > active_dot.immolate ) & target.time_to_die > 10 & ! havoc_active & ! ( talent.diabolic_ritual.enabled & talent.inferno.enabled ) )",
|
|
["action"] = "immolate",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.refreshable & ( ( variable.havoc_immo_time < 5.4 || ( dot.immolate.remains < 2 & dot.immolate.remains < havoc_remains ) || ! dot.immolate.ticking || ( variable.havoc_immo_time < 2 ) * havoc_active ) & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.immolate.remains ) & target.time_to_die > 11 & ! ( talent.diabolic_ritual.enabled & talent.inferno.enabled ) )",
|
|
["action"] = "immolate",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "dimensional_rift",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.decimation.up",
|
|
["action"] = "soul_fire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fire_and_brimstone.enabled & buff.backdraft.up",
|
|
["action"] = "incinerate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.backdraft.stack < 2 || ! talent.backdraft.enabled",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["action"] = "incinerate",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["havoc"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.backdraft.enabled & buff.backdraft.down & soul_shard >= 1 & soul_shard <= 4",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cast_time < havoc_remains & soul_shard < 2.5",
|
|
["action"] = "soul_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > 15 || ( talent.wither.enabled & dot.wither.remains < action.wither.cast_time * 0.3 )",
|
|
["action"] = "cataclysm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ( dot.immolate.refreshable & variable.havoc_immo_time < 5.4 ) & target.time_to_die > 5 ) || ( ( dot.immolate.remains < 2 & dot.immolate.remains < havoc_remains ) || ! dot.immolate.ticking || variable.havoc_immo_time < 2 ) & target.time_to_die > 11 ) & soul_shard < 4.5",
|
|
["action"] = "immolate",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ( dot.wither.refreshable & variable.havoc_immo_time < 5.4 ) & target.time_to_die > 5 ) || ( ( dot.wither.remains < 2 & dot.wither.remains < havoc_remains ) || ! dot.wither.ticking || variable.havoc_immo_time < 2 ) & target.time_to_die > 11 ) & soul_shard < 4.5",
|
|
["action"] = "wither",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies <= 4 & ( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled )",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies <= 4 & havoc_remains <= gcd.max * 3",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cast_time < havoc_remains & ( ( ! talent.improved_chaos_bolt.enabled & active_enemies <= 2 ) || ( talent.improved_chaos_bolt.enabled & ( ( talent.wither.enabled & talent.inferno.enabled & active_enemies <= 2 ) || ( talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 4 ) || ( ! talent.wither.enabled & talent.inferno.enabled & active_enemies <= 3 ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 5 ) ) ) )",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 3",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time & soul_shard < 4.5",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.backdraft.enabled",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard < 4.7 & ( charges > 2 || boss & fight_remains < cooldown.dimensional_rift.duration )",
|
|
["action"] = "dimensional_rift",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cast_time < havoc_remains",
|
|
["action"] = "incinerate",
|
|
},
|
|
},
|
|
["cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "havoc_active & havoc_remains > gcd.max",
|
|
["list_name"] = "havoc",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.havoc.remains <= 5 || talent.mayhem.enabled",
|
|
["var_name"] = "pool_soul_shards",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled )",
|
|
["action"] = "malevolence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled ) & target.time_to_die > 8",
|
|
["action"] = "havoc",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "demonic_art",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.decimation.react & ( soul_shard <= 4 || buff.decimation.remains <= gcd.max * 2 ) & debuff.conflagrate.remains >= execute_time & cooldown.havoc.remains",
|
|
["action"] = "soul_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.internal_combustion.enabled & ( ( ( dot.wither.remains - 5 * action.chaos_bolt.in_flight ) < dot.wither.duration * 0.4 ) || dot.wither.remains < 3 || ( dot.wither.remains - action.chaos_bolt.execute_time ) < 5 & action.chaos_bolt.usable ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + action.soul_fire.cast_time > ( dot.wither.remains - 5 ) ) & target.time_to_die > 8 & ! action.soul_fire.in_flight_to_target",
|
|
["action"] = "wither",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.internal_combustion.enabled & ( ( ( dot.wither.remains - 5 * ( action.chaos_bolt.in_flight ) ) < dot.wither.duration * 0.3 ) || dot.wither.remains < 3 ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + action.soul_fire.cast_time > ( dot.wither.remains ) ) & target.time_to_die > 8 & ! action.soul_fire.in_flight_to_target",
|
|
["action"] = "wither",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.roaring_blaze.enabled & full_recharge_time <= gcd.max * 2 ) || recharge_time <= 8 & ( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) < gcd.max ) & ! variable.pool_soul_shards",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled ) || boss & fight_remains <= 8",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ritual_of_ruin.up",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_infernal.remains >= 90 & talent.rain_of_chaos.enabled",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_infernal.remains >= 90 & talent.rain_of_chaos.enabled",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_infernal.remains >= 90 & talent.rain_of_chaos.enabled",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( debuff.eradication.remains >= execute_time || ! talent.eradication.enabled || ! talent.shadowburn.enabled )",
|
|
["action"] = "ruination",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > 15",
|
|
["action"] = "cataclysm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.raging_demonfire.enabled & ( dot.immolate.remains + dot.wither.remains - 5 * ( action.chaos_bolt.in_flight & talent.internal_combustion.enabled ) ) > cast_time",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard <= 3.5 & ( debuff.conflagrate.remains > cast_time + travel_time || ! talent.roaring_blaze.enabled & buff.backdraft.up ) & ! variable.pool_soul_shards",
|
|
["action"] = "soul_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( dot.immolate.refreshable & ( dot.immolate.remains < cooldown.havoc.remains || ! dot.immolate.ticking ) ) & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > remains ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + ( ! talent.mayhem.enabled * action.soul_fire.cast_time ) > dot.immolate.remains ) & target.time_to_die > 15",
|
|
["action"] = "immolate",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "summon_infernal",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.diabolic_ritual.enabled & ( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains - 2 - ! variable.disable_cb_2t * action.chaos_bolt.cast_time - variable.disable_cb_2t * gcd.max ) <= 0 )",
|
|
["action"] = "incinerate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.pooling_condition & ! talent.wither.enabled & buff.rain_of_chaos.up",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.allow_rof_2t_spender >= 1 & ! talent.wither.enabled & talent.pyrogenics.enabled & debuff.pyrogenics.remains <= gcd.max & ( ! talent.rain_of_chaos.enabled || cooldown.summon_infernal.remains >= gcd.max * 3 ) & variable.pooling_condition",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.do_rof_2t & variable.pooling_condition & ( cooldown.summon_infernal.remains >= gcd.max * 3 || ! talent.rain_of_chaos.enabled )",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard <= 4 & talent.mayhem.enabled",
|
|
["action"] = "soul_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.disable_cb_2t & variable.pooling_condition_cb & ( cooldown.summon_infernal.remains >= gcd.max * 3 || soul_shard > 4 || ! talent.rain_of_chaos.enabled )",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["action"] = "dimensional_rift",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "infernal_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time_to_max_charges < 2 * gcd.max || boss & fight_remains < gcd.max * charges",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["action"] = "incinerate",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["variables"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["value"] = "dot.immolate.remains <? 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",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "spell_lock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "variables",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "ogcd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "( active_enemies >= 3 ) & ! variable.cleave_apl",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "This entry is manually translated and will differ from SIMC, but maintains the same functionality.",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 1",
|
|
["list_name"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_infernal.remains >= 55",
|
|
["action"] = "malevolence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["sec"] = "( ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) )",
|
|
["action"] = "wait",
|
|
["criteria"] = "( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) < gcd.max * 0.25 ) & soul_shard > 2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "demonic_art",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.decimation.react & ( soul_shard <= 4 || buff.decimation.remains <= gcd.max * 2 ) & debuff.conflagrate.remains >= execute_time",
|
|
["action"] = "soul_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.internal_combustion.enabled & ( ( ( dot.wither.remains - 5 * action.chaos_bolt.in_flight ) < dot.wither.duration * 0.4 ) || dot.wither.remains < 3 || ( dot.wither.remains - action.chaos_bolt.execute_time ) < 5 & action.chaos_bolt.usable ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + action.soul_fire.cast_time > ( dot.wither.remains - 5 ) ) & target.time_to_die > 8 & ! action.soul_fire.in_flight_to_target",
|
|
["action"] = "wither",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.roaring_blaze.enabled & debuff.conflagrate.remains < 1.5 || full_recharge_time <= gcd.max * 2 || recharge_time <= 8 & ( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) < gcd.max ) & soul_shard >= 1.5",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled ) & ! demonic_art || boss & fight_remains <= 8",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ritual_of_ruin.up",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.summon_infernal.remains >= 90 & talent.rain_of_chaos.enabled ) || buff.malevolence.up",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.summon_infernal.remains >= 90 & talent.rain_of_chaos.enabled ) || buff.malevolence.up",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( debuff.eradication.remains >= execute_time || ! talent.eradication.enabled || ! talent.shadowburn.enabled )",
|
|
["action"] = "ruination",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > 15 & ( dot.immolate.refreshable & ! talent.wither.enabled || talent.wither.enabled & dot.wither.refreshable )",
|
|
["action"] = "cataclysm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.raging_demonfire.enabled & ( dot.immolate.remains + dot.wither.remains - 5 * ( action.chaos_bolt.in_flight & talent.internal_combustion.enabled ) ) > cast_time",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.internal_combustion.enabled & ( ( ( dot.wither.remains - 5 * ( action.chaos_bolt.in_flight ) ) < dot.wither.duration * 0.3 ) || dot.wither.remains < 3 ) & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.wither.remains ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + action.soul_fire.cast_time > ( dot.wither.remains ) ) & target.time_to_die > 8 & ! action.soul_fire.in_flight_to_target",
|
|
["action"] = "wither",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ( dot.immolate.remains - 5 * ( action.chaos_bolt.in_flight & talent.internal_combustion.enabled ) ) < dot.immolate.duration * 0.3 ) || dot.immolate.remains < 3 || ( dot.immolate.remains - action.chaos_bolt.execute_time ) < 5 & talent.internal_combustion.enabled & action.chaos_bolt.usable ) & ( ! talent.cataclysm.enabled || cooldown.cataclysm.remains > dot.immolate.remains ) & ( ! talent.soul_fire.enabled || cooldown.soul_fire.remains + action.soul_fire.cast_time > ( dot.immolate.remains - 5 * talent.internal_combustion.enabled ) ) & target.time_to_die > 8 & ! action.soul_fire.in_flight_to_target",
|
|
["action"] = "immolate",
|
|
},
|
|
{
|
|
["action"] = "summon_infernal",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.diabolic_ritual.enabled & ( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains - 2 - ! variable.disable_cb_2t * action.chaos_bolt.cast_time - variable.disable_cb_2t * gcd.max ) <= 0 )",
|
|
["action"] = "incinerate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.pooling_condition_cb & ( cooldown.summon_infernal.remains >= gcd.max * 3 || soul_shard > 4 || ! talent.rain_of_chaos.enabled )",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time",
|
|
["action"] = "channel_demonfire",
|
|
["description"] = "[Hekili] Don't use without Immolate/Wither active.",
|
|
},
|
|
{
|
|
["action"] = "dimensional_rift",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "infernal_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time_to_max_charges < 2 * gcd.max || boss & fight_remains < gcd.max * charges",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.backdraft.up",
|
|
["action"] = "soul_fire",
|
|
},
|
|
{
|
|
["action"] = "incinerate",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time > 0 & ! pet.alive",
|
|
["action"] = "fel_domination",
|
|
},
|
|
{
|
|
["action"] = "summon_pet",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "toggle.funnel",
|
|
["var_name"] = "cleave_apl",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff",
|
|
["var_name"] = "trinket_1_buffs",
|
|
["description"] = "Automatic Logic for Buff Trinkets in Trinket Slot 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff",
|
|
["var_name"] = "trinket_2_buffs",
|
|
["description"] = "Automatic Logic for Buff Trinkets in Trinket Slot 2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_1_sync",
|
|
["value"] = "1",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % cooldown.summon_infernal.duration = 0 || cooldown.summon_infernal.duration % trinket.t1.cooldown.duration = 0 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["value"] = "1",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "variable.trinket_2_buffs & ( trinket.t2.cooldown.duration % cooldown.summon_infernal.duration = 0 || cooldown.summon_infernal.duration % trinket.t2.cooldown.duration = 0 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.spymasters_web",
|
|
["var_name"] = "trinket_1_manual",
|
|
["description"] = "Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.spymasters_web",
|
|
["var_name"] = "trinket_2_manual",
|
|
["description"] = "Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.whispering_incarnate_icon",
|
|
["var_name"] = "trinket_1_exclude",
|
|
["description"] = "Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.whispering_incarnate_icon",
|
|
["var_name"] = "trinket_2_exclude",
|
|
["description"] = "For On Use Trinkets on slot 2 with on use effects you dont want to use in combat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.buff_duration",
|
|
["var_name"] = "trinket_1_buff_duration",
|
|
["description"] = "Sets the duration of the trinket in the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.buff_duration",
|
|
["var_name"] = "trinket_2_buff_duration",
|
|
["description"] = "Sets the duration of the trinket in the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Automatic Logic in case both Trinkets are on use buffs",
|
|
["value"] = "2",
|
|
["var_name"] = "trinket_priority",
|
|
["action"] = "variable",
|
|
["value_else"] = "1",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / variable.trinket_2_buff_duration ) * ( 1 + 0.5 * trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / variable.trinket_1_buff_duration ) * ( 1 + 0.5 * trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "allow_rof_2t_spender",
|
|
["default"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.allow_rof_2t_spender > 1.99 & ! ( talent.cataclysm.enabled & talent.improved_chaos_bolt.enabled )",
|
|
["var_name"] = "do_rof_2t",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.do_rof_2t || variable.allow_rof_2t_spender > 0.01 & variable.allow_rof_2t_spender < 0.99",
|
|
["var_name"] = "disable_cb_2t",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.grimoire_of_sacrifice.enabled",
|
|
["action"] = "grimoire_of_sacrifice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 2",
|
|
["action"] = "cataclysm",
|
|
},
|
|
{
|
|
["action"] = "soul_fire",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "incinerate",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["ogcd"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.infernal_active || ! talent.summon_infernal.enabled",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.infernal_active || ! talent.summon_infernal.enabled || ( boss & fight_remains < ( cooldown.summon_infernal.remains_expected + cooldown.berserking.duration ) & ( fight_remains > cooldown.berserking.duration ) ) || boss & fight_remains < cooldown.summon_infernal.remains_expected",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.infernal_active || ! talent.summon_infernal.enabled || ( boss & fight_remains < cooldown.summon_infernal.remains_expected + 10 + cooldown.blood_fury.duration & fight_remains > cooldown.blood_fury.duration ) || boss & fight_remains < cooldown.summon_infernal.remains",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.infernal_active || ! talent.summon_infernal.enabled || ( boss & fight_remains < cooldown.summon_infernal.remains_expected + 10 + cooldown.fireblood.duration & fight_remains > cooldown.fireblood.duration ) || boss & fight_remains < cooldown.summon_infernal.remains_expected",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.infernal_active || ! talent.summon_infernal.enabled || ( boss & fight_remains < ( cooldown.summon_infernal.remains_expected + cooldown.berserking.duration ) & ( fight_remains > cooldown.berserking.duration ) ) || boss & fight_remains < cooldown.summon_infernal.remains_expected",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250303,
|
|
["warnings"] = "The import for 'items' required some automated changes.\nLine 2: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 3: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\n\nThe import for 'variables' required some automated changes.\nLine 2: Converted 'talent.secrets_of_the_coven' to 'talent.secrets_of_the_coven.enabled' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted operations in '((floor((fight_remains%trinket.t1.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(floor((fight_remains%trinket.t1.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)%trinket.t1.cooldown.duration)+1))||((floor((fight_remains%trinket.t1.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%%trinket.t1.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_1_buff_duration)>0)))&cooldown.summon_infernal.remains>20' to '((floor((fight_remains/trinket.t1.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(floor((fight_remains/trinket.t1.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)/trinket.t1.cooldown.duration)+1))||((floor((fight_remains/trinket.t1.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%trinket.t1.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_1_buff_duration)>0)))&cooldown.summon_infernal.remains>20'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted operations in '((floor((fight_remains%trinket.t2.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(floor((fight_remains%trinket.t2.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)%trinket.t2.cooldown.duration)+1))||((floor((fight_remains%trinket.t2.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%%trinket.t2.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_2_buff_duration)>0)))&cooldown.summon_infernal.remains>20' to '((floor((fight_remains/trinket.t2.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(floor((fight_remains/trinket.t2.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)/trinket.t2.cooldown.duration)+1))||((floor((fight_remains/trinket.t2.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%trinket.t2.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_2_buff_duration)>0)))&cooldown.summon_infernal.remains>20'.\n\nThe import for 'default' required some automated changes.\nLine 11: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 11: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 12: Converted 'talent.roaring_blaze' to 'talent.roaring_blaze.enabled' (1x).\nLine 13: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 13: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 13: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 13: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 15: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 16: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 17: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 17: Converted 'talent.shadowburn' to 'talent.shadowburn.enabled' (1x).\nLine 18: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 18: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 19: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 19: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 20: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 20: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 20: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 21: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 21: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 21: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 21: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 21: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 23: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 24: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%trinket.t1.cooldown.duration=0)'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%trinket.t2.cooldown.duration=0)'.\nLine 8: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 9: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 10: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 11: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 14: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 16: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 16: Converted 'talent.improved_chaos_bolt' to 'talent.improved_chaos_bolt.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 5: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 7: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 8: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 9: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 10: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 10: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 10: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 10: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 10: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 10: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 10: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 10: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 10: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 10: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 11: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 11: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 11: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 11: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 11: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 11: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 11: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 13: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 14: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 17: Converted 'talent.rain_of_fire' to 'talent.rain_of_fire.enabled' (1x).\nLine 17: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 17: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 18: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 19: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 19: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 19: Converted 'talent.malevolence' to 'talent.malevolence.enabled' (1x).\nLine 20: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 21: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 21: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 21: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 24: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 26: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 26: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 27: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 27: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 31: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\n\nThe import for 'cleave' required some automated changes.\nLine 2: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 3: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 7: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 7: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 8: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 8: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 10: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 10: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 10: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 10: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 12: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 13: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 14: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 15: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 15: Converted 'talent.shadowburn' to 'talent.shadowburn.enabled' (1x).\nLine 17: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 17: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 18: Converted 'talent.roaring_blaze' to 'talent.roaring_blaze.enabled' (1x).\nLine 19: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 19: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 19: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 21: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 22: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 23: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 23: Converted 'talent.pyrogenics' to 'talent.pyrogenics.enabled' (1x).\nLine 23: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 24: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 25: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 26: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\n\nThe import for 'havoc' required some automated changes.\nLine 1: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\nLine 3: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 6: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 6: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 6: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 6: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 8: Converted 'talent.improved_chaos_bolt' to 'talent.improved_chaos_bolt.enabled' (1x).\nLine 8: Converted 'talent.improved_chaos_bolt' to 'talent.improved_chaos_bolt.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\n\nThe import for 'ogcd' required some automated changes.\nLine 1: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 2: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 3: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\n\nImported 8 action lists.\n",
|
|
["profile"] = "actions.precombat=fel_domination,if=time>0&!pet.alive\nactions.precombat+=/summon_pet\nactions.precombat+=/variable,name=cleave_apl,value=toggle.funnel\n# Automatic Logic for Buff Trinkets in Trinket Slot 1\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff\n# Automatic Logic for Buff Trinkets in Trinket Slot 2\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%%trinket.2.cooldown.duration=0)\n# Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.spymasters_web\n# Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.spymasters_web\n# Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.whispering_incarnate_icon\n# For On Use Trinkets on slot 2 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.whispering_incarnate_icon\n# Sets the duration of the trinket in the automatic logic\nactions.precombat+=/variable,name=trinket_1_buff_duration,value=trinket.1.proc.any_dps.duration\n# Sets the duration of the trinket in the automatic logic\nactions.precombat+=/variable,name=trinket_2_buff_duration,value=trinket.2.proc.any_dps.duration\n# Automatic Logic in case both Trinkets are on use buffs\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%variable.trinket_2_buff_duration)*(1+0.5*trinket.2.has_buff.intellect)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.1.has_buff.intellect)*(variable.trinket_1_sync))\nactions.precombat+=/variable,name=allow_rof_2t_spender,default=2,op=reset\nactions.precombat+=/variable,name=do_rof_2t,value=variable.allow_rof_2t_spender>1.99&!(talent.cataclysm&talent.improved_chaos_bolt),op=set\nactions.precombat+=/variable,name=disable_cb_2t,value=variable.do_rof_2t||variable.allow_rof_2t_spender>0.01&variable.allow_rof_2t_spender<0.99\nactions.precombat+=/grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice.enabled\nactions.precombat+=/cataclysm,if=active_enemies>=2\nactions.precombat+=/soul_fire\nactions.precombat+=/incinerate\n\nactions+=/spell_lock\nactions+=/call_action_list,name=variables\nactions+=/call_action_list,name=ogcd\nactions+=/call_action_list,name=items\nactions+=/call_action_list,name=aoe,strict=1,if=(active_enemies>=3)&!variable.cleave_apl\n# This entry is manually translated and will differ from SIMC, but maintains the same functionality.\nactions+=/call_action_list,name=cleave,strict=1,if=active_enemies>1\nactions+=/malevolence,if=cooldown.summon_infernal.remains>=55\nactions+=/wait,sec=((buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)),if=(diabolic_ritual&(buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains)<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)\n# [Hekili] Don't use without Immolate/Wither active.\nactions+=/channel_demonfire,if=dot.immolate.remains+dot.wither.remains>cast_time\nactions+=/dimensional_rift\nactions+=/infernal_bolt\nactions+=/conflagrate,if=time_to_max_charges<2*gcd.max||boss&fight_remains<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+!talent.wither)&(!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&active_enemies<=10)||(talent.inferno&active_enemies<=6)))||(talent.wither&talent.cataclysm&active_enemies<=6)||(!talent.wither&talent.cataclysm&active_enemies<=4)||active_enemies<=3)&((cooldown.shadowburn.full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)||fight_remains<=8)\nactions.aoe+=/shadowburn,cycle_targets=1,if=((buff.malevolence.up&((talent.cataclysm&active_enemies<=10)||(talent.inferno&active_enemies<=6)))||(talent.wither&talent.cataclysm&active_enemies<=6)||(!talent.wither&talent.cataclysm&active_enemies<=4)||active_enemies<=3)&((cooldown.shadowburn.full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)&time_to_die<5||boss&fight_remains<=8)\nactions.aoe+=/ruination\nactions.aoe+=/rain_of_fire,if=pet.infernal.active&talent.rain_of_chaos\nactions.aoe+=/soul_fire,cycle_targets=1,if=(buff.decimation.up)&!talent.raging_demonfire&havoc_active\nactions.aoe+=/soul_fire,cycle_targets=1,if=buff.decimation.up&active_dot.immolate<=4\nactions.aoe+=/infernal_bolt,if=soul_shard<2.5\nactions.aoe+=/chaos_bolt,if=(soul_shard>3.5-(0.1*active_enemies)&!talent.rain_of_fire)||(!talent.wither&talent.cataclysm&active_enemies<=3)\nactions.aoe+=/cataclysm,if=raid_event.adds.in>15||talent.wither\nactions.aoe+=/havoc,cycle_targets=1,if=(!cooldown.summon_infernal.up||!talent.summon_infernal||(talent.inferno&active_enemies>4))&target.time_to_die>8&(cooldown.malevolence.remains>15||!talent.malevolence)||time<5\nactions.aoe+=/wither,cycle_targets=1,if=dot.wither.refreshable&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.wither.remains)&(!talent.raging_demonfire||cooldown.channel_demonfire.remains>remains||time<5)&active_dot.wither<=cycle_enemies&target.time_to_die>18\nactions.aoe+=/immolate,cycle_targets=1,if=dot.immolate.refreshable&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.immolate.remains)&(!talent.raging_demonfire||cooldown.channel_demonfire.remains>remains||time<5)&(active_dot.immolate<=6&!(talent.diabolic_ritual&talent.inferno)||active_dot.immolate<=4)&target.time_to_die>18\nactions.aoe+=/call_action_list,name=ogcd\nactions.aoe+=/summon_infernal\nactions.aoe+=/rain_of_fire,if=debuff.pyrogenics.down&active_enemies<=4&!talent.diabolic_ritual\nactions.aoe+=/channel_demonfire,if=dot.immolate.remains+dot.wither.remains>cast_time\nactions.aoe+=/immolate,cycle_targets=1,if=dot.immolate.refreshable&((((!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.immolate.remains))||cycle_enemies>active_dot.immolate)&target.time_to_die>10&!havoc_active&!(talent.diabolic_ritual&talent.inferno))\nactions.aoe+=/immolate,cycle_targets=1,if=dot.immolate.refreshable&((variable.havoc_immo_time<5.4||(dot.immolate.remains<2&dot.immolate.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,if=dot.immolate.remains+dot.wither.remains>cast_time\nactions.cleave+=/dimensional_rift\nactions.cleave+=/infernal_bolt\nactions.cleave+=/conflagrate,if=time_to_max_charges<2*gcd.max||boss&fight_remains<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=active_enemies<=4&(cooldown.shadowburn.full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)\nactions.havoc+=/shadowburn,if=active_enemies<=4&havoc_remains<=gcd.max*3\nactions.havoc+=/chaos_bolt,if=cast_time<havoc_remains&((!talent.improved_chaos_bolt&active_enemies<=2)||(talent.improved_chaos_bolt&((talent.wither&talent.inferno&active_enemies<=2)||(talent.wither&talent.cataclysm&active_enemies<=4)||(!talent.wither&talent.inferno&active_enemies<=3)||(!talent.wither&talent.cataclysm&active_enemies<=5))))\nactions.havoc+=/rain_of_fire,if=active_enemies>=3\nactions.havoc+=/channel_demonfire,if=dot.immolate.remains+dot.wither.remains>cast_time&soul_shard<4.5\nactions.havoc+=/conflagrate,if=!talent.backdraft\nactions.havoc+=/dimensional_rift,if=soul_shard<4.7&(charges>2||boss&fight_remains<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",
|
|
["spec"] = 267,
|
|
},
|
|
["Affliction"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250303,
|
|
["spec"] = 265,
|
|
["desc"] = "2025-03-03: Sync with SimC",
|
|
["profile"] = "actions.precombat=fel_domination,if=time>0&!pet.alive\nactions.precombat+=/summon_pet\nactions.precombat+=/variable,name=cleave_apl,value=toggle.funnel\n# Used to set Trinket in slot 1 as Buff Trinkets for the automatic logic\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff\n# Used to set Trinkets in slot 2 as Buff Trinkets for the automatic logic\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff\n# Automatic Logic for Buff Trinkets in Trinket Slot 1\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.1.cooldown.duration=0)\n# Automatic Logic for Buff Trinkets in Trinket Slot 2\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.2.cooldown.duration=0)\n# Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.spymasters_web||trinket.1.is.aberrant_spellforge\n# Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.spymasters_web||trinket.2.is.aberrant_spellforge\n# For On Use Trinkets on slot 1 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell\n# For On Use Trinkets on Slot 2 with on use effects you don't want to use in combat\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell\n# Sets the duration of Trinket 1 in the automatic logic\nactions.precombat+=/variable,name=trinket_1_buff_duration,value=trinket.1.proc.any_dps.duration+(trinket.1.is.mirror_of_fractured_tomorrows*20)\n# Sets the duration of Trinket 2 in the automatic logic\nactions.precombat+=/variable,name=trinket_2_buff_duration,value=trinket.2.proc.any_dps.duration+(trinket.2.is.mirror_of_fractured_tomorrows*20)\n# Automatic Logic in case of 2 On Use Buff Trinkets\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%variable.trinket_2_buff_duration)*(1+0.5*trinket.2.has_buff.intellect)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.1.has_buff.intellect)*(variable.trinket_1_sync))\nactions.precombat+=/grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice.enabled\nactions.precombat+=/seed_of_corruption,if=spell_targets.seed_of_corruption_aoe>2||spell_targets.seed_of_corruption_aoe>1&talent.demonic_soul\nactions.precombat+=/haunt\n\nactions+=/spell_lock\nactions+=/call_action_list,name=variables\nactions+=/call_action_list,name=ogcd\nactions+=/call_action_list,name=items\n# This entry is manually translated and will differ from SIMC, but maintains the same functionality.\nactions+=/call_action_list,name=cleave,if=active_enemies=2||active_enemies>2&variable.cleave_apl\nactions+=/call_action_list,name=aoe,if=active_enemies>2\nactions+=/call_action_list,name=end_of_fight\nactions+=/agony,if=(!talent.vile_taint||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,if=!equipped.neural_synapse_enhancer\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(prev_gcd.1.soul_rot||boss&fight_remains<=15)&!variable.trinket_1_buffs&!variable.trinket_2_buffs\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(prev_gcd.1.soul_rot||boss&fight_remains<=15||cooldown.soul_rot.remains>=45)&trinket.2.cooldown.remains&variable.trinket_2_buffs\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(prev_gcd.1.soul_rot||boss&fight_remains<=15||cooldown.soul_rot.remains>=45)&trinket.1.cooldown.remains&variable.trinket_1_buffs\n\nactions.ogcd+=/potion,if=variable.cds_active||fight_remains<32||prev_gcd.1.soul_rot&time<20\nactions.ogcd+=/berserking,if=variable.cds_active||fight_remains<14||prev_gcd.1.soul_rot&time<20\nactions.ogcd+=/blood_fury,if=variable.cds_active||fight_remains<17||prev_gcd.1.soul_rot&time<20\n## actions.ogcd+=/invoke_external_buff,name=power_infusion,if=variable.cds_active\nactions.ogcd+=/fireblood,if=variable.cds_active||fight_remains<10||prev_gcd.1.soul_rot&time<20\nactions.ogcd+=/ancestral_call,if=variable.cds_active||fight_remains<17||prev_gcd.1.soul_rot&time<20\n\nactions.variables+=/variable,name=ps_up,op=set,value=!talent.phantom_singularity||dot.phantom_singularity.up\nactions.variables+=/variable,name=vt_up,op=set,value=!talent.vile_taint||dot.vile_taint_dot.up\nactions.variables+=/variable,name=vt_ps_up,op=set,value=(!talent.vile_taint&!talent.phantom_singularity)||dot.vile_taint_dot.up||dot.phantom_singularity.up\nactions.variables+=/variable,name=sr_up,op=set,value=!talent.soul_rot||dot.soul_rot.up\nactions.variables+=/variable,name=cd_dots_up,op=set,value=variable.ps_up&variable.vt_up&variable.sr_up\nactions.variables+=/variable,name=has_cds,op=set,value=talent.phantom_singularity||talent.vile_taint||talent.soul_rot||talent.summon_darkglare\nactions.variables+=/variable,name=cds_active,op=set,value=!variable.has_cds||(variable.cd_dots_up&(!talent.summon_darkglare||cooldown.summon_darkglare.remains>20||pet.darkglare.remains))\nactions.variables+=/variable,name=min_vt,op=reset,if=variable.min_vt\nactions.variables+=/variable,name=min_ps,op=reset,if=variable.min_ps",
|
|
["version"] = 20250303,
|
|
["warnings"] = "The import for 'cleave' required some automated changes.\nLine 2: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 2: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 4: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 4: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 5: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 7: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 9: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 13: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 14: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 15: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 15: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 16: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 17: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 17: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 17: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 18: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 19: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 19: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 19: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 19: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 20: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 20: Converted 'talent.nightfall' to 'talent.nightfall.enabled' (1x).\nLine 20: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 20: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 21: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'variables' required some automated changes.\nLine 1: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 2: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 3: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 3: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 4: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 6: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 6: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 6: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 6: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 7: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\n\nThe import for 'se_maintenance' required some automated changes.\nLine 1: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 1: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 2: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\n\nThe import for 'items' required some automated changes.\nLine 2: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 3: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Unsupported use_item action [ time_thiefs_gambit]; entry disabled.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 6: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 7: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\n\nThe import for 'opener_cleave_se' required some automated changes.\nLine 1: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 1: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 8: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 8: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 8: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 9: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 9: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 10: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 10: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 10: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 11: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 11: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 11: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 12: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 12: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 12: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 14: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 15: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 16: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 17: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 18: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 22: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 23: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 23: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 24: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 25: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 25: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 25: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 27: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 28: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 28: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 28: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 28: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 29: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 29: Converted 'talent.nightfall' to 'talent.nightfall.enabled' (1x).\nLine 29: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 29: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 30: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%trinket.t1.cooldown.duration=0)'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%trinket.t2.cooldown.duration=0)'.\nLine 8: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 8: Converted 'trinket.1.is.aberrant_spellforge' to 'trinket.t1.is.aberrant_spellforge' (1x).\nLine 9: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 9: Converted 'trinket.2.is.aberrant_spellforge' to 'trinket.t2.is.aberrant_spellforge' (1x).\nLine 10: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 11: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 12: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 13: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 14: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 16: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 4: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 4: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 9: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 9: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 9: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 12: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 12: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 13: Converted 'talent.seed_of_corruption' to 'talent.seed_of_corruption.enabled' (1x).\nLine 14: Converted 'talent.seed_of_corruption' to 'talent.seed_of_corruption.enabled' (1x).\nLine 16: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 17: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 18: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 18: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 19: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 20: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 21: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 22: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 22: Converted 'talent.nightfall' to 'talent.nightfall.enabled' (1x).\nLine 23: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 23: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 24: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 24: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 24: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 25: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\n\nThe import for 'end_of_fight' required some automated changes.\nLine 1: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 3: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 3: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'cleave_se_maintenance' required some automated changes.\nLine 1: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 1: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 1: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 1: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 2: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 2: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\n\nImported 11 action lists.\n",
|
|
["author"] = "SimC",
|
|
["lists"] = {
|
|
["cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "boss",
|
|
["list_name"] = "end_of_fight",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ( remains < cooldown.vile_taint.remains + action.vile_taint.cast_time || ! talent.vile_taint.enabled ) & ( remains < gcd.max * 2 || talent.demonic_soul.enabled & remains < cooldown.soul_rot.remains + 8 & cooldown.soul_rot.remains < 5 ) & fight_remains > remains + 5",
|
|
["action"] = "agony",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & remains < 5 & ! ( action.seed_of_corruption.in_flight || dot.seed_of_corruption.remains > 0 ) & fight_remains > remains + 5",
|
|
["action"] = "wither",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.demonic_soul.enabled & buff.nightfall.stack < 2 - prev_gcd.1.drain_soul & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains ) || debuff.haunt.remains < 3",
|
|
["action"] = "haunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( remains < 5 || talent.demonic_soul.enabled & remains < cooldown.soul_rot.remains + 8 & cooldown.soul_rot.remains < 5 ) & fight_remains > remains + 5",
|
|
["action"] = "unstable_affliction",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & remains < 5 & ! ( action.seed_of_corruption.in_flight || dot.seed_of_corruption.remains > 0 ) & fight_remains > remains + 5",
|
|
["action"] = "corruption",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "talent.wither.enabled",
|
|
["list_name"] = "cleave_se_maintenance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.soul_rot.enabled || ( variable.min_agony < 1.5 || cooldown.soul_rot.remains <= execute_time + gcd.max ) || cooldown.soul_rot.remains >= 20",
|
|
["action"] = "vile_taint",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.soul_rot.enabled || cooldown.soul_rot.remains < 4 || fight_remains < cooldown.soul_rot.remains ) & active_dot.agony = 2",
|
|
["action"] = "phantom_singularity",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.vt_ps_up",
|
|
["action"] = "malevolence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.vt_ps_up ) & active_dot.agony = 2",
|
|
["action"] = "soul_rot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_dots_up",
|
|
["action"] = "summon_darkglare",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demonic_soul.enabled",
|
|
["list_name"] = "opener_cleave_se",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demonic_soul.enabled",
|
|
["list_name"] = "cleave_se_maintenance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard > 4 & ( talent.demonic_soul.enabled & buff.nightfall.stack < 2 || ! talent.demonic_soul.enabled ) || buff.tormented_crescendo.stack > 1",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.demonic_soul.enabled & buff.nightfall.up & buff.tormented_crescendo.stack < 2 & target.health.pct < 20",
|
|
["action"] = "drain_soul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.demonic_soul.enabled & ( soul_shard > 1 || buff.tormented_crescendo.up & cooldown.soul_rot.remains > buff.tormented_crescendo.remains * gcd.max ) & ( ! talent.vile_taint.enabled || soul_shard > 1 & cooldown.vile_taint.remains > 10 ) & ( ! talent.oblivion.enabled || cooldown.oblivion.remains > 10 || soul_shard > 2 & cooldown.oblivion.remains < 10 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tormented_crescendo.enabled & buff.tormented_crescendo.up & ( buff.tormented_crescendo.remains < gcd.max * 2 || buff.tormented_crescendo.stack = 2 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.cd_dots_up || ( talent.demonic_soul.enabled || talent.phantom_singularity.enabled ) & variable.vt_ps_up || talent.wither.enabled & variable.vt_ps_up & ! dot.soul_rot.remains & soul_shard > 1 ) & ( ! talent.oblivion.enabled || cooldown.oblivion.remains > 10 || soul_shard > 2 & cooldown.oblivion.remains < 10 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tormented_crescendo.enabled & talent.nightfall.enabled & buff.tormented_crescendo.up & buff.nightfall.up || talent.demonic_soul.enabled & ! buff.nightfall.up & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains > 10 || soul_shard > 1 & cooldown.vile_taint.remains < 10 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.demonic_soul.enabled & buff.tormented_crescendo.up",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable || cooldown.soul_rot.remains < 5 & remains < 8",
|
|
["action"] = "agony",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable || cooldown.soul_rot.remains < 5 & remains < 8",
|
|
["action"] = "unstable_affliction",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.nightfall.up",
|
|
["action"] = "drain_soul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.nightfall.up",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable",
|
|
["action"] = "wither",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable",
|
|
["action"] = "corruption",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "drain_soul",
|
|
["interrupt_if"] = "tick_time>0.5",
|
|
["early_chain_if"] = "buff.nightfall.up",
|
|
["chain"] = "1",
|
|
},
|
|
{
|
|
["action"] = "shadow_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time > 0 & ! pet.alive",
|
|
["action"] = "fel_domination",
|
|
},
|
|
{
|
|
["action"] = "summon_pet",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "toggle.funnel",
|
|
["var_name"] = "cleave_apl",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff",
|
|
["var_name"] = "trinket_1_buffs",
|
|
["description"] = "Used to set Trinket in slot 1 as Buff Trinkets for the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff",
|
|
["var_name"] = "trinket_2_buffs",
|
|
["description"] = "Used to set Trinkets in slot 2 as Buff Trinkets for the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Automatic Logic for Buff Trinkets in Trinket Slot 1",
|
|
["value"] = "1",
|
|
["var_name"] = "trinket_1_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % cooldown.soul_rot.duration = 0 || cooldown.soul_rot.duration % trinket.t1.cooldown.duration = 0 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Automatic Logic for Buff Trinkets in Trinket Slot 2",
|
|
["value"] = "1",
|
|
["var_name"] = "trinket_2_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "variable.trinket_2_buffs & ( trinket.t2.cooldown.duration % cooldown.soul_rot.duration = 0 || cooldown.soul_rot.duration % trinket.t2.cooldown.duration = 0 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.spymasters_web || trinket.t1.is.aberrant_spellforge",
|
|
["var_name"] = "trinket_1_manual",
|
|
["description"] = " Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.spymasters_web || trinket.t2.is.aberrant_spellforge",
|
|
["var_name"] = "trinket_2_manual",
|
|
["description"] = " Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.ruby_whelp_shell",
|
|
["var_name"] = "trinket_1_exclude",
|
|
["description"] = "For On Use Trinkets on slot 1 with on use effects you dont want to use in combat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.ruby_whelp_shell",
|
|
["var_name"] = "trinket_2_exclude",
|
|
["description"] = "For On Use Trinkets on Slot 2 with on use effects you don't want to use in combat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.buff_duration + ( trinket.t1.is.mirror_of_fractured_tomorrows * 20 )",
|
|
["var_name"] = "trinket_1_buff_duration",
|
|
["description"] = " Sets the duration of Trinket 1 in the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.buff_duration + ( trinket.t2.is.mirror_of_fractured_tomorrows * 20 )",
|
|
["var_name"] = "trinket_2_buff_duration",
|
|
["description"] = " Sets the duration of Trinket 2 in the automatic logic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Automatic Logic in case of 2 On Use Buff Trinkets",
|
|
["value"] = "2",
|
|
["var_name"] = "trinket_priority",
|
|
["action"] = "variable",
|
|
["value_else"] = "1",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / variable.trinket_2_buff_duration ) * ( 1 + 0.5 * trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / variable.trinket_1_buff_duration ) * ( 1 + 0.5 * trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.grimoire_of_sacrifice.enabled",
|
|
["action"] = "grimoire_of_sacrifice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.seed_of_corruption_aoe > 2 || spell_targets.seed_of_corruption_aoe > 1 & talent.demonic_soul.enabled",
|
|
["action"] = "seed_of_corruption",
|
|
},
|
|
{
|
|
["action"] = "haunt",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["se_maintenance"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadow_embrace.enabled & talent.drain_soul.enabled & ( debuff.shadow_embrace.stack < debuff.shadow_embrace.max_stack || debuff.shadow_embrace.remains < 3 ) & active_enemies <= 4 & target.time_to_die > 15",
|
|
["interrupt_if"] = "debuff.shadow_embrace.stack=debuff.shadow_embrace.max_stack",
|
|
["interrupt"] = "1",
|
|
["action"] = "drain_soul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadow_embrace.enabled & ( ( debuff.shadow_embrace.stack + ( action.shadow_bolt.time_since < 1 ) ) < debuff.shadow_embrace.max_stack || debuff.shadow_embrace.remains < 3 & ! action.shadow_bolt.in_flight_to_target ) & active_enemies <= 4 & target.time_to_die > 15",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
},
|
|
["items"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "aberrant_spellforge",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "gcd.remains > gcd.max * 0.8",
|
|
["name"] = "aberrant_spellforge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "spymasters_web",
|
|
["action"] = "spymasters_web",
|
|
["criteria"] = "variable.cd_dots_up & ( buff.spymasters_report.stack >= 38 || boss & fight_remains <= 80 || talent.drain_soul.enabled & target.health.pct < 20 ) || boss & fight_remains < 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.cds_active ) & ( variable.trinket_priority = 1 || variable.trinket_2_exclude || ! trinket.t2.has_cooldown || ( trinket.t2.cooldown.remains || variable.trinket_priority = 2 & cooldown.summon_darkglare.remains > 20 & ! pet.darkglare.active & trinket.t2.cooldown.remains < cooldown.summon_darkglare.remains ) ) & variable.trinket_1_buffs & ! variable.trinket_1_manual || ( variable.trinket_1_buff_duration + 1 >= fight_remains )",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.cds_active ) & ( variable.trinket_priority = 2 || variable.trinket_1_exclude || ! trinket.t1.has_cooldown || ( trinket.t1.cooldown.remains || variable.trinket_priority = 1 & cooldown.summon_darkglare.remains > 20 & ! pet.darkglare.active & trinket.t1.cooldown.remains < cooldown.summon_darkglare.remains ) ) & variable.trinket_2_buffs & ! variable.trinket_2_manual || ( variable.trinket_2_buff_duration + 1 >= fight_remains )",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = false,
|
|
["criteria"] = "variable.cds_active || boss & fight_remains < 15 || ( ( trinket.t1.cooldown.duration < cooldown.summon_darkglare.remains_expected + 5 ) & active_enemies = 1 ) || ( active_enemies > 1 & havoc_active )",
|
|
["name"] = "time_thiefs_gambit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || talent.summon_darkglare.enabled & cooldown.summon_darkglare.remains_expected > 20 || ! talent.summon_darkglare.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) || talent.summon_darkglare.enabled & cooldown.summon_darkglare.remains_expected > 20 || ! talent.summon_darkglare.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! equipped.neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "( prev_gcd.1.soul_rot || boss & fight_remains <= 15 ) & ! variable.trinket_1_buffs & ! variable.trinket_2_buffs",
|
|
["name"] = "neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "( prev_gcd.1.soul_rot || boss & fight_remains <= 15 || cooldown.soul_rot.remains >= 45 ) & trinket.t2.cooldown.remains & variable.trinket_2_buffs",
|
|
["name"] = "neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "( prev_gcd.1.soul_rot || boss & fight_remains <= 15 || cooldown.soul_rot.remains >= 45 ) & trinket.t1.cooldown.remains & variable.trinket_1_buffs",
|
|
["name"] = "neural_synapse_enhancer",
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "min",
|
|
["action"] = "variable",
|
|
["value"] = "dot.agony.remains",
|
|
["var_name"] = "min_agony",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "min",
|
|
["action"] = "variable",
|
|
["value"] = "dot.vile_taint.remains",
|
|
["var_name"] = "min_vt",
|
|
["default"] = "10",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "min",
|
|
["action"] = "variable",
|
|
["value"] = "dot.phantom_singularity.remains",
|
|
["var_name"] = "min_ps",
|
|
["default"] = "16",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( variable.min_vt * talent.vile_taint.enabled ) <? ( 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,
|
|
["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",
|
|
["action"] = "agony",
|
|
["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,
|
|
["criteria"] = "remains < 5 & ! talent.seed_of_corruption.enabled",
|
|
["action"] = "corruption",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remains < 5 & ! talent.seed_of_corruption.enabled",
|
|
["action"] = "wither",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.ps_up & variable.vt_up & variable.sr_up",
|
|
["action"] = "summon_darkglare",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.summon_darkglare.remains > 15 || soul_shard > 3 || ( talent.demonic_soul.enabled & soul_shard > 2 ) ) & buff.tormented_crescendo.up",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard > 4 || ( talent.tormented_crescendo.enabled & buff.tormented_crescendo.stack = 1 & soul_shard > 3 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.demonic_soul.enabled & ( soul_shard > 2 || ( talent.tormented_crescendo.enabled & buff.tormented_crescendo.stack = 1 & soul_shard ) )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tormented_crescendo.enabled & buff.tormented_crescendo.up",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tormented_crescendo.enabled & buff.tormented_crescendo.stack = 2",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.cd_dots_up || variable.vt_ps_up ) & ( soul_shard > 2 || cooldown.oblivion.remains > 10 || ! talent.oblivion.enabled )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tormented_crescendo.enabled & talent.nightfall.enabled & buff.tormented_crescendo.up & buff.nightfall.up",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["interrupt_if"] = "cooldown.vile_taint.ready",
|
|
["criteria"] = "talent.drain_soul.enabled & buff.nightfall.up & talent.shadow_embrace.enabled & ( debuff.shadow_embrace.stack < 4 || debuff.shadow_embrace.remains < 3 )",
|
|
["action"] = "drain_soul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "drain_soul",
|
|
["interrupt_if"] = "cooldown.vile_taint.ready",
|
|
["criteria"] = "talent.drain_soul.enabled & ( talent.shadow_embrace.enabled & ( debuff.shadow_embrace.stack < 4 || debuff.shadow_embrace.remains < 3 ) ) || ! talent.shadow_embrace.enabled",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.nightfall.up & talent.shadow_embrace.enabled & ( debuff.shadow_embrace.stack < 2 || debuff.shadow_embrace.remains < 3 )",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "spell_lock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "variables",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "ogcd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "This entry is manually translated and will differ from SIMC, but maintains the same functionality.",
|
|
["criteria"] = "active_enemies = 2 || active_enemies > 2 & variable.cleave_apl",
|
|
["list_name"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies > 2",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "end_of_fight",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.vile_taint.enabled || remains < cooldown.vile_taint.remains + action.vile_taint.cast_time ) & ( talent.absolute_corruption.enabled & remains < 3 || ! talent.absolute_corruption.enabled & remains < 5 || cooldown.soul_rot.remains < 5 & remains < 8 ) & fight_remains > dot.agony.remains + 5",
|
|
["action"] = "agony",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.demonic_soul.enabled & buff.nightfall.stack < 2 - prev_gcd.1.drain_soul & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains )",
|
|
["action"] = "haunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_dot.unstable_affliction = 0 || ticking ) & ( talent.absolute_corruption.enabled & remains < 3 || ! talent.absolute_corruption.enabled & remains < 5 || cooldown.soul_rot.remains < 5 & remains < 8 ) & ( ! talent.demonic_soul.enabled || buff.nightfall.stack < 2 || prev_gcd.1.haunt & buff.nightfall.stack < 2 ) & fight_remains > dot.unstable_affliction.remains + 5",
|
|
["action"] = "unstable_affliction",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.absolute_corruption.enabled & debuff.haunt.remains < 3 || ! talent.absolute_corruption.enabled & debuff.haunt.remains < 5 || cooldown.soul_rot.remains < 5 & debuff.haunt.remains < 8 ) & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains ) & fight_remains > debuff.haunt.remains + 5",
|
|
["action"] = "haunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.wither.enabled & ! ( action.seed_of_corruption.in_flight || active_dot.seed_of_corruption > 0 ) & ( talent.absolute_corruption.enabled & remains < 3 || ! talent.absolute_corruption.enabled & remains < 5 ) & fight_remains > dot.wither.remains + 5",
|
|
["action"] = "wither",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ( action.seed_of_corruption.in_flight || active_dot.seed_of_corruption > 0 ) & refreshable & fight_remains > dot.corruption.remains + 5",
|
|
["action"] = "corruption",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.nightfall.up & ( buff.nightfall.stack > 1 || buff.nightfall.remains < execute_time * 2 ) & ! buff.tormented_crescendo.up & cooldown.soul_rot.remains & soul_shard < 5 - buff.tormented_crescendo.up & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains )",
|
|
["action"] = "drain_soul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.nightfall.up & ( buff.nightfall.stack > 1 || buff.nightfall.remains < execute_time * 2 ) & buff.tormented_crescendo.stack < 2 & cooldown.soul_rot.remains & soul_shard < 5 - buff.tormented_crescendo.up & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains )",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "talent.wither.enabled",
|
|
["list_name"] = "se_maintenance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.soul_rot.enabled || cooldown.soul_rot.remains > 20 || cooldown.soul_rot.remains <= execute_time + gcd.max || boss & fight_remains < cooldown.soul_rot.remains ) & dot.agony.remains & ( dot.corruption.remains || dot.wither.remains ) & dot.unstable_affliction.remains",
|
|
["action"] = "vile_taint",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.soul_rot.enabled || cooldown.soul_rot.remains < 4 || boss & fight_remains < cooldown.soul_rot.remains ) & dot.agony.remains & ( dot.corruption.remains || dot.wither.remains ) & dot.unstable_affliction.remains",
|
|
["action"] = "phantom_singularity",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.vt_ps_up",
|
|
["action"] = "malevolence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.vt_ps_up",
|
|
["action"] = "soul_rot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_dots_up & ( debuff.shadow_embrace.stack = debuff.shadow_embrace.max_stack )",
|
|
["action"] = "summon_darkglare",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "talent.demonic_soul.enabled",
|
|
["list_name"] = "se_maintenance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard > 4 & ( talent.demonic_soul.enabled & buff.nightfall.stack < 2 || ! talent.demonic_soul.enabled ) || buff.tormented_crescendo.stack > 1",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.demonic_soul.enabled & buff.nightfall.up & buff.tormented_crescendo.stack < 2 & target.health.pct < 20",
|
|
["action"] = "drain_soul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.demonic_soul.enabled & ( soul_shard > 1 || buff.tormented_crescendo.up & cooldown.soul_rot.remains > buff.tormented_crescendo.remains * gcd.max ) & ( ! talent.vile_taint.enabled || soul_shard > 1 & cooldown.vile_taint.remains > 10 ) & ( ! talent.oblivion.enabled || cooldown.oblivion.remains > 10 || soul_shard > 2 & cooldown.oblivion.remains < 10 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.agony.remains & ( dot.corruption.remains || dot.wither.remains ) & dot.unstable_affliction.remains & debuff.haunt.remains > 5",
|
|
["action"] = "oblivion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tormented_crescendo.enabled & buff.tormented_crescendo.up & ( buff.tormented_crescendo.remains < gcd.max * 2 || buff.tormented_crescendo.stack = 2 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.cd_dots_up || ( talent.demonic_soul.enabled || talent.phantom_singularity.enabled ) & variable.vt_ps_up || talent.wither.enabled & variable.vt_ps_up & ! dot.soul_rot.remains & soul_shard > 2 ) & ( ! talent.oblivion.enabled || cooldown.oblivion.remains > 10 || soul_shard > 2 & cooldown.oblivion.remains < 10 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tormented_crescendo.enabled & talent.nightfall.enabled & buff.tormented_crescendo.up & buff.nightfall.up || talent.demonic_soul.enabled & ! buff.nightfall.up & ( ! talent.vile_taint.enabled || cooldown.vile_taint.remains > 10 || soul_shard > 1 & cooldown.vile_taint.remains < 10 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.demonic_soul.enabled & buff.tormented_crescendo.up",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.nightfall.up",
|
|
["action"] = "drain_soul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.nightfall.up",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable",
|
|
["action"] = "agony",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_dot.unstable_affliction = 0 || ticking ) & refreshable",
|
|
["action"] = "unstable_affliction",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "drain_soul",
|
|
["interrupt_if"] = "tick_time>0.5",
|
|
["early_chain_if"] = "buff.nightfall.up",
|
|
["chain"] = "1",
|
|
},
|
|
{
|
|
["action"] = "shadow_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cleave_se_maintenance"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "drain_soul",
|
|
["cycle_targets"] = 1,
|
|
["interrupt_if"] = "debuff.shadow_embrace.stack>3",
|
|
["criteria"] = "talent.shadow_embrace.enabled & talent.drain_soul.enabled & ( talent.wither.enabled || talent.demonic_soul.enabled & buff.nightfall.up ) & ( debuff.shadow_embrace.stack < debuff.shadow_embrace.max_stack || debuff.shadow_embrace.remains < 3 ) & fight_remains > 15",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadow_embrace.enabled & ! talent.drain_soul.enabled & ( ( debuff.shadow_embrace.stack + action.shadow_bolt.in_flight_to_target_count ) < debuff.shadow_embrace.max_stack || debuff.shadow_embrace.remains < 3 & ! action.shadow_bolt.in_flight_to_target ) & fight_remains > 15",
|
|
["action"] = "shadow_bolt",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["opener_cleave_se"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["interrupt_if"] = "debuff.shadow_embrace.stack=debuff.shadow_embrace.max_stack",
|
|
["action"] = "drain_soul",
|
|
["criteria"] = "talent.shadow_embrace.enabled & talent.drain_soul.enabled & buff.nightfall.up & ( debuff.shadow_embrace.stack < debuff.shadow_embrace.max_stack || debuff.shadow_embrace.remains < 3 ) & ( target.time_to_die > 15 || time < 20 )",
|
|
},
|
|
},
|
|
["end_of_fight"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.demonic_soul.enabled & ( boss & fight_remains < 5 & buff.nightfall.up || prev_gcd.1.haunt & buff.nightfall.stack = 2 & ! buff.tormented_crescendo.up )",
|
|
["action"] = "drain_soul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard > 1 & boss & fight_remains < ( soul_shard + buff.tormented_crescendo.up ) * gcd.max + execute_time",
|
|
["action"] = "oblivion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 4 & ( ! talent.demonic_soul.enabled || talent.demonic_soul.enabled & buff.nightfall.stack < 1 )",
|
|
["action"] = "malefic_rapture",
|
|
},
|
|
},
|
|
["variables"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! talent.phantom_singularity.enabled || dot.phantom_singularity.up",
|
|
["var_name"] = "ps_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! talent.vile_taint.enabled || dot.vile_taint_dot.up",
|
|
["var_name"] = "vt_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( ! talent.vile_taint.enabled & ! talent.phantom_singularity.enabled ) || dot.vile_taint_dot.up || dot.phantom_singularity.up",
|
|
["var_name"] = "vt_ps_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! talent.soul_rot.enabled || dot.soul_rot.up",
|
|
["var_name"] = "sr_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.ps_up & variable.vt_up & variable.sr_up",
|
|
["var_name"] = "cd_dots_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.phantom_singularity.enabled || talent.vile_taint.enabled || talent.soul_rot.enabled || talent.summon_darkglare.enabled",
|
|
["var_name"] = "has_cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! variable.has_cds || ( variable.cd_dots_up & ( ! talent.summon_darkglare.enabled || cooldown.summon_darkglare.remains > 20 || pet.darkglare.remains ) )",
|
|
["var_name"] = "cds_active",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "min_vt",
|
|
["criteria"] = "variable.min_vt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "min_ps",
|
|
["criteria"] = "variable.min_ps",
|
|
},
|
|
},
|
|
["ogcd"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cds_active || fight_remains < 32 || prev_gcd.1.soul_rot & time < 20",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cds_active || fight_remains < 14 || prev_gcd.1.soul_rot & time < 20",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cds_active || fight_remains < 17 || prev_gcd.1.soul_rot & time < 20",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cds_active || fight_remains < 10 || prev_gcd.1.soul_rot & time < 20",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cds_active || fight_remains < 17 || prev_gcd.1.soul_rot & time < 20",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["Quillstrum - Deathwing"] = {
|
|
["runOnce"] = {
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["removeOldThrottles_20241115"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_71"] = true,
|
|
["resetAllPotions_20201209"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["resetGlobalCooldownSync_20210403"] = true,
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_73"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_72"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["forceEnableEnhancedRecheckBoomkin_20210712"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
},
|
|
["specs"] = {
|
|
[73] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["spell_block_amount"] = 25,
|
|
["rallying_cry_health"] = 50,
|
|
["spell_reflection_filter"] = true,
|
|
["stack_shield_block"] = false,
|
|
["stance_weaving"] = false,
|
|
["last_stand_amount"] = 50,
|
|
["rallying_cry_condition"] = false,
|
|
["free_revenge"] = true,
|
|
["shield_wall_amount"] = 50,
|
|
["rallying_cry_amount"] = 50,
|
|
["spell_block_health"] = 75,
|
|
["shockwave_interrupt"] = true,
|
|
["shield_wall_health"] = 50,
|
|
["heroic_charge"] = false,
|
|
["reserve_rage"] = 35,
|
|
["last_stand_offensively"] = false,
|
|
["last_stand_condition"] = false,
|
|
["shield_wall_condition"] = false,
|
|
["last_stand_health"] = 50,
|
|
["victory_rush_health"] = 75,
|
|
["overlap_ignore_pain"] = false,
|
|
},
|
|
},
|
|
[71] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["shockwave_interrupt"] = true,
|
|
["spell_reflection_filter"] = true,
|
|
["heroic_charge"] = false,
|
|
},
|
|
},
|
|
[72] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["check_ww_range"] = false,
|
|
["charge_min_range"] = 10,
|
|
["t30_bloodthirst_crit"] = 95,
|
|
["shockwave_interrupt"] = true,
|
|
["spell_reflection_filter"] = true,
|
|
["heroic_charge"] = false,
|
|
},
|
|
},
|
|
[102] = {
|
|
["enhancedRecheck"] = true,
|
|
},
|
|
},
|
|
["displays"] = {
|
|
["AOE"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = 118.3330764770508,
|
|
["y"] = -397.4996643066406,
|
|
},
|
|
["Primary"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = -49.99994277954102,
|
|
["y"] = -397.4990844726563,
|
|
},
|
|
["Defensives"] = {
|
|
["rel"] = "CENTER",
|
|
["y"] = -224.9999847412109,
|
|
},
|
|
["Interrupts"] = {
|
|
["rel"] = "CENTER",
|
|
["y"] = -224.9999847412109,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Arms"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250308,
|
|
["author"] = "SimulationCraft",
|
|
["desc"] = "2025-03-08: TWW Season 2 update\n\n2025-02-26: Sync with SimC",
|
|
["lists"] = {
|
|
["slayer_st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= 5 || debuff.colossus_smash.up",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up || buff.avatar.up",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.juggernaut.remains <= gcd.max * 2 & talent.juggernaut.enabled || buff.sudden_death.stack = 2 || buff.sudden_death.remains <= gcd.max * 3 || debuff.marked_for_execution.stack = 3",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.opportunist.up",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.colossus_smash.remains >= gcd.max * 4 || cooldown.warbreaker.remains >= gcd.max * 4 ) || debuff.colossus_smash.remains >= gcd.max * 4",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 8",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "cleave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["colossus_st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > 15",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "demolish",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max * 5",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["colossus_aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.deep_wounds.remains",
|
|
["action"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.rend.remains",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sweeping_strikes",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ravager",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "cleave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unhinged.enabled || talent.merciless_bonegrinder.enabled",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains < 5",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.colossal_might.stack = 10 & ( debuff.colossus_smash.remains >= 2 || cooldown.colossus_smash.remains >= 7 )",
|
|
["action"] = "demolish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.dreadnaught.enabled",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bladestorm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "whirlwind",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["slayer_aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.rend.remains",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "cleave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_death.up & buff.imminent_demise.stack < 3 || buff.juggernaut.remains < 3 & talent.juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "bladestorm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up & ( buff.opportunist.up || talent.dreadnaught.enabled & ! talent.juggernaut.enabled )",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up & debuff.executioners_precision.stack < 2 & talent.executioners_precision.enabled || debuff.marked_for_execution.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.opportunist.up || talent.dreadnaught.enabled",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "whirlwind",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["colossus_execute"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 2",
|
|
["action"] = "sweeping_strikes",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max & ! talent.bloodletting.enabled",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.juggernaut.remains <= gcd.max & talent.juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage < 40",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "demolish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.executioners_precision.stack = 2 & ! dot.ravager.remains || ! talent.executioners_precision.enabled || talent.battlelord.enabled & debuff.executioners_precision.stack > 0",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage < 90",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 40 & talent.executioners_precision.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bladestorm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["slayer_execute"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 2",
|
|
["action"] = "sweeping_strikes",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max & ! talent.bloodletting.enabled",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= 5 || debuff.colossus_smash.up",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up || buff.avatar.up",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.juggernaut.remains <= gcd.max * 2 & talent.juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( debuff.executioners_precision.stack = 2 & ( debuff.colossus_smash.remains > 4 || cooldown.colossus_smash.remains > 15 ) ) || ! talent.executioners_precision.enabled",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage <= 40",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.martial_prowess.stack < 2 & buff.opportunist.up & talent.opportunist.enabled & ( talent.bladestorm.enabled || talent.ravager.enabled & rage < 85 )",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains < 2 || debuff.executioners_precision.stack = 2 & ! dot.ravager.remains",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage <= 40 & buff.martial_prowess.stack < 2 & talent.fierce_followthrough.enabled",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time <= 0.5 || movement.distance > 8",
|
|
["action"] = "charge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "gcd.remains = 0 & debuff.colossus_smash.remains > 8 || boss & fight_remains < 25",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.debuff.casting.react",
|
|
["action"] = "pummel",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "variables",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.mortal_strike.remains > 1.5 & rage < 50",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.down & cooldown.mortal_strike.remains",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.down & cooldown.mortal_strike.remains",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > 180 & buff.avatar.up || boss & target.time_to_die < 180 & variable.execute_phase & buff.avatar.up || boss & fight_remains < 20",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demolish.enabled & active_enemies > 2",
|
|
["list_name"] = "colossus_aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["cycle_targets"] = 1,
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demolish.enabled & variable.execute_phase",
|
|
["list_name"] = "colossus_execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demolish.enabled & active_enemies = 2 & ! variable.execute_phase",
|
|
["list_name"] = "colossus_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demolish.enabled",
|
|
["list_name"] = "colossus_st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.demolish.enabled & active_enemies > 2",
|
|
["list_name"] = "slayer_aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["cycle_targets"] = 1,
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.demolish.enabled & variable.execute_phase",
|
|
["list_name"] = "slayer_execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.demolish.enabled & active_enemies = 2 & ! variable.execute_phase",
|
|
["list_name"] = "slayer_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.demolish.enabled",
|
|
["list_name"] = "slayer_st",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "battle_shout",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["toggle"] = "on",
|
|
["action"] = "battle_stance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_1_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Evaluates a trinkets cooldown, divided by avatar. If it's value has no remainder return 1, else return 0.5.",
|
|
["criteria"] = "trinket.t1.has_use_buff & ( trinket.t1.cooldown.duration % cooldown.avatar.duration = 0 )",
|
|
["var_name"] = "trinket_1_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["criteria"] = "trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration % cooldown.avatar.duration = 0 )",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_stat.any_dps & ! variable.trinket_1_exclude )",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_stat.any_dps & ! variable.trinket_2_exclude )",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / trinket.t2.buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_1_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_2_manual",
|
|
},
|
|
},
|
|
["variables"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies = 1",
|
|
["description"] = "Variables",
|
|
["var_name"] = "st_planning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies > 1",
|
|
["var_name"] = "adds_remain",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( talent.massacre.enabled & target.health.pct < 35 ) || target.health.pct < 20",
|
|
["var_name"] = "execute_phase",
|
|
},
|
|
},
|
|
["slayer_sweep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.rend.remains & ! buff.sweeping_strikes.up",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sweeping_strikes",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.juggernaut.remains <= gcd.max * 2 || debuff.marked_for_execution.stack = 3 || buff.sudden_death.stack = 2 || buff.sudden_death.remains <= gcd.max * 3",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.colossus_smash.remains >= gcd.max * 4 || cooldown.warbreaker.remains >= gcd.max * 4 ) || debuff.colossus_smash.remains >= gcd.max * 4",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.opportunist.up",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 8 & buff.sweeping_strikes.down",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 5",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fervor_of_battle.enabled & ! buff.martial_prowess.up",
|
|
["action"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fervor_of_battle.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["description"] = "Trinkets",
|
|
["criteria"] = "( variable.adds_remain || variable.st_planning ) & cooldown.avatar.remains < 3",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! buff.avatar.up & trinket.t1.cast_time > 0 || ! trinket.t1.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || trinket.t1.buff_duration >= fight_remains & boss",
|
|
["description"] = "Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! buff.avatar.up & trinket.t2.cast_time > 0 || ! trinket.t2.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || trinket.t2.buff_duration >= fight_remains & boss",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )",
|
|
["description"] = "If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.trinket_2_buffs & ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) & ! variable.trinket_2_manual & ( ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) || ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["criteria"] = "! equipped.fyralath_the_dreamrender & ! equipped.bestinslots & ( ! variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( ! variable.trinket_2_buffs || trinket.t2.cooldown.remains )",
|
|
["slot"] = "main_hand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "bestinslots",
|
|
["criteria"] = "cooldown.avatar.remains > 20 || ( buff.avatar.up & ( ! trinket.t1.has_cooldown & ! trinket.t2.has_cooldown ) )",
|
|
["name"] = "bestinslots",
|
|
},
|
|
},
|
|
["colossus_sweep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.rend.remains & ! buff.sweeping_strikes.up",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max & buff.sweeping_strikes.up",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sweeping_strikes",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.ready",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "demolish",
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fervor_of_battle.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fervor_of_battle.enabled",
|
|
["action"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 8 & buff.sweeping_strikes.down",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 5",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250308,
|
|
["warnings"] = "The import for 'slayer_st' required some automated changes.\nLine 8: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 15: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\n\nThe import for 'colossus_aoe' required some automated changes.\nLine 11: Converted 'talent.unhinged' to 'talent.unhinged.enabled' (1x).\nLine 11: Converted 'talent.merciless_bonegrinder' to 'talent.merciless_bonegrinder.enabled' (1x).\nLine 14: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\n\nThe import for 'slayer_aoe' required some automated changes.\nLine 9: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 11: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\nLine 11: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 13: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\nLine 15: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\n\nThe import for 'colossus_execute' required some automated changes.\nLine 2: Converted 'talent.bloodletting' to 'talent.bloodletting.enabled' (1x).\nLine 9: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 12: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\nLine 12: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 14: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\n\nThe import for 'slayer_execute' required some automated changes.\nLine 2: Converted 'talent.bloodletting' to 'talent.bloodletting.enabled' (1x).\nLine 9: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 10: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\nLine 12: Converted 'talent.opportunist' to 'talent.opportunist.enabled' (1x).\nLine 12: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 12: Converted 'talent.ravager' to 'talent.ravager.enabled' (1x).\nLine 14: Converted 'talent.fierce_followthrough' to 'talent.fierce_followthrough.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 13: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 14: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 15: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 16: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 17: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 18: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 19: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 20: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 3: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 4: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted operations in 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%%cooldown.avatar.duration=0)' to 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%cooldown.avatar.duration=0)'.\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted operations in 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%%cooldown.avatar.duration=0)' to 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%cooldown.avatar.duration=0)'.\nLine 7: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 7: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 8: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 8: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 9: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 9: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 9: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 9: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 9: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 9: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 9: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 9: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 9: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 10: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 11: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\n\nThe import for 'slayer_sweep' required some automated changes.\nLine 17: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 18: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 19: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 2: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 3: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 7: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\n\nThe import for 'colossus_sweep' required some automated changes.\nLine 14: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 15: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\n\nImported 12 action lists.\n",
|
|
["profile"] = "actions.precombat+=/battle_shout\nactions.precombat+=/battle_stance,toggle=on\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.treacherous_transmitter\n# Evaluates a trinkets cooldown, divided by avatar. If it's value has no remainder return 1, else return 0.5.\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=trinket.1.has_use_buff&(trinket.1.cooldown.duration%%cooldown.avatar.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=trinket.2.has_use_buff&(trinket.2.cooldown.duration%%cooldown.avatar.duration=0)\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_stat.any_dps&!variable.trinket_1_exclude)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_stat.any_dps&!variable.trinket_2_exclude)\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync))\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.algethar_puzzle_box\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.algethar_puzzle_box\n\nactions+=/charge,if=time<=0.5||movement.distance>8\nactions+=/potion,if=gcd.remains=0&debuff.colossus_smash.remains>8||boss&fight_remains<25\nactions+=/pummel,if=target.debuff.casting.react\nactions+=/call_action_list,name=variables\nactions+=/call_action_list,name=trinkets\nactions+=/arcane_torrent,if=cooldown.mortal_strike.remains>1.5&rage<50\nactions+=/lights_judgment,if=debuff.colossus_smash.down&cooldown.mortal_strike.remains\nactions+=/bag_of_tricks,if=debuff.colossus_smash.down&cooldown.mortal_strike.remains\nactions+=/berserking,if=fight_remains>180&buff.avatar.up||boss&target.time_to_die<180&variable.execute_phase&buff.avatar.up||boss&fight_remains<20\nactions+=/blood_fury,if=debuff.colossus_smash.up\nactions+=/fireblood,if=debuff.colossus_smash.up\nactions+=/ancestral_call,if=debuff.colossus_smash.up\n## actions+=/invoke_external_buff,name=power_infusion,if=debuff.colossus_smash.up&fight_remains>=135||variable.execute_phase&buff.avatar.up||fight_remains<=25\nactions+=/run_action_list,name=colossus_aoe,strict=1,if=talent.demolish&active_enemies>2\nactions+=/run_action_list,name=colossus_execute,cycle_targets=1,strict=1,if=talent.demolish&variable.execute_phase\nactions+=/run_action_list,name=colossus_sweep,strict=1,if=talent.demolish&active_enemies=2&!variable.execute_phase\nactions+=/run_action_list,name=colossus_st,strict=1,if=talent.demolish\nactions+=/run_action_list,name=slayer_aoe,strict=1,if=!talent.demolish&active_enemies>2\nactions+=/run_action_list,name=slayer_execute,cycle_targets=1,strict=1,if=!talent.demolish&variable.execute_phase\nactions+=/run_action_list,name=slayer_sweep,strict=1,if=!talent.demolish&active_enemies=2&!variable.execute_phase\nactions+=/run_action_list,name=slayer_st,strict=1,if=!talent.demolish\n\nactions.colossus_aoe+=/cleave,if=!dot.deep_wounds.remains\nactions.colossus_aoe+=/thunder_clap,if=!dot.rend.remains\nactions.colossus_aoe+=/thunderous_roar\nactions.colossus_aoe+=/avatar\nactions.colossus_aoe+=/sweeping_strikes\nactions.colossus_aoe+=/ravager\nactions.colossus_aoe+=/warbreaker\nactions.colossus_aoe+=/champions_spear\nactions.colossus_aoe+=/colossus_smash\nactions.colossus_aoe+=/cleave\nactions.colossus_aoe+=/bladestorm,if=talent.unhinged||talent.merciless_bonegrinder\nactions.colossus_aoe+=/thunder_clap,if=dot.rend.remains<5\nactions.colossus_aoe+=/demolish,if=buff.colossal_might.stack=10&(debuff.colossus_smash.remains>=2||cooldown.colossus_smash.remains>=7)\nactions.colossus_aoe+=/overpower,if=talent.dreadnaught\nactions.colossus_aoe+=/mortal_strike\nactions.colossus_aoe+=/overpower\nactions.colossus_aoe+=/thunder_clap\nactions.colossus_aoe+=/skullsplitter\nactions.colossus_aoe+=/execute\nactions.colossus_aoe+=/bladestorm\nactions.colossus_aoe+=/whirlwind\n\nactions.colossus_execute+=/sweeping_strikes,if=active_enemies=2\nactions.colossus_execute+=/rend,if=dot.rend.remains<=gcd&!talent.bloodletting\nactions.colossus_execute+=/thunderous_roar\nactions.colossus_execute+=/champions_spear\nactions.colossus_execute+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.colossus_execute+=/avatar\nactions.colossus_execute+=/colossus_smash\nactions.colossus_execute+=/warbreaker\nactions.colossus_execute+=/execute,if=buff.juggernaut.remains<=gcd&talent.juggernaut\nactions.colossus_execute+=/skullsplitter,if=rage<40\nactions.colossus_execute+=/demolish,if=debuff.colossus_smash.up\nactions.colossus_execute+=/mortal_strike,if=debuff.executioners_precision.stack=2&!dot.ravager.remains||!talent.executioners_precision||talent.battlelord&debuff.executioners_precision.stack>0\nactions.colossus_execute+=/overpower,if=rage<90\nactions.colossus_execute+=/execute,if=rage>=40&talent.executioners_precision\nactions.colossus_execute+=/overpower\nactions.colossus_execute+=/bladestorm\nactions.colossus_execute+=/execute\n\nactions.colossus_st+=/rend,if=dot.rend.remains<=gcd\nactions.colossus_st+=/thunderous_roar\nactions.colossus_st+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.colossus_st+=/champions_spear\nactions.colossus_st+=/avatar,if=raid_event.adds.in>15\nactions.colossus_st+=/colossus_smash\nactions.colossus_st+=/warbreaker\nactions.colossus_st+=/mortal_strike\nactions.colossus_st+=/demolish\nactions.colossus_st+=/skullsplitter\nactions.colossus_st+=/execute\nactions.colossus_st+=/overpower\nactions.colossus_st+=/rend,if=dot.rend.remains<=gcd*5\nactions.colossus_st+=/slam\n\nactions.colossus_sweep+=/thunder_clap,if=!dot.rend.remains&!buff.sweeping_strikes.up\nactions.colossus_sweep+=/rend,if=dot.rend.remains<=gcd&buff.sweeping_strikes.up\nactions.colossus_sweep+=/thunderous_roar\nactions.colossus_sweep+=/sweeping_strikes\nactions.colossus_sweep+=/champions_spear\nactions.colossus_sweep+=/ravager,if=cooldown.colossus_smash.ready\nactions.colossus_sweep+=/avatar\nactions.colossus_sweep+=/colossus_smash\nactions.colossus_sweep+=/warbreaker\nactions.colossus_sweep+=/mortal_strike\nactions.colossus_sweep+=/demolish,if=debuff.colossus_smash.up\nactions.colossus_sweep+=/overpower\nactions.colossus_sweep+=/execute\nactions.colossus_sweep+=/whirlwind,if=talent.fervor_of_battle\nactions.colossus_sweep+=/cleave,if=talent.fervor_of_battle\nactions.colossus_sweep+=/thunder_clap,if=dot.rend.remains<=8&buff.sweeping_strikes.down\nactions.colossus_sweep+=/rend,if=dot.rend.remains<=5\nactions.colossus_sweep+=/slam\n\nactions.slayer_aoe+=/thunder_clap,if=!dot.rend.remains\nactions.slayer_aoe+=/thunderous_roar\nactions.slayer_aoe+=/avatar\nactions.slayer_aoe+=/champions_spear\nactions.slayer_aoe+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.slayer_aoe+=/warbreaker\nactions.slayer_aoe+=/colossus_smash\nactions.slayer_aoe+=/cleave\nactions.slayer_aoe+=/execute,if=buff.sudden_death.up&buff.imminent_demise.stack<3||buff.juggernaut.remains<3&talent.juggernaut\nactions.slayer_aoe+=/bladestorm\nactions.slayer_aoe+=/overpower,if=buff.sweeping_strikes.up&(buff.opportunist.up||talent.dreadnaught&!talent.juggernaut)\nactions.slayer_aoe+=/mortal_strike,if=buff.sweeping_strikes.up\nactions.slayer_aoe+=/execute,if=buff.sweeping_strikes.up&debuff.executioners_precision.stack<2&talent.executioners_precision||debuff.marked_for_execution.up\nactions.slayer_aoe+=/skullsplitter,if=buff.sweeping_strikes.up\nactions.slayer_aoe+=/overpower,if=buff.opportunist.up||talent.dreadnaught\nactions.slayer_aoe+=/mortal_strike\nactions.slayer_aoe+=/overpower\nactions.slayer_aoe+=/thunder_clap\nactions.slayer_aoe+=/execute\nactions.slayer_aoe+=/whirlwind\nactions.slayer_aoe+=/skullsplitter\nactions.slayer_aoe+=/slam\nactions.slayer_aoe+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_execute+=/sweeping_strikes,if=active_enemies=2\nactions.slayer_execute+=/rend,if=dot.rend.remains<=gcd&!talent.bloodletting\nactions.slayer_execute+=/thunderous_roar\nactions.slayer_execute+=/avatar,if=cooldown.colossus_smash.remains<=5||debuff.colossus_smash.up\nactions.slayer_execute+=/champions_spear,if=debuff.colossus_smash.up||buff.avatar.up\nactions.slayer_execute+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.slayer_execute+=/warbreaker\nactions.slayer_execute+=/colossus_smash\nactions.slayer_execute+=/execute,if=buff.juggernaut.remains<=gcd*2&talent.juggernaut\nactions.slayer_execute+=/bladestorm,if=(debuff.executioners_precision.stack=2&(debuff.colossus_smash.remains>4||cooldown.colossus_smash.remains>15))||!talent.executioners_precision\nactions.slayer_execute+=/skullsplitter,if=rage<=40\nactions.slayer_execute+=/overpower,if=buff.martial_prowess.stack<2&buff.opportunist.up&talent.opportunist&(talent.bladestorm||talent.ravager&rage<85)\nactions.slayer_execute+=/mortal_strike,if=dot.rend.remains<2||debuff.executioners_precision.stack=2&!dot.ravager.remains\nactions.slayer_execute+=/overpower,if=rage<=40&buff.martial_prowess.stack<2&talent.fierce_followthrough\nactions.slayer_execute+=/execute\nactions.slayer_execute+=/overpower\nactions.slayer_execute+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_st+=/rend,if=dot.rend.remains<=gcd\nactions.slayer_st+=/thunderous_roar\nactions.slayer_st+=/avatar,if=cooldown.colossus_smash.remains<=5||debuff.colossus_smash.up\nactions.slayer_st+=/champions_spear,if=debuff.colossus_smash.up||buff.avatar.up\nactions.slayer_st+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.slayer_st+=/colossus_smash\nactions.slayer_st+=/warbreaker\nactions.slayer_st+=/execute,if=buff.juggernaut.remains<=gcd*2&talent.juggernaut||buff.sudden_death.stack=2||buff.sudden_death.remains<=gcd*3||debuff.marked_for_execution.stack=3\nactions.slayer_st+=/overpower,if=buff.opportunist.up\nactions.slayer_st+=/mortal_strike\nactions.slayer_st+=/bladestorm,if=(cooldown.colossus_smash.remains>=gcd*4||cooldown.warbreaker.remains>=gcd*4)||debuff.colossus_smash.remains>=gcd*4\nactions.slayer_st+=/skullsplitter\nactions.slayer_st+=/overpower\nactions.slayer_st+=/rend,if=dot.rend.remains<=8\nactions.slayer_st+=/execute,if=!talent.juggernaut\nactions.slayer_st+=/cleave\nactions.slayer_st+=/slam\nactions.slayer_st+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_sweep+=/thunder_clap,if=!dot.rend.remains&!buff.sweeping_strikes.up\nactions.slayer_sweep+=/thunderous_roar\nactions.slayer_sweep+=/sweeping_strikes\nactions.slayer_sweep+=/rend,if=dot.rend.remains<=gcd\nactions.slayer_sweep+=/champions_spear\nactions.slayer_sweep+=/avatar\nactions.slayer_sweep+=/colossus_smash\nactions.slayer_sweep+=/warbreaker\nactions.slayer_sweep+=/skullsplitter,if=buff.sweeping_strikes.up\nactions.slayer_sweep+=/execute,if=buff.juggernaut.remains<=gcd*2||debuff.marked_for_execution.stack=3||buff.sudden_death.stack=2||buff.sudden_death.remains<=gcd*3\nactions.slayer_sweep+=/bladestorm,if=(cooldown.colossus_smash.remains>=gcd*4||cooldown.warbreaker.remains>=gcd*4)||debuff.colossus_smash.remains>=gcd*4\nactions.slayer_sweep+=/overpower,if=buff.opportunist.up\nactions.slayer_sweep+=/mortal_strike\nactions.slayer_sweep+=/overpower\nactions.slayer_sweep+=/thunder_clap,if=dot.rend.remains<=8&buff.sweeping_strikes.down\nactions.slayer_sweep+=/rend,if=dot.rend.remains<=5\nactions.slayer_sweep+=/cleave,if=talent.fervor_of_battle&!buff.martial_prowess.up\nactions.slayer_sweep+=/whirlwind,if=talent.fervor_of_battle\nactions.slayer_sweep+=/execute,if=!talent.juggernaut\nactions.slayer_sweep+=/slam\nactions.slayer_sweep+=/storm_bolt,if=buff.bladestorm.up\n\n# Trinkets\n## actions.trinkets+=/do_treacherous_transmitter_task\nactions.trinkets+=/use_item,name=treacherous_transmitter,if=(variable.adds_remain||variable.st_planning)&cooldown.avatar.remains<3\n# Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.\nactions.trinkets+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&!variable.trinket_1_manual&(!buff.avatar.up&trinket.1.cast_time>0||!trinket.1.cast_time>0)&buff.avatar.up&(variable.trinket_2_exclude||!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains&boss\nactions.trinkets+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&(!buff.avatar.up&trinket.2.cast_time>0||!trinket.2.cast_time>0)&buff.avatar.up&(variable.trinket_1_exclude||!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains&boss\n# If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.\nactions.trinkets+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)&!variable.trinket_1_manual&(!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs)||(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions.trinkets+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)&!variable.trinket_2_manual&(!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs)||(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions.trinkets+=/use_item,slot=main_hand,if=!equipped.fyralath_the_dreamrender&!equipped.bestinslots&(!variable.trinket_1_buffs||trinket.1.cooldown.remains)&(!variable.trinket_2_buffs||trinket.2.cooldown.remains)\nactions.trinkets+=/use_item,name=bestinslots,if=cooldown.avatar.remains>20||(buff.avatar.up&(!trinket.1.has_cooldown&!trinket.2.has_cooldown))\n\n# Variables\nactions.variables+=/variable,name=st_planning,value=active_enemies=1\nactions.variables+=/variable,name=adds_remain,value=active_enemies>1\nactions.variables+=/variable,name=execute_phase,value=(talent.massacre.enabled&target.health.pct<35)||target.health.pct<20",
|
|
["spec"] = 71,
|
|
},
|
|
["Protection Warrior"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20240926,
|
|
["spec"] = 73,
|
|
["desc"] = "2024-09-26: Spell Block added\n\n2024-09-24: Mitigations and Impeding Victory Fixed\n\n2024-08-15, 09-09: SimC priority updates\n\n2024-07-24: The War Within",
|
|
["profile"] = "actions.precombat+=/battle_stance,toggle=on\nactions.precombat+=/battle_shout\n\nactions+=/pummel\nactions+=/charge,if=time=0||movement.distance>8\nactions+=/use_items\nactions+=/avatar,if=buff.thunder_blast.down||buff.thunder_blast.stack<=2\nactions+=/spell_block,use_off_gcd=1,if=tanking&incoming_magic_damage_5s>spell_block_damage_taken&health.pct<=spell_block_health_pct&!(buff.spell_reflection_defense.up)\nactions+=/shield_wall,use_off_gcd=1,if=tanking&incoming_damage_5s>shield_wall_damage_taken&health.pct<=shield_wall_health_pct&!(buff.shield_wall.up||buff.last_stand.up||buff.rallying_cry.up||buff.potion.up)\nactions+=/blood_fury\nactions+=/berserking\nactions+=/arcane_torrent\nactions+=/lights_judgment\nactions+=/fireblood\nactions+=/ancestral_call\nactions+=/bag_of_tricks\nactions+=/potion,if=buff.avatar.up||buff.avatar.up&target.health.pct<=20\nactions+=/ignore_pain,if=target.health.pct>=20&(rage.deficit<=15&cooldown.shield_slam.ready||rage.deficit<=40&cooldown.shield_charge.ready&talent.champions_bulwark.enabled||rage.deficit<=20&cooldown.shield_charge.ready||rage.deficit<=30&cooldown.demoralizing_shout.ready&talent.booming_voice.enabled||rage.deficit<=20&cooldown.avatar.ready||rage.deficit<=45&cooldown.demoralizing_shout.ready&talent.booming_voice.enabled&buff.last_stand.up&talent.unnerving_focus.enabled||rage.deficit<=30&cooldown.avatar.ready&buff.last_stand.up&talent.unnerving_focus.enabled||rage.deficit<=20||rage.deficit<=40&cooldown.shield_slam.ready&buff.violent_outburst.up&talent.heavy_repercussions.enabled&talent.impenetrable_wall.enabled||rage.deficit<=55&cooldown.shield_slam.ready&buff.violent_outburst.up&buff.last_stand.up&talent.unnerving_focus.enabled&talent.heavy_repercussions.enabled&talent.impenetrable_wall.enabled||rage.deficit<=17&cooldown.shield_slam.ready&talent.heavy_repercussions.enabled||rage.deficit<=18&cooldown.shield_slam.ready&talent.impenetrable_wall.enabled)||(rage>=70||buff.seeing_red.stack=7&rage>=35)&cooldown.shield_slam.remains<=1&buff.shield_block.remains>=4&set_bonus.tier31_2pc,use_off_gcd=1\nactions+=/last_stand,use_off_gcd=1,if=tanking&incoming_damage_5s>last_stand_damage_taken&health.pct<=last_stand_health_pct&!(buff.shield_wall.up||buff.last_stand.up||buff.rallying_cry.up||buff.potion.up)\nactions+=/rallying_cry,if=tanking&incoming_damage_5s>rallying_cry_damage_taken&health.pct<=rallying_cry_health_pct&!(buff.shield_wall.up||buff.last_stand.up||buff.rallying_cry.up||buff.potion.up)\nactions+=/victory_rush,if=health.pct<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",
|
|
},
|
|
["Fury"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250308,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-03-08: Sync with SimC\n\n2025-02-28: Additional SimC changes\n\n2025-02-26: Sync with SimC",
|
|
["profile"] = "actions.precombat+=/battle_shout\nactions.precombat+=/berserker_stance,toggle=on\nactions.precombat+=/variable,name=treacherous_transmitter_precombat_cast,value=2\nactions.precombat+=/use_item,name=treacherous_transmitter\nactions.precombat+=/recklessness,if=!equipped.fyralath_the_dreamrender\nactions.precombat+=/avatar\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.treacherous_transmitter\n# Evaluates a trinkets cooldown, divided by avatar or odyns fur. If it's value has no remainder return 1, else return 0.5.\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=trinket.1.has_use_buff&(trinket.1.cooldown.duration%%cooldown.avatar.duration=0||trinket.1.cooldown.duration%%cooldown.odyns_fury.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=trinket.2.has_use_buff&(trinket.2.cooldown.duration%%cooldown.avatar.duration=0||trinket.2.cooldown.duration%%cooldown.odyns_fury.duration=0)\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_stat.any_dps&!variable.trinket_1_exclude)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_stat.any_dps&!variable.trinket_2_exclude)\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync))\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.algethar_puzzle_box\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.algethar_puzzle_box\nactions.precombat+=/variable,name=execute_phase,value=(talent.massacre.enabled&target.health.pct<35)||target.health.pct<20\nactions.precombat+=/variable,name=on_gcd_racials,value=buff.recklessness.down&buff.avatar.down&rage<80&buff.sudden_death.down&!cooldown.bladestorm.ready&(!cooldown.execute.ready||!variable.execute_phase)\n\nactions+=/pummel,if=target.debuff.casting.react\nactions+=/charge,if=time<=0.5||movement.distance>5\nactions+=/heroic_leap,if=movement.distance>25\nactions+=/potion,if=boss&(fight_remains>300||boss&fight_remains<35&buff.recklessness.up||boss&fight_remains<25)\nactions+=/use_item,name=treacherous_transmitter\n\n## Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.\nactions+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&!variable.trinket_1_manual&(!buff.avatar.up&trinket.1.cast_time>0||!trinket.1.cast_time>0)&buff.avatar.up&(variable.trinket_2_exclude||!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains\nactions+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&(!buff.avatar.up&trinket.2.cast_time>0||!trinket.2.cast_time>0)&buff.avatar.up&(variable.trinket_1_exclude||!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains\n## If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.\nactions+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)&!variable.trinket_1_manual&(!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs)||(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)&!variable.trinket_2_manual&(!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs)||(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions+=/use_item,slot=main_hand,if=!equipped.fyralath_the_dreamrender&!equipped.bestinslots&(!variable.trinket_1_buffs||trinket.1.cooldown.remains)&(!variable.trinket_2_buffs||trinket.2.cooldown.remains)\nactions+=/use_item,name=bestinslots,if=target.time_to_die>120&(cooldown.avatar.remains>20&(trinket.1.cooldown.remains||trinket.2.cooldown.remains)||cooldown.avatar.remains>20&(!trinket.1.has_cooldown||!trinket.2.has_cooldown))||target.time_to_die<=120&target.health.pct<35&cooldown.avatar.remains>85||boss&target.time_to_die<15\nactions+=/lights_judgment,if=buff.recklessness.down&buff.avatar.down&rage<80&buff.sudden_death.down&!cooldown.bladestorm.ready&(!cooldown.execute.ready||!variable.execute_phase)\nactions+=/bag_of_tricks,if=buff.recklessness.down&buff.avatar.down&rage<80&buff.sudden_death.down&!cooldown.bladestorm.ready&(!cooldown.execute.ready||!variable.execute_phase)\nactions+=/berserking,if=buff.recklessness.up\nactions+=/blood_fury\nactions+=/fireblood\nactions+=/ancestral_call\n## actions+=/invoke_external_buff,name=power_infusion,if=buff.avatar.remains>15&fight_remains>=135||variable.execute_phase&buff.avatar.up||fight_remains<=25\nactions+=/run_action_list,name=slayer,strict=1,if=!talent.lightning_strikes\nactions+=/run_action_list,name=thane,strict=1,if=talent.lightning_strikes\n\nactions.slayer+=/recklessness\nactions.slayer+=/avatar,if=cooldown.recklessness.remains\nactions.slayer+=/execute,if=buff.ashen_juggernaut.up&buff.ashen_juggernaut.remains<=gcd\nactions.slayer+=/champions_spear,if=buff.enrage.up&(cooldown.bladestorm.remains>=2||cooldown.bladestorm.remains>=16&debuff.marked_for_execution.stack=3)\nactions.slayer+=/bladestorm,if=buff.enrage.up&(talent.reckless_abandon&cooldown.avatar.remains>=24||talent.anger_management&cooldown.recklessness.remains>=24)\nactions.slayer+=/odyns_fury,if=(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.slayer+=/whirlwind,if=active_enemies>=2&talent.meat_cleaver&buff.meat_cleaver.down\nactions.slayer+=/execute,if=buff.sudden_death.stack=2&buff.sudden_death.remains<7\nactions.slayer+=/execute,if=buff.sudden_death.up&buff.sudden_death.remains<2\nactions.slayer+=/execute,if=buff.sudden_death.up&buff.imminent_demise.stack<3&cooldown.bladestorm.remains<25\nactions.slayer+=/execute,if=debuff.marked_for_execution.up&buff.brutal_finish.up&debuff.overwhelmed.stack<10\nactions.slayer+=/onslaught,if=talent.tenderize&buff.brutal_finish.up\nactions.slayer+=/rampage,if=!buff.enrage.up||buff.slaughtering_strikes.stack>=4\nactions.slayer+=/crushing_blow,if=action.raging_blow.charges=2||buff.brutal_finish.up&(!debuff.champions_might.up||debuff.champions_might.up&debuff.champions_might.remains>gcd)\nactions.slayer+=/thunderous_roar,if=buff.enrage.up&!buff.brutal_finish.up\nactions.slayer+=/execute,if=buff.ashen_juggernaut.up&buff.ashen_juggernaut.remains<3\nactions.slayer+=/execute,if=debuff.marked_for_execution.stack=3\nactions.slayer+=/bloodbath,if=buff.bloodcraze.stack>=1||(talent.uproar&dot.bloodbath_dot.remains<40&talent.bloodborne)||buff.enrage.up&buff.enrage.remains<gcd\nactions.slayer+=/raging_blow,if=buff.brutal_finish.up&buff.slaughtering_strikes.stack<5&(!debuff.champions_might.up||debuff.champions_might.up&debuff.champions_might.remains>gcd)\nactions.slayer+=/rampage,if=action.raging_blow.charges<=1&rage>=100&talent.anger_management&buff.recklessness.down\nactions.slayer+=/bloodthirst,if=target.health.pct<35&talent.vicious_contempt&buff.brutal_finish.up&buff.enrage.up&buff.bloodcraze.stack>=2||active_enemies>=5\nactions.slayer+=/rampage,if=rage>=130\nactions.slayer+=/rampage,if=rage>=115&talent.reckless_abandon&buff.recklessness.up&buff.slaughtering_strikes.stack>=3\nactions.slayer+=/bloodbath,if=(buff.bloodcraze.stack>=4||crit_pct_current>=85)\nactions.slayer+=/crushing_blow\nactions.slayer+=/bloodbath,if=target.health.pct<35&talent.vicious_contempt\nactions.slayer+=/bloodbath\nactions.slayer+=/raging_blow,if=buff.opportunist.up\nactions.slayer+=/bloodthirst,if=target.health.pct<35&talent.vicious_contempt&buff.bloodcraze.stack>=2\nactions.slayer+=/rampage,if=rage>=100&talent.anger_management&buff.recklessness.up\nactions.slayer+=/bloodthirst,if=buff.bloodcraze.stack>=4||crit_pct_current>=85\nactions.slayer+=/raging_blow\nactions.slayer+=/bloodthirst\nactions.slayer+=/execute,if=target.health.pct<35&talent.massacre||target.health.pct<20\nactions.slayer+=/rampage,if=talent.unbridled_ferocity\nactions.slayer+=/rampage\nactions.slayer+=/execute\nactions.slayer+=/onslaught,if=talent.tenderize\nactions.slayer+=/whirlwind,if=talent.improved_whirlwind\nactions.slayer+=/storm_bolt,if=buff.bladestorm.up\n\nactions.thane+=/recklessness\nactions.thane+=/avatar\nactions.thane+=/ravager\nactions.thane+=/thunder_blast,if=buff.enrage.up&talent.meat_cleaver\nactions.thane+=/thunder_clap,if=buff.meat_cleaver.down&talent.meat_cleaver&active_enemies>=2\nactions.thane+=/thunderous_roar,if=buff.enrage.up\nactions.thane+=/champions_spear,if=buff.enrage.up\nactions.thane+=/odyns_fury,if=(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.thane+=/rampage,if=buff.enrage.down\nactions.thane+=/execute,if=talent.ashen_juggernaut&buff.ashen_juggernaut.remains<=gcd&buff.enrage.up\nactions.thane+=/rampage,if=talent.bladestorm&cooldown.bladestorm.remains<=gcd&!debuff.champions_might.up\nactions.thane+=/bladestorm,if=buff.enrage.up&talent.unhinged\nactions.thane+=/bloodbath,if=buff.bloodcraze.stack>=2\nactions.thane+=/rampage,if=rage>=115&talent.reckless_abandon&buff.recklessness.up&buff.slaughtering_strikes.stack>=3\nactions.thane+=/crushing_blow\nactions.thane+=/bloodbath\nactions.thane+=/onslaught,if=talent.tenderize\nactions.thane+=/rampage\nactions.thane+=/bloodthirst,if=talent.vicious_contempt&target.health.pct<35&buff.bloodcraze.stack>=2||!dot.ravager.remains&buff.bloodcraze.stack>=3||active_enemies>=6\nactions.thane+=/raging_blow\nactions.thane+=/execute,if=talent.ashen_juggernaut\nactions.thane+=/thunder_blast\nactions.thane+=/bloodthirst\nactions.thane+=/execute\nactions.thane+=/thunder_clap",
|
|
["version"] = 20250308,
|
|
["warnings"] = "The import for 'thane' required some automated changes.\nLine 4: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\nLine 5: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\nLine 8: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 10: Converted 'talent.ashen_juggernaut' to 'talent.ashen_juggernaut.enabled' (1x).\nLine 11: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 12: Converted 'talent.unhinged' to 'talent.unhinged.enabled' (1x).\nLine 14: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 17: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 19: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 21: Converted 'talent.ashen_juggernaut' to 'talent.ashen_juggernaut.enabled' (1x).\n\nThe import for 'slayer' required some automated changes.\nLine 5: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 5: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 6: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 7: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\nLine 12: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 18: Converted 'talent.uproar' to 'talent.uproar.enabled' (1x).\nLine 18: Converted 'talent.bloodborne' to 'talent.bloodborne.enabled' (1x).\nLine 20: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 21: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 23: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 26: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 29: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 30: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 34: Converted 'talent.massacre' to 'talent.massacre.enabled' (1x).\nLine 35: Converted 'talent.unbridled_ferocity' to 'talent.unbridled_ferocity.enabled' (1x).\nLine 38: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 39: Converted 'talent.improved_whirlwind' to 'talent.improved_whirlwind.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 6: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 6: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 6: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 7: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 7: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 7: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 7: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 8: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 8: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 8: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 8: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 9: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 9: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 9: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 9: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 10: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 10: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 11: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 11: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 18: Converted 'talent.lightning_strikes' to 'talent.lightning_strikes.enabled' (1x).\nLine 19: Converted 'talent.lightning_strikes' to 'talent.lightning_strikes.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 7: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 8: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 9: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 9: Converted operations in 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%%cooldown.avatar.duration=0||trinket.t1.cooldown.duration%%cooldown.odyns_fury.duration=0)' to 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%cooldown.avatar.duration=0||trinket.t1.cooldown.duration%cooldown.odyns_fury.duration=0)'.\nLine 10: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 10: Converted operations in 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%%cooldown.avatar.duration=0||trinket.t2.cooldown.duration%%cooldown.odyns_fury.duration=0)' to 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%cooldown.avatar.duration=0||trinket.t2.cooldown.duration%cooldown.odyns_fury.duration=0)'.\nLine 11: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 11: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 12: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 12: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 13: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 13: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 13: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 13: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 13: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 13: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 13: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 13: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 13: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 13: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 14: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 15: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\n\nImported 4 action lists.\n",
|
|
["spec"] = 72,
|
|
["lists"] = {
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "battle_shout",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["toggle"] = "on",
|
|
["action"] = "berserker_stance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["var_name"] = "treacherous_transmitter_precombat_cast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! equipped.fyralath_the_dreamrender",
|
|
["action"] = "recklessness",
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_1_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Evaluates a trinkets cooldown, divided by avatar or odyns fur. If it's value has no remainder return 1, else return 0.5.",
|
|
["criteria"] = "trinket.t1.has_use_buff & ( trinket.t1.cooldown.duration % cooldown.avatar.duration = 0 || trinket.t1.cooldown.duration % cooldown.odyns_fury.duration = 0 )",
|
|
["var_name"] = "trinket_1_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["criteria"] = "trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration % cooldown.avatar.duration = 0 || trinket.t2.cooldown.duration % cooldown.odyns_fury.duration = 0 )",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_stat.any_dps & ! variable.trinket_1_exclude )",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_stat.any_dps & ! variable.trinket_2_exclude )",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / trinket.t2.buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_1_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_2_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( talent.massacre.enabled & target.health.pct < 35 ) || target.health.pct < 20",
|
|
["var_name"] = "execute_phase",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.recklessness.down & buff.avatar.down & rage < 80 & buff.sudden_death.down & ! cooldown.bladestorm.ready & ( ! cooldown.execute.ready || ! variable.execute_phase )",
|
|
["var_name"] = "on_gcd_racials",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.debuff.casting.react",
|
|
["action"] = "pummel",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time <= 0.5 || movement.distance > 5",
|
|
["action"] = "charge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "movement.distance > 25",
|
|
["action"] = "heroic_leap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & ( fight_remains > 300 || boss & fight_remains < 35 & buff.recklessness.up || boss & fight_remains < 25 )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! buff.avatar.up & trinket.t1.cast_time > 0 || ! trinket.t1.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || trinket.t1.buff_duration >= fight_remains",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! buff.avatar.up & trinket.t2.cast_time > 0 || ! trinket.t2.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || trinket.t2.buff_duration >= fight_remains",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.trinket_2_buffs & ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) & ! variable.trinket_2_manual & ( ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) || ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["criteria"] = "! equipped.fyralath_the_dreamrender & ! equipped.bestinslots & ( ! variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( ! variable.trinket_2_buffs || trinket.t2.cooldown.remains )",
|
|
["slot"] = "main_hand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "bestinslots",
|
|
["criteria"] = "target.time_to_die > 120 & ( cooldown.avatar.remains > 20 & ( trinket.t1.cooldown.remains || trinket.t2.cooldown.remains ) || cooldown.avatar.remains > 20 & ( ! trinket.t1.has_cooldown || ! trinket.t2.has_cooldown ) ) || target.time_to_die <= 120 & target.health.pct < 35 & cooldown.avatar.remains > 85 || boss & target.time_to_die < 15",
|
|
["name"] = "bestinslots",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.recklessness.down & buff.avatar.down & rage < 80 & buff.sudden_death.down & ! cooldown.bladestorm.ready & ( ! cooldown.execute.ready || ! variable.execute_phase )",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.recklessness.down & buff.avatar.down & rage < 80 & buff.sudden_death.down & ! cooldown.bladestorm.ready & ( ! cooldown.execute.ready || ! variable.execute_phase )",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.recklessness.up",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["action"] = "blood_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.lightning_strikes.enabled",
|
|
["list_name"] = "slayer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.lightning_strikes.enabled",
|
|
["list_name"] = "thane",
|
|
},
|
|
},
|
|
["slayer"] = {
|
|
{
|
|
["action"] = "recklessness",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.recklessness.remains",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ashen_juggernaut.up & buff.ashen_juggernaut.remains <= gcd.max",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & ( cooldown.bladestorm.remains >= 2 || cooldown.bladestorm.remains >= 16 & debuff.marked_for_execution.stack = 3 )",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & ( talent.reckless_abandon.enabled & cooldown.avatar.remains >= 24 || talent.anger_management.enabled & cooldown.recklessness.remains >= 24 )",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.enrage.up || talent.titanic_rage.enabled ) & cooldown.avatar.remains",
|
|
["action"] = "odyns_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 2 & talent.meat_cleaver.enabled & buff.meat_cleaver.down",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_death.stack = 2 & buff.sudden_death.remains < 7",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_death.up & buff.sudden_death.remains < 2",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_death.up & buff.imminent_demise.stack < 3 & cooldown.bladestorm.remains < 25",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.marked_for_execution.up & buff.brutal_finish.up & debuff.overwhelmed.stack < 10",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled & buff.brutal_finish.up",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.enrage.up || buff.slaughtering_strikes.stack >= 4",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "action.raging_blow.charges = 2 || buff.brutal_finish.up & ( ! debuff.champions_might.up || debuff.champions_might.up & debuff.champions_might.remains > gcd.max )",
|
|
["action"] = "crushing_blow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & ! buff.brutal_finish.up",
|
|
["action"] = "thunderous_roar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ashen_juggernaut.up & buff.ashen_juggernaut.remains < 3",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.marked_for_execution.stack = 3",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bloodcraze.stack >= 1 || ( talent.uproar.enabled & dot.bloodbath_dot.remains < 40 & talent.bloodborne.enabled ) || buff.enrage.up & buff.enrage.remains < gcd.max",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.brutal_finish.up & buff.slaughtering_strikes.stack < 5 & ( ! debuff.champions_might.up || debuff.champions_might.up & debuff.champions_might.remains > gcd.max )",
|
|
["action"] = "raging_blow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "action.raging_blow.charges <= 1 & rage >= 100 & talent.anger_management.enabled & buff.recklessness.down",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 35 & talent.vicious_contempt.enabled & buff.brutal_finish.up & buff.enrage.up & buff.bloodcraze.stack >= 2 || active_enemies >= 5",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 130",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 115 & talent.reckless_abandon.enabled & buff.recklessness.up & buff.slaughtering_strikes.stack >= 3",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.bloodcraze.stack >= 4 || crit_pct_current >= 85 )",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["action"] = "crushing_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 35 & talent.vicious_contempt.enabled",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["action"] = "bloodbath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.opportunist.up",
|
|
["action"] = "raging_blow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 35 & talent.vicious_contempt.enabled & buff.bloodcraze.stack >= 2",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 100 & talent.anger_management.enabled & buff.recklessness.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bloodcraze.stack >= 4 || crit_pct_current >= 85",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["action"] = "raging_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodthirst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 35 & talent.massacre.enabled || target.health.pct < 20",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unbridled_ferocity.enabled",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["action"] = "rampage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.improved_whirlwind.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["thane"] = {
|
|
{
|
|
["action"] = "recklessness",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ravager",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & talent.meat_cleaver.enabled",
|
|
["action"] = "thunder_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.meat_cleaver.down & talent.meat_cleaver.enabled & active_enemies >= 2",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "thunderous_roar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.enrage.up || talent.titanic_rage.enabled ) & cooldown.avatar.remains",
|
|
["action"] = "odyns_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.down",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ashen_juggernaut.enabled & buff.ashen_juggernaut.remains <= gcd.max & buff.enrage.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.bladestorm.enabled & cooldown.bladestorm.remains <= gcd.max & ! debuff.champions_might.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & talent.unhinged.enabled",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bloodcraze.stack >= 2",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 115 & talent.reckless_abandon.enabled & buff.recklessness.up & buff.slaughtering_strikes.stack >= 3",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["action"] = "crushing_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodbath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["action"] = "rampage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.vicious_contempt.enabled & target.health.pct < 35 & buff.bloodcraze.stack >= 2 || ! dot.ravager.remains & buff.bloodcraze.stack >= 3 || active_enemies >= 6",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["action"] = "raging_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ashen_juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "thunder_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodthirst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["Quillmog - Deathwing"] = {
|
|
["runOnce"] = {
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
},
|
|
["specs"] = {
|
|
[255] = {
|
|
["maxRefresh"] = 10,
|
|
["custom2Name"] = "Custom 2",
|
|
["throttleRefresh"] = false,
|
|
["settings"] = {
|
|
["use_harpoon"] = true,
|
|
["ca_vop_overlap"] = false,
|
|
},
|
|
["aoe"] = 2,
|
|
["gcdSync"] = true,
|
|
["damageDots"] = false,
|
|
["damage"] = true,
|
|
["enabled"] = true,
|
|
["debuffPadding"] = 0,
|
|
["maxTime"] = 33,
|
|
["custom1Name"] = "Custom 1",
|
|
["package"] = "Survival",
|
|
["throttleTime"] = false,
|
|
["cycle"] = false,
|
|
["cycle_min"] = 6,
|
|
["nameplateRange"] = 8,
|
|
["potion"] = "unbridled_fury",
|
|
["potionsReset"] = 20180919.1,
|
|
["nameplates"] = true,
|
|
["damageExpiration"] = 8,
|
|
["buffPadding"] = 0,
|
|
["damageRange"] = 0,
|
|
},
|
|
[254] = {
|
|
["maxRefresh"] = 10,
|
|
["custom2Name"] = "Custom 2",
|
|
["throttleRefresh"] = false,
|
|
["settings"] = {
|
|
["trueshot_vop_overlap"] = false,
|
|
},
|
|
["aoe"] = 3,
|
|
["gcdSync"] = true,
|
|
["damageDots"] = false,
|
|
["damage"] = true,
|
|
["enabled"] = true,
|
|
["debuffPadding"] = 0,
|
|
["maxTime"] = 33,
|
|
["custom1Name"] = "Custom 1",
|
|
["package"] = "Marksmanship",
|
|
["throttleTime"] = false,
|
|
["cycle"] = false,
|
|
["cycle_min"] = 6,
|
|
["nameplateRange"] = 8,
|
|
["potion"] = "unbridled_fury",
|
|
["potionsReset"] = 20180919.1,
|
|
["nameplates"] = false,
|
|
["damageExpiration"] = 6,
|
|
["buffPadding"] = 0,
|
|
["damageRange"] = 0,
|
|
},
|
|
[253] = {
|
|
["maxRefresh"] = 10,
|
|
["custom2Name"] = "Custom 2",
|
|
["throttleRefresh"] = false,
|
|
["settings"] = {
|
|
["aspect_vop_overlap"] = false,
|
|
["barbed_shot_grace_period"] = 0.5,
|
|
},
|
|
["aoe"] = 3,
|
|
["gcdSync"] = true,
|
|
["damageDots"] = false,
|
|
["buffPadding"] = 0,
|
|
["enabled"] = true,
|
|
["debuffPadding"] = 0,
|
|
["maxTime"] = 33,
|
|
["custom1Name"] = "Custom 1",
|
|
["package"] = "Beast Mastery",
|
|
["throttleTime"] = false,
|
|
["cycle"] = false,
|
|
["cycle_min"] = 6,
|
|
["nameplateRange"] = 8,
|
|
["potion"] = "unbridled_fury",
|
|
["potionsReset"] = 20180919.1,
|
|
["nameplates"] = false,
|
|
["damageExpiration"] = 3,
|
|
["damage"] = true,
|
|
["damageRange"] = 0,
|
|
},
|
|
},
|
|
["displays"] = {
|
|
["Interrupts"] = {
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Marksmanship"] = {
|
|
["source"] = "# https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20200401,
|
|
["author"] = "SimC",
|
|
["desc"] = "# Marksmanship Hunter\n# https://github.com/simulationcraft/simc/\n# March 30, 2020\n\n# Changes:\n# - Add utility priority to APL.\n# - Use time_to_die rather than target.time_to_die to anticipate end of combat.",
|
|
["lists"] = {
|
|
["trickshots"] = {
|
|
{
|
|
["action"] = "barrage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trick_shots.up & ca_execute & buff.double_tap.up",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trick_shots.up & ( azerite.focused_fire.enabled || azerite.in_the_rhythm.rank > 1 || azerite.surging_shots.enabled || talent.streamline.enabled )",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trick_shots.up & ( buff.precise_shots.down || cooldown.aimed_shot.full_recharge_time < action.aimed_shot.cast_time || buff.trueshot.up )",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trick_shots.up",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trick_shots.down || buff.precise_shots.up & ! buff.trueshot.up || focus > 70",
|
|
["action"] = "multishot",
|
|
},
|
|
{
|
|
["action"] = "focused_azerite_beam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "purifying_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "concentrated_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blood_of_the_enemy",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up || buff.reckless_force_counter.stack < 10",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["action"] = "piercing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! action.serpent_sting.in_flight",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["action"] = "steady_shot",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.casting.up || buff.dispellable_magic.up || buff.dispellable_enrage.up",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "utility",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.trueshot.remains_guess < 15 || time_to_die < 30",
|
|
["name"] = "lurkers_insidious_gift",
|
|
["action"] = "lurkers_insidious_gift",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( time_to_die > action_cooldown + 34 || target.health.pct < 20 || target.time_to_pct_20 < 15 ) & cooldown.trueshot.remains_guess < 15 || time_to_die < 35",
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.trueshot.remains_guess < 5 || time_to_die < 20",
|
|
["name"] = "lustrous_golden_plumage",
|
|
["action"] = "lustrous_golden_plumage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot || ! talent.calling_the_shots.enabled || time_to_die < 10",
|
|
["name"] = "galecallers_boon",
|
|
["action"] = "galecallers_boon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot & ( buff.guardian_of_azeroth.up || ! essence.condensed_lifeforce.major & ca_execute ) || debuff.razor_coral_debuff.down || time_to_die < 20",
|
|
["name"] = "ashvanes_razor_coral",
|
|
["action"] = "ashvanes_razor_coral",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.trueshot.up & ! essence.blood_of_the_enemy.major || debuff.blood_of_the_enemy.up || time_to_die < 5",
|
|
["name"] = "pocketsized_computation_device",
|
|
["action"] = "pocketsized_computation_device",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot || ! talent.calling_the_shots.enabled || time_to_die < 20",
|
|
["action"] = "use_items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trickshots",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "hunters_mark",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["precast_time"] = "10",
|
|
["action"] = "double_tap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["action"] = "worldvein_resonance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "guardian_of_azeroth",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "memory_of_lucid_dreams",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["precast_time"] = "1.5",
|
|
["action"] = "trueshot",
|
|
["criteria"] = "active_enemies > 2",
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.hunters_mark.down & ! buff.trueshot.up",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.rapid_fire.remains < gcd || cooldown.rapid_fire.remains < cooldown.aimed_shot.remains || time_to_die < 20",
|
|
["action"] = "double_tap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot & ( target.time_to_die > cooldown.berserking.duration + duration || ( target.health.pct < 20 || ! talent.careful_aim.enabled ) ) || time_to_die < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot & ( target.time_to_die > cooldown.blood_fury.duration + duration || ( target.health.pct < 20 || ! talent.careful_aim.enabled ) ) || time_to_die < 16",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot & ( target.time_to_die > cooldown.ancestral_call.duration + duration || ( target.health.pct < 20 || ! talent.careful_aim.enabled ) ) || time_to_die < 16",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot & ( target.time_to_die > cooldown.fireblood.duration + duration || ( target.health.pct < 20 || ! talent.careful_aim.enabled ) ) || time_to_die < 9",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down & ( target.health.pct > 80 || target.health.pct <= 20 || target.time_to_pct_20 > 30 )",
|
|
["action"] = "reaping_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.azsharas_font_of_power.remains > 20 || ! equipped.azsharas_font_of_power || time_to_die < cooldown.azsharas_font_of_power.duration + 34 & target.health.pct > 20 ) & ( cooldown.trueshot.remains_guess < 3 || ( essence.vision_of_perfection.minor & time_to_die > action_cooldown + buff.worldvein_resonance.duration ) ) || time_to_die < 20",
|
|
["action"] = "worldvein_resonance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ca_execute || target.time_to_die > action_cooldown + 30 ) & ( buff.trueshot.up || cooldown.trueshot.remains < 16 ) || time_to_die < 31",
|
|
["action"] = "guardian_of_azeroth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.trueshot.remains < 7",
|
|
["action"] = "ripple_in_space",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.trueshot.up",
|
|
["action"] = "memory_of_lucid_dreams",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.react & buff.bloodlust.react || prev_gcd.1.trueshot & target.health.pct < 20 || ( ( consumable.potion_of_unbridled_fury || consumable.unbridled_fury ) & target.time_to_die < 61 || time_to_die < 26 )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down & cooldown.rapid_fire.remains || time_to_die < 15",
|
|
["action"] = "trueshot",
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "barrage",
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! action.serpent_sting.in_flight",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down || focus < 35 || focus < 60 & ! talent.lethal_shots.enabled || buff.in_the_rhythm.remains < execute_time",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up & ( buff.unerring_vision.stack > 4 || ! azerite.unerring_vision.enabled ) || time_to_die < 11",
|
|
["action"] = "blood_of_the_enemy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.trueshot.up || time_to_die < 5",
|
|
["action"] = "focused_azerite_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up & buff.master_marksman.up & ! buff.memory_of_lucid_dreams.up",
|
|
["action"] = "arcane_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || ( buff.double_tap.down || ca_execute ) & buff.precise_shots.down || full_recharge_time < cast_time & cooldown.trueshot.remains",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up & buff.master_marksman.up & buff.memory_of_lucid_dreams.up",
|
|
["action"] = "arcane_shot",
|
|
},
|
|
{
|
|
["action"] = "piercing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.trueshot.up || time_to_die < 8",
|
|
["action"] = "purifying_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + focus.regen * gcd < focus.max & buff.trueshot.down & ( ! dot.concentrated_flame_burn.remains & ! action.concentrated_flame.in_flight ) || full_recharge_time < gcd || target.time_to_die < 5",
|
|
["action"] = "concentrated_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up || buff.reckless_force_counter.stack < 10 || time_to_die < 5",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down & ( buff.precise_shots.up & ( focus > 55 || buff.master_marksman.up ) || focus > 75 || time_to_die < 5 )",
|
|
["action"] = "arcane_shot",
|
|
},
|
|
{
|
|
["action"] = "steady_shot",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["utility"] = {
|
|
{
|
|
["action"] = "counter_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "serenity_dust",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spore_cloud",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soothing_water",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sonic_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "nether_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "chijis_tranquility",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spirit_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "natures_grace",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20200401,
|
|
["warnings"] = "Imported 6 action lists.\n",
|
|
["spec"] = 254,
|
|
["profile"] = "# Marksmanship Hunter\n# https://github.com/simulationcraft/simc/\n# March 30, 2020\n\n# Changes:\n# - Add utility priority to APL.\n# - Use time_to_die rather than target.time_to_die to anticipate end of combat.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/augmentation\n# actions.precombat+=/food\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/hunters_mark\n# Precast this as early as possible to potentially gain another cast during the fight.\nactions.precombat+=/double_tap,precast_time=10\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/worldvein_resonance\nactions.precombat+=/guardian_of_azeroth\nactions.precombat+=/memory_of_lucid_dreams\nactions.precombat+=/trueshot,precast_time=1.5,if=active_enemies>2\nactions.precombat+=/potion\nactions.precombat+=/aimed_shot,if=active_enemies<3\n\nactions.utility=counter_shot\nactions.utility+=/serenity_dust\nactions.utility+=/spore_cloud\nactions.utility+=/soothing_water\nactions.utility+=/sonic_blast\nactions.utility+=/nether_shock\nactions.utility+=/chijis_tranquility\nactions.utility+=/spirit_shock\nactions.utility+=/natures_grace\n\n# Executed every time the actor is available.\nactions=call_action_list,name=utility,if=debuff.casting.up||buff.dispellable_magic.up||buff.dispellable_enrage.up\nactions+=/use_item,name=lurkers_insidious_gift,if=cooldown.trueshot.remains_guess<15||time_to_die<30\nactions+=/use_item,name=azsharas_font_of_power,if=(time_to_die>cooldown+34||target.health.pct<20||target.time_to_pct_20<15)&cooldown.trueshot.remains_guess<15||time_to_die<35\nactions+=/use_item,name=lustrous_golden_plumage,if=cooldown.trueshot.remains_guess<5||time_to_die<20\nactions+=/use_item,name=galecallers_boon,if=prev_gcd.1.trueshot||!talent.calling_the_shots.enabled||time_to_die<10\nactions+=/use_item,name=ashvanes_razor_coral,if=prev_gcd.1.trueshot&(buff.guardian_of_azeroth.up||!essence.condensed_lifeforce.major&ca_execute)||debuff.razor_coral_debuff.down||time_to_die<20\nactions+=/use_item,name=pocketsized_computation_device,if=!buff.trueshot.up&!essence.blood_of_the_enemy.major||debuff.blood_of_the_enemy.up||time_to_die<5\n# Try to line up activated trinkets with Trueshot\nactions+=/use_items,if=prev_gcd.1.trueshot||!talent.calling_the_shots.enabled||time_to_die<20\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=st,if=active_enemies<3\nactions+=/call_action_list,name=trickshots,if=active_enemies>2\n\nactions.cds=hunters_mark,if=debuff.hunters_mark.down&!buff.trueshot.up\nactions.cds+=/double_tap,if=cooldown.rapid_fire.remains<gcd||cooldown.rapid_fire.remains<cooldown.aimed_shot.remains||time_to_die<20\nactions.cds+=/berserking,if=prev_gcd.1.trueshot&(target.time_to_die>cooldown.berserking.duration+duration||(target.health.pct<20||!talent.careful_aim.enabled))||time_to_die<13\nactions.cds+=/blood_fury,if=prev_gcd.1.trueshot&(target.time_to_die>cooldown.blood_fury.duration+duration||(target.health.pct<20||!talent.careful_aim.enabled))||time_to_die<16\nactions.cds+=/ancestral_call,if=prev_gcd.1.trueshot&(target.time_to_die>cooldown.ancestral_call.duration+duration||(target.health.pct<20||!talent.careful_aim.enabled))||time_to_die<16\nactions.cds+=/fireblood,if=prev_gcd.1.trueshot&(target.time_to_die>cooldown.fireblood.duration+duration||(target.health.pct<20||!talent.careful_aim.enabled))||time_to_die<9\nactions.cds+=/lights_judgment,if=buff.trueshot.down\nactions.cds+=/bag_of_tricks,if=buff.trueshot.down\nactions.cds+=/reaping_flames,if=buff.trueshot.down&(target.health.pct>80||target.health.pct<=20||target.time_to_pct_20>30)\nactions.cds+=/worldvein_resonance,if=(cooldown.azsharas_font_of_power.remains>20||!equipped.azsharas_font_of_power||time_to_die<cooldown.azsharas_font_of_power.duration+34&target.health.pct>20)&(cooldown.trueshot.remains_guess<3||(essence.vision_of_perfection.minor&time_to_die>cooldown+buff.worldvein_resonance.duration))||time_to_die<20\nactions.cds+=/guardian_of_azeroth,if=(ca_execute||target.time_to_die>cooldown+30)&(buff.trueshot.up||cooldown.trueshot.remains<16)||time_to_die<31\nactions.cds+=/ripple_in_space,if=cooldown.trueshot.remains<7\nactions.cds+=/memory_of_lucid_dreams,if=!buff.trueshot.up\nactions.cds+=/potion,if=buff.trueshot.react&buff.bloodlust.react||prev_gcd.1.trueshot&target.health.pct<20||((consumable.potion_of_unbridled_fury||consumable.unbridled_fury)&target.time_to_die<61||time_to_die<26)\nactions.cds+=/trueshot,if=buff.trueshot.down&cooldown.rapid_fire.remains||time_to_die<15\n\nactions.st=explosive_shot\nactions.st+=/barrage,if=active_enemies>1\nactions.st+=/a_murder_of_crows\nactions.st+=/serpent_sting,if=refreshable&!action.serpent_sting.in_flight\nactions.st+=/rapid_fire,if=buff.trueshot.down||focus<35||focus<60&!talent.lethal_shots.enabled||buff.in_the_rhythm.remains<execute_time\n# if=buff.trueshot.up&(buff.unerring_vision.stack>4||!azerite.unerring_vision.enabled)||target.time_to_die<11\nactions.st+=/blood_of_the_enemy,if=buff.trueshot.up&(buff.unerring_vision.stack>4||!azerite.unerring_vision.enabled)||time_to_die<11\nactions.st+=/focused_azerite_beam,if=!buff.trueshot.up||time_to_die<5\nactions.st+=/arcane_shot,if=buff.trueshot.up&buff.master_marksman.up&!buff.memory_of_lucid_dreams.up\nactions.st+=/aimed_shot,if=buff.trueshot.up||(buff.double_tap.down||ca_execute)&buff.precise_shots.down||full_recharge_time<cast_time&cooldown.trueshot.remains\nactions.st+=/arcane_shot,if=buff.trueshot.up&buff.master_marksman.up&buff.memory_of_lucid_dreams.up\nactions.st+=/piercing_shot\nactions.st+=/purifying_blast,if=!buff.trueshot.up||time_to_die<8\nactions.st+=/concentrated_flame,if=focus+focus.regen*gcd<focus.max&buff.trueshot.down&(!dot.concentrated_flame_burn.remains&!action.concentrated_flame.in_flight)||full_recharge_time<gcd||target.time_to_die<5\nactions.st+=/the_unbound_force,if=buff.reckless_force.up||buff.reckless_force_counter.stack<10||time_to_die<5\nactions.st+=/arcane_shot,if=buff.trueshot.down&(buff.precise_shots.up&(focus>55||buff.master_marksman.up)||focus>75||time_to_die<5)\nactions.st+=/steady_shot\n\nactions.trickshots=barrage\nactions.trickshots+=/explosive_shot\nactions.trickshots+=/aimed_shot,if=buff.trick_shots.up&ca_execute&buff.double_tap.up\nactions.trickshots+=/rapid_fire,if=buff.trick_shots.up&(azerite.focused_fire.enabled||azerite.in_the_rhythm.rank>1||azerite.surging_shots.enabled||talent.streamline.enabled)\nactions.trickshots+=/aimed_shot,if=buff.trick_shots.up&(buff.precise_shots.down||cooldown.aimed_shot.full_recharge_time<action.aimed_shot.cast_time||buff.trueshot.up)\nactions.trickshots+=/rapid_fire,if=buff.trick_shots.up\nactions.trickshots+=/multishot,if=buff.trick_shots.down||buff.precise_shots.up&!buff.trueshot.up||focus>70\nactions.trickshots+=/focused_azerite_beam\nactions.trickshots+=/purifying_blast\nactions.trickshots+=/concentrated_flame\nactions.trickshots+=/blood_of_the_enemy\nactions.trickshots+=/the_unbound_force,if=buff.reckless_force.up||buff.reckless_force_counter.stack<10\nactions.trickshots+=/piercing_shot\nactions.trickshots+=/a_murder_of_crows\nactions.trickshots+=/serpent_sting,if=refreshable&!action.serpent_sting.in_flight\nactions.trickshots+=/steady_shot",
|
|
},
|
|
["Beast Mastery"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20200614,
|
|
["author"] = "SimC",
|
|
["desc"] = "# Beast Mastery Hunter\n# https://github.com/simulationcraft/simc/\n# June 14, 2020\n\n# Changes:\n# - Added Counter Shot to default action list.\n# - Use time_to_die (vs. target.time_to_die) to anticipate end of encounter.\n# - Add dispels/purges via utility action list.\n# - trinket.X.has_cooldown is unsupported.\n# - Check for crit_pct_current.",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.casting.up || buff.dispellable_magic.up || buff.dispellable_enrage.up",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "utility",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.aspect_of_the_wild || time_to_die < 20",
|
|
["action"] = "use_items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.aspect_of_the_wild.remains_guess < 15 & time_to_die > 10",
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.razor_coral_debuff.up & ( ! equipped.azsharas_font_of_power || cooldown.azsharas_font_of_power.remains > 86 || essence.blood_of_the_enemy.major ) & ( prev_gcd.1.aspect_of_the_wild || ! equipped.cyclotronic_blast & buff.aspect_of_the_wild.remains > 9 ) & ( ! essence.condensed_lifeforce.major || buff.guardian_of_azeroth.up ) & ( target.health.pct < 35 || ! essence.condensed_lifeforce.major || ! talent.killer_instinct.enabled ) || ( debuff.razor_coral_debuff.down || time_to_die < 26 ) & time_to_die > ( 24 * ( cooldown.cyclotronic_blast.remains + 4 < time_to_die ) )",
|
|
["name"] = "ashvanes_razor_coral",
|
|
["action"] = "ashvanes_razor_coral",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.aspect_of_the_wild.remains > 10 || cooldown.aspect_of_the_wild.remains > 45 || time_to_die < 11",
|
|
["name"] = "galecallers_boon",
|
|
["action"] = "galecallers_boon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cyclotronic_blast",
|
|
["criteria"] = "buff.bestial_wrath.down || time_to_die < 5",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 2",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cleave",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "summon_pet",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["action"] = "worldvein_resonance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "guardian_of_azeroth",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "memory_of_lucid_dreams",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cyclotronic_blast",
|
|
["criteria"] = "! raid_event.invulnerable.exists & ( equipped.variable_intensity_gigavolt_oscillating_reactor )",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cyclotronic_blast",
|
|
["criteria"] = "! raid_event.invulnerable.exists & ( trinket.1.has_cooldown + trinket.2.has_cooldown < 2 || equipped.variable_intensity_gigavolt_oscillating_reactor )",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! raid_event.invulnerable.exists",
|
|
["action"] = "focused_azerite_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["precast_time"] = "1.3",
|
|
["action"] = "aspect_of_the_wild",
|
|
["criteria"] = "! azerite.primal_instincts.enabled & ! essence.essence_of_the_focusing_iris.major & ( equipped.azsharas_font_of_power || ! equipped.cyclotronic_blast )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["precast_time"] = "1.5",
|
|
["action"] = "bestial_wrath",
|
|
["criteria"] = "azerite.primal_instincts.enabled & ! essence.essence_of_the_focusing_iris.major & ( equipped.azsharas_font_of_power || ! equipped.cyclotronic_blast )",
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "barbed_shot",
|
|
["criteria"] = "buff.frenzy.up & buff.frenzy.remains <= gcd.max + barbed_shot_grace_period",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "gcd.max - buff.beast_cleave.remains > 0.25",
|
|
["action"] = "multishot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "barbed_shot",
|
|
["criteria"] = "full_recharge_time < gcd.max & cooldown.bestial_wrath.remains",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "aspect_of_the_wild",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.aspect_of_the_wild.up & buff.bestial_wrath.up || time_to_die < 15",
|
|
["action"] = "stampede",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.aspect_of_the_wild.remains_guess > 20 || talent.one_with_the_pack.enabled || time_to_die < 15",
|
|
["action"] = "bestial_wrath",
|
|
},
|
|
{
|
|
["action"] = "chimaera_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "barrage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 4 || ! azerite.rapid_reload.enabled",
|
|
["action"] = "kill_command",
|
|
},
|
|
{
|
|
["action"] = "dire_beast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "barbed_shot",
|
|
["criteria"] = "buff.frenzy.down & ( charges_fractional > 1.8 || buff.bestial_wrath.up ) || cooldown.aspect_of_the_wild.remains < buff.frenzy.duration - gcd & azerite.primal_instincts.enabled || charges_fractional > 1.4 || time_to_die < 9",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "focused_azerite_beam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "purifying_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "concentrated_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up || buff.reckless_force_counter.stack < 10",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "azerite.rapid_reload.enabled & active_enemies > 2",
|
|
["action"] = "multishot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.kill_command.remains > focus.time_to_max & ( active_enemies < 3 || ! azerite.rapid_reload.enabled )",
|
|
["action"] = "cobra_shot",
|
|
},
|
|
{
|
|
["action"] = "spitting_cobra",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.bestial_wrath.remains > 30",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.bestial_wrath.remains > 30",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus < focus.max & ( raid_event.adds.remains > 90 || ! raid_event.adds.exists || active_enemies > 1 )",
|
|
["action"] = "blood_of_the_enemy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.aspect_of_the_wild.up & ( time_to_die > cooldown.berserking.duration + duration || ( target.health.pct < 35 || ! talent.killer_instinct.enabled ) ) || time_to_die < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.aspect_of_the_wild.up & ( time_to_die > cooldown.blood_fury.duration + duration || ( target.health.pct < 35 || ! talent.killer_instinct.enabled ) ) || time_to_die < 16",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frenzy.up & buff.frenzy.remains > gcd.max || ! buff.frenzy.up",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.up & buff.aspect_of_the_wild.up & target.health.pct < 35 || ( ( consumable.potion_of_unbridled_fury || consumable.unbridled_fury ) & time_to_die < 61 || time_to_die < 26 )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( prev_gcd.1.aspect_of_the_wild || cooldown.aspect_of_the_wild.remains < gcd || target.time_to_die < 20 ) || ! essence.vision_of_perfection.minor",
|
|
["action"] = "worldvein_resonance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.aspect_of_the_wild.remains < 10 || time_to_die > action.guardian_of_azeroth.cooldown + 30 || time_to_die < 30",
|
|
["action"] = "guardian_of_azeroth",
|
|
},
|
|
{
|
|
["action"] = "ripple_in_space",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "memory_of_lucid_dreams",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct > 80 || target.health.pct <= 20 || target.time_to_pct_20 > 30",
|
|
["action"] = "reaping_flames",
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frenzy.up & buff.frenzy.remains < gcd + barbed_shot_grace_period || cooldown.bestial_wrath.remains & ( full_recharge_time < gcd || azerite.primal_instincts.enabled & cooldown.aspect_of_the_wild.remains < gcd )",
|
|
["action"] = "barbed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + focus.regen * gcd < focus.max & buff.bestial_wrath.down & ( ! dot.concentrated_flame_burn.remains & ! action.concentrated_flame.in_flight ) || full_recharge_time < gcd || time_to_die < 5",
|
|
["action"] = "concentrated_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.aspect_of_the_wild.down & ( cooldown.barbed_shot.charges < 1 || ! azerite.primal_instincts.enabled )",
|
|
["action"] = "aspect_of_the_wild",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.aspect_of_the_wild.up & buff.bestial_wrath.up || time_to_die < 15",
|
|
["action"] = "stampede",
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || time_to_die < 5",
|
|
["action"] = "focused_azerite_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up || buff.reckless_force_counter.stack < 10 || time_to_die < 5",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.one_with_the_pack.enabled & buff.bestial_wrath.remains < gcd || buff.bestial_wrath.down & cooldown.aspect_of_the_wild.remains > 15 || time_to_die < 15 + gcd",
|
|
["action"] = "bestial_wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "azerite.dance_of_death.rank > 1 & buff.dance_of_death.remains < gcd",
|
|
["action"] = "barbed_shot",
|
|
},
|
|
{
|
|
["action"] = "kill_command",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["action"] = "chimaera_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "dire_beast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.one_with_the_pack.enabled & charges_fractional > 1.5 || charges_fractional > 1.8 || cooldown.aspect_of_the_wild.remains < buff.frenzy.duration - gcd & azerite.primal_instincts.enabled || time_to_die < 9",
|
|
["action"] = "barbed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || time_to_die < 8",
|
|
["action"] = "purifying_blast",
|
|
},
|
|
{
|
|
["action"] = "blood_of_the_enemy",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "barrage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( focus - cost + focus.regen * ( cooldown.kill_command.remains - 1 ) > action.kill_command.cost || cooldown.kill_command.remains > 1 + gcd & cooldown.bestial_wrath.remains_guess > focus.time_to_max || buff.memory_of_lucid_dreams.up ) & cooldown.kill_command.remains > 1 || time_to_die < 3",
|
|
["action"] = "cobra_shot",
|
|
},
|
|
{
|
|
["action"] = "spitting_cobra",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frenzy.duration - gcd > full_recharge_time",
|
|
["action"] = "barbed_shot",
|
|
},
|
|
},
|
|
["utility"] = {
|
|
{
|
|
["action"] = "counter_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "serenity_dust",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spore_cloud",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soothing_water",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sonic_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "nether_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "chijis_tranquility",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spirit_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "natures_grace",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20200614,
|
|
["warnings"] = "WARNING: The import for 'default' required some automated changes.\nLine 4: Converted 'trinket.X.cooldown' to 'cooldown.X' (1x).\n\nWARNING: The import for 'cleave' required some automated changes.\nLine 1: Converted 'pet.X.Y...' to 'Y...' (2x).\nLine 2: Converted 'pet.X.Y...' to 'Y...' (1x).\nLine 12: Converted 'pet.X.Y...' to 'Y...' (2x).\n\nWARNING: The import for 'cds' required some automated changes.\nLine 6: Converted 'pet.X.Y...' to 'Y...' (3x).\n\nWARNING: The import for 'st' required some automated changes.\nLine 1: Converted 'pet.X.Y...' to 'Y...' (2x).\nLine 14: Converted 'pet.X.Y...' to 'Y...' (1x).\nLine 20: Converted 'pet.X.Y...' to 'Y...' (1x).\n\nImported 6 action lists.\n",
|
|
["profile"] = "# Beast Mastery Hunter\n# https://github.com/simulationcraft/simc/\n# June 14, 2020\n\n# Changes:\n# - Added Counter Shot to default action list.\n# - Use time_to_die (vs. target.time_to_die) to anticipate end of encounter.\n# - Add dispels/purges via utility action list.\n# - trinket.X.has_cooldown is unsupported.\n# - Check for crit_pct_current.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/augmentation\n# actions.precombat+=/food\nactions.precombat+=/summon_pet\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/worldvein_resonance\nactions.precombat+=/guardian_of_azeroth\nactions.precombat+=/memory_of_lucid_dreams\nactions.precombat+=/use_item,effect_name=cyclotronic_blast,if=!raid_event.invulnerable.exists&(equipped.variable_intensity_gigavolt_oscillating_reactor)\nactions.precombat+=/use_item,effect_name=cyclotronic_blast,if=!raid_event.invulnerable.exists&(trinket.1.has_cooldown+trinket.2.has_cooldown<2||equipped.variable_intensity_gigavolt_oscillating_reactor)\nactions.precombat+=/focused_azerite_beam,if=!raid_event.invulnerable.exists\n# Adjusts the duration and cooldown of Aspect of the Wild and Primal Instincts by the duration of an unhasted GCD when they're used precombat. Because Aspect of the Wild reduces GCD by 200ms, this is 1.3 seconds. \nactions.precombat+=/aspect_of_the_wild,precast_time=1.3,if=!azerite.primal_instincts.enabled&!essence.essence_of_the_focusing_iris.major&(equipped.azsharas_font_of_power||!equipped.cyclotronic_blast)\n# Adjusts the duration and cooldown of Bestial Wrath and Haze of Rage by the duration of an unhasted GCD when they're used precombat.\nactions.precombat+=/bestial_wrath,precast_time=1.5,if=azerite.primal_instincts.enabled&!essence.essence_of_the_focusing_iris.major&(equipped.azsharas_font_of_power||!equipped.cyclotronic_blast)\nactions.precombat+=/potion\n\nactions.utility=counter_shot\nactions.utility+=/serenity_dust\nactions.utility+=/spore_cloud\nactions.utility+=/soothing_water\nactions.utility+=/sonic_blast\nactions.utility+=/nether_shock\nactions.utility+=/chijis_tranquility\nactions.utility+=/spirit_shock\nactions.utility+=/natures_grace\n\n# Executed every time the actor is available.\nactions=call_action_list,name=utility,if=debuff.casting.up||buff.dispellable_magic.up||buff.dispellable_enrage.up\nactions+=/use_items,if=prev_gcd.1.aspect_of_the_wild||time_to_die<20\nactions+=/use_item,name=azsharas_font_of_power,if=cooldown.aspect_of_the_wild.remains_guess<15&time_to_die>10\nactions+=/use_item,name=ashvanes_razor_coral,if=debuff.razor_coral_debuff.up&(!equipped.azsharas_font_of_power||trinket.azsharas_font_of_power.cooldown.remains>86||essence.blood_of_the_enemy.major)&(prev_gcd.1.aspect_of_the_wild||!equipped.cyclotronic_blast&buff.aspect_of_the_wild.remains>9)&(!essence.condensed_lifeforce.major||buff.guardian_of_azeroth.up)&(target.health.pct<35||!essence.condensed_lifeforce.major||!talent.killer_instinct.enabled)||(debuff.razor_coral_debuff.down||time_to_die<26)&time_to_die>(24*(cooldown.cyclotronic_blast.remains+4<time_to_die))\nactions+=/use_item,name=galecallers_boon,if=buff.aspect_of_the_wild.remains>10||cooldown.aspect_of_the_wild.remains>45||time_to_die<11\nactions+=/use_item,effect_name=cyclotronic_blast,if=buff.bestial_wrath.down||time_to_die<5\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=st,if=active_enemies<2\nactions+=/call_action_list,name=cleave,if=active_enemies>1\n\nactions.cds=ancestral_call,if=cooldown.bestial_wrath.remains>30\nactions.cds+=/fireblood,if=cooldown.bestial_wrath.remains>30\nactions.cds+=/blood_of_the_enemy,if=focus<focus.max&(raid_event.adds.remains>90||!raid_event.adds.exists||active_enemies>1)\nactions.cds+=/berserking,if=buff.aspect_of_the_wild.up&(time_to_die>cooldown.berserking.duration+duration||(target.health.pct<35||!talent.killer_instinct.enabled))||time_to_die<13\nactions.cds+=/blood_fury,if=buff.aspect_of_the_wild.up&(time_to_die>cooldown.blood_fury.duration+duration||(target.health.pct<35||!talent.killer_instinct.enabled))||time_to_die<16\nactions.cds+=/lights_judgment,if=pet.cat.buff.frenzy.up&pet.cat.buff.frenzy.remains>gcd.max||!pet.cat.buff.frenzy.up\nactions.cds+=/potion,if=buff.bestial_wrath.up&buff.aspect_of_the_wild.up&target.health.pct<35||((consumable.potion_of_unbridled_fury||consumable.unbridled_fury)&time_to_die<61||time_to_die<26)\nactions.cds+=/worldvein_resonance,if=(prev_gcd.1.aspect_of_the_wild||cooldown.aspect_of_the_wild.remains<gcd||target.time_to_die<20)||!essence.vision_of_perfection.minor\nactions.cds+=/guardian_of_azeroth,if=cooldown.aspect_of_the_wild.remains<10||time_to_die>action.guardian_of_azeroth.cooldown+30||time_to_die<30\nactions.cds+=/ripple_in_space\nactions.cds+=/memory_of_lucid_dreams\n# actions.cds+=/bag_of_tricks\nactions.cds+=/reaping_flames,if=target.health.pct>80||target.health.pct<=20||target.time_to_pct_20>30\n\nactions.cleave=barbed_shot,cycle_targets=1,if=pet.cat.buff.frenzy.up&pet.cat.buff.frenzy.remains<=gcd.max+barbed_shot_grace_period\nactions.cleave+=/multishot,if=gcd.max-pet.cat.buff.beast_cleave.remains>0.25\nactions.cleave+=/barbed_shot,cycle_targets=1,if=full_recharge_time<gcd.max&cooldown.bestial_wrath.remains\nactions.cleave+=/aspect_of_the_wild\nactions.cleave+=/stampede,if=buff.aspect_of_the_wild.up&buff.bestial_wrath.up||time_to_die<15\nactions.cleave+=/bestial_wrath,if=cooldown.aspect_of_the_wild.remains_guess>20||talent.one_with_the_pack.enabled||time_to_die<15\nactions.cleave+=/chimaera_shot\nactions.cleave+=/a_murder_of_crows\nactions.cleave+=/barrage\nactions.cleave+=/kill_command,if=active_enemies<4||!azerite.rapid_reload.enabled\nactions.cleave+=/dire_beast\nactions.cleave+=/barbed_shot,cycle_targets=1,if=pet.cat.buff.frenzy.down&(charges_fractional>1.8||buff.bestial_wrath.up)||cooldown.aspect_of_the_wild.remains<pet.cat.buff.frenzy.duration-gcd&azerite.primal_instincts.enabled||charges_fractional>1.4||time_to_die<9\nactions.cleave+=/focused_azerite_beam\nactions.cleave+=/purifying_blast\nactions.cleave+=/concentrated_flame\nactions.cleave+=/the_unbound_force,if=buff.reckless_force.up||buff.reckless_force_counter.stack<10\nactions.cleave+=/multishot,if=azerite.rapid_reload.enabled&active_enemies>2\nactions.cleave+=/cobra_shot,if=cooldown.kill_command.remains>focus.time_to_max&(active_enemies<3||!azerite.rapid_reload.enabled)\nactions.cleave+=/spitting_cobra\n\nactions.st=barbed_shot,if=pet.cat.buff.frenzy.up&pet.cat.buff.frenzy.remains<gcd+barbed_shot_grace_period||cooldown.bestial_wrath.remains&(full_recharge_time<gcd||azerite.primal_instincts.enabled&cooldown.aspect_of_the_wild.remains<gcd)\nactions.st+=/concentrated_flame,if=focus+focus.regen*gcd<focus.max&buff.bestial_wrath.down&(!dot.concentrated_flame_burn.remains&!action.concentrated_flame.in_flight)||full_recharge_time<gcd||time_to_die<5\nactions.st+=/aspect_of_the_wild,if=buff.aspect_of_the_wild.down&(cooldown.barbed_shot.charges<1||!azerite.primal_instincts.enabled)\nactions.st+=/stampede,if=buff.aspect_of_the_wild.up&buff.bestial_wrath.up||time_to_die<15\nactions.st+=/a_murder_of_crows\nactions.st+=/focused_azerite_beam,if=buff.bestial_wrath.down||time_to_die<5\nactions.st+=/the_unbound_force,if=buff.reckless_force.up||buff.reckless_force_counter.stack<10||time_to_die<5\nactions.st+=/bestial_wrath,if=talent.one_with_the_pack.enabled&buff.bestial_wrath.remains<gcd||buff.bestial_wrath.down&cooldown.aspect_of_the_wild.remains>15||time_to_die<15+gcd\nactions.st+=/barbed_shot,if=azerite.dance_of_death.rank>1&buff.dance_of_death.remains<gcd\nactions.st+=/kill_command\nactions.st+=/bag_of_tricks,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/chimaera_shot\nactions.st+=/dire_beast\nactions.st+=/barbed_shot,if=talent.one_with_the_pack.enabled&charges_fractional>1.5||charges_fractional>1.8||cooldown.aspect_of_the_wild.remains<pet.cat.buff.frenzy.duration-gcd&azerite.primal_instincts.enabled||time_to_die<9\nactions.st+=/purifying_blast,if=buff.bestial_wrath.down||time_to_die<8\nactions.st+=/blood_of_the_enemy\nactions.st+=/barrage\nactions.st+=/cobra_shot,if=(focus-cost+focus.regen*(cooldown.kill_command.remains-1)>action.kill_command.cost||cooldown.kill_command.remains>1+gcd&cooldown.bestial_wrath.remains_guess>focus.time_to_max||buff.memory_of_lucid_dreams.up)&cooldown.kill_command.remains>1||time_to_die<3\nactions.st+=/spitting_cobra\nactions.st+=/barbed_shot,if=pet.cat.buff.frenzy.duration-gcd>full_recharge_time",
|
|
["spec"] = 253,
|
|
},
|
|
["Survival"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20200525,
|
|
["author"] = "SimulationCraft",
|
|
["desc"] = "# Survival Hunter\n# https://github.com/simulationcraft/simc/\n# May 25, 2020\n\n# Changes:\n# - Added Muzzle to default action list.\n# - Changed target_if expressions to cycle_targets.\n# - Modified carve_cdr to work more easily with the addon's implementation of variable.\n# - Added utility APL.",
|
|
["lists"] = {
|
|
["apst"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd )",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd )",
|
|
["action"] = "raptor_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "full_recharge_time < 1.5 * gcd & focus + cast_regen < focus.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "steel_trap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max & ! ticking & ! buff.memory_of_lucid_dreams.up & ( full_recharge_time < 1.5 * gcd || ! dot.wildfire_bomb.ticking & ! buff.coordinated_assault.up || ! dot.wildfire_bomb.ticking & buff.mongoose_fury.stack < 1 ) || time_to_die < 18 & ! dot.wildfire_bomb.ticking",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.serpent_sting.ticking & ! buff.coordinated_assault.up",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max & ( buff.mongoose_fury.stack < 5 || focus < action.mongoose_bite.cost )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! buff.coordinated_assault.up & buff.mongoose_fury.stack < 5",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.coordinated_assault.up",
|
|
["action"] = "a_murder_of_crows",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.coordinated_assault.up",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.up || focus + cast_regen > focus.max - 10 || buff.coordinated_assault.up",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["action"] = "raptor_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
},
|
|
["cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "carve_cdr",
|
|
["criteria"] = "active_enemies < 5",
|
|
["value_else"] = "5",
|
|
["value"] = "active_enemies",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "azerite.blur_of_talons.rank > 0 & ( buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd || buff.coordinated_assault.remains & ! buff.blur_of_talons.remains ) )",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mongoose_bite",
|
|
["criteria"] = "debuff.latent_poison.stack > ( active_enemies || 9 ) & target.time_to_die < active_enemies * gcd",
|
|
["target_if"] = "",
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.shrapnel_bomb.ticking & ! talent.hydras_bite.enabled || dot.shrapnel_bomb.ticking & active_enemies > 5",
|
|
["action"] = "carve",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.guerrilla_tactics.enabled || full_recharge_time < gcd || raid_event.adds.remains < 6 & raid_event.adds.exists",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges_fractional > 2.5 || dot.shrapnel_bomb.ticking || cooldown.wildfire_bomb.remains > active_enemies - gcd || debuff.blood_of_the_enemy.remains || raid_event.adds.remains < 5 & raid_event.adds.exists",
|
|
["action"] = "butchery",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mongoose_bite",
|
|
["criteria"] = "debuff.latent_poison.stack > 8",
|
|
["target_if"] = "",
|
|
},
|
|
{
|
|
["action"] = "chakrams",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.terms_of_engagement.enabled",
|
|
["action"] = "harpoon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.guerrilla_tactics.enabled",
|
|
["action"] = "carve",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.wildfire_bomb.remains > ( active_enemies || 5 )",
|
|
["action"] = "butchery",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.wildfire_bomb.refreshable || talent.wildfire_infusion.enabled",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "serpent_sting",
|
|
["criteria"] = "buff.vipers_venom.react",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.wildfire_bomb.remains > variable.carve_cdr % 2",
|
|
["action"] = "carve",
|
|
},
|
|
{
|
|
["action"] = "steel_trap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "serpent_sting",
|
|
["criteria"] = "refreshable & buff.tip_of_the_spear.stack < 3 & next_wi_bomb.volatile || refreshable & azerite.latent_poison.rank > 0",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mongoose_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.terms_of_engagement.enabled",
|
|
["action"] = "harpoon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd )",
|
|
["action"] = "raptor_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd )",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up & buff.vipers_venom.remains < 1 * gcd",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "steel_trap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max & refreshable & full_recharge_time < gcd & ! buff.memory_of_lucid_dreams.up || focus + cast_regen < focus.max & ( ! dot.wildfire_bomb.ticking & ( ! buff.coordinated_assault.up || buff.mongoose_fury.stack < 1 || time_to_die < 18 || ! dot.wildfire_bomb.ticking & azerite.wilderness_survival.rank > 0 ) ) & ! buff.memory_of_lucid_dreams.up",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up & dot.serpent_sting.remains < 4 * gcd || dot.serpent_sting.refreshable & ! buff.coordinated_assault.up",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.coordinated_assault.up",
|
|
["action"] = "a_murder_of_crows",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.coordinated_assault.up",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.up || focus + cast_regen > focus.max - 20 & talent.vipers_venom.enabled || focus + cast_regen > focus.max - 1 & talent.terms_of_engagement.enabled || buff.coordinated_assault.up",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["action"] = "raptor_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.wildfire_bomb.refreshable",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
},
|
|
["wfi"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max & talent.terms_of_engagement.enabled",
|
|
["action"] = "harpoon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blur_of_talons.up & buff.blur_of_talons.remains < gcd",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blur_of_talons.up & buff.blur_of_talons.remains < gcd",
|
|
["action"] = "raptor_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up & buff.vipers_venom.remains < 1.5 * gcd || ! dot.serpent_sting.ticking",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "full_recharge_time < 1.5 * gcd & focus + cast_regen < focus.max || ( next_wi_bomb.volatile & dot.serpent_sting.ticking & dot.serpent_sting.refreshable || next_wi_bomb.pheromone & ! buff.mongoose_fury.up & focus + cast_regen < focus.max - action.kill_command.cast_regen * 3 )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max - focus.regen",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "steel_trap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "full_recharge_time < 1.5 * gcd",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up & dot.serpent_sting.remains < 4 * gcd",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.shrapnel_bomb.ticking || buff.mongoose_fury.stack = 5",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_wi_bomb.shrapnel & dot.serpent_sting.remains > 5 * gcd",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.mongoose_fury.remains",
|
|
["action"] = "chakrams",
|
|
},
|
|
{
|
|
["action"] = "mongoose_bite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "raptor_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_wi_bomb.volatile & dot.serpent_sting.ticking || next_wi_bomb.pheromone || next_wi_bomb.shrapnel",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.casting.up || buff.dispellable_magic.up || buff.dispellable_enrage.up",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "utility",
|
|
},
|
|
{
|
|
["action"] = "use_items",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & target.time_to_die < focus % ( action.mongoose_bite.cost - cast_regen ) * gcd",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & talent.chakrams.enabled & talent.alpha_predator.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "apwfi",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & talent.chakrams.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "wfi",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & ! talent.alpha_predator.enabled & ! talent.wildfire_infusion.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & talent.alpha_predator.enabled & ! talent.wildfire_infusion.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "apst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & talent.alpha_predator.enabled & talent.wildfire_infusion.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "apwfi",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & ! talent.alpha_predator.enabled & talent.wildfire_infusion.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "wfi",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ! talent.birds_of_prey.enabled || active_enemies > 2",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cleave",
|
|
},
|
|
{
|
|
["action"] = "concentrated_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bag_of_tricks",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "summon_pet",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cyclotronic_blast",
|
|
["criteria"] = "! raid_event.invulnerable.exists",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["action"] = "guardian_of_azeroth",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "worldvein_resonance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "potion",
|
|
["dynamic_prepot"] = "1",
|
|
},
|
|
{
|
|
["action"] = "steel_trap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "harpoon",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains > 30",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains > 30",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains > 30",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains > 60 || time_to_die < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.guardian_of_azeroth.up & ( buff.berserking.up || buff.blood_fury.up || ! race.troll ) || ( consumable.potion_of_unbridled_fury & time_to_die < 61 || time_to_die < 26 ) || ! essence.condensed_lifeforce.major & buff.coordinated_assault.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.distance >= 6",
|
|
["action"] = "aspect_of_the_eagle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.memory_of_lucid_dreams.up & target.time_to_die < cooldown.memory_of_lucid_dreams.remains + 15 || buff.guardian_of_azeroth.stack = 5 & target.time_to_die < cooldown.guardian_of_azeroth.remains + 20 || debuff.razor_coral_debuff.down || target.time_to_die < 21 || buff.worldvein_resonance.remains & target.time_to_die < cooldown.worldvein_resonance.remains + 18 || ! talent.birds_of_prey.enabled & target.time_to_die < cooldown.coordinated_assault.remains + 20 & buff.coordinated_assault.remains",
|
|
["name"] = "ashvanes_razor_coral",
|
|
["action"] = "ashvanes_razor_coral",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.memory_of_lucid_dreams.remains || talent.wildfire_infusion.enabled & cooldown.coordinated_assault.remains || ! essence.memory_of_lucid_dreams.major & cooldown.coordinated_assault.remains",
|
|
["name"] = "galecallers_boon",
|
|
["action"] = "galecallers_boon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > 90 & focus < focus.max - 25 || ( active_enemies > 1 & ! talent.birds_of_prey.enabled || active_enemies > 2 ) & ( buff.blur_of_talons.up & buff.blur_of_talons.remains > 3 * gcd || ! buff.blur_of_talons.up )",
|
|
["action"] = "focused_azerite_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( raid_event.adds.remains > 90 || ! raid_event.adds.exists ) || ( active_enemies > 1 & ! talent.birds_of_prey.enabled || active_enemies > 2 ) ) & focus < focus.max",
|
|
["action"] = "blood_of_the_enemy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( raid_event.adds.remains > 60 || ! raid_event.adds.exists ) || ( active_enemies > 1 & ! talent.birds_of_prey.enabled || active_enemies > 2 ) ) & focus < focus.max",
|
|
["action"] = "purifying_blast",
|
|
},
|
|
{
|
|
["action"] = "guardian_of_azeroth",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ripple_in_space",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "full_recharge_time < 1 * gcd",
|
|
["action"] = "concentrated_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["action"] = "worldvein_resonance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct > 80 || target.health.pct <= 20 || target.time_to_pct_20 > 30",
|
|
["action"] = "reaping_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "essence.memory_of_lucid_dreams.major & refreshable & buff.vipers_venom.up & ! cooldown.memory_of_lucid_dreams.remains",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "essence.memory_of_lucid_dreams.major & ! cooldown.memory_of_lucid_dreams.remains",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "essence.memory_of_lucid_dreams.major & full_recharge_time < 1.5 * gcd & focus < action.mongoose_bite.cost & ! cooldown.memory_of_lucid_dreams.remains",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus < action.mongoose_bite.cost & buff.coordinated_assault.up",
|
|
["action"] = "memory_of_lucid_dreams",
|
|
},
|
|
},
|
|
["apwfi"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blur_of_talons.up & buff.blur_of_talons.remains < gcd",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blur_of_talons.up & buff.blur_of_talons.remains < gcd",
|
|
["action"] = "raptor_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.serpent_sting.ticking",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "full_recharge_time < 1.5 * gcd || focus + cast_regen < focus.max & ( next_wi_bomb.volatile & dot.serpent_sting.ticking & dot.serpent_sting.refreshable || next_wi_bomb.pheromone & ! buff.mongoose_fury.up & focus + cast_regen < focus.max - action.kill_command.cast_regen * 3 )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.remains & next_wi_bomb.pheromone",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "full_recharge_time < 1.5 * gcd & focus + cast_regen < focus.max - 20",
|
|
["target_if"] = "",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "steel_trap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack = 3 || dot.shrapnel_bomb.ticking",
|
|
["action"] = "raptor_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.shrapnel_bomb.ticking",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_wi_bomb.shrapnel & focus > 30 & dot.serpent_sting.remains > 5 * gcd",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.mongoose_fury.remains",
|
|
["action"] = "chakrams",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max & ( buff.mongoose_fury.stack < 5 || focus < action.mongoose_bite.cost )",
|
|
["target_if"] = "",
|
|
},
|
|
{
|
|
["action"] = "raptor_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.up || focus > 40 || dot.shrapnel_bomb.ticking",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_wi_bomb.volatile & dot.serpent_sting.ticking || next_wi_bomb.pheromone || next_wi_bomb.shrapnel & focus > 50",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
},
|
|
["utility"] = {
|
|
{
|
|
["action"] = "muzzle",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "serenity_dust",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spore_cloud",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soothing_water",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sonic_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "nether_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "chijis_tranquility",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spirit_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "natures_grace",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20200525,
|
|
["warnings"] = "WARNING: The import for 'cleave' required some automated changes.\nLine 3: Removed min:X check (not available in emulation) (1x).\nLine 9: Removed max:X check (not available in emulation) (1x).\n\nWARNING: The import for 'apwfi' required some automated changes.\nLine 8: Removed min:X check (not available in emulation) (1x).\nLine 15: Removed min:X check (not available in emulation) (1x).\n\nImported 9 action lists.\n",
|
|
["profile"] = "# Survival Hunter\n# https://github.com/simulationcraft/simc/\n# May 25, 2020\n\n# Changes:\n# - Added Muzzle to default action list.\n# - Changed target_if expressions to cycle_targets.\n# - Modified carve_cdr to work more easily with the addon's implementation of variable.\n# - Added utility APL.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/augmentation\n# actions.precombat+=/food\nactions.precombat+=/summon_pet\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/use_item,effect_name=cyclotronic_blast,if=!raid_event.invulnerable.exists\nactions.precombat+=/guardian_of_azeroth\nactions.precombat+=/coordinated_assault\nactions.precombat+=/worldvein_resonance\nactions.precombat+=/potion,dynamic_prepot=1\nactions.precombat+=/steel_trap\nactions.precombat+=/harpoon\n\nactions.utility=muzzle\nactions.utility+=/serenity_dust\nactions.utility+=/spore_cloud\nactions.utility+=/soothing_water\nactions.utility+=/sonic_blast\nactions.utility+=/nether_shock\nactions.utility+=/chijis_tranquility\nactions.utility+=/spirit_shock\nactions.utility+=/natures_grace\n\n# Executed every time the actor is available.\nactions=call_action_list,name=utility,if=debuff.casting.up||buff.dispellable_magic.up||buff.dispellable_enrage.up\nactions+=/use_items\nactions+=/call_action_list,name=cds\nactions+=/mongoose_bite,if=active_enemies=1&target.time_to_die<focus%(action.mongoose_bite.cost-cast_regen)*gcd\nactions+=/call_action_list,name=apwfi,if=active_enemies<3&talent.chakrams.enabled&talent.alpha_predator.enabled\nactions+=/call_action_list,name=wfi,if=active_enemies<3&talent.chakrams.enabled\nactions+=/call_action_list,name=st,if=active_enemies<3&!talent.alpha_predator.enabled&!talent.wildfire_infusion.enabled\nactions+=/call_action_list,name=apst,if=active_enemies<3&talent.alpha_predator.enabled&!talent.wildfire_infusion.enabled\nactions+=/call_action_list,name=apwfi,if=active_enemies<3&talent.alpha_predator.enabled&talent.wildfire_infusion.enabled\nactions+=/call_action_list,name=wfi,if=active_enemies<3&!talent.alpha_predator.enabled&talent.wildfire_infusion.enabled\nactions+=/call_action_list,name=cleave,if=active_enemies>1&!talent.birds_of_prey.enabled||active_enemies>2\nactions+=/concentrated_flame\nactions+=/arcane_torrent\nactions+=/bag_of_tricks\n\nactions.apst=mongoose_bite,if=buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd)\nactions.apst+=/raptor_strike,if=buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd)\nactions.apst+=/flanking_strike,if=focus+cast_regen<focus.max\nactions.apst+=/kill_command,cycle_targets=1,if=full_recharge_time<1.5*gcd&focus+cast_regen<focus.max\nactions.apst+=/steel_trap,if=focus+cast_regen<focus.max\nactions.apst+=/wildfire_bomb,if=focus+cast_regen<focus.max&!ticking&!buff.memory_of_lucid_dreams.up&(full_recharge_time<1.5*gcd||!dot.wildfire_bomb.ticking&!buff.coordinated_assault.up||!dot.wildfire_bomb.ticking&buff.mongoose_fury.stack<1)||time_to_die<18&!dot.wildfire_bomb.ticking\nactions.apst+=/serpent_sting,if=!dot.serpent_sting.ticking&!buff.coordinated_assault.up\nactions.apst+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max&(buff.mongoose_fury.stack<5||focus<action.mongoose_bite.cost)\nactions.apst+=/serpent_sting,if=refreshable&!buff.coordinated_assault.up&buff.mongoose_fury.stack<5\nactions.apst+=/a_murder_of_crows,if=!buff.coordinated_assault.up\nactions.apst+=/coordinated_assault,if=!buff.coordinated_assault.up\nactions.apst+=/mongoose_bite,if=buff.mongoose_fury.up||focus+cast_regen>focus.max-10||buff.coordinated_assault.up\nactions.apst+=/raptor_strike\nactions.apst+=/wildfire_bomb,if=!ticking\n\nactions.apwfi=mongoose_bite,if=buff.blur_of_talons.up&buff.blur_of_talons.remains<gcd\nactions.apwfi+=/raptor_strike,if=buff.blur_of_talons.up&buff.blur_of_talons.remains<gcd\nactions.apwfi+=/serpent_sting,if=!dot.serpent_sting.ticking\nactions.apwfi+=/a_murder_of_crows\nactions.apwfi+=/wildfire_bomb,if=full_recharge_time<1.5*gcd||focus+cast_regen<focus.max&(next_wi_bomb.volatile&dot.serpent_sting.ticking&dot.serpent_sting.refreshable||next_wi_bomb.pheromone&!buff.mongoose_fury.up&focus+cast_regen<focus.max-action.kill_command.cast_regen*3)\nactions.apwfi+=/coordinated_assault\nactions.apwfi+=/mongoose_bite,if=buff.mongoose_fury.remains&next_wi_bomb.pheromone\nactions.apwfi+=/kill_command,target_if=min:bloodseeker.remains,if=full_recharge_time<1.5*gcd&focus+cast_regen<focus.max-20\nactions.apwfi+=/steel_trap,if=focus+cast_regen<focus.max\nactions.apwfi+=/raptor_strike,if=buff.tip_of_the_spear.stack=3||dot.shrapnel_bomb.ticking\nactions.apwfi+=/mongoose_bite,if=dot.shrapnel_bomb.ticking\nactions.apwfi+=/wildfire_bomb,if=next_wi_bomb.shrapnel&focus>30&dot.serpent_sting.remains>5*gcd\nactions.apwfi+=/chakrams,if=!buff.mongoose_fury.remains\nactions.apwfi+=/serpent_sting,if=refreshable\nactions.apwfi+=/kill_command,target_if=min:bloodseeker.remains,if=focus+cast_regen<focus.max&(buff.mongoose_fury.stack<5||focus<action.mongoose_bite.cost)\nactions.apwfi+=/raptor_strike\nactions.apwfi+=/mongoose_bite,if=buff.mongoose_fury.up||focus>40||dot.shrapnel_bomb.ticking\nactions.apwfi+=/wildfire_bomb,if=next_wi_bomb.volatile&dot.serpent_sting.ticking||next_wi_bomb.pheromone||next_wi_bomb.shrapnel&focus>50\n\nactions.cds=blood_fury,if=cooldown.coordinated_assault.remains>30\nactions.cds+=/ancestral_call,if=cooldown.coordinated_assault.remains>30\nactions.cds+=/fireblood,if=cooldown.coordinated_assault.remains>30\nactions.cds+=/lights_judgment\nactions.cds+=/berserking,if=cooldown.coordinated_assault.remains>60||time_to_die<13\nactions.cds+=/potion,if=buff.guardian_of_azeroth.up&(buff.berserking.up||buff.blood_fury.up||!race.troll)||(consumable.potion_of_unbridled_fury&time_to_die<61||time_to_die<26)||!essence.condensed_lifeforce.major&buff.coordinated_assault.up\nactions.cds+=/aspect_of_the_eagle,if=target.distance>=6\nactions.cds+=/use_item,name=ashvanes_razor_coral,if=buff.memory_of_lucid_dreams.up&target.time_to_die<cooldown.memory_of_lucid_dreams.remains+15||buff.guardian_of_azeroth.stack=5&target.time_to_die<cooldown.guardian_of_azeroth.remains+20||debuff.razor_coral_debuff.down||target.time_to_die<21||buff.worldvein_resonance.remains&target.time_to_die<cooldown.worldvein_resonance.remains+18||!talent.birds_of_prey.enabled&target.time_to_die<cooldown.coordinated_assault.remains+20&buff.coordinated_assault.remains\nactions.cds+=/use_item,name=galecallers_boon,if=cooldown.memory_of_lucid_dreams.remains||talent.wildfire_infusion.enabled&cooldown.coordinated_assault.remains||!essence.memory_of_lucid_dreams.major&cooldown.coordinated_assault.remains\nactions.cds+=/use_item,name=azsharas_font_of_power\nactions.cds+=/focused_azerite_beam,if=raid_event.adds.in>90&focus<focus.max-25||(active_enemies>1&!talent.birds_of_prey.enabled||active_enemies>2)&(buff.blur_of_talons.up&buff.blur_of_talons.remains>3*gcd||!buff.blur_of_talons.up)\nactions.cds+=/blood_of_the_enemy,if=((raid_event.adds.remains>90||!raid_event.adds.exists)||(active_enemies>1&!talent.birds_of_prey.enabled||active_enemies>2))&focus<focus.max\nactions.cds+=/purifying_blast,if=((raid_event.adds.remains>60||!raid_event.adds.exists)||(active_enemies>1&!talent.birds_of_prey.enabled||active_enemies>2))&focus<focus.max\nactions.cds+=/guardian_of_azeroth\nactions.cds+=/ripple_in_space\nactions.cds+=/concentrated_flame,if=full_recharge_time<1*gcd\nactions.cds+=/the_unbound_force,if=buff.reckless_force.up\nactions.cds+=/worldvein_resonance\nactions.cds+=/reaping_flames,if=target.health.pct>80||target.health.pct<=20||target.time_to_pct_20>30\nactions.cds+=/serpent_sting,if=essence.memory_of_lucid_dreams.major&refreshable&buff.vipers_venom.up&!cooldown.memory_of_lucid_dreams.remains\nactions.cds+=/mongoose_bite,if=essence.memory_of_lucid_dreams.major&!cooldown.memory_of_lucid_dreams.remains\nactions.cds+=/wildfire_bomb,if=essence.memory_of_lucid_dreams.major&full_recharge_time<1.5*gcd&focus<action.mongoose_bite.cost&!cooldown.memory_of_lucid_dreams.remains\nactions.cds+=/memory_of_lucid_dreams,if=focus<action.mongoose_bite.cost&buff.coordinated_assault.up\n\nactions.cleave=variable,name=carve_cdr,op=setif,value=active_enemies,value_else=5,condition=active_enemies<5\nactions.cleave+=/mongoose_bite,if=azerite.blur_of_talons.rank>0&(buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd||buff.coordinated_assault.remains&!buff.blur_of_talons.remains))\nactions.cleave+=/mongoose_bite,target_if=min:time_to_die,if=debuff.latent_poison.stack>(active_enemies||9)&target.time_to_die<active_enemies*gcd\nactions.cleave+=/a_murder_of_crows\nactions.cleave+=/coordinated_assault\nactions.cleave+=/carve,if=dot.shrapnel_bomb.ticking&!talent.hydras_bite.enabled||dot.shrapnel_bomb.ticking&active_enemies>5\nactions.cleave+=/wildfire_bomb,if=!talent.guerrilla_tactics.enabled||full_recharge_time<gcd||raid_event.adds.remains<6&raid_event.adds.exists\nactions.cleave+=/butchery,if=charges_fractional>2.5||dot.shrapnel_bomb.ticking||cooldown.wildfire_bomb.remains>active_enemies-gcd||debuff.blood_of_the_enemy.remains||raid_event.adds.remains<5&raid_event.adds.exists\nactions.cleave+=/mongoose_bite,target_if=max:debuff.latent_poison.stack,if=debuff.latent_poison.stack>8\nactions.cleave+=/chakrams\nactions.cleave+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max\nactions.cleave+=/harpoon,if=talent.terms_of_engagement.enabled\nactions.cleave+=/carve,if=talent.guerrilla_tactics.enabled\nactions.cleave+=/butchery,if=cooldown.wildfire_bomb.remains>(active_enemies||5)\nactions.cleave+=/flanking_strike,if=focus+cast_regen<focus.max\nactions.cleave+=/wildfire_bomb,if=dot.wildfire_bomb.refreshable||talent.wildfire_infusion.enabled\nactions.cleave+=/serpent_sting,cycle_targets=1,if=buff.vipers_venom.react\nactions.cleave+=/carve,if=cooldown.wildfire_bomb.remains>variable.carve_cdr%2\nactions.cleave+=/steel_trap\nactions.cleave+=/serpent_sting,cycle_targets=1,if=refreshable&buff.tip_of_the_spear.stack<3&next_wi_bomb.volatile||refreshable&azerite.latent_poison.rank>0\n# To simulate usage for Mongoose Bite or Raptor Strike during Aspect of the Eagle, copy each occurrence of the action and append _eagle to the action name.\nactions.cleave+=/mongoose_bite,cycle_targets=1\nactions.cleave+=/raptor_strike,cycle_targets=1\n\nactions.st=harpoon,if=talent.terms_of_engagement.enabled\nactions.st+=/flanking_strike,if=focus+cast_regen<focus.max\nactions.st+=/raptor_strike,if=buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd)\n# To simulate usage for Mongoose Bite or Raptor Strike during Aspect of the Eagle, copy each occurrence of the action and append _eagle to the action name.\nactions.st+=/mongoose_bite,if=buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd)\nactions.st+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max\nactions.st+=/serpent_sting,if=buff.vipers_venom.up&buff.vipers_venom.remains<1*gcd\nactions.st+=/steel_trap,if=focus+cast_regen<focus.max\nactions.st+=/wildfire_bomb,if=focus+cast_regen<focus.max&refreshable&full_recharge_time<gcd&!buff.memory_of_lucid_dreams.up||focus+cast_regen<focus.max&(!dot.wildfire_bomb.ticking&(!buff.coordinated_assault.up||buff.mongoose_fury.stack<1||time_to_die<18||!dot.wildfire_bomb.ticking&azerite.wilderness_survival.rank>0))&!buff.memory_of_lucid_dreams.up\nactions.st+=/serpent_sting,if=buff.vipers_venom.up&dot.serpent_sting.remains<4*gcd||dot.serpent_sting.refreshable&!buff.coordinated_assault.up\nactions.st+=/a_murder_of_crows,if=!buff.coordinated_assault.up\nactions.st+=/coordinated_assault,if=!buff.coordinated_assault.up\nactions.st+=/mongoose_bite,if=buff.mongoose_fury.up||focus+cast_regen>focus.max-20&talent.vipers_venom.enabled||focus+cast_regen>focus.max-1&talent.terms_of_engagement.enabled||buff.coordinated_assault.up\nactions.st+=/raptor_strike\nactions.st+=/wildfire_bomb,if=dot.wildfire_bomb.refreshable\nactions.st+=/serpent_sting,if=buff.vipers_venom.up\n\nactions.wfi=harpoon,if=focus+cast_regen<focus.max&talent.terms_of_engagement.enabled\nactions.wfi+=/mongoose_bite,if=buff.blur_of_talons.up&buff.blur_of_talons.remains<gcd\nactions.wfi+=/raptor_strike,if=buff.blur_of_talons.up&buff.blur_of_talons.remains<gcd\nactions.wfi+=/serpent_sting,if=buff.vipers_venom.up&buff.vipers_venom.remains<1.5*gcd||!dot.serpent_sting.ticking\nactions.wfi+=/wildfire_bomb,if=full_recharge_time<1.5*gcd&focus+cast_regen<focus.max||(next_wi_bomb.volatile&dot.serpent_sting.ticking&dot.serpent_sting.refreshable||next_wi_bomb.pheromone&!buff.mongoose_fury.up&focus+cast_regen<focus.max-action.kill_command.cast_regen*3)\nactions.wfi+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max-focus.regen\nactions.wfi+=/a_murder_of_crows\nactions.wfi+=/steel_trap,if=focus+cast_regen<focus.max\nactions.wfi+=/wildfire_bomb,if=full_recharge_time<1.5*gcd\nactions.wfi+=/coordinated_assault\nactions.wfi+=/serpent_sting,if=buff.vipers_venom.up&dot.serpent_sting.remains<4*gcd\nactions.wfi+=/mongoose_bite,if=dot.shrapnel_bomb.ticking||buff.mongoose_fury.stack=5\nactions.wfi+=/wildfire_bomb,if=next_wi_bomb.shrapnel&dot.serpent_sting.remains>5*gcd\nactions.wfi+=/serpent_sting,if=refreshable\nactions.wfi+=/chakrams,if=!buff.mongoose_fury.remains\nactions.wfi+=/mongoose_bite\nactions.wfi+=/raptor_strike\nactions.wfi+=/serpent_sting,if=buff.vipers_venom.up\nactions.wfi+=/wildfire_bomb,if=next_wi_bomb.volatile&dot.serpent_sting.ticking||next_wi_bomb.pheromone||next_wi_bomb.shrapnel",
|
|
["spec"] = 255,
|
|
},
|
|
},
|
|
},
|
|
["Quilago - Thunderhorn"] = {
|
|
["runOnce"] = {
|
|
["forceReloadClassDefaultOptions_20220306_102"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_103"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_105"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_104"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
},
|
|
["specs"] = {
|
|
[103] = {
|
|
["debuffPadding"] = 0,
|
|
["nameplateRange"] = 8,
|
|
["settings"] = {
|
|
["rip_duration"] = 9,
|
|
["solo_prowl"] = false,
|
|
["brutal_charges"] = 2,
|
|
["regrowth"] = true,
|
|
["lazy_swipe"] = false,
|
|
["frenzy_cp"] = 2,
|
|
["vigil_damage"] = 50,
|
|
["allow_crit_prediction"] = true,
|
|
},
|
|
["maxTime"] = 33,
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["potion"] = "focused_resolve",
|
|
["buffPadding"] = 0,
|
|
},
|
|
[104] = {
|
|
["debuffPadding"] = 0,
|
|
["settings"] = {
|
|
["vigil_damage"] = 50,
|
|
["catweave_bear"] = false,
|
|
["maul_anyway"] = true,
|
|
["ironfur_damage_threshold"] = 5,
|
|
["maul_rage"] = 20,
|
|
["max_ironfur"] = 1,
|
|
},
|
|
["potion"] = "focused_resolve",
|
|
["potionsReset"] = 20180919.1,
|
|
["maxTime"] = 33,
|
|
["maxRefresh"] = 10,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[102] = {
|
|
["debuffPadding"] = 0,
|
|
["nameplateRange"] = 8,
|
|
["settings"] = {
|
|
["starlord_cancel"] = false,
|
|
["vigil_damage"] = 50,
|
|
},
|
|
["maxTime"] = 33,
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["potion"] = "unbridled_fury",
|
|
["buffPadding"] = 0,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Feral"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20241022,
|
|
["spec"] = 103,
|
|
["desc"] = "2024-10-22: 11.0.5\n\n2024-09-21: SimC update\n\n2024-09-10: Fix Ferocious Bite max_energy\n\n2024-09-04, 09-08: SimC update\n\n2024-09-03: Tweak targeting\n\n2024-08-24: SimC priority update\n\n2024-08-15: Adjust Ferocious Bite for Wildstalker\n\n2024-08-11: Mark of the Wild, priority update\n\n2024-08-08: Interrupt and Soothe\n\n2024-07-24: The War Within",
|
|
["profile"] = "actions.precombat+=/mark_of_the_wild\nactions.precombat+=/prowl,if=!buff.prowl.up\nactions.precombat+=/cat_form,if=!buff.cat_form.up\n# check if trinket slot contains a stat on use (variable is just kept in case of things like mirror not working with has_use_buff)\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff&!trinket.1.is.imperfect_ascendancy_serum&!trinket.1.is.ovinaxs_mercurial_egg&!trinket.1.is.concoction_kiss_of_death\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff&!trinket.2.is.imperfect_ascendancy_serum&!trinket.2.is.ovinaxs_mercurial_egg&!trinket.2.is.concoction_kiss_of_death\n# if we are playing 2 minute convoke, we prefer 2 minute on-use over 3 minute on-use even without berserk: heart of the lion\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=talent.convoke_the_spirits&!talent.ashamanes_guidance&variable.trinket_1_buffs&(trinket.1.cooldown.duration%%120=0||120%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=talent.convoke_the_spirits&!talent.ashamanes_guidance&variable.trinket_2_buffs&(trinket.1.cooldown.duration%%120=0||120%%trinket.1.cooldown.duration=0)\n# if we aren't playing 2 minute convoke, then we can sync 3 minute cds with berserk sans hotl\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=!(talent.convoke_the_spirits&!talent.ashamanes_guidance)&variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%%trinket.1.cooldown.duration=0||trinket.1.cooldown.duration%%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=!(talent.convoke_the_spirits&!talent.ashamanes_guidance)&variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%%trinket.2.cooldown.duration=0||trinket.2.cooldown.duration%%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%%trinket.2.cooldown.duration=0)\n# prioritize trinkets that line-up with cds->main-stat on uses->longer cd trinkets->shorter duration trinkets\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.agility)*(1.2+trinket.2.has_buff.mastery)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.agility)*(1.2+trinket.1.has_buff.mastery)*(variable.trinket_1_sync))\n\nactions+=/prowl,if=buff.bs_inc.down&!buff.prowl.up\nactions+=/cat_form,if=!buff.cat_form.up&!talent.fluid_form\nactions+=/skull_bash\nactions+=/soothe\n## Line up <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",
|
|
["author"] = "Makahiki",
|
|
["lists"] = {
|
|
["aoe_builder"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.need_bt",
|
|
["var_name"] = "proccing_bt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "thrash_cat",
|
|
["description"] = "maintain thrash highest prio",
|
|
["criteria"] = "refreshable & ! talent.thrashing_claws.enabled & ! ( variable.need_bt & buff.bt_thrash.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "brutal_slash",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "avoid capping brs charges. Also send brutal slashes/ws swipe in aoe, even if we need to proc bloodtalons, during berserk.",
|
|
["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 ) )",
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "swipe_cat",
|
|
["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 ) )",
|
|
},
|
|
{
|
|
["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,
|
|
["description"] = "dcr rake > moonfire",
|
|
["criteria"] = "refreshable & talent.doubleclawed_rake.enabled & ! ( variable.need_bt & buff.bt_rake.up ) & ! variable.cc_capped",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "swipe_cat",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lunar_inspiration",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "li moonfire is better than non-dcr rake in aoe",
|
|
["criteria"] = "refreshable & ! ( variable.need_bt & buff.bt_moonfire.up ) & ! variable.cc_capped",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! ( variable.need_bt & buff.bt_rake.up ) & ! variable.cc_capped",
|
|
["action"] = "rake",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "brutal_slash",
|
|
["description"] = "fillers",
|
|
["criteria"] = "! ( variable.need_bt & buff.bt_swipe.up )",
|
|
},
|
|
{
|
|
["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,
|
|
["description"] = "fallback bt actions",
|
|
["criteria"] = "talent.doubleclawed_rake.enabled & buff.sudden_ambush.up & variable.need_bt & buff.bt_rake.down",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_moonfire.down",
|
|
["action"] = "lunar_inspiration",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_ambush.up & variable.need_bt & buff.bt_rake.down",
|
|
["action"] = "rake",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_shred.down & ! variable.easy_swipe",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rake.pmultiplier < 1.6 & variable.need_bt & buff.bt_rake.down",
|
|
["action"] = "rake",
|
|
["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,
|
|
["criteria"] = "buff.shadowmeld.up || buff.prowl.up",
|
|
["action"] = "rake",
|
|
["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,
|
|
["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 )",
|
|
["action"] = "adaptive_swarm",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.cat_form.up & dot.adaptive_swarm_damage.stack < 3 & talent.unbridled_swarm.enabled & spell_targets.swipe_cat > 1 & dot.rip.ticking",
|
|
["action"] = "adaptive_swarm",
|
|
["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,
|
|
["action"] = "rip",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "combo_points = 5",
|
|
["list_name"] = "finisher",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "spell_targets.swipe_cat = 1 & combo_points < 5 & ( variable.time_to_pool <= 0 || ! variable.need_bt || variable.proccing_bt )",
|
|
["list_name"] = "builder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "spell_targets.swipe_cat >= 2 & combo_points < 5 & ( variable.time_to_pool <= 0 || ! variable.need_bt || variable.proccing_bt )",
|
|
["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",
|
|
["var_name"] = "trinket_1_buffs",
|
|
["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)",
|
|
},
|
|
{
|
|
["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",
|
|
["var_name"] = "trinket_1_sync",
|
|
["value"] = "1",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["value"] = "1",
|
|
["value_else"] = "0.5",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "if we aren't playing 2 minute convoke, then we can sync 3 minute cds with berserk sans hotl",
|
|
["var_name"] = "trinket_1_sync",
|
|
["value"] = "1",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["value"] = "1",
|
|
["value_else"] = "0.5",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "prioritize trinkets that line-up with cds->main-stat on uses->longer cd trinkets->shorter duration trinkets",
|
|
["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 / 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 ) )",
|
|
},
|
|
},
|
|
["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,
|
|
["action"] = "rake",
|
|
["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 )",
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "rake",
|
|
["description"] = "clip rake for bt if it wont downgrade its snapshot",
|
|
["criteria"] = "variable.need_bt & buff.bt_rake.down & persistent_multiplier >= dot.rake.pmultiplier",
|
|
},
|
|
{
|
|
["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 ) )",
|
|
["var_name"] = "effective_energy",
|
|
["description"] = "most expensive bt cycle is Shred + Thrash + Rake, 40+40+35 for 115 energy. During incarn it is 32+32+28 for 92energy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( ( 115 - variable.effective_energy - ( 23 * buff.incarnation.up ) ) / energy.regen )",
|
|
["var_name"] = "time_to_pool",
|
|
["description"] = "estimated time until we have enough energy to proc bloodtalons.",
|
|
},
|
|
{
|
|
["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 ) )",
|
|
["var_name"] = "dot_refresh_soon",
|
|
["description"] = "this returns true if we have a dot nearing pandemic range",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.bloodtalons.enabled & buff.bloodtalons.stack <= 1",
|
|
["var_name"] = "need_bt",
|
|
["description"] = "try to proc bt if we have 1 or 0 sacks of bloodtalons",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.clearcasting.stack = ( 1 + talent.moment_of_clarity.enabled )",
|
|
["var_name"] = "cc_capped",
|
|
["description"] = "capped on clearcasting stacks",
|
|
},
|
|
{
|
|
["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",
|
|
["var_name"] = "lastconvoke",
|
|
["description"] = "checks if theres exactly 1 convoke remaining in sim",
|
|
},
|
|
{
|
|
["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",
|
|
["var_name"] = "lastzerk",
|
|
["description"] = "checks if theres exactly 1 berserk cast remaining in sim : at least 5s spare for now, TODO: check #s",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( cooldown.potions.remains + cooldown.potions.duration + 15 ) > fight_remains & cooldown.potions.remains + 15 < fight_remains",
|
|
["var_name"] = "lastpotion",
|
|
["description"] = "approximates if theres exactly 1 potion cast remaining with duration to spare",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["value"] = "settings.regrowth",
|
|
["var_name"] = "regrowth",
|
|
["description"] = "optional variable that sends regrowth and renewal casts. Turned off by default",
|
|
},
|
|
{
|
|
["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",
|
|
["value"] = "buff.tigers_fury.up",
|
|
["description"] = "track moonfire snapshot",
|
|
["criteria"] = "prev.lunar_inspiration",
|
|
},
|
|
},
|
|
["cooldown"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > 17 || boss",
|
|
["action"] = "incarnation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["description"] = "non-stat on use trinkets get used on cooldown, so long as it wont interfere with a stat on-use trinket",
|
|
["criteria"] = "trinket.t1.has_use_damage & ( trinket.t2.cooldown.remains > 20 || ! variable.trinket_2_buffs )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "trinket.t2.has_use_damage & ( trinket.t1.cooldown.remains > 20 || ! variable.trinket_1_buffs )",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "berserk",
|
|
["description"] = "berserk with tigers fury",
|
|
["criteria"] = "buff.tigers_fury.up & ( fight_remains > 12 || boss )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bs_inc.up",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "potion",
|
|
["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 )",
|
|
},
|
|
{
|
|
["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",
|
|
["description"] = "stat on-use trinkets, prefers trinket with higher priority.",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points <= 1 || buff.bs_inc.up & combo_points <= 2",
|
|
["action"] = "feral_frenzy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "convoke_the_spirits",
|
|
["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 ) )",
|
|
},
|
|
},
|
|
["finisher"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "primal_wrath",
|
|
["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 ) ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rip",
|
|
["cycle_targets"] = 1,
|
|
["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",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ferocious_bite",
|
|
["cycle_targets"] = 1,
|
|
["max_energy"] = 1,
|
|
["criteria"] = "! buff.bs_inc.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bs_inc.up",
|
|
["action"] = "ferocious_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["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,
|
|
["action"] = "spymasters_web",
|
|
["criteria"] = "variable.cd_condition & ( buff.spymasters_report.stack > 29 || fight_remains < cooldown.ca_inc.duration ) || boss & fight_remains < 20",
|
|
["name"] = "spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "treacherous_transmitter",
|
|
["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",
|
|
},
|
|
{
|
|
["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,
|
|
["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 )",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["action"] = "trinket2",
|
|
["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,
|
|
["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",
|
|
["action"] = "moonfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ( target.time_to_die - remains ) > 6 - ( spell_targets / 2 )",
|
|
["action"] = "sunfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "moonfire",
|
|
["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,
|
|
["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 )",
|
|
["action"] = "stellar_flare",
|
|
["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,
|
|
["criteria"] = "remains < 3 || refreshable & ( hero_tree.keeper_of_the_grove & cooldown.force_of_nature.ready || ! hero_tree.keeper_of_the_grove & variable.cd_condition )",
|
|
["action"] = "sunfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & remains < 3 & ( ! talent.treants_of_the_moon.enabled || cooldown.force_of_nature.remains > 3 & ! buff.harmony_of_the_grove.up )",
|
|
["action"] = "moonfire",
|
|
["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,
|
|
["criteria"] = "refreshable",
|
|
["action"] = "sunfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ( ! talent.treants_of_the_moon.enabled || cooldown.force_of_nature.remains > 3 & ! buff.harmony_of_the_grove.up )",
|
|
["action"] = "moonfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ( target.time_to_die - remains - target.unit > 7 + spell_targets )",
|
|
["action"] = "stellar_flare",
|
|
["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,
|
|
["action"] = "spymasters_web",
|
|
["criteria"] = "variable.cd_condition & ( buff.spymasters_report.stack > 29 || boss & fight_remains < cooldown.ca_inc.duration )",
|
|
["name"] = "spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_condition",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_condition",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "trinket2",
|
|
["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",
|
|
["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",
|
|
["spec"] = 102,
|
|
},
|
|
["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",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "mark_of_the_wild",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "if_build",
|
|
["value"] = "1",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.thorns_of_iron.enabled & talent.reinforced_fur.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "ripweaving",
|
|
["value"] = "1",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.primal_fury.enabled & talent.fluid_form.enabled & talent.wildpower_surge.enabled",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
},
|
|
["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",
|
|
},
|
|
},
|
|
["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,
|
|
["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 )",
|
|
["action"] = "moonfire",
|
|
["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,
|
|
["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",
|
|
["action"] = "ironfur",
|
|
["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",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241011,
|
|
["warnings"] = "Imported 4 action lists.\n",
|
|
["spec"] = 104,
|
|
["basedOn"] = "Guardian",
|
|
["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",
|
|
},
|
|
["Restoration Druid"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20240908,
|
|
["spec"] = 105,
|
|
["desc"] = "Healer priorities are DPS-focused only.\n\n2024-09-01, 09-08: When in Cat Form, do cat things\n\n2024-07-30: The War Within",
|
|
["lists"] = {
|
|
["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"] = "! 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,
|
|
["criteria"] = "refreshable & target.time_to_die > 5 & talent.improved_sunfire.enabled",
|
|
["action"] = "sunfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & time_to_die > 12",
|
|
["action"] = "moonfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 8",
|
|
["action"] = "starsurge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & target.time_to_die > 7 & active_enemies < 7",
|
|
["action"] = "sunfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.starfire > 1 || buff.heart_of_the_wild.up",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["action"] = "wrath",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["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,
|
|
["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 )",
|
|
["action"] = "rip",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & target.time_to_die > 7 & spell_targets.thrash_cat > 2",
|
|
["action"] = "thrash_cat",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( refreshable & target.time_to_die > 5 ) & ! prev_gcd.1.cat_form & ( active_enemies = 1 || talent.improved_sunfire.enabled )",
|
|
["action"] = "sunfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & time_to_die > 10 & spell_targets.swipe_cat < 10",
|
|
["action"] = "rake",
|
|
["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,
|
|
["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",
|
|
["action"] = "moonfire",
|
|
["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,
|
|
["criteria"] = "combo_points > 3 & target.time_to_die < 3 || combo_points = 5 & energy >= 50",
|
|
["action"] = "ferocious_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & target.time_to_die > 6 & ( spell_targets.thrash_cat > 1 || talent.liveliness.enabled )",
|
|
["action"] = "thrash_cat",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 3 & combo_points < 5 & talent.improved_swipe.enabled",
|
|
["action"] = "swipe_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & target.time_to_die > 5 & active_enemies < 7 & ! talent.improved_sunfire.enabled",
|
|
["action"] = "sunfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy > 60 & combo_points < 5",
|
|
["action"] = "shred",
|
|
},
|
|
},
|
|
["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"] = 20240908,
|
|
["warnings"] = "Imported 3 action lists.\n",
|
|
["author"] = "Makahiki",
|
|
["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\n## actions+=/run_action_list,name=healing,if=!buff.prowl.up&!buff.shadowmeld.up&druid.time_spend_healing,line_cd=20\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## actions.healing+=/strict_sequence,name=healregrowthregrowthregrowthregrowth",
|
|
},
|
|
},
|
|
},
|
|
["Quillphis - Deathwing"] = {
|
|
["runOnce"] = {
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_252"] = true,
|
|
["resetAllPotions_20201209"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["forceEnableEnhancedRecheckBoomkin_20210712"] = true,
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_250"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_251"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["resetGlobalCooldownSync_20210403"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
},
|
|
["specs"] = {
|
|
[252] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["dps_shell"] = false,
|
|
["festermight_cycle"] = false,
|
|
},
|
|
["potionsReset"] = 20180919.1,
|
|
["debuffPadding"] = 0,
|
|
["maxTime"] = 33,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[251] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["bos_rp"] = 50,
|
|
["ams_usage"] = "damage",
|
|
},
|
|
["potionsReset"] = 20180919.1,
|
|
["maxTime"] = 33,
|
|
["debuffPadding"] = 0,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[250] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["rt_damage"] = 30,
|
|
["vb_damage"] = 50,
|
|
["ibf_damage"] = 40,
|
|
["save_blood_shield"] = true,
|
|
},
|
|
["potionsReset"] = 20180919.1,
|
|
["maxTime"] = 33,
|
|
["debuffPadding"] = 0,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[102] = {
|
|
["enhancedRecheck"] = true,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Unholy"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20230910,
|
|
["spec"] = 252,
|
|
["desc"] = "2023-09-10: Patch 10.1.7 updates.\n\n2023-07-11: Patch 10.1.5 launch.\n\n2023-06-24: Resync with SimC.\n\n2023-05-20: Add Vial trinket.\n\n2023-05-17: Update trinkets again.\n\n2023-04-30: Update trinket logic from SimC.\n\n2023-04-15: Minor tweak to use Festering Strike in preparation for Apocalypse.\n\n2023-04-04: Unholy update from SimC.\n\n2023-03-20: More updates for 10.0.7.\n\n2023-03-13: Update for 10.0.7.",
|
|
["lists"] = {
|
|
["aoe_setup"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.bursting_sores.enabled || death_knight.fwounded_targets >= cycle_enemies || death_knight.fwounded_targets >= 8 || raid_event.adds.exists & raid_event.adds.remains <= 11 & raid_event.adds.remains > 5 )",
|
|
["action"] = "any_dnd",
|
|
["description"] = "AoE Setup",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( debuff.festering_wound.down || death_knight.fwounded_targets < cycle_enemies ) & talent.bursting_sores.enabled",
|
|
["action"] = "festering_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power || fight_remains < 10",
|
|
["action"] = "epidemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( debuff.festering_wound.down || death_knight.fwounded_targets < cycle_enemies )",
|
|
["action"] = "festering_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.apocalypse.remains < variable.apoc_timing & debuff.festering_wound.stack < 4",
|
|
["action"] = "festering_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & ! talent.epidemic.enabled",
|
|
["action"] = "death_coil",
|
|
},
|
|
},
|
|
["aoe_burst"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.bursting_sores.enabled || rune < 1 || talent.bursting_sores.enabled & debuff.festering_wound.stack = 0 ) & ! variable.pooling_runic_power & ( active_enemies >= 6 || runic_power.deficit < 30 || buff.festermight.stack = 20 )",
|
|
["action"] = "epidemic",
|
|
["description"] = "AoE Burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.festering_wound.stack >= 1",
|
|
["action"] = "wound_spender",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power || fight_remains < 10",
|
|
["action"] = "epidemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & ! talent.epidemic.enabled",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["action"] = "wound_spender",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.epidemic_priority & ( ! variable.pooling_runic_power & variable.spend_rp || boss & fight_remains < 10 )",
|
|
["action"] = "death_coil",
|
|
["description"] = "Single Target",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.epidemic_priority & ( ! variable.pooling_runic_power & variable.spend_rp || boss & fight_remains < 10 )",
|
|
["action"] = "epidemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! death_and_decay.ticking & ( active_enemies >= 2 || talent.unholy_ground.enabled & ( pet.apoc_ghoul.active & pet.apoc_ghoul.remains >= 13 || pet.gargoyle.active & pet.gargoyle.remains > 8 || pet.army_ghoul.active & pet.army_ghoul.remains > 8 || ! variable.pop_wounds & debuff.festering_wound.stack >= 4 ) || talent.defile.enabled & ( pet.gargoyle.active || pet.apoc_ghoul.active || pet.army_ghoul.active || buff.dark_transformation.up ) ) & ( death_knight.fwounded_targets >= cycle_enemies || active_enemies = 1 )",
|
|
["action"] = "any_dnd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.pop_wounds || active_enemies >= 2 & death_and_decay.ticking",
|
|
["action"] = "wound_spender",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pop_wounds & debuff.festering_wound.stack < 4",
|
|
["action"] = "festering_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "death_coil",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pop_wounds & debuff.festering_wound.stack >= 4",
|
|
["action"] = "wound_spender",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.commander_of_the_dead.up || ! talent.commander_of_the_dead.enabled",
|
|
["action"] = "summon_gargoyle",
|
|
["description"] = "ST/Cleave Cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! pet.ghoul.active",
|
|
["action"] = "raise_dead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.apocalypse.remains < 5",
|
|
["action"] = "dark_transformation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.st_planning & debuff.festering_wound.stack >= 4",
|
|
["action"] = "apocalypse",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.st_planning & ( pet.gargoyle.active & pet.gargoyle.remains <= 23 || ! talent.summon_gargoyle.enabled & talent.army_of_the_damned.enabled & pet.army_ghoul.active & pet.apoc_ghoul.active || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_damned.enabled & buff.dark_transformation.up || ! talent.summon_gargoyle.enabled & ! talent.summon_gargoyle.enabled & buff.dark_transformation.up ) || boss & fight_remains <= 21",
|
|
["action"] = "empower_rune_weapon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune < 3 & variable.st_planning",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.st_planning",
|
|
["action"] = "unholy_assault",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & target.time_to_pct_35 < 5 & target.time_to_die > 5",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.time_to_pct_35 < 5 & active_enemies >= 2 & target.time_to_die > ( dot.soul_reaper.remains + 5 )",
|
|
["action"] = "soul_reaper",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["aoe_cooldowns"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vile_contagion",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "AoE Cooldowns",
|
|
["criteria"] = "debuff.festering_wound.stack >= 4 & cooldown.any_dnd.remains < 3",
|
|
},
|
|
{
|
|
["action"] = "summon_gargoyle",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune < 2 || buff.festermight.stack > 10 || ! talent.festermight.enabled || buff.festermight.up & buff.festermight.remains < 12",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.bursting_sores.enabled & debuff.festering_wound.up & ( ! death_and_decay.ticking & cooldown.death_and_decay.remains & rune < 3 || death_and_decay.ticking & rune = 0 ) || ! talent.bursting_sores.enabled & debuff.festering_wound.stack >= 4",
|
|
["action"] = "apocalypse",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.festering_wound.stack <= 2 || buff.dark_transformation.up",
|
|
["action"] = "unholy_assault",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! pet.ghoul.active",
|
|
["action"] = "raise_dead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.any_dnd.remains < 10 & talent.infected_claws.enabled & ( ( cooldown.vile_contagion.remains || raid_event.adds.exists & raid_event.adds.in > 10 ) & death_knight.fwounded_targets < active_enemies || ! talent.vile_contagion.enabled ) & ( raid_event.adds.remains > 5 || ! raid_event.adds.exists ) || ! talent.infected_claws.enabled )",
|
|
["action"] = "dark_transformation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dark_transformation.up",
|
|
["action"] = "empower_rune_weapon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.dark_transformation.up & cooldown.dark_transformation.remains > 6 || boss & fight_remains < gcd.max",
|
|
["action"] = "sacrificial_pact",
|
|
},
|
|
},
|
|
["high_priority"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.gargoyle.remains <= 30 || ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 || cooldown.summon_gargoyle.ready ) & ( buff.dark_transformation.up & 30 >= buff.dark_transformation.remains || pet.army_ghoul.active & pet.army_ghoul.remains <= 30 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= 30 ) || boss & fight_remains <= 30",
|
|
["action"] = "potion",
|
|
["description"] = "Priority Actions",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.summon_gargoyle.enabled & cooldown.summon_gargoyle.remains < 2 || ! talent.summon_gargoyle.enabled || boss & fight_remains < 35",
|
|
["action"] = "army_of_the_dead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_enemies <= 3 || ! talent.epidemic.enabled ) & ( pet.gargoyle.active & talent.commander_of_the_dead.enabled & buff.commander_of_the_dead.up & cooldown.apocalypse.remains < 5 & buff.commander_of_the_dead.remains > 27 || debuff.death_rot.up & debuff.death_rot.remains < gcd.max )",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 4 & ( talent.commander_of_the_dead.enabled & buff.commander_of_the_dead.up & cooldown.apocalypse.remains < 5 || debuff.death_rot.up & debuff.death_rot.remains < gcd.max )",
|
|
["action"] = "epidemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.festering_wound.up & ( cooldown.apocalypse.remains > variable.apoc_timing + 3 || active_enemies >= 3 ) & talent.plaguebringer.enabled & ( talent.superstrain.enabled || talent.unholy_blight.enabled ) & buff.plaguebringer.remains < gcd.max",
|
|
["action"] = "wound_spender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.st_planning & ( ( ! talent.apocalypse.enabled || cooldown.apocalypse.remains ) & talent.morbidity.enabled || ! talent.morbidity.enabled ) || variable.adds_remain || boss & fight_remains < 21",
|
|
["action"] = "unholy_blight",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.time_to_die > dot.virulent_plague.remains & ( dot.virulent_plague.refreshable || talent.superstrain.enabled & ( dot.frost_fever_superstrain.refreshable || dot.blood_plague_superstrain.refreshable ) ) & ( ! talent.unholy_blight.enabled || talent.unholy_blight.enabled & cooldown.unholy_blight.remains > 15 / ( ( talent.superstrain.enabled * 3 ) + ( talent.plaguebringer.enabled * 2 ) + ( talent.ebon_fever.enabled * 2 ) ) )",
|
|
["action"] = "outbreak",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "mind_freeze",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "strangulate",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit > 40 & ( pet.gargoyle.active || ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > cooldown.antimagic_shell.duration )",
|
|
["action"] = "antimagic_shell",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "death_knight.amz_absorb_percent > 0 & runic_power.deficit > 70 & talent.assimilation.enabled & ( pet.gargoyle.active || ! talent.summon_gargoyle.enabled )",
|
|
["action"] = "antimagic_zone",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Variables",
|
|
["value"] = "1",
|
|
["var_name"] = "epidemic_priority",
|
|
["action"] = "variable",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.improved_death_coil.enabled & ! talent.coil_of_devastation.enabled & active_enemies >= 3 || talent.coil_of_devastation.enabled & active_enemies >= 4 || ! talent.improved_death_coil.enabled & active_enemies >= 2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "garg_setup_complete",
|
|
["value"] = "1",
|
|
["value_else"] = "0",
|
|
["criteria"] = "active_enemies >= 3 || cooldown.summon_gargoyle.remains > 1 & ( cooldown.apocalypse.remains > 1 || ! talent.apocalypse.enabled ) || ! talent.summon_gargoyle.enabled || time > 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "apoc_timing",
|
|
["value"] = "7",
|
|
["value_else"] = "2",
|
|
["criteria"] = "cooldown.apocalypse.remains < 10 & debuff.festering_wound.stack <= 4 & cooldown.unholy_assault.remains > 10",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "festermight_tracker",
|
|
["value"] = "debuff.festering_wound.stack >= 1",
|
|
["value_else"] = "debuff.festering_wound.stack >= ( 3 - talent.infected_claws.enabled )",
|
|
["criteria"] = "! pet.gargoyle.active & talent.festermight.enabled & buff.festermight.up & ( buff.festermight.remains / ( 5 * gcd.max ) ) >= 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "pop_wounds",
|
|
["value"] = "1",
|
|
["value_else"] = "0",
|
|
["criteria"] = "( cooldown.apocalypse.remains > variable.apoc_timing || ! talent.apocalypse.enabled ) & ( variable.festermight_tracker || debuff.festering_wound.stack >= 1 & ! talent.apocalypse.enabled || debuff.festering_wound.stack >= 1 & cooldown.unholy_assault.remains < 20 & talent.unholy_assault.enabled & variable.st_planning || debuff.rotten_touch.up & debuff.festering_wound.stack >= 1 || debuff.festering_wound.stack > 4 ) || fight_remains < 5 & debuff.festering_wound.stack >= 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "pooling_runic_power",
|
|
["value"] = "1",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.vile_contagion.enabled & cooldown.vile_contagion.remains < 3 & runic_power < 60 & ! variable.st_planning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "st_planning",
|
|
["value"] = "1",
|
|
["value_else"] = "0",
|
|
["criteria"] = "active_enemies = 1 & ( ! raid_event.adds.exists || raid_event.adds.in > 15 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "adds_remain",
|
|
["value"] = "1",
|
|
["value_else"] = "0",
|
|
["criteria"] = "active_enemies >= 2 & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.remains > 6 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "spend_rp",
|
|
["value"] = "1",
|
|
["value_else"] = "0",
|
|
["criteria"] = "( ! talent.rotten_touch.enabled || talent.rotten_touch.enabled & ! debuff.rotten_touch.up || runic_power.deficit < 15 ) & ( ( talent.improved_death_coil.enabled & ( active_enemies = 2 || talent.coil_of_devastation.enabled ) || rune < 3 || pet.gargoyle.active || buff.sudden_doom.react || cooldown.apocalypse.remains < 10 & debuff.festering_wound.stack > 3 || ! variable.pop_wounds & debuff.festering_wound.stack >= 4 ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Call Action Lists",
|
|
["list_name"] = "high_priority",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "variable.garg_setup_complete = 0",
|
|
["list_name"] = "garg_setup",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "variable.st_planning",
|
|
["list_name"] = "cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "variable.adds_remain",
|
|
["list_name"] = "aoe_cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "racials",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "variable.adds_remain & cooldown.any_dnd.remains < 10 & ! death_and_decay.ticking",
|
|
["list_name"] = "aoe_setup",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies >= 4 & death_and_decay.ticking",
|
|
["list_name"] = "aoe_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies >= 4 & ( cooldown.any_dnd.remains > 10 & ! death_and_decay.ticking || ! variable.adds_remain )",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies <= 3",
|
|
["list_name"] = "st",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "raise_dead",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "army_of_the_dead",
|
|
["precombat_time"] = "2",
|
|
},
|
|
},
|
|
["garg_setup"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.festering_wound.stack >= 4 & ( buff.commander_of_the_dead.up & pet.gargoyle.remains < 23 || ! talent.commander_of_the_dead.enabled )",
|
|
["action"] = "apocalypse",
|
|
["description"] = "Garg Setup",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.commander_of_the_dead.enabled & ( cooldown.dark_transformation.remains < 3 || buff.commander_of_the_dead.up ) || ! talent.commander_of_the_dead.enabled & talent.unholy_assault.enabled & cooldown.unholy_assault.remains < 10 || ! talent.unholy_assault.enabled & ! talent.commander_of_the_dead.enabled",
|
|
["action"] = "army_of_the_dead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & target.time_to_pct_35 < 5 & target.time_to_die > 5",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "buff.commander_of_the_dead.up || ! talent.commander_of_the_dead.enabled & runic_power >= 40",
|
|
["action"] = "summon_gargoyle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.gargoyle.active & pet.gargoyle.remains <= 23",
|
|
["action"] = "empower_rune_weapon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.gargoyle.active & pet.gargoyle.remains <= 23",
|
|
["action"] = "unholy_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( pet.gargoyle.remains < 30 & pet.gargoyle.active ) || ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 || cooldown.summon_gargoyle.ready ) & ( buff.dark_transformation.up & buff.dark_transformation.remains < 30 || pet.army_ghoul.active & pet.army_ghoul.remains <= 30 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= 30 )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.commander_of_the_dead.enabled & runic_power >= 40 || ! talent.commander_of_the_dead.enabled",
|
|
["action"] = "dark_transformation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! death_and_decay.ticking & debuff.festering_wound.stack > 0",
|
|
["action"] = "any_dnd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.festering_wound.stack = 0 || talent.apocalypse.enabled & cooldown.apocalypse.remains < 3 * gcd.max & debuff.festering_wound.stack < 4 || runic_power < 40 || ! talent.apocalypse.enabled & ! pet.gargoyle.active",
|
|
["action"] = "festering_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune <= 1",
|
|
["action"] = "death_coil",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "gavel_of_the_first_arbiter",
|
|
["action"] = "gavel_of_the_first_arbiter",
|
|
["description"] = "Trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.ruby_whelp_shell || trinket.t1.is.whispering_incarnate_icon",
|
|
["var_name"] = "trinket_1_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.ruby_whelp_shell || trinket.t2.is.whispering_incarnate_icon",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff ) & ! variable.trinket_1_exclude",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff ) & ! variable.trinket_2_exclude",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_1_sync",
|
|
["value"] = "1",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % 45 = 0 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["value"] = "1",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "variable.trinket_2_buffs & ( trinket.t2.cooldown.duration % 45 = 0 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.algethar_puzzle_box || trinket.t1.is.irideus_fragment || trinket.t1.is.vial_of_animated_blood",
|
|
["var_name"] = "trinket_1_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.algethar_puzzle_box || trinket.t2.is.irideus_fragment || trinket.t2.is.vial_of_animated_blood",
|
|
["var_name"] = "trinket_2_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["value"] = "2",
|
|
["value_else"] = "1",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs & ( trinket.t2.has_cooldown & ! variable.trinket_2_exclude || ! trinket.t1.has_cooldown ) || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / trinket.t2.buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "algethar_puzzle_box",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "cooldown.summon_gargoyle.remains < 5 & rune <= 4 || ! talent.summon_gargoyle.enabled & pet.army_ghoul.active || active_enemies > 3 & variable.adds_remain & ( buff.dark_transformation.up || talent.bursting_sores.enabled & cooldown.any_dnd.remains < 10 & ! death_and_decay.ticking )",
|
|
["action"] = "algethar_puzzle_box",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "irideus_fragment",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "( pet.gargoyle.active & pet.gargoyle.remains < 16 || ! talent.summon_gargoyle.enabled & pet.army_ghoul.active & pet.army_ghoul.remains < 16 ) || active_enemies > 3 & variable.adds_remain & ( buff.dark_transformation.up || talent.bursting_sores.enabled & death_and_decay.ticking )",
|
|
["action"] = "irideus_fragment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "vial_of_animated_blood",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= 18 || ! talent.apocalypse.enabled & buff.dark_transformation.up || active_enemies > 3 & variable.adds_remain & ( buff.dark_transformation.up || talent.bursting_sores.enabled & death_and_decay.ticking )",
|
|
["action"] = "vial_of_animated_blood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_1_manual & variable.trinket_1_buffs & ( ( ! talent.summon_gargoyle.enabled & ( ( ! talent.army_of_the_dead.enabled || cooldown.army_of_the_dead.remains_expected > 60 || death_knight.disable_aotd ) & ( pet.apoc_ghoul.active || ( ! talent.apocalypse.enabled || active_enemies >= 2 ) & buff.dark_transformation.up ) || pet.army_ghoul.active ) || talent.summon_gargoyle.enabled & pet.gargoyle.active || cooldown.summon_gargoyle.remains > 80 ) & ( pet.apoc_ghoul.active || ( ! talent.apocalypse.enabled || active_enemies >= 2 ) & buff.dark_transformation.up ) & ( variable.trinket_2_exclude || variable.trinket_priority = 1 || trinket.t2.cooldown.remains || ! trinket.t2.has_cooldown ) ) || boss & trinket.t1.buff_duration >= fight_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_2_manual & variable.trinket_2_buffs & ( ( ! talent.summon_gargoyle.enabled & ( ( ! talent.army_of_the_dead.enabled || cooldown.army_of_the_dead.remains_expected > 60 || death_knight.disable_aotd ) & ( pet.apoc_ghoul.active || ( ! talent.apocalypse.enabled || active_enemies >= 2 ) & buff.dark_transformation.up ) || pet.army_ghoul.active ) || talent.summon_gargoyle.enabled & pet.gargoyle.active || cooldown.summon_gargoyle.remains > 80 ) & ( pet.apoc_ghoul.active || ( ! talent.apocalypse.enabled || active_enemies >= 2 ) & buff.dark_transformation.up ) & ( variable.trinket_1_exclude || variable.trinket_priority = 2 || trinket.t1.cooldown.remains || ! trinket.t1.has_cooldown ) ) || boss & trinket.t2.buff_duration >= fight_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_1_manual & ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! trinket.t2.has_cooldown || ! variable.trinket_2_buffs || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_dead.enabled || ! talent.summon_gargoyle.enabled & talent.army_of_the_dead.enabled & cooldown.army_of_the_dead.remains_expected > 20 || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_dead.enabled & cooldown.dark_transformation.remains > 20 || cooldown.summon_gargoyle.remains > 20 & ! pet.gargoyle.active ) || boss & fight_remains < 15",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_2_manual & ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! trinket.t1.has_cooldown || ! variable.trinket_1_buffs || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_dead.enabled || ! talent.summon_gargoyle.enabled & talent.army_of_the_dead.enabled & cooldown.army_of_the_dead.remains_expected > 20 || ! talent.summon_gargoyle.enabled & ! talent.army_of_the_dead.enabled & cooldown.dark_transformation.remains > 20 || cooldown.summon_gargoyle.remains > 20 & ! pet.gargoyle.active ) || boss & fight_remains < 15",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "( ! variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( ! variable.trinket_2_buffs || trinket.t2.cooldown.remains )",
|
|
["action"] = "use_items",
|
|
},
|
|
},
|
|
["racials"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit > 20 & ( cooldown.summon_gargoyle.remains < gcd.max || ! talent.summon_gargoyle.enabled || pet.gargoyle.active & rune < 2 & debuff.festering_wound.stack < 1 )",
|
|
["action"] = "arcane_torrent",
|
|
["description"] = "Racials",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power || fight_remains < 10",
|
|
["action"] = "epidemic",
|
|
["description"] = "Generic AoE",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.pop_wounds",
|
|
["action"] = "wound_spender",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pop_wounds",
|
|
["action"] = "festering_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & ! talent.epidemic.enabled",
|
|
["action"] = "death_coil",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20230910,
|
|
["warnings"] = "The import for 'aoe_setup' required some automated changes.\nLine 1: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 2: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 6: Converted 'talent.epidemic' to 'talent.epidemic.enabled' (1x).\n\nThe import for 'garg_setup' required some automated changes.\nLine 1: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 2: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 2: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 2: Converted 'talent.unholy_assault' to 'talent.unholy_assault.enabled' (1x).\nLine 2: Converted 'talent.unholy_assault' to 'talent.unholy_assault.enabled' (1x).\nLine 2: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 4: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 7: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 8: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 8: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 10: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 10: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\n\nThe import for 'aoe_burst' required some automated changes.\nLine 1: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 1: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 4: Converted 'talent.epidemic' to 'talent.epidemic.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 3: Converted 'talent.unholy_ground' to 'talent.unholy_ground.enabled' (1x).\nLine 3: Converted 'talent.defile' to 'talent.defile.enabled' (1x).\n\nThe import for 'racials' required some automated changes.\nLine 2: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 3: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 4: Converted 'talent.festermight' to 'talent.festermight.enabled' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 7: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\n\nThe import for 'high_priority' required some automated changes.\nLine 1: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 2: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 2: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 3: Converted 'talent.epidemic' to 'talent.epidemic.enabled' (1x).\nLine 3: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 4: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 5: Converted 'talent.plaguebringer' to 'talent.plaguebringer.enabled' (1x).\nLine 5: Converted 'talent.superstrain' to 'talent.superstrain.enabled' (1x).\nLine 5: Converted 'talent.unholy_blight' to 'talent.unholy_blight.enabled' (1x).\nLine 6: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 6: Converted 'talent.morbidity' to 'talent.morbidity.enabled' (1x).\nLine 6: Converted 'talent.morbidity' to 'talent.morbidity.enabled' (1x).\nLine 7: Converted 'talent.superstrain' to 'talent.superstrain.enabled' (1x).\nLine 7: Converted 'talent.unholy_blight' to 'talent.unholy_blight.enabled' (1x).\nLine 7: Converted 'talent.unholy_blight' to 'talent.unholy_blight.enabled' (1x).\nLine 7: Converted 'talent.superstrain' to 'talent.superstrain.enabled' (1x).\nLine 7: Converted 'talent.plaguebringer' to 'talent.plaguebringer.enabled' (1x).\nLine 7: Converted 'talent.ebon_fever' to 'talent.ebon_fever.enabled' (1x).\nLine 7: Converted operations in 'target.time_to_die>dot.virulent_plague.remains&(dot.virulent_plague.refreshable||talent.superstrain.enabled&(dot.frost_fever_superstrain.refreshable||dot.blood_plague_superstrain.refreshable))&(!talent.unholy_blight.enabled||talent.unholy_blight.enabled&cooldown.unholy_blight.remains>15%((talent.superstrain.enabled*3)+(talent.plaguebringer.enabled*2)+(talent.ebon_fever.enabled*2)))' to 'target.time_to_die>dot.virulent_plague.remains&(dot.virulent_plague.refreshable||talent.superstrain.enabled&(dot.frost_fever_superstrain.refreshable||dot.blood_plague_superstrain.refreshable))&(!talent.unholy_blight.enabled||talent.unholy_blight.enabled&cooldown.unholy_blight.remains>15/((talent.superstrain.enabled*3)+(talent.plaguebringer.enabled*2)+(talent.ebon_fever.enabled*2)))'.\n\nThe import for 'aoe_cooldowns' required some automated changes.\nLine 3: Converted 'talent.festermight' to 'talent.festermight.enabled' (1x).\nLine 4: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 4: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 7: Converted 'talent.infected_claws' to 'talent.infected_claws.enabled' (1x).\nLine 7: Converted 'talent.vile_contagion' to 'talent.vile_contagion.enabled' (1x).\nLine 7: Converted 'talent.infected_claws' to 'talent.infected_claws.enabled' (1x).\n\nThe import for 'cooldowns' required some automated changes.\nLine 1: Converted 'talent.commander_of_the_dead' to 'talent.commander_of_the_dead.enabled' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 5: Converted 'talent.army_of_the_damned' to 'talent.army_of_the_damned.enabled' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 5: Converted 'talent.army_of_the_damned' to 'talent.army_of_the_damned.enabled' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 5: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 2: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 2: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 3: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 3: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (1x).\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 4: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 4: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 4: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 4: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 4: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 5: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 5: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 5: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 5: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 5: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%45=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%45=0)'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%45=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%45=0)'.\nLine 8: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 8: Converted 'trinket.1.is.irideus_fragment' to 'trinket.t1.is.irideus_fragment' (1x).\nLine 8: Converted 'trinket.1.is.vial_of_animated_blood' to 'trinket.t1.is.vial_of_animated_blood' (1x).\nLine 9: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\nLine 9: Converted 'trinket.2.is.irideus_fragment' to 'trinket.t2.is.irideus_fragment' (1x).\nLine 9: Converted 'trinket.2.is.vial_of_animated_blood' to 'trinket.t2.is.vial_of_animated_blood' (1x).\nLine 10: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 10: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 10: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 10: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 10: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 10: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 10: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 10: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 10: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 10: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 10: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 10: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 10: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs&(trinket.t2.has_cooldown&!variable.trinket_2_exclude||!trinket.t1.has_cooldown)||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs&(trinket.t2.has_cooldown&!variable.trinket_2_exclude||!trinket.t1.has_cooldown)||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 11: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 11: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 12: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 12: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 13: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 13: Converted 'talent.bursting_sores' to 'talent.bursting_sores.enabled' (1x).\nLine 14: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 14: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 14: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 14: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 14: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 14: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 14: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 14: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 14: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 14: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 15: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 15: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 15: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 15: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 15: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 15: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 15: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 15: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 15: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 15: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 16: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 16: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 16: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 16: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 16: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 16: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 16: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 16: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 16: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 17: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 17: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 17: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 17: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 17: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 17: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 17: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 17: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 17: Converted 'talent.army_of_the_dead' to 'talent.army_of_the_dead.enabled' (1x).\nLine 18: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 18: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 18: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 18: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 4: Converted 'talent.assimilation' to 'talent.assimilation.enabled' (1x).\nLine 4: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 5: Converted 'talent.improved_death_coil' to 'talent.improved_death_coil.enabled' (1x).\nLine 5: Converted 'talent.coil_of_devastation' to 'talent.coil_of_devastation.enabled' (1x).\nLine 5: Converted 'talent.coil_of_devastation' to 'talent.coil_of_devastation.enabled' (1x).\nLine 5: Converted 'talent.improved_death_coil' to 'talent.improved_death_coil.enabled' (1x).\nLine 6: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 6: Converted 'talent.summon_gargoyle' to 'talent.summon_gargoyle.enabled' (1x).\nLine 8: Converted 'talent.infected_claws' to 'talent.infected_claws.enabled' (1x).\nLine 8: Converted 'talent.festermight' to 'talent.festermight.enabled' (1x).\nLine 8: Converted operations in '!pet.gargoyle.active&talent.festermight.enabled&buff.festermight.up&(buff.festermight.remains%(5*gcd.max))>=1' to '!pet.gargoyle.active&talent.festermight.enabled&buff.festermight.up&(buff.festermight.remains/(5*gcd.max))>=1'.\nLine 9: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 9: Converted 'talent.apocalypse' to 'talent.apocalypse.enabled' (1x).\nLine 9: Converted 'talent.unholy_assault' to 'talent.unholy_assault.enabled' (1x).\nLine 10: Converted 'talent.vile_contagion' to 'talent.vile_contagion.enabled' (1x).\nLine 13: Converted 'talent.rotten_touch' to 'talent.rotten_touch.enabled' (1x).\nLine 13: Converted 'talent.rotten_touch' to 'talent.rotten_touch.enabled' (1x).\nLine 13: Converted 'talent.improved_death_coil' to 'talent.improved_death_coil.enabled' (1x).\nLine 13: Converted 'talent.coil_of_devastation' to 'talent.coil_of_devastation.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 4: Converted 'talent.epidemic' to 'talent.epidemic.enabled' (1x).\n\nImported 12 action lists.\n",
|
|
["author"] = "SimulationCraft",
|
|
["profile"] = "actions.precombat+=/raise_dead\nactions.precombat+=/army_of_the_dead,precombat_time=2\n\nactions+=/mind_freeze\nactions+=/strangulate\nactions+=/antimagic_shell,if=runic_power.deficit>40&(pet.gargoyle.active||!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>cooldown.antimagic_shell.duration)\nactions+=/antimagic_zone,if=death_knight.amz_absorb_percent>0&runic_power.deficit>70&talent.assimilation&(pet.gargoyle.active||!talent.summon_gargoyle)\n# Variables\nactions+=/variable,name=epidemic_priority,op=setif,value=1,value_else=0,condition=talent.improved_death_coil&!talent.coil_of_devastation&active_enemies>=3||talent.coil_of_devastation&active_enemies>=4||!talent.improved_death_coil&active_enemies>=2\nactions+=/variable,name=garg_setup_complete,op=setif,value=1,value_else=0,condition=active_enemies>=3||cooldown.summon_gargoyle.remains>1&(cooldown.apocalypse.remains>1||!talent.apocalypse)||!talent.summon_gargoyle||time>20\nactions+=/variable,name=apoc_timing,op=setif,value=7,value_else=2,condition=cooldown.apocalypse.remains<10&debuff.festering_wound.stack<=4&cooldown.unholy_assault.remains>10\nactions+=/variable,name=festermight_tracker,op=setif,value=debuff.festering_wound.stack>=1,value_else=debuff.festering_wound.stack>=(3-talent.infected_claws),condition=!pet.gargoyle.active&talent.festermight&buff.festermight.up&(buff.festermight.remains%(5*gcd.max))>=1\nactions+=/variable,name=pop_wounds,op=setif,value=1,value_else=0,condition=(cooldown.apocalypse.remains>variable.apoc_timing||!talent.apocalypse)&(variable.festermight_tracker||debuff.festering_wound.stack>=1&!talent.apocalypse||debuff.festering_wound.stack>=1&cooldown.unholy_assault.remains<20&talent.unholy_assault&variable.st_planning||debuff.rotten_touch.up&debuff.festering_wound.stack>=1||debuff.festering_wound.stack>4)||fight_remains<5&debuff.festering_wound.stack>=1\nactions+=/variable,name=pooling_runic_power,op=setif,value=1,value_else=0,condition=talent.vile_contagion&cooldown.vile_contagion.remains<3&runic_power<60&!variable.st_planning\nactions+=/variable,name=st_planning,op=setif,value=1,value_else=0,condition=active_enemies=1&(!raid_event.adds.exists||raid_event.adds.in>15)\nactions+=/variable,name=adds_remain,op=setif,value=1,value_else=0,condition=active_enemies>=2&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.remains>6)\nactions+=/variable,name=spend_rp,op=setif,value=1,value_else=0,condition=(!talent.rotten_touch||talent.rotten_touch&!debuff.rotten_touch.up||runic_power.deficit<15)&((talent.improved_death_coil&(active_enemies=2||talent.coil_of_devastation)||rune<3||pet.gargoyle.active||buff.sudden_doom.react||cooldown.apocalypse.remains<10&debuff.festering_wound.stack>3||!variable.pop_wounds&debuff.festering_wound.stack>=4))\n# Call Action Lists\nactions+=/call_action_list,name=high_priority\nactions+=/call_action_list,name=trinkets\nactions+=/run_action_list,name=garg_setup,strict=1,if=variable.garg_setup_complete=0\nactions+=/call_action_list,name=cooldowns,strict=1,if=variable.st_planning\nactions+=/call_action_list,name=aoe_cooldowns,strict=1,if=variable.adds_remain\nactions+=/call_action_list,name=racials\nactions+=/call_action_list,name=aoe_setup,if=variable.adds_remain&cooldown.any_dnd.remains<10&!death_and_decay.ticking\nactions+=/call_action_list,name=aoe_burst,strict=1,if=active_enemies>=4&death_and_decay.ticking\nactions+=/call_action_list,name=aoe,if=active_enemies>=4&(cooldown.any_dnd.remains>10&!death_and_decay.ticking||!variable.adds_remain)\nactions+=/call_action_list,name=st,strict=1,if=active_enemies<=3\n\n# Generic AoE\nactions.aoe+=/epidemic,if=!variable.pooling_runic_power||fight_remains<10\nactions.aoe+=/wound_spender,cycle_targets=1,if=variable.pop_wounds\nactions.aoe+=/festering_strike,cycle_targets=1,if=!variable.pop_wounds\nactions.aoe+=/death_coil,if=!variable.pooling_runic_power&!talent.epidemic\n\n# AoE Burst\nactions.aoe_burst+=/epidemic,if=(!talent.bursting_sores||rune<1||talent.bursting_sores&debuff.festering_wound.stack=0)&!variable.pooling_runic_power&(active_enemies>=6||runic_power.deficit<30||buff.festermight.stack=20)\nactions.aoe_burst+=/wound_spender,cycle_targets=1,if=debuff.festering_wound.stack>=1\nactions.aoe_burst+=/epidemic,if=!variable.pooling_runic_power||fight_remains<10\nactions.aoe_burst+=/death_coil,if=!variable.pooling_runic_power&!talent.epidemic\nactions.aoe_burst+=/wound_spender\n\n# AoE Cooldowns\nactions.aoe_cooldowns+=/vile_contagion,cycle_targets=1,if=debuff.festering_wound.stack>=4&cooldown.any_dnd.remains<3\nactions.aoe_cooldowns+=/summon_gargoyle\nactions.aoe_cooldowns+=/abomination_limb,if=rune<2||buff.festermight.stack>10||!talent.festermight||buff.festermight.up&buff.festermight.remains<12\nactions.aoe_cooldowns+=/apocalypse,cycle_targets=1,if=talent.bursting_sores&debuff.festering_wound.up&(!death_and_decay.ticking&cooldown.death_and_decay.remains&rune<3||death_and_decay.ticking&rune=0)||!talent.bursting_sores&debuff.festering_wound.stack>=4\nactions.aoe_cooldowns+=/unholy_assault,cycle_targets=1,if=debuff.festering_wound.stack<=2||buff.dark_transformation.up\nactions.aoe_cooldowns+=/raise_dead,if=!pet.ghoul.active\nactions.aoe_cooldowns+=/dark_transformation,if=(cooldown.any_dnd.remains<10&talent.infected_claws&((cooldown.vile_contagion.remains||raid_event.adds.exists&raid_event.adds.in>10)&death_knight.fwounded_targets<active_enemies||!talent.vile_contagion)&(raid_event.adds.remains>5||!raid_event.adds.exists)||!talent.infected_claws)\nactions.aoe_cooldowns+=/empower_rune_weapon,if=buff.dark_transformation.up\nactions.aoe_cooldowns+=/sacrificial_pact,if=!buff.dark_transformation.up&cooldown.dark_transformation.remains>6||boss&fight_remains<gcd\n\n# AoE Setup\nactions.aoe_setup+=/any_dnd,if=(!talent.bursting_sores||death_knight.fwounded_targets>=cycle_enemies||death_knight.fwounded_targets>=8||raid_event.adds.exists&raid_event.adds.remains<=11&raid_event.adds.remains>5)\nactions.aoe_setup+=/festering_strike,cycle_targets=1,if=(debuff.festering_wound.down||death_knight.fwounded_targets<cycle_enemies)&talent.bursting_sores\nactions.aoe_setup+=/epidemic,if=!variable.pooling_runic_power||fight_remains<10\nactions.aoe_setup+=/festering_strike,cycle_targets=1,if=(debuff.festering_wound.down||death_knight.fwounded_targets<cycle_enemies)\nactions.aoe_setup+=/festering_strike,cycle_targets=1,if=cooldown.apocalypse.remains<variable.apoc_timing&debuff.festering_wound.stack<4\nactions.aoe_setup+=/death_coil,if=!variable.pooling_runic_power&!talent.epidemic\n\n# ST/Cleave Cooldowns\nactions.cooldowns+=/summon_gargoyle,if=buff.commander_of_the_dead.up||!talent.commander_of_the_dead\nactions.cooldowns+=/raise_dead,if=!pet.ghoul.active\nactions.cooldowns+=/dark_transformation,if=cooldown.apocalypse.remains<5\nactions.cooldowns+=/apocalypse,cycle_targets=1,if=variable.st_planning&debuff.festering_wound.stack>=4\nactions.cooldowns+=/empower_rune_weapon,if=variable.st_planning&(pet.gargoyle.active&pet.gargoyle.remains<=23||!talent.summon_gargoyle&talent.army_of_the_damned&pet.army_ghoul.active&pet.apoc_ghoul.active||!talent.summon_gargoyle&!talent.army_of_the_damned&buff.dark_transformation.up||!talent.summon_gargoyle&!talent.summon_gargoyle&buff.dark_transformation.up)||boss&fight_remains<=21\nactions.cooldowns+=/abomination_limb,if=rune<3&variable.st_planning\nactions.cooldowns+=/unholy_assault,cycle_targets=1,if=variable.st_planning\nactions.cooldowns+=/soul_reaper,if=active_enemies=1&target.time_to_pct_35<5&target.time_to_die>5\nactions.cooldowns+=/soul_reaper,cycle_targets=1,if=target.time_to_pct_35<5&active_enemies>=2&target.time_to_die>(dot.soul_reaper.remains+5)\n\n# Garg Setup\nactions.garg_setup+=/apocalypse,if=debuff.festering_wound.stack>=4&(buff.commander_of_the_dead.up&pet.gargoyle.remains<23||!talent.commander_of_the_dead)\nactions.garg_setup+=/army_of_the_dead,if=talent.commander_of_the_dead&(cooldown.dark_transformation.remains<3||buff.commander_of_the_dead.up)||!talent.commander_of_the_dead&talent.unholy_assault&cooldown.unholy_assault.remains<10||!talent.unholy_assault&!talent.commander_of_the_dead\nactions.garg_setup+=/soul_reaper,if=active_enemies=1&target.time_to_pct_35<5&target.time_to_die>5\nactions.garg_setup+=/summon_gargoyle,use_off_gcd=1,if=buff.commander_of_the_dead.up||!talent.commander_of_the_dead&runic_power>=40\nactions.garg_setup+=/empower_rune_weapon,if=pet.gargoyle.active&pet.gargoyle.remains<=23\nactions.garg_setup+=/unholy_assault,if=pet.gargoyle.active&pet.gargoyle.remains<=23\nactions.garg_setup+=/potion,if=(pet.gargoyle.remains<30&pet.gargoyle.active)||(!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>60||cooldown.summon_gargoyle.ready)&(buff.dark_transformation.up&buff.dark_transformation.remains<30||pet.army_ghoul.active&pet.army_ghoul.remains<=30||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=30)\nactions.garg_setup+=/dark_transformation,if=talent.commander_of_the_dead&runic_power>=40||!talent.commander_of_the_dead\nactions.garg_setup+=/any_dnd,if=!death_and_decay.ticking&debuff.festering_wound.stack>0\nactions.garg_setup+=/festering_strike,if=debuff.festering_wound.stack=0||talent.apocalypse&cooldown.apocalypse.remains<3*gcd.max&debuff.festering_wound.stack<4||runic_power<40||!talent.apocalypse&!pet.gargoyle.active\nactions.garg_setup+=/death_coil,if=rune<=1\n\n# Priority Actions\nactions.high_priority+=/potion,if=pet.gargoyle.remains<=30||(!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>60||cooldown.summon_gargoyle.ready)&(buff.dark_transformation.up&30>=buff.dark_transformation.remains||pet.army_ghoul.active&pet.army_ghoul.remains<=30||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=30)||boss&fight_remains<=30\nactions.high_priority+=/army_of_the_dead,if=talent.summon_gargoyle&cooldown.summon_gargoyle.remains<2||!talent.summon_gargoyle||boss&fight_remains<35\nactions.high_priority+=/death_coil,if=(active_enemies<=3||!talent.epidemic)&(pet.gargoyle.active&talent.commander_of_the_dead&buff.commander_of_the_dead.up&cooldown.apocalypse.remains<5&buff.commander_of_the_dead.remains>27||debuff.death_rot.up&debuff.death_rot.remains<gcd.max)\nactions.high_priority+=/epidemic,if=active_enemies>=4&(talent.commander_of_the_dead&buff.commander_of_the_dead.up&cooldown.apocalypse.remains<5||debuff.death_rot.up&debuff.death_rot.remains<gcd.max)\nactions.high_priority+=/wound_spender,if=debuff.festering_wound.up&(cooldown.apocalypse.remains>variable.apoc_timing+3||active_enemies>=3)&talent.plaguebringer&(talent.superstrain||talent.unholy_blight)&buff.plaguebringer.remains<gcd\nactions.high_priority+=/unholy_blight,if=variable.st_planning&((!talent.apocalypse||cooldown.apocalypse.remains)&talent.morbidity||!talent.morbidity)||variable.adds_remain||boss&fight_remains<21\nactions.high_priority+=/outbreak,cycle_targets=1,if=target.time_to_die>dot.virulent_plague.remains&(dot.virulent_plague.refreshable||talent.superstrain&(dot.frost_fever_superstrain.refreshable||dot.blood_plague_superstrain.refreshable))&(!talent.unholy_blight||talent.unholy_blight&cooldown.unholy_blight.remains>15%((talent.superstrain*3)+(talent.plaguebringer*2)+(talent.ebon_fever*2)))\n\n# Racials\nactions.racials+=/arcane_torrent,if=runic_power.deficit>20&(cooldown.summon_gargoyle.remains<gcd.max||!talent.summon_gargoyle.enabled||pet.gargoyle.active&rune<2&debuff.festering_wound.stack<1)\nactions.racials+=/blood_fury,if=(buff.blood_fury.duration+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.racials+=/berserking,if=(buff.berserking.duration+3>=pet.gargoyle.remains&pet.gargoyle.active)||(!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>60)&(pet.army_ghoul.active&pet.army_ghoul.remains<=buff.berserking.duration+3||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=buff.berserking.duration+3||active_enemies>=2&death_and_decay.ticking)||boss&fight_remains<=buff.berserking.duration+3\nactions.racials+=/lights_judgment,if=buff.unholy_strength.up&(!talent.festermight||buff.festermight.remains<target.time_to_die||buff.unholy_strength.remains<target.time_to_die)\nactions.racials+=/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.racials+=/arcane_pulse,if=active_enemies>=2||(rune.deficit>=5&runic_power.deficit>=60)\nactions.racials+=/fireblood,if=(buff.fireblood.duration+3>=pet.gargoyle.remains&pet.gargoyle.active)||(!talent.summon_gargoyle||cooldown.summon_gargoyle.remains>60)&(pet.army_ghoul.active&pet.army_ghoul.remains<=buff.fireblood.duration+3||pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=buff.fireblood.duration+3||active_enemies>=2&death_and_decay.ticking)||boss&fight_remains<=buff.fireblood.duration+3\nactions.racials+=/bag_of_tricks,if=active_enemies=1&(buff.unholy_strength.up||boss&fight_remains<5)\n\n# Single Target\nactions.st+=/death_coil,if=!variable.epidemic_priority&(!variable.pooling_runic_power&variable.spend_rp||boss&fight_remains<10)\nactions.st+=/epidemic,if=variable.epidemic_priority&(!variable.pooling_runic_power&variable.spend_rp||boss&fight_remains<10)\nactions.st+=/any_dnd,if=!death_and_decay.ticking&(active_enemies>=2||talent.unholy_ground&(pet.apoc_ghoul.active&pet.apoc_ghoul.remains>=13||pet.gargoyle.active&pet.gargoyle.remains>8||pet.army_ghoul.active&pet.army_ghoul.remains>8||!variable.pop_wounds&debuff.festering_wound.stack>=4)||talent.defile&(pet.gargoyle.active||pet.apoc_ghoul.active||pet.army_ghoul.active||buff.dark_transformation.up))&(death_knight.fwounded_targets>=cycle_enemies||active_enemies=1)\nactions.st+=/wound_spender,cycle_targets=1,if=variable.pop_wounds||active_enemies>=2&death_and_decay.ticking\nactions.st+=/festering_strike,cycle_targets=1,if=!variable.pop_wounds&debuff.festering_wound.stack<4\nactions.st+=/death_coil\nactions.st+=/wound_spender,cycle_targets=1,if=!variable.pop_wounds&debuff.festering_wound.stack>=4\n\n# Trinkets\nactions.trinkets=use_item,name=gavel_of_the_first_arbiter\nactions.trinkets+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell||trinket.1.is.whispering_incarnate_icon\nactions.trinkets+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell||trinket.2.is.whispering_incarnate_icon\nactions.trinkets+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_buff.strength||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit)&!variable.trinket_1_exclude\nactions.trinkets+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_buff.strength||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit)&!variable.trinket_2_exclude\nactions.trinkets+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%45=0)\nactions.trinkets+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%45=0)\nactions.trinkets+=/variable,name=trinket_1_manual,value=trinket.1.is.algethar_puzzle_box||trinket.1.is.irideus_fragment||trinket.1.is.vial_of_animated_blood\nactions.trinkets+=/variable,name=trinket_2_manual,value=trinket.2.is.algethar_puzzle_box||trinket.2.is.irideus_fragment||trinket.2.is.vial_of_animated_blood\nactions.trinkets+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs&(trinket.2.has_cooldown&!variable.trinket_2_exclude||!trinket.1.has_cooldown)||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync))\nactions.trinkets+=/use_item,use_off_gcd=1,name=algethar_puzzle_box,if=cooldown.summon_gargoyle.remains<5&rune<=4||!talent.summon_gargoyle&pet.army_ghoul.active||active_enemies>3&variable.adds_remain&(buff.dark_transformation.up||talent.bursting_sores&cooldown.any_dnd.remains<10&!death_and_decay.ticking)\nactions.trinkets+=/use_item,use_off_gcd=1,name=irideus_fragment,if=(pet.gargoyle.active&pet.gargoyle.remains<16||!talent.summon_gargoyle&pet.army_ghoul.active&pet.army_ghoul.remains<16)||active_enemies>3&variable.adds_remain&(buff.dark_transformation.up||talent.bursting_sores&death_and_decay.ticking)\nactions.trinkets+=/use_item,use_off_gcd=1,name=vial_of_animated_blood,if=pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=18||!talent.apocalypse&buff.dark_transformation.up||active_enemies>3&variable.adds_remain&(buff.dark_transformation.up||talent.bursting_sores&death_and_decay.ticking)\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_manual&variable.trinket_1_buffs&((!talent.summon_gargoyle&((!talent.army_of_the_dead||cooldown.army_of_the_dead.remains_expected>60||death_knight.disable_aotd)&(pet.apoc_ghoul.active||(!talent.apocalypse||active_enemies>=2)&buff.dark_transformation.up)||pet.army_ghoul.active)||talent.summon_gargoyle&pet.gargoyle.active||cooldown.summon_gargoyle.remains>80)&(pet.apoc_ghoul.active||(!talent.apocalypse||active_enemies>=2)&buff.dark_transformation.up)&(variable.trinket_2_exclude||variable.trinket_priority=1||trinket.2.cooldown.remains||!trinket.2.has_cooldown))||boss&trinket.1.proc.any_dps.duration>=fight_remains\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_manual&variable.trinket_2_buffs&((!talent.summon_gargoyle&((!talent.army_of_the_dead||cooldown.army_of_the_dead.remains_expected>60||death_knight.disable_aotd)&(pet.apoc_ghoul.active||(!talent.apocalypse||active_enemies>=2)&buff.dark_transformation.up)||pet.army_ghoul.active)||talent.summon_gargoyle&pet.gargoyle.active||cooldown.summon_gargoyle.remains>80)&(pet.apoc_ghoul.active||(!talent.apocalypse||active_enemies>=2)&buff.dark_transformation.up)&(variable.trinket_1_exclude||variable.trinket_priority=2||trinket.1.cooldown.remains||!trinket.1.has_cooldown))||boss&trinket.2.proc.any_dps.duration>=fight_remains\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_manual&!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!trinket.2.has_cooldown||!variable.trinket_2_buffs||!talent.summon_gargoyle&!talent.army_of_the_dead||!talent.summon_gargoyle&talent.army_of_the_dead&cooldown.army_of_the_dead.remains_expected>20||!talent.summon_gargoyle&!talent.army_of_the_dead&cooldown.dark_transformation.remains>20||cooldown.summon_gargoyle.remains>20&!pet.gargoyle.active)||boss&fight_remains<15\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_manual&!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!trinket.1.has_cooldown||!variable.trinket_1_buffs||!talent.summon_gargoyle&!talent.army_of_the_dead||!talent.summon_gargoyle&talent.army_of_the_dead&cooldown.army_of_the_dead.remains_expected>20||!talent.summon_gargoyle&!talent.army_of_the_dead&cooldown.dark_transformation.remains>20||cooldown.summon_gargoyle.remains>20&!pet.gargoyle.active)||boss&fight_remains<15\nactions.trinkets+=/use_items,use_off_gcd=1,if=(!variable.trinket_1_buffs||trinket.1.cooldown.remains)&(!variable.trinket_2_buffs||trinket.2.cooldown.remains)",
|
|
},
|
|
["Frost DK"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20230921,
|
|
["author"] = "SimC",
|
|
["desc"] = "2023-09-21: Tier 31 prep.\n\n2023-09-10: Minor change for Gathering Storm.\n\n2023-07-12: Patch 10.1.5 minor update.\n\n2023-06-24: Resynced with SimC.\n\n2023-05-28: Minor priority update.\n\n2023-05-24: Update Obliterate usage with T30.\n\n2023-05-21: Minor updates.\n\n2023-04-30: Trinket logic updated from SimC.\n\n2023-03-27: Minor SimC updates.\n\n2023-03-25: Updates (mainly to Obliteration).\n\n2023-03-21: Fix Breath of Sindragosa.\n\n2023-03-13: Updates for 10.0.7.\n\n2023-02-20: Additional adjustments for leveling and/or taking Obliteration without ERW.\n\n2023-02-19: Adjusted variable.pooling_runes such that you are not pooling when you are already at max runes. It is unclear why this check isn't needed in SimulationCraft, but is required in-game.",
|
|
["lists"] = {
|
|
["single_target"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.rw_buffs || variable.adds_remain",
|
|
["action"] = "remorseless_winter",
|
|
["description"] = "Single Target Rotation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.stack < 2 & runic_power.deficit < 20 & ! variable.two_hand_check",
|
|
["action"] = "frost_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rime.up & set_bonus.tier30_2pc & buff.killing_machine.stack < 2",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.up & variable.frostscythe_priority",
|
|
["action"] = "frostscythe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.up",
|
|
["action"] = "obliterate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rime.up & talent.icebreaker.rank = 2",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune < 4 & runic_power.deficit > 25 & talent.obliteration.enabled & talent.breath_of_sindragosa.enabled",
|
|
["action"] = "horn_of_winter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & ( variable.rp_buffs || runic_power.deficit < 25 || debuff.razorice.stack = 5 & talent.shattering_blade.enabled )",
|
|
["action"] = "frost_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.rime_buffs",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & ! death_knight.runeforge.razorice & ( debuff.razorice.stack < 5 || debuff.razorice.remains < gcd.max * 3 )",
|
|
["action"] = "glacial_advance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runes",
|
|
["action"] = "obliterate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune < 4 & runic_power.deficit > 25 & ( ! talent.breath_of_sindragosa.enabled || cooldown.breath_of_sindragosa.remains > cooldown.horn_of_winter.duration )",
|
|
["action"] = "horn_of_winter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit > 20",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power",
|
|
["action"] = "frost_strike",
|
|
},
|
|
},
|
|
["cold_heart"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < gcd.max & ( rune < 2 || ! buff.killing_machine.up & ( ! variable.two_hand_check & buff.cold_heart.stack >= 4 || variable.two_hand_check & buff.cold_heart.stack > 8 ) || buff.killing_machine.up & ( ! variable.two_hand_check & buff.cold_heart.stack > 8 || variable.two_hand_check & buff.cold_heart.stack > 10 ) )",
|
|
["action"] = "chains_of_ice",
|
|
["description"] = "Cold Heart",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.obliteration.enabled & buff.pillar_of_frost.up & buff.cold_heart.stack >= 10 & ( buff.pillar_of_frost.remains < gcd.max * ( 1 + ( talent.frostwyrms_fury.enabled & cooldown.frostwyrms_fury.ready ) ) || buff.unholy_strength.up & buff.unholy_strength.remains < gcd.max )",
|
|
["action"] = "chains_of_ice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.obliteration.enabled & death_knight.runeforge.fallen_crusader & ! buff.pillar_of_frost.up & cooldown.pillar_of_frost.remains_expected > 15 & ( buff.cold_heart.stack >= 10 & buff.unholy_strength.up || buff.cold_heart.stack >= 13 )",
|
|
["action"] = "chains_of_ice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.obliteration.enabled & ! death_knight.runeforge.fallen_crusader & buff.cold_heart.stack >= 10 & ! buff.pillar_of_frost.up & cooldown.pillar_of_frost.remains_expected > 20",
|
|
["action"] = "chains_of_ice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.obliteration.enabled & ! buff.pillar_of_frost.up & ( buff.cold_heart.stack >= 14 & ( buff.unholy_strength.up || buff.chaos_bane.up ) || buff.cold_heart.stack >= 19 || cooldown.pillar_of_frost.remains_expected < 3 & buff.cold_heart.stack >= 14 )",
|
|
["action"] = "chains_of_ice",
|
|
},
|
|
},
|
|
["obliteration"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 3 || talent.gathering_storm.enabled",
|
|
["action"] = "remorseless_winter",
|
|
["description"] = "Obliteration Active Rotation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.stack < 2 & buff.pillar_of_frost.remains < gcd.max & buff.rime.up",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.stack < 2 & buff.pillar_of_frost.remains < gcd.max & ! death_and_decay.ticking",
|
|
["action"] = "frost_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.stack < 2 & buff.pillar_of_frost.remains < gcd.max & ! death_and_decay.ticking",
|
|
["action"] = "glacial_advance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.up & ! variable.frostscythe_priority",
|
|
["action"] = "obliterate",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.up & variable.frostscythe_priority",
|
|
["action"] = "frostscythe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.killing_machine.up & ( ! dot.frost_fever.ticking || buff.rime.up & set_bonus.tier30_2pc & ! variable.rp_buffs )",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.killing_machine.up & ( ! death_knight.runeforge.razorice & ( ! talent.avalanche.enabled || debuff.razorice.stack < 5 || debuff.razorice.remains < gcd.max * 3 ) || ( variable.rp_buffs & active_enemies > 1 ) )",
|
|
["action"] = "glacial_advance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.killing_machine.up & ( rune < 2 || variable.rp_buffs || debuff.razorice.stack = 5 & talent.shattering_blade.enabled ) & ! variable.pooling_runic_power & ( ! talent.glacial_advance.enabled || active_enemies = 1 )",
|
|
["action"] = "frost_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rime.up & ! buff.killing_machine.up",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & variable.rp_buffs & ! buff.killing_machine.up & active_enemies >= 2",
|
|
["action"] = "glacial_advance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.killing_machine.up & ! variable.pooling_runic_power & ( ! talent.glacial_advance.enabled || active_enemies = 1 )",
|
|
["action"] = "frost_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.killing_machine.up & runic_power < 25",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune < 1 & runic_power < 25",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & active_enemies >= 2",
|
|
["action"] = "glacial_advance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & ( ! talent.glacial_advance.enabled || active_enemies = 1 )",
|
|
["action"] = "frost_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rime.up",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "obliterate",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["breath"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.rw_buffs || variable.adds_remain",
|
|
["action"] = "remorseless_winter",
|
|
["description"] = "Breath Active Rotation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.rime_buffs & runic_power > ( 45 - talent.rage_of_the_frozen_champion.enabled * 8 )",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune < 2 & runic_power.deficit > 25",
|
|
["action"] = "horn_of_winter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.up & ! variable.frostscythe_priority",
|
|
["action"] = "obliterate",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.up & variable.frostscythe_priority",
|
|
["action"] = "frostscythe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.frostscythe_priority & runic_power > 45",
|
|
["action"] = "frostscythe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit > 40 || buff.pillar_of_frost.up & runic_power.deficit > 17",
|
|
["action"] = "obliterate",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power < 36 & rune.time_to_2 > runic_power / 18",
|
|
["action"] = "death_and_decay",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power < 36 & rune.time_to_2 > runic_power / 18",
|
|
["action"] = "remorseless_winter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power < 36 & rune.time_to_2 > runic_power / 18",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit > 25",
|
|
["action"] = "obliterate",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rime.up",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power < 60",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "AoE Action List",
|
|
["action"] = "remorseless_winter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rime.up || ! dot.frost_fever.ticking",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & variable.rp_buffs",
|
|
["action"] = "glacial_advance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.up & talent.cleaving_strikes.enabled & death_and_decay.ticking & ! variable.frostscythe_priority",
|
|
["action"] = "obliterate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power",
|
|
["action"] = "glacial_advance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.frostscythe_priority",
|
|
["action"] = "frostscythe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.frostscythe_priority",
|
|
["action"] = "obliterate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & ! talent.glacial_advance.enabled",
|
|
["action"] = "frost_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune < 2 & runic_power.deficit > 25",
|
|
["action"] = "horn_of_winter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit > 25",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "mind_freeze",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "strangulate",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit > 40",
|
|
["action"] = "antimagic_shell",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "death_knight.amz_absorb_percent > 0 & runic_power.deficit > 70 & talent.assimilation.enabled & ( buff.breath_of_sindragosa.up & cooldown.empower_rune_weapon.charges < 2 || ! talent.breath_of_sindragosa.enabled & ! buff.pillar_of_frost.up )",
|
|
["action"] = "antimagic_zone",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies = 1 & ( raid_event.adds.in > 15 || ! raid_event.adds.exists )",
|
|
["var_name"] = "st_planning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies >= 2 & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.remains > 5 )",
|
|
["var_name"] = "adds_remain",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.rime.up & ( talent.rage_of_the_frozen_champion.enabled || talent.avalanche.enabled || talent.icebreaker.enabled )",
|
|
["var_name"] = "rime_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.unleashed_frenzy.enabled & ( buff.unleashed_frenzy.remains < gcd.max * 3 || buff.unleashed_frenzy.stack < 3 ) || talent.icy_talons.enabled & ( buff.icy_talons.remains < gcd.max * 3 || buff.icy_talons.stack < 3 )",
|
|
["var_name"] = "rp_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.pillar_of_frost.enabled & buff.pillar_of_frost.up & ( talent.obliteration.enabled & buff.pillar_of_frost.remains < 6 || ! talent.obliteration.enabled ) || ! talent.pillar_of_frost.enabled & buff.empower_rune_weapon.up || ! talent.pillar_of_frost.enabled & ! talent.empower_rune_weapon.enabled || active_enemies >= 2 & buff.pillar_of_frost.up",
|
|
["var_name"] = "cooldown_check",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.frostscythe.enabled & ( buff.killing_machine.up || active_enemies >= 3 ) & ( ! talent.improved_obliterate.enabled & ! talent.frigid_executioner.enabled & ! talent.frostreaper.enabled & ! talent.might_of_the_frozen_wastes.enabled || ! talent.cleaving_strikes.enabled || talent.cleaving_strikes.enabled & ( active_enemies > 6 || ! death_and_decay.ticking & active_enemies > 3 ) )",
|
|
["var_name"] = "frostscythe_priority",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Formulaic approach to determine the time before these abilities come off cooldown that the simulation should star to pool resources. Capped at 15s in the run_action_list call.",
|
|
["value"] = "( ( cooldown.pillar_of_frost.remains_expected + 1 ) / gcd.max ) / ( ( rune + 3 ) * ( runic_power + 5 ) ) * 100",
|
|
["var_name"] = "oblit_pooling_time",
|
|
["action"] = "variable",
|
|
["value_else"] = "3",
|
|
["criteria"] = "runic_power < 35 & rune < 2 & cooldown.pillar_of_frost.remains_expected < 10",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "breath_pooling_time",
|
|
["value"] = "( ( cooldown.breath_of_sindragosa.remains + 1 ) / gcd.max ) / ( ( rune + 1 ) * ( runic_power + 20 ) ) * 100",
|
|
["value_else"] = "3",
|
|
["criteria"] = "runic_power.deficit > 10 & cooldown.breath_of_sindragosa.remains < 10",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "rune < 4 & talent.obliteration.enabled & cooldown.pillar_of_frost.remains_expected < variable.oblit_pooling_time",
|
|
["var_name"] = "pooling_runes",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.breath_of_sindragosa.enabled & cooldown.breath_of_sindragosa.remains < variable.breath_pooling_time || talent.obliteration.enabled & runic_power < 35 & cooldown.pillar_of_frost.remains_expected < variable.oblit_pooling_time",
|
|
["var_name"] = "pooling_runic_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.frost_fever.ticking & active_enemies >= 2 & ( ! talent.obliteration.enabled || talent.obliteration.enabled & ( ! cooldown.pillar_of_frost.ready || buff.pillar_of_frost.up & ! buff.killing_machine.up ) )",
|
|
["action"] = "howling_blast",
|
|
["description"] = "Maintain Frost Fever, Icy Talons and Unleashed Frenzy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 2 & variable.rp_buffs & talent.obliteration.enabled & talent.breath_of_sindragosa.enabled & ! buff.pillar_of_frost.up & ! buff.breath_of_sindragosa.up & cooldown.breath_of_sindragosa.remains > variable.breath_pooling_time",
|
|
["action"] = "glacial_advance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 2 & variable.rp_buffs & talent.breath_of_sindragosa.enabled & ! buff.breath_of_sindragosa.up & cooldown.breath_of_sindragosa.remains > variable.breath_pooling_time",
|
|
["action"] = "glacial_advance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 2 & variable.rp_buffs & ! talent.breath_of_sindragosa.enabled & talent.obliteration.enabled & ! buff.pillar_of_frost.up",
|
|
["action"] = "glacial_advance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & variable.rp_buffs & talent.obliteration.enabled & talent.breath_of_sindragosa.enabled & ! buff.pillar_of_frost.up & ! buff.breath_of_sindragosa.up & cooldown.breath_of_sindragosa.remains > variable.breath_pooling_time",
|
|
["action"] = "frost_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & variable.rp_buffs & talent.breath_of_sindragosa.enabled & ! buff.breath_of_sindragosa.up & cooldown.breath_of_sindragosa.remains > variable.breath_pooling_time",
|
|
["action"] = "frost_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & variable.rp_buffs & ! talent.breath_of_sindragosa.enabled & talent.obliteration.enabled & ! buff.pillar_of_frost.up",
|
|
["action"] = "frost_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.breath_of_sindragosa.enabled & ! talent.obliteration.enabled & variable.rw_buffs",
|
|
["action"] = "remorseless_winter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.obliteration.enabled & active_enemies >= 3 & variable.adds_remain",
|
|
["action"] = "remorseless_winter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Choose Action list to run",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "racials",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "talent.cold_heart.enabled & ( ! buff.killing_machine.up || talent.breath_of_sindragosa.enabled ) & ( ( debuff.razorice.stack = 5 || ! death_knight.runeforge.razorice & ! talent.glacial_advance.enabled & ! talent.avalanche.enabled ) || boss & fight_remains <= gcd.max )",
|
|
["list_name"] = "cold_heart",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "buff.breath_of_sindragosa.up & talent.obliteration.enabled & buff.pillar_of_frost.up",
|
|
["list_name"] = "breath_oblit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "buff.breath_of_sindragosa.up & ( ! talent.obliteration.enabled || talent.obliteration.enabled & ! buff.pillar_of_frost.up )",
|
|
["list_name"] = "breath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "talent.obliteration.enabled & buff.pillar_of_frost.up & ! buff.breath_of_sindragosa.up",
|
|
["list_name"] = "obliteration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies >= 2",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies = 1",
|
|
["list_name"] = "single_target",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.ruby_whelp_shell || trinket.t1.is.whispering_incarnate_icon",
|
|
["var_name"] = "trinket_1_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.ruby_whelp_shell || trinket.t2.is.whispering_incarnate_icon",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Evaluates a trinkets cooldown, divided by pillar of frost, empower rune weapon, or breath of sindragosa's cooldown. If it's value has no remainder return 1, else return 0.5.",
|
|
["value"] = "1",
|
|
["var_name"] = "trinket_1_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "trinket.t1.has_use_buff & ( talent.pillar_of_frost.enabled & ! talent.breath_of_sindragosa.enabled & ( trinket.t1.cooldown.duration % cooldown.pillar_of_frost.duration = 0 ) || talent.breath_of_sindragosa.enabled & ( cooldown.breath_of_sindragosa.duration % trinket.t1.cooldown.duration = 0 ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["value"] = "1",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "trinket.t2.has_use_buff & ( talent.pillar_of_frost.enabled & ! talent.breath_of_sindragosa.enabled & ( trinket.t2.cooldown.duration % cooldown.pillar_of_frost.duration = 0 ) || talent.breath_of_sindragosa.enabled & ( cooldown.breath_of_sindragosa.duration % trinket.t2.cooldown.duration = 0 ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff & ! variable.trinket_1_exclude )",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff & ! variable.trinket_2_exclude )",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["value"] = "2",
|
|
["value_else"] = "1",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / trinket.t2.buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_1_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_2_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.gathering_storm.enabled || talent.everfrost.enabled",
|
|
["var_name"] = "rw_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "main_hand.2h",
|
|
["var_name"] = "two_hand_check",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "erw_pooling_time",
|
|
["value"] = "25",
|
|
["value_else"] = "45",
|
|
["criteria"] = "death_knight.ams_absorb_percent > 0.59",
|
|
},
|
|
},
|
|
["racials"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cooldown_check",
|
|
["action"] = "blood_fury",
|
|
["description"] = "Racial Abilities",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cooldown_check",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cooldown_check",
|
|
["action"] = "arcane_pulse",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cooldown_check",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cooldown_check",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cooldown_check",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.obliteration.enabled & ! buff.pillar_of_frost.up & buff.unholy_strength.up",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.obliteration.enabled & buff.pillar_of_frost.up & ( buff.unholy_strength.up & buff.unholy_strength.remains < gcd.max * 3 || buff.pillar_of_frost.remains < gcd.max * 3 )",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "algethar_puzzle_box",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! buff.pillar_of_frost.up & cooldown.pillar_of_frost.remains < 2 & ( ! talent.breath_of_sindragosa.enabled || runic_power > 60 & ( buff.breath_of_sindragosa.up || cooldown.breath_of_sindragosa.remains < 2 ) )",
|
|
["action"] = "algethar_puzzle_box",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["description"] = "The trinket with the highest estimated value, will be used first and paired with Pillar of Frost.",
|
|
["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ( talent.obliteration.enabled & cooldown.empower_rune_weapon.charges < 1 || ! talent.obliteration.enabled ) & ( ! buff.pillar_of_frost.up & trinket.t1.cast_time > 0 || ! trinket.t1.cast_time > 0 ) & ( buff.breath_of_sindragosa.up || buff.pillar_of_frost.up ) & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || boss & trinket.t1.buff_duration >= fight_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( talent.obliteration.enabled & cooldown.empower_rune_weapon.charges < 1 || ! talent.obliteration.enabled ) & ( ! buff.pillar_of_frost.up & trinket.t2.cast_time > 0 || ! trinket.t2.cast_time > 0 ) & ( buff.breath_of_sindragosa.up || buff.pillar_of_frost.up ) & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || boss & trinket.t2.buff_duration >= fight_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["description"] = "If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.",
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || ( trinket.t1.cast_time > 0 & ! buff.pillar_of_frost.up || ! trinket.t1.cast_time > 0 ) || talent.pillar_of_frost.enabled & cooldown.pillar_of_frost.remains_expected > 20 || ! talent.pillar_of_frost.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) || ( trinket.t2.cast_time > 0 & ! buff.pillar_of_frost.up || ! trinket.t2.cast_time > 0 ) || talent.pillar_of_frost.enabled & cooldown.pillar_of_frost.remains_expected > 20 || ! talent.pillar_of_frost.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "( ! variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( ! variable.trinket_2_buffs || trinket.t2.cooldown.remains )",
|
|
["action"] = "use_items",
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cooldown_check || boss & fight_remains < 25",
|
|
["action"] = "potion",
|
|
["description"] = "Cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.obliteration.enabled & ! buff.empower_rune_weapon.up & rune < 6 & ( cooldown.pillar_of_frost.remains_expected < 7 & ( variable.adds_remain || variable.st_planning ) || buff.pillar_of_frost.up ) || boss & fight_remains < 20",
|
|
["action"] = "empower_rune_weapon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "buff.breath_of_sindragosa.up & ! buff.empower_rune_weapon.up & ( time < 10 & buff.bloodlust.up ) || ( runic_power < 70 & rune < 3 & ( cooldown.breath_of_sindragosa.remains > variable.erw_pooling_time || full_recharge_time < 10 ) )",
|
|
["action"] = "empower_rune_weapon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! talent.breath_of_sindragosa.enabled & ! talent.obliteration.enabled & ! buff.empower_rune_weapon.up & rune < 5 & ( cooldown.pillar_of_frost.remains_expected < 7 || buff.pillar_of_frost.up || ! talent.pillar_of_frost.enabled )",
|
|
["action"] = "empower_rune_weapon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.obliteration.enabled & ! buff.pillar_of_frost.up & cooldown.pillar_of_frost.remains < 3 & ( variable.adds_remain || variable.st_planning ) || boss & fight_remains < 12",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.breath_of_sindragosa.enabled & ( variable.adds_remain || variable.st_planning )",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.breath_of_sindragosa.enabled & ! talent.obliteration.enabled & ( variable.adds_remain || variable.st_planning )",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "set_bonus.tier31_2pc",
|
|
["action"] = "chill_streak",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! set_bonus.tier31_2pc & active_enemies >= 2 & ( ! death_and_decay.ticking & talent.cleaving_strikes.enabled || ! talent.cleaving_strikes.enabled || active_enemies <= 5 )",
|
|
["action"] = "chill_streak",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.obliteration.enabled & ( variable.adds_remain || variable.st_planning ) & ( ! talent.empower_rune_weapon.enabled || buff.empower_rune_weapon.up || cooldown.empower_rune_weapon.remains ) || boss & fight_remains < 12",
|
|
["action"] = "pillar_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.breath_of_sindragosa.enabled & ( variable.adds_remain || variable.st_planning ) & ( ! talent.icecap.enabled & ( runic_power > 70 || cooldown.breath_of_sindragosa.remains > 40 ) || talent.icecap.enabled & ( cooldown.breath_of_sindragosa.remains > 10 || buff.breath_of_sindragosa.up ) )",
|
|
["action"] = "pillar_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.icecap.enabled & ! talent.obliteration.enabled & ! talent.breath_of_sindragosa.enabled & ( variable.adds_remain || variable.st_planning )",
|
|
["action"] = "pillar_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.breath_of_sindragosa.up & runic_power > 60 & ( variable.adds_remain || variable.st_planning ) || boss & fight_remains < 30",
|
|
["action"] = "breath_of_sindragosa",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & ( talent.pillar_of_frost.enabled & buff.pillar_of_frost.remains < gcd.max * 2 & buff.pillar_of_frost.up & ! talent.obliteration.enabled || ! talent.pillar_of_frost.enabled ) & ( ! raid_event.adds.exists || ( raid_event.adds.in > 15 + raid_event.adds.duration || talent.absolute_zero.enabled & raid_event.adds.in > 15 + raid_event.adds.duration ) ) || boss & fight_remains < 3",
|
|
["action"] = "frostwyrms_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 2 & ( talent.pillar_of_frost.enabled & buff.pillar_of_frost.up || raid_event.adds.exists & raid_event.adds.up & raid_event.adds.in > cooldown.pillar_of_frost.remains_expected - raid_event.adds.in - raid_event.adds.duration ) & ( buff.pillar_of_frost.remains < gcd.max * 2 || raid_event.adds.exists & raid_event.adds.remains < gcd.max * 2 )",
|
|
["action"] = "frostwyrms_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.obliteration.enabled & cooldown.empower_rune_weapon.charges < 1 & ( talent.pillar_of_frost.enabled & buff.pillar_of_frost.up & ! variable.two_hand_check || ! buff.pillar_of_frost.up & variable.two_hand_check & cooldown.pillar_of_frost.remains > 10 || ! talent.pillar_of_frost.enabled ) & ( ( buff.pillar_of_frost.remains < gcd.max || buff.unholy_strength.up & buff.unholy_strength.remains < gcd.max ) & ( debuff.razorice.stack = 5 || ! death_knight.runeforge.razorice & ! talent.glacial_advance.enabled ) )",
|
|
["action"] = "frostwyrms_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.obliteration.enabled & ( talent.pillar_of_frost.enabled & buff.pillar_of_frost.up & ! variable.two_hand_check || ! buff.pillar_of_frost.up & variable.two_hand_check & cooldown.pillar_of_frost.remains || ! talent.pillar_of_frost.enabled ) & ( ( buff.pillar_of_frost.remains < gcd.max || buff.unholy_strength.up & buff.unholy_strength.remains < gcd.max ) & ( debuff.razorice.stack = 5 || ! death_knight.runeforge.razorice & ! talent.glacial_advance.enabled ) )",
|
|
["action"] = "frostwyrms_fury",
|
|
},
|
|
{
|
|
["action"] = "raise_dead",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > 5 & target.time_to_pct_35 < 5 & active_enemies <= 2 & ( talent.obliteration.enabled & ( buff.pillar_of_frost.up & ! buff.killing_machine.up || ! buff.pillar_of_frost.up ) || talent.breath_of_sindragosa.enabled & ( buff.breath_of_sindragosa.up & runic_power > 40 || ! buff.breath_of_sindragosa.up ) || ! talent.breath_of_sindragosa.enabled & ! talent.obliteration.enabled )",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.glacial_advance.enabled & ! buff.breath_of_sindragosa.up & pet.ghoul.remains < gcd.max * 2 & active_enemies > 3",
|
|
["action"] = "sacrificial_pact",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! death_and_decay.ticking & variable.adds_remain & ( buff.pillar_of_frost.up & buff.pillar_of_frost.remains > 5 & buff.pillar_of_frost.remains < 11 || ! buff.pillar_of_frost.up & cooldown.pillar_of_frost.remains > 10 || boss & fight_remains < 11 ) & ( active_enemies > 5 || talent.cleaving_strikes.enabled & active_enemies >= 2 )",
|
|
["action"] = "any_dnd",
|
|
},
|
|
},
|
|
["breath_oblit"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.up & variable.frostscythe_priority",
|
|
["action"] = "frostscythe",
|
|
["description"] = "Breath & Obliteration Active Rotation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.killing_machine.up",
|
|
["action"] = "obliterate",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rime.up",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.killing_machine.up",
|
|
["action"] = "howling_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit > 25",
|
|
["action"] = "horn_of_winter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit > 20",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20230921,
|
|
["warnings"] = "The import for 'single_target' required some automated changes.\nLine 7: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 7: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 8: Converted 'talent.shattering_blade' to 'talent.shattering_blade.enabled' (1x).\nLine 12: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\n\nThe import for 'cold_heart' required some automated changes.\nLine 2: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 2: Converted 'talent.frostwyrms_fury' to 'talent.frostwyrms_fury.enabled' (1x).\nLine 3: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 4: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 5: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\n\nThe import for 'breath' required some automated changes.\nLine 2: Converted 'talent.rage_of_the_frozen_champion' to 'talent.rage_of_the_frozen_champion.enabled' (1x).\nLine 8: Converted operations in 'runic_power<36&rune.time_to_2>runic_power%18' to 'runic_power<36&rune.time_to_2>runic_power/18'.\nLine 9: Converted operations in 'runic_power<36&rune.time_to_2>runic_power%18' to 'runic_power<36&rune.time_to_2>runic_power/18'.\nLine 10: Converted operations in 'runic_power<36&rune.time_to_2>runic_power%18' to 'runic_power<36&rune.time_to_2>runic_power/18'.\n\nThe import for 'racials' required some automated changes.\nLine 7: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 8: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 4: Converted 'talent.assimilation' to 'talent.assimilation.enabled' (1x).\nLine 4: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 7: Converted 'talent.rage_of_the_frozen_champion' to 'talent.rage_of_the_frozen_champion.enabled' (1x).\nLine 7: Converted 'talent.avalanche' to 'talent.avalanche.enabled' (1x).\nLine 7: Converted 'talent.icebreaker' to 'talent.icebreaker.enabled' (1x).\nLine 8: Converted 'talent.unleashed_frenzy' to 'talent.unleashed_frenzy.enabled' (1x).\nLine 8: Converted 'talent.icy_talons' to 'talent.icy_talons.enabled' (1x).\nLine 9: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 9: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 9: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 9: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 9: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 9: Converted 'talent.empower_rune_weapon' to 'talent.empower_rune_weapon.enabled' (1x).\nLine 10: Converted 'talent.frostscythe' to 'talent.frostscythe.enabled' (1x).\nLine 10: Converted 'talent.improved_obliterate' to 'talent.improved_obliterate.enabled' (1x).\nLine 10: Converted 'talent.frigid_executioner' to 'talent.frigid_executioner.enabled' (1x).\nLine 10: Converted 'talent.frostreaper' to 'talent.frostreaper.enabled' (1x).\nLine 10: Converted 'talent.might_of_the_frozen_wastes' to 'talent.might_of_the_frozen_wastes.enabled' (1x).\nLine 10: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\nLine 10: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\nLine 11: Converted operations in '((cooldown.pillar_of_frost.remains_expected+1)%gcd.max)%((rune+3)*(runic_power+5))*100' to '((cooldown.pillar_of_frost.remains_expected+1)/gcd.max)/((rune+3)*(runic_power+5))*100'.\nLine 12: Converted operations in '((cooldown.breath_of_sindragosa.remains+1)%gcd.max)%((rune+1)*(runic_power+20))*100' to '((cooldown.breath_of_sindragosa.remains+1)/gcd.max)/((rune+1)*(runic_power+20))*100'.\nLine 13: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 14: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 14: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 15: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 15: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 16: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 16: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 17: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 18: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 18: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 19: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 19: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 20: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 21: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 21: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 22: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 22: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 23: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 27: Converted 'talent.cold_heart' to 'talent.cold_heart.enabled' (1x).\nLine 27: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 27: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 27: Converted 'talent.avalanche' to 'talent.avalanche.enabled' (1x).\nLine 28: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 29: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 29: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 30: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 1: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 1: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 2: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 2: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (1x).\nLine 3: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 3: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 3: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 3: Converted operations in 'trinket.t1.has_use_buff&(talent.pillar_of_frost.enabled&!talent.breath_of_sindragosa.enabled&(trinket.t1.cooldown.duration%%cooldown.pillar_of_frost.duration=0)||talent.breath_of_sindragosa.enabled&(cooldown.breath_of_sindragosa.duration%%trinket.t1.cooldown.duration=0))' to 'trinket.t1.has_use_buff&(talent.pillar_of_frost.enabled&!talent.breath_of_sindragosa.enabled&(trinket.t1.cooldown.duration%cooldown.pillar_of_frost.duration=0)||talent.breath_of_sindragosa.enabled&(cooldown.breath_of_sindragosa.duration%trinket.t1.cooldown.duration=0))'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 4: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 4: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 4: Converted operations in 'trinket.t2.has_use_buff&(talent.pillar_of_frost.enabled&!talent.breath_of_sindragosa.enabled&(trinket.t2.cooldown.duration%%cooldown.pillar_of_frost.duration=0)||talent.breath_of_sindragosa.enabled&(cooldown.breath_of_sindragosa.duration%%trinket.t2.cooldown.duration=0))' to 'trinket.t2.has_use_buff&(talent.pillar_of_frost.enabled&!talent.breath_of_sindragosa.enabled&(trinket.t2.cooldown.duration%cooldown.pillar_of_frost.duration=0)||talent.breath_of_sindragosa.enabled&(cooldown.breath_of_sindragosa.duration%trinket.t2.cooldown.duration=0))'.\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 5: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 5: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 5: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 5: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 5: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 6: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 6: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 6: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 6: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 6: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 7: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 7: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 7: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 7: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 7: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 7: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 7: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 7: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 8: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 9: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\nLine 10: Converted 'talent.gathering_storm' to 'talent.gathering_storm.enabled' (1x).\nLine 10: Converted 'talent.everfrost' to 'talent.everfrost.enabled' (1x).\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'cooldowns' required some automated changes.\nLine 2: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 4: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 4: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 4: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 5: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 6: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 7: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 7: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 9: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\nLine 9: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\nLine 10: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 10: Converted 'talent.empower_rune_weapon' to 'talent.empower_rune_weapon.enabled' (1x).\nLine 11: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 11: Converted 'talent.icecap' to 'talent.icecap.enabled' (1x).\nLine 11: Converted 'talent.icecap' to 'talent.icecap.enabled' (1x).\nLine 12: Converted 'talent.icecap' to 'talent.icecap.enabled' (1x).\nLine 12: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 12: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 14: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 14: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 14: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 14: Converted 'talent.absolute_zero' to 'talent.absolute_zero.enabled' (1x).\nLine 15: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 16: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 16: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 16: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 16: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 17: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 17: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 17: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 17: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 19: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 19: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 19: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 19: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 20: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 21: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 1: Converted 'talent.breath_of_sindragosa' to 'talent.breath_of_sindragosa.enabled' (1x).\nLine 2: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 2: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 2: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 3: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 3: Converted 'talent.obliteration' to 'talent.obliteration.enabled' (1x).\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 3: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 4: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 5: Converted 'talent.pillar_of_frost' to 'talent.pillar_of_frost.enabled' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\n\nThe import for 'obliteration' required some automated changes.\nLine 1: Converted 'talent.gathering_storm' to 'talent.gathering_storm.enabled' (1x).\nLine 8: Converted 'talent.avalanche' to 'talent.avalanche.enabled' (1x).\nLine 9: Converted 'talent.shattering_blade' to 'talent.shattering_blade.enabled' (1x).\nLine 9: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 12: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\nLine 16: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 4: Converted 'talent.cleaving_strikes' to 'talent.cleaving_strikes.enabled' (1x).\nLine 8: Converted 'talent.glacial_advance' to 'talent.glacial_advance.enabled' (1x).\n\nImported 11 action lists.\n",
|
|
["spec"] = 251,
|
|
["profile"] = "actions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell||trinket.1.is.whispering_incarnate_icon\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell||trinket.2.is.whispering_incarnate_icon\n# Evaluates a trinkets cooldown, divided by pillar of frost, empower rune weapon, or breath of sindragosa's cooldown. If it's value has no remainder return 1, else return 0.5.\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=trinket.1.has_use_buff&(talent.pillar_of_frost&!talent.breath_of_sindragosa&(trinket.1.cooldown.duration%%cooldown.pillar_of_frost.duration=0)||talent.breath_of_sindragosa&(cooldown.breath_of_sindragosa.duration%%trinket.1.cooldown.duration=0))\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=trinket.2.has_use_buff&(talent.pillar_of_frost&!talent.breath_of_sindragosa&(trinket.2.cooldown.duration%%cooldown.pillar_of_frost.duration=0)||talent.breath_of_sindragosa&(cooldown.breath_of_sindragosa.duration%%trinket.2.cooldown.duration=0))\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_buff.strength||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit&!variable.trinket_1_exclude)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_buff.strength||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit&!variable.trinket_2_exclude)\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync))\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.algethar_puzzle_box\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.algethar_puzzle_box\nactions.precombat+=/variable,name=rw_buffs,value=talent.gathering_storm||talent.everfrost\nactions.precombat+=/variable,name=two_hand_check,value=main_hand.2h\nactions.precombat+=/variable,name=erw_pooling_time,op=setif,value=25,value_else=45,condition=death_knight.ams_absorb_percent>0.59\n\nactions+=/mind_freeze\nactions+=/strangulate\nactions+=/antimagic_shell,if=runic_power.deficit>40\nactions+=/antimagic_zone,if=death_knight.amz_absorb_percent>0&runic_power.deficit>70&talent.assimilation&(buff.breath_of_sindragosa.up&cooldown.empower_rune_weapon.charges<2||!talent.breath_of_sindragosa&!buff.pillar_of_frost.up)\nactions+=/variable,name=st_planning,value=active_enemies=1&(raid_event.adds.in>15||!raid_event.adds.exists)\nactions+=/variable,name=adds_remain,value=active_enemies>=2&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.remains>5)\nactions+=/variable,name=rime_buffs,value=buff.rime.up&(talent.rage_of_the_frozen_champion||talent.avalanche||talent.icebreaker)\nactions+=/variable,name=rp_buffs,value=talent.unleashed_frenzy&(buff.unleashed_frenzy.remains<gcd.max*3||buff.unleashed_frenzy.stack<3)||talent.icy_talons&(buff.icy_talons.remains<gcd.max*3||buff.icy_talons.stack<3)\nactions+=/variable,name=cooldown_check,value=talent.pillar_of_frost&buff.pillar_of_frost.up&(talent.obliteration&buff.pillar_of_frost.remains<6||!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\nactions+=/variable,name=frostscythe_priority,value=talent.frostscythe&(buff.killing_machine.up||active_enemies>=3)&(!talent.improved_obliterate&!talent.frigid_executioner&!talent.frostreaper&!talent.might_of_the_frozen_wastes||!talent.cleaving_strikes||talent.cleaving_strikes&(active_enemies>6||!death_and_decay.ticking&active_enemies>3))\n# Formulaic approach to determine the time before these abilities come off cooldown that the simulation should star to pool resources. Capped at 15s in the run_action_list call.\nactions+=/variable,name=oblit_pooling_time,op=setif,value=((cooldown.pillar_of_frost.remains_expected+1)%gcd.max)%((rune+3)*(runic_power+5))*100,value_else=3,condition=runic_power<35&rune<2&cooldown.pillar_of_frost.remains_expected<10\nactions+=/variable,name=breath_pooling_time,op=setif,value=((cooldown.breath_of_sindragosa.remains+1)%gcd.max)%((rune+1)*(runic_power+20))*100,value_else=3,condition=runic_power.deficit>10&cooldown.breath_of_sindragosa.remains<10\nactions+=/variable,name=pooling_runes,value=rune<4&talent.obliteration&cooldown.pillar_of_frost.remains_expected<variable.oblit_pooling_time\nactions+=/variable,name=pooling_runic_power,value=talent.breath_of_sindragosa&cooldown.breath_of_sindragosa.remains<variable.breath_pooling_time||talent.obliteration&runic_power<35&cooldown.pillar_of_frost.remains_expected<variable.oblit_pooling_time\n# Use <a href='https://www.wowhead.com/spell=10060/power-infusion'>Power Infusion</a> while <a href='https://www.wowhead.com/spell=51271/pillar-of-frost'>Pillar of Frost</a> is up, as well as <a href='https://www.wowhead.com/spell=152279/breath-of-sindragosa'>Breath of Sindragosa</a> or on cooldown if <a href='https://www.wowhead.com/spell=51271/pillar-of-frost'>Pillar of Frost</a> and <a href='https://www.wowhead.com/spell=152279/breath-of-sindragosa'>Breath of Sindragosa</a> are not talented\n## actions+=/invoke_external_buff,name=power_infusion,if=(buff.pillar_of_frost.up||!talent.pillar_of_frost)&(talent.obliteration||talent.breath_of_sindragosa&buff.breath_of_sindragosa.up||!talent.breath_of_sindragosa&!talent.obliteration)\n# Maintain Frost Fever, Icy Talons and Unleashed Frenzy\nactions+=/howling_blast,if=!dot.frost_fever.ticking&active_enemies>=2&(!talent.obliteration||talent.obliteration&(!cooldown.pillar_of_frost.ready||buff.pillar_of_frost.up&!buff.killing_machine.up))\nactions+=/glacial_advance,if=active_enemies>=2&variable.rp_buffs&talent.obliteration&talent.breath_of_sindragosa&!buff.pillar_of_frost.up&!buff.breath_of_sindragosa.up&cooldown.breath_of_sindragosa.remains>variable.breath_pooling_time\nactions+=/glacial_advance,if=active_enemies>=2&variable.rp_buffs&talent.breath_of_sindragosa&!buff.breath_of_sindragosa.up&cooldown.breath_of_sindragosa.remains>variable.breath_pooling_time\nactions+=/glacial_advance,if=active_enemies>=2&variable.rp_buffs&!talent.breath_of_sindragosa&talent.obliteration&!buff.pillar_of_frost.up\nactions+=/frost_strike,if=active_enemies=1&variable.rp_buffs&talent.obliteration&talent.breath_of_sindragosa&!buff.pillar_of_frost.up&!buff.breath_of_sindragosa.up&cooldown.breath_of_sindragosa.remains>variable.breath_pooling_time\nactions+=/frost_strike,if=active_enemies=1&variable.rp_buffs&talent.breath_of_sindragosa&!buff.breath_of_sindragosa.up&cooldown.breath_of_sindragosa.remains>variable.breath_pooling_time\nactions+=/frost_strike,if=active_enemies=1&variable.rp_buffs&!talent.breath_of_sindragosa&talent.obliteration&!buff.pillar_of_frost.up\nactions+=/remorseless_winter,if=!talent.breath_of_sindragosa&!talent.obliteration&variable.rw_buffs\nactions+=/remorseless_winter,if=talent.obliteration&active_enemies>=3&variable.adds_remain\n# Choose Action list to run\nactions+=/call_action_list,name=trinkets\nactions+=/call_action_list,name=cooldowns\nactions+=/call_action_list,name=racials\nactions+=/call_action_list,name=cold_heart,if=talent.cold_heart&(!buff.killing_machine.up||talent.breath_of_sindragosa)&((debuff.razorice.stack=5||!death_knight.runeforge.razorice&!talent.glacial_advance&!talent.avalanche)||boss&fight_remains<=gcd.max)\nactions+=/run_action_list,name=breath_oblit,if=buff.breath_of_sindragosa.up&talent.obliteration&buff.pillar_of_frost.up\nactions+=/run_action_list,name=breath,if=buff.breath_of_sindragosa.up&(!talent.obliteration||talent.obliteration&!buff.pillar_of_frost.up)\nactions+=/run_action_list,name=obliteration,if=talent.obliteration&buff.pillar_of_frost.up&!buff.breath_of_sindragosa.up\nactions+=/call_action_list,name=aoe,if=active_enemies>=2\nactions+=/call_action_list,name=single_target,if=active_enemies=1\n\n# AoE Action List\nactions.aoe+=/remorseless_winter\nactions.aoe+=/howling_blast,if=buff.rime.up||!dot.frost_fever.ticking\nactions.aoe+=/glacial_advance,if=!variable.pooling_runic_power&variable.rp_buffs\nactions.aoe+=/obliterate,if=buff.killing_machine.up&talent.cleaving_strikes&death_and_decay.ticking&!variable.frostscythe_priority\nactions.aoe+=/glacial_advance,if=!variable.pooling_runic_power\nactions.aoe+=/frostscythe,if=variable.frostscythe_priority\nactions.aoe+=/obliterate,if=!variable.frostscythe_priority\nactions.aoe+=/frost_strike,if=!variable.pooling_runic_power&!talent.glacial_advance\nactions.aoe+=/horn_of_winter,if=rune<2&runic_power.deficit>25\nactions.aoe+=/arcane_torrent,if=runic_power.deficit>25\n\n# Breath Active Rotation\nactions.breath+=/remorseless_winter,if=variable.rw_buffs||variable.adds_remain\nactions.breath+=/howling_blast,if=variable.rime_buffs&runic_power>(45-talent.rage_of_the_frozen_champion*8)\nactions.breath+=/horn_of_winter,if=rune<2&runic_power.deficit>25\nactions.breath+=/obliterate,cycle_targets=1,if=buff.killing_machine.up&!variable.frostscythe_priority\nactions.breath+=/frostscythe,if=buff.killing_machine.up&variable.frostscythe_priority\nactions.breath+=/frostscythe,if=variable.frostscythe_priority&runic_power>45\nactions.breath+=/obliterate,cycle_targets=1,if=runic_power.deficit>40||buff.pillar_of_frost.up&runic_power.deficit>17\nactions.breath+=/death_and_decay,if=runic_power<36&rune.time_to_2>runic_power%18\nactions.breath+=/remorseless_winter,if=runic_power<36&rune.time_to_2>runic_power%18\nactions.breath+=/howling_blast,if=runic_power<36&rune.time_to_2>runic_power%18\nactions.breath+=/obliterate,cycle_targets=1,if=runic_power.deficit>25\nactions.breath+=/howling_blast,if=buff.rime.up\nactions.breath+=/arcane_torrent,if=runic_power<60\n\n# Breath & Obliteration Active Rotation\nactions.breath_oblit+=/frostscythe,if=buff.killing_machine.up&variable.frostscythe_priority\nactions.breath_oblit+=/obliterate,cycle_targets=1,if=buff.killing_machine.up\nactions.breath_oblit+=/howling_blast,if=buff.rime.up\nactions.breath_oblit+=/howling_blast,if=!buff.killing_machine.up\nactions.breath_oblit+=/horn_of_winter,if=runic_power.deficit>25\nactions.breath_oblit+=/arcane_torrent,if=runic_power.deficit>20\n\n# Cold Heart\nactions.cold_heart+=/chains_of_ice,if=boss&fight_remains<gcd.max&(rune<2||!buff.killing_machine.up&(!variable.two_hand_check&buff.cold_heart.stack>=4||variable.two_hand_check&buff.cold_heart.stack>8)||buff.killing_machine.up&(!variable.two_hand_check&buff.cold_heart.stack>8||variable.two_hand_check&buff.cold_heart.stack>10))\nactions.cold_heart+=/chains_of_ice,if=!talent.obliteration&buff.pillar_of_frost.up&buff.cold_heart.stack>=10&(buff.pillar_of_frost.remains<gcd*(1+(talent.frostwyrms_fury&cooldown.frostwyrms_fury.ready))||buff.unholy_strength.up&buff.unholy_strength.remains<gcd)\nactions.cold_heart+=/chains_of_ice,if=!talent.obliteration&death_knight.runeforge.fallen_crusader&!buff.pillar_of_frost.up&cooldown.pillar_of_frost.remains_expected>15&(buff.cold_heart.stack>=10&buff.unholy_strength.up||buff.cold_heart.stack>=13)\nactions.cold_heart+=/chains_of_ice,if=!talent.obliteration&!death_knight.runeforge.fallen_crusader&buff.cold_heart.stack>=10&!buff.pillar_of_frost.up&cooldown.pillar_of_frost.remains_expected>20\nactions.cold_heart+=/chains_of_ice,if=talent.obliteration&!buff.pillar_of_frost.up&(buff.cold_heart.stack>=14&(buff.unholy_strength.up||buff.chaos_bane.up)||buff.cold_heart.stack>=19||cooldown.pillar_of_frost.remains_expected<3&buff.cold_heart.stack>=14)\n\n# Cooldowns\nactions.cooldowns+=/potion,if=variable.cooldown_check||boss&fight_remains<25\nactions.cooldowns+=/empower_rune_weapon,if=talent.obliteration&!buff.empower_rune_weapon.up&rune<6&(cooldown.pillar_of_frost.remains_expected<7&(variable.adds_remain||variable.st_planning)||buff.pillar_of_frost.up)||boss&fight_remains<20\nactions.cooldowns+=/empower_rune_weapon,use_off_gcd=1,if=buff.breath_of_sindragosa.up&!buff.empower_rune_weapon.up&(time<10&buff.bloodlust.up)||(runic_power<70&rune<3&(cooldown.breath_of_sindragosa.remains>variable.erw_pooling_time||full_recharge_time<10))\nactions.cooldowns+=/empower_rune_weapon,use_off_gcd=1,if=!talent.breath_of_sindragosa&!talent.obliteration&!buff.empower_rune_weapon.up&rune<5&(cooldown.pillar_of_frost.remains_expected<7||buff.pillar_of_frost.up||!talent.pillar_of_frost)\nactions.cooldowns+=/abomination_limb,if=talent.obliteration&!buff.pillar_of_frost.up&cooldown.pillar_of_frost.remains<3&(variable.adds_remain||variable.st_planning)||boss&fight_remains<12\nactions.cooldowns+=/abomination_limb,if=talent.breath_of_sindragosa&(variable.adds_remain||variable.st_planning)\nactions.cooldowns+=/abomination_limb,if=!talent.breath_of_sindragosa&!talent.obliteration&(variable.adds_remain||variable.st_planning)\nactions.cooldowns+=/chill_streak,if=set_bonus.tier31_2pc\nactions.cooldowns+=/chill_streak,if=!set_bonus.tier31_2pc&active_enemies>=2&(!death_and_decay.ticking&talent.cleaving_strikes||!talent.cleaving_strikes||active_enemies<=5)\nactions.cooldowns+=/pillar_of_frost,if=talent.obliteration&(variable.adds_remain||variable.st_planning)&(!talent.empower_rune_weapon||buff.empower_rune_weapon.up||cooldown.empower_rune_weapon.remains)||boss&fight_remains<12\nactions.cooldowns+=/pillar_of_frost,if=talent.breath_of_sindragosa&(variable.adds_remain||variable.st_planning)&(!talent.icecap&(runic_power>70||cooldown.breath_of_sindragosa.remains>40)||talent.icecap&(cooldown.breath_of_sindragosa.remains>10||buff.breath_of_sindragosa.up))\nactions.cooldowns+=/pillar_of_frost,if=talent.icecap&!talent.obliteration&!talent.breath_of_sindragosa&(variable.adds_remain||variable.st_planning)\nactions.cooldowns+=/breath_of_sindragosa,if=!buff.breath_of_sindragosa.up&runic_power>60&(variable.adds_remain||variable.st_planning)||boss&fight_remains<30\nactions.cooldowns+=/frostwyrms_fury,if=active_enemies=1&(talent.pillar_of_frost&buff.pillar_of_frost.remains<gcd*2&buff.pillar_of_frost.up&!talent.obliteration||!talent.pillar_of_frost)&(!raid_event.adds.exists||(raid_event.adds.in>15+raid_event.adds.duration||talent.absolute_zero&raid_event.adds.in>15+raid_event.adds.duration))||boss&fight_remains<3\nactions.cooldowns+=/frostwyrms_fury,if=active_enemies>=2&(talent.pillar_of_frost&buff.pillar_of_frost.up||raid_event.adds.exists&raid_event.adds.up&raid_event.adds.in>cooldown.pillar_of_frost.remains_expected-raid_event.adds.in-raid_event.adds.duration)&(buff.pillar_of_frost.remains<gcd*2||raid_event.adds.exists&raid_event.adds.remains<gcd*2)\nactions.cooldowns+=/frostwyrms_fury,if=talent.obliteration&cooldown.empower_rune_weapon.charges<1&(talent.pillar_of_frost&buff.pillar_of_frost.up&!variable.two_hand_check||!buff.pillar_of_frost.up&variable.two_hand_check&cooldown.pillar_of_frost.remains>10||!talent.pillar_of_frost)&((buff.pillar_of_frost.remains<gcd||buff.unholy_strength.up&buff.unholy_strength.remains<gcd)&(debuff.razorice.stack=5||!death_knight.runeforge.razorice&!talent.glacial_advance))\nactions.cooldowns+=/frostwyrms_fury,if=talent.obliteration&(talent.pillar_of_frost&buff.pillar_of_frost.up&!variable.two_hand_check||!buff.pillar_of_frost.up&variable.two_hand_check&cooldown.pillar_of_frost.remains||!talent.pillar_of_frost)&((buff.pillar_of_frost.remains<gcd||buff.unholy_strength.up&buff.unholy_strength.remains<gcd)&(debuff.razorice.stack=5||!death_knight.runeforge.razorice&!talent.glacial_advance))\nactions.cooldowns+=/raise_dead\nactions.cooldowns+=/soul_reaper,if=fight_remains>5&target.time_to_pct_35<5&active_enemies<=2&(talent.obliteration&(buff.pillar_of_frost.up&!buff.killing_machine.up||!buff.pillar_of_frost.up)||talent.breath_of_sindragosa&(buff.breath_of_sindragosa.up&runic_power>40||!buff.breath_of_sindragosa.up)||!talent.breath_of_sindragosa&!talent.obliteration)\nactions.cooldowns+=/sacrificial_pact,if=!talent.glacial_advance&!buff.breath_of_sindragosa.up&pet.ghoul.remains<gcd*2&active_enemies>3\nactions.cooldowns+=/any_dnd,if=!death_and_decay.ticking&variable.adds_remain&(buff.pillar_of_frost.up&buff.pillar_of_frost.remains>5&buff.pillar_of_frost.remains<11||!buff.pillar_of_frost.up&cooldown.pillar_of_frost.remains>10||boss&fight_remains<11)&(active_enemies>5||talent.cleaving_strikes&active_enemies>=2)\n\n# Obliteration Active Rotation\nactions.obliteration+=/remorseless_winter,if=active_enemies>3||talent.gathering_storm\nactions.obliteration+=/howling_blast,if=buff.killing_machine.stack<2&buff.pillar_of_frost.remains<gcd&buff.rime.up\nactions.obliteration+=/frost_strike,if=buff.killing_machine.stack<2&buff.pillar_of_frost.remains<gcd&!death_and_decay.ticking\nactions.obliteration+=/glacial_advance,if=buff.killing_machine.stack<2&buff.pillar_of_frost.remains<gcd&!death_and_decay.ticking\nactions.obliteration+=/obliterate,cycle_targets=1,if=buff.killing_machine.up&!variable.frostscythe_priority\nactions.obliteration+=/frostscythe,if=buff.killing_machine.up&variable.frostscythe_priority\nactions.obliteration+=/howling_blast,if=!buff.killing_machine.up&(!dot.frost_fever.ticking||buff.rime.up&set_bonus.tier30_2pc&!variable.rp_buffs)\nactions.obliteration+=/glacial_advance,if=!buff.killing_machine.up&(!death_knight.runeforge.razorice&(!talent.avalanche||debuff.razorice.stack<5||debuff.razorice.remains<gcd*3)||(variable.rp_buffs&active_enemies>1))\nactions.obliteration+=/frost_strike,cycle_targets=1,if=!buff.killing_machine.up&(rune<2||variable.rp_buffs||debuff.razorice.stack=5&talent.shattering_blade)&!variable.pooling_runic_power&(!talent.glacial_advance||active_enemies=1)\nactions.obliteration+=/howling_blast,if=buff.rime.up&!buff.killing_machine.up\nactions.obliteration+=/glacial_advance,if=!variable.pooling_runic_power&variable.rp_buffs&!buff.killing_machine.up&active_enemies>=2\nactions.obliteration+=/frost_strike,cycle_targets=1,if=!buff.killing_machine.up&!variable.pooling_runic_power&(!talent.glacial_advance||active_enemies=1)\nactions.obliteration+=/howling_blast,if=!buff.killing_machine.up&runic_power<25\nactions.obliteration+=/arcane_torrent,if=rune<1&runic_power<25\nactions.obliteration+=/glacial_advance,if=!variable.pooling_runic_power&active_enemies>=2\nactions.obliteration+=/frost_strike,cycle_targets=1,if=!variable.pooling_runic_power&(!talent.glacial_advance||active_enemies=1)\nactions.obliteration+=/howling_blast,if=buff.rime.up\nactions.obliteration+=/obliterate,cycle_targets=1\n\n# Racial Abilities\nactions.racials+=/blood_fury,if=variable.cooldown_check\nactions.racials+=/berserking,if=variable.cooldown_check\nactions.racials+=/arcane_pulse,if=variable.cooldown_check\nactions.racials+=/lights_judgment,if=variable.cooldown_check\nactions.racials+=/ancestral_call,if=variable.cooldown_check\nactions.racials+=/fireblood,if=variable.cooldown_check\nactions.racials+=/bag_of_tricks,if=talent.obliteration&!buff.pillar_of_frost.up&buff.unholy_strength.up\nactions.racials+=/bag_of_tricks,if=!talent.obliteration&buff.pillar_of_frost.up&(buff.unholy_strength.up&buff.unholy_strength.remains<gcd*3||buff.pillar_of_frost.remains<gcd*3)\n\n# Single Target Rotation\nactions.single_target+=/remorseless_winter,if=variable.rw_buffs||variable.adds_remain\nactions.single_target+=/frost_strike,if=buff.killing_machine.stack<2&runic_power.deficit<20&!variable.two_hand_check\nactions.single_target+=/howling_blast,if=buff.rime.up&set_bonus.tier30_2pc&buff.killing_machine.stack<2\nactions.single_target+=/frostscythe,if=buff.killing_machine.up&variable.frostscythe_priority\nactions.single_target+=/obliterate,if=buff.killing_machine.up\nactions.single_target+=/howling_blast,if=buff.rime.up&talent.icebreaker.rank=2\nactions.single_target+=/horn_of_winter,if=rune<4&runic_power.deficit>25&talent.obliteration&talent.breath_of_sindragosa\nactions.single_target+=/frost_strike,if=!variable.pooling_runic_power&(variable.rp_buffs||runic_power.deficit<25||debuff.razorice.stack=5&talent.shattering_blade)\nactions.single_target+=/howling_blast,if=variable.rime_buffs\nactions.single_target+=/glacial_advance,if=!variable.pooling_runic_power&!death_knight.runeforge.razorice&(debuff.razorice.stack<5||debuff.razorice.remains<gcd*3)\nactions.single_target+=/obliterate,if=!variable.pooling_runes\nactions.single_target+=/horn_of_winter,if=rune<4&runic_power.deficit>25&(!talent.breath_of_sindragosa||cooldown.breath_of_sindragosa.remains>cooldown.horn_of_winter.duration)\nactions.single_target+=/arcane_torrent,if=runic_power.deficit>20\nactions.single_target+=/frost_strike,if=!variable.pooling_runic_power\n\nactions.trinkets+=/use_item,use_off_gcd=1,name=algethar_puzzle_box,if=!buff.pillar_of_frost.up&cooldown.pillar_of_frost.remains<2&(!talent.breath_of_sindragosa||runic_power>60&(buff.breath_of_sindragosa.up||cooldown.breath_of_sindragosa.remains<2))\n# The trinket with the highest estimated value, will be used first and paired with Pillar of Frost.\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=variable.trinket_1_buffs&!variable.trinket_1_manual&(talent.obliteration&cooldown.empower_rune_weapon.charges<1||!talent.obliteration)&(!buff.pillar_of_frost.up&trinket.1.cast_time>0||!trinket.1.cast_time>0)&(buff.breath_of_sindragosa.up||buff.pillar_of_frost.up)&(variable.trinket_2_exclude||!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||boss&trinket.1.proc.any_dps.duration>=fight_remains\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&(talent.obliteration&cooldown.empower_rune_weapon.charges<1||!talent.obliteration)&(!buff.pillar_of_frost.up&trinket.2.cast_time>0||!trinket.2.cast_time>0)&(buff.breath_of_sindragosa.up||buff.pillar_of_frost.up)&(variable.trinket_1_exclude||!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||boss&trinket.2.proc.any_dps.duration>=fight_remains\n# If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&(!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs)||(trinket.1.cast_time>0&!buff.pillar_of_frost.up||!trinket.1.cast_time>0)||talent.pillar_of_frost&cooldown.pillar_of_frost.remains_expected>20||!talent.pillar_of_frost)\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&(!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs)||(trinket.2.cast_time>0&!buff.pillar_of_frost.up||!trinket.2.cast_time>0)||talent.pillar_of_frost&cooldown.pillar_of_frost.remains_expected>20||!talent.pillar_of_frost)\nactions.trinkets+=/use_items,use_off_gcd=1,if=(!variable.trinket_1_buffs||trinket.1.cooldown.remains)&(!variable.trinket_2_buffs||trinket.2.cooldown.remains)",
|
|
},
|
|
["Blood"] = {
|
|
["source"] = "SimulationCraft",
|
|
["builtIn"] = true,
|
|
["date"] = 20230506,
|
|
["spec"] = 250,
|
|
["desc"] = "2023-05-06: Removed Death's Caress during DRW.\n\n2023-04-30: Updated for 10.1 from SimC.\n\n2023-04-04: Minor update from SimC (Vampiric Blood usage).\n\n2023-03-08: Adjust Tombstone logic for Shattering Bones / Death and Decay.",
|
|
["lists"] = {
|
|
["drw_up"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blood_boil",
|
|
["description"] = "Use Blood Boil if Blood Plague is not active.",
|
|
["criteria"] = "! dot.blood_plague.ticking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tombstone",
|
|
["description"] = "Use Tombstone if you have 5+ Bone Shield stacks, 2+ runes, 30+ Runic Power, and Shattering Bones is not talented or Death and Decay is not ticking.",
|
|
["criteria"] = "buff.bone_shield.stack > 5 & rune >= 2 & runic_power.deficit >= 30 & ! talent.shattering_bone.enabled || ( talent.shattering_bone.enabled & death_and_decay.ticking )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "death_strike",
|
|
["description"] = "Use Death Strike if Coagulatopathy is down or about to expire or if Icy Talons is down or about to expire.",
|
|
["criteria"] = "buff.coagulopathy.remains <= gcd.max || buff.icy_talons.remains <= gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.bone_shield.remains <= 4 || buff.bone_shield.stack < variable.bone_shield_refresh_value ) & runic_power.deficit > 20",
|
|
["action"] = "marrowrend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & target.time_to_pct_35 < 5 & target.time_to_die > ( dot.soul_reaper.remains + 5 )",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.time_to_pct_35 < 5 & active_enemies >= 2 & target.time_to_die > ( dot.soul_reaper.remains + 5 )",
|
|
["action"] = "soul_reaper",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! death_and_decay.ticking & ( talent.sanguine_ground.enabled || talent.unholy_ground.enabled )",
|
|
["action"] = "death_and_decay",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.blood_boil > 2 & charges_fractional >= 1.1",
|
|
["action"] = "blood_boil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( 25 + spell_targets.heart_strike * talent.heartbreaker.enabled * 2 )",
|
|
["var_name"] = "heart_strike_rp_drw",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit <= variable.heart_strike_rp_drw || runic_power >= variable.death_strike_dump_amount",
|
|
["action"] = "death_strike",
|
|
},
|
|
{
|
|
["action"] = "consumption",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges_fractional >= 1.1 & buff.hemostasis.stack < 5",
|
|
["action"] = "blood_boil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune.time_to_2 < gcd.max || runic_power.deficit >= variable.heart_strike_rp_drw",
|
|
["action"] = "heart_strike",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Interrupt.",
|
|
["action"] = "mind_freeze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Interrupt.",
|
|
["action"] = "strangulate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "65",
|
|
["var_name"] = "death_strike_dump_amount",
|
|
["description"] = "Death Strike at 65+ Runic Power.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["criteria"] = "! talent.deaths_caress.enabled || talent.consumption.enabled || talent.blooddrinker.enabled",
|
|
["var_name"] = "bone_shield_refresh_value",
|
|
["value"] = "4",
|
|
["action"] = "variable",
|
|
["value_else"] = "5",
|
|
["description"] = "Refresh Bone Shield at 4 stacks with Death's Caress, Consumption, or Blooddrinker, otherwise 5 stacks.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "potion",
|
|
["description"] = "Use a Potion during Dancing Rune Weapon.",
|
|
["criteria"] = "buff.dancing_rune_weapon.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Call the trinkets action list.",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Raise Dead if it's off cooldown.",
|
|
["action"] = "raise_dead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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,
|
|
["action"] = "vampiric_blood",
|
|
["description"] = "Use Vampiric Blood if you're taking sufficient damage and you don't have Dancing Rune Weapon, Icebound Fortitude, Vampiric Blood, or Vampiric Strength up.",
|
|
["criteria"] = "tanking & incoming_damage_5s >= vb_damage & ! ( buff.dancing_rune_weapon.up || buff.icebound_fortitude.up || buff.vampiric_blood.up || buff.vampiric_strength.up )",
|
|
},
|
|
{
|
|
["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"] = "death_strike",
|
|
["description"] = "Use Death Strike if your Blood Shield is going to expire.",
|
|
["criteria"] = "buff.blood_shield.up & buff.blood_shield.remains <= gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "deaths_caress",
|
|
["description"] = "Use Death's Caress if Bone Shield is not up.",
|
|
["criteria"] = "! buff.bone_shield.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "death_and_decay",
|
|
["description"] = "Use Death and Decay if it's not already up and you have 4 targets, Unholy Ground, Sanguine Ground, or Crimson Scourge.",
|
|
["criteria"] = "! death_and_decay.ticking & ( talent.unholy_ground.enabled || talent.sanguine_ground.enabled || spell_targets.death_and_decay > 3 || buff.crimson_scourge.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "death_strike",
|
|
["description"] = "Use Death Strike if Coagulatopathy is down or about to expire, if Icy Talons is down or about to expire, if you're below the Death Strike dump amount, if you're below the Heart Strike Runic Power threshold, or if the target is about to die.",
|
|
["criteria"] = "buff.coagulopathy.remains <= gcd.max || buff.icy_talons.remains <= gcd.max || runic_power >= variable.death_strike_dump_amount || runic_power.deficit <= variable.heart_strike_rp || boss & fight_remains < 10",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blooddrinker",
|
|
["description"] = "Use Blooddrinker if Dancing Rune Weapon is not up.",
|
|
["criteria"] = "! buff.dancing_rune_weapon.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Call the racials action list.",
|
|
["list_name"] = "racials",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "sacrificial_pact",
|
|
["description"] = "Use Sacrificial Pact if Dancing Rune Weapon is not active and the Ghoul is about to expire or the bossfight is about to end.",
|
|
["criteria"] = "! buff.dancing_rune_weapon.up & ( pet.ghoul.remains < 2 || boss & fight_remains < gcd.max )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Call the covenants action list if they are active and valid.",
|
|
["strict"] = 1,
|
|
["criteria"] = "! covenant.none",
|
|
["list_name"] = "covenants",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blood_tap",
|
|
["description"] = "Use Blood Tap if you have 2 or fewer runes, you won't reach 4 charges within the global cooldown, and you're about to cap charges, or if you will not reach 3 runes within global cooldown.",
|
|
["criteria"] = "( rune <= 2 & rune.time_to_4 > gcd.max & charges_fractional >= 1.8 ) || rune.time_to_3 > gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "gorefiends_grasp",
|
|
["description"] = "Use Gorefiend's Grasp if Tightening Grasp is talented.",
|
|
["criteria"] = "talent.tightening_grasp.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "empower_rune_weapon",
|
|
["description"] = "Use Empower Ruen Weapon if you have 6 or fewer runes and you're not about to cap Runic Power.",
|
|
["criteria"] = "rune < 6 & runic_power.deficit > 5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Abomination's Limb on cooldown.",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "dancing_rune_weapon",
|
|
["description"] = "Use Dancing Rune Weapon if it is not already active.",
|
|
["criteria"] = "! buff.dancing_rune_weapon.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["description"] = "Use the drw_up action list if Dancing Rune Weapon is active.",
|
|
["strict"] = 1,
|
|
["criteria"] = "buff.dancing_rune_weapon.up",
|
|
["list_name"] = "drw_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Call the standard action list (which will not be used if Dancing Rune Weapon is active).",
|
|
["list_name"] = "standard",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "fleshcraft",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["standard"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bone_shield.stack > 5 & rune >= 2 & runic_power.deficit >= 30 & ! talent.shattering_bone.enabled || ( talent.shattering_bone.enabled & death_and_decay.ticking ) & cooldown.dancing_rune_weapon.remains >= 25",
|
|
["action"] = "tombstone",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( 10 + spell_targets.heart_strike * talent.heartbreaker.enabled * 2 )",
|
|
["var_name"] = "heart_strike_rp",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coagulopathy.remains <= gcd.max || buff.icy_talons.remains <= gcd.max || runic_power >= variable.death_strike_dump_amount || runic_power.deficit <= variable.heart_strike_rp || boss & fight_remains < 10",
|
|
["action"] = "death_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.bone_shield.remains <= 4 || ( buff.bone_shield.stack < variable.bone_shield_refresh_value + 1 ) ) & runic_power.deficit > 10 & ! ( talent.insatiable_blade.enabled & cooldown.dancing_rune_weapon.remains < buff.bone_shield.remains ) & ! talent.consumption.enabled & ! talent.blooddrinker.enabled & rune.time_to_3 > gcd.max",
|
|
["action"] = "deaths_caress",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.bone_shield.remains <= 4 || buff.bone_shield.stack < variable.bone_shield_refresh_value ) & runic_power.deficit > 20 & ! ( talent.insatiable_blade.enabled & cooldown.dancing_rune_weapon.remains < buff.bone_shield.remains )",
|
|
["action"] = "marrowrend",
|
|
},
|
|
{
|
|
["action"] = "consumption",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & target.time_to_pct_35 < 5 & target.time_to_die > ( dot.soul_reaper.remains + 5 )",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.time_to_pct_35 < 5 & active_enemies >= 2 & target.time_to_die > ( dot.soul_reaper.remains + 5 )",
|
|
["action"] = "soul_reaper",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power >= 100",
|
|
["action"] = "bonestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges_fractional >= 1.8 & ( buff.hemostasis.stack <= ( 5 - spell_targets.blood_boil ) || spell_targets.blood_boil > 2 )",
|
|
["action"] = "blood_boil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune.time_to_4 < gcd.max",
|
|
["action"] = "heart_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges_fractional >= 1.1",
|
|
["action"] = "blood_boil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( rune > 1 & ( rune.time_to_3 < gcd.max || buff.bone_shield.stack > 7 ) )",
|
|
["action"] = "heart_strike",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff )",
|
|
["var_name"] = "trinket_1_buffs",
|
|
["description"] = "Prioritize damage dealing on use trinkets over trinkets that give buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff )",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.ruby_whelp_shell || trinket.t1.is.whispering_incarnate_icon",
|
|
["var_name"] = "trinket_1_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.ruby_whelp_shell || trinket.t2.is.whispering_incarnate_icon",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_2_buffs",
|
|
},
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["enabled"] = true,
|
|
["action"] = "use_items",
|
|
["criteria"] = "( variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( variable.trinket_2_buffs || trinket.t2.cooldown.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "variable.trinket_1_buffs & ( buff.dancing_rune_weapon.up || ! talent.dancing_rune_weapon.enabled || cooldown.dancing_rune_weapon.remains > 20 ) & ( variable.trinket_2_exclude || trinket.t2.cooldown.remains || ! trinket.t2.has_cooldown || variable.trinket_2_buffs )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "variable.trinket_2_buffs & ( buff.dancing_rune_weapon.up || ! talent.dancing_rune_weapon.enabled || cooldown.dancing_rune_weapon.remains > 20 ) & ( variable.trinket_1_exclude || trinket.t1.cooldown.remains || ! trinket.t1.has_cooldown || variable.trinket_1_buffs )",
|
|
},
|
|
},
|
|
["racials"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.dancing_rune_weapon.ready & ( ! cooldown.blooddrinker.ready || ! talent.blooddrinker.enabled )",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["action"] = "berserking",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 2 || rune < 1 & runic_power.deficit > 60",
|
|
["action"] = "arcane_pulse",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unholy_strength.up",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bag_of_tricks",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit > 20",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
["covenants"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "deaths_due",
|
|
["description"] = "Use Death's Due if Death and Decay is not ticking and you don't have Death's Due or Crimson Scourge up.",
|
|
["criteria"] = "! death_and_decay.ticking & ( ! buff.deaths_due.up || buff.deaths_due.remains < 4 || buff.crimson_scourge.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "swarming_mist",
|
|
["description"] = "Use Swarming Mist if Dancing Rune Weapon is active for 3+ seconds and you have 90+ Runic Power (offset by number of targets).",
|
|
["criteria"] = "cooldown.dancing_rune_weapon.remains > 3 & runic_power >= ( 90 - ( spell_targets.swarming_mist * 3 ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soulbind.pustule_eruption.enabled || soulbind.volatile_solvent.enabled & ! buff.volatile_solvent_humanoid.up",
|
|
["description"] = "Use Fleshcraft if you have Pustule Eruption or Volatile Solvent and Volatile Solvent is not active.",
|
|
["interrupt_if"] = "soulbind.volatile_solvent",
|
|
["interrupt_immediate"] = "1",
|
|
["action"] = "fleshcraft",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shackle_the_unworthy",
|
|
["description"] = "Use Shackle the Unworthy if you have 3 or fewer runes and Runic Power is below 100.",
|
|
["criteria"] = "rune < 3 & runic_power < 100",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20230506,
|
|
["warnings"] = "The import for 'drw_up' required some automated changes.\nLine 2: Converted 'talent.shattering_bone' to 'talent.shattering_bone.enabled' (1x).\nLine 7: Converted 'talent.sanguine_ground' to 'talent.sanguine_ground.enabled' (1x).\nLine 7: Converted 'talent.unholy_ground' to 'talent.unholy_ground.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 13: Converted 'talent.unholy_ground' to 'talent.unholy_ground.enabled' (1x).\nLine 13: Converted 'talent.sanguine_ground' to 'talent.sanguine_ground.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 1: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 1: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 1: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 1: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 1: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 1: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 1: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 1: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 1: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 1: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 1: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 2: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 2: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 2: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 2: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 2: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 3: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 4: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 4: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 8: Converted 'talent.dancing_rune_weapon' to 'talent.dancing_rune_weapon.enabled' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 8: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 9: Converted 'talent.dancing_rune_weapon' to 'talent.dancing_rune_weapon.enabled' (1x).\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 9: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'standard' required some automated changes.\nLine 1: Converted 'talent.shattering_bone' to 'talent.shattering_bone.enabled' (1x).\nLine 4: Converted 'talent.insatiable_blade' to 'talent.insatiable_blade.enabled' (1x).\nLine 5: Converted 'talent.insatiable_blade' to 'talent.insatiable_blade.enabled' (1x).\n\nThe import for 'covenants' required some automated changes.\nLine 3: Converted 'soulbind.pustule_eruption' to 'soulbind.pustule_eruption.enabled' (1x).\nLine 3: Converted 'soulbind.volatile_solvent' to 'soulbind.volatile_solvent.enabled' (1x).\n\nImported 7 action lists.\n",
|
|
["author"] = "SimC",
|
|
["profile"] = "actions.precombat+=/fleshcraft\n\n# Interrupt.\nactions+=/mind_freeze\n# Interrupt.\nactions+=/strangulate\n# Death Strike at 65+ Runic Power.\nactions+=/variable,name=death_strike_dump_amount,value=65\n# Refresh Bone Shield at 4 stacks with Death's Caress, Consumption, or Blooddrinker; otherwise 5 stacks.\nactions+=/variable,name=bone_shield_refresh_value,value=4,op=setif,condition=!talent.deaths_caress.enabled||talent.consumption.enabled||talent.blooddrinker.enabled,value_else=5\n# Use a Potion during Dancing Rune Weapon.\nactions+=/potion,if=buff.dancing_rune_weapon.up\n# Call the trinkets action list.\nactions+=/call_action_list,name=trinkets\n# Raise Dead if it's off cooldown.\nactions+=/raise_dead\n# Use Icebound Fortitude if you're taking sufficient damage and you don't have Dancing Rune Weapon or Vampiric Blood up.\nactions+=/icebound_fortitude,if=tanking&incoming_damage_5s>=ibf_damage&!(buff.dancing_rune_weapon.up||buff.vampiric_blood.up)\n# Use Vampiric Blood if you're taking sufficient damage and you don't have Dancing Rune Weapon, Icebound Fortitude, Vampiric Blood, or Vampiric Strength up.\nactions+=/vampiric_blood,if=tanking&incoming_damage_5s>=vb_damage&!(buff.dancing_rune_weapon.up||buff.icebound_fortitude.up||buff.vampiric_blood.up||buff.vampiric_strength.up)\n# Use Rune Tap if you're taking sufficient damage and you don't have Dancing Rune Weapon, Vampiric Blood, or Icebound Fortitude up.\nactions+=/rune_tap,if=tanking&incoming_damage_5s>=rt_damage&!(buff.dancing_rune_weapon.up||buff.vampiric_blood.up||buff.icebound_fortitude.up)\n# Use Death Strike if your Blood Shield is going to expire.\nactions+=/death_strike,if=buff.blood_shield.up&buff.blood_shield.remains<=gcd.max\n# Use Death's Caress if Bone Shield is not up.\nactions+=/deaths_caress,if=!buff.bone_shield.up\n# Use Death and Decay if it's not already up and you have 4 targets, Unholy Ground, Sanguine Ground, or Crimson Scourge.\nactions+=/death_and_decay,if=!death_and_decay.ticking&(talent.unholy_ground||talent.sanguine_ground||spell_targets.death_and_decay>3||buff.crimson_scourge.up)\n# Use Death Strike if Coagulatopathy is down or about to expire, if Icy Talons is down or about to expire, if you're below the Death Strike dump amount, if you're below the Heart Strike Runic Power threshold, or if the target is about to die.\nactions+=/death_strike,if=buff.coagulopathy.remains<=gcd||buff.icy_talons.remains<=gcd||runic_power>=variable.death_strike_dump_amount||runic_power.deficit<=variable.heart_strike_rp||boss&fight_remains<10\n# Use Blooddrinker if Dancing Rune Weapon is not up.\nactions+=/blooddrinker,if=!buff.dancing_rune_weapon.up\n# Call the racials action list.\nactions+=/call_action_list,name=racials\n# Use Sacrificial Pact if Dancing Rune Weapon is not active and the Ghoul is about to expire or the bossfight is about to end.\nactions+=/sacrificial_pact,if=!buff.dancing_rune_weapon.up&(pet.ghoul.remains<2||boss&fight_remains<gcd)\n# Call the covenants action list if they are active and valid.\nactions+=/call_action_list,name=covenants,strict=1,if=!covenant.none\n# Use Blood Tap if you have 2 or fewer runes, you won't reach 4 charges within the global cooldown, and you're about to cap charges, or if you will not reach 3 runes within global cooldown.\nactions+=/blood_tap,if=(rune<=2&rune.time_to_4>gcd&charges_fractional>=1.8)||rune.time_to_3>gcd\n# Use Gorefiend's Grasp if Tightening Grasp is talented.\nactions+=/gorefiends_grasp,if=talent.tightening_grasp.enabled\n# Use Empower Ruen Weapon if you have 6 or fewer runes and you're not about to cap Runic Power.\nactions+=/empower_rune_weapon,if=rune<6&runic_power.deficit>5\n# Use Abomination's Limb on cooldown.\nactions+=/abomination_limb\n# Use Dancing Rune Weapon if it is not already active.\nactions+=/dancing_rune_weapon,if=!buff.dancing_rune_weapon.up\n# Use the drw_up action list if Dancing Rune Weapon is active.\nactions+=/run_action_list,name=drw_up,strict=1,if=buff.dancing_rune_weapon.up\n# Call the standard action list (which will not be used if Dancing Rune Weapon is active).\nactions+=/call_action_list,name=standard\n\n# Use Death's Due if Death and Decay is not ticking and you don't have Death's Due or Crimson Scourge up.\nactions.covenants=deaths_due,if=!death_and_decay.ticking&(!buff.deaths_due.up||buff.deaths_due.remains<4||buff.crimson_scourge.up)\n# Use Swarming Mist if Dancing Rune Weapon is active for 3+ seconds and you have 90+ Runic Power (offset by number of targets).\nactions.covenants+=/swarming_mist,if=cooldown.dancing_rune_weapon.remains>3&runic_power>=(90-(spell_targets.swarming_mist*3))\n# Use Fleshcraft if you have Pustule Eruption or Volatile Solvent and Volatile Solvent is not active.\nactions.covenants+=/fleshcraft,if=soulbind.pustule_eruption||soulbind.volatile_solvent&!buff.volatile_solvent_humanoid.up,interrupt_immediate=1,interrupt_global=1,interrupt_if=soulbind.volatile_solvent\n# Use Shackle the Unworthy if you have 3 or fewer runes and Runic Power is below 100.\nactions.covenants+=/shackle_the_unworthy,if=rune<3&runic_power<100\n\n# Use Blood Boil if Blood Plague is not active.\nactions.drw_up+=/blood_boil,if=!dot.blood_plague.ticking\n# Use Tombstone if you have 5+ Bone Shield stacks, 2+ runes, 30+ Runic Power, and Shattering Bones is not talented or Death and Decay is not ticking.\nactions.drw_up+=/tombstone,if=buff.bone_shield.stack>5&rune>=2&runic_power.deficit>=30&!talent.shattering_bone||(talent.shattering_bone.enabled&death_and_decay.ticking)\n# Use Death Strike if Coagulatopathy is down or about to expire or if Icy Talons is down or about to expire.\nactions.drw_up+=/death_strike,if=buff.coagulopathy.remains<=gcd||buff.icy_talons.remains<=gcd\nactions.drw_up+=/marrowrend,if=(buff.bone_shield.remains<=4||buff.bone_shield.stack<variable.bone_shield_refresh_value)&runic_power.deficit>20\nactions.drw_up+=/soul_reaper,if=active_enemies=1&target.time_to_pct_35<5&target.time_to_die>(dot.soul_reaper.remains+5)\nactions.drw_up+=/soul_reaper,cycle_targets=1,if=target.time_to_pct_35<5&active_enemies>=2&target.time_to_die>(dot.soul_reaper.remains+5)\nactions.drw_up+=/death_and_decay,if=!death_and_decay.ticking&(talent.sanguine_ground||talent.unholy_ground)\nactions.drw_up+=/blood_boil,if=spell_targets.blood_boil>2&charges_fractional>=1.1\nactions.drw_up+=/variable,name=heart_strike_rp_drw,value=(25+spell_targets.heart_strike*talent.heartbreaker.enabled*2)\nactions.drw_up+=/death_strike,if=runic_power.deficit<=variable.heart_strike_rp_drw||runic_power>=variable.death_strike_dump_amount\nactions.drw_up+=/consumption\nactions.drw_up+=/blood_boil,if=charges_fractional>=1.1&buff.hemostasis.stack<5\nactions.drw_up+=/heart_strike,if=rune.time_to_2<gcd||runic_power.deficit>=variable.heart_strike_rp_drw\n\nactions.racials=blood_fury,if=cooldown.dancing_rune_weapon.ready&(!cooldown.blooddrinker.ready||!talent.blooddrinker.enabled)\nactions.racials+=/berserking\nactions.racials+=/arcane_pulse,if=active_enemies>=2||rune<1&runic_power.deficit>60\nactions.racials+=/lights_judgment,if=buff.unholy_strength.up\nactions.racials+=/ancestral_call\nactions.racials+=/fireblood\nactions.racials+=/bag_of_tricks\nactions.racials+=/arcane_torrent,if=runic_power.deficit>20\n\nactions.standard+=/tombstone,if=buff.bone_shield.stack>5&rune>=2&runic_power.deficit>=30&!talent.shattering_bone||(talent.shattering_bone.enabled&death_and_decay.ticking)&cooldown.dancing_rune_weapon.remains>=25\nactions.standard+=/variable,name=heart_strike_rp,value=(10+spell_targets.heart_strike*talent.heartbreaker.enabled*2)\nactions.standard+=/death_strike,if=buff.coagulopathy.remains<=gcd||buff.icy_talons.remains<=gcd||runic_power>=variable.death_strike_dump_amount||runic_power.deficit<=variable.heart_strike_rp||boss&fight_remains<10\nactions.standard+=/deaths_caress,if=(buff.bone_shield.remains<=4||(buff.bone_shield.stack<variable.bone_shield_refresh_value+1))&runic_power.deficit>10&!(talent.insatiable_blade&cooldown.dancing_rune_weapon.remains<buff.bone_shield.remains)&!talent.consumption.enabled&!talent.blooddrinker.enabled&rune.time_to_3>gcd\nactions.standard+=/marrowrend,if=(buff.bone_shield.remains<=4||buff.bone_shield.stack<variable.bone_shield_refresh_value)&runic_power.deficit>20&!(talent.insatiable_blade&cooldown.dancing_rune_weapon.remains<buff.bone_shield.remains)\nactions.standard+=/consumption\nactions.standard+=/soul_reaper,if=active_enemies=1&target.time_to_pct_35<5&target.time_to_die>(dot.soul_reaper.remains+5)\nactions.standard+=/soul_reaper,cycle_targets=1,if=target.time_to_pct_35<5&active_enemies>=2&target.time_to_die>(dot.soul_reaper.remains+5)\nactions.standard+=/bonestorm,if=runic_power>=100\nactions.standard+=/blood_boil,if=charges_fractional>=1.8&(buff.hemostasis.stack<=(5-spell_targets.blood_boil)||spell_targets.blood_boil>2)\nactions.standard+=/heart_strike,if=rune.time_to_4<gcd\nactions.standard+=/blood_boil,if=charges_fractional>=1.1\nactions.standard+=/heart_strike,if=(rune>1&(rune.time_to_3<gcd||buff.bone_shield.stack>7))\n\n# Prioritize damage dealing on use trinkets over trinkets that give buffs\nactions.trinkets+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_buff.strength||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit)\nactions.trinkets+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_buff.strength||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit)\nactions.trinkets+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell||trinket.1.is.whispering_incarnate_icon\nactions.trinkets+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell||trinket.2.is.whispering_incarnate_icon\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_buffs\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_buffs\nactions.trinkets+=/use_items,use_off_gcd=1,if=(variable.trinket_1_buffs||trinket.1.cooldown.remains)&(variable.trinket_2_buffs||trinket.2.cooldown.remains)\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=variable.trinket_1_buffs&(buff.dancing_rune_weapon.up||!talent.dancing_rune_weapon||cooldown.dancing_rune_weapon.remains>20)&(variable.trinket_2_exclude||trinket.2.cooldown.remains||!trinket.2.has_cooldown||variable.trinket_2_buffs)\nactions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=variable.trinket_2_buffs&(buff.dancing_rune_weapon.up||!talent.dancing_rune_weapon||cooldown.dancing_rune_weapon.remains>20)&(variable.trinket_1_exclude||trinket.1.cooldown.remains||!trinket.1.has_cooldown||variable.trinket_1_buffs)",
|
|
},
|
|
},
|
|
},
|
|
["Quilberg - Thunderhorn"] = {
|
|
["runOnce"] = {
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["removeOldThrottles_20241115"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_71"] = true,
|
|
["resetAllPotions_20201209"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["resetGlobalCooldownSync_20210403"] = true,
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
["forceEnableEnhancedRecheckBoomkin_20210712"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_72"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_73"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
},
|
|
["specs"] = {
|
|
[73] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["spell_block_amount"] = 25,
|
|
["rallying_cry_health"] = 50,
|
|
["spell_reflection_filter"] = true,
|
|
["stack_shield_block"] = false,
|
|
["stance_weaving"] = false,
|
|
["last_stand_amount"] = 50,
|
|
["rallying_cry_condition"] = false,
|
|
["free_revenge"] = true,
|
|
["shield_wall_amount"] = 50,
|
|
["rallying_cry_amount"] = 50,
|
|
["spell_block_health"] = 75,
|
|
["shockwave_interrupt"] = true,
|
|
["shield_wall_health"] = 50,
|
|
["heroic_charge"] = false,
|
|
["overlap_ignore_pain"] = false,
|
|
["last_stand_condition"] = false,
|
|
["last_stand_offensively"] = false,
|
|
["shield_wall_condition"] = false,
|
|
["last_stand_health"] = 50,
|
|
["victory_rush_health"] = 75,
|
|
["reserve_rage"] = 35,
|
|
},
|
|
["potionsReset"] = 20180919.1,
|
|
["debuffPadding"] = 0,
|
|
["potion"] = "potion_of_phantom_fire",
|
|
["buffPadding"] = 0,
|
|
},
|
|
[71] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["shockwave_interrupt"] = true,
|
|
["spell_reflection_filter"] = true,
|
|
["heroic_charge"] = false,
|
|
},
|
|
["potionsReset"] = 20180919.1,
|
|
["debuffPadding"] = 0,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[72] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["check_ww_range"] = false,
|
|
["charge_min_range"] = 10,
|
|
["t30_bloodthirst_crit"] = 95,
|
|
["shockwave_interrupt"] = true,
|
|
["spell_reflection_filter"] = true,
|
|
["heroic_charge"] = false,
|
|
},
|
|
["potionsReset"] = 20180919.1,
|
|
["debuffPadding"] = 0,
|
|
["potion"] = "potion_of_phantom_fire",
|
|
["buffPadding"] = 0,
|
|
},
|
|
[102] = {
|
|
["enhancedRecheck"] = true,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Fury"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250308,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-03-08: Sync with SimC\n\n2025-02-28: Additional SimC changes\n\n2025-02-26: Sync with SimC",
|
|
["profile"] = "actions.precombat+=/battle_shout\nactions.precombat+=/berserker_stance,toggle=on\nactions.precombat+=/variable,name=treacherous_transmitter_precombat_cast,value=2\nactions.precombat+=/use_item,name=treacherous_transmitter\nactions.precombat+=/recklessness,if=!equipped.fyralath_the_dreamrender\nactions.precombat+=/avatar\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.treacherous_transmitter\n# Evaluates a trinkets cooldown, divided by avatar or odyns fur. If it's value has no remainder return 1, else return 0.5.\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=trinket.1.has_use_buff&(trinket.1.cooldown.duration%%cooldown.avatar.duration=0||trinket.1.cooldown.duration%%cooldown.odyns_fury.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=trinket.2.has_use_buff&(trinket.2.cooldown.duration%%cooldown.avatar.duration=0||trinket.2.cooldown.duration%%cooldown.odyns_fury.duration=0)\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_stat.any_dps&!variable.trinket_1_exclude)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_stat.any_dps&!variable.trinket_2_exclude)\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync))\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.algethar_puzzle_box\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.algethar_puzzle_box\nactions.precombat+=/variable,name=execute_phase,value=(talent.massacre.enabled&target.health.pct<35)||target.health.pct<20\nactions.precombat+=/variable,name=on_gcd_racials,value=buff.recklessness.down&buff.avatar.down&rage<80&buff.sudden_death.down&!cooldown.bladestorm.ready&(!cooldown.execute.ready||!variable.execute_phase)\n\nactions+=/pummel,if=target.debuff.casting.react\nactions+=/charge,if=time<=0.5||movement.distance>5\nactions+=/heroic_leap,if=movement.distance>25\nactions+=/potion,if=boss&(fight_remains>300||boss&fight_remains<35&buff.recklessness.up||boss&fight_remains<25)\nactions+=/use_item,name=treacherous_transmitter\n\n## Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.\nactions+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&!variable.trinket_1_manual&(!buff.avatar.up&trinket.1.cast_time>0||!trinket.1.cast_time>0)&buff.avatar.up&(variable.trinket_2_exclude||!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains\nactions+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&(!buff.avatar.up&trinket.2.cast_time>0||!trinket.2.cast_time>0)&buff.avatar.up&(variable.trinket_1_exclude||!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains\n## If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.\nactions+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)&!variable.trinket_1_manual&(!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs)||(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)&!variable.trinket_2_manual&(!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs)||(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions+=/use_item,slot=main_hand,if=!equipped.fyralath_the_dreamrender&!equipped.bestinslots&(!variable.trinket_1_buffs||trinket.1.cooldown.remains)&(!variable.trinket_2_buffs||trinket.2.cooldown.remains)\nactions+=/use_item,name=bestinslots,if=target.time_to_die>120&(cooldown.avatar.remains>20&(trinket.1.cooldown.remains||trinket.2.cooldown.remains)||cooldown.avatar.remains>20&(!trinket.1.has_cooldown||!trinket.2.has_cooldown))||target.time_to_die<=120&target.health.pct<35&cooldown.avatar.remains>85||boss&target.time_to_die<15\nactions+=/lights_judgment,if=buff.recklessness.down&buff.avatar.down&rage<80&buff.sudden_death.down&!cooldown.bladestorm.ready&(!cooldown.execute.ready||!variable.execute_phase)\nactions+=/bag_of_tricks,if=buff.recklessness.down&buff.avatar.down&rage<80&buff.sudden_death.down&!cooldown.bladestorm.ready&(!cooldown.execute.ready||!variable.execute_phase)\nactions+=/berserking,if=buff.recklessness.up\nactions+=/blood_fury\nactions+=/fireblood\nactions+=/ancestral_call\n## actions+=/invoke_external_buff,name=power_infusion,if=buff.avatar.remains>15&fight_remains>=135||variable.execute_phase&buff.avatar.up||fight_remains<=25\nactions+=/run_action_list,name=slayer,strict=1,if=!talent.lightning_strikes\nactions+=/run_action_list,name=thane,strict=1,if=talent.lightning_strikes\n\nactions.slayer+=/recklessness\nactions.slayer+=/avatar,if=cooldown.recklessness.remains\nactions.slayer+=/execute,if=buff.ashen_juggernaut.up&buff.ashen_juggernaut.remains<=gcd\nactions.slayer+=/champions_spear,if=buff.enrage.up&(cooldown.bladestorm.remains>=2||cooldown.bladestorm.remains>=16&debuff.marked_for_execution.stack=3)\nactions.slayer+=/bladestorm,if=buff.enrage.up&(talent.reckless_abandon&cooldown.avatar.remains>=24||talent.anger_management&cooldown.recklessness.remains>=24)\nactions.slayer+=/odyns_fury,if=(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.slayer+=/whirlwind,if=active_enemies>=2&talent.meat_cleaver&buff.meat_cleaver.down\nactions.slayer+=/execute,if=buff.sudden_death.stack=2&buff.sudden_death.remains<7\nactions.slayer+=/execute,if=buff.sudden_death.up&buff.sudden_death.remains<2\nactions.slayer+=/execute,if=buff.sudden_death.up&buff.imminent_demise.stack<3&cooldown.bladestorm.remains<25\nactions.slayer+=/execute,if=debuff.marked_for_execution.up&buff.brutal_finish.up&debuff.overwhelmed.stack<10\nactions.slayer+=/onslaught,if=talent.tenderize&buff.brutal_finish.up\nactions.slayer+=/rampage,if=!buff.enrage.up||buff.slaughtering_strikes.stack>=4\nactions.slayer+=/crushing_blow,if=action.raging_blow.charges=2||buff.brutal_finish.up&(!debuff.champions_might.up||debuff.champions_might.up&debuff.champions_might.remains>gcd)\nactions.slayer+=/thunderous_roar,if=buff.enrage.up&!buff.brutal_finish.up\nactions.slayer+=/execute,if=buff.ashen_juggernaut.up&buff.ashen_juggernaut.remains<3\nactions.slayer+=/execute,if=debuff.marked_for_execution.stack=3\nactions.slayer+=/bloodbath,if=buff.bloodcraze.stack>=1||(talent.uproar&dot.bloodbath_dot.remains<40&talent.bloodborne)||buff.enrage.up&buff.enrage.remains<gcd\nactions.slayer+=/raging_blow,if=buff.brutal_finish.up&buff.slaughtering_strikes.stack<5&(!debuff.champions_might.up||debuff.champions_might.up&debuff.champions_might.remains>gcd)\nactions.slayer+=/rampage,if=action.raging_blow.charges<=1&rage>=100&talent.anger_management&buff.recklessness.down\nactions.slayer+=/bloodthirst,if=target.health.pct<35&talent.vicious_contempt&buff.brutal_finish.up&buff.enrage.up&buff.bloodcraze.stack>=2||active_enemies>=5\nactions.slayer+=/rampage,if=rage>=130\nactions.slayer+=/rampage,if=rage>=115&talent.reckless_abandon&buff.recklessness.up&buff.slaughtering_strikes.stack>=3\nactions.slayer+=/bloodbath,if=(buff.bloodcraze.stack>=4||crit_pct_current>=85)\nactions.slayer+=/crushing_blow\nactions.slayer+=/bloodbath,if=target.health.pct<35&talent.vicious_contempt\nactions.slayer+=/bloodbath\nactions.slayer+=/raging_blow,if=buff.opportunist.up\nactions.slayer+=/bloodthirst,if=target.health.pct<35&talent.vicious_contempt&buff.bloodcraze.stack>=2\nactions.slayer+=/rampage,if=rage>=100&talent.anger_management&buff.recklessness.up\nactions.slayer+=/bloodthirst,if=buff.bloodcraze.stack>=4||crit_pct_current>=85\nactions.slayer+=/raging_blow\nactions.slayer+=/bloodthirst\nactions.slayer+=/execute,if=target.health.pct<35&talent.massacre||target.health.pct<20\nactions.slayer+=/rampage,if=talent.unbridled_ferocity\nactions.slayer+=/rampage\nactions.slayer+=/execute\nactions.slayer+=/onslaught,if=talent.tenderize\nactions.slayer+=/whirlwind,if=talent.improved_whirlwind\nactions.slayer+=/storm_bolt,if=buff.bladestorm.up\n\nactions.thane+=/recklessness\nactions.thane+=/avatar\nactions.thane+=/ravager\nactions.thane+=/thunder_blast,if=buff.enrage.up&talent.meat_cleaver\nactions.thane+=/thunder_clap,if=buff.meat_cleaver.down&talent.meat_cleaver&active_enemies>=2\nactions.thane+=/thunderous_roar,if=buff.enrage.up\nactions.thane+=/champions_spear,if=buff.enrage.up\nactions.thane+=/odyns_fury,if=(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.thane+=/rampage,if=buff.enrage.down\nactions.thane+=/execute,if=talent.ashen_juggernaut&buff.ashen_juggernaut.remains<=gcd&buff.enrage.up\nactions.thane+=/rampage,if=talent.bladestorm&cooldown.bladestorm.remains<=gcd&!debuff.champions_might.up\nactions.thane+=/bladestorm,if=buff.enrage.up&talent.unhinged\nactions.thane+=/bloodbath,if=buff.bloodcraze.stack>=2\nactions.thane+=/rampage,if=rage>=115&talent.reckless_abandon&buff.recklessness.up&buff.slaughtering_strikes.stack>=3\nactions.thane+=/crushing_blow\nactions.thane+=/bloodbath\nactions.thane+=/onslaught,if=talent.tenderize\nactions.thane+=/rampage\nactions.thane+=/bloodthirst,if=talent.vicious_contempt&target.health.pct<35&buff.bloodcraze.stack>=2||!dot.ravager.remains&buff.bloodcraze.stack>=3||active_enemies>=6\nactions.thane+=/raging_blow\nactions.thane+=/execute,if=talent.ashen_juggernaut\nactions.thane+=/thunder_blast\nactions.thane+=/bloodthirst\nactions.thane+=/execute\nactions.thane+=/thunder_clap",
|
|
["version"] = 20250308,
|
|
["warnings"] = "The import for 'thane' required some automated changes.\nLine 4: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\nLine 5: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\nLine 8: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 10: Converted 'talent.ashen_juggernaut' to 'talent.ashen_juggernaut.enabled' (1x).\nLine 11: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 12: Converted 'talent.unhinged' to 'talent.unhinged.enabled' (1x).\nLine 14: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 17: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 19: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 21: Converted 'talent.ashen_juggernaut' to 'talent.ashen_juggernaut.enabled' (1x).\n\nThe import for 'slayer' required some automated changes.\nLine 5: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 5: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 6: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 7: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\nLine 12: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 18: Converted 'talent.uproar' to 'talent.uproar.enabled' (1x).\nLine 18: Converted 'talent.bloodborne' to 'talent.bloodborne.enabled' (1x).\nLine 20: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 21: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 23: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 26: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 29: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 30: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 34: Converted 'talent.massacre' to 'talent.massacre.enabled' (1x).\nLine 35: Converted 'talent.unbridled_ferocity' to 'talent.unbridled_ferocity.enabled' (1x).\nLine 38: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 39: Converted 'talent.improved_whirlwind' to 'talent.improved_whirlwind.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 6: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 6: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 6: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 7: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 7: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 7: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 7: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 8: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 8: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 8: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 8: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 9: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 9: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 9: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 9: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 10: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 10: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 11: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 11: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 18: Converted 'talent.lightning_strikes' to 'talent.lightning_strikes.enabled' (1x).\nLine 19: Converted 'talent.lightning_strikes' to 'talent.lightning_strikes.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 7: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 8: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 9: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 9: Converted operations in 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%%cooldown.avatar.duration=0||trinket.t1.cooldown.duration%%cooldown.odyns_fury.duration=0)' to 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%cooldown.avatar.duration=0||trinket.t1.cooldown.duration%cooldown.odyns_fury.duration=0)'.\nLine 10: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 10: Converted operations in 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%%cooldown.avatar.duration=0||trinket.t2.cooldown.duration%%cooldown.odyns_fury.duration=0)' to 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%cooldown.avatar.duration=0||trinket.t2.cooldown.duration%cooldown.odyns_fury.duration=0)'.\nLine 11: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 11: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 12: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 12: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 13: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 13: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 13: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 13: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 13: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 13: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 13: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 13: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 13: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 13: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 14: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 15: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\n\nImported 4 action lists.\n",
|
|
["spec"] = 72,
|
|
["lists"] = {
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "battle_shout",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["toggle"] = "on",
|
|
["action"] = "berserker_stance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["var_name"] = "treacherous_transmitter_precombat_cast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! equipped.fyralath_the_dreamrender",
|
|
["action"] = "recklessness",
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_1_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Evaluates a trinkets cooldown, divided by avatar or odyns fur. If it's value has no remainder return 1, else return 0.5.",
|
|
["criteria"] = "trinket.t1.has_use_buff & ( trinket.t1.cooldown.duration % cooldown.avatar.duration = 0 || trinket.t1.cooldown.duration % cooldown.odyns_fury.duration = 0 )",
|
|
["var_name"] = "trinket_1_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["criteria"] = "trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration % cooldown.avatar.duration = 0 || trinket.t2.cooldown.duration % cooldown.odyns_fury.duration = 0 )",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_stat.any_dps & ! variable.trinket_1_exclude )",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_stat.any_dps & ! variable.trinket_2_exclude )",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / trinket.t2.buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_1_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_2_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( talent.massacre.enabled & target.health.pct < 35 ) || target.health.pct < 20",
|
|
["var_name"] = "execute_phase",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.recklessness.down & buff.avatar.down & rage < 80 & buff.sudden_death.down & ! cooldown.bladestorm.ready & ( ! cooldown.execute.ready || ! variable.execute_phase )",
|
|
["var_name"] = "on_gcd_racials",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.debuff.casting.react",
|
|
["action"] = "pummel",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time <= 0.5 || movement.distance > 5",
|
|
["action"] = "charge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "movement.distance > 25",
|
|
["action"] = "heroic_leap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & ( fight_remains > 300 || boss & fight_remains < 35 & buff.recklessness.up || boss & fight_remains < 25 )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! buff.avatar.up & trinket.t1.cast_time > 0 || ! trinket.t1.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || trinket.t1.buff_duration >= fight_remains",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! buff.avatar.up & trinket.t2.cast_time > 0 || ! trinket.t2.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || trinket.t2.buff_duration >= fight_remains",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.trinket_2_buffs & ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) & ! variable.trinket_2_manual & ( ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) || ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["criteria"] = "! equipped.fyralath_the_dreamrender & ! equipped.bestinslots & ( ! variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( ! variable.trinket_2_buffs || trinket.t2.cooldown.remains )",
|
|
["slot"] = "main_hand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "bestinslots",
|
|
["criteria"] = "target.time_to_die > 120 & ( cooldown.avatar.remains > 20 & ( trinket.t1.cooldown.remains || trinket.t2.cooldown.remains ) || cooldown.avatar.remains > 20 & ( ! trinket.t1.has_cooldown || ! trinket.t2.has_cooldown ) ) || target.time_to_die <= 120 & target.health.pct < 35 & cooldown.avatar.remains > 85 || boss & target.time_to_die < 15",
|
|
["name"] = "bestinslots",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.recklessness.down & buff.avatar.down & rage < 80 & buff.sudden_death.down & ! cooldown.bladestorm.ready & ( ! cooldown.execute.ready || ! variable.execute_phase )",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.recklessness.down & buff.avatar.down & rage < 80 & buff.sudden_death.down & ! cooldown.bladestorm.ready & ( ! cooldown.execute.ready || ! variable.execute_phase )",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.recklessness.up",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["action"] = "blood_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.lightning_strikes.enabled",
|
|
["list_name"] = "slayer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.lightning_strikes.enabled",
|
|
["list_name"] = "thane",
|
|
},
|
|
},
|
|
["slayer"] = {
|
|
{
|
|
["action"] = "recklessness",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.recklessness.remains",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ashen_juggernaut.up & buff.ashen_juggernaut.remains <= gcd.max",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & ( cooldown.bladestorm.remains >= 2 || cooldown.bladestorm.remains >= 16 & debuff.marked_for_execution.stack = 3 )",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & ( talent.reckless_abandon.enabled & cooldown.avatar.remains >= 24 || talent.anger_management.enabled & cooldown.recklessness.remains >= 24 )",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.enrage.up || talent.titanic_rage.enabled ) & cooldown.avatar.remains",
|
|
["action"] = "odyns_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 2 & talent.meat_cleaver.enabled & buff.meat_cleaver.down",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_death.stack = 2 & buff.sudden_death.remains < 7",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_death.up & buff.sudden_death.remains < 2",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_death.up & buff.imminent_demise.stack < 3 & cooldown.bladestorm.remains < 25",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.marked_for_execution.up & buff.brutal_finish.up & debuff.overwhelmed.stack < 10",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled & buff.brutal_finish.up",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.enrage.up || buff.slaughtering_strikes.stack >= 4",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "action.raging_blow.charges = 2 || buff.brutal_finish.up & ( ! debuff.champions_might.up || debuff.champions_might.up & debuff.champions_might.remains > gcd.max )",
|
|
["action"] = "crushing_blow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & ! buff.brutal_finish.up",
|
|
["action"] = "thunderous_roar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ashen_juggernaut.up & buff.ashen_juggernaut.remains < 3",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.marked_for_execution.stack = 3",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bloodcraze.stack >= 1 || ( talent.uproar.enabled & dot.bloodbath_dot.remains < 40 & talent.bloodborne.enabled ) || buff.enrage.up & buff.enrage.remains < gcd.max",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.brutal_finish.up & buff.slaughtering_strikes.stack < 5 & ( ! debuff.champions_might.up || debuff.champions_might.up & debuff.champions_might.remains > gcd.max )",
|
|
["action"] = "raging_blow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "action.raging_blow.charges <= 1 & rage >= 100 & talent.anger_management.enabled & buff.recklessness.down",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 35 & talent.vicious_contempt.enabled & buff.brutal_finish.up & buff.enrage.up & buff.bloodcraze.stack >= 2 || active_enemies >= 5",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 130",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 115 & talent.reckless_abandon.enabled & buff.recklessness.up & buff.slaughtering_strikes.stack >= 3",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.bloodcraze.stack >= 4 || crit_pct_current >= 85 )",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["action"] = "crushing_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 35 & talent.vicious_contempt.enabled",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["action"] = "bloodbath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.opportunist.up",
|
|
["action"] = "raging_blow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 35 & talent.vicious_contempt.enabled & buff.bloodcraze.stack >= 2",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 100 & talent.anger_management.enabled & buff.recklessness.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bloodcraze.stack >= 4 || crit_pct_current >= 85",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["action"] = "raging_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodthirst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 35 & talent.massacre.enabled || target.health.pct < 20",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unbridled_ferocity.enabled",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["action"] = "rampage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.improved_whirlwind.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["thane"] = {
|
|
{
|
|
["action"] = "recklessness",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ravager",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & talent.meat_cleaver.enabled",
|
|
["action"] = "thunder_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.meat_cleaver.down & talent.meat_cleaver.enabled & active_enemies >= 2",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "thunderous_roar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.enrage.up || talent.titanic_rage.enabled ) & cooldown.avatar.remains",
|
|
["action"] = "odyns_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.down",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ashen_juggernaut.enabled & buff.ashen_juggernaut.remains <= gcd.max & buff.enrage.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.bladestorm.enabled & cooldown.bladestorm.remains <= gcd.max & ! debuff.champions_might.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & talent.unhinged.enabled",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bloodcraze.stack >= 2",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 115 & talent.reckless_abandon.enabled & buff.recklessness.up & buff.slaughtering_strikes.stack >= 3",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["action"] = "crushing_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodbath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["action"] = "rampage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.vicious_contempt.enabled & target.health.pct < 35 & buff.bloodcraze.stack >= 2 || ! dot.ravager.remains & buff.bloodcraze.stack >= 3 || active_enemies >= 6",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["action"] = "raging_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ashen_juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "thunder_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodthirst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["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,
|
|
["action"] = "spell_block",
|
|
["criteria"] = "tanking & incoming_magic_damage_5s > spell_block_damage_taken & health.pct <= spell_block_health_pct & ! ( buff.spell_reflection_defense.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "shield_wall",
|
|
["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"] = "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,
|
|
["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",
|
|
["action"] = "ignore_pain",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "last_stand",
|
|
["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 )",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
["Arms"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250308,
|
|
["author"] = "SimulationCraft",
|
|
["desc"] = "2025-03-08: TWW Season 2 update\n\n2025-02-26: Sync with SimC",
|
|
["lists"] = {
|
|
["slayer_st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= 5 || debuff.colossus_smash.up",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up || buff.avatar.up",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.juggernaut.remains <= gcd.max * 2 & talent.juggernaut.enabled || buff.sudden_death.stack = 2 || buff.sudden_death.remains <= gcd.max * 3 || debuff.marked_for_execution.stack = 3",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.opportunist.up",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.colossus_smash.remains >= gcd.max * 4 || cooldown.warbreaker.remains >= gcd.max * 4 ) || debuff.colossus_smash.remains >= gcd.max * 4",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 8",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "cleave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["colossus_st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > 15",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "demolish",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max * 5",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["colossus_aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.deep_wounds.remains",
|
|
["action"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.rend.remains",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sweeping_strikes",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ravager",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "cleave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unhinged.enabled || talent.merciless_bonegrinder.enabled",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains < 5",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.colossal_might.stack = 10 & ( debuff.colossus_smash.remains >= 2 || cooldown.colossus_smash.remains >= 7 )",
|
|
["action"] = "demolish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.dreadnaught.enabled",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bladestorm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "whirlwind",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["slayer_aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.rend.remains",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "cleave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_death.up & buff.imminent_demise.stack < 3 || buff.juggernaut.remains < 3 & talent.juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "bladestorm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up & ( buff.opportunist.up || talent.dreadnaught.enabled & ! talent.juggernaut.enabled )",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up & debuff.executioners_precision.stack < 2 & talent.executioners_precision.enabled || debuff.marked_for_execution.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.opportunist.up || talent.dreadnaught.enabled",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "whirlwind",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["colossus_execute"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 2",
|
|
["action"] = "sweeping_strikes",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max & ! talent.bloodletting.enabled",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.juggernaut.remains <= gcd.max & talent.juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage < 40",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "demolish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.executioners_precision.stack = 2 & ! dot.ravager.remains || ! talent.executioners_precision.enabled || talent.battlelord.enabled & debuff.executioners_precision.stack > 0",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage < 90",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 40 & talent.executioners_precision.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bladestorm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["slayer_execute"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 2",
|
|
["action"] = "sweeping_strikes",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max & ! talent.bloodletting.enabled",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= 5 || debuff.colossus_smash.up",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up || buff.avatar.up",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.juggernaut.remains <= gcd.max * 2 & talent.juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( debuff.executioners_precision.stack = 2 & ( debuff.colossus_smash.remains > 4 || cooldown.colossus_smash.remains > 15 ) ) || ! talent.executioners_precision.enabled",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage <= 40",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.martial_prowess.stack < 2 & buff.opportunist.up & talent.opportunist.enabled & ( talent.bladestorm.enabled || talent.ravager.enabled & rage < 85 )",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains < 2 || debuff.executioners_precision.stack = 2 & ! dot.ravager.remains",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage <= 40 & buff.martial_prowess.stack < 2 & talent.fierce_followthrough.enabled",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time <= 0.5 || movement.distance > 8",
|
|
["action"] = "charge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "gcd.remains = 0 & debuff.colossus_smash.remains > 8 || boss & fight_remains < 25",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.debuff.casting.react",
|
|
["action"] = "pummel",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "variables",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.mortal_strike.remains > 1.5 & rage < 50",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.down & cooldown.mortal_strike.remains",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.down & cooldown.mortal_strike.remains",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > 180 & buff.avatar.up || boss & target.time_to_die < 180 & variable.execute_phase & buff.avatar.up || boss & fight_remains < 20",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demolish.enabled & active_enemies > 2",
|
|
["list_name"] = "colossus_aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["cycle_targets"] = 1,
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demolish.enabled & variable.execute_phase",
|
|
["list_name"] = "colossus_execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demolish.enabled & active_enemies = 2 & ! variable.execute_phase",
|
|
["list_name"] = "colossus_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demolish.enabled",
|
|
["list_name"] = "colossus_st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.demolish.enabled & active_enemies > 2",
|
|
["list_name"] = "slayer_aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["cycle_targets"] = 1,
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.demolish.enabled & variable.execute_phase",
|
|
["list_name"] = "slayer_execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.demolish.enabled & active_enemies = 2 & ! variable.execute_phase",
|
|
["list_name"] = "slayer_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.demolish.enabled",
|
|
["list_name"] = "slayer_st",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "battle_shout",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["toggle"] = "on",
|
|
["action"] = "battle_stance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_1_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Evaluates a trinkets cooldown, divided by avatar. If it's value has no remainder return 1, else return 0.5.",
|
|
["criteria"] = "trinket.t1.has_use_buff & ( trinket.t1.cooldown.duration % cooldown.avatar.duration = 0 )",
|
|
["var_name"] = "trinket_1_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["criteria"] = "trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration % cooldown.avatar.duration = 0 )",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_stat.any_dps & ! variable.trinket_1_exclude )",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_stat.any_dps & ! variable.trinket_2_exclude )",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / trinket.t2.buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_1_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_2_manual",
|
|
},
|
|
},
|
|
["variables"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies = 1",
|
|
["description"] = "Variables",
|
|
["var_name"] = "st_planning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies > 1",
|
|
["var_name"] = "adds_remain",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( talent.massacre.enabled & target.health.pct < 35 ) || target.health.pct < 20",
|
|
["var_name"] = "execute_phase",
|
|
},
|
|
},
|
|
["slayer_sweep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.rend.remains & ! buff.sweeping_strikes.up",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sweeping_strikes",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.juggernaut.remains <= gcd.max * 2 || debuff.marked_for_execution.stack = 3 || buff.sudden_death.stack = 2 || buff.sudden_death.remains <= gcd.max * 3",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.colossus_smash.remains >= gcd.max * 4 || cooldown.warbreaker.remains >= gcd.max * 4 ) || debuff.colossus_smash.remains >= gcd.max * 4",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.opportunist.up",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 8 & buff.sweeping_strikes.down",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 5",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fervor_of_battle.enabled & ! buff.martial_prowess.up",
|
|
["action"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fervor_of_battle.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["description"] = "Trinkets",
|
|
["criteria"] = "( variable.adds_remain || variable.st_planning ) & cooldown.avatar.remains < 3",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! buff.avatar.up & trinket.t1.cast_time > 0 || ! trinket.t1.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || trinket.t1.buff_duration >= fight_remains & boss",
|
|
["description"] = "Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! buff.avatar.up & trinket.t2.cast_time > 0 || ! trinket.t2.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || trinket.t2.buff_duration >= fight_remains & boss",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )",
|
|
["description"] = "If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.trinket_2_buffs & ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) & ! variable.trinket_2_manual & ( ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) || ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["criteria"] = "! equipped.fyralath_the_dreamrender & ! equipped.bestinslots & ( ! variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( ! variable.trinket_2_buffs || trinket.t2.cooldown.remains )",
|
|
["slot"] = "main_hand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "bestinslots",
|
|
["criteria"] = "cooldown.avatar.remains > 20 || ( buff.avatar.up & ( ! trinket.t1.has_cooldown & ! trinket.t2.has_cooldown ) )",
|
|
["name"] = "bestinslots",
|
|
},
|
|
},
|
|
["colossus_sweep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.rend.remains & ! buff.sweeping_strikes.up",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max & buff.sweeping_strikes.up",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sweeping_strikes",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.ready",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "demolish",
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fervor_of_battle.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fervor_of_battle.enabled",
|
|
["action"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 8 & buff.sweeping_strikes.down",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 5",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250308,
|
|
["warnings"] = "The import for 'slayer_st' required some automated changes.\nLine 8: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 15: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\n\nThe import for 'colossus_aoe' required some automated changes.\nLine 11: Converted 'talent.unhinged' to 'talent.unhinged.enabled' (1x).\nLine 11: Converted 'talent.merciless_bonegrinder' to 'talent.merciless_bonegrinder.enabled' (1x).\nLine 14: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\n\nThe import for 'slayer_aoe' required some automated changes.\nLine 9: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 11: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\nLine 11: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 13: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\nLine 15: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\n\nThe import for 'colossus_execute' required some automated changes.\nLine 2: Converted 'talent.bloodletting' to 'talent.bloodletting.enabled' (1x).\nLine 9: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 12: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\nLine 12: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 14: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\n\nThe import for 'slayer_execute' required some automated changes.\nLine 2: Converted 'talent.bloodletting' to 'talent.bloodletting.enabled' (1x).\nLine 9: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 10: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\nLine 12: Converted 'talent.opportunist' to 'talent.opportunist.enabled' (1x).\nLine 12: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 12: Converted 'talent.ravager' to 'talent.ravager.enabled' (1x).\nLine 14: Converted 'talent.fierce_followthrough' to 'talent.fierce_followthrough.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 13: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 14: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 15: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 16: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 17: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 18: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 19: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 20: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 3: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 4: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted operations in 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%%cooldown.avatar.duration=0)' to 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%cooldown.avatar.duration=0)'.\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted operations in 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%%cooldown.avatar.duration=0)' to 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%cooldown.avatar.duration=0)'.\nLine 7: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 7: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 8: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 8: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 9: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 9: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 9: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 9: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 9: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 9: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 9: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 9: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 9: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 10: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 11: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\n\nThe import for 'slayer_sweep' required some automated changes.\nLine 17: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 18: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 19: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 2: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 3: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 7: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\n\nThe import for 'colossus_sweep' required some automated changes.\nLine 14: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 15: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\n\nImported 12 action lists.\n",
|
|
["profile"] = "actions.precombat+=/battle_shout\nactions.precombat+=/battle_stance,toggle=on\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.treacherous_transmitter\n# Evaluates a trinkets cooldown, divided by avatar. If it's value has no remainder return 1, else return 0.5.\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=trinket.1.has_use_buff&(trinket.1.cooldown.duration%%cooldown.avatar.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=trinket.2.has_use_buff&(trinket.2.cooldown.duration%%cooldown.avatar.duration=0)\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_stat.any_dps&!variable.trinket_1_exclude)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_stat.any_dps&!variable.trinket_2_exclude)\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync))\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.algethar_puzzle_box\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.algethar_puzzle_box\n\nactions+=/charge,if=time<=0.5||movement.distance>8\nactions+=/potion,if=gcd.remains=0&debuff.colossus_smash.remains>8||boss&fight_remains<25\nactions+=/pummel,if=target.debuff.casting.react\nactions+=/call_action_list,name=variables\nactions+=/call_action_list,name=trinkets\nactions+=/arcane_torrent,if=cooldown.mortal_strike.remains>1.5&rage<50\nactions+=/lights_judgment,if=debuff.colossus_smash.down&cooldown.mortal_strike.remains\nactions+=/bag_of_tricks,if=debuff.colossus_smash.down&cooldown.mortal_strike.remains\nactions+=/berserking,if=fight_remains>180&buff.avatar.up||boss&target.time_to_die<180&variable.execute_phase&buff.avatar.up||boss&fight_remains<20\nactions+=/blood_fury,if=debuff.colossus_smash.up\nactions+=/fireblood,if=debuff.colossus_smash.up\nactions+=/ancestral_call,if=debuff.colossus_smash.up\n## actions+=/invoke_external_buff,name=power_infusion,if=debuff.colossus_smash.up&fight_remains>=135||variable.execute_phase&buff.avatar.up||fight_remains<=25\nactions+=/run_action_list,name=colossus_aoe,strict=1,if=talent.demolish&active_enemies>2\nactions+=/run_action_list,name=colossus_execute,cycle_targets=1,strict=1,if=talent.demolish&variable.execute_phase\nactions+=/run_action_list,name=colossus_sweep,strict=1,if=talent.demolish&active_enemies=2&!variable.execute_phase\nactions+=/run_action_list,name=colossus_st,strict=1,if=talent.demolish\nactions+=/run_action_list,name=slayer_aoe,strict=1,if=!talent.demolish&active_enemies>2\nactions+=/run_action_list,name=slayer_execute,cycle_targets=1,strict=1,if=!talent.demolish&variable.execute_phase\nactions+=/run_action_list,name=slayer_sweep,strict=1,if=!talent.demolish&active_enemies=2&!variable.execute_phase\nactions+=/run_action_list,name=slayer_st,strict=1,if=!talent.demolish\n\nactions.colossus_aoe+=/cleave,if=!dot.deep_wounds.remains\nactions.colossus_aoe+=/thunder_clap,if=!dot.rend.remains\nactions.colossus_aoe+=/thunderous_roar\nactions.colossus_aoe+=/avatar\nactions.colossus_aoe+=/sweeping_strikes\nactions.colossus_aoe+=/ravager\nactions.colossus_aoe+=/warbreaker\nactions.colossus_aoe+=/champions_spear\nactions.colossus_aoe+=/colossus_smash\nactions.colossus_aoe+=/cleave\nactions.colossus_aoe+=/bladestorm,if=talent.unhinged||talent.merciless_bonegrinder\nactions.colossus_aoe+=/thunder_clap,if=dot.rend.remains<5\nactions.colossus_aoe+=/demolish,if=buff.colossal_might.stack=10&(debuff.colossus_smash.remains>=2||cooldown.colossus_smash.remains>=7)\nactions.colossus_aoe+=/overpower,if=talent.dreadnaught\nactions.colossus_aoe+=/mortal_strike\nactions.colossus_aoe+=/overpower\nactions.colossus_aoe+=/thunder_clap\nactions.colossus_aoe+=/skullsplitter\nactions.colossus_aoe+=/execute\nactions.colossus_aoe+=/bladestorm\nactions.colossus_aoe+=/whirlwind\n\nactions.colossus_execute+=/sweeping_strikes,if=active_enemies=2\nactions.colossus_execute+=/rend,if=dot.rend.remains<=gcd&!talent.bloodletting\nactions.colossus_execute+=/thunderous_roar\nactions.colossus_execute+=/champions_spear\nactions.colossus_execute+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.colossus_execute+=/avatar\nactions.colossus_execute+=/colossus_smash\nactions.colossus_execute+=/warbreaker\nactions.colossus_execute+=/execute,if=buff.juggernaut.remains<=gcd&talent.juggernaut\nactions.colossus_execute+=/skullsplitter,if=rage<40\nactions.colossus_execute+=/demolish,if=debuff.colossus_smash.up\nactions.colossus_execute+=/mortal_strike,if=debuff.executioners_precision.stack=2&!dot.ravager.remains||!talent.executioners_precision||talent.battlelord&debuff.executioners_precision.stack>0\nactions.colossus_execute+=/overpower,if=rage<90\nactions.colossus_execute+=/execute,if=rage>=40&talent.executioners_precision\nactions.colossus_execute+=/overpower\nactions.colossus_execute+=/bladestorm\nactions.colossus_execute+=/execute\n\nactions.colossus_st+=/rend,if=dot.rend.remains<=gcd\nactions.colossus_st+=/thunderous_roar\nactions.colossus_st+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.colossus_st+=/champions_spear\nactions.colossus_st+=/avatar,if=raid_event.adds.in>15\nactions.colossus_st+=/colossus_smash\nactions.colossus_st+=/warbreaker\nactions.colossus_st+=/mortal_strike\nactions.colossus_st+=/demolish\nactions.colossus_st+=/skullsplitter\nactions.colossus_st+=/execute\nactions.colossus_st+=/overpower\nactions.colossus_st+=/rend,if=dot.rend.remains<=gcd*5\nactions.colossus_st+=/slam\n\nactions.colossus_sweep+=/thunder_clap,if=!dot.rend.remains&!buff.sweeping_strikes.up\nactions.colossus_sweep+=/rend,if=dot.rend.remains<=gcd&buff.sweeping_strikes.up\nactions.colossus_sweep+=/thunderous_roar\nactions.colossus_sweep+=/sweeping_strikes\nactions.colossus_sweep+=/champions_spear\nactions.colossus_sweep+=/ravager,if=cooldown.colossus_smash.ready\nactions.colossus_sweep+=/avatar\nactions.colossus_sweep+=/colossus_smash\nactions.colossus_sweep+=/warbreaker\nactions.colossus_sweep+=/mortal_strike\nactions.colossus_sweep+=/demolish,if=debuff.colossus_smash.up\nactions.colossus_sweep+=/overpower\nactions.colossus_sweep+=/execute\nactions.colossus_sweep+=/whirlwind,if=talent.fervor_of_battle\nactions.colossus_sweep+=/cleave,if=talent.fervor_of_battle\nactions.colossus_sweep+=/thunder_clap,if=dot.rend.remains<=8&buff.sweeping_strikes.down\nactions.colossus_sweep+=/rend,if=dot.rend.remains<=5\nactions.colossus_sweep+=/slam\n\nactions.slayer_aoe+=/thunder_clap,if=!dot.rend.remains\nactions.slayer_aoe+=/thunderous_roar\nactions.slayer_aoe+=/avatar\nactions.slayer_aoe+=/champions_spear\nactions.slayer_aoe+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.slayer_aoe+=/warbreaker\nactions.slayer_aoe+=/colossus_smash\nactions.slayer_aoe+=/cleave\nactions.slayer_aoe+=/execute,if=buff.sudden_death.up&buff.imminent_demise.stack<3||buff.juggernaut.remains<3&talent.juggernaut\nactions.slayer_aoe+=/bladestorm\nactions.slayer_aoe+=/overpower,if=buff.sweeping_strikes.up&(buff.opportunist.up||talent.dreadnaught&!talent.juggernaut)\nactions.slayer_aoe+=/mortal_strike,if=buff.sweeping_strikes.up\nactions.slayer_aoe+=/execute,if=buff.sweeping_strikes.up&debuff.executioners_precision.stack<2&talent.executioners_precision||debuff.marked_for_execution.up\nactions.slayer_aoe+=/skullsplitter,if=buff.sweeping_strikes.up\nactions.slayer_aoe+=/overpower,if=buff.opportunist.up||talent.dreadnaught\nactions.slayer_aoe+=/mortal_strike\nactions.slayer_aoe+=/overpower\nactions.slayer_aoe+=/thunder_clap\nactions.slayer_aoe+=/execute\nactions.slayer_aoe+=/whirlwind\nactions.slayer_aoe+=/skullsplitter\nactions.slayer_aoe+=/slam\nactions.slayer_aoe+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_execute+=/sweeping_strikes,if=active_enemies=2\nactions.slayer_execute+=/rend,if=dot.rend.remains<=gcd&!talent.bloodletting\nactions.slayer_execute+=/thunderous_roar\nactions.slayer_execute+=/avatar,if=cooldown.colossus_smash.remains<=5||debuff.colossus_smash.up\nactions.slayer_execute+=/champions_spear,if=debuff.colossus_smash.up||buff.avatar.up\nactions.slayer_execute+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.slayer_execute+=/warbreaker\nactions.slayer_execute+=/colossus_smash\nactions.slayer_execute+=/execute,if=buff.juggernaut.remains<=gcd*2&talent.juggernaut\nactions.slayer_execute+=/bladestorm,if=(debuff.executioners_precision.stack=2&(debuff.colossus_smash.remains>4||cooldown.colossus_smash.remains>15))||!talent.executioners_precision\nactions.slayer_execute+=/skullsplitter,if=rage<=40\nactions.slayer_execute+=/overpower,if=buff.martial_prowess.stack<2&buff.opportunist.up&talent.opportunist&(talent.bladestorm||talent.ravager&rage<85)\nactions.slayer_execute+=/mortal_strike,if=dot.rend.remains<2||debuff.executioners_precision.stack=2&!dot.ravager.remains\nactions.slayer_execute+=/overpower,if=rage<=40&buff.martial_prowess.stack<2&talent.fierce_followthrough\nactions.slayer_execute+=/execute\nactions.slayer_execute+=/overpower\nactions.slayer_execute+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_st+=/rend,if=dot.rend.remains<=gcd\nactions.slayer_st+=/thunderous_roar\nactions.slayer_st+=/avatar,if=cooldown.colossus_smash.remains<=5||debuff.colossus_smash.up\nactions.slayer_st+=/champions_spear,if=debuff.colossus_smash.up||buff.avatar.up\nactions.slayer_st+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.slayer_st+=/colossus_smash\nactions.slayer_st+=/warbreaker\nactions.slayer_st+=/execute,if=buff.juggernaut.remains<=gcd*2&talent.juggernaut||buff.sudden_death.stack=2||buff.sudden_death.remains<=gcd*3||debuff.marked_for_execution.stack=3\nactions.slayer_st+=/overpower,if=buff.opportunist.up\nactions.slayer_st+=/mortal_strike\nactions.slayer_st+=/bladestorm,if=(cooldown.colossus_smash.remains>=gcd*4||cooldown.warbreaker.remains>=gcd*4)||debuff.colossus_smash.remains>=gcd*4\nactions.slayer_st+=/skullsplitter\nactions.slayer_st+=/overpower\nactions.slayer_st+=/rend,if=dot.rend.remains<=8\nactions.slayer_st+=/execute,if=!talent.juggernaut\nactions.slayer_st+=/cleave\nactions.slayer_st+=/slam\nactions.slayer_st+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_sweep+=/thunder_clap,if=!dot.rend.remains&!buff.sweeping_strikes.up\nactions.slayer_sweep+=/thunderous_roar\nactions.slayer_sweep+=/sweeping_strikes\nactions.slayer_sweep+=/rend,if=dot.rend.remains<=gcd\nactions.slayer_sweep+=/champions_spear\nactions.slayer_sweep+=/avatar\nactions.slayer_sweep+=/colossus_smash\nactions.slayer_sweep+=/warbreaker\nactions.slayer_sweep+=/skullsplitter,if=buff.sweeping_strikes.up\nactions.slayer_sweep+=/execute,if=buff.juggernaut.remains<=gcd*2||debuff.marked_for_execution.stack=3||buff.sudden_death.stack=2||buff.sudden_death.remains<=gcd*3\nactions.slayer_sweep+=/bladestorm,if=(cooldown.colossus_smash.remains>=gcd*4||cooldown.warbreaker.remains>=gcd*4)||debuff.colossus_smash.remains>=gcd*4\nactions.slayer_sweep+=/overpower,if=buff.opportunist.up\nactions.slayer_sweep+=/mortal_strike\nactions.slayer_sweep+=/overpower\nactions.slayer_sweep+=/thunder_clap,if=dot.rend.remains<=8&buff.sweeping_strikes.down\nactions.slayer_sweep+=/rend,if=dot.rend.remains<=5\nactions.slayer_sweep+=/cleave,if=talent.fervor_of_battle&!buff.martial_prowess.up\nactions.slayer_sweep+=/whirlwind,if=talent.fervor_of_battle\nactions.slayer_sweep+=/execute,if=!talent.juggernaut\nactions.slayer_sweep+=/slam\nactions.slayer_sweep+=/storm_bolt,if=buff.bladestorm.up\n\n# Trinkets\n## actions.trinkets+=/do_treacherous_transmitter_task\nactions.trinkets+=/use_item,name=treacherous_transmitter,if=(variable.adds_remain||variable.st_planning)&cooldown.avatar.remains<3\n# Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.\nactions.trinkets+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&!variable.trinket_1_manual&(!buff.avatar.up&trinket.1.cast_time>0||!trinket.1.cast_time>0)&buff.avatar.up&(variable.trinket_2_exclude||!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains&boss\nactions.trinkets+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&(!buff.avatar.up&trinket.2.cast_time>0||!trinket.2.cast_time>0)&buff.avatar.up&(variable.trinket_1_exclude||!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains&boss\n# If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.\nactions.trinkets+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)&!variable.trinket_1_manual&(!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs)||(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions.trinkets+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)&!variable.trinket_2_manual&(!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs)||(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions.trinkets+=/use_item,slot=main_hand,if=!equipped.fyralath_the_dreamrender&!equipped.bestinslots&(!variable.trinket_1_buffs||trinket.1.cooldown.remains)&(!variable.trinket_2_buffs||trinket.2.cooldown.remains)\nactions.trinkets+=/use_item,name=bestinslots,if=cooldown.avatar.remains>20||(buff.avatar.up&(!trinket.1.has_cooldown&!trinket.2.has_cooldown))\n\n# Variables\nactions.variables+=/variable,name=st_planning,value=active_enemies=1\nactions.variables+=/variable,name=adds_remain,value=active_enemies>1\nactions.variables+=/variable,name=execute_phase,value=(talent.massacre.enabled&target.health.pct<35)||target.health.pct<20",
|
|
["spec"] = 71,
|
|
},
|
|
},
|
|
},
|
|
["Quillspeth - Thunderhorn"] = {
|
|
["runOnce"] = {
|
|
["forceReloadClassDefaultOptions_20220306_103"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["removeOldThrottles_20241115"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_105"] = true,
|
|
["resetAllPotions_20201209"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["forceEnableEnhancedRecheckBoomkin_20210712"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_102"] = true,
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
["resetGlobalCooldownSync_20210403"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_104"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
},
|
|
["specs"] = {
|
|
[103] = {
|
|
["maxRefresh"] = 10,
|
|
["debuffPadding"] = 0,
|
|
["settings"] = {
|
|
["regrowth"] = true,
|
|
["frenzy_cp"] = 2,
|
|
["brutal_charges"] = 2,
|
|
["vigil_damage"] = 50,
|
|
["owlweave_cat"] = false,
|
|
["lazy_swipe"] = false,
|
|
["allow_crit_prediction"] = true,
|
|
["rip_duration"] = 9,
|
|
["solo_prowl"] = false,
|
|
},
|
|
["nameplateRange"] = 8,
|
|
["potionsReset"] = 20180919.1,
|
|
["potion"] = "spectral_agility",
|
|
["enhancedRecheck"] = false,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[104] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["maul_anyway"] = true,
|
|
["ironfur_damage_threshold"] = 5,
|
|
["vigil_damage"] = 50,
|
|
["catweave_bear"] = false,
|
|
["max_ironfur"] = 1,
|
|
["mangle_more"] = false,
|
|
["maul_rage"] = 20,
|
|
["owlweave_bear"] = false,
|
|
["shift_for_convoke"] = false,
|
|
},
|
|
["debuffPadding"] = 0,
|
|
["enhancedRecheck"] = false,
|
|
["potion"] = "spectral_agility",
|
|
["potionsReset"] = 20180919.1,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[102] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["starlord_cancel"] = false,
|
|
["vigil_damage"] = 50,
|
|
},
|
|
["debuffPadding"] = 0,
|
|
["enhancedRecheck"] = true,
|
|
["nameplateRange"] = 8,
|
|
["potionsReset"] = 20180919.1,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[105] = {
|
|
["settings"] = {
|
|
["healing_mode"] = false,
|
|
},
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Feral"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/druid_feral.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250425.1,
|
|
["spec"] = 103,
|
|
["desc"] = "2025-04-25: SimC Update; fix 'wait'\n\n2025-03-13: Generators at 5 combo point workaround\n\n2025-02-28: TWW Season 2 update\n\n2024-10-22: 11.0.5",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/druid_feral.simc\n## Up to date with SimC: April 12 2025 - d935a4a\n\nactions.precombat+=/mark_of_the_wild\nactions.precombat+=/prowl,if=!buff.prowl.up\nactions.precombat+=/cat_form,if=!buff.cat_form.up\n# check if trinket slot contains a stat on use (variable is just kept in case of things like mirror not working with has_use_buff)\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff&!trinket.1.is.imperfect_ascendancy_serum&!trinket.1.is.ovinaxs_mercurial_egg&!trinket.1.is.concoction_kiss_of_death\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff&!trinket.2.is.imperfect_ascendancy_serum&!trinket.2.is.ovinaxs_mercurial_egg&!trinket.2.is.concoction_kiss_of_death\n# if we are playing 2 minute convoke, we prefer 2 minute on-use over 3 minute on-use even without berserk: heart of the lion\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=talent.convoke_the_spirits&!talent.ashamanes_guidance&variable.trinket_1_buffs&(trinket.1.cooldown.duration%%120=0||120%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=talent.convoke_the_spirits&!talent.ashamanes_guidance&variable.trinket_2_buffs&(trinket.1.cooldown.duration%%120=0||120%%trinket.1.cooldown.duration=0)\n# if we aren't playing 2 minute convoke, then we can sync 3 minute cds with berserk sans hotl\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=!(talent.convoke_the_spirits&!talent.ashamanes_guidance)&variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%%trinket.1.cooldown.duration=0||trinket.1.cooldown.duration%%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=!(talent.convoke_the_spirits&!talent.ashamanes_guidance)&variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%%trinket.2.cooldown.duration=0||trinket.2.cooldown.duration%%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%%trinket.2.cooldown.duration=0)\n# prioritize trinkets that line-up with cds->main-stat on uses->longer cd trinkets->shorter duration trinkets\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.agility)*(1.2+trinket.2.has_buff.mastery)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.agility)*(1.2+trinket.1.has_buff.mastery)*(variable.trinket_1_sync))\n\nactions+=/prowl,if=buff.bs_inc.down&!buff.prowl.up\nactions+=/cat_form,if=!buff.cat_form.up&!talent.fluid_form\nactions+=/skull_bash\nactions+=/soothe\n## Line up <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&hero_tree.wildstalker)&(boss&fight_remains<=15||(cooldown.bs_inc.remains>20&fight_remains>5)||(cooldown.bs_inc.ready&fight_remains>12||boss))\nactions+=/rake,cycle_targets=1,if=buff.shadowmeld.up||buff.prowl.up\nactions+=/natures_vigil,if=variable.regrowth&health.percent<70&(buff.bs_inc.up||buff.tigers_fury.up)\nactions+=/renewal,if=variable.regrowth&health.percent<70\nactions+=/adaptive_swarm,cycle_targets=1,if=dot.adaptive_swarm_damage.stack<3&(!dot.adaptive_swarm_damage.ticking||dot.adaptive_swarm_damage.remains<2)&!action.adaptive_swarm.in_flight&(spell_targets=1||!talent.unbridled_swarm)&(dot.rip.ticking||hero_tree.druid_of_the_claw)\nactions+=/adaptive_swarm,cycle_targets=1,if=buff.cat_form.up&dot.adaptive_swarm_damage.stack<3&talent.unbridled_swarm.enabled&spell_targets.swipe_cat>1&dot.rip.ticking\nactions+=/ferocious_bite,if=buff.apex_predators_craving.up&!(variable.need_bt&active_bt_triggers=2)\nactions+=/call_action_list,name=cooldown,strict=1,if=dot.rip.ticking\n# keep using this archaic 'nonsense' for veinripper because its better idk ill fix soon tm\nactions+=/rip,if=talent.veinripper&spell_targets=1&hero_tree.wildstalker&!(talent.raging_fury&talent.veinripper)&(buff.bloodtalons.up||!talent.bloodtalons)&(dot.rip.remains<5&buff.tigers_fury.remains>10&combo_points>=3||((buff.tigers_fury.remains<3&combo_points=5)||buff.tigers_fury.remains<=1)&buff.tigers_fury.up&combo_points>=3&remains<cooldown.tigers_fury.remains)\n# fix to work with veinripper idk\nactions+=/rip,if=!talent.veinripper&spell_targets=1&hero_tree.wildstalker&buff.tigers_fury.up&(buff.bloodtalons.up||!talent.bloodtalons)&(combo_points>=3&refreshable&cooldown.tigers_fury.remains>25||buff.tigers_fury.remains<5&variable.rip_duration>cooldown.tigers_fury.remains&cooldown.tigers_fury.remains>=dot.rip.remains)\nactions+=/call_action_list,name=builder,if=(buff.bs_inc.up&!buff.ravage.up&!buff.coiled_to_spring.up&hero_tree.druid_of_the_claw&talent.coiled_to_spring&spell_targets<=2)||buff.bloodtalons.stack=0&active_bt_triggers=2\nactions+=/wait,sec=cooldown.tigers_fury.remains,if=combo_points=5&cooldown.tigers_fury.remains<3&spell_targets=1\nactions+=/call_action_list,name=finisher,if=combo_points=5\n## [Syrif] - combo_points<5 added to stop from sending generators inappropriately\nactions+=/call_action_list,name=builder,if=spell_targets.swipe_cat=1&combo_points<5\nactions+=/call_action_list,name=aoe_builder,if=spell_targets.swipe_cat>=2&combo_points<5\nactions+=/regrowth,if=buff.predatory_swiftness.up&variable.regrowth&selection_time>gcd.max\n\n# maintain thrash highest prio\nactions.aoe_builder+=/thrash_cat,if=refreshable&!talent.thrashing_claws&!(variable.need_bt&buff.bt_thrash.up)\n# avoid capping brs charges. Also send brutal slashes/ws swipe in aoe, even if we need to proc bloodtalons, during berserk.\nactions.aoe_builder+=/brutal_slash,cycle_targets=1,if=(cooldown.brutal_slash.full_recharge_time<4||time_to_die<4||raid_event.adds.remains<4||(buff.bs_inc.up&spell_targets>=3-hero_tree.druid_of_the_claw))&!(variable.need_bt&buff.bt_swipe.up&(buff.bs_inc.down||spell_targets<3-hero_tree.druid_of_the_claw))\nactions.aoe_builder+=/swipe_cat,if=talent.wild_slashes&(time_to_die<4||raid_event.adds.remains<4||buff.bs_inc.up&spell_targets>=3-hero_tree.druid_of_the_claw)&!(variable.need_bt&buff.bt_swipe.up&(buff.bs_inc.down||spell_targets<3-hero_tree.druid_of_the_claw))\n# with wild slashes we swipe at 5+ targets over raking/moonfire\nactions.aoe_builder+=/swipe_cat,if=time_to_die<4||(talent.wild_slashes&spell_targets.swipe_cat>4&!(variable.need_bt&buff.bt_swipe.up))\nactions.aoe_builder+=/prowl,if=dot.rake.refreshable||dot.rake.pmultiplier<1.4&!(variable.need_bt&buff.bt_rake.up)&action.rake.ready&gcd.remains=0&!buff.sudden_ambush.up&!variable.cc_capped\nactions.aoe_builder+=/shadowmeld,if=dot.rake.refreshable||dot.rake.pmultiplier<1.4&!(variable.need_bt&buff.bt_rake.up)&action.rake.ready&!buff.sudden_ambush.up&!buff.prowl.up&!variable.cc_capped\n# dcr rake > moonfire\nactions.aoe_builder+=/rake,cycle_targets=1,if=refreshable&talent.doubleclawed_rake&!(variable.need_bt&buff.bt_rake.up)&!variable.cc_capped\n# at 3t with wild slashes, swipe is better than moonfiring/st rake\nactions.aoe_builder+=/swipe_cat,if=talent.wild_slashes&spell_targets.swipe_cat>2&!(variable.need_bt&buff.bt_swipe.up)\n# if wildstalker make sure you have at least one rake up\nactions.aoe_builder+=/rake,cycle_targets=1,if=!dot.rake.ticking&hero_tree.wildstalker\n# li moonfire is better than non-dcr rake in aoe if we already have 1 rake\nactions.aoe_builder+=/moonfire_cat,cycle_targets=1,if=refreshable&!(variable.need_bt&buff.bt_moonfire.up)&!variable.cc_capped\nactions.aoe_builder+=/rake,cycle_targets=1,if=refreshable&!(variable.need_bt&buff.bt_rake.up)&!variable.cc_capped\n# fillers\nactions.aoe_builder+=/brutal_slash,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.aoe_builder+=/swipe_cat,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.aoe_builder+=/shred,if=!buff.sudden_ambush.up&!variable.easy_swipe&!(variable.need_bt&buff.bt_shred.up)\nactions.aoe_builder+=/thrash_cat,if=!talent.thrashing_claws&!(variable.need_bt&buff.bt_thrash.up)\n# fallback bt actions\nactions.aoe_builder+=/rake,cycle_targets=1,if=talent.doubleclawed_rake&buff.sudden_ambush.up&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/moonfire_cat,cycle_targets=1,if=variable.need_bt&buff.bt_moonfire.down\nactions.aoe_builder+=/rake,cycle_targets=1,if=buff.sudden_ambush.up&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/shred,if=variable.need_bt&buff.bt_shred.down&!variable.easy_swipe\nactions.aoe_builder+=/rake,cycle_targets=1,if=dot.rake.pmultiplier<1.6&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/thrash_cat,if=variable.need_bt&buff.bt_shred.down\n\nactions.builder+=/prowl,if=gcd.remains=0&energy>=35&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)*!(variable.need_bt&buff.bt_rake.up)&buff.tigers_fury.up&!buff.shadowmeld.up\nactions.builder+=/shadowmeld,if=gcd.remains=0&energy>=35&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)*!(variable.need_bt&buff.bt_rake.up)&buff.tigers_fury.up&!buff.prowl.up\n# upgrade to stealth rakes, otherwise refresh in pandemic. Delay rake as long as possible if it would downgrade\nactions.builder+=/rake,if=((refreshable&persistent_multiplier>=dot.rake.pmultiplier||dot.rake.remains<3.5)||buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier)&!(variable.need_bt&buff.bt_rake.up)&(hero_tree.wildstalker||!buff.bs_inc.up)\n# bt check is due to the overcap line, comes up with convoke/apex bites\nactions.builder+=/shred,if=buff.sudden_ambush.up&buff.bs_inc.up&!(variable.need_bt&buff.bt_shred.up&active_bt_triggers=2)\nactions.builder+=/brutal_slash,if=cooldown.brutal_slash.full_recharge_time<4&!(variable.need_bt&buff.bt_swipe.up)\nactions.builder+=/moonfire_cat,if=refreshable\nactions.builder+=/thrash_cat,if=refreshable&!talent.thrashing_claws&!buff.bs_inc.up\nactions.builder+=/shred,if=buff.clearcasting.up&!(variable.need_bt&buff.bt_shred.up)\n# pool energy if we need to refresh dot in the next 1.5s [Hekili] TODO: Sim character to see how frequently this fires, determine if `wait` value should be adjusted.\nactions.builder+=/pool_resource,if=variable.dot_refresh_soon&energy.deficit>70&!variable.need_bt&!buff.bs_inc.up&cooldown.tigers_fury.remains>3\nactions.builder+=/brutal_slash,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.builder+=/shred,if=!(variable.need_bt&buff.bt_shred.up)\nactions.builder+=/rake,if=refreshable\nactions.builder+=/thrash_cat,if=refreshable&!talent.thrashing_claws\nactions.builder+=/swipe_cat,if=variable.need_bt&buff.bt_swipe.down\n# clip rake for bt if it wont downgrade its snapshot\nactions.builder+=/rake,if=variable.need_bt&buff.bt_rake.down&persistent_multiplier>=dot.rake.pmultiplier\nactions.builder+=/moonfire_cat,if=variable.need_bt&buff.bt_moonfire.down\nactions.builder+=/thrash_cat,if=variable.need_bt&buff.bt_thrash.down\n\nactions.cooldown+=/incarnation,if=fight_remains>17||boss\n# non-stat on use trinkets get used on cooldown, so long as it wont interfere with a stat on-use trinket\nactions.cooldown+=/use_item,slot=trinket1,if=trinket.1.has_use_damage&(trinket.2.cooldown.remains>20&(!trinket.1.is.junkmaestros_mega_magnet||cooldown.bestinslots.remains>20||!equipped.bestinslots)||!trinket.2.has_use_buff&(cooldown.bestinslots.remains>20||!equipped.bestinslots)||cooldown.tigers_fury.remains<25&cooldown.tigers_fury.remains>20)||boss&fight_remains<5\nactions.cooldown+=/use_item,slot=trinket2,if=trinket.2.has_use_damage&(trinket.1.cooldown.remains>20&(!trinket.2.is.junkmaestros_mega_magnet||cooldown.bestinslots.remains>20||!equipped.bestinslots)||!trinket.1.has_use_buff&(cooldown.bestinslots.remains>20||!equipped.bestinslots)||cooldown.tigers_fury.remains<25&cooldown.tigers_fury.remains>20)||boss&fight_remains<5\n# berserk with tigers fury\nactions.cooldown+=/berserk,if=buff.tigers_fury.up&(fight_remains>12||boss)\nactions.cooldown+=/berserking,if=buff.bs_inc.up\n# todo make last set of cds line up again now that we know potions.remains is the syntax\nactions.cooldown+=/potion,if=buff.bs_inc.up||boss&fight_remains<32||(!variable.lastzerk&variable.lastconvoke&cooldown.convoke_the_spirits.remains<10)\n# non trinket gear-on-uses have variable rules on whether or not they trigger the trinket shared CD. For the cases they do we will need specific APL entries. For now just use on cooldown.\nactions.cooldown+=/use_items\n# stat on-use trinkets, prefers trinket with higher priority.\nactions.cooldown+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&(buff.bs_inc.up||((buff.tigers_fury.up&cooldown.tigers_fury.remains>25)&(cooldown.convoke_the_spirits.remains<6||(variable.trinket_2_buffs&cooldown.convoke_the_spirits.remains-trinket.2.cooldown.remains>0)||!talent.convoke_the_spirits&cooldown.bs_inc.remains-trinket.2.cooldown.remains>0)))&(!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains&boss\nactions.cooldown+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&(buff.bs_inc.up||((buff.tigers_fury.up&cooldown.tigers_fury.remains>25)&(cooldown.convoke_the_spirits.remains<6||(variable.trinket_1_buffs&cooldown.convoke_the_spirits.remains-trinket.1.cooldown.remains>0)||!talent.convoke_the_spirits&cooldown.bs_inc.remains-trinket.1.cooldown.remains>0)))&(!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains&boss\n## actions.cooldown+=/do_treacherous_transmitter_task,if=buff.tigers_fury.up||fight_remains<22\nactions.cooldown+=/feral_frenzy,if=combo_points<=1+buff.bs_inc.up&(buff.tigers_fury.up||!talent.savage_fury||!hero_tree.wildstalker||boss&fight_remains<cooldown.tigers_fury.remains)\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+=/pool_resource,for_next=1\nactions.finisher+=/ferocious_bite,cycle_targets=1,if=buff.bs_inc.up\n\n# what rips new duration would be if applied in current state\nactions.variable+=/variable,name=rip_duration,value=((4+(4*combo_points))*(1-(0.2*talent.circle_of_life_and_death))*(1+(0.25*talent.veinripper)))+(variable.rip_max_pandemic_duration>?dot.rip.remains)\nactions.variable+=/variable,name=rip_max_pandemic_duration,value=((4+(4*combo_points))*(1-(0.2*talent.circle_of_life_and_death))*(1+(0.25*talent.veinripper)))*0.3\n# this returns true if we have a dot nearing pandemic range\nactions.variable+=/variable,name=dot_refresh_soon,value=(!talent.thrashing_claws&(dot.thrash_cat.remains-dot.thrash_cat.duration*0.3<=2))||(talent.lunar_inspiration&(dot.moonfire_cat.remains-dot.moonfire_cat.duration*0.3<=2))||((dot.rake.pmultiplier<1.6||buff.sudden_ambush.up)&(dot.rake.remains-dot.rake.duration*0.3<=2))\n# try to proc bt if we have 1 or 0 sacks of bloodtalons\nactions.variable+=/variable,name=need_bt,value=talent.bloodtalons&buff.bloodtalons.stack<=1\n# capped on clearcasting stacks\nactions.variable+=/variable,name=cc_capped,value=buff.clearcasting.stack=(1+talent.moment_of_clarity)\n# checks if theres exactly 1 convoke remaining in sim\nactions.variable+=/variable,name=lastconvoke,value=(cooldown.convoke_the_spirits.remains+cooldown.convoke_the_spirits.duration)>fight_remains&cooldown.convoke_the_spirits.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\n# track moonfire snapshot\nactions.variable+=/variable,name=moonfire_snapshotted,value=buff.tigers_fury.up,op=set,if=prev.lunar_inspiration",
|
|
["version"] = 20250425.1,
|
|
["warnings"] = "The 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 '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 '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 '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 '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 '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 2: Converted 'trinket.1.is.junkmaestros_mega_magnet' to 'trinket.t1.is.junkmaestros_mega_magnet' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\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 3: Converted 'trinket.2.is.junkmaestros_mega_magnet' to 'trinket.t2.is.junkmaestros_mega_magnet' (1x).\nLine 3: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (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.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 '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).\n\nImported 7 action lists.\n",
|
|
["lists"] = {
|
|
["aoe_builder"] = {
|
|
{
|
|
["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,
|
|
["description"] = "avoid capping brs charges. Also send brutal slashes/ws swipe in aoe, even if we need to proc bloodtalons, during berserk.",
|
|
["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 ) )",
|
|
},
|
|
{
|
|
["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,
|
|
["description"] = "dcr rake > moonfire",
|
|
["criteria"] = "refreshable & talent.doubleclawed_rake.enabled & ! ( variable.need_bt & buff.bt_rake.up ) & ! variable.cc_capped",
|
|
},
|
|
{
|
|
["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"] = "rake",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "if wildstalker make sure you have at least one rake up",
|
|
["criteria"] = "! dot.rake.ticking & hero_tree.wildstalker",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "moonfire_cat",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "li moonfire is better than non-dcr rake in aoe if we already have 1 rake",
|
|
["criteria"] = "refreshable & ! ( variable.need_bt & buff.bt_moonfire.up ) & ! variable.cc_capped",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! ( variable.need_bt & buff.bt_rake.up ) & ! variable.cc_capped",
|
|
["action"] = "rake",
|
|
["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,
|
|
["description"] = "fallback bt actions",
|
|
["criteria"] = "talent.doubleclawed_rake.enabled & buff.sudden_ambush.up & variable.need_bt & buff.bt_rake.down",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_moonfire.down",
|
|
["action"] = "moonfire_cat",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_ambush.up & variable.need_bt & buff.bt_rake.down",
|
|
["action"] = "rake",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_shred.down & ! variable.easy_swipe",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rake.pmultiplier < 1.6 & variable.need_bt & buff.bt_rake.down",
|
|
["action"] = "rake",
|
|
["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 & hero_tree.wildstalker ) & ( 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,
|
|
["criteria"] = "buff.shadowmeld.up || buff.prowl.up",
|
|
["action"] = "rake",
|
|
["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,
|
|
["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 )",
|
|
["action"] = "adaptive_swarm",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.cat_form.up & dot.adaptive_swarm_damage.stack < 3 & talent.unbridled_swarm.enabled & spell_targets.swipe_cat > 1 & dot.rip.ticking",
|
|
["action"] = "adaptive_swarm",
|
|
["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"] = "keep using this archaic 'nonsense' for veinripper because its better idk ill fix soon tm",
|
|
["criteria"] = "talent.veinripper.enabled & 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,
|
|
["description"] = "fix to work with veinripper idk",
|
|
["criteria"] = "! talent.veinripper.enabled & spell_targets = 1 & hero_tree.wildstalker & buff.tigers_fury.up & ( buff.bloodtalons.up || ! talent.bloodtalons.enabled ) & ( combo_points >= 3 & refreshable & cooldown.tigers_fury.remains > 25 || buff.tigers_fury.remains < 5 & variable.rip_duration > cooldown.tigers_fury.remains & cooldown.tigers_fury.remains >= dot.rip.remains )",
|
|
["action"] = "rip",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "( buff.bs_inc.up & ! buff.ravage.up & ! buff.coiled_to_spring.up & hero_tree.druid_of_the_claw & talent.coiled_to_spring.enabled & spell_targets <= 2 ) || buff.bloodtalons.stack = 0 & active_bt_triggers = 2",
|
|
["list_name"] = "builder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["sec"] = "cooldown.tigers_fury.remains",
|
|
["action"] = "wait",
|
|
["criteria"] = "combo_points = 5 & cooldown.tigers_fury.remains < 3 & spell_targets = 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "combo_points = 5",
|
|
["list_name"] = "finisher",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "spell_targets.swipe_cat = 1 & combo_points < 5",
|
|
["list_name"] = "builder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "spell_targets.swipe_cat >= 2 & combo_points < 5",
|
|
["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",
|
|
["var_name"] = "trinket_1_buffs",
|
|
["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)",
|
|
},
|
|
{
|
|
["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",
|
|
["value"] = "1",
|
|
["var_name"] = "trinket_1_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["value"] = "1",
|
|
["value_else"] = "0.5",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "if we aren't playing 2 minute convoke, then we can sync 3 minute cds with berserk sans hotl",
|
|
["value"] = "1",
|
|
["var_name"] = "trinket_1_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["value"] = "1",
|
|
["value_else"] = "0.5",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "prioritize trinkets that line-up with cds->main-stat on uses->longer cd trinkets->shorter duration trinkets",
|
|
["value"] = "2",
|
|
["var_name"] = "trinket_priority",
|
|
["action"] = "variable",
|
|
["value_else"] = "1",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / 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 ) )",
|
|
},
|
|
},
|
|
["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 ) & ( hero_tree.wildstalker || ! buff.bs_inc.up )",
|
|
["action"] = "rake",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "bt check is due to the overcap line, comes up with convoke/apex bites",
|
|
["criteria"] = "buff.sudden_ambush.up & buff.bs_inc.up & ! ( variable.need_bt & buff.bt_shred.up & active_bt_triggers = 2 )",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["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"] = "moonfire_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! talent.thrashing_claws.enabled & ! buff.bs_inc.up",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.clearcasting.up & ! ( variable.need_bt & buff.bt_shred.up )",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["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"] = "refreshable",
|
|
["action"] = "rake",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! talent.thrashing_claws.enabled",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
{
|
|
["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"] = "moonfire_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_thrash.down",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
},
|
|
["variable"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( ( 4 + ( 4 * combo_points ) ) * ( 1 - ( 0.2 * talent.circle_of_life_and_death.enabled ) ) * ( 1 + ( 0.25 * talent.veinripper.enabled ) ) ) + ( variable.rip_max_pandemic_duration >? dot.rip.remains )",
|
|
["var_name"] = "rip_duration",
|
|
["description"] = "what rips new duration would be if applied in current state",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( ( 4 + ( 4 * combo_points ) ) * ( 1 - ( 0.2 * talent.circle_of_life_and_death.enabled ) ) * ( 1 + ( 0.25 * talent.veinripper.enabled ) ) ) * 0.3",
|
|
["var_name"] = "rip_max_pandemic_duration",
|
|
},
|
|
{
|
|
["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 ) )",
|
|
["var_name"] = "dot_refresh_soon",
|
|
["description"] = "this returns true if we have a dot nearing pandemic range",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.bloodtalons.enabled & buff.bloodtalons.stack <= 1",
|
|
["var_name"] = "need_bt",
|
|
["description"] = "try to proc bt if we have 1 or 0 sacks of bloodtalons",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.clearcasting.stack = ( 1 + talent.moment_of_clarity.enabled )",
|
|
["var_name"] = "cc_capped",
|
|
["description"] = "capped on clearcasting stacks",
|
|
},
|
|
{
|
|
["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",
|
|
["var_name"] = "lastconvoke",
|
|
["description"] = "checks if theres exactly 1 convoke remaining in sim",
|
|
},
|
|
{
|
|
["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",
|
|
["var_name"] = "lastzerk",
|
|
["description"] = "checks if theres exactly 1 berserk cast remaining in sim : at least 5s spare for now, TODO: check #s",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( cooldown.potions.remains + cooldown.potions.duration + 15 ) > fight_remains & cooldown.potions.remains + 15 < fight_remains",
|
|
["var_name"] = "lastpotion",
|
|
["description"] = "approximates if theres exactly 1 potion cast remaining with duration to spare",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["value"] = "settings.regrowth",
|
|
["var_name"] = "regrowth",
|
|
["description"] = "optional variable that sends regrowth and renewal casts. Turned off by default",
|
|
},
|
|
{
|
|
["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",
|
|
["var_name"] = "moonfire_snapshotted",
|
|
["value"] = "buff.tigers_fury.up",
|
|
["description"] = "track moonfire snapshot",
|
|
["criteria"] = "prev.lunar_inspiration",
|
|
},
|
|
},
|
|
["cooldown"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > 17 || boss",
|
|
["action"] = "incarnation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["description"] = "non-stat on use trinkets get used on cooldown, so long as it wont interfere with a stat on-use trinket",
|
|
["criteria"] = "trinket.t1.has_use_damage & ( trinket.t2.cooldown.remains > 20 & ( ! trinket.t1.is.junkmaestros_mega_magnet || cooldown.bestinslots.remains > 20 || ! equipped.bestinslots ) || ! trinket.t2.has_use_buff & ( cooldown.bestinslots.remains > 20 || ! equipped.bestinslots ) || cooldown.tigers_fury.remains < 25 & cooldown.tigers_fury.remains > 20 ) || boss & fight_remains < 5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "trinket.t2.has_use_damage & ( trinket.t1.cooldown.remains > 20 & ( ! trinket.t2.is.junkmaestros_mega_magnet || cooldown.bestinslots.remains > 20 || ! equipped.bestinslots ) || ! trinket.t1.has_use_buff & ( cooldown.bestinslots.remains > 20 || ! equipped.bestinslots ) || cooldown.tigers_fury.remains < 25 & cooldown.tigers_fury.remains > 20 ) || boss & fight_remains < 5",
|
|
["action"] = "trinket2",
|
|
["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",
|
|
["description"] = "stat on-use trinkets, prefers trinket with higher priority.",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points <= 1 + buff.bs_inc.up & ( buff.tigers_fury.up || ! talent.savage_fury.enabled || ! hero_tree.wildstalker || boss & fight_remains < cooldown.tigers_fury.remains )",
|
|
["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,
|
|
["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",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ferocious_bite",
|
|
["cycle_targets"] = 1,
|
|
["max_energy"] = 1,
|
|
["criteria"] = "! buff.bs_inc.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bs_inc.up",
|
|
["action"] = "ferocious_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
},
|
|
["author"] = "SimC",
|
|
},
|
|
["Balance"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/druid_balance.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250506,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-05-06: SimC Sync\n2025-04-25: SimC Sync\n2025-03-30: SimC Sync\n2025-03-14: SimC Sync (trinket conditions)\n2025-03-13: Trinket fixes\n2025-03-08: Replace variables with eclipse metatable expressions\n2025-03-05: Remove bear form stuff for now\n2025-03-02: TWW Season 2 update\n2025-02-06: Revert (or edit) workarounds for wrath opener\n2024-01-25: SimC update\n2024-12-22: Spymasters improvement\n2024-11-05: SimC update (Sunfire)\n2024-10-29: Fix AOE Eclipse\n2024-10-26: SimC update, adjustments for leveling\n2024-10-23: SimC update\n2024-10-22: 11.0.5\n2024-10-06, 10-11, 10-21: SimC update\n2024-09-28, 09-29: SimC update\n2024-09-01, 09-04, 09-08, 09-10, 09-15, 09-21: SimC update\n2024-08-11: Mark of the Wild\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "solar_beam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time < 2 & eclipse.lunar_in_1",
|
|
["action"] = "wrath",
|
|
["description"] = "[Edited] Trigger Lunar Eclipse if we failed to precast Wrath x2",
|
|
},
|
|
{
|
|
["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",
|
|
["description"] = "VARIABLES",
|
|
["var_name"] = "passive_asp",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.ca_inc.full_recharge_time <? 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"] = "( ! talent.whirling_stars.enabled || ! talent.convoke_the_spirits.enabled || cooldown.convoke_the_spirits.remains < gcd.max * 2 || fight_remains < cooldown.convoke_the_spirits.remains + 3 || cooldown.convoke_the_spirits.remains > cooldown.ca_inc.full_recharge_time + 15 * talent.control_of_the_dream.enabled ) & ( variable.on_use_trinket = 0 || ( variable.on_use_trinket = 1 || variable.on_use_trinket = 3 ) & ( trinket.t1.cooldown.remains > cooldown.ca_inc.full_recharge_time + ( 15 * talent.control_of_the_dream.enabled ) || ! talent.convoke_the_spirits.enabled & hero_tree.elunes_chosen & trinket.t1.cooldown.remains > cooldown.ca_inc.full_recharge_time - cooldown.ca_inc.duration || talent.convoke_the_spirits.enabled & ( cooldown.convoke_the_spirits.remains < 3 & ( ceil ( ( fight_remains - 10 ) / cooldown.convoke_the_spirits.duration ) > ceil ( ( fight_remains - trinket.t1.cooldown.remains - 10 ) / cooldown.convoke_the_spirits.duration ) ) || cooldown.convoke_the_spirits.remains > trinket.t1.cooldown.remains & cooldown.ca_inc.full_recharge_time - cooldown.ca_inc.duration < trinket.t1.cooldown.remains + 15 ) || trinket.t1.cooldown.remains + 6 > fight_remains || trinket.t1.cooldown.ready ) || variable.on_use_trinket = 2 & ( trinket.t2.cooldown.remains > cooldown.ca_inc.full_recharge_time + ( 15 * talent.control_of_the_dream.enabled ) || ! talent.convoke_the_spirits.enabled & hero_tree.elunes_chosen & trinket.t1.cooldown.remains > cooldown.ca_inc.full_recharge_time - cooldown.ca_inc.duration || talent.convoke_the_spirits.enabled & ( cooldown.convoke_the_spirits.remains < 3 & ( ceil ( ( fight_remains - 10 ) / cooldown.convoke_the_spirits.duration ) > ceil ( ( fight_remains - trinket.t2.cooldown.remains - 10 ) / cooldown.convoke_the_spirits.duration ) ) || cooldown.convoke_the_spirits.remains > trinket.t2.cooldown.remains & cooldown.ca_inc.full_recharge_time - cooldown.ca_inc.duration < trinket.t2.cooldown.remains + 15 ) || trinket.t2.cooldown.remains + 6 > fight_remains || trinket.t2.cooldown.ready ) ) & cooldown.ca_inc.remains < gcd.max & ! buff.ca_inc.up",
|
|
["var_name"] = "pre_cd_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.pre_cd_condition & ( fight_remains < ( 15 + 5 * talent.incarnation_chosen_of_elune.enabled ) * ( 1 - talent.whirling_stars.enabled * 0.2 ) || target.time_to_die > 10 & ( ! hero_tree.keeper_of_the_grove || buff.harmony_of_the_grove.up ) )",
|
|
["var_name"] = "cd_condition",
|
|
},
|
|
{
|
|
["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,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.lunar_calling.enabled || spell_targets.starfire > 3 - ( talent.umbral_intensity.rank || talent.soul_of_the_forest.enabled )",
|
|
["description"] = "[Syrif] - Variable replaced with eclipse metatable expression",
|
|
["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,
|
|
["name"] = "spymasters_web",
|
|
["description"] = "ITEMS",
|
|
["criteria"] = "variable.cd_condition & ( buff.spymasters_report.stack > 29 || boss & fight_remains < cooldown.ca_inc.duration ) || boss & fight_remains < 20",
|
|
["action"] = "spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
["criteria"] = "( ( cooldown.force_of_nature.remains < 3 & ( trinket.t1.is.spymasters_web || trinket.t2.is.spymasters_web ) & buff.spymasters_report.stack >= 29 ) || ( cooldown.convoke_the_spirits.remains < 2 & cooldown.ca_inc.ready & cooldown.force_of_nature.remains < 3 & buff.spymasters_report.stack <= 29 || fight_remains < 20 || fight_remains < variable.ca_effective_cd & ( buff.harmony_of_the_grove.up || cooldown.convoke_the_spirits.ready ) ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.no_cd_talent || boss & 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 & 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 & ! trinket.t1.is.soulletting_ruby & ( variable.on_use_trinket != 1 & variable.on_use_trinket != 3 & trinket.t2.cooldown.remains > 20 || boss & fight_remains < ( 20 + 20 * ( trinket.t2.has_use & 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 & ! trinket.t2.is.soulletting_ruby & ( variable.on_use_trinket < 2 & trinket.t1.cooldown.remains > 20 || variable.on_use_trinket = 3 & trinket.t1.cooldown.remains > 20 & ( ! hero_tree.keeper_of_the_grove || buff.harmony_of_the_grove.up || ceil ( ( fight_remains - 15 ) / trinket.t2.cooldown.duration ) > ceil ( ( fight_remains - cooldown.force_of_nature.remains - 15 ) / trinket.t2.cooldown.duration ) ) || boss & fight_remains < ( 20 + 20 * ( trinket.t1.has_use & trinket.t1.cooldown.remains < 25 ) ) || variable.generic_trinket_condition )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "bestinslots",
|
|
["action"] = "bestinslots",
|
|
["criteria"] = "hero_tree.keeper_of_the_grove & buff.harmony_of_the_grove.up || hero_tree.elunes_chosen & ( cooldown.ca_inc.full_recharge_time > 20 || buff.ca_inc.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "neural_synapse_enhancer",
|
|
["action"] = "neural_synapse_enhancer",
|
|
["criteria"] = "variable.on_use_trinket = 1 & ! trinket.t1.cooldown.ready & ( buff.harmony_of_the_grove.up || hero_tree.elunes_chosen ) || ! trinket.t1.has_use_buff & ( buff.harmony_of_the_grove.up || hero_tree.elunes_chosen )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "neural_synapse_enhancer",
|
|
["action"] = "neural_synapse_enhancer",
|
|
["criteria"] = "variable.on_use_trinket = 2 & ! trinket.t2.cooldown.ready & ( buff.harmony_of_the_grove.up || hero_tree.elunes_chosen ) || ! trinket.t2.has_use_buff & ( buff.harmony_of_the_grove.up || hero_tree.elunes_chosen )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains <= 30",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.no_cd_talent || boss & fight_remains < 15",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["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",
|
|
["var_name"] = "on_use_trinket",
|
|
["criteria"] = "trinket.t1.has_use_buff & ! trinket.t1.is.ovinaxs_mercurial_egg & ! trinket.t1.is.spymasters_web",
|
|
["value_else"] = "0",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "on_use_trinket",
|
|
["criteria"] = "trinket.t2.has_use_buff & ! trinket.t2.is.ovinaxs_mercurial_egg & ! trinket.t2.is.spymasters_web",
|
|
["value_else"] = "0",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["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"] = "eclipse.lunar_in",
|
|
["action"] = "wrath",
|
|
["description"] = "[edited] This handles the wrath opener based on the state of eclipse",
|
|
},
|
|
{
|
|
["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 & eclipse.in_eclipse & eclipse.remains < cast_time & ! variable.cd_condition",
|
|
["action"] = "wrath",
|
|
["description"] = "AOE",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.enter_lunar & eclipse.in_eclipse & 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 & ( eclipse.in_none || eclipse.remains < cast_time ) & ! variable.pre_cd_condition",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.enter_lunar & ( eclipse.in_none || 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"] = "variable.pre_cd_condition || 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 || fight_remains < cooldown.convoke_the_spirits.remains + cooldown.convoke_the_spirits.duration + 5 ) & ( variable.on_use_trinket = 0 || ( variable.on_use_trinket = 1 || variable.on_use_trinket = 3 ) & ( trinket.t1.cooldown.remains > 5 + 15 * talent.control_of_the_dream.enabled || cooldown.ca_inc.remains > 20 || trinket.t1.cooldown.ready ) || variable.on_use_trinket = 2 & ( trinket.t2.cooldown.remains > 5 + 15 * talent.control_of_the_dream.enabled || cooldown.ca_inc.remains > 20 || trinket.t2.cooldown.ready ) ) & ( fight_remains > action_cooldown + 5 || 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 & fight_remains > cooldown.convoke_the_spirits.remains + 6",
|
|
["action"] = "force_of_nature",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "eclipse.in_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 & ! buff.dreamstate.up",
|
|
["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,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! prev_gcd.1.wild_mushroom & ! dot.fungal_growth.ticking",
|
|
["action"] = "wild_mushroom",
|
|
},
|
|
{
|
|
["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 > ( 3 - ( talent.umbral_intensity.enabled || talent.soul_of_the_forest.enabled ) )",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["action"] = "wrath",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.lunar_calling.enabled || ! talent.lunar_calling.enabled & eclipse.remains <= 7",
|
|
["action"] = "warrior_of_elune",
|
|
["description"] = "ST",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.enter_lunar & eclipse.in_eclipse & eclipse.remains < cast_time & ! variable.cd_condition",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.enter_lunar & eclipse.in_eclipse & 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 & ( eclipse.in_none || eclipse.remains < cast_time )",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.enter_lunar & ( eclipse.in_none || 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"] = "variable.pre_cd_condition || 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 || fight_remains < cooldown.convoke_the_spirits.remains + cooldown.convoke_the_spirits.duration + 5 ) & ( variable.on_use_trinket = 0 || ( variable.on_use_trinket = 1 || variable.on_use_trinket = 3 ) & ( trinket.t1.cooldown.remains > 5 + 15 * talent.control_of_the_dream.enabled || cooldown.ca_inc.remains > 20 || trinket.t1.cooldown.ready ) || variable.on_use_trinket = 2 & ( trinket.t2.cooldown.remains > 5 + 15 * talent.control_of_the_dream.enabled || cooldown.ca_inc.remains > 20 || trinket.t2.cooldown.ready ) ) & ( fight_remains > action_cooldown + 5 || 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 & 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,
|
|
["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,
|
|
["name"] = "spymasters_web",
|
|
["description"] = "PRE_CD",
|
|
["criteria"] = "variable.cd_condition & ( buff.spymasters_report.stack > 29 || boss & fight_remains < cooldown.ca_inc.duration )",
|
|
["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"] = 20250506,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 3: 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 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 6: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 6: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 6: Converted operations in '(!talent.whirling_stars.enabled||!talent.convoke_the_spirits.enabled||cooldown.convoke_the_spirits.remains<gcd.max*2||fight_remains<cooldown.convoke_the_spirits.remains+3||cooldown.convoke_the_spirits.remains>cooldown.ca_inc.full_recharge_time+15*talent.control_of_the_dream.enabled)&(variable.on_use_trinket=0||(variable.on_use_trinket=1||variable.on_use_trinket=3)&(trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream.enabled)||!talent.convoke_the_spirits.enabled&hero_tree.elunes_chosen&trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits.enabled&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)%cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.t1.cooldown.remains-10)%cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.t1.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.t1.cooldown.remains+15)||trinket.t1.cooldown.remains+6>fight_remains||trinket.t1.cooldown.ready)||variable.on_use_trinket=2&(trinket.t2.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream.enabled)||!talent.convoke_the_spirits.enabled&hero_tree.elunes_chosen&trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits.enabled&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)%cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.t2.cooldown.remains-10)%cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.t2.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.t2.cooldown.remains+15)||trinket.t2.cooldown.remains+6>fight_remains||trinket.t2.cooldown.ready))&cooldown.ca_inc.remains<gcd.max&!buff.ca_inc.up' to '(!talent.whirling_stars.enabled||!talent.convoke_the_spirits.enabled||cooldown.convoke_the_spirits.remains<gcd.max*2||fight_remains<cooldown.convoke_the_spirits.remains+3||cooldown.convoke_the_spirits.remains>cooldown.ca_inc.full_recharge_time+15*talent.control_of_the_dream.enabled)&(variable.on_use_trinket=0||(variable.on_use_trinket=1||variable.on_use_trinket=3)&(trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream.enabled)||!talent.convoke_the_spirits.enabled&hero_tree.elunes_chosen&trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits.enabled&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)/cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.t1.cooldown.remains-10)/cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.t1.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.t1.cooldown.remains+15)||trinket.t1.cooldown.remains+6>fight_remains||trinket.t1.cooldown.ready)||variable.on_use_trinket=2&(trinket.t2.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream.enabled)||!talent.convoke_the_spirits.enabled&hero_tree.elunes_chosen&trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits.enabled&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)/cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.t2.cooldown.remains-10)/cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.t2.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.t2.cooldown.remains+15)||trinket.t2.cooldown.remains+6>fight_remains||trinket.t2.cooldown.ready))&cooldown.ca_inc.remains<gcd.max&!buff.ca_inc.up'.\nLine 13: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 13: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 14: Converted operations in 'variable.no_cd_talent||boss&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&variable.ca_effective_cd>20||variable.on_use_trinket=0' to 'variable.no_cd_talent||boss&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&variable.ca_effective_cd>20||variable.on_use_trinket=0'.\nLine 15: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 15: Converted 'trinket.1.is.imperfect_ascendancy_serum' to 'trinket.t1.is.imperfect_ascendancy_serum' (1x).\nLine 15: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 15: Converted 'trinket.1.is.soulletting_ruby' to 'trinket.t1.is.soulletting_ruby' (1x).\nLine 15: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 15: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 15: Converted 'trinket.2.has_use' to 'trinket.t2.has_use' (1x).\nLine 15: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 15: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 16: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 16: Converted 'trinket.2.is.imperfect_ascendancy_serum' to 'trinket.t2.is.imperfect_ascendancy_serum' (1x).\nLine 16: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 16: Converted 'trinket.2.is.soulletting_ruby' to 'trinket.t2.is.soulletting_ruby' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 16: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 16: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\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.1.has_use' to 'trinket.t1.has_use' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 16: Converted operations in '!trinket.t2.is.spymasters_web&!trinket.t2.is.imperfect_ascendancy_serum&!trinket.t2.is.treacherous_transmitter&!trinket.t2.is.soulletting_ruby&(variable.on_use_trinket<2&trinket.t1.cooldown.remains>20||variable.on_use_trinket=3&trinket.t1.cooldown.remains>20&(!hero_tree.keeper_of_the_grove||buff.harmony_of_the_grove.up||ceil((fight_remains-15)%trinket.t2.cooldown.duration)>ceil((fight_remains-cooldown.force_of_nature.remains-15)%trinket.t2.cooldown.duration))||boss&fight_remains<(20+20*(trinket.t1.has_use&trinket.t1.cooldown.remains<25))||variable.generic_trinket_condition)' to '!trinket.t2.is.spymasters_web&!trinket.t2.is.imperfect_ascendancy_serum&!trinket.t2.is.treacherous_transmitter&!trinket.t2.is.soulletting_ruby&(variable.on_use_trinket<2&trinket.t1.cooldown.remains>20||variable.on_use_trinket=3&trinket.t1.cooldown.remains>20&(!hero_tree.keeper_of_the_grove||buff.harmony_of_the_grove.up||ceil((fight_remains-15)/trinket.t2.cooldown.duration)>ceil((fight_remains-cooldown.force_of_nature.remains-15)/trinket.t2.cooldown.duration))||boss&fight_remains<(20+20*(trinket.t1.has_use&trinket.t1.cooldown.remains<25))||variable.generic_trinket_condition)'.\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'.\nLine 18: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 19: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 19: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 19: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.is.ovinaxs_mercurial_egg' to 'trinket.t1.is.ovinaxs_mercurial_egg' (1x).\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.is.ovinaxs_mercurial_egg' to 'trinket.t2.is.ovinaxs_mercurial_egg' (1x).\nLine 6: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\n\nThe import for 'aoe' required some automated changes.\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 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.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 10: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 10: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 10: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\n\nThe import for 'st' required some automated changes.\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.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 12: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 12: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 12: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 12: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 12: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\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"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/druid_balance.simc\n## Up to date with SimC: April 27 - 603b5f7\n\nactions.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\n## [Syrif] - Edited the below 2 variables to better match SimC's intention\nactions.precombat+=/variable,name=on_use_trinket,op=add,if=trinket.1.has_use_buff&!trinket.1.is.ovinaxs_mercurial_egg&!trinket.1.is.spymasters_web,value=1,value_else=0\nactions.precombat+=/variable,name=on_use_trinket,op=add,if=trinket.2.has_use_buff&!trinket.2.is.ovinaxs_mercurial_egg&!trinket.2.is.spymasters_web,value=2,value_else=0\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\n# [edited] This handles the wrath opener based on the state of eclipse\nactions.precombat+=/wrath,if=eclipse.lunar_in\nactions.precombat+=/starfire,if=!talent.stellar_flare&hero_tree.elunes_chosen\nactions.precombat+=/stellar_flare\n\nactions+=/solar_beam\n# [Edited] Trigger Lunar Eclipse if we failed to precast Wrath x2\nactions+=/wrath,if=time<2&eclipse.lunar_in_1\n# VARIABLES\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.full_recharge_time<?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=pre_cd_condition,value=(!talent.whirling_stars||!talent.convoke_the_spirits||cooldown.convoke_the_spirits.remains<gcd.max*2||fight_remains<cooldown.convoke_the_spirits.remains+3||cooldown.convoke_the_spirits.remains>cooldown.ca_inc.full_recharge_time+15*talent.control_of_the_dream)&(variable.on_use_trinket=0||(variable.on_use_trinket=1||variable.on_use_trinket=3)&(trinket.1.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream)||!talent.convoke_the_spirits&hero_tree.elunes_chosen&trinket.1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)%cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.1.cooldown.remains-10)%cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.1.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.1.cooldown.remains+15)||trinket.1.cooldown.remains+6>fight_remains||trinket.1.cooldown.ready)||variable.on_use_trinket=2&(trinket.2.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream)||!talent.convoke_the_spirits&hero_tree.elunes_chosen&trinket.1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)%cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.2.cooldown.remains-10)%cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.2.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.2.cooldown.remains+15)||trinket.2.cooldown.remains+6>fight_remains||trinket.2.cooldown.ready))&cooldown.ca_inc.remains<gcd.max&!buff.ca_inc.up\nactions+=/variable,name=cd_condition,value=variable.pre_cd_condition&(fight_remains<(15+5*talent.incarnation_chosen_of_elune)*(1-talent.whirling_stars*0.2)||target.time_to_die>10&(!hero_tree.keeper_of_the_grove||buff.harmony_of_the_grove.up))\nactions+=/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)\n# [Syrif] - Variable replaced with eclipse metatable expression\n## actions+=/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>3-(talent.umbral_intensity.rank||talent.soul_of_the_forest)\nactions+=/variable,name=boat_stacks,value=buff.balance_of_all_things_arcane.stack+buff.balance_of_all_things_nature.stack\n# ITEMS\nactions+=/use_item,name=spymasters_web,if=variable.cd_condition&(buff.spymasters_report.stack>29||boss&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=((cooldown.force_of_nature.remains<3&(trinket.1.is.spymasters_web||trinket.2.is.spymasters_web)&buff.spymasters_report.stack>=29)||(cooldown.convoke_the_spirits.remains<2&cooldown.ca_inc.ready&cooldown.force_of_nature.remains<3&buff.spymasters_report.stack<=29||fight_remains<20||fight_remains<variable.ca_effective_cd&(buff.harmony_of_the_grove.up||cooldown.convoke_the_spirits.ready)))\nactions+=/variable,name=generic_trinket_condition,value=variable.no_cd_talent||boss&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&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&!trinket.1.is.soulletting_ruby&(variable.on_use_trinket!=1&variable.on_use_trinket!=3&trinket.2.cooldown.remains>20||boss&fight_remains<(20+20*(trinket.2.has_use&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&!trinket.2.is.soulletting_ruby&(variable.on_use_trinket<2&trinket.1.cooldown.remains>20||variable.on_use_trinket=3&trinket.1.cooldown.remains>20&(!hero_tree.keeper_of_the_grove||buff.harmony_of_the_grove.up||ceil((fight_remains-15)%trinket.2.cooldown.duration)>ceil((fight_remains-cooldown.force_of_nature.remains-15)%trinket.2.cooldown.duration))||boss&fight_remains<(20+20*(trinket.1.has_use&trinket.1.cooldown.remains<25))||variable.generic_trinket_condition)\nactions+=/use_item,name=bestinslots,if=hero_tree.keeper_of_the_grove&buff.harmony_of_the_grove.up||hero_tree.elunes_chosen&(cooldown.ca_inc.full_recharge_time>20||buff.ca_inc.up)\nactions+=/use_item,name=neural_synapse_enhancer,if=variable.on_use_trinket=1&!trinket.1.cooldown.ready&(buff.harmony_of_the_grove.up||hero_tree.elunes_chosen)||!trinket.1.has_use_buff&(buff.harmony_of_the_grove.up||hero_tree.elunes_chosen)\nactions+=/use_item,name=neural_synapse_enhancer,if=variable.on_use_trinket=2&!trinket.2.cooldown.ready&(buff.harmony_of_the_grove.up||hero_tree.elunes_chosen)||!trinket.2.has_use_buff&(buff.harmony_of_the_grove.up||hero_tree.elunes_chosen)\nactions+=/potion,if=boss&fight_remains<=30\n## PI & RUN APL\n## actions+=/invoke_external_buff,name=power_infusion,if=variable.cd_condition\nactions+=/berserking,if=variable.no_cd_talent||boss&fight_remains<15\nactions+=/run_action_list,name=aoe,strict=1,if=spell_targets>1\nactions+=/run_action_list,name=st\n\n# AOE\nactions.aoe+=/wrath,if=variable.enter_lunar&eclipse.in_eclipse&eclipse.remains<cast_time&!variable.cd_condition\nactions.aoe+=/starfire,if=!variable.enter_lunar&eclipse.in_eclipse&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&(eclipse.in_none||eclipse.remains<cast_time)\n## actions.aoe+=/starfire,if=cooldown.ca_inc.remains>cast_time+gcd.max&!variable.enter_lunar&(eclipse.in_none||eclipse.remains<cast_time)\nactions.aoe+=/wrath,if=variable.enter_lunar&(eclipse.in_none||eclipse.remains<cast_time)&!variable.pre_cd_condition\nactions.aoe+=/starfire,if=!variable.enter_lunar&(eclipse.in_none||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=variable.pre_cd_condition||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||fight_remains<cooldown.convoke_the_spirits.remains+cooldown.convoke_the_spirits.duration+5)&(variable.on_use_trinket=0||(variable.on_use_trinket=1||variable.on_use_trinket=3)&(trinket.1.cooldown.remains>5+15*talent.control_of_the_dream||cooldown.ca_inc.remains>20||trinket.1.cooldown.ready)||variable.on_use_trinket=2&(trinket.2.cooldown.remains>5+15*talent.control_of_the_dream||cooldown.ca_inc.remains>20||trinket.2.cooldown.ready))&(fight_remains>cooldown+5||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&fight_remains>cooldown.convoke_the_spirits.remains+6\nactions.aoe+=/fury_of_elune,if=eclipse.in_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&!buff.dreamstate.up\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,if=!prev_gcd.1.wild_mushroom&!dot.fungal_growth.ticking\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>(3-(talent.umbral_intensity||talent.soul_of_the_forest))\nactions.aoe+=/wrath\n\n# PRE_CD\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||buff.harmony_of_the_grove.up&(buff.spymasters_report.stack>29||!trinket.1.is.spymasters_web||!trinket.2.is.spymasters_web)\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\n\n# ST\nactions.st+=/warrior_of_elune,if=talent.lunar_calling||!talent.lunar_calling&eclipse.remains<=7\nactions.st+=/wrath,if=variable.enter_lunar&eclipse.in_eclipse&eclipse.remains<cast_time&!variable.cd_condition\nactions.st+=/starfire,if=!variable.enter_lunar&eclipse.in_eclipse&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&(eclipse.in_none||eclipse.remains<cast_time)\nactions.st+=/starfire,if=!variable.enter_lunar&(eclipse.in_none||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=variable.pre_cd_condition||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||fight_remains<cooldown.convoke_the_spirits.remains+cooldown.convoke_the_spirits.duration+5)&(variable.on_use_trinket=0||(variable.on_use_trinket=1||variable.on_use_trinket=3)&(trinket.1.cooldown.remains>5+15*talent.control_of_the_dream||cooldown.ca_inc.remains>20||trinket.1.cooldown.ready)||variable.on_use_trinket=2&(trinket.2.cooldown.remains>5+15*talent.control_of_the_dream||cooldown.ca_inc.remains>20||trinket.2.cooldown.ready))&(fight_remains>cooldown+5||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&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+=/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",
|
|
},
|
|
["Guardian"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250314,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-03-14: SimC Sync\n\n2024-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",
|
|
},
|
|
},
|
|
["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.ursocs_endurance.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",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "skull_bash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soothe",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "bestinslots",
|
|
["action"] = "bestinslots",
|
|
["criteria"] = "buff.incarnation_guardian_of_ursoc.up || buff.berserk_bear.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "tome_of_lights_devotion",
|
|
["action"] = "tome_of_lights_devotion",
|
|
["criteria"] = "buff.inner_resilience.up",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
},
|
|
["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_bear",
|
|
["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.up & buff.tooth_and_claw.remains < 1 + gcd.max ) & variable.if_build = 1",
|
|
["action"] = "raze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.if_build = 0 & ( buff.tooth_and_claw.stack > 1 || buff.tooth_and_claw.up & buff.tooth_and_claw.remains < 1 + gcd.max || buff.vicious_cycle_maul.stack = 3 )",
|
|
["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 & ! 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",
|
|
["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.up & buff.tooth_and_claw.remains < 1 + gcd.max ) & active_enemies <= 5 & ! talent.raze.enabled ) || ( ( buff.tooth_and_claw.stack > 1 || buff.tooth_and_claw.up & buff.tooth_and_claw.remains < 1 + gcd.max ) & active_enemies = 1 & talent.raze.enabled ) || ( ( buff.tooth_and_claw.stack > 1 || buff.tooth_and_claw.up & 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",
|
|
["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",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.cat_form.up & ! dot.rip.ticking & active_enemies < 3",
|
|
["action"] = "rip",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rip.ticking & combo_points > 4 & active_enemies < 3",
|
|
["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",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250314,
|
|
["warnings"] = "Imported 4 action lists.\n",
|
|
["spec"] = 104,
|
|
["basedOn"] = "Guardian",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/druid_guardian.simc\n## Up to date with SimC: March 8 2025 - ccb7c79\n\nactions.precombat+=/mark_of_the_wild\nactions.precombat+=/variable,name=if_build,value=1,value_else=0,if=talent.thorns_of_iron.enabled&talent.ursocs_endurance.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,name=bestinslots,if=buff.incarnation_guardian_of_ursoc.up||buff.berserk_bear.up\nactions+=/use_item,name=tome_of_lights_devotion,if=buff.inner_resilience.up\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.up&buff.tooth_and_claw.remains<1+gcd)&variable.if_build=1\nactions.bear+=/raze,if=variable.if_build=0&(buff.tooth_and_claw.stack>1||buff.tooth_and_claw.up&buff.tooth_and_claw.remains<1+gcd||buff.vicious_cycle_maul.stack=3)\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&!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\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.up&buff.tooth_and_claw.remains<1+gcd)&active_enemies<=5&!talent.raze.enabled)||((buff.tooth_and_claw.stack>1||buff.tooth_and_claw.up&buff.tooth_and_claw.remains<1+gcd)&active_enemies=1&talent.raze.enabled)||((buff.tooth_and_claw.stack>1||buff.tooth_and_claw.up&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\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\nactions.bear+=/rip,if=buff.cat_form.up&!dot.rip.ticking&active_enemies<3\nactions.bear+=/ferocious_bite,if=dot.rip.ticking&combo_points>4&active_enemies<3\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",
|
|
},
|
|
["Restoration Druid"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20250425,
|
|
["spec"] = 105,
|
|
["desc"] = "2025-04-25: Fix target_if; tweak healing",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/druid_restoration.simc\n## Up to date with SimC: March 8 2025 - ccb7c79\n\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\nactions.precombat+=/mark_of_the_wild\nactions.precombat+=/symbiotic_relationship,if=down&active_allies>1\nactions.precombat+=/prowl,if=talent.rake.enabled\nactions.precombat+=/cat_form,if=talent.rake.enabled1\n\nactions+=/skull_bash\nactions+=/berserking\nactions+=/natures_vigil,if=!buff.prowl.up&!buff.shadowmeld.up\nactions+=/call_action_list,name=healing,strict=1,if=settings.healing_mode&buff.prowl.down\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)||boss&fight_remains<46\nactions.cat+=/cat_form,if=talent.convoke_the_spirits.enabled&(active_enemies<=6)&(!buff.cat_form.up&cooldown.convoke_the_spirits.remains<=gcd.max&(buff.heart_of_the_wild.up||cooldown.heart_of_the_wild.remains>60-30*talent.cenarius_guidance.enabled||!talent.heart_of_the_wild.enabled))\nactions.cat+=/convoke_the_spirits,if=(buff.cat_form.up)&(buff.heart_of_the_wild.up||cooldown.heart_of_the_wild.remains>60-30*talent.cenarius_guidance.enabled||!talent.heart_of_the_wild.enabled)\nactions.cat+=/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>5&spell_targets.thrash_cat>4\nactions.cat+=/sunfire,cycle_targets=1,if=(refreshable&target.time_to_die>5)&!prev_gcd.1.cat_form\nactions.cat+=/rake,cycle_targets=1,if=refreshable&(time_to_die>8&!ticking)||(active_dot.rake<1&talent.primal_fury.enabled&talent.master_shapeshifter.enabled&spell_targets.swipe_cat>4)\n# [Hekili] Modified as cooldown.healing and druid.time_spend_healing are not supported.\nactions.cat+=/cat_form,if=!buff.cat_form.up&energy>60&!talent.fluid_form.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<4\nactions.cat+=/sunfire,if=prev_gcd.1.moonfire&remains<duration*0.8\nactions.cat+=/starfire,if=(talent.master_shapeshifter.enabled&(spell_targets.starfire>4||(buff.heart_of_the_wild.up&spell_targets.starfire>5))||(buff.heart_of_the_wild.up&spell_targets.starfire>7))\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&!talent.fluid_form.enabled\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&dot.rip.remains>10)&spell_targets.swipe_cat<4\nactions.cat+=/thrash_cat,cycle_targets=1,if=refreshable&target.time_to_die>5&spell_targets.thrash_cat>2\nactions.cat+=/rake,cycle_targets=1,if=refreshable&time_to_die>10&(!talent.primal_fury.enabled||!talent.master_shapeshifter.enabled||!spell_targets.swipe_cat>4)\nactions.cat+=/swipe_cat,if=active_enemies>2&combo_points<5\nactions.cat+=/thrash_cat,if=refreshable&fight_remains>5\nactions.cat+=/pool_resource,for_next=1\nactions.cat+=/shred,if=energy>60&combo_points<5\nactions.cat+=/ferocious_bite,if=energy>50&combo_points.deficit=0\nactions.cat+=/cat_form,if=!buff.cat_form.up\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",
|
|
["version"] = 20250425,
|
|
["warnings"] = "Imported 4 action lists.\n",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "skull_bash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "berserking",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.prowl.up & ! buff.shadowmeld.up",
|
|
["action"] = "natures_vigil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "settings.healing_mode & buff.prowl.down",
|
|
["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,
|
|
},
|
|
},
|
|
["healing"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.rejuvenation < 1",
|
|
["action"] = "rejuvenation",
|
|
["description"] = "On the tank",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_dot.lifebloom < 1 ) || ( active_dot.lifebloom < 2 & buff.lifebloom.up & talent.undergrowth.enabled )",
|
|
["action"] = "lifebloom",
|
|
["description"] = "On an ally",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_dot.lifebloom < 2 & buff.lifebloom.down & talent.undergrowth.enabled )",
|
|
["action"] = "lifebloom",
|
|
["description"] = "On yourself",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.efflorescence.down",
|
|
["action"] = "efflorescence",
|
|
["description"] = "Maintain Efflo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_dot.regrowth + active_dot.wild_growth + active_dot.rejuvenation ) > 1 & talent.reforestation.enabled & buff.reforestation.stack = 3",
|
|
["action"] = "swiftmend",
|
|
["description"] = "transform into tree",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev.1.swiftmend",
|
|
["action"] = "wild_growth",
|
|
["description"] = "Always wild growth after swiftmend",
|
|
},
|
|
},
|
|
["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 ) || boss & fight_remains < 46",
|
|
["action"] = "heart_of_the_wild",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.convoke_the_spirits.enabled & ( active_enemies <= 6 ) & ( ! buff.cat_form.up & cooldown.convoke_the_spirits.remains <= gcd.max & ( buff.heart_of_the_wild.up || cooldown.heart_of_the_wild.remains > 60 - 30 * talent.cenarius_guidance.enabled || ! talent.heart_of_the_wild.enabled ) )",
|
|
["action"] = "cat_form",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.cat_form.up ) & ( 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"] = "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 > 5 & spell_targets.thrash_cat > 4",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "sunfire",
|
|
["criteria"] = "( refreshable & target.time_to_die > 5 ) & ! prev_gcd.1.cat_form",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rake",
|
|
["criteria"] = "refreshable & ( time_to_die > 8 & ! ticking ) || ( active_dot.rake < 1 & talent.primal_fury.enabled & talent.master_shapeshifter.enabled & spell_targets.swipe_cat > 4 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.cat_form.up & energy > 60 & ! talent.fluid_form.enabled",
|
|
["action"] = "cat_form",
|
|
["description"] = "[Hekili] Modified as cooldown.healing and druid.time_spend_healing are not supported.",
|
|
},
|
|
{
|
|
["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 < 4",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.moonfire & remains < duration * 0.8",
|
|
["action"] = "sunfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.master_shapeshifter.enabled & ( spell_targets.starfire > 4 || ( buff.heart_of_the_wild.up & spell_targets.starfire > 5 ) ) || ( buff.heart_of_the_wild.up & spell_targets.starfire > 7 ) )",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 || ( active_enemies < 8 & ! buff.cat_form.up )",
|
|
["action"] = "starsurge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.cat_form.up & energy > 50 & ! talent.fluid_form.enabled",
|
|
["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 & dot.rip.remains > 10 ) & spell_targets.swipe_cat < 4",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "thrash_cat",
|
|
["criteria"] = "refreshable & target.time_to_die > 5 & spell_targets.thrash_cat > 2",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rake",
|
|
["criteria"] = "refreshable & time_to_die > 10 & ( ! talent.primal_fury.enabled || ! talent.master_shapeshifter.enabled || ! spell_targets.swipe_cat > 4 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 & combo_points < 5",
|
|
["action"] = "swipe_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & fight_remains > 5",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy > 60 & combo_points < 5",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy > 50 & combo_points.deficit = 0",
|
|
["action"] = "ferocious_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.cat_form.up",
|
|
["action"] = "cat_form",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Snapshot raid buffed stats before combat begins and pre-potting is done.",
|
|
["action"] = "mark_of_the_wild",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "down & active_allies > 1",
|
|
["action"] = "symbiotic_relationship",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.rake.enabled",
|
|
["action"] = "prowl",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.rake.enabled1",
|
|
["action"] = "cat_form",
|
|
},
|
|
},
|
|
},
|
|
["author"] = "Makahiki",
|
|
},
|
|
},
|
|
},
|
|
["Quildra - Deathwing"] = {
|
|
["runOnce"] = {
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
},
|
|
["specs"] = {
|
|
[255] = {
|
|
["maxRefresh"] = 10,
|
|
["custom2Name"] = "Custom 2",
|
|
["throttleRefresh"] = false,
|
|
["settings"] = {
|
|
["use_harpoon"] = true,
|
|
["ca_vop_overlap"] = false,
|
|
},
|
|
["aoe"] = 2,
|
|
["gcdSync"] = true,
|
|
["damageDots"] = false,
|
|
["damage"] = true,
|
|
["enabled"] = true,
|
|
["debuffPadding"] = 0,
|
|
["maxTime"] = 33,
|
|
["custom1Name"] = "Custom 1",
|
|
["package"] = "Survival",
|
|
["throttleTime"] = false,
|
|
["cycle"] = false,
|
|
["cycle_min"] = 6,
|
|
["nameplateRange"] = 8,
|
|
["potion"] = "unbridled_fury",
|
|
["potionsReset"] = 20180919.1,
|
|
["nameplates"] = true,
|
|
["damageExpiration"] = 8,
|
|
["buffPadding"] = 0,
|
|
["damageRange"] = 0,
|
|
},
|
|
[254] = {
|
|
["maxRefresh"] = 10,
|
|
["custom2Name"] = "Custom 2",
|
|
["throttleRefresh"] = false,
|
|
["settings"] = {
|
|
["trueshot_vop_overlap"] = false,
|
|
},
|
|
["aoe"] = 3,
|
|
["gcdSync"] = true,
|
|
["damageDots"] = false,
|
|
["damage"] = true,
|
|
["enabled"] = true,
|
|
["debuffPadding"] = 0,
|
|
["maxTime"] = 33,
|
|
["custom1Name"] = "Custom 1",
|
|
["package"] = "Marksmanship",
|
|
["throttleTime"] = false,
|
|
["cycle"] = false,
|
|
["cycle_min"] = 6,
|
|
["nameplateRange"] = 8,
|
|
["potion"] = "unbridled_fury",
|
|
["potionsReset"] = 20180919.1,
|
|
["nameplates"] = false,
|
|
["damageExpiration"] = 6,
|
|
["buffPadding"] = 0,
|
|
["damageRange"] = 0,
|
|
},
|
|
[253] = {
|
|
["maxRefresh"] = 10,
|
|
["custom2Name"] = "Custom 2",
|
|
["throttleRefresh"] = false,
|
|
["settings"] = {
|
|
["aspect_vop_overlap"] = false,
|
|
["barbed_shot_grace_period"] = 0.5,
|
|
},
|
|
["aoe"] = 3,
|
|
["gcdSync"] = true,
|
|
["damageDots"] = false,
|
|
["buffPadding"] = 0,
|
|
["enabled"] = true,
|
|
["debuffPadding"] = 0,
|
|
["maxTime"] = 33,
|
|
["custom1Name"] = "Custom 1",
|
|
["package"] = "Beast Mastery",
|
|
["throttleTime"] = false,
|
|
["cycle"] = false,
|
|
["cycle_min"] = 6,
|
|
["nameplateRange"] = 8,
|
|
["potion"] = "unbridled_fury",
|
|
["potionsReset"] = 20180919.1,
|
|
["nameplates"] = false,
|
|
["damageExpiration"] = 3,
|
|
["damage"] = true,
|
|
["damageRange"] = 0,
|
|
},
|
|
},
|
|
["displays"] = {
|
|
["Interrupts"] = {
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Marksmanship"] = {
|
|
["source"] = "# https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20200401,
|
|
["author"] = "SimC",
|
|
["desc"] = "# Marksmanship Hunter\n# https://github.com/simulationcraft/simc/\n# March 30, 2020\n\n# Changes:\n# - Add utility priority to APL.\n# - Use time_to_die rather than target.time_to_die to anticipate end of combat.",
|
|
["lists"] = {
|
|
["trickshots"] = {
|
|
{
|
|
["action"] = "barrage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trick_shots.up & ca_execute & buff.double_tap.up",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trick_shots.up & ( azerite.focused_fire.enabled || azerite.in_the_rhythm.rank > 1 || azerite.surging_shots.enabled || talent.streamline.enabled )",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trick_shots.up & ( buff.precise_shots.down || cooldown.aimed_shot.full_recharge_time < action.aimed_shot.cast_time || buff.trueshot.up )",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trick_shots.up",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trick_shots.down || buff.precise_shots.up & ! buff.trueshot.up || focus > 70",
|
|
["action"] = "multishot",
|
|
},
|
|
{
|
|
["action"] = "focused_azerite_beam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "purifying_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "concentrated_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blood_of_the_enemy",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up || buff.reckless_force_counter.stack < 10",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["action"] = "piercing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! action.serpent_sting.in_flight",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["action"] = "steady_shot",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.casting.up || buff.dispellable_magic.up || buff.dispellable_enrage.up",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "utility",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.trueshot.remains_guess < 15 || time_to_die < 30",
|
|
["name"] = "lurkers_insidious_gift",
|
|
["action"] = "lurkers_insidious_gift",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( time_to_die > action_cooldown + 34 || target.health.pct < 20 || target.time_to_pct_20 < 15 ) & cooldown.trueshot.remains_guess < 15 || time_to_die < 35",
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.trueshot.remains_guess < 5 || time_to_die < 20",
|
|
["name"] = "lustrous_golden_plumage",
|
|
["action"] = "lustrous_golden_plumage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot || ! talent.calling_the_shots.enabled || time_to_die < 10",
|
|
["name"] = "galecallers_boon",
|
|
["action"] = "galecallers_boon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot & ( buff.guardian_of_azeroth.up || ! essence.condensed_lifeforce.major & ca_execute ) || debuff.razor_coral_debuff.down || time_to_die < 20",
|
|
["name"] = "ashvanes_razor_coral",
|
|
["action"] = "ashvanes_razor_coral",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.trueshot.up & ! essence.blood_of_the_enemy.major || debuff.blood_of_the_enemy.up || time_to_die < 5",
|
|
["name"] = "pocketsized_computation_device",
|
|
["action"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot || ! talent.calling_the_shots.enabled || time_to_die < 20",
|
|
["action"] = "use_items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trickshots",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "hunters_mark",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["precast_time"] = "10",
|
|
["action"] = "double_tap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["action"] = "worldvein_resonance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "guardian_of_azeroth",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "memory_of_lucid_dreams",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["precast_time"] = "1.5",
|
|
["action"] = "trueshot",
|
|
["criteria"] = "active_enemies > 2",
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.hunters_mark.down & ! buff.trueshot.up",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.rapid_fire.remains < gcd || cooldown.rapid_fire.remains < cooldown.aimed_shot.remains || time_to_die < 20",
|
|
["action"] = "double_tap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot & ( target.time_to_die > cooldown.berserking.duration + duration || ( target.health.pct < 20 || ! talent.careful_aim.enabled ) ) || time_to_die < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot & ( target.time_to_die > cooldown.blood_fury.duration + duration || ( target.health.pct < 20 || ! talent.careful_aim.enabled ) ) || time_to_die < 16",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot & ( target.time_to_die > cooldown.ancestral_call.duration + duration || ( target.health.pct < 20 || ! talent.careful_aim.enabled ) ) || time_to_die < 16",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot & ( target.time_to_die > cooldown.fireblood.duration + duration || ( target.health.pct < 20 || ! talent.careful_aim.enabled ) ) || time_to_die < 9",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down & ( target.health.pct > 80 || target.health.pct <= 20 || target.time_to_pct_20 > 30 )",
|
|
["action"] = "reaping_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.azsharas_font_of_power.remains > 20 || ! equipped.azsharas_font_of_power || time_to_die < cooldown.azsharas_font_of_power.duration + 34 & target.health.pct > 20 ) & ( cooldown.trueshot.remains_guess < 3 || ( essence.vision_of_perfection.minor & time_to_die > action_cooldown + buff.worldvein_resonance.duration ) ) || time_to_die < 20",
|
|
["action"] = "worldvein_resonance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ca_execute || target.time_to_die > action_cooldown + 30 ) & ( buff.trueshot.up || cooldown.trueshot.remains < 16 ) || time_to_die < 31",
|
|
["action"] = "guardian_of_azeroth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.trueshot.remains < 7",
|
|
["action"] = "ripple_in_space",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.trueshot.up",
|
|
["action"] = "memory_of_lucid_dreams",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.react & buff.bloodlust.react || prev_gcd.1.trueshot & target.health.pct < 20 || ( ( consumable.potion_of_unbridled_fury || consumable.unbridled_fury ) & target.time_to_die < 61 || time_to_die < 26 )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down & cooldown.rapid_fire.remains || time_to_die < 15",
|
|
["action"] = "trueshot",
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "barrage",
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! action.serpent_sting.in_flight",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down || focus < 35 || focus < 60 & ! talent.lethal_shots.enabled || buff.in_the_rhythm.remains < execute_time",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up & ( buff.unerring_vision.stack > 4 || ! azerite.unerring_vision.enabled ) || time_to_die < 11",
|
|
["action"] = "blood_of_the_enemy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.trueshot.up || time_to_die < 5",
|
|
["action"] = "focused_azerite_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up & buff.master_marksman.up & ! buff.memory_of_lucid_dreams.up",
|
|
["action"] = "arcane_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || ( buff.double_tap.down || ca_execute ) & buff.precise_shots.down || full_recharge_time < cast_time & cooldown.trueshot.remains",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up & buff.master_marksman.up & buff.memory_of_lucid_dreams.up",
|
|
["action"] = "arcane_shot",
|
|
},
|
|
{
|
|
["action"] = "piercing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.trueshot.up || time_to_die < 8",
|
|
["action"] = "purifying_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + focus.regen * gcd < focus.max & buff.trueshot.down & ( ! dot.concentrated_flame_burn.remains & ! action.concentrated_flame.in_flight ) || full_recharge_time < gcd || target.time_to_die < 5",
|
|
["action"] = "concentrated_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up || buff.reckless_force_counter.stack < 10 || time_to_die < 5",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down & ( buff.precise_shots.up & ( focus > 55 || buff.master_marksman.up ) || focus > 75 || time_to_die < 5 )",
|
|
["action"] = "arcane_shot",
|
|
},
|
|
{
|
|
["action"] = "steady_shot",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["utility"] = {
|
|
{
|
|
["action"] = "counter_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "serenity_dust",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spore_cloud",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soothing_water",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sonic_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "nether_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "chijis_tranquility",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spirit_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "natures_grace",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20200401,
|
|
["warnings"] = "Imported 6 action lists.\n",
|
|
["spec"] = 254,
|
|
["profile"] = "# Marksmanship Hunter\n# https://github.com/simulationcraft/simc/\n# March 30, 2020\n\n# Changes:\n# - Add utility priority to APL.\n# - Use time_to_die rather than target.time_to_die to anticipate end of combat.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/augmentation\n# actions.precombat+=/food\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/hunters_mark\n# Precast this as early as possible to potentially gain another cast during the fight.\nactions.precombat+=/double_tap,precast_time=10\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/worldvein_resonance\nactions.precombat+=/guardian_of_azeroth\nactions.precombat+=/memory_of_lucid_dreams\nactions.precombat+=/trueshot,precast_time=1.5,if=active_enemies>2\nactions.precombat+=/potion\nactions.precombat+=/aimed_shot,if=active_enemies<3\n\nactions.utility=counter_shot\nactions.utility+=/serenity_dust\nactions.utility+=/spore_cloud\nactions.utility+=/soothing_water\nactions.utility+=/sonic_blast\nactions.utility+=/nether_shock\nactions.utility+=/chijis_tranquility\nactions.utility+=/spirit_shock\nactions.utility+=/natures_grace\n\n# Executed every time the actor is available.\nactions=call_action_list,name=utility,if=debuff.casting.up||buff.dispellable_magic.up||buff.dispellable_enrage.up\nactions+=/use_item,name=lurkers_insidious_gift,if=cooldown.trueshot.remains_guess<15||time_to_die<30\nactions+=/use_item,name=azsharas_font_of_power,if=(time_to_die>cooldown+34||target.health.pct<20||target.time_to_pct_20<15)&cooldown.trueshot.remains_guess<15||time_to_die<35\nactions+=/use_item,name=lustrous_golden_plumage,if=cooldown.trueshot.remains_guess<5||time_to_die<20\nactions+=/use_item,name=galecallers_boon,if=prev_gcd.1.trueshot||!talent.calling_the_shots.enabled||time_to_die<10\nactions+=/use_item,name=ashvanes_razor_coral,if=prev_gcd.1.trueshot&(buff.guardian_of_azeroth.up||!essence.condensed_lifeforce.major&ca_execute)||debuff.razor_coral_debuff.down||time_to_die<20\nactions+=/use_item,name=pocketsized_computation_device,if=!buff.trueshot.up&!essence.blood_of_the_enemy.major||debuff.blood_of_the_enemy.up||time_to_die<5\n# Try to line up activated trinkets with Trueshot\nactions+=/use_items,if=prev_gcd.1.trueshot||!talent.calling_the_shots.enabled||time_to_die<20\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=st,if=active_enemies<3\nactions+=/call_action_list,name=trickshots,if=active_enemies>2\n\nactions.cds=hunters_mark,if=debuff.hunters_mark.down&!buff.trueshot.up\nactions.cds+=/double_tap,if=cooldown.rapid_fire.remains<gcd||cooldown.rapid_fire.remains<cooldown.aimed_shot.remains||time_to_die<20\nactions.cds+=/berserking,if=prev_gcd.1.trueshot&(target.time_to_die>cooldown.berserking.duration+duration||(target.health.pct<20||!talent.careful_aim.enabled))||time_to_die<13\nactions.cds+=/blood_fury,if=prev_gcd.1.trueshot&(target.time_to_die>cooldown.blood_fury.duration+duration||(target.health.pct<20||!talent.careful_aim.enabled))||time_to_die<16\nactions.cds+=/ancestral_call,if=prev_gcd.1.trueshot&(target.time_to_die>cooldown.ancestral_call.duration+duration||(target.health.pct<20||!talent.careful_aim.enabled))||time_to_die<16\nactions.cds+=/fireblood,if=prev_gcd.1.trueshot&(target.time_to_die>cooldown.fireblood.duration+duration||(target.health.pct<20||!talent.careful_aim.enabled))||time_to_die<9\nactions.cds+=/lights_judgment,if=buff.trueshot.down\nactions.cds+=/bag_of_tricks,if=buff.trueshot.down\nactions.cds+=/reaping_flames,if=buff.trueshot.down&(target.health.pct>80||target.health.pct<=20||target.time_to_pct_20>30)\nactions.cds+=/worldvein_resonance,if=(cooldown.azsharas_font_of_power.remains>20||!equipped.azsharas_font_of_power||time_to_die<cooldown.azsharas_font_of_power.duration+34&target.health.pct>20)&(cooldown.trueshot.remains_guess<3||(essence.vision_of_perfection.minor&time_to_die>cooldown+buff.worldvein_resonance.duration))||time_to_die<20\nactions.cds+=/guardian_of_azeroth,if=(ca_execute||target.time_to_die>cooldown+30)&(buff.trueshot.up||cooldown.trueshot.remains<16)||time_to_die<31\nactions.cds+=/ripple_in_space,if=cooldown.trueshot.remains<7\nactions.cds+=/memory_of_lucid_dreams,if=!buff.trueshot.up\nactions.cds+=/potion,if=buff.trueshot.react&buff.bloodlust.react||prev_gcd.1.trueshot&target.health.pct<20||((consumable.potion_of_unbridled_fury||consumable.unbridled_fury)&target.time_to_die<61||time_to_die<26)\nactions.cds+=/trueshot,if=buff.trueshot.down&cooldown.rapid_fire.remains||time_to_die<15\n\nactions.st=explosive_shot\nactions.st+=/barrage,if=active_enemies>1\nactions.st+=/a_murder_of_crows\nactions.st+=/serpent_sting,if=refreshable&!action.serpent_sting.in_flight\nactions.st+=/rapid_fire,if=buff.trueshot.down||focus<35||focus<60&!talent.lethal_shots.enabled||buff.in_the_rhythm.remains<execute_time\n# if=buff.trueshot.up&(buff.unerring_vision.stack>4||!azerite.unerring_vision.enabled)||target.time_to_die<11\nactions.st+=/blood_of_the_enemy,if=buff.trueshot.up&(buff.unerring_vision.stack>4||!azerite.unerring_vision.enabled)||time_to_die<11\nactions.st+=/focused_azerite_beam,if=!buff.trueshot.up||time_to_die<5\nactions.st+=/arcane_shot,if=buff.trueshot.up&buff.master_marksman.up&!buff.memory_of_lucid_dreams.up\nactions.st+=/aimed_shot,if=buff.trueshot.up||(buff.double_tap.down||ca_execute)&buff.precise_shots.down||full_recharge_time<cast_time&cooldown.trueshot.remains\nactions.st+=/arcane_shot,if=buff.trueshot.up&buff.master_marksman.up&buff.memory_of_lucid_dreams.up\nactions.st+=/piercing_shot\nactions.st+=/purifying_blast,if=!buff.trueshot.up||time_to_die<8\nactions.st+=/concentrated_flame,if=focus+focus.regen*gcd<focus.max&buff.trueshot.down&(!dot.concentrated_flame_burn.remains&!action.concentrated_flame.in_flight)||full_recharge_time<gcd||target.time_to_die<5\nactions.st+=/the_unbound_force,if=buff.reckless_force.up||buff.reckless_force_counter.stack<10||time_to_die<5\nactions.st+=/arcane_shot,if=buff.trueshot.down&(buff.precise_shots.up&(focus>55||buff.master_marksman.up)||focus>75||time_to_die<5)\nactions.st+=/steady_shot\n\nactions.trickshots=barrage\nactions.trickshots+=/explosive_shot\nactions.trickshots+=/aimed_shot,if=buff.trick_shots.up&ca_execute&buff.double_tap.up\nactions.trickshots+=/rapid_fire,if=buff.trick_shots.up&(azerite.focused_fire.enabled||azerite.in_the_rhythm.rank>1||azerite.surging_shots.enabled||talent.streamline.enabled)\nactions.trickshots+=/aimed_shot,if=buff.trick_shots.up&(buff.precise_shots.down||cooldown.aimed_shot.full_recharge_time<action.aimed_shot.cast_time||buff.trueshot.up)\nactions.trickshots+=/rapid_fire,if=buff.trick_shots.up\nactions.trickshots+=/multishot,if=buff.trick_shots.down||buff.precise_shots.up&!buff.trueshot.up||focus>70\nactions.trickshots+=/focused_azerite_beam\nactions.trickshots+=/purifying_blast\nactions.trickshots+=/concentrated_flame\nactions.trickshots+=/blood_of_the_enemy\nactions.trickshots+=/the_unbound_force,if=buff.reckless_force.up||buff.reckless_force_counter.stack<10\nactions.trickshots+=/piercing_shot\nactions.trickshots+=/a_murder_of_crows\nactions.trickshots+=/serpent_sting,if=refreshable&!action.serpent_sting.in_flight\nactions.trickshots+=/steady_shot",
|
|
},
|
|
["Beast Mastery"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20200614,
|
|
["author"] = "SimC",
|
|
["desc"] = "# Beast Mastery Hunter\n# https://github.com/simulationcraft/simc/\n# June 14, 2020\n\n# Changes:\n# - Added Counter Shot to default action list.\n# - Use time_to_die (vs. target.time_to_die) to anticipate end of encounter.\n# - Add dispels/purges via utility action list.\n# - trinket.X.has_cooldown is unsupported.\n# - Check for crit_pct_current.",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.casting.up || buff.dispellable_magic.up || buff.dispellable_enrage.up",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "utility",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.aspect_of_the_wild || time_to_die < 20",
|
|
["action"] = "use_items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.aspect_of_the_wild.remains_guess < 15 & time_to_die > 10",
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.razor_coral_debuff.up & ( ! equipped.azsharas_font_of_power || cooldown.azsharas_font_of_power.remains > 86 || essence.blood_of_the_enemy.major ) & ( prev_gcd.1.aspect_of_the_wild || ! equipped.cyclotronic_blast & buff.aspect_of_the_wild.remains > 9 ) & ( ! essence.condensed_lifeforce.major || buff.guardian_of_azeroth.up ) & ( target.health.pct < 35 || ! essence.condensed_lifeforce.major || ! talent.killer_instinct.enabled ) || ( debuff.razor_coral_debuff.down || time_to_die < 26 ) & time_to_die > ( 24 * ( cooldown.cyclotronic_blast.remains + 4 < time_to_die ) )",
|
|
["name"] = "ashvanes_razor_coral",
|
|
["action"] = "ashvanes_razor_coral",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.aspect_of_the_wild.remains > 10 || cooldown.aspect_of_the_wild.remains > 45 || time_to_die < 11",
|
|
["name"] = "galecallers_boon",
|
|
["action"] = "galecallers_boon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cyclotronic_blast",
|
|
["criteria"] = "buff.bestial_wrath.down || time_to_die < 5",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 2",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cleave",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "summon_pet",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["action"] = "worldvein_resonance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "guardian_of_azeroth",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "memory_of_lucid_dreams",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cyclotronic_blast",
|
|
["criteria"] = "! raid_event.invulnerable.exists & ( equipped.variable_intensity_gigavolt_oscillating_reactor )",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cyclotronic_blast",
|
|
["criteria"] = "! raid_event.invulnerable.exists & ( trinket.1.has_cooldown + trinket.2.has_cooldown < 2 || equipped.variable_intensity_gigavolt_oscillating_reactor )",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! raid_event.invulnerable.exists",
|
|
["action"] = "focused_azerite_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["precast_time"] = "1.3",
|
|
["action"] = "aspect_of_the_wild",
|
|
["criteria"] = "! azerite.primal_instincts.enabled & ! essence.essence_of_the_focusing_iris.major & ( equipped.azsharas_font_of_power || ! equipped.cyclotronic_blast )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["precast_time"] = "1.5",
|
|
["action"] = "bestial_wrath",
|
|
["criteria"] = "azerite.primal_instincts.enabled & ! essence.essence_of_the_focusing_iris.major & ( equipped.azsharas_font_of_power || ! equipped.cyclotronic_blast )",
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "barbed_shot",
|
|
["criteria"] = "buff.frenzy.up & buff.frenzy.remains <= gcd.max + barbed_shot_grace_period",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "gcd.max - buff.beast_cleave.remains > 0.25",
|
|
["action"] = "multishot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "barbed_shot",
|
|
["criteria"] = "full_recharge_time < gcd.max & cooldown.bestial_wrath.remains",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "aspect_of_the_wild",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.aspect_of_the_wild.up & buff.bestial_wrath.up || time_to_die < 15",
|
|
["action"] = "stampede",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.aspect_of_the_wild.remains_guess > 20 || talent.one_with_the_pack.enabled || time_to_die < 15",
|
|
["action"] = "bestial_wrath",
|
|
},
|
|
{
|
|
["action"] = "chimaera_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "barrage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 4 || ! azerite.rapid_reload.enabled",
|
|
["action"] = "kill_command",
|
|
},
|
|
{
|
|
["action"] = "dire_beast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "barbed_shot",
|
|
["criteria"] = "buff.frenzy.down & ( charges_fractional > 1.8 || buff.bestial_wrath.up ) || cooldown.aspect_of_the_wild.remains < buff.frenzy.duration - gcd & azerite.primal_instincts.enabled || charges_fractional > 1.4 || time_to_die < 9",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "focused_azerite_beam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "purifying_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "concentrated_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up || buff.reckless_force_counter.stack < 10",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "azerite.rapid_reload.enabled & active_enemies > 2",
|
|
["action"] = "multishot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.kill_command.remains > focus.time_to_max & ( active_enemies < 3 || ! azerite.rapid_reload.enabled )",
|
|
["action"] = "cobra_shot",
|
|
},
|
|
{
|
|
["action"] = "spitting_cobra",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.bestial_wrath.remains > 30",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.bestial_wrath.remains > 30",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus < focus.max & ( raid_event.adds.remains > 90 || ! raid_event.adds.exists || active_enemies > 1 )",
|
|
["action"] = "blood_of_the_enemy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.aspect_of_the_wild.up & ( time_to_die > cooldown.berserking.duration + duration || ( target.health.pct < 35 || ! talent.killer_instinct.enabled ) ) || time_to_die < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.aspect_of_the_wild.up & ( time_to_die > cooldown.blood_fury.duration + duration || ( target.health.pct < 35 || ! talent.killer_instinct.enabled ) ) || time_to_die < 16",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frenzy.up & buff.frenzy.remains > gcd.max || ! buff.frenzy.up",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.up & buff.aspect_of_the_wild.up & target.health.pct < 35 || ( ( consumable.potion_of_unbridled_fury || consumable.unbridled_fury ) & time_to_die < 61 || time_to_die < 26 )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( prev_gcd.1.aspect_of_the_wild || cooldown.aspect_of_the_wild.remains < gcd || target.time_to_die < 20 ) || ! essence.vision_of_perfection.minor",
|
|
["action"] = "worldvein_resonance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.aspect_of_the_wild.remains < 10 || time_to_die > action.guardian_of_azeroth.cooldown + 30 || time_to_die < 30",
|
|
["action"] = "guardian_of_azeroth",
|
|
},
|
|
{
|
|
["action"] = "ripple_in_space",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "memory_of_lucid_dreams",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct > 80 || target.health.pct <= 20 || target.time_to_pct_20 > 30",
|
|
["action"] = "reaping_flames",
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frenzy.up & buff.frenzy.remains < gcd + barbed_shot_grace_period || cooldown.bestial_wrath.remains & ( full_recharge_time < gcd || azerite.primal_instincts.enabled & cooldown.aspect_of_the_wild.remains < gcd )",
|
|
["action"] = "barbed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + focus.regen * gcd < focus.max & buff.bestial_wrath.down & ( ! dot.concentrated_flame_burn.remains & ! action.concentrated_flame.in_flight ) || full_recharge_time < gcd || time_to_die < 5",
|
|
["action"] = "concentrated_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.aspect_of_the_wild.down & ( cooldown.barbed_shot.charges < 1 || ! azerite.primal_instincts.enabled )",
|
|
["action"] = "aspect_of_the_wild",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.aspect_of_the_wild.up & buff.bestial_wrath.up || time_to_die < 15",
|
|
["action"] = "stampede",
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || time_to_die < 5",
|
|
["action"] = "focused_azerite_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up || buff.reckless_force_counter.stack < 10 || time_to_die < 5",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.one_with_the_pack.enabled & buff.bestial_wrath.remains < gcd || buff.bestial_wrath.down & cooldown.aspect_of_the_wild.remains > 15 || time_to_die < 15 + gcd",
|
|
["action"] = "bestial_wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "azerite.dance_of_death.rank > 1 & buff.dance_of_death.remains < gcd",
|
|
["action"] = "barbed_shot",
|
|
},
|
|
{
|
|
["action"] = "kill_command",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["action"] = "chimaera_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "dire_beast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.one_with_the_pack.enabled & charges_fractional > 1.5 || charges_fractional > 1.8 || cooldown.aspect_of_the_wild.remains < buff.frenzy.duration - gcd & azerite.primal_instincts.enabled || time_to_die < 9",
|
|
["action"] = "barbed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || time_to_die < 8",
|
|
["action"] = "purifying_blast",
|
|
},
|
|
{
|
|
["action"] = "blood_of_the_enemy",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "barrage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( focus - cost + focus.regen * ( cooldown.kill_command.remains - 1 ) > action.kill_command.cost || cooldown.kill_command.remains > 1 + gcd & cooldown.bestial_wrath.remains_guess > focus.time_to_max || buff.memory_of_lucid_dreams.up ) & cooldown.kill_command.remains > 1 || time_to_die < 3",
|
|
["action"] = "cobra_shot",
|
|
},
|
|
{
|
|
["action"] = "spitting_cobra",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frenzy.duration - gcd > full_recharge_time",
|
|
["action"] = "barbed_shot",
|
|
},
|
|
},
|
|
["utility"] = {
|
|
{
|
|
["action"] = "counter_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "serenity_dust",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spore_cloud",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soothing_water",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sonic_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "nether_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "chijis_tranquility",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spirit_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "natures_grace",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20200614,
|
|
["warnings"] = "WARNING: The import for 'default' required some automated changes.\nLine 4: Converted 'trinket.X.cooldown' to 'cooldown.X' (1x).\n\nWARNING: The import for 'cleave' required some automated changes.\nLine 1: Converted 'pet.X.Y...' to 'Y...' (2x).\nLine 2: Converted 'pet.X.Y...' to 'Y...' (1x).\nLine 12: Converted 'pet.X.Y...' to 'Y...' (2x).\n\nWARNING: The import for 'cds' required some automated changes.\nLine 6: Converted 'pet.X.Y...' to 'Y...' (3x).\n\nWARNING: The import for 'st' required some automated changes.\nLine 1: Converted 'pet.X.Y...' to 'Y...' (2x).\nLine 14: Converted 'pet.X.Y...' to 'Y...' (1x).\nLine 20: Converted 'pet.X.Y...' to 'Y...' (1x).\n\nImported 6 action lists.\n",
|
|
["profile"] = "# Beast Mastery Hunter\n# https://github.com/simulationcraft/simc/\n# June 14, 2020\n\n# Changes:\n# - Added Counter Shot to default action list.\n# - Use time_to_die (vs. target.time_to_die) to anticipate end of encounter.\n# - Add dispels/purges via utility action list.\n# - trinket.X.has_cooldown is unsupported.\n# - Check for crit_pct_current.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/augmentation\n# actions.precombat+=/food\nactions.precombat+=/summon_pet\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/worldvein_resonance\nactions.precombat+=/guardian_of_azeroth\nactions.precombat+=/memory_of_lucid_dreams\nactions.precombat+=/use_item,effect_name=cyclotronic_blast,if=!raid_event.invulnerable.exists&(equipped.variable_intensity_gigavolt_oscillating_reactor)\nactions.precombat+=/use_item,effect_name=cyclotronic_blast,if=!raid_event.invulnerable.exists&(trinket.1.has_cooldown+trinket.2.has_cooldown<2||equipped.variable_intensity_gigavolt_oscillating_reactor)\nactions.precombat+=/focused_azerite_beam,if=!raid_event.invulnerable.exists\n# Adjusts the duration and cooldown of Aspect of the Wild and Primal Instincts by the duration of an unhasted GCD when they're used precombat. Because Aspect of the Wild reduces GCD by 200ms, this is 1.3 seconds. \nactions.precombat+=/aspect_of_the_wild,precast_time=1.3,if=!azerite.primal_instincts.enabled&!essence.essence_of_the_focusing_iris.major&(equipped.azsharas_font_of_power||!equipped.cyclotronic_blast)\n# Adjusts the duration and cooldown of Bestial Wrath and Haze of Rage by the duration of an unhasted GCD when they're used precombat.\nactions.precombat+=/bestial_wrath,precast_time=1.5,if=azerite.primal_instincts.enabled&!essence.essence_of_the_focusing_iris.major&(equipped.azsharas_font_of_power||!equipped.cyclotronic_blast)\nactions.precombat+=/potion\n\nactions.utility=counter_shot\nactions.utility+=/serenity_dust\nactions.utility+=/spore_cloud\nactions.utility+=/soothing_water\nactions.utility+=/sonic_blast\nactions.utility+=/nether_shock\nactions.utility+=/chijis_tranquility\nactions.utility+=/spirit_shock\nactions.utility+=/natures_grace\n\n# Executed every time the actor is available.\nactions=call_action_list,name=utility,if=debuff.casting.up||buff.dispellable_magic.up||buff.dispellable_enrage.up\nactions+=/use_items,if=prev_gcd.1.aspect_of_the_wild||time_to_die<20\nactions+=/use_item,name=azsharas_font_of_power,if=cooldown.aspect_of_the_wild.remains_guess<15&time_to_die>10\nactions+=/use_item,name=ashvanes_razor_coral,if=debuff.razor_coral_debuff.up&(!equipped.azsharas_font_of_power||trinket.azsharas_font_of_power.cooldown.remains>86||essence.blood_of_the_enemy.major)&(prev_gcd.1.aspect_of_the_wild||!equipped.cyclotronic_blast&buff.aspect_of_the_wild.remains>9)&(!essence.condensed_lifeforce.major||buff.guardian_of_azeroth.up)&(target.health.pct<35||!essence.condensed_lifeforce.major||!talent.killer_instinct.enabled)||(debuff.razor_coral_debuff.down||time_to_die<26)&time_to_die>(24*(cooldown.cyclotronic_blast.remains+4<time_to_die))\nactions+=/use_item,name=galecallers_boon,if=buff.aspect_of_the_wild.remains>10||cooldown.aspect_of_the_wild.remains>45||time_to_die<11\nactions+=/use_item,effect_name=cyclotronic_blast,if=buff.bestial_wrath.down||time_to_die<5\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=st,if=active_enemies<2\nactions+=/call_action_list,name=cleave,if=active_enemies>1\n\nactions.cds=ancestral_call,if=cooldown.bestial_wrath.remains>30\nactions.cds+=/fireblood,if=cooldown.bestial_wrath.remains>30\nactions.cds+=/blood_of_the_enemy,if=focus<focus.max&(raid_event.adds.remains>90||!raid_event.adds.exists||active_enemies>1)\nactions.cds+=/berserking,if=buff.aspect_of_the_wild.up&(time_to_die>cooldown.berserking.duration+duration||(target.health.pct<35||!talent.killer_instinct.enabled))||time_to_die<13\nactions.cds+=/blood_fury,if=buff.aspect_of_the_wild.up&(time_to_die>cooldown.blood_fury.duration+duration||(target.health.pct<35||!talent.killer_instinct.enabled))||time_to_die<16\nactions.cds+=/lights_judgment,if=pet.cat.buff.frenzy.up&pet.cat.buff.frenzy.remains>gcd.max||!pet.cat.buff.frenzy.up\nactions.cds+=/potion,if=buff.bestial_wrath.up&buff.aspect_of_the_wild.up&target.health.pct<35||((consumable.potion_of_unbridled_fury||consumable.unbridled_fury)&time_to_die<61||time_to_die<26)\nactions.cds+=/worldvein_resonance,if=(prev_gcd.1.aspect_of_the_wild||cooldown.aspect_of_the_wild.remains<gcd||target.time_to_die<20)||!essence.vision_of_perfection.minor\nactions.cds+=/guardian_of_azeroth,if=cooldown.aspect_of_the_wild.remains<10||time_to_die>action.guardian_of_azeroth.cooldown+30||time_to_die<30\nactions.cds+=/ripple_in_space\nactions.cds+=/memory_of_lucid_dreams\n# actions.cds+=/bag_of_tricks\nactions.cds+=/reaping_flames,if=target.health.pct>80||target.health.pct<=20||target.time_to_pct_20>30\n\nactions.cleave=barbed_shot,cycle_targets=1,if=pet.cat.buff.frenzy.up&pet.cat.buff.frenzy.remains<=gcd.max+barbed_shot_grace_period\nactions.cleave+=/multishot,if=gcd.max-pet.cat.buff.beast_cleave.remains>0.25\nactions.cleave+=/barbed_shot,cycle_targets=1,if=full_recharge_time<gcd.max&cooldown.bestial_wrath.remains\nactions.cleave+=/aspect_of_the_wild\nactions.cleave+=/stampede,if=buff.aspect_of_the_wild.up&buff.bestial_wrath.up||time_to_die<15\nactions.cleave+=/bestial_wrath,if=cooldown.aspect_of_the_wild.remains_guess>20||talent.one_with_the_pack.enabled||time_to_die<15\nactions.cleave+=/chimaera_shot\nactions.cleave+=/a_murder_of_crows\nactions.cleave+=/barrage\nactions.cleave+=/kill_command,if=active_enemies<4||!azerite.rapid_reload.enabled\nactions.cleave+=/dire_beast\nactions.cleave+=/barbed_shot,cycle_targets=1,if=pet.cat.buff.frenzy.down&(charges_fractional>1.8||buff.bestial_wrath.up)||cooldown.aspect_of_the_wild.remains<pet.cat.buff.frenzy.duration-gcd&azerite.primal_instincts.enabled||charges_fractional>1.4||time_to_die<9\nactions.cleave+=/focused_azerite_beam\nactions.cleave+=/purifying_blast\nactions.cleave+=/concentrated_flame\nactions.cleave+=/the_unbound_force,if=buff.reckless_force.up||buff.reckless_force_counter.stack<10\nactions.cleave+=/multishot,if=azerite.rapid_reload.enabled&active_enemies>2\nactions.cleave+=/cobra_shot,if=cooldown.kill_command.remains>focus.time_to_max&(active_enemies<3||!azerite.rapid_reload.enabled)\nactions.cleave+=/spitting_cobra\n\nactions.st=barbed_shot,if=pet.cat.buff.frenzy.up&pet.cat.buff.frenzy.remains<gcd+barbed_shot_grace_period||cooldown.bestial_wrath.remains&(full_recharge_time<gcd||azerite.primal_instincts.enabled&cooldown.aspect_of_the_wild.remains<gcd)\nactions.st+=/concentrated_flame,if=focus+focus.regen*gcd<focus.max&buff.bestial_wrath.down&(!dot.concentrated_flame_burn.remains&!action.concentrated_flame.in_flight)||full_recharge_time<gcd||time_to_die<5\nactions.st+=/aspect_of_the_wild,if=buff.aspect_of_the_wild.down&(cooldown.barbed_shot.charges<1||!azerite.primal_instincts.enabled)\nactions.st+=/stampede,if=buff.aspect_of_the_wild.up&buff.bestial_wrath.up||time_to_die<15\nactions.st+=/a_murder_of_crows\nactions.st+=/focused_azerite_beam,if=buff.bestial_wrath.down||time_to_die<5\nactions.st+=/the_unbound_force,if=buff.reckless_force.up||buff.reckless_force_counter.stack<10||time_to_die<5\nactions.st+=/bestial_wrath,if=talent.one_with_the_pack.enabled&buff.bestial_wrath.remains<gcd||buff.bestial_wrath.down&cooldown.aspect_of_the_wild.remains>15||time_to_die<15+gcd\nactions.st+=/barbed_shot,if=azerite.dance_of_death.rank>1&buff.dance_of_death.remains<gcd\nactions.st+=/kill_command\nactions.st+=/bag_of_tricks,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/chimaera_shot\nactions.st+=/dire_beast\nactions.st+=/barbed_shot,if=talent.one_with_the_pack.enabled&charges_fractional>1.5||charges_fractional>1.8||cooldown.aspect_of_the_wild.remains<pet.cat.buff.frenzy.duration-gcd&azerite.primal_instincts.enabled||time_to_die<9\nactions.st+=/purifying_blast,if=buff.bestial_wrath.down||time_to_die<8\nactions.st+=/blood_of_the_enemy\nactions.st+=/barrage\nactions.st+=/cobra_shot,if=(focus-cost+focus.regen*(cooldown.kill_command.remains-1)>action.kill_command.cost||cooldown.kill_command.remains>1+gcd&cooldown.bestial_wrath.remains_guess>focus.time_to_max||buff.memory_of_lucid_dreams.up)&cooldown.kill_command.remains>1||time_to_die<3\nactions.st+=/spitting_cobra\nactions.st+=/barbed_shot,if=pet.cat.buff.frenzy.duration-gcd>full_recharge_time",
|
|
["spec"] = 253,
|
|
},
|
|
["Survival"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20200525,
|
|
["author"] = "SimulationCraft",
|
|
["desc"] = "# Survival Hunter\n# https://github.com/simulationcraft/simc/\n# May 25, 2020\n\n# Changes:\n# - Added Muzzle to default action list.\n# - Changed target_if expressions to cycle_targets.\n# - Modified carve_cdr to work more easily with the addon's implementation of variable.\n# - Added utility APL.",
|
|
["lists"] = {
|
|
["apst"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd )",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd )",
|
|
["action"] = "raptor_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "full_recharge_time < 1.5 * gcd & focus + cast_regen < focus.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "steel_trap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max & ! ticking & ! buff.memory_of_lucid_dreams.up & ( full_recharge_time < 1.5 * gcd || ! dot.wildfire_bomb.ticking & ! buff.coordinated_assault.up || ! dot.wildfire_bomb.ticking & buff.mongoose_fury.stack < 1 ) || time_to_die < 18 & ! dot.wildfire_bomb.ticking",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.serpent_sting.ticking & ! buff.coordinated_assault.up",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max & ( buff.mongoose_fury.stack < 5 || focus < action.mongoose_bite.cost )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! buff.coordinated_assault.up & buff.mongoose_fury.stack < 5",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.coordinated_assault.up",
|
|
["action"] = "a_murder_of_crows",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.coordinated_assault.up",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.up || focus + cast_regen > focus.max - 10 || buff.coordinated_assault.up",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["action"] = "raptor_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
},
|
|
["cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "carve_cdr",
|
|
["criteria"] = "active_enemies < 5",
|
|
["value_else"] = "5",
|
|
["value"] = "active_enemies",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "azerite.blur_of_talons.rank > 0 & ( buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd || buff.coordinated_assault.remains & ! buff.blur_of_talons.remains ) )",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mongoose_bite",
|
|
["criteria"] = "debuff.latent_poison.stack > ( active_enemies || 9 ) & target.time_to_die < active_enemies * gcd",
|
|
["target_if"] = "",
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.shrapnel_bomb.ticking & ! talent.hydras_bite.enabled || dot.shrapnel_bomb.ticking & active_enemies > 5",
|
|
["action"] = "carve",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.guerrilla_tactics.enabled || full_recharge_time < gcd || raid_event.adds.remains < 6 & raid_event.adds.exists",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges_fractional > 2.5 || dot.shrapnel_bomb.ticking || cooldown.wildfire_bomb.remains > active_enemies - gcd || debuff.blood_of_the_enemy.remains || raid_event.adds.remains < 5 & raid_event.adds.exists",
|
|
["action"] = "butchery",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mongoose_bite",
|
|
["criteria"] = "debuff.latent_poison.stack > 8",
|
|
["target_if"] = "",
|
|
},
|
|
{
|
|
["action"] = "chakrams",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.terms_of_engagement.enabled",
|
|
["action"] = "harpoon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.guerrilla_tactics.enabled",
|
|
["action"] = "carve",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.wildfire_bomb.remains > ( active_enemies || 5 )",
|
|
["action"] = "butchery",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.wildfire_bomb.refreshable || talent.wildfire_infusion.enabled",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "serpent_sting",
|
|
["criteria"] = "buff.vipers_venom.react",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.wildfire_bomb.remains > variable.carve_cdr % 2",
|
|
["action"] = "carve",
|
|
},
|
|
{
|
|
["action"] = "steel_trap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "serpent_sting",
|
|
["criteria"] = "refreshable & buff.tip_of_the_spear.stack < 3 & next_wi_bomb.volatile || refreshable & azerite.latent_poison.rank > 0",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mongoose_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.terms_of_engagement.enabled",
|
|
["action"] = "harpoon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd )",
|
|
["action"] = "raptor_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd )",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up & buff.vipers_venom.remains < 1 * gcd",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "steel_trap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max & refreshable & full_recharge_time < gcd & ! buff.memory_of_lucid_dreams.up || focus + cast_regen < focus.max & ( ! dot.wildfire_bomb.ticking & ( ! buff.coordinated_assault.up || buff.mongoose_fury.stack < 1 || time_to_die < 18 || ! dot.wildfire_bomb.ticking & azerite.wilderness_survival.rank > 0 ) ) & ! buff.memory_of_lucid_dreams.up",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up & dot.serpent_sting.remains < 4 * gcd || dot.serpent_sting.refreshable & ! buff.coordinated_assault.up",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.coordinated_assault.up",
|
|
["action"] = "a_murder_of_crows",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.coordinated_assault.up",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.up || focus + cast_regen > focus.max - 20 & talent.vipers_venom.enabled || focus + cast_regen > focus.max - 1 & talent.terms_of_engagement.enabled || buff.coordinated_assault.up",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["action"] = "raptor_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.wildfire_bomb.refreshable",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
},
|
|
["wfi"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max & talent.terms_of_engagement.enabled",
|
|
["action"] = "harpoon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blur_of_talons.up & buff.blur_of_talons.remains < gcd",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blur_of_talons.up & buff.blur_of_talons.remains < gcd",
|
|
["action"] = "raptor_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up & buff.vipers_venom.remains < 1.5 * gcd || ! dot.serpent_sting.ticking",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "full_recharge_time < 1.5 * gcd & focus + cast_regen < focus.max || ( next_wi_bomb.volatile & dot.serpent_sting.ticking & dot.serpent_sting.refreshable || next_wi_bomb.pheromone & ! buff.mongoose_fury.up & focus + cast_regen < focus.max - action.kill_command.cast_regen * 3 )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max - focus.regen",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "steel_trap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "full_recharge_time < 1.5 * gcd",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up & dot.serpent_sting.remains < 4 * gcd",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.shrapnel_bomb.ticking || buff.mongoose_fury.stack = 5",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_wi_bomb.shrapnel & dot.serpent_sting.remains > 5 * gcd",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.mongoose_fury.remains",
|
|
["action"] = "chakrams",
|
|
},
|
|
{
|
|
["action"] = "mongoose_bite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "raptor_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_wi_bomb.volatile & dot.serpent_sting.ticking || next_wi_bomb.pheromone || next_wi_bomb.shrapnel",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.casting.up || buff.dispellable_magic.up || buff.dispellable_enrage.up",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "utility",
|
|
},
|
|
{
|
|
["action"] = "use_items",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & target.time_to_die < focus % ( action.mongoose_bite.cost - cast_regen ) * gcd",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & talent.chakrams.enabled & talent.alpha_predator.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "apwfi",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & talent.chakrams.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "wfi",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & ! talent.alpha_predator.enabled & ! talent.wildfire_infusion.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & talent.alpha_predator.enabled & ! talent.wildfire_infusion.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "apst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & talent.alpha_predator.enabled & talent.wildfire_infusion.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "apwfi",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & ! talent.alpha_predator.enabled & talent.wildfire_infusion.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "wfi",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ! talent.birds_of_prey.enabled || active_enemies > 2",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cleave",
|
|
},
|
|
{
|
|
["action"] = "concentrated_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bag_of_tricks",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "summon_pet",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cyclotronic_blast",
|
|
["criteria"] = "! raid_event.invulnerable.exists",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["action"] = "guardian_of_azeroth",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "worldvein_resonance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "potion",
|
|
["dynamic_prepot"] = "1",
|
|
},
|
|
{
|
|
["action"] = "steel_trap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "harpoon",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains > 30",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains > 30",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains > 30",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains > 60 || time_to_die < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.guardian_of_azeroth.up & ( buff.berserking.up || buff.blood_fury.up || ! race.troll ) || ( consumable.potion_of_unbridled_fury & time_to_die < 61 || time_to_die < 26 ) || ! essence.condensed_lifeforce.major & buff.coordinated_assault.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.distance >= 6",
|
|
["action"] = "aspect_of_the_eagle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.memory_of_lucid_dreams.up & target.time_to_die < cooldown.memory_of_lucid_dreams.remains + 15 || buff.guardian_of_azeroth.stack = 5 & target.time_to_die < cooldown.guardian_of_azeroth.remains + 20 || debuff.razor_coral_debuff.down || target.time_to_die < 21 || buff.worldvein_resonance.remains & target.time_to_die < cooldown.worldvein_resonance.remains + 18 || ! talent.birds_of_prey.enabled & target.time_to_die < cooldown.coordinated_assault.remains + 20 & buff.coordinated_assault.remains",
|
|
["name"] = "ashvanes_razor_coral",
|
|
["action"] = "ashvanes_razor_coral",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.memory_of_lucid_dreams.remains || talent.wildfire_infusion.enabled & cooldown.coordinated_assault.remains || ! essence.memory_of_lucid_dreams.major & cooldown.coordinated_assault.remains",
|
|
["name"] = "galecallers_boon",
|
|
["action"] = "galecallers_boon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > 90 & focus < focus.max - 25 || ( active_enemies > 1 & ! talent.birds_of_prey.enabled || active_enemies > 2 ) & ( buff.blur_of_talons.up & buff.blur_of_talons.remains > 3 * gcd || ! buff.blur_of_talons.up )",
|
|
["action"] = "focused_azerite_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( raid_event.adds.remains > 90 || ! raid_event.adds.exists ) || ( active_enemies > 1 & ! talent.birds_of_prey.enabled || active_enemies > 2 ) ) & focus < focus.max",
|
|
["action"] = "blood_of_the_enemy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( raid_event.adds.remains > 60 || ! raid_event.adds.exists ) || ( active_enemies > 1 & ! talent.birds_of_prey.enabled || active_enemies > 2 ) ) & focus < focus.max",
|
|
["action"] = "purifying_blast",
|
|
},
|
|
{
|
|
["action"] = "guardian_of_azeroth",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ripple_in_space",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "full_recharge_time < 1 * gcd",
|
|
["action"] = "concentrated_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["action"] = "worldvein_resonance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct > 80 || target.health.pct <= 20 || target.time_to_pct_20 > 30",
|
|
["action"] = "reaping_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "essence.memory_of_lucid_dreams.major & refreshable & buff.vipers_venom.up & ! cooldown.memory_of_lucid_dreams.remains",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "essence.memory_of_lucid_dreams.major & ! cooldown.memory_of_lucid_dreams.remains",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "essence.memory_of_lucid_dreams.major & full_recharge_time < 1.5 * gcd & focus < action.mongoose_bite.cost & ! cooldown.memory_of_lucid_dreams.remains",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus < action.mongoose_bite.cost & buff.coordinated_assault.up",
|
|
["action"] = "memory_of_lucid_dreams",
|
|
},
|
|
},
|
|
["apwfi"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blur_of_talons.up & buff.blur_of_talons.remains < gcd",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blur_of_talons.up & buff.blur_of_talons.remains < gcd",
|
|
["action"] = "raptor_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.serpent_sting.ticking",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "full_recharge_time < 1.5 * gcd || focus + cast_regen < focus.max & ( next_wi_bomb.volatile & dot.serpent_sting.ticking & dot.serpent_sting.refreshable || next_wi_bomb.pheromone & ! buff.mongoose_fury.up & focus + cast_regen < focus.max - action.kill_command.cast_regen * 3 )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.remains & next_wi_bomb.pheromone",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "full_recharge_time < 1.5 * gcd & focus + cast_regen < focus.max - 20",
|
|
["target_if"] = "",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "steel_trap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack = 3 || dot.shrapnel_bomb.ticking",
|
|
["action"] = "raptor_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.shrapnel_bomb.ticking",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_wi_bomb.shrapnel & focus > 30 & dot.serpent_sting.remains > 5 * gcd",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.mongoose_fury.remains",
|
|
["action"] = "chakrams",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max & ( buff.mongoose_fury.stack < 5 || focus < action.mongoose_bite.cost )",
|
|
["target_if"] = "",
|
|
},
|
|
{
|
|
["action"] = "raptor_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.up || focus > 40 || dot.shrapnel_bomb.ticking",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_wi_bomb.volatile & dot.serpent_sting.ticking || next_wi_bomb.pheromone || next_wi_bomb.shrapnel & focus > 50",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
},
|
|
["utility"] = {
|
|
{
|
|
["action"] = "muzzle",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "serenity_dust",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spore_cloud",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soothing_water",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sonic_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "nether_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "chijis_tranquility",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spirit_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "natures_grace",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20200525,
|
|
["warnings"] = "WARNING: The import for 'cleave' required some automated changes.\nLine 3: Removed min:X check (not available in emulation) (1x).\nLine 9: Removed max:X check (not available in emulation) (1x).\n\nWARNING: The import for 'apwfi' required some automated changes.\nLine 8: Removed min:X check (not available in emulation) (1x).\nLine 15: Removed min:X check (not available in emulation) (1x).\n\nImported 9 action lists.\n",
|
|
["profile"] = "# Survival Hunter\n# https://github.com/simulationcraft/simc/\n# May 25, 2020\n\n# Changes:\n# - Added Muzzle to default action list.\n# - Changed target_if expressions to cycle_targets.\n# - Modified carve_cdr to work more easily with the addon's implementation of variable.\n# - Added utility APL.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/augmentation\n# actions.precombat+=/food\nactions.precombat+=/summon_pet\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/use_item,effect_name=cyclotronic_blast,if=!raid_event.invulnerable.exists\nactions.precombat+=/guardian_of_azeroth\nactions.precombat+=/coordinated_assault\nactions.precombat+=/worldvein_resonance\nactions.precombat+=/potion,dynamic_prepot=1\nactions.precombat+=/steel_trap\nactions.precombat+=/harpoon\n\nactions.utility=muzzle\nactions.utility+=/serenity_dust\nactions.utility+=/spore_cloud\nactions.utility+=/soothing_water\nactions.utility+=/sonic_blast\nactions.utility+=/nether_shock\nactions.utility+=/chijis_tranquility\nactions.utility+=/spirit_shock\nactions.utility+=/natures_grace\n\n# Executed every time the actor is available.\nactions=call_action_list,name=utility,if=debuff.casting.up||buff.dispellable_magic.up||buff.dispellable_enrage.up\nactions+=/use_items\nactions+=/call_action_list,name=cds\nactions+=/mongoose_bite,if=active_enemies=1&target.time_to_die<focus%(action.mongoose_bite.cost-cast_regen)*gcd\nactions+=/call_action_list,name=apwfi,if=active_enemies<3&talent.chakrams.enabled&talent.alpha_predator.enabled\nactions+=/call_action_list,name=wfi,if=active_enemies<3&talent.chakrams.enabled\nactions+=/call_action_list,name=st,if=active_enemies<3&!talent.alpha_predator.enabled&!talent.wildfire_infusion.enabled\nactions+=/call_action_list,name=apst,if=active_enemies<3&talent.alpha_predator.enabled&!talent.wildfire_infusion.enabled\nactions+=/call_action_list,name=apwfi,if=active_enemies<3&talent.alpha_predator.enabled&talent.wildfire_infusion.enabled\nactions+=/call_action_list,name=wfi,if=active_enemies<3&!talent.alpha_predator.enabled&talent.wildfire_infusion.enabled\nactions+=/call_action_list,name=cleave,if=active_enemies>1&!talent.birds_of_prey.enabled||active_enemies>2\nactions+=/concentrated_flame\nactions+=/arcane_torrent\nactions+=/bag_of_tricks\n\nactions.apst=mongoose_bite,if=buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd)\nactions.apst+=/raptor_strike,if=buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd)\nactions.apst+=/flanking_strike,if=focus+cast_regen<focus.max\nactions.apst+=/kill_command,cycle_targets=1,if=full_recharge_time<1.5*gcd&focus+cast_regen<focus.max\nactions.apst+=/steel_trap,if=focus+cast_regen<focus.max\nactions.apst+=/wildfire_bomb,if=focus+cast_regen<focus.max&!ticking&!buff.memory_of_lucid_dreams.up&(full_recharge_time<1.5*gcd||!dot.wildfire_bomb.ticking&!buff.coordinated_assault.up||!dot.wildfire_bomb.ticking&buff.mongoose_fury.stack<1)||time_to_die<18&!dot.wildfire_bomb.ticking\nactions.apst+=/serpent_sting,if=!dot.serpent_sting.ticking&!buff.coordinated_assault.up\nactions.apst+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max&(buff.mongoose_fury.stack<5||focus<action.mongoose_bite.cost)\nactions.apst+=/serpent_sting,if=refreshable&!buff.coordinated_assault.up&buff.mongoose_fury.stack<5\nactions.apst+=/a_murder_of_crows,if=!buff.coordinated_assault.up\nactions.apst+=/coordinated_assault,if=!buff.coordinated_assault.up\nactions.apst+=/mongoose_bite,if=buff.mongoose_fury.up||focus+cast_regen>focus.max-10||buff.coordinated_assault.up\nactions.apst+=/raptor_strike\nactions.apst+=/wildfire_bomb,if=!ticking\n\nactions.apwfi=mongoose_bite,if=buff.blur_of_talons.up&buff.blur_of_talons.remains<gcd\nactions.apwfi+=/raptor_strike,if=buff.blur_of_talons.up&buff.blur_of_talons.remains<gcd\nactions.apwfi+=/serpent_sting,if=!dot.serpent_sting.ticking\nactions.apwfi+=/a_murder_of_crows\nactions.apwfi+=/wildfire_bomb,if=full_recharge_time<1.5*gcd||focus+cast_regen<focus.max&(next_wi_bomb.volatile&dot.serpent_sting.ticking&dot.serpent_sting.refreshable||next_wi_bomb.pheromone&!buff.mongoose_fury.up&focus+cast_regen<focus.max-action.kill_command.cast_regen*3)\nactions.apwfi+=/coordinated_assault\nactions.apwfi+=/mongoose_bite,if=buff.mongoose_fury.remains&next_wi_bomb.pheromone\nactions.apwfi+=/kill_command,target_if=min:bloodseeker.remains,if=full_recharge_time<1.5*gcd&focus+cast_regen<focus.max-20\nactions.apwfi+=/steel_trap,if=focus+cast_regen<focus.max\nactions.apwfi+=/raptor_strike,if=buff.tip_of_the_spear.stack=3||dot.shrapnel_bomb.ticking\nactions.apwfi+=/mongoose_bite,if=dot.shrapnel_bomb.ticking\nactions.apwfi+=/wildfire_bomb,if=next_wi_bomb.shrapnel&focus>30&dot.serpent_sting.remains>5*gcd\nactions.apwfi+=/chakrams,if=!buff.mongoose_fury.remains\nactions.apwfi+=/serpent_sting,if=refreshable\nactions.apwfi+=/kill_command,target_if=min:bloodseeker.remains,if=focus+cast_regen<focus.max&(buff.mongoose_fury.stack<5||focus<action.mongoose_bite.cost)\nactions.apwfi+=/raptor_strike\nactions.apwfi+=/mongoose_bite,if=buff.mongoose_fury.up||focus>40||dot.shrapnel_bomb.ticking\nactions.apwfi+=/wildfire_bomb,if=next_wi_bomb.volatile&dot.serpent_sting.ticking||next_wi_bomb.pheromone||next_wi_bomb.shrapnel&focus>50\n\nactions.cds=blood_fury,if=cooldown.coordinated_assault.remains>30\nactions.cds+=/ancestral_call,if=cooldown.coordinated_assault.remains>30\nactions.cds+=/fireblood,if=cooldown.coordinated_assault.remains>30\nactions.cds+=/lights_judgment\nactions.cds+=/berserking,if=cooldown.coordinated_assault.remains>60||time_to_die<13\nactions.cds+=/potion,if=buff.guardian_of_azeroth.up&(buff.berserking.up||buff.blood_fury.up||!race.troll)||(consumable.potion_of_unbridled_fury&time_to_die<61||time_to_die<26)||!essence.condensed_lifeforce.major&buff.coordinated_assault.up\nactions.cds+=/aspect_of_the_eagle,if=target.distance>=6\nactions.cds+=/use_item,name=ashvanes_razor_coral,if=buff.memory_of_lucid_dreams.up&target.time_to_die<cooldown.memory_of_lucid_dreams.remains+15||buff.guardian_of_azeroth.stack=5&target.time_to_die<cooldown.guardian_of_azeroth.remains+20||debuff.razor_coral_debuff.down||target.time_to_die<21||buff.worldvein_resonance.remains&target.time_to_die<cooldown.worldvein_resonance.remains+18||!talent.birds_of_prey.enabled&target.time_to_die<cooldown.coordinated_assault.remains+20&buff.coordinated_assault.remains\nactions.cds+=/use_item,name=galecallers_boon,if=cooldown.memory_of_lucid_dreams.remains||talent.wildfire_infusion.enabled&cooldown.coordinated_assault.remains||!essence.memory_of_lucid_dreams.major&cooldown.coordinated_assault.remains\nactions.cds+=/use_item,name=azsharas_font_of_power\nactions.cds+=/focused_azerite_beam,if=raid_event.adds.in>90&focus<focus.max-25||(active_enemies>1&!talent.birds_of_prey.enabled||active_enemies>2)&(buff.blur_of_talons.up&buff.blur_of_talons.remains>3*gcd||!buff.blur_of_talons.up)\nactions.cds+=/blood_of_the_enemy,if=((raid_event.adds.remains>90||!raid_event.adds.exists)||(active_enemies>1&!talent.birds_of_prey.enabled||active_enemies>2))&focus<focus.max\nactions.cds+=/purifying_blast,if=((raid_event.adds.remains>60||!raid_event.adds.exists)||(active_enemies>1&!talent.birds_of_prey.enabled||active_enemies>2))&focus<focus.max\nactions.cds+=/guardian_of_azeroth\nactions.cds+=/ripple_in_space\nactions.cds+=/concentrated_flame,if=full_recharge_time<1*gcd\nactions.cds+=/the_unbound_force,if=buff.reckless_force.up\nactions.cds+=/worldvein_resonance\nactions.cds+=/reaping_flames,if=target.health.pct>80||target.health.pct<=20||target.time_to_pct_20>30\nactions.cds+=/serpent_sting,if=essence.memory_of_lucid_dreams.major&refreshable&buff.vipers_venom.up&!cooldown.memory_of_lucid_dreams.remains\nactions.cds+=/mongoose_bite,if=essence.memory_of_lucid_dreams.major&!cooldown.memory_of_lucid_dreams.remains\nactions.cds+=/wildfire_bomb,if=essence.memory_of_lucid_dreams.major&full_recharge_time<1.5*gcd&focus<action.mongoose_bite.cost&!cooldown.memory_of_lucid_dreams.remains\nactions.cds+=/memory_of_lucid_dreams,if=focus<action.mongoose_bite.cost&buff.coordinated_assault.up\n\nactions.cleave=variable,name=carve_cdr,op=setif,value=active_enemies,value_else=5,condition=active_enemies<5\nactions.cleave+=/mongoose_bite,if=azerite.blur_of_talons.rank>0&(buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd||buff.coordinated_assault.remains&!buff.blur_of_talons.remains))\nactions.cleave+=/mongoose_bite,target_if=min:time_to_die,if=debuff.latent_poison.stack>(active_enemies||9)&target.time_to_die<active_enemies*gcd\nactions.cleave+=/a_murder_of_crows\nactions.cleave+=/coordinated_assault\nactions.cleave+=/carve,if=dot.shrapnel_bomb.ticking&!talent.hydras_bite.enabled||dot.shrapnel_bomb.ticking&active_enemies>5\nactions.cleave+=/wildfire_bomb,if=!talent.guerrilla_tactics.enabled||full_recharge_time<gcd||raid_event.adds.remains<6&raid_event.adds.exists\nactions.cleave+=/butchery,if=charges_fractional>2.5||dot.shrapnel_bomb.ticking||cooldown.wildfire_bomb.remains>active_enemies-gcd||debuff.blood_of_the_enemy.remains||raid_event.adds.remains<5&raid_event.adds.exists\nactions.cleave+=/mongoose_bite,target_if=max:debuff.latent_poison.stack,if=debuff.latent_poison.stack>8\nactions.cleave+=/chakrams\nactions.cleave+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max\nactions.cleave+=/harpoon,if=talent.terms_of_engagement.enabled\nactions.cleave+=/carve,if=talent.guerrilla_tactics.enabled\nactions.cleave+=/butchery,if=cooldown.wildfire_bomb.remains>(active_enemies||5)\nactions.cleave+=/flanking_strike,if=focus+cast_regen<focus.max\nactions.cleave+=/wildfire_bomb,if=dot.wildfire_bomb.refreshable||talent.wildfire_infusion.enabled\nactions.cleave+=/serpent_sting,cycle_targets=1,if=buff.vipers_venom.react\nactions.cleave+=/carve,if=cooldown.wildfire_bomb.remains>variable.carve_cdr%2\nactions.cleave+=/steel_trap\nactions.cleave+=/serpent_sting,cycle_targets=1,if=refreshable&buff.tip_of_the_spear.stack<3&next_wi_bomb.volatile||refreshable&azerite.latent_poison.rank>0\n# To simulate usage for Mongoose Bite or Raptor Strike during Aspect of the Eagle, copy each occurrence of the action and append _eagle to the action name.\nactions.cleave+=/mongoose_bite,cycle_targets=1\nactions.cleave+=/raptor_strike,cycle_targets=1\n\nactions.st=harpoon,if=talent.terms_of_engagement.enabled\nactions.st+=/flanking_strike,if=focus+cast_regen<focus.max\nactions.st+=/raptor_strike,if=buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd)\n# To simulate usage for Mongoose Bite or Raptor Strike during Aspect of the Eagle, copy each occurrence of the action and append _eagle to the action name.\nactions.st+=/mongoose_bite,if=buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd)\nactions.st+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max\nactions.st+=/serpent_sting,if=buff.vipers_venom.up&buff.vipers_venom.remains<1*gcd\nactions.st+=/steel_trap,if=focus+cast_regen<focus.max\nactions.st+=/wildfire_bomb,if=focus+cast_regen<focus.max&refreshable&full_recharge_time<gcd&!buff.memory_of_lucid_dreams.up||focus+cast_regen<focus.max&(!dot.wildfire_bomb.ticking&(!buff.coordinated_assault.up||buff.mongoose_fury.stack<1||time_to_die<18||!dot.wildfire_bomb.ticking&azerite.wilderness_survival.rank>0))&!buff.memory_of_lucid_dreams.up\nactions.st+=/serpent_sting,if=buff.vipers_venom.up&dot.serpent_sting.remains<4*gcd||dot.serpent_sting.refreshable&!buff.coordinated_assault.up\nactions.st+=/a_murder_of_crows,if=!buff.coordinated_assault.up\nactions.st+=/coordinated_assault,if=!buff.coordinated_assault.up\nactions.st+=/mongoose_bite,if=buff.mongoose_fury.up||focus+cast_regen>focus.max-20&talent.vipers_venom.enabled||focus+cast_regen>focus.max-1&talent.terms_of_engagement.enabled||buff.coordinated_assault.up\nactions.st+=/raptor_strike\nactions.st+=/wildfire_bomb,if=dot.wildfire_bomb.refreshable\nactions.st+=/serpent_sting,if=buff.vipers_venom.up\n\nactions.wfi=harpoon,if=focus+cast_regen<focus.max&talent.terms_of_engagement.enabled\nactions.wfi+=/mongoose_bite,if=buff.blur_of_talons.up&buff.blur_of_talons.remains<gcd\nactions.wfi+=/raptor_strike,if=buff.blur_of_talons.up&buff.blur_of_talons.remains<gcd\nactions.wfi+=/serpent_sting,if=buff.vipers_venom.up&buff.vipers_venom.remains<1.5*gcd||!dot.serpent_sting.ticking\nactions.wfi+=/wildfire_bomb,if=full_recharge_time<1.5*gcd&focus+cast_regen<focus.max||(next_wi_bomb.volatile&dot.serpent_sting.ticking&dot.serpent_sting.refreshable||next_wi_bomb.pheromone&!buff.mongoose_fury.up&focus+cast_regen<focus.max-action.kill_command.cast_regen*3)\nactions.wfi+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max-focus.regen\nactions.wfi+=/a_murder_of_crows\nactions.wfi+=/steel_trap,if=focus+cast_regen<focus.max\nactions.wfi+=/wildfire_bomb,if=full_recharge_time<1.5*gcd\nactions.wfi+=/coordinated_assault\nactions.wfi+=/serpent_sting,if=buff.vipers_venom.up&dot.serpent_sting.remains<4*gcd\nactions.wfi+=/mongoose_bite,if=dot.shrapnel_bomb.ticking||buff.mongoose_fury.stack=5\nactions.wfi+=/wildfire_bomb,if=next_wi_bomb.shrapnel&dot.serpent_sting.remains>5*gcd\nactions.wfi+=/serpent_sting,if=refreshable\nactions.wfi+=/chakrams,if=!buff.mongoose_fury.remains\nactions.wfi+=/mongoose_bite\nactions.wfi+=/raptor_strike\nactions.wfi+=/serpent_sting,if=buff.vipers_venom.up\nactions.wfi+=/wildfire_bomb,if=next_wi_bomb.volatile&dot.serpent_sting.ticking||next_wi_bomb.pheromone||next_wi_bomb.shrapnel",
|
|
["spec"] = 255,
|
|
},
|
|
},
|
|
},
|
|
["Quilkin - Thunderhorn"] = {
|
|
["runOnce"] = {
|
|
["forceReloadClassDefaultOptions_20220306_259"] = true,
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["removeOldThrottles_20241115"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_260"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_261"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
},
|
|
["specs"] = {
|
|
[260] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["mfd_waste"] = true,
|
|
["check_blade_rush_range"] = true,
|
|
["solo_vanish"] = true,
|
|
["allow_shadowmeld"] = false,
|
|
["sinister_clash"] = -0.5,
|
|
["vanish_charges_reserved"] = 0,
|
|
},
|
|
["debuffPadding"] = 0,
|
|
["potionsReset"] = 20180919.1,
|
|
["nameplateRange"] = 8,
|
|
["potion"] = "potion_of_unbridled_fury",
|
|
["buffPadding"] = 0,
|
|
},
|
|
[261] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["mfd_waste"] = true,
|
|
["solo_vanish"] = true,
|
|
["priority_rotation"] = false,
|
|
["vanish_charges_reserved"] = 0,
|
|
["rupture_duration"] = 12,
|
|
},
|
|
["debuffPadding"] = 0,
|
|
["potionsReset"] = 20180919.1,
|
|
["potion"] = "potion_of_unbridled_fury",
|
|
["nameplateRange"] = 8,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[259] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["vanish_charges_reserved"] = 0,
|
|
["cooldowns_ttd"] = 0,
|
|
["fok_critical_cp_prediction"] = "predict",
|
|
["envenom_pool_pct"] = 50,
|
|
["solo_vanish"] = true,
|
|
["priority_rotation"] = false,
|
|
["max_garrote_spread"] = 10,
|
|
["mfd_waste"] = true,
|
|
},
|
|
["debuffPadding"] = 0,
|
|
["potionsReset"] = 20180919.1,
|
|
["potion"] = "potion_of_unbridled_fury",
|
|
["nameplateRange"] = 8,
|
|
["buffPadding"] = 0,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Outlaw"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/rogue_outlaw.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250425,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-04-25: SimC Update\n2025-04-12: SimC Update\n2025-04-06: SimC Update - No more Coup de Grace Bug\n2025-03-23: SimC Update\n2025-03-15: SimC update\n2025-01-02: Apply missed SimC updates (thanks IIeTpoc).\n2024-10-23: 11.0.5\n2024-09-08, 09-10, 09-15: SimC update\n2024-09-03: Poisons\n2024-08-25, 09-01: SimC rtb_reroll tweak\n2024-08-22: Respect LD Opener setting\n2024-08-15: Major revisions from SimC\n2024-08-09: Update finisher conditions from SimC\n2024-08-06: Respect Vanish CD when considering BtE with Crackshot\n2024-07-28: The War Within",
|
|
["lists"] = {
|
|
["build"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.blade_flurry.ready & talent.deft_maneuvers.enabled & spell_targets >= 5 & ( combo_points <= 2 - buff.broadside.up || ! buff.adrenaline_rush.up )",
|
|
["var_name"] = "deft_condition",
|
|
["description"] = "Builders With Deft Maneuvers, build CPs with Blade Flurry at 5+ targets, only at 2 CPs or lower (1 CP with Broadside) unless AR isn't active.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "High priority Ambush for Hidden Opportunity builds.",
|
|
["criteria"] = "talent.hidden_opportunity.enabled & buff.audacity.up",
|
|
["action"] = "ambush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Trickster builds should prioritize Sinister Strike during Disorienting Strikes. HO builds prefer to do this only at 3 Escalating Blade stacks and not at max Opportunity stacks.",
|
|
["criteria"] = "buff.disorienting_strikes.up & ! stealthed.all & ( buff.escalating_blade.stack > 2 & buff.opportunity.stack < buff.opportunity.max_stack || ! talent.hidden_opportunity.enabled ) & buff.escalating_blade.stack < 4",
|
|
["action"] = "sinister_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "pistol_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With Fatebound or 1 rank in Fan the Hammer, and without Hidden Opportunity, build CP with Blade Flurry as a higher priority than Opportunity procs.",
|
|
["criteria"] = "variable.deft_condition & ( talent.fan_the_hammer.rank = 1 || ! talent.nimble_flurry.enabled & ! talent.surprising_strikes.enabled )",
|
|
["action"] = "blade_flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With 2 ranks in Fan the Hammer, consume Opportunity as if at max stacks or if it will expire.",
|
|
["criteria"] = "talent.fan_the_hammer.rank = 2 & buff.opportunity.up & ( buff.opportunity.stack >= buff.opportunity.max_stack || buff.opportunity.remains < 2 )",
|
|
["action"] = "pistol_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["action"] = "pistol_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["action"] = "pistol_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With Hidden Opportunity or 2 ranks in Fan the Hammer, building CPs with Blade Flurry is lower priority than Opportunity procs and Ambush.",
|
|
["criteria"] = "variable.deft_condition",
|
|
["action"] = "blade_flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Coup de Grace at low CP if Sinister Strike would otherwise be used.",
|
|
["criteria"] = "! stealthed.all",
|
|
["action"] = "coup_de_grace",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Fallback pooling just so Sinister Strike is never casted if Ambush is available for Hidden Opportunity builds.",
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hidden_opportunity.enabled",
|
|
["action"] = "ambush",
|
|
},
|
|
{
|
|
["action"] = "sinister_strike",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["vanish_usage"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Flex Vanish usage for standard builds. Without Killing Spree, attempt to hold Vanish for when BtE is on cooldown and Ruthless Precision is active. Also with Keep it Rolling, hold Vanish if we haven't done the first roll after KIR yet.",
|
|
["criteria"] = "! talent.killing_spree.enabled & ! cooldown.between_the_eyes.ready & buff.ruthless_precision.remains > 4 & ( cooldown.keep_it_rolling.remains > 150 & rtb_buffs_normal > 0 || ! talent.keep_it_rolling.enabled )",
|
|
["action"] = "vanish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Supercharger builds that do not use Killing Spree should also Vanish if Supercharger becomes active.",
|
|
["criteria"] = "! talent.killing_spree.enabled & supercharge_1",
|
|
["action"] = "vanish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Builds with Killing Spree can freely Vanish if KS is not up soon.",
|
|
["criteria"] = "cooldown.killing_spree.remains > 30",
|
|
["action"] = "vanish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Vanish if about to cap on charges or sim duration is ending.",
|
|
["criteria"] = "cooldown.vanish.full_recharge_time < 15 || boss & fight_remains < 8",
|
|
["action"] = "vanish",
|
|
},
|
|
},
|
|
["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"] = "( 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 ) )",
|
|
["var_name"] = "finish_condition",
|
|
["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.",
|
|
},
|
|
{
|
|
["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",
|
|
["description"] = "Builds with Keep it Rolling+Loaded Dice prepull Adrenaline Rush before Roll the Bones to consume Loaded Dice immediately instead of on the next pandemic roll.",
|
|
["criteria"] = "talent.improved_adrenaline_rush.enabled & talent.keep_it_rolling.enabled & talent.loaded_dice.enabled & buff.adrenaline_rush.down",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.adrenaline_rush.down",
|
|
["action"] = "roll_the_bones",
|
|
["precombat_seconds"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.improved_adrenaline_rush.enabled & buff.adrenaline_rush.down",
|
|
["action"] = "adrenaline_rush",
|
|
["precombat_seconds"] = "1",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Cooldowns Maintain Adrenaline Rush if it is not active. Use at low CPs with Improved AR.",
|
|
["criteria"] = "! buff.adrenaline_rush.up & ( ! variable.finish_condition || ! talent.improved_adrenaline_rush.enabled )",
|
|
["action"] = "adrenaline_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "If using Improved AR, recast AR if it is already active at low CPs.",
|
|
["criteria"] = "buff.adrenaline_rush.up & talent.improved_adrenaline_rush.enabled & combo_points <= 2",
|
|
["action"] = "adrenaline_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "High priority Ghostly Strike as it is off-gcd. 1 FTH builds prefer to not use it at max CPs.",
|
|
["criteria"] = "combo_points < cp_max_spend || talent.fan_the_hammer.rank > 1",
|
|
["action"] = "ghostly_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "sprint",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Maintain Blade Flurry on 2+ targets.",
|
|
["criteria"] = "spell_targets >= 2 & buff.blade_flurry.remains < gcd.max",
|
|
["action"] = "blade_flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With a natural 5 buff roll, use Keep it Rolling when you obtain the remaining buff from Count the Odds.",
|
|
["criteria"] = "rtb_buffs_normal >= 5 & rtb_buffs = 6",
|
|
["action"] = "keep_it_rolling",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Without a natural 5 buff roll, use Keep it Rolling at any 4+ buffs.",
|
|
["criteria"] = "rtb_buffs >= 4 & rtb_buffs_normal <= 2",
|
|
["action"] = "keep_it_rolling",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Without a natural 5 buff roll, use Keep it Rolling at 3 buffs if you have the combination of Ruthless Precision + Broadside + True Bearing.",
|
|
["criteria"] = "rtb_buffs >= 3 & rtb_buffs_normal <= 2 & buff.broadside.up & buff.ruthless_precision.up & buff.true_bearing.up",
|
|
["action"] = "keep_it_rolling",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( buff.broadside.remains > 39 ) + ( buff.ruthless_precision.remains > 39 ) + ( buff.true_bearing.remains > 39 ) + ( buff.grand_melee.remains > 39 ) + ( buff.buried_treasure.remains > 39 ) + ( buff.skull_and_crossbones.remains > 39 )",
|
|
["var_name"] = "buffs_above_pandemic",
|
|
["description"] = "Variable that counts how many buffs are ahead of RtB's pandemic range, which is only possible by using KIR.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Maintain Roll the Bones: cast without any buffs.",
|
|
["criteria"] = "rtb_buffs = 0",
|
|
["action"] = "roll_the_bones",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With TWW2 set, recast Roll the Bones if we will roll away between 0-1 buffs. If KIR was recently used on a natural 5 buff, then wait until all buffs are below around 41s remaining.",
|
|
["criteria"] = "set_bonus.tww2_4pc & rtb_buffs_will_lose <= 1 & ( variable.buffs_above_pandemic < 5 || rtb_buffs_max_remains < 42 )",
|
|
["action"] = "roll_the_bones",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With TWW2 set, recast Roll the Bones with at most 2 buffs active regardless of duration. Supercharger builds will also roll if we will lose between 0-4 buffs, but KIR Supercharger builds wait until they are all below 11s remaining.",
|
|
["criteria"] = "set_bonus.tww2_4pc & ( rtb_buffs <= 2 || ( rtb_buffs_max_remains < 11 || ! talent.keep_it_rolling.enabled ) & rtb_buffs_will_lose < 5 & talent.supercharger.enabled )",
|
|
["action"] = "roll_the_bones",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Without TWW2 set or Sleight of Hand, recast Roll the Bones to override 1 buff into 2 buffs with Loaded Dice, or reroll any 2 buffs with Loaded Dice+Supercharger. Hidden Opportunity builds can also reroll 2 buffs with Loaded Dice to try for BS/RP/TB.",
|
|
["criteria"] = "! set_bonus.tww2_4pc & ( rtb_buffs_will_lose <= buff.loaded_dice.up || talent.supercharger.enabled & buff.loaded_dice.up & rtb_buffs <= 2 || talent.hidden_opportunity.enabled & buff.loaded_dice.up & rtb_buffs <= 2 & ! buff.broadside.up & ! buff.ruthless_precision.up & ! buff.true_bearing.up )",
|
|
["action"] = "roll_the_bones",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["criteria"] = "! stealthed.all || boss & fight_remains <= 22",
|
|
["description"] = "Trinkets that should not be used during stealth and have higher priority than entering stealth.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! stealthed.all || boss & fight_remains <= 5",
|
|
["name"] = "mad_queens_mandate",
|
|
["action"] = "mad_queens_mandate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "If necessary, standard builds prioritize using Vanish at any CP to prevent Adrenaline Rush downtime.",
|
|
["criteria"] = "talent.underhanded_upper_hand.enabled & talent.subterfuge.enabled & buff.adrenaline_rush.up & ! stealthed.all & buff.adrenaline_rush.remains < 2 & cooldown.adrenaline_rush.remains > 30",
|
|
["action"] = "vanish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["description"] = "If not at risk of losing Adrenaline Rush, run finishers to use Killing Spree or Coup de Grace as a higher priority than Vanish.",
|
|
["criteria"] = "! stealthed.all & ( cooldown.killing_spree.ready & talent.killing_spree.enabled || buff.escalating_blade.stack >= 4 ) & variable.finish_condition",
|
|
["list_name"] = "finish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "If not at risk of losing Adrenaline Rush, call flexible Vanish rules to be used at finisher CPs.",
|
|
["criteria"] = "! stealthed.all & talent.crackshot.enabled & talent.underhanded_upper_hand.enabled & talent.subterfuge.enabled & buff.adrenaline_rush.up & variable.finish_condition",
|
|
["list_name"] = "vanish_usage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "! stealthed.all & ( ! talent.underhanded_upper_hand.enabled || ! talent.crackshot.enabled || ! talent.subterfuge.enabled )",
|
|
["list_name"] = "vanish_usage_off_meta",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Generic catch-all for Shadowmeld. Technically, usage in DungeonSlice or DungeonRoute sims could mirror Vanish usage on packs.",
|
|
["criteria"] = "variable.finish_condition & ! cooldown.vanish.ready & ! stealthed.all",
|
|
["action"] = "shadowmeld",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Blade Rush at minimal energy outside of stealth.",
|
|
["criteria"] = "energy.base_time_to_max > 4 & ! stealthed.all",
|
|
["action"] = "blade_rush",
|
|
},
|
|
{
|
|
["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,
|
|
["name"] = "junkmaestros_mega_magnet",
|
|
["action"] = "junkmaestros_mega_magnet",
|
|
["criteria"] = "buff.between_the_eyes.up & buff.junkmaestros_mega_magnet.stack > 25 || boss & fight_remains < 5",
|
|
["description"] = "Let the magnet trinket stack up just so it does not disrupt a 2nd on-use trinket.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.between_the_eyes.up || trinket.t1.has_stat.any_dps || boss & fight_remains <= 20",
|
|
["action"] = "trinket1",
|
|
["slots"] = "trinket1",
|
|
["description"] = "Default conditions for usable items.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.between_the_eyes.up || trinket.t2.has_stat.any_dps || boss & fight_remains <= 20",
|
|
["slots"] = "trinket2",
|
|
["action"] = "trinket2",
|
|
},
|
|
},
|
|
["vanish_usage_off_meta"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Flex Vanish usage for builds lacking one of the mandatory stealth talents. APL support for these builds is considered limited.",
|
|
["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 )",
|
|
["action"] = "vanish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.underhanded_upper_hand.enabled & talent.crackshot.enabled & variable.finish_condition",
|
|
["action"] = "vanish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "vanish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["action"] = "vanish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "vanish",
|
|
},
|
|
},
|
|
["stealth"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Stealth",
|
|
["criteria"] = "variable.finish_condition",
|
|
["action"] = "cold_blood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Ensure Crackshot BtE is not skipped because of low energy.",
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["action"] = "between_the_eyes",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.finish_condition",
|
|
["action"] = "dispatch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "2 Fan the Hammer Crackshot builds can consume Opportunity in stealth with max stacks, Broadside, and 1 CP, 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 )",
|
|
["action"] = "pistol_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hidden_opportunity.enabled",
|
|
["action"] = "ambush",
|
|
},
|
|
},
|
|
["finish"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Finishers",
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["action"] = "killing_spree",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "coup_de_grace",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Between the Eyes outside of Stealth to maintain the buff, or with Ruthless Precision active, or to proc Greenskins Wickers if not active. Trickster builds can also send BtE on cooldown.",
|
|
["criteria"] = "( buff.ruthless_precision.up || buff.between_the_eyes.remains < 4 || ! talent.mean_streak.enabled ) & ( ! buff.greenskins_wickers.up || ! talent.greenskins_wickers.enabled )",
|
|
["action"] = "between_the_eyes",
|
|
},
|
|
{
|
|
["action"] = "cold_blood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "dispatch",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250425,
|
|
["warnings"] = "The import for 'vanish_usage' required some automated changes.\nLine 2: Converted 'buff.supercharge_1.up' to 'supercharge_1' (1x).\nThe following auras were used in the action list but were not found in the addon database:\n - supercharge_1\n\nThe import for 'cds' required some automated changes.\nLine 4: Converted 'trinket.1.is.scroll_of_momentum' to 'trinket.t1.is.scroll_of_momentum' (1x).\nLine 4: Converted 'trinket.2.is.scroll_of_momentum' to 'trinket.t2.is.scroll_of_momentum' (1x).\nLine 28: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 29: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\n\nImported 8 action lists.\n",
|
|
["spec"] = 260,
|
|
["basedOn"] = "Outlaw",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/rogue_outlaw.simc\n## Up to date with SimC: April 16 2025 - b23bf5e\n\nactions.precombat+=/apply_poison\nactions.precombat+=/use_item,name=imperfect_ascendancy_serum\nactions.precombat+=/stealth,precombat_seconds=2\n# Builds with Keep it Rolling+Loaded Dice 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&talent.keep_it_rolling&talent.loaded_dice&buff.adrenaline_rush.down\nactions.precombat+=/roll_the_bones,precombat_seconds=2,if=buff.adrenaline_rush.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\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))\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 With Deft Maneuvers, build CPs with Blade Flurry at 5+ targets, only at 2 CPs or lower (1 CP with Broadside) unless AR isn't active.\nactions.build+=/variable,name=deft_condition,value=cooldown.blade_flurry.ready&talent.deft_maneuvers&spell_targets>=5&(combo_points<=2-buff.broadside.up||!buff.adrenaline_rush.up)\n# High priority Ambush for Hidden Opportunity builds.\nactions.build+=/ambush,if=talent.hidden_opportunity&buff.audacity.up\n# Trickster builds should prioritize Sinister Strike during Disorienting Strikes. HO builds prefer to do this only at 3 Escalating Blade stacks and not at max Opportunity stacks.\nactions.build+=/sinister_strike,if=buff.disorienting_strikes.up&!stealthed.all&(buff.escalating_blade.stack>2&buff.opportunity.stack<buff.opportunity.max_stack||!talent.hidden_opportunity)&buff.escalating_blade.stack<4\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 Fatebound or 1 rank in Fan the Hammer, and without Hidden Opportunity, build CP with Blade Flurry as a higher priority than Opportunity procs.\nactions.build+=/blade_flurry,if=variable.deft_condition&(talent.fan_the_hammer.rank=1||!talent.nimble_flurry&!talent.surprising_strikes)\n# With 2 ranks in Fan the Hammer, consume Opportunity as if at max stacks or if it will expire.\nactions.build+=/pistol_shot,if=talent.fan_the_hammer.rank=2&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# With Hidden Opportunity or 2 ranks in Fan the Hammer, building CPs with Blade Flurry is lower priority than Opportunity procs and Ambush.\nactions.build+=/blade_flurry,if=variable.deft_condition\n# Use Coup de Grace at low CP if Sinister Strike would otherwise be used.\nactions.build+=/coup_de_grace,if=!stealthed.all\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 Maintain Adrenaline Rush if it is not active. Use at low CPs with Improved AR.\nactions.cds+=/adrenaline_rush,if=!buff.adrenaline_rush.up&(!variable.finish_condition||!talent.improved_adrenaline_rush)\n# If using Improved AR, recast AR if it is already active at low CPs.\nactions.cds+=/adrenaline_rush,if=buff.adrenaline_rush.up&talent.improved_adrenaline_rush&combo_points<=2\n# High priority Ghostly Strike as it is off-gcd. 1 FTH builds prefer to not use it at max CPs.\nactions.cds+=/ghostly_strike,if=combo_points<cp_max_spend||talent.fan_the_hammer.rank>1\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 a natural 5 buff roll, use Keep it Rolling when you obtain the remaining buff from Count the Odds.\nactions.cds+=/keep_it_rolling,if=rtb_buffs.normal>=5&rtb_buffs=6\n# Without a natural 5 buff roll, use Keep it Rolling at any 4+ buffs.\nactions.cds+=/keep_it_rolling,if=rtb_buffs>=4&rtb_buffs.normal<=2\n# Without a natural 5 buff roll, use Keep it Rolling at 3 buffs if you have the combination of Ruthless Precision + Broadside + True Bearing.\nactions.cds+=/keep_it_rolling,if=rtb_buffs>=3&rtb_buffs.normal<=2&buff.broadside.up&buff.ruthless_precision.up&buff.true_bearing.up\n# Variable that counts how many buffs are ahead of RtB's pandemic range, which is only possible by using KIR.\nactions.cds+=/variable,name=buffs_above_pandemic,value=(buff.broadside.remains>39)+(buff.ruthless_precision.remains>39)+(buff.true_bearing.remains>39)+(buff.grand_melee.remains>39)+(buff.buried_treasure.remains>39)+(buff.skull_and_crossbones.remains>39)\n# Maintain Roll the Bones: cast without any buffs.\nactions.cds+=/roll_the_bones,if=rtb_buffs=0\n# With TWW2 set, recast Roll the Bones if we will roll away between 0-1 buffs. If KIR was recently used on a natural 5 buff, then wait until all buffs are below around 41s remaining.\nactions.cds+=/roll_the_bones,if=set_bonus.tww2_4pc&rtb_buffs.will_lose<=1&(variable.buffs_above_pandemic<5||rtb_buffs.max_remains<42)\n# With TWW2 set, recast Roll the Bones with at most 2 buffs active regardless of duration. Supercharger builds will also roll if we will lose between 0-4 buffs, but KIR Supercharger builds wait until they are all below 11s remaining.\nactions.cds+=/roll_the_bones,if=set_bonus.tww2_4pc&(rtb_buffs<=2||(rtb_buffs.max_remains<11||!talent.keep_it_rolling)&rtb_buffs.will_lose<5&talent.supercharger)\n# Without TWW2 set or Sleight of Hand, recast Roll the Bones to override 1 buff into 2 buffs with Loaded Dice, or reroll any 2 buffs with Loaded Dice+Supercharger. Hidden Opportunity builds can also reroll 2 buffs with Loaded Dice to try for BS/RP/TB.\nactions.cds+=/roll_the_bones,if=!set_bonus.tww2_4pc&(rtb_buffs.will_lose<=buff.loaded_dice.up||talent.supercharger&buff.loaded_dice.up&rtb_buffs<=2||talent.hidden_opportunity&buff.loaded_dice.up&rtb_buffs<=2&!buff.broadside.up&!buff.ruthless_precision.up&!buff.true_bearing.up)\n# Trinkets that should not be used during stealth and have higher priority than entering stealth.\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# If necessary, standard builds prioritize using Vanish at any CP to prevent Adrenaline Rush downtime.\nactions.cds+=/vanish,if=talent.underhanded_upper_hand&talent.subterfuge&buff.adrenaline_rush.up&!stealthed.all&buff.adrenaline_rush.remains<2&cooldown.adrenaline_rush.remains>30\n# If not at risk of losing Adrenaline Rush, run finishers to use Killing Spree or Coup de Grace as a higher priority than Vanish.\nactions.cds+=/run_action_list,name=finish,if=!stealthed.all&(cooldown.killing_spree.ready&talent.killing_spree||buff.escalating_blade.stack>=4)&variable.finish_condition\n# If not at risk of losing Adrenaline Rush, call flexible Vanish rules to be used at finisher CPs.\nactions.cds+=/call_action_list,name=vanish_usage,if=!stealthed.all&talent.crackshot&talent.underhanded_upper_hand&talent.subterfuge&buff.adrenaline_rush.up&variable.finish_condition\nactions.cds+=/call_action_list,name=vanish_usage_off_meta,if=!stealthed.all&(!talent.underhanded_upper_hand||!talent.crackshot||!talent.subterfuge)\n# Generic catch-all for Shadowmeld. Technically, usage in DungeonSlice or DungeonRoute sims could mirror Vanish usage on packs.\nactions.cds+=/shadowmeld,if=variable.finish_condition&!cooldown.vanish.ready&!stealthed.all\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\n# Let the magnet trinket stack up just so it does not disrupt a 2nd on-use trinket.\nactions.cds+=/use_item,name=junkmaestros_mega_magnet,if=buff.between_the_eyes.up&buff.junkmaestros_mega_magnet.stack>25||boss&fight_remains<5\n# Default conditions for usable items.\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\nactions.finish=pool_resource,for_next=1\nactions.finish+=/killing_spree\nactions.finish+=/coup_de_grace\n# Use Between the Eyes outside of Stealth to maintain the buff, or with Ruthless Precision active, or to proc Greenskins Wickers if not active. Trickster builds can also send BtE on cooldown.\nactions.finish+=/between_the_eyes,if=(buff.ruthless_precision.up||buff.between_the_eyes.remains<4||!talent.mean_streak)&(!buff.greenskins_wickers.up||!talent.greenskins_wickers)\nactions.finish+=/cold_blood\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 1 CP, 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# Flex Vanish usage for standard builds. Without Killing Spree, attempt to hold Vanish for when BtE is on cooldown and Ruthless Precision is active. Also with Keep it Rolling, hold Vanish if we haven't done the first roll after KIR yet.\nactions.vanish_usage+=/vanish,if=!talent.killing_spree&!cooldown.between_the_eyes.ready&buff.ruthless_precision.remains>4&(cooldown.keep_it_rolling.remains>150&rtb_buffs.normal>0||!talent.keep_it_rolling)\n# Supercharger builds that do not use Killing Spree should also Vanish if Supercharger becomes active.\nactions.vanish_usage+=/vanish,if=!talent.killing_spree&buff.supercharge_1.up\n# Builds with Killing Spree can freely Vanish if KS is not up soon.\nactions.vanish_usage+=/vanish,if=cooldown.killing_spree.remains>30\n# Vanish if about to cap on charges or sim duration is ending.\nactions.vanish_usage+=/vanish,if=cooldown.vanish.full_recharge_time<15||boss&fight_remains<8\n\n# Flex Vanish usage for builds lacking one of the mandatory stealth talents. APL support for these builds is considered limited.\nactions.vanish_usage_off_meta+=/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)\nactions.vanish_usage_off_meta+=/vanish,if=!talent.underhanded_upper_hand&talent.crackshot&variable.finish_condition\nactions.vanish_usage_off_meta+=/vanish,if=!talent.underhanded_upper_hand&!talent.crackshot&talent.hidden_opportunity&!buff.audacity.up&buff.opportunity.stack<buff.opportunity.max_stack&variable.ambush_condition\nactions.vanish_usage_off_meta+=/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)\nactions.vanish_usage_off_meta+=/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",
|
|
},
|
|
["Subtlety"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/rogue_subtlety.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250406,
|
|
["spec"] = 261,
|
|
["desc"] = "2025-04-06: SimC Sync\n2025-03-25: SimC Sync\n2025-03-06: Workaround for rupture spam re: Flagellation cooldown\n2025-03-01: Sync with SimC",
|
|
["lists"] = {
|
|
["fill"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_torrent",
|
|
["description"] = "This list usually contains Cooldowns with neglectable impact that causes global cooldowns",
|
|
["criteria"] = "energy.deficit >= 15 + energy.regen",
|
|
},
|
|
{
|
|
["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.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 || active_enemies <= 2 )",
|
|
["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.shadow_blades.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,
|
|
["action"] = "blood_fury",
|
|
["description"] = "Racials",
|
|
["criteria"] = "variable.racial_sync",
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "treacherous_transmitter",
|
|
["name"] = "treacherous_transmitter",
|
|
["criteria"] = "cooldown.flagellation.remains <= 2 || boss & fight_remains <= 15",
|
|
["description"] = "Items (Trinkets)",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["criteria"] = "dot.rupture.ticking & buff.flagellation_buff.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["name"] = "mad_queens_mandate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 & cooldown.shadow_blades.remains > 20 ) ) || ! variable.trinket_sync_slot )",
|
|
["slots"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 & cooldown.shadow_blades.remains > 20 ) ) || ! variable.trinket_sync_slot )",
|
|
["slots"] = "trinket2",
|
|
},
|
|
{
|
|
["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_use_buff & ( ! trinket.t2.has_use_buff || trinket.t1.is.treacherous_transmitter || 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_use_buff & ( ! trinket.t1.has_use_buff || trinket.t2.cooldown.duration > trinket.t1.cooldown.duration )",
|
|
["var_name"] = "trinket_sync_slot",
|
|
},
|
|
{
|
|
["action"] = "stealth",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["finish"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["criteria"] = "! toggle.cooldowns",
|
|
["description"] = "[Syrif] - This variable prevents rupture spam when CDs are toggled off, or otherwise desynced due to dungeon gameplay environment ",
|
|
["var_name"] = "cooldowns_soon",
|
|
["action"] = "variable",
|
|
["value_else"] = "cooldown.shadow_blades.remains <= 13 & cooldown.flagellation.remains < 10 & ( dot.rupture.remains < ( cooldown.shadow_blades.remains + buff.shadow_blades.duration ) )",
|
|
["value"] = "false",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.secret",
|
|
["action"] = "secret_technique",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rupture",
|
|
["description"] = "Maintenance Finisher",
|
|
["criteria"] = "! variable.skip_rupture & ( ! dot.rupture.ticking || refreshable ) & target.time_to_die - remains > 6",
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "rupture",
|
|
["description"] = "[Syrif] Uses Hekili-specific variable as a workaround",
|
|
["criteria"] = "talent.unseen_blade.enabled & variable.cooldowns_soon & dot.rupture.remains < fight_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "coup_de_grace",
|
|
["description"] = "Direct Damage Finisher",
|
|
["criteria"] = "debuff.fazed.up & cooldown.flagellation.remains >= 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.priority_rotation & variable.maintenance & ( ( ( active_enemies >= 2 & talent.deathstalkers_mark.enabled & ( ! buff.darkest_night.up || buff.shadow_dance.up & active_enemies >= 5 ) ) || talent.unseen_blade.enabled & active_enemies >= 7 ) || action.coup_de_grace.ready )",
|
|
["action"] = "black_powder",
|
|
},
|
|
{
|
|
["action"] = "eviscerate",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cold_blood",
|
|
["description"] = "Cooldowns",
|
|
["criteria"] = "cooldown.secret_technique.up & buff.shadow_dance.up & combo_points >= 6 & variable.secret & ( ! talent.flagellation.enabled || buff.flagellation_persist.up )",
|
|
},
|
|
{
|
|
["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 & ( ! talent.flagellation.enabled || cooldown.flagellation.remains >= 30 - 15 * ! talent.death_perception.enabled & cooldown.secret_technique.remains < 8 || ! talent.death_perception.enabled ) || boss & fight_remains <= 15 & ( raid || buff.symbols_of_death.down ) )",
|
|
["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 & cooldown.shadow_blades.remains <= 3 || boss & fight_remains <= 25",
|
|
["action"] = "flagellation",
|
|
},
|
|
},
|
|
["stealth_cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_dance",
|
|
["description"] = "Shadow Dance, Vanish, Shadowmeld",
|
|
["criteria"] = "variable.shd_cp & variable.maintenance & cooldown.secret_technique.remains <= 24 & ( buff.symbols_of_death.remains >= 6 || buff.shadow_blades.remains >= 6 ) || boss & fight_remains <= 10",
|
|
},
|
|
{
|
|
["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"] = "backstab",
|
|
["description"] = "Combo Point Builder",
|
|
["criteria"] = "buff.shadow_dance.up & ! used_for_danse || ! variable.stealth & buff.shadow_blades.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.shadow_dance.up & ! used_for_danse || ! variable.stealth & buff.shadow_blades.up",
|
|
["action"] = "gloomblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadowstrike",
|
|
["criteria"] = "debuff.find_weakness.remains <= 2 & active_enemies = 2 & talent.unseen_blade.enabled || ! used_for_danse & ! talent.premeditation.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.lingering_darkness.up || talent.deathstalkers_mark.enabled & cooldown.shadow_blades.remains >= 32 & active_enemies >= 3 || talent.unseen_blade.enabled & buff.symbols_of_death.up & active_enemies >= 4",
|
|
["action"] = "shuriken_tornado",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.clear_the_witnesses.up & ( active_enemies >= 2 || ! buff.symbols_of_death.up )",
|
|
["action"] = "shuriken_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadowstrike",
|
|
["criteria"] = "talent.deathstalkers_mark.enabled & ! debuff.deathstalkers_mark.up & active_enemies >= 3 & ( buff.shadow_blades.up || buff.premeditation.up || talent.the_rotten.enabled )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.deathstalkers_mark.enabled & active_enemies >= ( 2 + 3 * buff.shadow_dance.up )",
|
|
["action"] = "shuriken_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unseen_blade.enabled & ( buff.flawless_form.up & active_enemies >= 3 & ! variable.stealth || buff.the_rotten.stack = 1 & active_enemies >= 7 & buff.shadow_dance.up )",
|
|
["action"] = "shuriken_storm",
|
|
},
|
|
{
|
|
["action"] = "shadowstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points.deficit >= 3",
|
|
["action"] = "goremaws_bite",
|
|
},
|
|
{
|
|
["action"] = "gloomblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "backstab",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250406,
|
|
["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_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (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_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.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'.\n\nThe import for 'finish' required some automated changes.\nLine 5: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\nLine 7: Converted 'talent.deathstalkers_mark' to 'talent.deathstalkers_mark.enabled' (1x).\nLine 7: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\n\nThe import for 'cds' required some automated changes.\nLine 1: Converted 'talent.flagellation' to 'talent.flagellation.enabled' (1x).\nLine 3: Converted 'talent.flagellation' to 'talent.flagellation.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 3: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\nLine 3: Converted 'talent.premeditation' to 'talent.premeditation.enabled' (1x).\nLine 4: Converted 'talent.deathstalkers_mark' to 'talent.deathstalkers_mark.enabled' (1x).\nLine 4: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\nLine 6: Converted 'talent.deathstalkers_mark' to 'talent.deathstalkers_mark.enabled' (1x).\nLine 6: Converted 'talent.the_rotten' to 'talent.the_rotten.enabled' (1x).\nLine 7: Converted 'talent.deathstalkers_mark' to 'talent.deathstalkers_mark.enabled' (1x).\nLine 8: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\n\nImported 7 action lists.\n",
|
|
["author"] = "SimC",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/rogue_subtlety.simc\n## Up to date with SimC: April 5 2025 - ed7963f\n\nactions.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_use_buff&(!trinket.2.has_use_buff||trinket.1.is.treacherous_transmitter||trinket.1.cooldown.duration>=trinket.2.cooldown.duration)\nactions.precombat+=/variable,name=trinket_sync_slot,value=2,if=trinket.2.has_use_buff&(!trinket.1.has_use_buff||trinket.2.cooldown.duration>trinket.1.cooldown.duration)\nactions.precombat+=/stealth\n\n\nactions+=/stealth\nactions+=/kick\nactions+=/variable,name=stealth,value=buff.shadow_dance.up||buff.stealth.up||buff.vanish.up\n## [Syrif] -Replaced below variable with active_enemies\n## actions+=/variable,name=targets,value=spell_targets.shuriken_storm\nactions+=/variable,name=skip_rupture,value=buff.shadow_dance.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||active_enemies<=2)\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.shadow_blades.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&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&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+=/backstab,if=buff.shadow_dance.up&!used_for_danse||!variable.stealth&buff.shadow_blades.up\nactions.build+=/gloomblade,if=buff.shadow_dance.up&!used_for_danse||!variable.stealth&buff.shadow_blades.up\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_tornado,if=buff.lingering_darkness.up||talent.deathstalkers_mark&cooldown.shadow_blades.remains>=32&active_enemies>=3||talent.unseen_blade&(!variable.stealth||active_enemies>=3)&(buff.symbols_of_death.up||!raid_event.adds.up)\nactions.build+=/shuriken_storm,if=buff.clear_the_witnesses.up&(active_enemies>=2||!buff.symbols_of_death.up)\nactions.build+=/shadowstrike,cycle_targets=1,if=talent.deathstalkers_mark&!debuff.deathstalkers_mark.up&active_enemies>=3&(buff.shadow_blades.up||buff.premeditation.up||talent.the_rotten)\nactions.build+=/shuriken_storm,if=talent.deathstalkers_mark&active_enemies>=(2+3*buff.shadow_dance.up)\nactions.build+=/shuriken_storm,if=talent.unseen_blade&(buff.flawless_form.up&active_enemies>=3&!variable.stealth||buff.the_rotten.stack=1&active_enemies>=6&buff.shadow_dance.up)\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&(!talent.flagellation||buff.flagellation_persist.up)\nactions.cds+=/potion,if=buff.bloodlust.up||boss&fight_remains<30||buff.flagellation_buff.up\n## [Syrif] - Workaround to stop symbols wasteful spam in dungeons\nactions.cds+=/symbols_of_death,if=(buff.symbols_of_death.remains<=3&variable.maintenance&(active_enemies>=3||!buff.flagellation_buff.up||dot.rupture.remains>=30)&(!talent.flagellation||cooldown.flagellation.remains>=30-15*!talent.death_perception&cooldown.secret_technique.remains<8||!talent.death_perception)||boss&fight_remains<=15&(raid||buff.symbols_of_death.down))\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&cooldown.shadow_blades.remains<=3||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\n# [Syrif] - This variable prevents rupture spam when CDs are toggled off, or otherwise desynced due to dungeon gameplay environment \nactions.finish+=/variable,name=cooldowns_soon,op=setif,condition=!toggle.cooldowns,value=false,value_else=cooldown.shadow_blades.remains<=13&cooldown.flagellation.remains<10&(dot.rupture.remains<(cooldown.shadow_blades.remains+buff.shadow_blades.duration))\nactions.finish+=/secret_technique,if=variable.secret\n# Maintenance Finisher\nactions.finish+=/rupture,if=!variable.skip_rupture&(!dot.rupture.ticking||refreshable||buff.flagellation_buff.up&!buff.symbols_of_death.up&active_enemies<=2)&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# [Syrif] Uses Hekili-specific variable as a workaround\nactions.finish+=/rupture,if=talent.unseen_blade&variable.cooldowns_soon&active_enemies>=3&dot.rupture.remains<fight_remains\n# Direct Damage Finisher\nactions.finish+=/coup_de_grace,if=debuff.fazed.up&cooldown.flagellation.remains>=20||fight_remains<=10\nactions.finish+=/black_powder,if=!variable.priority_rotation&variable.maintenance&(((active_enemies>=2&talent.deathstalkers_mark&(!buff.darkest_night.up||buff.shadow_dance.up&active_enemies>=5))||talent.unseen_blade&fw_targets>=5)||action.coup_de_grace.ready&active_enemies>=3)\nactions.finish+=/eviscerate,if=cooldown.flagellation.remains>=10||active_enemies>=3\n\n# Shadow Dance, Vanish, Shadowmeld\nactions.stealth_cds+=/shadow_dance,if=variable.shd_cp&variable.maintenance&(cooldown.secret_technique.remains<=24||talent.the_first_dance&buff.shadow_blades.up)&(buff.symbols_of_death.remains>=6||buff.shadow_blades.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",
|
|
},
|
|
["Assassination"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/rogue_assassination.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250412,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-04-12: Something something time travelling variables\n2025-04-08: Sync with SimC\n2025-03-25: Sync with SimC\n2025-03-25: Sync with SimC\n2025-03-14: Sync with SimC (new trinket line)\n2025-03-08: Sync with SimC\n2025-03-01: Sync with SimC",
|
|
["lists"] = {
|
|
["stealthed"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Stealthed Actions",
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Apply Deathstalkers Mark if it has fallen off or waiting for Rupture in AoE",
|
|
["criteria"] = "! debuff.deathstalkers_mark.up & talent.deathstalkers_mark.enabled & combo_points < variable.effective_spend_cp & ( dot.rupture.ticking || variable.single_target || ! talent.subterfuge.enabled )",
|
|
["action"] = "ambush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Make sure to have Shiv up during Kingsbane as a final check [Hekili] with Lightweight Shiv only",
|
|
["criteria"] = "talent.kingsbane.enabled & dot.kingsbane.ticking & dot.kingsbane.remains < 8 & ( ! debuff.shiv.up & debuff.shiv.remains < 1 ) & buff.envenom.up",
|
|
["action"] = "shiv",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Envenom to maintain the buff during Subterfuge",
|
|
["criteria"] = "effective_combo_points >= variable.effective_spend_cp & dot.kingsbane.ticking & buff.envenom.remains <= 3 & ( debuff.deathstalkers_mark.up || buff.cold_blood.up || buff.darkest_night.up & combo_points = 7 )",
|
|
["action"] = "envenom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Envenom during Master Assassin in single target",
|
|
["criteria"] = "effective_combo_points >= variable.effective_spend_cp & buff.master_assassin_aura.up & variable.single_target & ( debuff.deathstalkers_mark.up || buff.cold_blood.up || buff.darkest_night.up & combo_points = 7 )",
|
|
["action"] = "envenom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rupture",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Rupture during Indiscriminate Carnage",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "garrote",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Improved Garrote: Apply or Refresh with buffed Garrotes, accounting for Indiscriminate Carnage",
|
|
["criteria"] = "stealthed.improved_garrote & ( remains < 12 || pmultiplier <= 1 || ( buff.indiscriminate_carnage.up & active_dot.garrote < spell_targets.fan_of_knives ) ) & ! variable.single_target & target.time_to_die - remains > 2 & combo_points.deficit > 2 - buff.darkest_night.up * 2",
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "pool_resource",
|
|
["extra_amount"] = "45",
|
|
["description"] = "Stealth Cooldowns Vanish Sync for Improved Garrote with Deathmark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Vanish to fish for Fateful Ending",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Vanish to spread Garrote during Deathmark without Indiscriminate Carnage",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["extra_amount"] = "45",
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Vanish for cleaving Garrotes with Indiscriminate Carnage",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Vanish fallback for Master Assassin",
|
|
["criteria"] = "talent.master_assassin.enabled & debuff.deathmark.up & dot.kingsbane.remains <= 6 + 3 * talent.subterfuge.rank",
|
|
["action"] = "vanish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Vanish fallback for Improved Garrote during Deathmark if no add waves are expected",
|
|
["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",
|
|
},
|
|
},
|
|
["core_dot"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Core damage over time abilities used everywhere Maintain Garrote",
|
|
["criteria"] = "combo_points.deficit >= 1 & ( pmultiplier <= 1 ) & refreshable & target.time_to_die - remains > 12",
|
|
["action"] = "garrote",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Maintain Rupture unless darkest night is up",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Maintain Crimson Tempest unless it would remove a stronger cast",
|
|
["criteria"] = "combo_points >= variable.effective_spend_cp & refreshable & pmultiplier <= persistent_multiplier & ! buff.darkest_night.up & ! talent.amplifying_poison.enabled",
|
|
["action"] = "crimson_tempest",
|
|
},
|
|
},
|
|
["shiv"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! debuff.shiv.up & dot.garrote.ticking & dot.rupture.ticking & spell_targets.fan_of_knives <= 5",
|
|
["var_name"] = "shiv_condition",
|
|
["description"] = "Shiv conditions",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.kingsbane.enabled & buff.envenom.up & variable.shiv_condition",
|
|
["var_name"] = "shiv_kingsbane_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Shiv for aoe with Arterial Precision",
|
|
["criteria"] = "talent.arterial_precision.enabled & ! debuff.shiv.up & dot.garrote.ticking & dot.rupture.ticking & spell_targets.fan_of_knives >= 4 & dot.crimson_tempest.ticking & ( target.health.pct <= 35 & talent.zoldyck_recipe.enabled || cooldown.shiv.charges_fractional >= 1.9 )",
|
|
["action"] = "shiv",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Shiv cases for Kingsbane",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Shiv for big Darkest Night Envenom during Lingering Darkness",
|
|
["criteria"] = "buff.darkest_night.up & combo_points >= variable.effective_spend_cp & buff.lingering_darkness.up",
|
|
["action"] = "shiv",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.lightweight_shiv.enabled & variable.shiv_kingsbane_condition & ( dot.kingsbane.ticking & dot.kingsbane.remains < 8 || cooldown.kingsbane.remains <= 1 & cooldown.shiv.charges_fractional >= 1.7 )",
|
|
["action"] = "shiv",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Fallback shiv for arterial during deathmark",
|
|
["criteria"] = "debuff.deathmark.up & talent.arterial_precision.enabled & ! debuff.shiv.up & dot.garrote.ticking & dot.rupture.ticking",
|
|
["action"] = "shiv",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Fallback if no special cases apply",
|
|
["criteria"] = "! debuff.deathmark.up & ! talent.kingsbane.enabled & variable.shiv_condition & ( dot.crimson_tempest.ticking || talent.amplifying_poison.enabled ) & ( ( ( talent.lightweight_shiv.enabled + 1 ) - cooldown.shiv.charges_fractional ) * 30 < cooldown.deathmark.remains ) & raid_event.adds.in > 20",
|
|
["action"] = "shiv",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Dump Shiv on fight end",
|
|
["criteria"] = "boss & fight_remains <= cooldown.shiv.charges * 8",
|
|
["action"] = "shiv",
|
|
},
|
|
},
|
|
["misc_cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Miscellaneous Cooldowns Potion",
|
|
["criteria"] = "buff.bloodlust.react || boss & fight_remains < 30 || debuff.deathmark.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Various special racials to be synced with cooldowns",
|
|
["criteria"] = "debuff.deathmark.up",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.deathmark.up",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.deathmark.up",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.deathmark.up",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
},
|
|
["aoe_dot"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "combo_points >= variable.effective_spend_cp",
|
|
["var_name"] = "dot_finisher_condition",
|
|
["description"] = "AoE Damage over time abilities Helper Variable to check basic finisher conditions",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Crimson Tempest on 2+ Targets",
|
|
["criteria"] = "spell_targets >= 2 & variable.dot_finisher_condition & refreshable & target.time_to_die - remains > 6",
|
|
["action"] = "crimson_tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "garrote",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Garrote upkeep in AoE to reach energy saturation",
|
|
["criteria"] = "combo_points.deficit >= 1 & pmultiplier <= 1 & refreshable & ! variable.regen_saturated & target.time_to_die - remains > 12",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rupture",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Rupture upkeep in AoE to reach energy/scent saturation or to spread for damage",
|
|
["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 > ( 7 + ( talent.dashing_scoundrel.enabled * 5 ) + ( variable.regen_saturated * 6 ) ) & ! buff.darkest_night.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.dot_finisher_condition & refreshable & ( ! dot.kingsbane.ticking || buff.cold_blood.up ) & variable.regen_saturated & target.time_to_die > ( 7 + ( talent.dashing_scoundrel.enabled * 5 ) + ( variable.regen_saturated * 6 ) ) & ! buff.darkest_night.up",
|
|
["action"] = "rupture",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Garrote as a special generator for the last CP before a finisher for edge case handling",
|
|
["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",
|
|
},
|
|
},
|
|
["items"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "dot.rupture.ticking & cooldown.deathmark.remains < 2 & ! cooldown.deathmark.ready || dot.deathmark.ticking || boss & fight_remains <= 22",
|
|
["var_name"] = "base_trinket_condition",
|
|
["description"] = "Special Case Trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "treacherous_transmitter",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "variable.base_trinket_condition",
|
|
["name"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.deathmark.remains >= 30 & ! dot.deathmark.ticking || boss & fight_remains <= 3",
|
|
["name"] = "mad_queens_mandate",
|
|
["action"] = "mad_queens_mandate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.deathmark.remains >= 30 & ! dot.deathmark.ticking & ! debuff.shiv.up & ( ! talent.deathstalkers_mark.enabled || buff.lingering_darkness.up & buff.junkmaestros_mega_magnet.stack > 5 ) || boss & fight_remains <= 10",
|
|
["name"] = "junkmaestros_mega_magnet",
|
|
["action"] = "junkmaestros_mega_magnet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "variable.base_trinket_condition",
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "algethar_puzzle_box",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "dot.rupture.ticking & cooldown.deathmark.remains < 2 || boss & fight_remains <= 22",
|
|
["name"] = "algethar_puzzle_box",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.trinket_sync_slot = 1 & ( debuff.deathmark.up || dot.kingsbane.ticking ) || ( variable.trinket_sync_slot = 2 & ! trinket.t2.cooldown.ready & cooldown.deathmark.remains > 20 ) ) || ! variable.trinket_sync_slot || boss & fight_remains <= 20",
|
|
["action"] = "trinket1",
|
|
["slots"] = "trinket1",
|
|
["description"] = "Fallback case for using stat trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.trinket_sync_slot = 2 & ( debuff.deathmark.up || dot.kingsbane.ticking ) || ( variable.trinket_sync_slot = 1 & ! trinket.t1.cooldown.ready & cooldown.deathmark.remains > 20 ) ) || ! variable.trinket_sync_slot || boss & fight_remains <= 20",
|
|
["slots"] = "trinket2",
|
|
["action"] = "trinket2",
|
|
},
|
|
},
|
|
["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",
|
|
["var_name"] = "regen_saturated",
|
|
["description"] = "Combined Energy Regen needed to saturate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies = 1",
|
|
["var_name"] = "single_target",
|
|
["description"] = "Pooling Setup, check for cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "dot.kingsbane.ticking || debuff.shiv.up",
|
|
["var_name"] = "in_cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.kingsbane.enabled & cooldown.kingsbane.remains < 3 & ! cooldown.kingsbane.ready",
|
|
["var_name"] = "cd_soon",
|
|
["description"] = "Checking for cooldowns soon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.in_cooldowns || buff.darkest_night.up || ( energy.pct >= ( 80 - 10 * talent.vicious_venoms.rank - 30 * talent.amplifying_poison.enabled ) ) || ( charges_fractional > 1.8 || boss ) & fight_remains <= 20",
|
|
["var_name"] = "not_pooling",
|
|
["description"] = "Pooling Condition all together - [Syrif] - This is where upper_limit_energy is written out",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.scent_of_blood.stack >= ( ( spell_targets.fan_of_knives * talent.scent_of_blood.rank * 2 ) >? 20 )",
|
|
["var_name"] = "scent_saturation",
|
|
["description"] = "We are Scent Saturated when our stack count is hitting the maximum",
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Call Cooldowns",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Call Core DoT effects",
|
|
["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,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Call Direct Damage Abilities",
|
|
["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",
|
|
["var_name"] = "trinket_sync_slot",
|
|
["value"] = "1",
|
|
["description"] = "Check which trinket slots have Stat Values",
|
|
["criteria"] = "trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff || trinket.t1.cooldown.duration >= trinket.t2.cooldown.duration ) & ! trinket.t2.is.treacherous_transmitter || trinket.t1.is.treacherous_transmitter || trinket.t1.is.house_of_cards",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["var_name"] = "trinket_sync_slot",
|
|
["criteria"] = "trinket.t2.has_use_buff & ( ! trinket.t1.has_use_buff || trinket.t2.cooldown.duration > trinket.t1.cooldown.duration ) & ! trinket.t1.is.treacherous_transmitter || trinket.t2.is.treacherous_transmitter || trinket.t2.is.house_of_cards",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cp_max_spend - 2 <? 5 * talent.hand_of_fate.enabled",
|
|
["var_name"] = "effective_spend_cp",
|
|
["description"] = "Determine combo point finish condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Pre-cast Slice and Dice if possible",
|
|
["action"] = "stealth",
|
|
},
|
|
},
|
|
["direct"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
["extra_amount"] = "energy.max*(0.5+0.3*talent.hand_of_fate.rank-0.15*talent.vicious_venoms.rank)-action.envenom.cost",
|
|
["criteria"] = "active_dot.envenom = 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Direct Damage Abilities Envenom at applicable cp if not pooling, capped on amplifying poison stacks, on an animacharged CP, or in aoe.",
|
|
["criteria"] = "! buff.darkest_night.up & combo_points >= variable.effective_spend_cp & ( variable.not_pooling || debuff.amplifying_poison.stack >= 20 || active_enemies > 1 )",
|
|
["action"] = "envenom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Special Envenom handling for Darkest Night",
|
|
["criteria"] = "buff.darkest_night.up & effective_combo_points >= cp_max_spend",
|
|
["action"] = "envenom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( buff.clear_the_witnesses.up & ( spell_targets.fan_of_knives >= 2 - ( buff.lingering_darkness.up || ! talent.vicious_venoms.enabled ) ) ) || ( spell_targets.fan_of_knives >= 3 - ( talent.momentum_of_despair.enabled & talent.thrown_precision.enabled ) + talent.vicious_venoms.enabled + talent.blindside.enabled )",
|
|
["var_name"] = "fok_target_count",
|
|
["description"] = "Check if we should be using a filler",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "combo_points <= variable.effective_spend_cp & ! variable.cd_soon || variable.not_pooling || active_enemies > 1",
|
|
["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",
|
|
["var_name"] = "use_caustic_filler",
|
|
["description"] = "Maintain Caustic Spatter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.use_caustic_filler",
|
|
["action"] = "mutilate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.use_caustic_filler",
|
|
["action"] = "ambush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Fan of Knives at 6cp for Darkest Night",
|
|
["criteria"] = "buff.darkest_night.up & combo_points = 6 & ( ! talent.vicious_venoms.enabled || spell_targets.fan_of_knives >= 2 )",
|
|
["action"] = "fan_of_knives",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Fan of Knives at 3+ targets, accounting for various edge cases",
|
|
["criteria"] = "variable.use_filler & ! toggle.funnel & variable.fok_target_count",
|
|
["action"] = "fan_of_knives",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Ambush on Blindside/Subterfuge. Do not use Ambush from stealth during Kingsbane & Deathmark.",
|
|
["criteria"] = "variable.use_filler & ( buff.blindside.up || stealthed.rogue ) & ( ! dot.kingsbane.ticking || debuff.deathmark.down || buff.blindside.up )",
|
|
["action"] = "ambush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mutilate",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Tab-Mutilate to apply Deadly Poison at 2 targets if not using Fan of Knives",
|
|
["criteria"] = "variable.use_filler & spell_targets.fan_of_knives = 2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Fallback Mutilate",
|
|
["criteria"] = "variable.use_filler",
|
|
["action"] = "mutilate",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! talent.master_assassin.enabled || dot.garrote.ticking",
|
|
["var_name"] = "deathmark_ma_condition",
|
|
["description"] = "Cooldowns Wait on Deathmark for Garrote with MA and check for Kingsbane",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.kingsbane.remains <= 2 & buff.envenom.up",
|
|
["var_name"] = "deathmark_kingsbane_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "dot.rupture.ticking & ( variable.deathmark_kingsbane_condition || spell_targets.fan_of_knives > 1 & buff.slice_and_dice.remains > 5 || ! talent.kingsbane.enabled & dot.crimson_tempest.ticking ) & ! debuff.deathmark.up & variable.deathmark_ma_condition",
|
|
["var_name"] = "deathmark_condition",
|
|
["description"] = "Deathmark to be used if not stealthed, Rupture is up, and all other talent conditions are satisfied",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Usages for various special-case Trinkets and other Cantrips if applicable",
|
|
["list_name"] = "items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Cast Deathmark if the target will survive long enough",
|
|
["criteria"] = "( variable.deathmark_condition & target.time_to_die >= 10 ) || boss & fight_remains <= 20",
|
|
["action"] = "deathmark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Check for Applicable Shiv usage",
|
|
["list_name"] = "shiv",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( debuff.shiv.up || cooldown.shiv.remains < 6 ) & ( buff.envenom.up || spell_targets.fan_of_knives > 1 ) & ( cooldown.deathmark.remains >= 50 || dot.deathmark.ticking ) || boss & fight_remains <= 15",
|
|
["action"] = "kingsbane",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use with shiv or in niche cases at the end of Kingsbane if not already up",
|
|
["criteria"] = "! buff.thistle_tea.up & debuff.shiv.remains >= 6 || ! buff.thistle_tea.up & dot.kingsbane.ticking & dot.kingsbane.remains <= 6 || ! buff.thistle_tea.up & fight_remains <= cooldown.thistle_tea.charges * 6",
|
|
["action"] = "thistle_tea",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Potion/Racials/Other misc cooldowns",
|
|
["list_name"] = "misc_cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "! stealthed.all & master_assassin_remains = 0",
|
|
["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,
|
|
["description"] = "Cold Blood for Edge Case or Envenoms during shiv",
|
|
["action"] = "cold_blood",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250412,
|
|
["warnings"] = "The import for 'items' required some automated changes.\nLine 7: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 7: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 8: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 8: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\n\nThe import for 'precombat' required some automated changes.\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.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.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 2: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 2: Converted 'trinket.1.is.house_of_cards' to 'trinket.t1.is.house_of_cards' (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.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 3: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 3: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 3: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 3: Converted 'trinket.2.is.house_of_cards' to 'trinket.t2.is.house_of_cards' (1x).\n\nImported 11 action lists.\n",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/rogue_assassination.simc\n## Up to date with SimC: April 7 2025 - 0307d7f\n\nactions.precombat+=/apply_poison\n# Check which trinket slots have Stat Values\nactions.precombat+=/variable,name=trinket_sync_slot,value=1,if=trinket.1.has_use_buff&(!trinket.2.has_use_buff||trinket.1.cooldown.duration>=trinket.2.cooldown.duration)&!trinket.2.is.treacherous_transmitter||trinket.1.is.treacherous_transmitter||trinket.1.is.house_of_cards\nactions.precombat+=/variable,name=trinket_sync_slot,value=2,if=trinket.2.has_use_buff&(!trinket.1.has_use_buff||trinket.2.cooldown.duration>trinket.1.cooldown.duration)&!trinket.1.is.treacherous_transmitter||trinket.2.is.treacherous_transmitter||trinket.2.is.house_of_cards\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=single_target,value=active_enemies=1\nactions+=/variable,name=in_cooldowns,value=dot.kingsbane.ticking||debuff.shiv.up\n## [Syrif] - This variable is flattened into variable.not_pooling to ensure timeliness\n## actions+=/variable,name=upper_limit_energy,value=energy.pct>=(80-10*talent.vicious_venoms.rank-30*talent.amplifying_poison)\n# Checking for cooldowns soon\nactions+=/variable,name=cd_soon,value=talent.kingsbane&cooldown.kingsbane.remains<3&!cooldown.kingsbane.ready\n# Pooling Condition all together - [Syrif] - This is where upper_limit_energy is written out\nactions+=/variable,name=not_pooling,value=variable.in_cooldowns||buff.darkest_night.up||(energy.pct>=(80-10*talent.vicious_venoms.rank-30*talent.amplifying_poison))||(charges_fractional>1.8||boss)&fight_remains<=20\n## Check what the maximum Scent of Blood stacks is currently\n## actions+=/variable,name=scent_effective_max_stacks,value=(spell_targets.fan_of_knives*talent.scent_of_blood.rank*2)>?20\n# We are Scent Saturated when our stack count is hitting the maximum\nactions+=/variable,name=scent_saturation,value=buff.scent_of_blood.stack>=((spell_targets.fan_of_knives*talent.scent_of_blood.rank*2)>?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# AoE Damage over time abilities Helper Variable to check basic finisher conditions\nactions.aoe_dot+=/variable,name=dot_finisher_condition,value=combo_points>=variable.effective_spend_cp\n# Crimson Tempest on 2+ Targets\nactions.aoe_dot+=/crimson_tempest,if=spell_targets>=2&variable.dot_finisher_condition&refreshable&target.time_to_die-remains>6\n# Garrote upkeep 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 in AoE to reach energy/scent saturation or to spread for damage\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>(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&target.time_to_die>(7+(talent.dashing_scoundrel*5)+(variable.regen_saturated*6))&!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=cooldown.kingsbane.remains<=2&buff.envenom.up\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=dot.rupture.ticking&(variable.deathmark_kingsbane_condition||spell_targets.fan_of_knives>1&buff.slice_and_dice.remains>5||!talent.kingsbane&dot.crimson_tempest.ticking)&!debuff.deathmark.up&variable.deathmark_ma_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||spell_targets.fan_of_knives>1)&(cooldown.deathmark.remains>=50||dot.deathmark.ticking)||boss&fight_remains<=15\n# Use with shiv or in niche cases at the end of Kingsbane if not already up\nactions.cds+=/thistle_tea,if=!buff.thistle_tea.up&debuff.shiv.remains>=6||!buff.thistle_tea.up&dot.kingsbane.ticking&dot.kingsbane.remains<=6||!buff.thistle_tea.up&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# Maintain Crimson Tempest unless it would remove a stronger cast\nactions.core_dot+=/crimson_tempest,if=combo_points>=variable.effective_spend_cp&refreshable&pmultiplier<=persistent_multiplier&!buff.darkest_night.up&!talent.amplifying_poison\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)\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=fok_target_count,value=(buff.clear_the_witnesses.up&(spell_targets.fan_of_knives>=2-(buff.lingering_darkness.up||!talent.vicious_venoms)))||(spell_targets.fan_of_knives>=3-(talent.momentum_of_despair&talent.thrown_precision)+talent.vicious_venoms+talent.blindside)\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 6cp for Darkest Night\nactions.direct+=/fan_of_knives,if=buff.darkest_night.up&combo_points=6&(!talent.vicious_venoms||spell_targets.fan_of_knives>=2)\n# Fan of Knives at 3+ targets, accounting for various edge cases\nactions.direct+=/fan_of_knives,if=variable.use_filler&!toggle.funnel&variable.fok_target_count\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 if not using Fan of Knives\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&!cooldown.deathmark.ready||dot.deathmark.ticking||boss&fight_remains<=22\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\nactions.items+=/use_item,name=junkmaestros_mega_magnet,if=cooldown.deathmark.remains>=30&!dot.deathmark.ticking&!debuff.shiv.up&(!talent.deathstalkers_mark||buff.lingering_darkness.up&buff.junkmaestros_mega_magnet.stack>5)||boss&fight_remains<=10\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||dot.kingsbane.ticking)||(variable.trinket_sync_slot=2&!trinket.2.cooldown.ready&cooldown.deathmark.remains>20))||!variable.trinket_sync_slot||boss&fight_remains<=20\nactions.items+=/use_items,slots=trinket2,if=(variable.trinket_sync_slot=2&(debuff.deathmark.up||dot.kingsbane.ticking)||(variable.trinket_sync_slot=1&!trinket.1.cooldown.ready&cooldown.deathmark.remains>20))||!variable.trinket_sync_slot||boss&fight_remains<=20\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=debuff.deathmark.up\n\n# Shiv conditions\nactions.shiv+=/variable,name=shiv_condition,value=!debuff.shiv.up&dot.garrote.ticking&dot.rupture.ticking&spell_targets.fan_of_knives<=5\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&!debuff.shiv.up&dot.garrote.ticking&dot.rupture.ticking&spell_targets.fan_of_knives>=4&dot.crimson_tempest.ticking&(target.health.pct<=35&talent.zoldyck_recipe||cooldown.shiv.charges_fractional>=1.9)\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)\n# Shiv for big Darkest Night Envenom during Lingering Darkness\nactions.shiv+=/shiv,if=buff.darkest_night.up&combo_points>=variable.effective_spend_cp&buff.lingering_darkness.up\nactions.shiv+=/shiv,if=talent.lightweight_shiv.enabled&variable.shiv_kingsbane_condition&(dot.kingsbane.ticking&dot.kingsbane.remains<8||cooldown.kingsbane.remains<=1&cooldown.shiv.charges_fractional>=1.7)\n# Fallback shiv for arterial during deathmark\nactions.shiv+=/shiv,if=debuff.deathmark.up&talent.arterial_precision&!debuff.shiv.up&dot.garrote.ticking&dot.rupture.ticking\n# Fallback if no special cases apply\nactions.shiv+=/shiv,if=!debuff.deathmark.up&!talent.kingsbane&variable.shiv_condition&(dot.crimson_tempest.ticking||talent.amplifying_poison)&(((talent.lightweight_shiv+1)-cooldown.shiv.charges_fractional)*30<cooldown.deathmark.remains)&raid_event.adds.in>20\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\nactions.stealthed+=/pool_resource,for_next=1\n# Apply Deathstalkers Mark if it has fallen off or waiting for Rupture in AoE\nactions.stealthed+=/ambush,if=!debuff.deathstalkers_mark.up&talent.deathstalkers_mark&combo_points<variable.effective_spend_cp&(dot.rupture.ticking||variable.single_target||!talent.subterfuge)\n# Make sure to have Shiv up during Kingsbane as a final check [Hekili] with Lightweight Shiv only\nactions.stealthed+=/shiv,if=talent.kingsbane&dot.kingsbane.ticking&dot.kingsbane.remains<8&(!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||buff.darkest_night.up&combo_points=7)\n# Envenom during Master Assassin in single target\nactions.stealthed+=/envenom,if=effective_combo_points>=variable.effective_spend_cp&buff.master_assassin_aura.up&variable.single_target&(debuff.deathstalkers_mark.up||buff.cold_blood.up||buff.darkest_night.up&combo_points=7)\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=stealthed.improved_garrote&(remains<12||pmultiplier<=1||(buff.indiscriminate_carnage.up&active_dot.garrote<spell_targets.fan_of_knives))&!variable.single_target&target.time_to_die-remains>2&combo_points.deficit>2-buff.darkest_night.up*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&debuff.deathmark.up&dot.kingsbane.remains<=6+3*talent.subterfuge.rank\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,
|
|
},
|
|
},
|
|
},
|
|
["Quillum - Deathwing"] = {
|
|
["toggles"] = {
|
|
["mode"] = {
|
|
["value"] = "single",
|
|
},
|
|
},
|
|
["specs"] = {
|
|
[269] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["abilities"] = {
|
|
["flying_serpent_kick"] = {
|
|
["disabled"] = true,
|
|
},
|
|
},
|
|
["settings"] = {
|
|
["use_diffuse"] = false,
|
|
["check_sck_range"] = false,
|
|
["sef_one_charge"] = false,
|
|
["tok_damage"] = 1,
|
|
["check_wdp_range"] = false,
|
|
["optimize_reverse_harm"] = false,
|
|
["allow_fsk"] = true,
|
|
["dynamic_strike_of_the_windlord"] = false,
|
|
["cjl_capacitor_toggle"] = "none",
|
|
},
|
|
},
|
|
[270] = {
|
|
["settings"] = {
|
|
["aoe_rsk"] = false,
|
|
["single_zen_pulse"] = false,
|
|
["save_faeline"] = false,
|
|
["roll_movement"] = 5,
|
|
},
|
|
["potionsReset"] = 20180919.1,
|
|
},
|
|
[102] = {
|
|
["enhancedRecheck"] = true,
|
|
},
|
|
[268] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["bof_percent"] = 50,
|
|
["purify_for_celestial"] = true,
|
|
["max_damage"] = true,
|
|
["vivify_percent"] = 65,
|
|
["isb_overlap"] = 1,
|
|
["brew_charges"] = 2,
|
|
["purify_stagger"] = 33,
|
|
["purify_for_niuzao"] = true,
|
|
["purify_stagger_maxhp"] = 6,
|
|
["ox_walker"] = true,
|
|
["eh_percent"] = 65,
|
|
["purify_stagger_currhp"] = 12,
|
|
},
|
|
},
|
|
},
|
|
["displays"] = {
|
|
["Interrupts"] = {
|
|
["rel"] = "CENTER",
|
|
["y"] = -224.9999847412109,
|
|
},
|
|
["Cooldowns"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = -0.8332518935203552,
|
|
["y"] = -361.6665954589844,
|
|
},
|
|
["Primary"] = {
|
|
["y"] = -364.9996337890625,
|
|
["x"] = 85.8330078125,
|
|
["rel"] = "CENTER",
|
|
},
|
|
["AOE"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = 304.16650390625,
|
|
["y"] = -354.1666259765625,
|
|
},
|
|
["Defensives"] = {
|
|
["rel"] = "CENTER",
|
|
["y"] = -224.9999847412109,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Windwalker"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewrwithin/profiles/PreRaids/PR_Monk_Windwalker.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250322,
|
|
["spec"] = 269,
|
|
["desc"] = "2025-03-14: SimC Sync\n\n2025-02-28: TWW Season 2 update\n\n2025-02-15: Clarity\n\n2024-12-06: SimC update\n\n2024-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"] = {
|
|
["fallback"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "chi > 5 & combo_strike",
|
|
["action"] = "spinning_crane_kick",
|
|
["description"] = "Fallback",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & chi > 3",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & chi > 5",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
},
|
|
["default_cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dance_of_chiji.stack = 2 & combo_strike",
|
|
["action"] = "spinning_crane_kick",
|
|
["description"] = "2-4 targets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.pressure_point.up & active_enemies < 4 & cooldown.fists_of_fury.remains > 4 ) || ( cooldown.whirling_dragon_punch.remains < 2 & cooldown.fists_of_fury.remains > 1 & buff.dance_of_chiji.stack < 2 )",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.stack = 2 & active_enemies > 3",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.heart_of_the_jade_serpent_cdr.up & ! buff.heart_of_the_jade_serpent_cdr_celestial.up",
|
|
["action"] = "touch_of_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr.up & buff.dance_of_chiji.stack < 2",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dance_of_chiji.stack < 2",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr.up || buff.heart_of_the_jade_serpent_cdr_celestial.up",
|
|
["action"] = "slicing_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.up & cooldown.strike_of_the_windlord.remains & ( ! buff.heart_of_the_jade_serpent_cdr.up || debuff.gale_force.remains < 5 ) & ( talent.xuens_bond.enabled || ! talent.xuens_bond.enabled & buff.invokers_delight.up ) || boss & fight_remains < 15",
|
|
["action"] = "celestial_conduit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 & cooldown.fists_of_fury.remains & ( talent.glory_of_the_dawn.enabled || active_enemies < 3 )",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr_celestial.up",
|
|
["action"] = "fists_of_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr_celestial.up",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.gale_force.enabled & buff.invokers_delight.up & ( buff.bloodlust.up || ! buff.heart_of_the_jade_serpent_cdr_celestial.up )",
|
|
["action"] = "strike_of_the_windlord",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up & buff.bloodlust.up",
|
|
["action"] = "fists_of_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up & buff.bloodlust.up & active_enemies < 3",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.teachings_of_the_monastery.stack = 8 & ( active_enemies < 3 || talent.shadowboxing_treads.enabled )",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.revolving_whirl.enabled || talent.revolving_whirl.enabled & buff.dance_of_chiji.stack < 2 & active_enemies > 2 || active_enemies < 3",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time > 5 & ( cooldown.invoke_xuen_the_white_tiger.remains > 15 || talent.flurry_strikes.enabled ) & ( cooldown.fists_of_fury.remains < 2 || cooldown.celestial_conduit.remains < 10 )",
|
|
["action"] = "strike_of_the_windlord",
|
|
},
|
|
{
|
|
["action"] = "slicing_winds",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.the_emperors_capacitor.stack > 19 & combo_strike & talent.power_of_the_thunder_king.enabled & cooldown.invoke_xuen_the_white_tiger.remains > 10",
|
|
["action"] = "crackling_jade_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.stack = 2",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.flurry_strikes.enabled || talent.xuens_battlegear.enabled || ! talent.xuens_battlegear.enabled & ( cooldown.strike_of_the_windlord.remains > 1 || buff.heart_of_the_jade_serpent_cdr.up || buff.heart_of_the_jade_serpent_cdr_celestial.up ) ) & ( talent.flurry_strikes.enabled || talent.xuens_battlegear.enabled & ( cooldown.invoke_xuen_the_white_tiger.remains > 5 & boss || cooldown.invoke_xuen_the_white_tiger.remains > 9 ) || cooldown.invoke_xuen_the_white_tiger.remains > 10 )",
|
|
["action"] = "fists_of_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & active_enemies < 5 & buff.wisdom_of_the_wall_flurry.up",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.up & buff.chi_energy.stack > 29",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadowboxing_treads.enabled & talent.courageous_impulse.enabled & combo_strike & buff.bok_proc.stack = 2",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.teachings_of_the_monastery.stack = 4 & ! talent.knowledge_of_the_broken_temple.enabled & talent.shadowboxing_treads.enabled & active_enemies < 3",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.up",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadowboxing_treads.enabled & talent.courageous_impulse.enabled & combo_strike & buff.bok_proc.up",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & active_enemies < 5",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & chi.deficit >= 2 & ( ! buff.ordered_elements.up || energy.time_to_max <= gcd.max * 3 )",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains & buff.teachings_of_the_monastery.stack > 3 & cooldown.rising_sun_kick.remains",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "jadefire_stomp",
|
|
["criteria"] = "talent.singularly_focused_jade.enabled || talent.jadefire_harmony.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & ! buff.ordered_elements.up & talent.crane_vortex.enabled & active_enemies > 2 & chi > 4",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.ordered_elements.up",
|
|
["action"] = "chi_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & ( buff.ordered_elements.up || buff.bok_proc.up & chi.deficit >= 1 & talent.energy_burst.enabled ) & cooldown.fists_of_fury.remains",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains & ( chi > 2 || energy > 60 || buff.bok_proc.up )",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "jadefire_stomp",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & chi.deficit >= 1",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["action"] = "chi_burst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & talent.hit_combo.enabled",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ordered_elements.up & ! talent.hit_combo.enabled & cooldown.fists_of_fury.remains",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! combo_strike & chi < 3 & ! cooldown.fists_of_fury.remains",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
},
|
|
["aoe_opener"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "aoe opener",
|
|
["action"] = "slicing_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "chi < 6 & ( combo_strike || ! talent.hit_combo.enabled )",
|
|
["action"] = "tiger_palm",
|
|
["description"] = "Hekili: Modified to check Hit Combo since you will go pack-to-pack in dungeons (vs. single-encounter sims).",
|
|
},
|
|
},
|
|
["default_st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr_celestial.up || buff.heart_of_the_jade_serpent_cdr.up",
|
|
["action"] = "fists_of_fury",
|
|
["description"] = "1 target",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.pressure_point.up & ! buff.heart_of_the_jade_serpent_cdr.up & buff.heart_of_the_jade_serpent_cdr_celestial.up || buff.invokers_delight.up || buff.bloodlust.up || buff.pressure_point.up & cooldown.fists_of_fury.remains || buff.power_infusion.up",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.heart_of_the_jade_serpent_cdr_celestial.up & ! buff.dance_of_chiji.stack = 2",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr.up || buff.heart_of_the_jade_serpent_cdr_celestial.up",
|
|
["action"] = "slicing_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.up & ( ! buff.heart_of_the_jade_serpent_cdr.up || debuff.gale_force.remains < 5 ) & 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,
|
|
["criteria"] = "buff.dance_of_chiji.stack = 2 & combo_strike",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.energy_burst.enabled & ! buff.bok_proc.up || ! talent.energy_burst.enabled ) & ! buff.ordered_elements.up & ! cooldown.fists_of_fury.remains & chi < 3",
|
|
["action"] = "tiger_palm",
|
|
["description"] = "[Hekili] This Tiger Palm entry specifically allows Hit Combo breakage if you don't have enough Chi for Fists of Fury.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( prev.strike_of_the_windlord || ! buff.heart_of_the_jade_serpent_cdr_celestial.up ) & combo_strike & chi.deficit >= 2 & ! buff.ordered_elements.up",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["action"] = "touch_of_death",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! pet.xuen_the_white_tiger.active & prev.tiger_palm & time < 5 || buff.storm_earth_and_fire.up & talent.ordered_elements.enabled",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.celestial_conduit.enabled & ! buff.invokers_delight.up & ! buff.heart_of_the_jade_serpent_cdr_celestial.up & cooldown.fists_of_fury.remains < 5 & cooldown.invoke_xuen_the_white_tiger.remains > 15 || boss & fight_remains < 12",
|
|
["action"] = "strike_of_the_windlord",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.gale_force.enabled & buff.invokers_delight.up & ( buff.bloodlust.up || ! buff.heart_of_the_jade_serpent_cdr_celestial.up )",
|
|
["action"] = "strike_of_the_windlord",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time > 5 & talent.flurry_strikes.enabled",
|
|
["action"] = "strike_of_the_windlord",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up & buff.bloodlust.up & time > 5",
|
|
["action"] = "fists_of_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.teachings_of_the_monastery.stack > 3 & buff.ordered_elements.up & cooldown.rising_sun_kick.remains > 1 & cooldown.fists_of_fury.remains > 2",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & buff.power_infusion.up & buff.bloodlust.up",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.teachings_of_the_monastery.stack > 4 & cooldown.rising_sun_kick.remains > 1 & cooldown.fists_of_fury.remains > 2",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["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"] = "buff.the_emperors_capacitor.stack > 19 & ! buff.heart_of_the_jade_serpent_cdr.up & ! buff.heart_of_the_jade_serpent_cdr_celestial.up & combo_strike & cooldown.invoke_xuen_the_white_tiger.remains > 10 || buff.the_emperors_capacitor.stack > 15 & ! buff.heart_of_the_jade_serpent_cdr.up & ! buff.heart_of_the_jade_serpent_cdr_celestial.up & combo_strike & ( boss || target.time_to_die > 20 ) & cooldown.invoke_xuen_the_white_tiger.remains < 10 & cooldown.invoke_xuen_the_white_tiger.remains > 2",
|
|
["action"] = "crackling_jade_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.time_to_die > 10",
|
|
["action"] = "slicing_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.xuens_battlegear.enabled || ! talent.xuens_battlegear.enabled & ( cooldown.strike_of_the_windlord.remains > 1 || buff.heart_of_the_jade_serpent_cdr.up || buff.heart_of_the_jade_serpent_cdr_celestial.up ) ) & ( talent.xuens_battlegear.enabled & cooldown.invoke_xuen_the_white_tiger.remains > 5 || cooldown.invoke_xuen_the_white_tiger.remains > 10 ) & ( ! buff.invokers_delight.up || buff.invokers_delight.up & cooldown.strike_of_the_windlord.remains > 4 & cooldown.celestial_conduit.remains ) || fight_remains < 5 || talent.flurry_strikes.enabled",
|
|
["action"] = "fists_of_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "chi > 4 || chi > 2 & energy > 50 || cooldown.fists_of_fury.remains > 2",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & buff.wisdom_of_the_wall_flurry.up",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & talent.energy_burst.enabled & buff.bok_proc.up & chi < 5 & ( buff.heart_of_the_jade_serpent_cdr.up || buff.heart_of_the_jade_serpent_cdr_celestial.up )",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.bloodlust.up & buff.heart_of_the_jade_serpent_cdr.up & buff.dance_of_chiji.up",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & chi.deficit >= 2 & energy.time_to_max <= gcd.max * 3",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["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,
|
|
["criteria"] = "buff.dance_of_chiji.stack = 2 & combo_strike",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.courageous_impulse.enabled & combo_strike & buff.bok_proc.stack = 2",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & cooldown.rising_sun_kick.remains > 1 & cooldown.fists_of_fury.remains > 2",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["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,
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["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,
|
|
["criteria"] = "combo_strike & ( buff.ordered_elements.up || buff.bok_proc.up & chi.deficit >= 1 & talent.energy_burst.enabled ) & cooldown.fists_of_fury.remains",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains & ( chi > 2 || energy > 60 || buff.bok_proc.up )",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["action"] = "jadefire_stomp",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & chi.deficit >= 1",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["action"] = "chi_burst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & talent.hit_combo.enabled",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ordered_elements.up & ! talent.hit_combo.enabled & cooldown.fists_of_fury.remains",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev.tiger_palm & chi < 3 & ! cooldown.fists_of_fury.remains",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "spear_hand_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.up & ( ! talent.invoke_xuen.enabled || pet.xuen_the_white_tiger.active ) || boss & fight_remains <= 30",
|
|
["action"] = "potion",
|
|
["description"] = "Potion",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "fallback",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "chi < chi.max & energy < 55",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.down",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.down",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.down",
|
|
["action"] = "haymaker",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.down",
|
|
["action"] = "rocket_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.down",
|
|
["action"] = "arcane_pulse",
|
|
},
|
|
},
|
|
["default_aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "tiger_palm",
|
|
["description"] = ">=5 Targets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.heart_of_the_jade_serpent_cdr.up & ! buff.heart_of_the_jade_serpent_cdr_celestial.up",
|
|
["action"] = "touch_of_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & ( ( buff.chi_energy.stack > 29 & cooldown.fists_of_fury.remains < 5 ) || ( buff.dance_of_chiji.stack = 2 ) )",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr.up & buff.dance_of_chiji.stack < 2",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dance_of_chiji.stack < 2",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr.up || buff.heart_of_the_jade_serpent_cdr_celestial.up",
|
|
["action"] = "slicing_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.up & cooldown.strike_of_the_windlord.remains & ( ! buff.heart_of_the_jade_serpent_cdr.up || debuff.gale_force.remains < 5 ) & ( talent.xuens_bond.enabled || ! talent.xuens_bond.enabled & buff.invokers_delight.up ) || boss & fight_remains < 15",
|
|
["action"] = "celestial_conduit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.whirling_dragon_punch.remains < 2 & cooldown.fists_of_fury.remains > 1 & buff.dance_of_chiji.stack < 2 || ! buff.storm_earth_and_fire.up & buff.pressure_point.up",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.revolving_whirl.enabled || talent.revolving_whirl.enabled & buff.dance_of_chiji.stack < 2 & active_enemies > 2",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.bok_proc.up & chi < 2 & talent.energy_burst.enabled & energy < 55",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( time > 5 || buff.invokers_delight.up & buff.storm_earth_and_fire.up ) & ( cooldown.invoke_xuen_the_white_tiger.remains > 15 || talent.flurry_strikes.enabled )",
|
|
["action"] = "strike_of_the_windlord",
|
|
},
|
|
{
|
|
["action"] = "slicing_winds",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.teachings_of_the_monastery.stack = 8 & talent.shadowboxing_treads.enabled",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.the_emperors_capacitor.stack > 19 & combo_strike & talent.power_of_the_thunder_king.enabled & cooldown.invoke_xuen_the_white_tiger.remains > 10",
|
|
["action"] = "crackling_jade_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.flurry_strikes.enabled || talent.xuens_battlegear.enabled & ( cooldown.invoke_xuen_the_white_tiger.remains > 5 & boss || cooldown.invoke_xuen_the_white_tiger.remains > 9 ) || cooldown.invoke_xuen_the_white_tiger.remains > 10 )",
|
|
["action"] = "fists_of_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & buff.wisdom_of_the_wall_flurry.up & chi < 6",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & chi > 5",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.up & buff.chi_energy.stack > 29 & cooldown.fists_of_fury.remains < 5",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.pressure_point.up & cooldown.fists_of_fury.remains > 2",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadowboxing_treads.enabled & talent.courageous_impulse.enabled & combo_strike & buff.bok_proc.stack = 2",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.up",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & talent.crane_vortex.enabled & active_enemies > 2",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & buff.ordered_elements.up",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & chi.deficit >= 2 & ( ! buff.ordered_elements.up || energy.time_to_max <= gcd.max * 3 )",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "jadefire_stomp",
|
|
["criteria"] = "talent.singularly_focused_jade.enabled || talent.jadefire_harmony.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & ! buff.ordered_elements.up & talent.crane_vortex.enabled & active_enemies > 2 & chi > 4",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & ! cooldown.fists_of_fury.remains & chi < 3",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadowboxing_treads.enabled & talent.courageous_impulse.enabled & combo_strike & buff.bok_proc.up",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & ( chi > 3 || energy > 55 )",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & ( buff.ordered_elements.up || buff.bok_proc.up & chi.deficit >= 1 & talent.energy_burst.enabled ) & cooldown.fists_of_fury.remains",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains & ( chi > 2 || energy > 60 || buff.bok_proc.up )",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "jadefire_stomp",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & chi.deficit >= 1",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["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",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ordered_elements.up & ! talent.hit_combo.enabled & cooldown.fists_of_fury.remains",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! combo_strike & chi < 3 & ! cooldown.fists_of_fury.remains",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( target.time_to_die > 14 ) & ! cooldown.invoke_xuen_the_white_tiger.remains & ( chi < 5 & ! talent.ordered_elements.enabled || chi < 3 ) & ( combo_strike || ! talent.hit_combo.enabled )",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.xuen_condition",
|
|
["action"] = "invoke_xuen_the_white_tiger",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.sef_condition",
|
|
["action"] = "storm_earth_and_fire",
|
|
},
|
|
{
|
|
["action"] = "touch_of_karma",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.invoke_xuen_the_white_tiger.remains > 15 || ! talent.invoke_xuen_the_white_tiger.enabled & ( ! talent.storm_earth_and_fire.enabled & ( cooldown.strike_of_the_windlord.ready || ! talent.strike_of_the_windlord.enabled & cooldown.fists_of_fury.ready ) || buff.storm_earth_and_fire.remains > 10 ) || boss & fight_remains < 20",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.invoke_xuen_the_white_tiger.remains > 15 || ! talent.invoke_xuen_the_white_tiger.enabled & ( ! talent.storm_earth_and_fire.enabled & ( cooldown.strike_of_the_windlord.ready || ! talent.strike_of_the_windlord.enabled & cooldown.fists_of_fury.ready ) || buff.storm_earth_and_fire.remains > 10 ) || boss & fight_remains < 20",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.invoke_xuen_the_white_tiger.remains > 15 || ! talent.invoke_xuen_the_white_tiger.enabled & ( ! talent.storm_earth_and_fire.enabled & ( cooldown.strike_of_the_windlord.ready || ! talent.strike_of_the_windlord.enabled & cooldown.fists_of_fury.ready ) || buff.storm_earth_and_fire.remains > 10 ) || boss & fight_remains < 20",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.invoke_xuen_the_white_tiger.remains > 15 || ! talent.invoke_xuen_the_white_tiger.enabled & ( ! talent.storm_earth_and_fire.enabled & ( cooldown.strike_of_the_windlord.ready || ! talent.strike_of_the_windlord.enabled & cooldown.fists_of_fury.ready ) || buff.storm_earth_and_fire.remains > 10 ) || boss & fight_remains < 20",
|
|
["action"] = "berserking",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "algethar_puzzle_box",
|
|
["action"] = "algethar_puzzle_box",
|
|
["criteria"] = "( pet.xuen_the_white_tiger.active || ! talent.invoke_xuen_the_white_tiger.enabled ) & ! buff.storm_earth_and_fire.up || boss & fight_remains < 25",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "erupting_spear_fragment",
|
|
["action"] = "erupting_spear_fragment",
|
|
["criteria"] = "buff.storm_earth_and_fire.up",
|
|
},
|
|
{
|
|
["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"] = "trinket2",
|
|
},
|
|
{
|
|
["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"] = "trinket2",
|
|
},
|
|
},
|
|
["normal_opener"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "chi < 6 & ( combo_strike || ! talent.hit_combo.enabled )",
|
|
["action"] = "tiger_palm",
|
|
["description"] = "normal opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ordered_elements.enabled",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "target.time_to_die > 6 & ( cooldown.rising_sun_kick.remains || active_enemies > 2 || ! talent.ordered_elements.enabled ) & ( prev.invoke_xuen_the_white_tiger || ( talent.celestial_conduit.enabled || ! talent.last_emperors_capacitor.enabled ) & buff.bloodlust.up & ( cooldown.strike_of_the_windlord.remains < 5 || ! talent.strike_of_the_windlord.enabled ) & talent.sequenced_strikes.enabled || buff.invokers_delight.remains > 15 || ( cooldown.strike_of_the_windlord.remains < 5 || ! talent.strike_of_the_windlord.enabled ) & cooldown.storm_earth_and_fire.full_recharge_time < cooldown.invoke_xuen_the_white_tiger.remains & cooldown.fists_of_fury.remains < 5 & ( ! talent.last_emperors_capacitor.enabled || talent.celestial_conduit.enabled ) || talent.last_emperors_capacitor.enabled & buff.the_emperors_capacitor.stack > 17 & cooldown.invoke_xuen_the_white_tiger.remains > cooldown.storm_earth_and_fire.full_recharge_time ) || boss & fight_remains < 30 || buff.invokers_delight.remains > 15 & ( cooldown.rising_sun_kick.remains || active_enemies > 2 || ! talent.ordered_elements.enabled ) || boss & buff.bloodlust.up & ( cooldown.rising_sun_kick.remains || active_enemies > 2 || ! talent.ordered_elements.enabled ) & talent.celestial_conduit.enabled & time > 10",
|
|
["var_name"] = "sef_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( active_enemies = 1 & ( time < 10 || talent.xuens_bond.enabled & talent.celestial_conduit.enabled ) || active_enemies > 1 ) & cooldown.storm_earth_and_fire.ready & ( target.time_to_die > 14 ) & ( 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",
|
|
["var_name"] = "xuen_condition",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250322,
|
|
["warnings"] = "The import for 'default_cleave' required some automated changes.\nLine 4: Converted 'talent.inner_peace' to 'talent.inner_peace.enabled' (1x).\nLine 4: Converted 'talent.inner_peace' to 'talent.inner_peace.enabled' (1x).\nLine 4: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 4: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 4: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 4: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 9: Converted 'talent.xuens_bond' to 'talent.xuens_bond.enabled' (1x).\nLine 9: Converted 'talent.xuens_bond' to 'talent.xuens_bond.enabled' (1x).\nLine 10: Converted 'talent.glory_of_the_dawn' to 'talent.glory_of_the_dawn.enabled' (1x).\nLine 13: Converted 'talent.gale_force' to 'talent.gale_force.enabled' (1x).\nLine 16: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 17: Converted 'talent.revolving_whirl' to 'talent.revolving_whirl.enabled' (1x).\nLine 17: Converted 'talent.revolving_whirl' to 'talent.revolving_whirl.enabled' (1x).\nLine 18: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 20: Converted 'talent.power_of_the_thunder_king' to 'talent.power_of_the_thunder_king.enabled' (1x).\nLine 22: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 23: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 23: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\nLine 23: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\nLine 23: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 23: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\nLine 24: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 26: Converted 'talent.glory_of_the_dawn' to 'talent.glory_of_the_dawn.enabled' (1x).\nLine 26: Converted 'talent.glory_of_the_dawn' to 'talent.glory_of_the_dawn.enabled' (1x).\nLine 26: Converted 'talent.glory_of_the_dawn' to 'talent.glory_of_the_dawn.enabled' (1x).\nLine 27: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 27: Converted 'talent.courageous_impulse' to 'talent.courageous_impulse.enabled' (1x).\nLine 28: Converted 'talent.knowledge_of_the_broken_temple' to 'talent.knowledge_of_the_broken_temple.enabled' (1x).\nLine 28: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 30: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 30: Converted 'talent.courageous_impulse' to 'talent.courageous_impulse.enabled' (1x).\nLine 31: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 34: Converted 'talent.singularly_focused_jade' to 'talent.singularly_focused_jade.enabled' (1x).\nLine 34: Converted 'talent.jadefire_harmony' to 'talent.jadefire_harmony.enabled' (1x).\nLine 35: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 36: Converted 'talent.crane_vortex' to 'talent.crane_vortex.enabled' (1x).\nLine 38: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 43: Converted 'talent.hit_combo' to 'talent.hit_combo.enabled' (1x).\nLine 44: Converted 'talent.hit_combo' to 'talent.hit_combo.enabled' (1x).\n\nThe import for 'aoe_opener' required some automated changes.\nLine 2: 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\nThe import for 'default' required some automated changes.\nLine 2: Converted 'talent.invoke_xuen' to 'talent.invoke_xuen.enabled' (1x).\nLine 6: Converted 'talent.storm_earth_and_fire' to 'talent.storm_earth_and_fire.enabled' (1x).\nLine 8: Converted 'talent.celestial_conduit' to 'talent.celestial_conduit.enabled' (1x).\nLine 15: Unsupported action 'rocket_barrage'.\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 7: Converted 'talent.xuens_bond' to 'talent.xuens_bond.enabled' (1x).\nLine 7: Converted 'talent.xuens_bond' to 'talent.xuens_bond.enabled' (1x).\nLine 9: Converted 'talent.revolving_whirl' to 'talent.revolving_whirl.enabled' (1x).\nLine 9: Converted 'talent.revolving_whirl' to 'talent.revolving_whirl.enabled' (1x).\nLine 10: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 11: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 13: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 14: Converted 'talent.power_of_the_thunder_king' to 'talent.power_of_the_thunder_king.enabled' (1x).\nLine 15: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 15: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\nLine 16: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 20: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 20: Converted 'talent.courageous_impulse' to 'talent.courageous_impulse.enabled' (1x).\nLine 22: Converted 'talent.crane_vortex' to 'talent.crane_vortex.enabled' (1x).\nLine 23: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 25: Converted 'talent.singularly_focused_jade' to 'talent.singularly_focused_jade.enabled' (1x).\nLine 25: Converted 'talent.jadefire_harmony' to 'talent.jadefire_harmony.enabled' (1x).\nLine 26: Converted 'talent.crane_vortex' to 'talent.crane_vortex.enabled' (1x).\nLine 27: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 29: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 29: Converted 'talent.courageous_impulse' to 'talent.courageous_impulse.enabled' (1x).\nLine 31: 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 '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 5: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 5: Converted 'talent.storm_earth_and_fire' to 'talent.storm_earth_and_fire.enabled' (1x).\nLine 5: Converted 'talent.strike_of_the_windlord' to 'talent.strike_of_the_windlord.enabled' (1x).\nLine 6: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 6: Converted 'talent.storm_earth_and_fire' to 'talent.storm_earth_and_fire.enabled' (1x).\nLine 6: Converted 'talent.strike_of_the_windlord' to 'talent.strike_of_the_windlord.enabled' (1x).\nLine 7: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 7: Converted 'talent.storm_earth_and_fire' to 'talent.storm_earth_and_fire.enabled' (1x).\nLine 7: Converted 'talent.strike_of_the_windlord' to 'talent.strike_of_the_windlord.enabled' (1x).\nLine 8: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 8: Converted 'talent.storm_earth_and_fire' to 'talent.storm_earth_and_fire.enabled' (1x).\nLine 8: Converted 'talent.strike_of_the_windlord' to 'talent.strike_of_the_windlord.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_st' required some automated changes.\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 7: Converted 'talent.inner_peace' to 'talent.inner_peace.enabled' (1x).\nLine 7: Converted 'talent.inner_peace' to 'talent.inner_peace.enabled' (1x).\nLine 7: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 7: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 8: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 8: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 11: Converted 'talent.ordered_elements' to 'talent.ordered_elements.enabled' (1x).\nLine 12: Converted 'talent.celestial_conduit' to 'talent.celestial_conduit.enabled' (1x).\nLine 13: Converted 'talent.gale_force' to 'talent.gale_force.enabled' (1x).\nLine 14: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 17: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 19: Converted 'talent.knowledge_of_the_broken_temple' to 'talent.knowledge_of_the_broken_temple.enabled' (1x).\nLine 22: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\nLine 22: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\nLine 22: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\nLine 22: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 24: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 25: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 28: Converted 'talent.memory_of_the_monastery' to 'talent.memory_of_the_monastery.enabled' (1x).\nLine 32: Converted 'talent.courageous_impulse' to 'talent.courageous_impulse.enabled' (1x).\nLine 34: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 35: Converted 'talent.sequenced_strikes' to 'talent.sequenced_strikes.enabled' (1x).\nLine 35: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 35: Converted 'talent.sequenced_strikes' to 'talent.sequenced_strikes.enabled' (1x).\nLine 35: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 36: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 37: Converted 'talent.singularly_focused_jade' to 'talent.singularly_focused_jade.enabled' (1x).\nLine 37: Converted 'talent.jadefire_harmony' to 'talent.jadefire_harmony.enabled' (1x).\nLine 39: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 44: Converted 'talent.hit_combo' to 'talent.hit_combo.enabled' (1x).\nLine 45: Converted 'talent.hit_combo' to 'talent.hit_combo.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 2: Converted 'talent.ordered_elements' to 'talent.ordered_elements.enabled' (1x).\nLine 2: Converted 'talent.celestial_conduit' to 'talent.celestial_conduit.enabled' (1x).\nLine 2: Converted 'talent.last_emperors_capacitor' to 'talent.last_emperors_capacitor.enabled' (1x).\nLine 2: Converted 'talent.strike_of_the_windlord' to 'talent.strike_of_the_windlord.enabled' (1x).\nLine 2: Converted 'talent.sequenced_strikes' to 'talent.sequenced_strikes.enabled' (1x).\nLine 2: Converted 'talent.strike_of_the_windlord' to 'talent.strike_of_the_windlord.enabled' (1x).\nLine 2: Converted 'talent.last_emperors_capacitor' to 'talent.last_emperors_capacitor.enabled' (1x).\nLine 2: Converted 'talent.celestial_conduit' to 'talent.celestial_conduit.enabled' (1x).\nLine 2: Converted 'talent.last_emperors_capacitor' to 'talent.last_emperors_capacitor.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.celestial_conduit' to 'talent.celestial_conduit.enabled' (1x).\nLine 3: Converted 'talent.xuens_bond' to 'talent.xuens_bond.enabled' (1x).\nLine 3: Converted 'talent.celestial_conduit' to 'talent.celestial_conduit.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\nImported 10 action lists.\n",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/monk_windwalker.simc\n## Up to date with SimC: March 11 2025 - 4cd97b4\n\nactions.precombat+=/use_item,name=imperfect_ascendancy_serum\nactions.precombat+=/variable,name=sef_condition,value=target.time_to_die>6&(cooldown.rising_sun_kick.remains||active_enemies>2||!talent.ordered_elements)&(prev.invoke_xuen_the_white_tiger||(talent.celestial_conduit||!talent.last_emperors_capacitor)&buff.bloodlust.up&(cooldown.strike_of_the_windlord.remains<5||!talent.strike_of_the_windlord)&talent.sequenced_strikes||buff.invokers_delight.remains>15||(cooldown.strike_of_the_windlord.remains<5||!talent.strike_of_the_windlord)&cooldown.storm_earth_and_fire.full_recharge_time<cooldown.invoke_xuen_the_white_tiger.remains&cooldown.fists_of_fury.remains<5&(!talent.last_emperors_capacitor||talent.celestial_conduit)||talent.last_emperors_capacitor&buff.the_emperors_capacitor.stack>17&cooldown.invoke_xuen_the_white_tiger.remains>cooldown.storm_earth_and_fire.full_recharge_time)||boss&fight_remains<30||buff.invokers_delight.remains>15&(cooldown.rising_sun_kick.remains||active_enemies>2||!talent.ordered_elements)||boss&buff.bloodlust.up&(cooldown.rising_sun_kick.remains||active_enemies>2||!talent.ordered_elements)&talent.celestial_conduit&time>10\nactions.precombat+=/variable,name=xuen_condition,value=(active_enemies=1&(time<10||talent.xuens_bond&talent.celestial_conduit)||active_enemies>1)&cooldown.storm_earth_and_fire.ready&(target.time_to_die>14)&(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\n\nactions+=/spear_hand_strike\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\n## actions+=/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\nactions+=/call_action_list,name=fallback\nactions+=/arcane_torrent,if=chi<chi.max&energy<55\nactions+=/bag_of_tricks,if=buff.storm_earth_and_fire.down\nactions+=/lights_judgment,if=buff.storm_earth_and_fire.down\nactions+=/haymaker,if=buff.storm_earth_and_fire.down\nactions+=/rocket_barrage,if=buff.storm_earth_and_fire.down\nactions+=/arcane_pulse,if=buff.storm_earth_and_fire.down\n\n# aoe opener\nactions.aoe_opener+=/slicing_winds\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,if=chi<6&(combo_strike||!talent.hit_combo)\n\n## actions.cooldowns=invoke_external_buff,name=power_infusion,if=pet.xuen_the_white_tiger.active&(!buff.bloodlust.up||buff.bloodlust.up&cooldown.strike_of_the_windlord.remains)\n## actions.cooldowns+=/storm_earth_and_fire,if=fight_style.dungeonroute&buff.invokers_delight.remains>15&(active_enemies>2||!talent.ordered_elements||cooldown.rising_sun_kick.remains)\nactions.cooldowns+=/tiger_palm,if=(target.time_to_die>14)&!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,if=variable.xuen_condition\nactions.cooldowns+=/storm_earth_and_fire,if=variable.sef_condition\nactions.cooldowns+=/touch_of_karma\nactions.cooldowns+=/ancestral_call,if=buff.invoke_xuen_the_white_tiger.remains>15||!talent.invoke_xuen_the_white_tiger&(!talent.storm_earth_and_fire&(cooldown.strike_of_the_windlord.ready||!talent.strike_of_the_windlord&cooldown.fists_of_fury.ready)||buff.storm_earth_and_fire.remains>10)||boss&fight_remains<20\nactions.cooldowns+=/blood_fury,if=buff.invoke_xuen_the_white_tiger.remains>15||!talent.invoke_xuen_the_white_tiger&(!talent.storm_earth_and_fire&(cooldown.strike_of_the_windlord.ready||!talent.strike_of_the_windlord&cooldown.fists_of_fury.ready)||buff.storm_earth_and_fire.remains>10)||boss&fight_remains<20\nactions.cooldowns+=/fireblood,if=buff.invoke_xuen_the_white_tiger.remains>15||!talent.invoke_xuen_the_white_tiger&(!talent.storm_earth_and_fire&(cooldown.strike_of_the_windlord.ready||!talent.strike_of_the_windlord&cooldown.fists_of_fury.ready)||buff.storm_earth_and_fire.remains>10)||boss&fight_remains<20\nactions.cooldowns+=/berserking,if=buff.invoke_xuen_the_white_tiger.remains>15||!talent.invoke_xuen_the_white_tiger&(!talent.storm_earth_and_fire&(cooldown.strike_of_the_windlord.ready||!talent.strike_of_the_windlord&cooldown.fists_of_fury.ready)||buff.storm_earth_and_fire.remains>10)||boss&fight_remains<20\n\n# >=5 Targets\nactions.default_aoe+=/tiger_palm,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,if=!buff.heart_of_the_jade_serpent_cdr.up&!buff.heart_of_the_jade_serpent_cdr_celestial.up\nactions.default_aoe+=/spinning_crane_kick,if=combo_strike&((buff.chi_energy.stack>29&cooldown.fists_of_fury.remains<5)||(buff.dance_of_chiji.stack=2))\nactions.default_aoe+=/whirling_dragon_punch,if=buff.heart_of_the_jade_serpent_cdr.up&buff.dance_of_chiji.stack<2\nactions.default_aoe+=/whirling_dragon_punch,if=buff.dance_of_chiji.stack<2\nactions.default_aoe+=/slicing_winds,if=buff.heart_of_the_jade_serpent_cdr.up||buff.heart_of_the_jade_serpent_cdr_celestial.up\nactions.default_aoe+=/celestial_conduit,if=buff.storm_earth_and_fire.up&cooldown.strike_of_the_windlord.remains&(!buff.heart_of_the_jade_serpent_cdr.up||debuff.gale_force.remains<5)&(talent.xuens_bond||!talent.xuens_bond&buff.invokers_delight.up)||boss&fight_remains<15\nactions.default_aoe+=/rising_sun_kick,if=cooldown.whirling_dragon_punch.remains<2&cooldown.fists_of_fury.remains>1&buff.dance_of_chiji.stack<2||!buff.storm_earth_and_fire.up&buff.pressure_point.up\nactions.default_aoe+=/whirling_dragon_punch,if=!talent.revolving_whirl||talent.revolving_whirl&buff.dance_of_chiji.stack<2&active_enemies>2\nactions.default_aoe+=/blackout_kick,if=combo_strike&buff.bok_proc.up&chi<2&talent.energy_burst&energy<55\nactions.default_aoe+=/strike_of_the_windlord,if=(time>5||buff.invokers_delight.up&buff.storm_earth_and_fire.up)&(cooldown.invoke_xuen_the_white_tiger.remains>15||talent.flurry_strikes)\nactions.default_aoe+=/slicing_winds\nactions.default_aoe+=/blackout_kick,if=buff.teachings_of_the_monastery.stack=8&talent.shadowboxing_treads\nactions.default_aoe+=/crackling_jade_lightning,if=buff.the_emperors_capacitor.stack>19&combo_strike&talent.power_of_the_thunder_king&cooldown.invoke_xuen_the_white_tiger.remains>10\nactions.default_aoe+=/fists_of_fury,if=(talent.flurry_strikes||talent.xuens_battlegear&(cooldown.invoke_xuen_the_white_tiger.remains>5&boss||cooldown.invoke_xuen_the_white_tiger.remains>9)||cooldown.invoke_xuen_the_white_tiger.remains>10)\nactions.default_aoe+=/tiger_palm,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,if=combo_strike&chi>5\nactions.default_aoe+=/spinning_crane_kick,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,if=buff.pressure_point.up&cooldown.fists_of_fury.remains>2\nactions.default_aoe+=/blackout_kick,if=talent.shadowboxing_treads&talent.courageous_impulse&combo_strike&buff.bok_proc.stack=2\nactions.default_aoe+=/spinning_crane_kick,if=combo_strike&buff.dance_of_chiji.up\nactions.default_aoe+=/spinning_crane_kick,if=combo_strike&buff.ordered_elements.up&talent.crane_vortex&active_enemies>2\nactions.default_aoe+=/tiger_palm,if=combo_strike&energy.time_to_max<=gcd.max*3&talent.flurry_strikes&buff.ordered_elements.up\nactions.default_aoe+=/tiger_palm,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,if=combo_strike&!buff.ordered_elements.up&talent.crane_vortex&active_enemies>2&chi>4\nactions.default_aoe+=/blackout_kick,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,if=combo_strike&!cooldown.fists_of_fury.remains&chi<3\nactions.default_aoe+=/blackout_kick,if=talent.shadowboxing_treads&talent.courageous_impulse&combo_strike&buff.bok_proc.up\nactions.default_aoe+=/spinning_crane_kick,if=combo_strike&(chi>3||energy>55)\nactions.default_aoe+=/blackout_kick,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,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,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\nactions.default_aoe+=/blackout_kick,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+=/spinning_crane_kick,if=buff.dance_of_chiji.stack=2&combo_strike\nactions.default_cleave+=/rising_sun_kick,if=(buff.pressure_point.up&active_enemies<4&cooldown.fists_of_fury.remains>4)||(cooldown.whirling_dragon_punch.remains<2&cooldown.fists_of_fury.remains>1&buff.dance_of_chiji.stack<2)\nactions.default_cleave+=/spinning_crane_kick,if=combo_strike&buff.dance_of_chiji.stack=2&active_enemies>3\nactions.default_cleave+=/tiger_palm,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,if=!buff.heart_of_the_jade_serpent_cdr.up&!buff.heart_of_the_jade_serpent_cdr_celestial.up\nactions.default_cleave+=/whirling_dragon_punch,if=buff.heart_of_the_jade_serpent_cdr.up&buff.dance_of_chiji.stack<2\nactions.default_cleave+=/whirling_dragon_punch,if=buff.dance_of_chiji.stack<2\nactions.default_cleave+=/slicing_winds,if=buff.heart_of_the_jade_serpent_cdr.up||buff.heart_of_the_jade_serpent_cdr_celestial.up\nactions.default_cleave+=/celestial_conduit,if=buff.storm_earth_and_fire.up&cooldown.strike_of_the_windlord.remains&(!buff.heart_of_the_jade_serpent_cdr.up||debuff.gale_force.remains<5)&(talent.xuens_bond||!talent.xuens_bond&buff.invokers_delight.up)||boss&fight_remains<15\nactions.default_cleave+=/rising_sun_kick,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&cooldown.fists_of_fury.remains&(talent.glory_of_the_dawn||active_enemies<3)\nactions.default_cleave+=/fists_of_fury,if=buff.heart_of_the_jade_serpent_cdr_celestial.up\nactions.default_cleave+=/whirling_dragon_punch,if=buff.heart_of_the_jade_serpent_cdr_celestial.up\nactions.default_cleave+=/strike_of_the_windlord,if=talent.gale_force&buff.invokers_delight.up&(buff.bloodlust.up||!buff.heart_of_the_jade_serpent_cdr_celestial.up)\nactions.default_cleave+=/fists_of_fury,if=buff.power_infusion.up&buff.bloodlust.up\nactions.default_cleave+=/rising_sun_kick,if=buff.power_infusion.up&buff.bloodlust.up&active_enemies<3\nactions.default_cleave+=/blackout_kick,if=buff.teachings_of_the_monastery.stack=8&(active_enemies<3||talent.shadowboxing_treads)\nactions.default_cleave+=/whirling_dragon_punch,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,if=time>5&(cooldown.invoke_xuen_the_white_tiger.remains>15||talent.flurry_strikes)&(cooldown.fists_of_fury.remains<2||cooldown.celestial_conduit.remains<10)\nactions.default_cleave+=/slicing_winds\nactions.default_cleave+=/crackling_jade_lightning,if=buff.the_emperors_capacitor.stack>19&combo_strike&talent.power_of_the_thunder_king&cooldown.invoke_xuen_the_white_tiger.remains>10\nactions.default_cleave+=/spinning_crane_kick,if=combo_strike&buff.dance_of_chiji.stack=2\nactions.default_cleave+=/tiger_palm,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,if=(talent.flurry_strikes||talent.xuens_battlegear||!talent.xuens_battlegear&(cooldown.strike_of_the_windlord.remains>1||buff.heart_of_the_jade_serpent_cdr.up||buff.heart_of_the_jade_serpent_cdr_celestial.up))&(talent.flurry_strikes||talent.xuens_battlegear&(cooldown.invoke_xuen_the_white_tiger.remains>5&boss||cooldown.invoke_xuen_the_white_tiger.remains>9)||cooldown.invoke_xuen_the_white_tiger.remains>10)\nactions.default_cleave+=/tiger_palm,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,if=combo_strike&buff.dance_of_chiji.up&buff.chi_energy.stack>29\nactions.default_cleave+=/rising_sun_kick,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,if=talent.shadowboxing_treads&talent.courageous_impulse&combo_strike&buff.bok_proc.stack=2\nactions.default_cleave+=/blackout_kick,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,if=combo_strike&buff.dance_of_chiji.up\nactions.default_cleave+=/blackout_kick,if=talent.shadowboxing_treads&talent.courageous_impulse&combo_strike&buff.bok_proc.up\nactions.default_cleave+=/tiger_palm,if=combo_strike&energy.time_to_max<=gcd.max*3&talent.flurry_strikes&active_enemies<5\nactions.default_cleave+=/tiger_palm,if=combo_strike&chi.deficit>=2&(!buff.ordered_elements.up||energy.time_to_max<=gcd.max*3)\nactions.default_cleave+=/blackout_kick,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,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,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,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,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,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,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+=/fists_of_fury,if=buff.heart_of_the_jade_serpent_cdr_celestial.up||buff.heart_of_the_jade_serpent_cdr.up\nactions.default_st+=/rising_sun_kick,if=buff.pressure_point.up&!buff.heart_of_the_jade_serpent_cdr.up&buff.heart_of_the_jade_serpent_cdr_celestial.up||buff.invokers_delight.up||buff.bloodlust.up||buff.pressure_point.up&cooldown.fists_of_fury.remains||buff.power_infusion.up\nactions.default_st+=/whirling_dragon_punch,if=!buff.heart_of_the_jade_serpent_cdr_celestial.up&!buff.dance_of_chiji.stack=2\nactions.default_st+=/slicing_winds,if=buff.heart_of_the_jade_serpent_cdr.up||buff.heart_of_the_jade_serpent_cdr_celestial.up\nactions.default_st+=/celestial_conduit,if=buff.storm_earth_and_fire.up&(!buff.heart_of_the_jade_serpent_cdr.up||debuff.gale_force.remains<5)&cooldown.strike_of_the_windlord.remains&(talent.xuens_bond||!talent.xuens_bond&buff.invokers_delight.up)||boss&fight_remains<15\nactions.default_st+=/spinning_crane_kick,if=buff.dance_of_chiji.stack=2&combo_strike\nactions.default_st+=/tiger_palm,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\n# [Hekili] This Tiger Palm entry specifically allows Hit Combo breakage if you don't have enough Chi for Fists of Fury.\nactions.default_st+=/tiger_palm,if=(talent.energy_burst&!buff.bok_proc.up||!talent.energy_burst)&!buff.ordered_elements.up&!cooldown.fists_of_fury.remains&chi<3\nactions.default_st+=/tiger_palm,if=(prev.strike_of_the_windlord||!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,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.celestial_conduit&!buff.invokers_delight.up&!buff.heart_of_the_jade_serpent_cdr_celestial.up&cooldown.fists_of_fury.remains<5&cooldown.invoke_xuen_the_white_tiger.remains>15||boss&fight_remains<12\nactions.default_st+=/strike_of_the_windlord,if=talent.gale_force&buff.invokers_delight.up&(buff.bloodlust.up||!buff.heart_of_the_jade_serpent_cdr_celestial.up)\nactions.default_st+=/strike_of_the_windlord,if=time>5&talent.flurry_strikes\nactions.default_st+=/fists_of_fury,if=buff.power_infusion.up&buff.bloodlust.up&time>5\nactions.default_st+=/blackout_kick,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+=/tiger_palm,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,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+=/crackling_jade_lightning,if=buff.the_emperors_capacitor.stack>19&!buff.heart_of_the_jade_serpent_cdr.up&!buff.heart_of_the_jade_serpent_cdr_celestial.up&combo_strike&cooldown.invoke_xuen_the_white_tiger.remains>10||buff.the_emperors_capacitor.stack>15&!buff.heart_of_the_jade_serpent_cdr.up&!buff.heart_of_the_jade_serpent_cdr_celestial.up&combo_strike&(boss||target.time_to_die>20)&cooldown.invoke_xuen_the_white_tiger.remains<10&cooldown.invoke_xuen_the_white_tiger.remains>2\nactions.default_st+=/slicing_winds,if=target.time_to_die>10\nactions.default_st+=/fists_of_fury,if=(talent.xuens_battlegear||!talent.xuens_battlegear&(cooldown.strike_of_the_windlord.remains>1||buff.heart_of_the_jade_serpent_cdr.up||buff.heart_of_the_jade_serpent_cdr_celestial.up))&(talent.xuens_battlegear&cooldown.invoke_xuen_the_white_tiger.remains>5||cooldown.invoke_xuen_the_white_tiger.remains>10)&(!buff.invokers_delight.up||buff.invokers_delight.up&cooldown.strike_of_the_windlord.remains>4&cooldown.celestial_conduit.remains)||fight_remains<5||talent.flurry_strikes\nactions.default_st+=/rising_sun_kick,if=chi>4||chi>2&energy>50||cooldown.fists_of_fury.remains>2\nactions.default_st+=/tiger_palm,if=combo_strike&energy.time_to_max<=gcd.max*3&talent.flurry_strikes&buff.wisdom_of_the_wall_flurry.up\nactions.default_st+=/blackout_kick,if=combo_strike&talent.energy_burst&buff.bok_proc.up&chi<5&(buff.heart_of_the_jade_serpent_cdr.up||buff.heart_of_the_jade_serpent_cdr_celestial.up)\nactions.default_st+=/spinning_crane_kick,if=combo_strike&buff.bloodlust.up&buff.heart_of_the_jade_serpent_cdr.up&buff.dance_of_chiji.up\nactions.default_st+=/tiger_palm,if=combo_strike&chi.deficit>=2&energy.time_to_max<=gcd.max*3\nactions.default_st+=/blackout_kick,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+=/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+=/spinning_crane_kick,if=buff.dance_of_chiji.stack=2&combo_strike\nactions.default_st+=/blackout_kick,if=talent.courageous_impulse&combo_strike&buff.bok_proc.stack=2\nactions.default_st+=/blackout_kick,if=combo_strike&buff.ordered_elements.up&cooldown.rising_sun_kick.remains>1&cooldown.fists_of_fury.remains>2\nactions.default_st+=/tiger_palm,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,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,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+=/blackout_kick,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,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,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\n\n# Fallback\nactions.fallback=spinning_crane_kick,if=chi>5&combo_strike\nactions.fallback+=/blackout_kick,if=combo_strike&chi>3\nactions.fallback+=/tiger_palm,if=combo_strike&chi>5\n\n# normal opener\nactions.normal_opener+=/tiger_palm,if=chi<6&(combo_strike||!talent.hit_combo)\nactions.normal_opener+=/rising_sun_kick,if=talent.ordered_elements\n\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",
|
|
["basedOn"] = "Windwalker",
|
|
["author"] = "SimC",
|
|
},
|
|
["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",
|
|
},
|
|
["Mistweaver"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20250329,
|
|
["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,
|
|
["criteria"] = "time_to_max_charges <= gcd.max",
|
|
["action"] = "renewing_mist",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.tea_up",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "focus_tea",
|
|
},
|
|
{
|
|
["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,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.tea_of_plenty_rsk.up || buff.tea_of_plenty_em.up || buff.tea_of_plenty_eh.up || buff.tea_of_serenity_em.up || buff.tea_of_serenity_rm.up || buff.tea_of_serenity_v.up || buff.thunder_focus_tea.up",
|
|
["var_name"] = "tea_up",
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["action"] = "thunder_focus_tea",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.jade_empowerment.up & buff.jadefire_teachings.up",
|
|
["action"] = "crackling_jade_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.zen_pulse.up",
|
|
["action"] = "vivify",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "settings.aoe_rsk",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "settings.aoe_rsk",
|
|
["action"] = "rushing_wind_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.celestial_conduit.enabled & ! talent.xuens_guidance.enabled ) || active_enemies >= 4",
|
|
["action"] = "spinning_crane_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,
|
|
},
|
|
},
|
|
["crane"] = {
|
|
{
|
|
["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,
|
|
},
|
|
},
|
|
["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,
|
|
},
|
|
},
|
|
["focus_tea"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid || buff.tea_of_serenity_rm.up",
|
|
["action"] = "renewing_mist",
|
|
},
|
|
{
|
|
["action"] = "rising_sun_kick",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tea_of_plenty_eh.up",
|
|
["action"] = "expel_harm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tea_of_serenity_v.up",
|
|
["action"] = "vivify",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tea_of_serenity_em.up || buff.tea_of_plenty_em.up",
|
|
["action"] = "enveloping_mist",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250329,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 13: Converted 'talent.awakened_jadefire' to 'talent.awakened_jadefire.enabled' (1x).\nLine 13: Converted 'talent.jadefire_teachings' to 'talent.jadefire_teachings.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 6: Converted 'talent.celestial_conduit' to 'talent.celestial_conduit.enabled' (1x).\nLine 6: Converted 'talent.xuens_guidance' to 'talent.xuens_guidance.enabled' (1x).\nLine 8: Converted 'talent.rushing_wind_kick' to 'talent.rushing_wind_kick.enabled' (1x).\n\nThe import for 'crane' required some automated changes.\nLine 1: Converted 'talent.ancient_teachings' to 'talent.ancient_teachings.enabled' (1x).\nLine 2: Unsupported action 'essence_font'.\nLine 2: Converted 'talent.ancient_teachings' to 'talent.ancient_teachings.enabled' (1x).\nLine 3: Converted 'talent.ancient_teachings' to 'talent.ancient_teachings.enabled' (1x).\nLine 7: Converted 'talent.awakened_jadefire' to 'talent.awakened_jadefire.enabled' (1x).\nLine 7: Converted 'talent.rushing_wind_kick' to 'talent.rushing_wind_kick.enabled' (1x).\nLine 8: Converted 'talent.ancient_concordance' to 'talent.ancient_concordance.enabled' (1x).\nLine 8: Converted 'talent.awakened_jadefire' to 'talent.awakened_jadefire.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\nImported 6 action lists.\n",
|
|
["author"] = "Aikanaka",
|
|
["profile"] = "actions.precombat+=/potion\nactions.precombat+=/chi_burst\nactions.precombat+=/variable,name=tea_up,value=buff.tea_of_plenty_rsk.up||buff.tea_of_plenty_em.up||buff.tea_of_plenty_eh.up||buff.tea_of_serenity_em.up||buff.tea_of_serenity_rm.up||buff.tea_of_serenity_v.up||buff.thunder_focus_tea.up\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+=/renewing_mist,if=time_to_max_charges<=gcd.max\nactions+=/call_action_list,name=focus_tea,if=variable.tea_up\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\n\nactions.focus_tea+=/renewing_mist,if=raid||buff.tea_of_serenity_rm.up\nactions.focus_tea+=/rising_sun_kick\n## only use these 3 if their rng buffs are up, don't spend real focus tea\nactions.focus_tea+=/expel_harm,if=buff.tea_of_plenty_eh.up\nactions.focus_tea+=/vivify,if=buff.tea_of_serenity_v.up\nactions.focus_tea+=/enveloping_mist,if=buff.tea_of_serenity_em.up||buff.tea_of_plenty_em.up\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\nactions.aoe+=/crackling_jade_lightning,if=buff.jade_empowerment.up&buff.jadefire_teachings.up\nactions.aoe+=/vivify,if=buff.zen_pulse.up\nactions.aoe+=/rising_sun_kick,if=settings.aoe_rsk\nactions.aoe+=/rushing_wind_kick,if=settings.aoe_rsk\nactions.aoe+=/spinning_crane_kick,if=(talent.celestial_conduit&!talent.xuens_guidance)||active_enemies>=4\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\n\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",
|
|
},
|
|
},
|
|
["runOnce"] = {
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["removeOldThrottles_20241115"] = true,
|
|
["resetAllPotions_20201209"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["resetGlobalCooldownSync_20210403"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_269"] = true,
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_268"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
["forceEnableEnhancedRecheckBoomkin_20210712"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_270"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
},
|
|
},
|
|
["Quillten - Deathwing"] = {
|
|
["runOnce"] = {
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["removeOldThrottles_20241115"] = true,
|
|
["resetAllPotions_20201209"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["resetGlobalCooldownSync_20210403"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_259"] = true,
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_260"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_261"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["forceEnableEnhancedRecheckBoomkin_20210712"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
},
|
|
["specs"] = {
|
|
[260] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["vanish_charges_reserved"] = 0,
|
|
["dirty_gouge"] = false,
|
|
["no_rtb_in_dance_cto"] = true,
|
|
["mfd_waste"] = true,
|
|
["mfd_points"] = 3,
|
|
["use_ld_opener"] = false,
|
|
["ambush_anyway"] = false,
|
|
["solo_vanish"] = true,
|
|
["allow_shadowmeld"] = false,
|
|
["sinister_clash"] = -0.5,
|
|
["check_blade_rush_range"] = true,
|
|
},
|
|
},
|
|
[261] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["mfd_waste"] = true,
|
|
["mfd_points"] = 3,
|
|
["solo_vanish"] = true,
|
|
["priority_rotation"] = false,
|
|
["vanish_charges_reserved"] = 0,
|
|
["rupture_duration"] = 12,
|
|
},
|
|
},
|
|
[259] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["vanish_charges_reserved"] = 0,
|
|
["envenom_pool_pct"] = 50,
|
|
["mfd_waste"] = true,
|
|
["mfd_points"] = 3,
|
|
["fok_critical_cp_prediction"] = "predict",
|
|
["solo_vanish"] = true,
|
|
["priority_rotation"] = false,
|
|
["max_garrote_spread"] = 10,
|
|
["cooldowns_ttd"] = 0,
|
|
},
|
|
},
|
|
[102] = {
|
|
["enhancedRecheck"] = true,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Outlaw"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/rogue_outlaw.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250425,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-04-25: SimC Update\n2025-04-12: SimC Update\n2025-04-06: SimC Update - No more Coup de Grace Bug\n2025-03-23: SimC Update\n2025-03-15: SimC update\n2025-01-02: Apply missed SimC updates (thanks IIeTpoc).\n2024-10-23: 11.0.5\n2024-09-08, 09-10, 09-15: SimC update\n2024-09-03: Poisons\n2024-08-25, 09-01: SimC rtb_reroll tweak\n2024-08-22: Respect LD Opener setting\n2024-08-15: Major revisions from SimC\n2024-08-09: Update finisher conditions from SimC\n2024-08-06: Respect Vanish CD when considering BtE with Crackshot\n2024-07-28: The War Within",
|
|
["lists"] = {
|
|
["finish"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "pool_resource",
|
|
["description"] = "Finishers",
|
|
["for_next"] = 1,
|
|
},
|
|
{
|
|
["action"] = "killing_spree",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "coup_de_grace",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "between_the_eyes",
|
|
["description"] = "Use Between the Eyes outside of Stealth to maintain the buff, or with Ruthless Precision active, or to proc Greenskins Wickers if not active. Trickster builds can also send BtE on cooldown.",
|
|
["criteria"] = "( buff.ruthless_precision.up || buff.between_the_eyes.remains < 4 || ! talent.mean_streak.enabled ) & ( ! buff.greenskins_wickers.up || ! talent.greenskins_wickers.enabled )",
|
|
},
|
|
{
|
|
["action"] = "cold_blood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "dispatch",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["vanish_usage_off_meta"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vanish",
|
|
["description"] = "Flex Vanish usage for builds lacking one of the mandatory stealth talents. APL support for these builds is considered limited.",
|
|
["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,
|
|
["criteria"] = "! talent.underhanded_upper_hand.enabled & talent.crackshot.enabled & variable.finish_condition",
|
|
["action"] = "vanish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "vanish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["action"] = "vanish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "vanish",
|
|
},
|
|
},
|
|
["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"] = "( 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,
|
|
["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 & talent.keep_it_rolling.enabled & talent.loaded_dice.enabled & buff.adrenaline_rush.down",
|
|
["description"] = "Builds with Keep it Rolling+Loaded Dice 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.adrenaline_rush.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,
|
|
["action"] = "cold_blood",
|
|
["description"] = "Stealth",
|
|
["criteria"] = "variable.finish_condition",
|
|
},
|
|
{
|
|
["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 1 CP, 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"] = "Cooldowns Maintain Adrenaline Rush if it is not active. Use at low CPs with Improved AR.",
|
|
["criteria"] = "! buff.adrenaline_rush.up & ( ! variable.finish_condition || ! talent.improved_adrenaline_rush.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "adrenaline_rush",
|
|
["description"] = "If using Improved AR, recast AR if it is already active at low CPs.",
|
|
["criteria"] = "buff.adrenaline_rush.up & talent.improved_adrenaline_rush.enabled & combo_points <= 2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ghostly_strike",
|
|
["description"] = "High priority Ghostly Strike as it is off-gcd. 1 FTH builds prefer to not use it at max CPs.",
|
|
["criteria"] = "combo_points < cp_max_spend || talent.fan_the_hammer.rank > 1",
|
|
},
|
|
{
|
|
["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"] = "keep_it_rolling",
|
|
["description"] = "With a natural 5 buff roll, use Keep it Rolling when you obtain the remaining buff from Count the Odds.",
|
|
["criteria"] = "rtb_buffs_normal >= 5 & rtb_buffs = 6",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "keep_it_rolling",
|
|
["description"] = "Without a natural 5 buff roll, use Keep it Rolling at any 4+ buffs.",
|
|
["criteria"] = "rtb_buffs >= 4 & rtb_buffs_normal <= 2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "keep_it_rolling",
|
|
["description"] = "Without a natural 5 buff roll, use Keep it Rolling at 3 buffs if you have the combination of Ruthless Precision + Broadside + True Bearing.",
|
|
["criteria"] = "rtb_buffs >= 3 & rtb_buffs_normal <= 2 & buff.broadside.up & buff.ruthless_precision.up & buff.true_bearing.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( buff.broadside.remains > 39 ) + ( buff.ruthless_precision.remains > 39 ) + ( buff.true_bearing.remains > 39 ) + ( buff.grand_melee.remains > 39 ) + ( buff.buried_treasure.remains > 39 ) + ( buff.skull_and_crossbones.remains > 39 )",
|
|
["description"] = "Variable that counts how many buffs are ahead of RtB's pandemic range, which is only possible by using KIR.",
|
|
["var_name"] = "buffs_above_pandemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "roll_the_bones",
|
|
["description"] = "Maintain Roll the Bones: cast without any buffs.",
|
|
["criteria"] = "rtb_buffs = 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "roll_the_bones",
|
|
["description"] = "With TWW2 set, recast Roll the Bones if we will roll away between 0-1 buffs. If KIR was recently used on a natural 5 buff, then wait until all buffs are below around 41s remaining.",
|
|
["criteria"] = "set_bonus.tww2_4pc & rtb_buffs_will_lose <= 1 & ( variable.buffs_above_pandemic < 5 || rtb_buffs_max_remains < 42 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "roll_the_bones",
|
|
["description"] = "With TWW2 set, recast Roll the Bones with at most 2 buffs active regardless of duration. Supercharger builds will also roll if we will lose between 0-4 buffs, but KIR Supercharger builds wait until they are all below 11s remaining.",
|
|
["criteria"] = "set_bonus.tww2_4pc & ( rtb_buffs <= 2 || ( rtb_buffs_max_remains < 11 || ! talent.keep_it_rolling.enabled ) & rtb_buffs_will_lose < 5 & talent.supercharger.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "roll_the_bones",
|
|
["description"] = "Without TWW2 set or Sleight of Hand, recast Roll the Bones to override 1 buff into 2 buffs with Loaded Dice, or reroll any 2 buffs with Loaded Dice+Supercharger. Hidden Opportunity builds can also reroll 2 buffs with Loaded Dice to try for BS/RP/TB.",
|
|
["criteria"] = "! set_bonus.tww2_4pc & ( rtb_buffs_will_lose <= buff.loaded_dice.up || talent.supercharger.enabled & buff.loaded_dice.up & rtb_buffs <= 2 || talent.hidden_opportunity.enabled & buff.loaded_dice.up & rtb_buffs <= 2 & ! buff.broadside.up & ! buff.ruthless_precision.up & ! buff.true_bearing.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["description"] = "Trinkets that should not be used during stealth and have higher priority than entering stealth.",
|
|
["criteria"] = "! stealthed.all || boss & fight_remains <= 22",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mad_queens_mandate",
|
|
["criteria"] = "! stealthed.all || boss & fight_remains <= 5",
|
|
["name"] = "mad_queens_mandate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vanish",
|
|
["description"] = "If necessary, standard builds prioritize using Vanish at any CP to prevent Adrenaline Rush downtime.",
|
|
["criteria"] = "talent.underhanded_upper_hand.enabled & talent.subterfuge.enabled & buff.adrenaline_rush.up & ! stealthed.all & buff.adrenaline_rush.remains < 2 & cooldown.adrenaline_rush.remains > 30",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["description"] = "If not at risk of losing Adrenaline Rush, run finishers to use Killing Spree or Coup de Grace as a higher priority than Vanish.",
|
|
["criteria"] = "! stealthed.all & ( cooldown.killing_spree.ready & talent.killing_spree.enabled || buff.escalating_blade.stack >= 4 ) & variable.finish_condition",
|
|
["list_name"] = "finish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "If not at risk of losing Adrenaline Rush, call flexible Vanish rules to be used at finisher CPs.",
|
|
["criteria"] = "! stealthed.all & talent.crackshot.enabled & talent.underhanded_upper_hand.enabled & talent.subterfuge.enabled & buff.adrenaline_rush.up & variable.finish_condition",
|
|
["list_name"] = "vanish_usage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! stealthed.all & ( ! talent.underhanded_upper_hand.enabled || ! talent.crackshot.enabled || ! talent.subterfuge.enabled )",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "vanish_usage_off_meta",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadowmeld",
|
|
["description"] = "Generic catch-all for Shadowmeld. Technically, usage in DungeonSlice or DungeonRoute sims could mirror Vanish usage on packs.",
|
|
["criteria"] = "variable.finish_condition & ! cooldown.vanish.ready & ! stealthed.all",
|
|
},
|
|
{
|
|
["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,
|
|
["name"] = "junkmaestros_mega_magnet",
|
|
["description"] = "Let the magnet trinket stack up just so it does not disrupt a 2nd on-use trinket.",
|
|
["criteria"] = "buff.between_the_eyes.up & buff.junkmaestros_mega_magnet.stack > 25 || boss & fight_remains < 5",
|
|
["action"] = "junkmaestros_mega_magnet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.between_the_eyes.up || trinket.t1.has_stat.any_dps || boss & fight_remains <= 20",
|
|
["description"] = "Default conditions for usable items.",
|
|
["slots"] = "trinket1",
|
|
["action"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "buff.between_the_eyes.up || trinket.t2.has_stat.any_dps || boss & fight_remains <= 20",
|
|
["slots"] = "trinket2",
|
|
},
|
|
},
|
|
["vanish_usage"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vanish",
|
|
["description"] = "Flex Vanish usage for standard builds. Without Killing Spree, attempt to hold Vanish for when BtE is on cooldown and Ruthless Precision is active. Also with Keep it Rolling, hold Vanish if we haven't done the first roll after KIR yet.",
|
|
["criteria"] = "! talent.killing_spree.enabled & ! cooldown.between_the_eyes.ready & buff.ruthless_precision.remains > 4 & ( cooldown.keep_it_rolling.remains > 150 & rtb_buffs_normal > 0 || ! talent.keep_it_rolling.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vanish",
|
|
["description"] = "Supercharger builds that do not use Killing Spree should also Vanish if Supercharger becomes active.",
|
|
["criteria"] = "! talent.killing_spree.enabled & supercharge_1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vanish",
|
|
["description"] = "Builds with Killing Spree can freely Vanish if KS is not up soon.",
|
|
["criteria"] = "cooldown.killing_spree.remains > 30",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vanish",
|
|
["description"] = "Vanish if about to cap on charges or sim duration is ending.",
|
|
["criteria"] = "cooldown.vanish.full_recharge_time < 15 || boss & fight_remains < 8",
|
|
},
|
|
},
|
|
["build"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.blade_flurry.ready & talent.deft_maneuvers.enabled & spell_targets >= 5 & ( combo_points <= 2 - buff.broadside.up || ! buff.adrenaline_rush.up )",
|
|
["description"] = "Builders With Deft Maneuvers, build CPs with Blade Flurry at 5+ targets, only at 2 CPs or lower (1 CP with Broadside) unless AR isn't active.",
|
|
["var_name"] = "deft_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ambush",
|
|
["description"] = "High priority Ambush for Hidden Opportunity builds.",
|
|
["criteria"] = "talent.hidden_opportunity.enabled & buff.audacity.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "sinister_strike",
|
|
["description"] = "Trickster builds should prioritize Sinister Strike during Disorienting Strikes. HO builds prefer to do this only at 3 Escalating Blade stacks and not at max Opportunity stacks.",
|
|
["criteria"] = "buff.disorienting_strikes.up & ! stealthed.all & ( buff.escalating_blade.stack > 2 & buff.opportunity.stack < buff.opportunity.max_stack || ! talent.hidden_opportunity.enabled ) & buff.escalating_blade.stack < 4",
|
|
},
|
|
{
|
|
["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"] = "blade_flurry",
|
|
["description"] = "With Fatebound or 1 rank in Fan the Hammer, and without Hidden Opportunity, build CP with Blade Flurry as a higher priority than Opportunity procs.",
|
|
["criteria"] = "variable.deft_condition & ( talent.fan_the_hammer.rank = 1 || ! talent.nimble_flurry.enabled & ! talent.surprising_strikes.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "pistol_shot",
|
|
["description"] = "With 2 ranks in Fan the Hammer, consume Opportunity as if at max stacks or if it will expire.",
|
|
["criteria"] = "talent.fan_the_hammer.rank = 2 & 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"] = "blade_flurry",
|
|
["description"] = "With Hidden Opportunity or 2 ranks in Fan the Hammer, building CPs with Blade Flurry is lower priority than Opportunity procs and Ambush.",
|
|
["criteria"] = "variable.deft_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "coup_de_grace",
|
|
["description"] = "Use Coup de Grace at low CP if Sinister Strike would otherwise be used.",
|
|
["criteria"] = "! stealthed.all",
|
|
},
|
|
{
|
|
["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"] = 20250425,
|
|
["warnings"] = "The import for 'vanish_usage' required some automated changes.\nLine 2: Converted 'buff.supercharge_1.up' to 'supercharge_1' (1x).\nThe following auras were used in the action list but were not found in the addon database:\n - supercharge_1\n\nThe import for 'cds' required some automated changes.\nLine 4: Converted 'trinket.1.is.scroll_of_momentum' to 'trinket.t1.is.scroll_of_momentum' (1x).\nLine 4: Converted 'trinket.2.is.scroll_of_momentum' to 'trinket.t2.is.scroll_of_momentum' (1x).\nLine 28: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 29: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\n\nImported 8 action lists.\n",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/rogue_outlaw.simc\n## Up to date with SimC: April 16 2025 - b23bf5e\n\nactions.precombat+=/apply_poison\nactions.precombat+=/use_item,name=imperfect_ascendancy_serum\nactions.precombat+=/stealth,precombat_seconds=2\n# Builds with Keep it Rolling+Loaded Dice 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&talent.keep_it_rolling&talent.loaded_dice&buff.adrenaline_rush.down\nactions.precombat+=/roll_the_bones,precombat_seconds=2,if=buff.adrenaline_rush.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\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))\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 With Deft Maneuvers, build CPs with Blade Flurry at 5+ targets, only at 2 CPs or lower (1 CP with Broadside) unless AR isn't active.\nactions.build+=/variable,name=deft_condition,value=cooldown.blade_flurry.ready&talent.deft_maneuvers&spell_targets>=5&(combo_points<=2-buff.broadside.up||!buff.adrenaline_rush.up)\n# High priority Ambush for Hidden Opportunity builds.\nactions.build+=/ambush,if=talent.hidden_opportunity&buff.audacity.up\n# Trickster builds should prioritize Sinister Strike during Disorienting Strikes. HO builds prefer to do this only at 3 Escalating Blade stacks and not at max Opportunity stacks.\nactions.build+=/sinister_strike,if=buff.disorienting_strikes.up&!stealthed.all&(buff.escalating_blade.stack>2&buff.opportunity.stack<buff.opportunity.max_stack||!talent.hidden_opportunity)&buff.escalating_blade.stack<4\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 Fatebound or 1 rank in Fan the Hammer, and without Hidden Opportunity, build CP with Blade Flurry as a higher priority than Opportunity procs.\nactions.build+=/blade_flurry,if=variable.deft_condition&(talent.fan_the_hammer.rank=1||!talent.nimble_flurry&!talent.surprising_strikes)\n# With 2 ranks in Fan the Hammer, consume Opportunity as if at max stacks or if it will expire.\nactions.build+=/pistol_shot,if=talent.fan_the_hammer.rank=2&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# With Hidden Opportunity or 2 ranks in Fan the Hammer, building CPs with Blade Flurry is lower priority than Opportunity procs and Ambush.\nactions.build+=/blade_flurry,if=variable.deft_condition\n# Use Coup de Grace at low CP if Sinister Strike would otherwise be used.\nactions.build+=/coup_de_grace,if=!stealthed.all\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 Maintain Adrenaline Rush if it is not active. Use at low CPs with Improved AR.\nactions.cds+=/adrenaline_rush,if=!buff.adrenaline_rush.up&(!variable.finish_condition||!talent.improved_adrenaline_rush)\n# If using Improved AR, recast AR if it is already active at low CPs.\nactions.cds+=/adrenaline_rush,if=buff.adrenaline_rush.up&talent.improved_adrenaline_rush&combo_points<=2\n# High priority Ghostly Strike as it is off-gcd. 1 FTH builds prefer to not use it at max CPs.\nactions.cds+=/ghostly_strike,if=combo_points<cp_max_spend||talent.fan_the_hammer.rank>1\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 a natural 5 buff roll, use Keep it Rolling when you obtain the remaining buff from Count the Odds.\nactions.cds+=/keep_it_rolling,if=rtb_buffs.normal>=5&rtb_buffs=6\n# Without a natural 5 buff roll, use Keep it Rolling at any 4+ buffs.\nactions.cds+=/keep_it_rolling,if=rtb_buffs>=4&rtb_buffs.normal<=2\n# Without a natural 5 buff roll, use Keep it Rolling at 3 buffs if you have the combination of Ruthless Precision + Broadside + True Bearing.\nactions.cds+=/keep_it_rolling,if=rtb_buffs>=3&rtb_buffs.normal<=2&buff.broadside.up&buff.ruthless_precision.up&buff.true_bearing.up\n# Variable that counts how many buffs are ahead of RtB's pandemic range, which is only possible by using KIR.\nactions.cds+=/variable,name=buffs_above_pandemic,value=(buff.broadside.remains>39)+(buff.ruthless_precision.remains>39)+(buff.true_bearing.remains>39)+(buff.grand_melee.remains>39)+(buff.buried_treasure.remains>39)+(buff.skull_and_crossbones.remains>39)\n# Maintain Roll the Bones: cast without any buffs.\nactions.cds+=/roll_the_bones,if=rtb_buffs=0\n# With TWW2 set, recast Roll the Bones if we will roll away between 0-1 buffs. If KIR was recently used on a natural 5 buff, then wait until all buffs are below around 41s remaining.\nactions.cds+=/roll_the_bones,if=set_bonus.tww2_4pc&rtb_buffs.will_lose<=1&(variable.buffs_above_pandemic<5||rtb_buffs.max_remains<42)\n# With TWW2 set, recast Roll the Bones with at most 2 buffs active regardless of duration. Supercharger builds will also roll if we will lose between 0-4 buffs, but KIR Supercharger builds wait until they are all below 11s remaining.\nactions.cds+=/roll_the_bones,if=set_bonus.tww2_4pc&(rtb_buffs<=2||(rtb_buffs.max_remains<11||!talent.keep_it_rolling)&rtb_buffs.will_lose<5&talent.supercharger)\n# Without TWW2 set or Sleight of Hand, recast Roll the Bones to override 1 buff into 2 buffs with Loaded Dice, or reroll any 2 buffs with Loaded Dice+Supercharger. Hidden Opportunity builds can also reroll 2 buffs with Loaded Dice to try for BS/RP/TB.\nactions.cds+=/roll_the_bones,if=!set_bonus.tww2_4pc&(rtb_buffs.will_lose<=buff.loaded_dice.up||talent.supercharger&buff.loaded_dice.up&rtb_buffs<=2||talent.hidden_opportunity&buff.loaded_dice.up&rtb_buffs<=2&!buff.broadside.up&!buff.ruthless_precision.up&!buff.true_bearing.up)\n# Trinkets that should not be used during stealth and have higher priority than entering stealth.\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# If necessary, standard builds prioritize using Vanish at any CP to prevent Adrenaline Rush downtime.\nactions.cds+=/vanish,if=talent.underhanded_upper_hand&talent.subterfuge&buff.adrenaline_rush.up&!stealthed.all&buff.adrenaline_rush.remains<2&cooldown.adrenaline_rush.remains>30\n# If not at risk of losing Adrenaline Rush, run finishers to use Killing Spree or Coup de Grace as a higher priority than Vanish.\nactions.cds+=/run_action_list,name=finish,if=!stealthed.all&(cooldown.killing_spree.ready&talent.killing_spree||buff.escalating_blade.stack>=4)&variable.finish_condition\n# If not at risk of losing Adrenaline Rush, call flexible Vanish rules to be used at finisher CPs.\nactions.cds+=/call_action_list,name=vanish_usage,if=!stealthed.all&talent.crackshot&talent.underhanded_upper_hand&talent.subterfuge&buff.adrenaline_rush.up&variable.finish_condition\nactions.cds+=/call_action_list,name=vanish_usage_off_meta,if=!stealthed.all&(!talent.underhanded_upper_hand||!talent.crackshot||!talent.subterfuge)\n# Generic catch-all for Shadowmeld. Technically, usage in DungeonSlice or DungeonRoute sims could mirror Vanish usage on packs.\nactions.cds+=/shadowmeld,if=variable.finish_condition&!cooldown.vanish.ready&!stealthed.all\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\n# Let the magnet trinket stack up just so it does not disrupt a 2nd on-use trinket.\nactions.cds+=/use_item,name=junkmaestros_mega_magnet,if=buff.between_the_eyes.up&buff.junkmaestros_mega_magnet.stack>25||boss&fight_remains<5\n# Default conditions for usable items.\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\nactions.finish=pool_resource,for_next=1\nactions.finish+=/killing_spree\nactions.finish+=/coup_de_grace\n# Use Between the Eyes outside of Stealth to maintain the buff, or with Ruthless Precision active, or to proc Greenskins Wickers if not active. Trickster builds can also send BtE on cooldown.\nactions.finish+=/between_the_eyes,if=(buff.ruthless_precision.up||buff.between_the_eyes.remains<4||!talent.mean_streak)&(!buff.greenskins_wickers.up||!talent.greenskins_wickers)\nactions.finish+=/cold_blood\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 1 CP, 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# Flex Vanish usage for standard builds. Without Killing Spree, attempt to hold Vanish for when BtE is on cooldown and Ruthless Precision is active. Also with Keep it Rolling, hold Vanish if we haven't done the first roll after KIR yet.\nactions.vanish_usage+=/vanish,if=!talent.killing_spree&!cooldown.between_the_eyes.ready&buff.ruthless_precision.remains>4&(cooldown.keep_it_rolling.remains>150&rtb_buffs.normal>0||!talent.keep_it_rolling)\n# Supercharger builds that do not use Killing Spree should also Vanish if Supercharger becomes active.\nactions.vanish_usage+=/vanish,if=!talent.killing_spree&buff.supercharge_1.up\n# Builds with Killing Spree can freely Vanish if KS is not up soon.\nactions.vanish_usage+=/vanish,if=cooldown.killing_spree.remains>30\n# Vanish if about to cap on charges or sim duration is ending.\nactions.vanish_usage+=/vanish,if=cooldown.vanish.full_recharge_time<15||boss&fight_remains<8\n\n# Flex Vanish usage for builds lacking one of the mandatory stealth talents. APL support for these builds is considered limited.\nactions.vanish_usage_off_meta+=/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)\nactions.vanish_usage_off_meta+=/vanish,if=!talent.underhanded_upper_hand&talent.crackshot&variable.finish_condition\nactions.vanish_usage_off_meta+=/vanish,if=!talent.underhanded_upper_hand&!talent.crackshot&talent.hidden_opportunity&!buff.audacity.up&buff.opportunity.stack<buff.opportunity.max_stack&variable.ambush_condition\nactions.vanish_usage_off_meta+=/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)\nactions.vanish_usage_off_meta+=/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",
|
|
["basedOn"] = "Outlaw",
|
|
["spec"] = 260,
|
|
},
|
|
["Subtlety"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/rogue_subtlety.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250406,
|
|
["spec"] = 261,
|
|
["desc"] = "2025-04-06: SimC Sync\n2025-03-25: SimC Sync\n2025-03-06: Workaround for rupture spam re: Flagellation cooldown\n2025-03-01: Sync with SimC",
|
|
["lists"] = {
|
|
["build"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.shadow_dance.up & ! used_for_danse || ! variable.stealth & buff.shadow_blades.up",
|
|
["action"] = "backstab",
|
|
["description"] = "Combo Point Builder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.shadow_dance.up & ! used_for_danse || ! variable.stealth & buff.shadow_blades.up",
|
|
["action"] = "gloomblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.find_weakness.remains <= 2 & active_enemies = 2 & talent.unseen_blade.enabled || ! used_for_danse & ! talent.premeditation.enabled",
|
|
["action"] = "shadowstrike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.lingering_darkness.up || talent.deathstalkers_mark.enabled & cooldown.shadow_blades.remains >= 32 & active_enemies >= 3 || talent.unseen_blade.enabled & buff.symbols_of_death.up & active_enemies >= 4",
|
|
["action"] = "shuriken_tornado",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.clear_the_witnesses.up & ( active_enemies >= 2 || ! buff.symbols_of_death.up )",
|
|
["action"] = "shuriken_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.deathstalkers_mark.enabled & ! debuff.deathstalkers_mark.up & active_enemies >= 3 & ( buff.shadow_blades.up || buff.premeditation.up || talent.the_rotten.enabled )",
|
|
["action"] = "shadowstrike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.deathstalkers_mark.enabled & active_enemies >= ( 2 + 3 * buff.shadow_dance.up )",
|
|
["action"] = "shuriken_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unseen_blade.enabled & ( buff.flawless_form.up & active_enemies >= 3 & ! variable.stealth || buff.the_rotten.stack = 1 & active_enemies >= 7 & buff.shadow_dance.up )",
|
|
["action"] = "shuriken_storm",
|
|
},
|
|
{
|
|
["action"] = "shadowstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points.deficit >= 3",
|
|
["action"] = "goremaws_bite",
|
|
},
|
|
{
|
|
["action"] = "gloomblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "backstab",
|
|
["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.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 || active_enemies <= 2 )",
|
|
["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.shadow_blades.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,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Cooldowns",
|
|
["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,
|
|
["action"] = "treacherous_transmitter",
|
|
["description"] = "Items (Trinkets)",
|
|
["criteria"] = "cooldown.flagellation.remains <= 2 || boss & fight_remains <= 15",
|
|
["name"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "dot.rupture.ticking & buff.flagellation_buff.up",
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["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 & 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 & 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,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Combo Point Builder",
|
|
["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",
|
|
["var_name"] = "priority_rotation",
|
|
["description"] = "Swap to priority rotation if the variable is enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "trinket_sync_slot",
|
|
["criteria"] = "trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff || trinket.t1.is.treacherous_transmitter || trinket.t1.cooldown.duration >= trinket.t2.cooldown.duration )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["var_name"] = "trinket_sync_slot",
|
|
["criteria"] = "trinket.t2.has_use_buff & ( ! trinket.t1.has_use_buff || trinket.t2.cooldown.duration > trinket.t1.cooldown.duration )",
|
|
},
|
|
{
|
|
["action"] = "stealth",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["finish"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["criteria"] = "! toggle.cooldowns",
|
|
["var_name"] = "cooldowns_soon",
|
|
["value"] = "false",
|
|
["action"] = "variable",
|
|
["value_else"] = "cooldown.shadow_blades.remains <= 13 & cooldown.flagellation.remains < 10 & ( dot.rupture.remains < ( cooldown.shadow_blades.remains + buff.shadow_blades.duration ) )",
|
|
["description"] = "[Syrif] - This variable prevents rupture spam when CDs are toggled off, or otherwise desynced due to dungeon gameplay environment ",
|
|
},
|
|
{
|
|
["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,
|
|
["criteria"] = "! variable.skip_rupture & ! variable.priority_rotation & target.time_to_die >= ( 2 * combo_points ) & refreshable & active_enemies >= 2",
|
|
["action"] = "rupture",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unseen_blade.enabled & variable.cooldowns_soon & dot.rupture.remains < fight_remains",
|
|
["action"] = "rupture",
|
|
["description"] = "[Syrif] Uses Hekili-specific variable as a workaround",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.fazed.up & cooldown.flagellation.remains >= 20",
|
|
["action"] = "coup_de_grace",
|
|
["description"] = "Direct Damage Finisher",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.priority_rotation & variable.maintenance & ( ( ( active_enemies >= 2 & talent.deathstalkers_mark.enabled & ( ! buff.darkest_night.up || buff.shadow_dance.up & active_enemies >= 5 ) ) || talent.unseen_blade.enabled & active_enemies >= 7 ) || action.coup_de_grace.ready )",
|
|
["action"] = "black_powder",
|
|
},
|
|
{
|
|
["action"] = "eviscerate",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.secret_technique.up & buff.shadow_dance.up & combo_points >= 6 & variable.secret & ( ! talent.flagellation.enabled || buff.flagellation_persist.up )",
|
|
["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 & ( ! talent.flagellation.enabled || cooldown.flagellation.remains >= 30 - 15 * ! talent.death_perception.enabled & cooldown.secret_technique.remains < 8 || ! talent.death_perception.enabled ) || boss & fight_remains <= 15 & ( raid || buff.symbols_of_death.down ) )",
|
|
["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 & cooldown.shadow_blades.remains <= 3 || 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.shadow_blades.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",
|
|
},
|
|
},
|
|
["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,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250406,
|
|
["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_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (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_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.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'.\n\nThe import for 'finish' required some automated changes.\nLine 5: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\nLine 7: Converted 'talent.deathstalkers_mark' to 'talent.deathstalkers_mark.enabled' (1x).\nLine 7: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\n\nThe import for 'cds' required some automated changes.\nLine 1: Converted 'talent.flagellation' to 'talent.flagellation.enabled' (1x).\nLine 3: Converted 'talent.flagellation' to 'talent.flagellation.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 3: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\nLine 3: Converted 'talent.premeditation' to 'talent.premeditation.enabled' (1x).\nLine 4: Converted 'talent.deathstalkers_mark' to 'talent.deathstalkers_mark.enabled' (1x).\nLine 4: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\nLine 6: Converted 'talent.deathstalkers_mark' to 'talent.deathstalkers_mark.enabled' (1x).\nLine 6: Converted 'talent.the_rotten' to 'talent.the_rotten.enabled' (1x).\nLine 7: Converted 'talent.deathstalkers_mark' to 'talent.deathstalkers_mark.enabled' (1x).\nLine 8: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\n\nImported 7 action lists.\n",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/rogue_subtlety.simc\n## Up to date with SimC: April 5 2025 - ed7963f\n\nactions.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_use_buff&(!trinket.2.has_use_buff||trinket.1.is.treacherous_transmitter||trinket.1.cooldown.duration>=trinket.2.cooldown.duration)\nactions.precombat+=/variable,name=trinket_sync_slot,value=2,if=trinket.2.has_use_buff&(!trinket.1.has_use_buff||trinket.2.cooldown.duration>trinket.1.cooldown.duration)\nactions.precombat+=/stealth\n\n\nactions+=/stealth\nactions+=/kick\nactions+=/variable,name=stealth,value=buff.shadow_dance.up||buff.stealth.up||buff.vanish.up\n## [Syrif] -Replaced below variable with active_enemies\n## actions+=/variable,name=targets,value=spell_targets.shuriken_storm\nactions+=/variable,name=skip_rupture,value=buff.shadow_dance.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||active_enemies<=2)\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.shadow_blades.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&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&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+=/backstab,if=buff.shadow_dance.up&!used_for_danse||!variable.stealth&buff.shadow_blades.up\nactions.build+=/gloomblade,if=buff.shadow_dance.up&!used_for_danse||!variable.stealth&buff.shadow_blades.up\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_tornado,if=buff.lingering_darkness.up||talent.deathstalkers_mark&cooldown.shadow_blades.remains>=32&active_enemies>=3||talent.unseen_blade&(!variable.stealth||active_enemies>=3)&(buff.symbols_of_death.up||!raid_event.adds.up)\nactions.build+=/shuriken_storm,if=buff.clear_the_witnesses.up&(active_enemies>=2||!buff.symbols_of_death.up)\nactions.build+=/shadowstrike,cycle_targets=1,if=talent.deathstalkers_mark&!debuff.deathstalkers_mark.up&active_enemies>=3&(buff.shadow_blades.up||buff.premeditation.up||talent.the_rotten)\nactions.build+=/shuriken_storm,if=talent.deathstalkers_mark&active_enemies>=(2+3*buff.shadow_dance.up)\nactions.build+=/shuriken_storm,if=talent.unseen_blade&(buff.flawless_form.up&active_enemies>=3&!variable.stealth||buff.the_rotten.stack=1&active_enemies>=6&buff.shadow_dance.up)\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&(!talent.flagellation||buff.flagellation_persist.up)\nactions.cds+=/potion,if=buff.bloodlust.up||boss&fight_remains<30||buff.flagellation_buff.up\n## [Syrif] - Workaround to stop symbols wasteful spam in dungeons\nactions.cds+=/symbols_of_death,if=(buff.symbols_of_death.remains<=3&variable.maintenance&(active_enemies>=3||!buff.flagellation_buff.up||dot.rupture.remains>=30)&(!talent.flagellation||cooldown.flagellation.remains>=30-15*!talent.death_perception&cooldown.secret_technique.remains<8||!talent.death_perception)||boss&fight_remains<=15&(raid||buff.symbols_of_death.down))\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&cooldown.shadow_blades.remains<=3||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\n# [Syrif] - This variable prevents rupture spam when CDs are toggled off, or otherwise desynced due to dungeon gameplay environment \nactions.finish+=/variable,name=cooldowns_soon,op=setif,condition=!toggle.cooldowns,value=false,value_else=cooldown.shadow_blades.remains<=13&cooldown.flagellation.remains<10&(dot.rupture.remains<(cooldown.shadow_blades.remains+buff.shadow_blades.duration))\nactions.finish+=/secret_technique,if=variable.secret\n# Maintenance Finisher\nactions.finish+=/rupture,if=!variable.skip_rupture&(!dot.rupture.ticking||refreshable||buff.flagellation_buff.up&!buff.symbols_of_death.up&active_enemies<=2)&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# [Syrif] Uses Hekili-specific variable as a workaround\nactions.finish+=/rupture,if=talent.unseen_blade&variable.cooldowns_soon&active_enemies>=3&dot.rupture.remains<fight_remains\n# Direct Damage Finisher\nactions.finish+=/coup_de_grace,if=debuff.fazed.up&cooldown.flagellation.remains>=20||fight_remains<=10\nactions.finish+=/black_powder,if=!variable.priority_rotation&variable.maintenance&(((active_enemies>=2&talent.deathstalkers_mark&(!buff.darkest_night.up||buff.shadow_dance.up&active_enemies>=5))||talent.unseen_blade&fw_targets>=5)||action.coup_de_grace.ready&active_enemies>=3)\nactions.finish+=/eviscerate,if=cooldown.flagellation.remains>=10||active_enemies>=3\n\n# Shadow Dance, Vanish, Shadowmeld\nactions.stealth_cds+=/shadow_dance,if=variable.shd_cp&variable.maintenance&(cooldown.secret_technique.remains<=24||talent.the_first_dance&buff.shadow_blades.up)&(buff.symbols_of_death.remains>=6||buff.shadow_blades.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",
|
|
["author"] = "SimC",
|
|
},
|
|
["Assassination"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/rogue_assassination.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250412,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-04-12: Something something time travelling variables\n2025-04-08: Sync with SimC\n2025-03-25: Sync with SimC\n2025-03-25: Sync with SimC\n2025-03-14: Sync with SimC (new trinket line)\n2025-03-08: Sync with SimC\n2025-03-01: Sync with SimC",
|
|
["lists"] = {
|
|
["stealthed"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "pool_resource",
|
|
["description"] = "Stealthed Actions",
|
|
["for_next"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ambush",
|
|
["description"] = "Apply Deathstalkers Mark if it has fallen off or waiting for Rupture in AoE",
|
|
["criteria"] = "! debuff.deathstalkers_mark.up & talent.deathstalkers_mark.enabled & combo_points < variable.effective_spend_cp & ( dot.rupture.ticking || variable.single_target || ! talent.subterfuge.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shiv",
|
|
["description"] = "Make sure to have Shiv up during Kingsbane as a final check [Hekili] with Lightweight Shiv only",
|
|
["criteria"] = "talent.kingsbane.enabled & dot.kingsbane.ticking & dot.kingsbane.remains < 8 & ( ! debuff.shiv.up & debuff.shiv.remains < 1 ) & buff.envenom.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "envenom",
|
|
["description"] = "Envenom to maintain the buff during Subterfuge",
|
|
["criteria"] = "effective_combo_points >= variable.effective_spend_cp & dot.kingsbane.ticking & buff.envenom.remains <= 3 & ( debuff.deathstalkers_mark.up || buff.cold_blood.up || buff.darkest_night.up & combo_points = 7 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "envenom",
|
|
["description"] = "Envenom during Master Assassin in single target",
|
|
["criteria"] = "effective_combo_points >= variable.effective_spend_cp & buff.master_assassin_aura.up & variable.single_target & ( debuff.deathstalkers_mark.up || buff.cold_blood.up || buff.darkest_night.up & combo_points = 7 )",
|
|
},
|
|
{
|
|
["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"] = "stealthed.improved_garrote & ( remains < 12 || pmultiplier <= 1 || ( buff.indiscriminate_carnage.up & active_dot.garrote < spell_targets.fan_of_knives ) ) & ! variable.single_target & target.time_to_die - remains > 2 & combo_points.deficit > 2 - buff.darkest_night.up * 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,
|
|
["action"] = "vanish",
|
|
["description"] = "Vanish to fish for Fateful Ending",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vanish",
|
|
["description"] = "Vanish to spread Garrote during Deathmark without Indiscriminate Carnage",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "pool_resource",
|
|
["extra_amount"] = "45",
|
|
["for_next"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vanish",
|
|
["description"] = "Vanish for cleaving Garrotes with Indiscriminate Carnage",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vanish",
|
|
["description"] = "Vanish fallback for Master Assassin",
|
|
["criteria"] = "talent.master_assassin.enabled & debuff.deathmark.up & dot.kingsbane.remains <= 6 + 3 * talent.subterfuge.rank",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vanish",
|
|
["description"] = "Vanish fallback for Improved Garrote during Deathmark if no add waves are expected",
|
|
["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",
|
|
},
|
|
},
|
|
["core_dot"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "garrote",
|
|
["description"] = "Core damage over time abilities used everywhere Maintain Garrote",
|
|
["criteria"] = "combo_points.deficit >= 1 & ( pmultiplier <= 1 ) & refreshable & target.time_to_die - remains > 12",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rupture",
|
|
["description"] = "Maintain Rupture unless darkest night is up",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "crimson_tempest",
|
|
["description"] = "Maintain Crimson Tempest unless it would remove a stronger cast",
|
|
["criteria"] = "combo_points >= variable.effective_spend_cp & refreshable & pmultiplier <= persistent_multiplier & ! buff.darkest_night.up & ! talent.amplifying_poison.enabled",
|
|
},
|
|
},
|
|
["shiv"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! debuff.shiv.up & dot.garrote.ticking & dot.rupture.ticking & spell_targets.fan_of_knives <= 5",
|
|
["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,
|
|
["action"] = "shiv",
|
|
["description"] = "Shiv for aoe with Arterial Precision",
|
|
["criteria"] = "talent.arterial_precision.enabled & ! debuff.shiv.up & dot.garrote.ticking & dot.rupture.ticking & spell_targets.fan_of_knives >= 4 & dot.crimson_tempest.ticking & ( target.health.pct <= 35 & talent.zoldyck_recipe.enabled || cooldown.shiv.charges_fractional >= 1.9 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shiv",
|
|
["description"] = "Shiv cases for Kingsbane",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shiv",
|
|
["description"] = "Shiv for big Darkest Night Envenom during Lingering Darkness",
|
|
["criteria"] = "buff.darkest_night.up & combo_points >= variable.effective_spend_cp & buff.lingering_darkness.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.lightweight_shiv.enabled & variable.shiv_kingsbane_condition & ( dot.kingsbane.ticking & dot.kingsbane.remains < 8 || cooldown.kingsbane.remains <= 1 & cooldown.shiv.charges_fractional >= 1.7 )",
|
|
["action"] = "shiv",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shiv",
|
|
["description"] = "Fallback shiv for arterial during deathmark",
|
|
["criteria"] = "debuff.deathmark.up & talent.arterial_precision.enabled & ! debuff.shiv.up & dot.garrote.ticking & dot.rupture.ticking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shiv",
|
|
["description"] = "Fallback if no special cases apply",
|
|
["criteria"] = "! debuff.deathmark.up & ! talent.kingsbane.enabled & variable.shiv_condition & ( dot.crimson_tempest.ticking || talent.amplifying_poison.enabled ) & ( ( ( talent.lightweight_shiv.enabled + 1 ) - cooldown.shiv.charges_fractional ) * 30 < cooldown.deathmark.remains ) & raid_event.adds.in > 20",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shiv",
|
|
["description"] = "Dump Shiv on fight end",
|
|
["criteria"] = "boss & fight_remains <= cooldown.shiv.charges * 8",
|
|
},
|
|
},
|
|
["misc_cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "potion",
|
|
["description"] = "Miscellaneous Cooldowns Potion",
|
|
["criteria"] = "buff.bloodlust.react || boss & fight_remains < 30 || debuff.deathmark.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blood_fury",
|
|
["description"] = "Various special racials to be synced with cooldowns",
|
|
["criteria"] = "debuff.deathmark.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.deathmark.up",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.deathmark.up",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.deathmark.up",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
},
|
|
["aoe_dot"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "combo_points >= variable.effective_spend_cp",
|
|
["description"] = "AoE Damage over time abilities Helper Variable to check basic finisher conditions",
|
|
["var_name"] = "dot_finisher_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "crimson_tempest",
|
|
["description"] = "Crimson Tempest on 2+ Targets",
|
|
["criteria"] = "spell_targets >= 2 & variable.dot_finisher_condition & refreshable & target.time_to_die - remains > 6",
|
|
},
|
|
{
|
|
["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 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 > ( 7 + ( talent.dashing_scoundrel.enabled * 5 ) + ( variable.regen_saturated * 6 ) ) & ! buff.darkest_night.up",
|
|
["description"] = "Rupture upkeep in AoE to reach energy/scent saturation or to spread for damage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rupture",
|
|
["criteria"] = "variable.dot_finisher_condition & refreshable & ( ! dot.kingsbane.ticking || buff.cold_blood.up ) & variable.regen_saturated & target.time_to_die > ( 7 + ( talent.dashing_scoundrel.enabled * 5 ) + ( variable.regen_saturated * 6 ) ) & ! buff.darkest_night.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "garrote",
|
|
["description"] = "Garrote as a special generator for the last CP before a finisher for edge case handling",
|
|
["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",
|
|
},
|
|
},
|
|
["items"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "dot.rupture.ticking & cooldown.deathmark.remains < 2 & ! cooldown.deathmark.ready || dot.deathmark.ticking || boss & fight_remains <= 22",
|
|
["description"] = "Special Case Trinkets",
|
|
["var_name"] = "base_trinket_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "treacherous_transmitter",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "treacherous_transmitter",
|
|
["criteria"] = "variable.base_trinket_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mad_queens_mandate",
|
|
["criteria"] = "cooldown.deathmark.remains >= 30 & ! dot.deathmark.ticking || boss & fight_remains <= 3",
|
|
["name"] = "mad_queens_mandate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "junkmaestros_mega_magnet",
|
|
["criteria"] = "cooldown.deathmark.remains >= 30 & ! dot.deathmark.ticking & ! debuff.shiv.up & ( ! talent.deathstalkers_mark.enabled || buff.lingering_darkness.up & buff.junkmaestros_mega_magnet.stack > 5 ) || boss & fight_remains <= 10",
|
|
["name"] = "junkmaestros_mega_magnet",
|
|
},
|
|
{
|
|
["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 || dot.kingsbane.ticking ) || ( variable.trinket_sync_slot = 2 & ! trinket.t2.cooldown.ready & cooldown.deathmark.remains > 20 ) ) || ! variable.trinket_sync_slot || boss & fight_remains <= 20",
|
|
["description"] = "Fallback case for using stat trinkets",
|
|
["slots"] = "trinket1",
|
|
["action"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "( variable.trinket_sync_slot = 2 & ( debuff.deathmark.up || dot.kingsbane.ticking ) || ( variable.trinket_sync_slot = 1 & ! trinket.t1.cooldown.ready & cooldown.deathmark.remains > 20 ) ) || ! variable.trinket_sync_slot || boss & fight_remains <= 20",
|
|
["slots"] = "trinket2",
|
|
},
|
|
},
|
|
["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"] = "active_enemies = 1",
|
|
["description"] = "Pooling Setup, check for cooldowns",
|
|
["var_name"] = "single_target",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "dot.kingsbane.ticking || debuff.shiv.up",
|
|
["var_name"] = "in_cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.kingsbane.enabled & 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 || buff.darkest_night.up || ( energy.pct >= ( 80 - 10 * talent.vicious_venoms.rank - 30 * talent.amplifying_poison.enabled ) ) || ( charges_fractional > 1.8 || boss ) & fight_remains <= 20",
|
|
["description"] = "Pooling Condition all together - [Syrif] - This is where upper_limit_energy is written out",
|
|
["var_name"] = "not_pooling",
|
|
},
|
|
{
|
|
["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,
|
|
["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",
|
|
["var_name"] = "trinket_sync_slot",
|
|
["criteria"] = "trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff || trinket.t1.cooldown.duration >= trinket.t2.cooldown.duration ) & ! trinket.t2.is.treacherous_transmitter || trinket.t1.is.treacherous_transmitter || trinket.t1.is.house_of_cards",
|
|
["description"] = "Check which trinket slots have Stat Values",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["criteria"] = "trinket.t2.has_use_buff & ( ! trinket.t1.has_use_buff || trinket.t2.cooldown.duration > trinket.t1.cooldown.duration ) & ! trinket.t1.is.treacherous_transmitter || trinket.t2.is.treacherous_transmitter || trinket.t2.is.house_of_cards",
|
|
["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,
|
|
["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.",
|
|
["criteria"] = "! buff.darkest_night.up & combo_points >= variable.effective_spend_cp & ( variable.not_pooling || debuff.amplifying_poison.stack >= 20 || active_enemies > 1 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "envenom",
|
|
["description"] = "Special Envenom handling for Darkest Night",
|
|
["criteria"] = "buff.darkest_night.up & effective_combo_points >= cp_max_spend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( buff.clear_the_witnesses.up & ( spell_targets.fan_of_knives >= 2 - ( buff.lingering_darkness.up || ! talent.vicious_venoms.enabled ) ) ) || ( spell_targets.fan_of_knives >= 3 - ( talent.momentum_of_despair.enabled & talent.thrown_precision.enabled ) + talent.vicious_venoms.enabled + talent.blindside.enabled )",
|
|
["description"] = "Check if we should be using a filler",
|
|
["var_name"] = "fok_target_count",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "combo_points <= variable.effective_spend_cp & ! variable.cd_soon || variable.not_pooling || active_enemies > 1",
|
|
["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,
|
|
["action"] = "fan_of_knives",
|
|
["description"] = "Fan of Knives at 6cp for Darkest Night",
|
|
["criteria"] = "buff.darkest_night.up & combo_points = 6 & ( ! talent.vicious_venoms.enabled || spell_targets.fan_of_knives >= 2 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fan_of_knives",
|
|
["description"] = "Fan of Knives at 3+ targets, accounting for various edge cases",
|
|
["criteria"] = "variable.use_filler & ! toggle.funnel & variable.fok_target_count",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ambush",
|
|
["description"] = "Ambush on Blindside/Subterfuge. Do not use Ambush from stealth during Kingsbane & Deathmark.",
|
|
["criteria"] = "variable.use_filler & ( buff.blindside.up || stealthed.rogue ) & ( ! dot.kingsbane.ticking || debuff.deathmark.down || buff.blindside.up )",
|
|
},
|
|
{
|
|
["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 if not using Fan of Knives",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mutilate",
|
|
["description"] = "Fallback Mutilate",
|
|
["criteria"] = "variable.use_filler",
|
|
},
|
|
},
|
|
["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"] = "cooldown.kingsbane.remains <= 2 & buff.envenom.up",
|
|
["var_name"] = "deathmark_kingsbane_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "dot.rupture.ticking & ( variable.deathmark_kingsbane_condition || spell_targets.fan_of_knives > 1 & buff.slice_and_dice.remains > 5 || ! talent.kingsbane.enabled & dot.crimson_tempest.ticking ) & ! debuff.deathmark.up & variable.deathmark_ma_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,
|
|
["action"] = "deathmark",
|
|
["description"] = "Cast Deathmark if the target will survive long enough",
|
|
["criteria"] = "( variable.deathmark_condition & target.time_to_die >= 10 ) || boss & fight_remains <= 20",
|
|
},
|
|
{
|
|
["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 || spell_targets.fan_of_knives > 1 ) & ( cooldown.deathmark.remains >= 50 || dot.deathmark.ticking ) || boss & fight_remains <= 15",
|
|
["action"] = "kingsbane",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "thistle_tea",
|
|
["description"] = "Use with shiv or in niche cases at the end of Kingsbane if not already up",
|
|
["criteria"] = "! buff.thistle_tea.up & debuff.shiv.remains >= 6 || ! buff.thistle_tea.up & dot.kingsbane.ticking & dot.kingsbane.remains <= 6 || ! buff.thistle_tea.up & fight_remains <= cooldown.thistle_tea.charges * 6",
|
|
},
|
|
{
|
|
["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"] = 20250412,
|
|
["warnings"] = "The import for 'items' required some automated changes.\nLine 7: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 7: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 8: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 8: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\n\nThe import for 'precombat' required some automated changes.\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.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.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 2: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 2: Converted 'trinket.1.is.house_of_cards' to 'trinket.t1.is.house_of_cards' (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.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 3: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 3: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 3: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 3: Converted 'trinket.2.is.house_of_cards' to 'trinket.t2.is.house_of_cards' (1x).\n\nImported 11 action lists.\n",
|
|
["spec"] = 259,
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/rogue_assassination.simc\n## Up to date with SimC: April 7 2025 - 0307d7f\n\nactions.precombat+=/apply_poison\n# Check which trinket slots have Stat Values\nactions.precombat+=/variable,name=trinket_sync_slot,value=1,if=trinket.1.has_use_buff&(!trinket.2.has_use_buff||trinket.1.cooldown.duration>=trinket.2.cooldown.duration)&!trinket.2.is.treacherous_transmitter||trinket.1.is.treacherous_transmitter||trinket.1.is.house_of_cards\nactions.precombat+=/variable,name=trinket_sync_slot,value=2,if=trinket.2.has_use_buff&(!trinket.1.has_use_buff||trinket.2.cooldown.duration>trinket.1.cooldown.duration)&!trinket.1.is.treacherous_transmitter||trinket.2.is.treacherous_transmitter||trinket.2.is.house_of_cards\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=single_target,value=active_enemies=1\nactions+=/variable,name=in_cooldowns,value=dot.kingsbane.ticking||debuff.shiv.up\n## [Syrif] - This variable is flattened into variable.not_pooling to ensure timeliness\n## actions+=/variable,name=upper_limit_energy,value=energy.pct>=(80-10*talent.vicious_venoms.rank-30*talent.amplifying_poison)\n# Checking for cooldowns soon\nactions+=/variable,name=cd_soon,value=talent.kingsbane&cooldown.kingsbane.remains<3&!cooldown.kingsbane.ready\n# Pooling Condition all together - [Syrif] - This is where upper_limit_energy is written out\nactions+=/variable,name=not_pooling,value=variable.in_cooldowns||buff.darkest_night.up||(energy.pct>=(80-10*talent.vicious_venoms.rank-30*talent.amplifying_poison))||(charges_fractional>1.8||boss)&fight_remains<=20\n## Check what the maximum Scent of Blood stacks is currently\n## actions+=/variable,name=scent_effective_max_stacks,value=(spell_targets.fan_of_knives*talent.scent_of_blood.rank*2)>?20\n# We are Scent Saturated when our stack count is hitting the maximum\nactions+=/variable,name=scent_saturation,value=buff.scent_of_blood.stack>=((spell_targets.fan_of_knives*talent.scent_of_blood.rank*2)>?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# AoE Damage over time abilities Helper Variable to check basic finisher conditions\nactions.aoe_dot+=/variable,name=dot_finisher_condition,value=combo_points>=variable.effective_spend_cp\n# Crimson Tempest on 2+ Targets\nactions.aoe_dot+=/crimson_tempest,if=spell_targets>=2&variable.dot_finisher_condition&refreshable&target.time_to_die-remains>6\n# Garrote upkeep 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 in AoE to reach energy/scent saturation or to spread for damage\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>(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&target.time_to_die>(7+(talent.dashing_scoundrel*5)+(variable.regen_saturated*6))&!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=cooldown.kingsbane.remains<=2&buff.envenom.up\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=dot.rupture.ticking&(variable.deathmark_kingsbane_condition||spell_targets.fan_of_knives>1&buff.slice_and_dice.remains>5||!talent.kingsbane&dot.crimson_tempest.ticking)&!debuff.deathmark.up&variable.deathmark_ma_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||spell_targets.fan_of_knives>1)&(cooldown.deathmark.remains>=50||dot.deathmark.ticking)||boss&fight_remains<=15\n# Use with shiv or in niche cases at the end of Kingsbane if not already up\nactions.cds+=/thistle_tea,if=!buff.thistle_tea.up&debuff.shiv.remains>=6||!buff.thistle_tea.up&dot.kingsbane.ticking&dot.kingsbane.remains<=6||!buff.thistle_tea.up&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# Maintain Crimson Tempest unless it would remove a stronger cast\nactions.core_dot+=/crimson_tempest,if=combo_points>=variable.effective_spend_cp&refreshable&pmultiplier<=persistent_multiplier&!buff.darkest_night.up&!talent.amplifying_poison\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)\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=fok_target_count,value=(buff.clear_the_witnesses.up&(spell_targets.fan_of_knives>=2-(buff.lingering_darkness.up||!talent.vicious_venoms)))||(spell_targets.fan_of_knives>=3-(talent.momentum_of_despair&talent.thrown_precision)+talent.vicious_venoms+talent.blindside)\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 6cp for Darkest Night\nactions.direct+=/fan_of_knives,if=buff.darkest_night.up&combo_points=6&(!talent.vicious_venoms||spell_targets.fan_of_knives>=2)\n# Fan of Knives at 3+ targets, accounting for various edge cases\nactions.direct+=/fan_of_knives,if=variable.use_filler&!toggle.funnel&variable.fok_target_count\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 if not using Fan of Knives\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&!cooldown.deathmark.ready||dot.deathmark.ticking||boss&fight_remains<=22\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\nactions.items+=/use_item,name=junkmaestros_mega_magnet,if=cooldown.deathmark.remains>=30&!dot.deathmark.ticking&!debuff.shiv.up&(!talent.deathstalkers_mark||buff.lingering_darkness.up&buff.junkmaestros_mega_magnet.stack>5)||boss&fight_remains<=10\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||dot.kingsbane.ticking)||(variable.trinket_sync_slot=2&!trinket.2.cooldown.ready&cooldown.deathmark.remains>20))||!variable.trinket_sync_slot||boss&fight_remains<=20\nactions.items+=/use_items,slots=trinket2,if=(variable.trinket_sync_slot=2&(debuff.deathmark.up||dot.kingsbane.ticking)||(variable.trinket_sync_slot=1&!trinket.1.cooldown.ready&cooldown.deathmark.remains>20))||!variable.trinket_sync_slot||boss&fight_remains<=20\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=debuff.deathmark.up\n\n# Shiv conditions\nactions.shiv+=/variable,name=shiv_condition,value=!debuff.shiv.up&dot.garrote.ticking&dot.rupture.ticking&spell_targets.fan_of_knives<=5\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&!debuff.shiv.up&dot.garrote.ticking&dot.rupture.ticking&spell_targets.fan_of_knives>=4&dot.crimson_tempest.ticking&(target.health.pct<=35&talent.zoldyck_recipe||cooldown.shiv.charges_fractional>=1.9)\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)\n# Shiv for big Darkest Night Envenom during Lingering Darkness\nactions.shiv+=/shiv,if=buff.darkest_night.up&combo_points>=variable.effective_spend_cp&buff.lingering_darkness.up\nactions.shiv+=/shiv,if=talent.lightweight_shiv.enabled&variable.shiv_kingsbane_condition&(dot.kingsbane.ticking&dot.kingsbane.remains<8||cooldown.kingsbane.remains<=1&cooldown.shiv.charges_fractional>=1.7)\n# Fallback shiv for arterial during deathmark\nactions.shiv+=/shiv,if=debuff.deathmark.up&talent.arterial_precision&!debuff.shiv.up&dot.garrote.ticking&dot.rupture.ticking\n# Fallback if no special cases apply\nactions.shiv+=/shiv,if=!debuff.deathmark.up&!talent.kingsbane&variable.shiv_condition&(dot.crimson_tempest.ticking||talent.amplifying_poison)&(((talent.lightweight_shiv+1)-cooldown.shiv.charges_fractional)*30<cooldown.deathmark.remains)&raid_event.adds.in>20\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\nactions.stealthed+=/pool_resource,for_next=1\n# Apply Deathstalkers Mark if it has fallen off or waiting for Rupture in AoE\nactions.stealthed+=/ambush,if=!debuff.deathstalkers_mark.up&talent.deathstalkers_mark&combo_points<variable.effective_spend_cp&(dot.rupture.ticking||variable.single_target||!talent.subterfuge)\n# Make sure to have Shiv up during Kingsbane as a final check [Hekili] with Lightweight Shiv only\nactions.stealthed+=/shiv,if=talent.kingsbane&dot.kingsbane.ticking&dot.kingsbane.remains<8&(!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||buff.darkest_night.up&combo_points=7)\n# Envenom during Master Assassin in single target\nactions.stealthed+=/envenom,if=effective_combo_points>=variable.effective_spend_cp&buff.master_assassin_aura.up&variable.single_target&(debuff.deathstalkers_mark.up||buff.cold_blood.up||buff.darkest_night.up&combo_points=7)\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=stealthed.improved_garrote&(remains<12||pmultiplier<=1||(buff.indiscriminate_carnage.up&active_dot.garrote<spell_targets.fan_of_knives))&!variable.single_target&target.time_to_die-remains>2&combo_points.deficit>2-buff.darkest_night.up*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&debuff.deathmark.up&dot.kingsbane.remains<=6+3*talent.subterfuge.rank\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",
|
|
},
|
|
},
|
|
},
|
|
["Quillson - Thunderhorn"] = {
|
|
["runOnce"] = {
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["removeOldThrottles_20241115"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_254"] = true,
|
|
["resetAllPotions_20201209"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["resetGlobalCooldownSync_20210403"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_255"] = true,
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
["forceEnableEnhancedRecheckBoomkin_20210712"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_253"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
},
|
|
["specs"] = {
|
|
[255] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["ca_vop_overlap"] = false,
|
|
["allow_focus_overcap"] = false,
|
|
["mark_any"] = false,
|
|
["use_harpoon"] = true,
|
|
["pet_healing"] = 0,
|
|
["lunar_toggle"] = "none",
|
|
["manual_kill_shot"] = false,
|
|
},
|
|
["potionsReset"] = 20180919.1,
|
|
["debuffPadding"] = 0,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[254] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["prevent_hardcasts"] = false,
|
|
["trueshot_vop_overlap"] = false,
|
|
["trueshot_rapid_fire"] = true,
|
|
["mark_any"] = false,
|
|
["pet_healing"] = 0,
|
|
["eagletalon_swap"] = false,
|
|
["lunar_toggle"] = "none",
|
|
},
|
|
["potionsReset"] = 20180919.1,
|
|
["debuffPadding"] = 0,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[253] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["check_pet_range"] = true,
|
|
["mark_any"] = false,
|
|
["barbed_shot_opener"] = true,
|
|
["avoid_bw_overlap"] = false,
|
|
["pet_healing"] = 0,
|
|
["aspect_vop_overlap"] = false,
|
|
["barbed_shot_grace_period"] = 0.5,
|
|
},
|
|
["potionsReset"] = 20180919.1,
|
|
["debuffPadding"] = 0,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[102] = {
|
|
["enhancedRecheck"] = true,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Marksmanship"] = {
|
|
["source"] = "# https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250330,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-03-30: SimC Update\n2025-03-21: SimC Update\n2025-03-10: SimC Update\n2025-03-02: Delete Salvo\n2025-02-28: TWW Season 2 update\n2025-02-17: Preliminary 11.1 APL\n2024-10-29: SimC update\n2024-10-23: 11.0.5\n2024-09-10, 09-15: SimC update\n2024-08-15, 22: SimC update\n2024-08-11: Steady Focus only if talented\n2024-08-09: Updates from SimC\n2024-08-01: Use Hunter's Mark setting\n2024-07-27: Minor sim update; use Hunter's Mark\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["trickshots"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.double_tap.enabled",
|
|
["action"] = "volley",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.trueshot_ready",
|
|
["action"] = "trueshot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "multishot",
|
|
["cycle_Targets"] = "1",
|
|
["description"] = "Swap targets to spend Precise Shots from No Scope after applying Spotter's Mark already to the primary target.",
|
|
["criteria"] = "buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down ) || buff.trick_shots.down",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "For Double Tap, lower Volley in priority until Trueshot has already triggered Double Tap.",
|
|
["criteria"] = "talent.double_tap.enabled & buff.double_tap.down",
|
|
["action"] = "volley",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Always cast Black Arrow with Trick Shots up for Bleak Powder.",
|
|
["criteria"] = "buff.trick_shots.up",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Prioritize Aimed Shot a bit higher than Rapid Fire if it's close to charge capping and Bulletstorm is up.",
|
|
["criteria"] = "( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & buff.trick_shots.up & buff.bulletstorm.up & full_recharge_time < gcd.max",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With Sentinel, hold Rapid Fire for up to 1/3 of its cooldown to trigger Lunar Storm as soon as possible.",
|
|
["criteria"] = "buff.trick_shots.up & ( ! hero_tree.sentinel || buff.lunar_storm_cooldown.remains > action_cooldown / 3 || buff.lunar_storm_cooldown.down )",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With Precision Detonation, wait until a follow up Aimed Shot would not waste Precise Shots to cast. Require Lock and Load active if using the 4pc.",
|
|
["criteria"] = "talent.precision_detonation.enabled & ( buff.lock_and_load.up || ! set_bonus.thewarwithin_season_2_4pc ) & ( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up )",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Aimed Shot if we've spent Precise Shots to trigger Spotter's Mark and Moving Target. With No Scope this means Precise Shots could be up when Aimed Shot is cast.",
|
|
["criteria"] = "( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & buff.trick_shots.up",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "steady_shot",
|
|
},
|
|
{
|
|
["action"] = "multishot",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "counter_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "tranquilizing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.trueshot.ready & ( ( ! raid_event.adds.exists || raid_event.adds.count = 1 ) & ( ! talent.bullseye.enabled || fight_remains > cooldown.trueshot.duration_guess + buff.trueshot.duration / 2 || buff.bullseye.stack = buff.bullseye.max_stack ) & ( ! trinket.t1.has_use_buff || trinket.t1.cooldown.remains > 30 || trinket.t1.cooldown.ready ) & ( ! trinket.t2.has_use_buff || trinket.t2.cooldown.remains > 30 || trinket.t2.cooldown.ready ) || raid_event.adds.exists & ( ! raid_event.adds.up & ( raid_event.adds.duration + raid_event.adds.in < 25 || raid_event.adds.in > 60 ) || raid_event.adds.up & raid_event.adds.remains > 10 ) || boss & fight_remains < 25 )",
|
|
["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.unbreakable_bond.enabled",
|
|
["action"] = "summon_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! trinket.t2.has_cooldown || trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff || ! trinket.t1.is.mirror_of_fractured_tomorrows & ( trinket.t2.is.mirror_of_fractured_tomorrows || trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) ) || ! trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) )",
|
|
["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,
|
|
["criteria"] = "active_enemies = 1 || active_enemies = 2 & ! talent.volley.enabled",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["action"] = "steady_shot",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.trueshot_ready",
|
|
["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,
|
|
["description"] = "Hold Volley for up to its whole cooldown for multiple target situations, also make sure Rapid Fire will be available to stack extra Bullestorm stacks during it without Aspect of the Hydra.",
|
|
["criteria"] = "! talent.double_tap.enabled & ( talent.aspect_of_the_hydra.enabled || active_enemies = 1 || buff.precise_shots.down & ( cooldown.rapid_fire.remains + action.rapid_fire.execute_time < 6 || ! talent.bulletstorm.enabled ) ) & ( ! raid_event.adds.exists || raid_event.adds.in > action_cooldown || active_enemies > 1 )",
|
|
["action"] = "volley",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Prioritize Rapid Fire to trigger Lunar Storm or to stack extra Bulletstorm when Volley Trick Shots is up without Aspect of the Hydra.",
|
|
["criteria"] = "hero_tree.sentinel & buff.lunar_storm_cooldown.down || ! talent.aspect_of_the_hydra.enabled & talent.bulletstorm.enabled & active_enemies > 1 & buff.trick_shots.up & ( buff.precise_shots.down || ! talent.no_scope.enabled )",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.trueshot_ready",
|
|
["action"] = "trueshot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Prioritize 4pc double bonus by casting Explosive Shot and following up with Aimed Shot when Lock and Load is up, as long as Precise Shots would not be wasted.",
|
|
["criteria"] = "talent.precision_detonation.enabled & set_bonus.thewarwithin_season_2_4pc & ( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & buff.lock_and_load.up",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.precision_detonation.enabled & set_bonus.thewarwithin_season_2_4pc & ( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & buff.lock_and_load.up",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "For Double Tap, lower Volley in priority until Trueshot has already triggered Double Tap.",
|
|
["criteria"] = "talent.double_tap.enabled & buff.double_tap.down",
|
|
["action"] = "volley",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "black_arrow",
|
|
["cycle_Targets"] = "1",
|
|
["description"] = "Kill Shot/Black Arrow become the primary Precise Shot spenders for Headshot builds. For all Precise Shot spenders, skip to Aimed Shot if both Spotter's Mark and Moving Target are already up.",
|
|
["criteria"] = "talent.headshot.enabled & buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down ) || ! talent.headshot.enabled & buff.razor_fragments.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["cycle_Targets"] = "1",
|
|
["action"] = "kill_shot",
|
|
["criteria"] = "talent.headshot.enabled & buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down ) || ! talent.headshot.enabled & buff.razor_fragments.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "multishot",
|
|
["cycle_Targets"] = "1",
|
|
["description"] = "With either Symphonic Arsenal or Small Game Hunter, Multi-Shot can be used as the Precise Shots spender on 2 targets without Aspect of the Hydra.",
|
|
["criteria"] = "buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down ) & active_enemies > 1 & ! talent.aspect_of_the_hydra.enabled & ( talent.symphonic_arsenal.enabled || talent.small_game_hunter.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["cycle_Targets"] = "1",
|
|
["action"] = "arcane_shot",
|
|
["criteria"] = "buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "aimed_shot",
|
|
["cycle_Targets"] = "1",
|
|
["description"] = "Prioritize Aimed Shot a bit higher than Rapid Fire if it's close to charge capping and Bulletstorm is up.",
|
|
["criteria"] = "( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & full_recharge_time < action.rapid_fire.execute_time + cast_time & ( ! talent.bulletstorm.enabled || buff.bulletstorm.up ) & talent.windrunner_quiver.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With Sentinel, hold Rapid Fire for up to 1/3 of its cooldown to trigger Lunar Storm as soon as possible. Don't reset Bulletstorm if it's been stacked over 10 unless it can be re-stacked over 10.",
|
|
["criteria"] = "( ! hero_tree.sentinel || buff.lunar_storm_cooldown.remains > action_cooldown / 3 ) & ( ! talent.bulletstorm.enabled || buff.bulletstorm.stack <= 10 || talent.aspect_of_the_hydra.enabled & active_enemies > 1 )",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "aimed_shot",
|
|
["cycle_Targets"] = "1",
|
|
["description"] = "Aimed Shot if we've spent Precise Shots to trigger Spotter's Mark and Moving Target. With No Scope this means Precise Shots could be up when Aimed Shot is cast.",
|
|
["criteria"] = "buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! set_bonus.thewarwithin_season_2_4pc || ! talent.precision_detonation.enabled",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.headshot.enabled",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Steady Shot is our only true filler due to the Aimed Shot cdr.",
|
|
["action"] = "steady_shot",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || boss & fight_remains < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 16",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 16",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 9",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up & ( buff.bloodlust.up || target.health.pct < 20 ) || boss & fight_remains < 31",
|
|
["action"] = "potion",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250330,
|
|
["warnings"] = "The import for 'trickshots' required some automated changes.\nLine 1: Converted 'talent.double_tap' to 'talent.double_tap.enabled' (1x).\nLine 4: Converted 'talent.double_tap' to 'talent.double_tap.enabled' (1x).\nLine 7: Converted operations in 'buff.trick_shots.up&(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>action_cooldown%3||buff.lunar_storm_cooldown.down)' to 'buff.trick_shots.up&(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>action_cooldown/3||buff.lunar_storm_cooldown.down)'.\nLine 8: Converted 'talent.precision_detonation' to 'talent.precision_detonation.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'talent.bullseye' to 'talent.bullseye.enabled' (1x).\nLine 3: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 3: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 3: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 3: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 3: Converted operations in 'cooldown.trueshot.ready&((!raid_event.adds.exists||raid_event.adds.count=1)&(!talent.bullseye.enabled||fight_remains>cooldown.trueshot.duration_guess+buff.trueshot.duration%2||buff.bullseye.stack=buff.bullseye.max_stack)&(!trinket.t1.has_use_buff||trinket.t1.cooldown.remains>30||trinket.t1.cooldown.ready)&(!trinket.t2.has_use_buff||trinket.t2.cooldown.remains>30||trinket.t2.cooldown.ready)||raid_event.adds.exists&(!raid_event.adds.up&(raid_event.adds.duration+raid_event.adds.in<25||raid_event.adds.in>60)||raid_event.adds.up&raid_event.adds.remains>10)||boss&fight_remains<25)' to 'cooldown.trueshot.ready&((!raid_event.adds.exists||raid_event.adds.count=1)&(!talent.bullseye.enabled||fight_remains>cooldown.trueshot.duration_guess+buff.trueshot.duration/2||buff.bullseye.stack=buff.bullseye.max_stack)&(!trinket.t1.has_use_buff||trinket.t1.cooldown.remains>30||trinket.t1.cooldown.ready)&(!trinket.t2.has_use_buff||trinket.t2.cooldown.remains>30||trinket.t2.cooldown.ready)||raid_event.adds.exists&(!raid_event.adds.up&(raid_event.adds.duration+raid_event.adds.in<25||raid_event.adds.in>60)||raid_event.adds.up&raid_event.adds.remains>10)||boss&fight_remains<25)'.\nLine 8: Converted 'talent.trick_shots' to 'talent.trick_shots.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 1: Converted 'talent.unbreakable_bond' to 'talent.unbreakable_bond.enabled' (1x).\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'talent.volley' to 'talent.volley.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 1: Converted 'talent.double_tap' to 'talent.double_tap.enabled' (1x).\nLine 1: Converted 'talent.aspect_of_the_hydra' to 'talent.aspect_of_the_hydra.enabled' (1x).\nLine 1: Converted 'talent.bulletstorm' to 'talent.bulletstorm.enabled' (1x).\nLine 2: Converted 'talent.aspect_of_the_hydra' to 'talent.aspect_of_the_hydra.enabled' (1x).\nLine 2: Converted 'talent.bulletstorm' to 'talent.bulletstorm.enabled' (1x).\nLine 2: Converted 'talent.no_scope' to 'talent.no_scope.enabled' (1x).\nLine 4: Converted 'talent.precision_detonation' to 'talent.precision_detonation.enabled' (1x).\nLine 5: Converted 'talent.precision_detonation' to 'talent.precision_detonation.enabled' (1x).\nLine 6: Converted 'talent.double_tap' to 'talent.double_tap.enabled' (1x).\nLine 7: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\nLine 7: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\nLine 8: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\nLine 8: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\nLine 9: Converted 'talent.aspect_of_the_hydra' to 'talent.aspect_of_the_hydra.enabled' (1x).\nLine 9: Converted 'talent.symphonic_arsenal' to 'talent.symphonic_arsenal.enabled' (1x).\nLine 9: Converted 'talent.small_game_hunter' to 'talent.small_game_hunter.enabled' (1x).\nLine 11: Converted 'talent.bulletstorm' to 'talent.bulletstorm.enabled' (1x).\nLine 11: Converted 'talent.windrunner_quiver' to 'talent.windrunner_quiver.enabled' (1x).\nLine 12: Converted 'talent.bulletstorm' to 'talent.bulletstorm.enabled' (1x).\nLine 12: Converted 'talent.aspect_of_the_hydra' to 'talent.aspect_of_the_hydra.enabled' (1x).\nLine 12: Converted operations in '(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>action_cooldown%3)&(!talent.bulletstorm.enabled||buff.bulletstorm.stack<=10||talent.aspect_of_the_hydra.enabled&active_enemies>1)' to '(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>action_cooldown/3)&(!talent.bulletstorm.enabled||buff.bulletstorm.stack<=10||talent.aspect_of_the_hydra.enabled&active_enemies>1)'.\nLine 14: Converted 'talent.precision_detonation' to 'talent.precision_detonation.enabled' (1x).\nLine 15: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted operations in 'trinket.t1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.t1.cooldown.duration%3&fight_remains>trinket.t1.cooldown.duration+20||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-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"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/hunter_marksmanship.simc\n## Up to date with SimC: March 28 2025 - 9b7cf47\n\nactions.precombat+=/summon_pet,if=talent.unbreakable_bond\n# Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.\nactions.precombat+=/variable,name=trinket_1_stronger,value=!trinket.2.has_cooldown||trinket.1.has_use_buff&(!trinket.2.has_use_buff||!trinket.1.is.mirror_of_fractured_tomorrows&(trinket.2.is.mirror_of_fractured_tomorrows||trinket.2.cooldown.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+=/aimed_shot,if=active_enemies=1||active_enemies=2&!talent.volley\nactions.precombat+=/steady_shot\n\nactions+=/counter_shot\nactions+=/tranquilizing_shot\n# Determine if it is a good time to use Trueshot. Raid event optimization takes priority so usage is saved for multiple targets as long as it won't delay over half its duration. Otherwise allow for small delays to line up buff effect trinkets, and when using Bullseye, delay the last usage of the fight for max stacks.\nactions+=/variable,name=trueshot_ready,value=cooldown.trueshot.ready&((!raid_event.adds.exists||raid_event.adds.count=1)&(!talent.bullseye||fight_remains>cooldown.trueshot.duration_guess+buff.trueshot.duration%2||buff.bullseye.stack=buff.bullseye.max_stack)&(!trinket.1.has_use_buff||trinket.1.cooldown.remains>30||trinket.1.cooldown.ready)&(!trinket.2.has_use_buff||trinket.2.cooldown.remains>30||trinket.2.cooldown.ready)||raid_event.adds.exists&(!raid_event.adds.up&(raid_event.adds.duration+raid_event.adds.in<25||raid_event.adds.in>60)||raid_event.adds.up&raid_event.adds.remains>10)||boss&fight_remains<25)\nactions+=/mend_pet,if=pet.health_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\n\n# Hold Volley for up to its whole cooldown for multiple target situations, also make sure Rapid Fire will be available to stack extra Bullestorm stacks during it without Aspect of the Hydra.\nactions.st+=/volley,if=!talent.double_tap&(talent.aspect_of_the_hydra||active_enemies=1||buff.precise_shots.down&(cooldown.rapid_fire.remains+action.rapid_fire.execute_time<6||!talent.bulletstorm))&(!raid_event.adds.exists||raid_event.adds.in>cooldown||active_enemies>1)\n## [Syrif] - Using lunar_storm_cooldown.down is better for us than lunar_storm_ready.up, prediction-wise\n# Prioritize Rapid Fire to trigger Lunar Storm or to stack extra Bulletstorm when Volley Trick Shots is up without Aspect of the Hydra.\nactions.st+=/rapid_fire,if=hero_tree.sentinel&buff.lunar_storm_cooldown.down||!talent.aspect_of_the_hydra&talent.bulletstorm&active_enemies>1&buff.trick_shots.up&(buff.precise_shots.down||!talent.no_scope)\nactions.st+=/trueshot,if=variable.trueshot_ready\n# Prioritize 4pc double bonus by casting Explosive Shot and following up with Aimed Shot when Lock and Load is up, as long as Precise Shots would not be wasted.\nactions.st+=/explosive_shot,if=talent.precision_detonation&set_bonus.thewarwithin_season_2_4pc&(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&buff.lock_and_load.up\nactions.st+=/aimed_shot,if=talent.precision_detonation&set_bonus.thewarwithin_season_2_4pc&(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&buff.lock_and_load.up\n# For Double Tap, lower Volley in priority until Trueshot has already triggered Double Tap.\nactions.st+=/volley,if=talent.double_tap&buff.double_tap.down\n# Kill Shot/Black Arrow become the primary Precise Shot spenders for Headshot builds. For all Precise Shot spenders, skip to Aimed Shot if both Spotter's Mark and Moving Target are already up.\nactions.st+=/black_arrow,cycle_Targets=1,if=talent.headshot&buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)||!talent.headshot&buff.razor_fragments.up\nactions.st+=/kill_shot,cycle_Targets=1,if=talent.headshot&buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)||!talent.headshot&buff.razor_fragments.up\n# With either Symphonic Arsenal or Small Game Hunter, Multi-Shot can be used as the Precise Shots spender on 2 targets without Aspect of the Hydra.\nactions.st+=/multishot,cycle_Targets=1,if=buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)&active_enemies>1&!talent.aspect_of_the_hydra&(talent.symphonic_arsenal||talent.small_game_hunter)\nactions.st+=/arcane_shot,cycle_Targets=1,if=buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)\n# Prioritize Aimed Shot a bit higher than Rapid Fire if it's close to charge capping and Bulletstorm is up.\nactions.st+=/aimed_shot,cycle_Targets=1,if=(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&full_recharge_time<action.rapid_fire.execute_time+cast_time&(!talent.bulletstorm||buff.bulletstorm.up)&talent.windrunner_quiver\n# With Sentinel, hold Rapid Fire for up to 1/3 of its cooldown to trigger Lunar Storm as soon as possible. Don't reset Bulletstorm if it's been stacked over 10 unless it can be re-stacked over 10.\nactions.st+=/rapid_fire,if=(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>cooldown%3)&(!talent.bulletstorm||buff.bulletstorm.stack<=10||talent.aspect_of_the_hydra&active_enemies>1)\n# Aimed Shot if we've spent Precise Shots to trigger Spotter's Mark and Moving Target. With No Scope this means Precise Shots could be up when Aimed Shot is cast.\nactions.st+=/aimed_shot,cycle_Targets=1,if=buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up\nactions.st+=/explosive_shot,if=!set_bonus.thewarwithin_season_2_4pc||!talent.precision_detonation\nactions.st+=/black_arrow,if=!talent.headshot\n# Steady Shot is our only true filler due to the Aimed Shot cdr.\nactions.st+=/steady_shot\n\nactions.trickshots+=/volley,if=!talent.double_tap\nactions.trickshots+=/trueshot,if=variable.trueshot_ready\n# Swap targets to spend Precise Shots from No Scope after applying Spotter's Mark already to the primary target.\nactions.trickshots+=/multishot,cycle_Targets=1,if=buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)||buff.trick_shots.down\n# For Double Tap, lower Volley in priority until Trueshot has already triggered Double Tap.\nactions.trickshots+=/volley,if=talent.double_tap&buff.double_tap.down\n# Always cast Black Arrow with Trick Shots up for Bleak Powder.\nactions.trickshots+=/black_arrow,if=buff.trick_shots.up\n# Prioritize Aimed Shot a bit higher than Rapid Fire if it's close to charge capping and Bulletstorm is up.\nactions.trickshots+=/aimed_shot,if=(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&buff.trick_shots.up&buff.bulletstorm.up&full_recharge_time<gcd\n## [Syrif] - Using lunar_storm_cooldown.down is better for us than lunar_storm_ready.up, prediction-wise\n# With Sentinel, hold Rapid Fire for up to 1/3 of its cooldown to trigger Lunar Storm as soon as possible.\nactions.trickshots+=/rapid_fire,if=buff.trick_shots.up&(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>cooldown%3||buff.lunar_storm_cooldown.down)\n# With Precision Detonation, wait until a follow up Aimed Shot would not waste Precise Shots to cast. Require Lock and Load active if using the 4pc.\nactions.trickshots+=/explosive_shot,if=talent.precision_detonation&(buff.lock_and_load.up||!set_bonus.thewarwithin_season_2_4pc)&(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)\n# Aimed Shot if we've spent Precise Shots to trigger Spotter's Mark and Moving Target. With No Scope this means Precise Shots could be up when Aimed Shot is cast.\nactions.trickshots+=/aimed_shot,if=(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&buff.trick_shots.up\nactions.trickshots+=/explosive_shot\nactions.trickshots+=/steady_shot,if=focus+cast_regen<focus.max\nactions.trickshots+=/multishot\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,
|
|
},
|
|
["Beast Mastery"] = {
|
|
["source"] = "# https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250319,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-03-19: SimC Update c8cb5fc\n\n2025-03-14: Add missing change from previous SimC update\n\n2025-03-10: SimC update, add barb shot opener option\n\n2025-02-28: TWW Season 2 update\n\n2025-02-17: Preliminary 11.1 APL\n\n2024-11-03: SimC updates\n\n2024-10-26: SimC updates\n\n2024-10-23: 11.0.5\n\n2024-09-22: SimC update\n\n2024-08-22: SimC update\n\n2024-08-01: Respect Hunter's Mark setting\n\n2024-07-27: Add Call of the Wild talent checks; use Counter Shot; use Hunter's Mark\n\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "counter_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "tranquilizing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.health_pct < pet_healing",
|
|
["action"] = "mend_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 2 || ! talent.beast_cleave.enabled & active_enemies < 3",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 || talent.beast_cleave.enabled & active_enemies > 1",
|
|
["action"] = "call_action_list",
|
|
["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 ) )",
|
|
["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,
|
|
["description"] = "[Syrif] - Lets users choose whether to follow guide behaviour or sim behaviour",
|
|
["criteria"] = "settings.barbed_shot_opener",
|
|
["action"] = "barbed_shot",
|
|
},
|
|
},
|
|
["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",
|
|
["criteria"] = "! talent.call_of_the_wild.enabled & ! talent.bloodshed.enabled",
|
|
["value_else"] = "cooldown.call_of_the_wild.remains || cooldown.bloodshed.remains",
|
|
["value"] = "cooldown.bestial_wrath.remains_guess",
|
|
},
|
|
{
|
|
["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 )",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 16",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 16",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 9",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & ! talent.bloodshed.enabled & buff.bestial_wrath.up || boss & fight_remains < 31",
|
|
["action"] = "potion",
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.huntmasters_call.enabled",
|
|
["action"] = "dire_beast",
|
|
},
|
|
{
|
|
["action"] = "bestial_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.withering_fire.up",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "barbed_shot",
|
|
["criteria"] = "full_recharge_time < gcd.max || charges_fractional >= cooldown.kill_command.charges_fractional || talent.call_of_the_wild.enabled & cooldown.call_of_the_wild.ready || howl_summon.ready & full_recharge_time < 8",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "call_of_the_wild",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodshed",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "kill_command",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "black_arrow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.thundering_hooves.enabled",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["action"] = "cobra_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "dire_beast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "arcane_pulse",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( focus + focus.regen + 15 ) < focus.max",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
["cleave"] = {
|
|
{
|
|
["action"] = "bestial_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.huntmasters_call.enabled & buff.huntmasters_call.stack = 2",
|
|
["action"] = "dire_beast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.beast_cleave.remains & buff.withering_fire.up",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "barbed_shot",
|
|
["criteria"] = "full_recharge_time < gcd.max || charges_fractional >= cooldown.kill_command.charges_fractional || talent.call_of_the_wild.enabled & cooldown.call_of_the_wild.ready || howl_summon.ready & full_recharge_time < 8",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.beast_cleave.down & ( ! talent.bloody_frenzy.enabled || cooldown.call_of_the_wild.remains )",
|
|
["action"] = "multishot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.beast_cleave.up",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["action"] = "call_of_the_wild",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodshed",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadow_hounds.enabled || talent.dire_cleave.enabled",
|
|
["action"] = "dire_beast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.thundering_hooves.enabled",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "barbed_shot",
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.black_arrow.enabled & ( talent.barbed_scales.enabled || talent.savagery.enabled ) || set_bonus.tww2 >= 2 || boss & fight_remains < 9",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus.time_to_max < gcd.max * 2 || buff.hogstrider.stack > 3",
|
|
["action"] = "cobra_shot",
|
|
},
|
|
{
|
|
["action"] = "dire_beast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( focus + focus.regen + 30 ) < focus.max",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250319,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 7: Converted 'talent.beast_cleave' to 'talent.beast_cleave.enabled' (1x).\nLine 8: Converted 'talent.beast_cleave' to 'talent.beast_cleave.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\n\nThe import for 'trinkets' required some automated changes.\nLine 1: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 1: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 1: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 1: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 2: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 2: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 2: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 2: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 3: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 3: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted operations in 'trinket.t1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.t1.cooldown.duration%3&boss&fight_remains>trinket.t1.cooldown.duration+20||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-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).\nLine 5: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 1: Converted 'talent.huntmasters_call' to 'talent.huntmasters_call.enabled' (1x).\nLine 4: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 9: Converted 'talent.thundering_hooves' to 'talent.thundering_hooves.enabled' (1x).\n\nThe import for 'cleave' required some automated changes.\nLine 2: Converted 'talent.huntmasters_call' to 'talent.huntmasters_call.enabled' (1x).\nLine 4: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 5: Converted 'talent.bloody_frenzy' to 'talent.bloody_frenzy.enabled' (1x).\nLine 9: Converted 'talent.shadow_hounds' to 'talent.shadow_hounds.enabled' (1x).\nLine 9: Converted 'talent.dire_cleave' to 'talent.dire_cleave.enabled' (1x).\nLine 10: Converted 'talent.thundering_hooves' to 'talent.thundering_hooves.enabled' (1x).\nLine 12: Converted 'talent.black_arrow' to 'talent.black_arrow.enabled' (1x).\nLine 12: Converted 'talent.barbed_scales' to 'talent.barbed_scales.enabled' (1x).\nLine 12: Converted 'talent.savagery' to 'talent.savagery.enabled' (1x).\n\nImported 6 action lists.\n",
|
|
["spec"] = 253,
|
|
["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/hunter_beast_mastery.simc\n## Up to date with SimC: March 18 2025 - c8cb5fc\n\nactions.precombat+=/summon_pet\n# Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.\nactions.precombat+=/variable,name=trinket_1_stronger,value=!trinket.2.has_cooldown||trinket.1.has_use_buff&(!trinket.2.has_use_buff||!trinket.1.is.mirror_of_fractured_tomorrows&(trinket.2.is.mirror_of_fractured_tomorrows||trinket.2.cooldown.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\n# [Syrif] - Lets users choose whether to follow guide behaviour or sim behaviour\nactions.precombat+=/barbed_shot,if=settings.barbed_shot_opener\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&!talent.bloodshed&buff.bestial_wrath.up||boss&fight_remains<31\n\nactions.cleave+=/bestial_wrath\nactions.cleave+=/dire_beast,if=talent.huntmasters_call&buff.huntmasters_call.stack=2\nactions.cleave+=/black_arrow,if=buff.beast_cleave.remains&buff.withering_fire.up\nactions.cleave+=/barbed_shot,cycle_targets=1,if=full_recharge_time<gcd||charges_fractional>=cooldown.kill_command.charges_fractional||talent.call_of_the_wild&cooldown.call_of_the_wild.ready||howl_summon.ready&full_recharge_time<8\nactions.cleave+=/multishot,if=buff.beast_cleave.down&(!talent.bloody_frenzy||cooldown.call_of_the_wild.remains)\nactions.cleave+=/black_arrow,if=buff.beast_cleave.up\nactions.cleave+=/call_of_the_wild\nactions.cleave+=/bloodshed\nactions.cleave+=/dire_beast,if=talent.shadow_hounds||talent.dire_cleave\nactions.cleave+=/explosive_shot,if=talent.thundering_hooves\nactions.cleave+=/kill_command,cycle_targets=1\nactions.cleave+=/barbed_shot,cycle_targets=1,if=buff.call_of_the_wild.up||talent.black_arrow&(talent.barbed_scales||talent.savagery)||set_bonus.tww2>=2||boss&fight_remains<9\nactions.cleave+=/lights_judgment,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.cleave+=/cobra_shot,if=focus.time_to_max<gcd*2||buff.hogstrider.stack>3\nactions.cleave+=/dire_beast\nactions.cleave+=/explosive_shot\nactions.cleave+=/bag_of_tricks,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.cleave+=/arcane_torrent,if=(focus+focus.regen+30)<focus.max\n\nactions.st+=/dire_beast,if=talent.huntmasters_call\nactions.st+=/bestial_wrath\nactions.st+=/black_arrow,if=buff.withering_fire.up\nactions.st+=/barbed_shot,cycle_targets=1,if=full_recharge_time<gcd||charges_fractional>=cooldown.kill_command.charges_fractional||talent.call_of_the_wild&cooldown.call_of_the_wild.ready||howl_summon.ready&full_recharge_time<8\nactions.st+=/call_of_the_wild\nactions.st+=/bloodshed\nactions.st+=/kill_command\nactions.st+=/black_arrow\nactions.st+=/explosive_shot,if=talent.thundering_hooves\nactions.st+=/lights_judgment,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/cobra_shot\nactions.st+=/dire_beast\nactions.st+=/bag_of_tricks,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/arcane_pulse,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/arcane_torrent,if=(focus+focus.regen+15)<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)",
|
|
},
|
|
["Survival"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/hunter_survival.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250505,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-05-05: SimC Update\n2025-04-13: Support pet revive, captions, calling specific pets.\n2025-04-06: SimC Update + boar_charge\n2025-03-21: Simc Update (howl_summon_ready --> howl_summon.ready)\n2025-03-10: SimC Update (howl_summon_ready)\n2025-02-28: TWW Season 2 update\n2025-02-17: Preliminary 11.1 APL\n2024-09-22, 10-21: SimC update\n2024-08-24, 09-08: SimC priority update\n2024-08-12: Fix Kill Command usage in AOE with maxed Focus\n2024-08-01: Respect Hunter's Mark setting\n2024-07-27: Minor sim update; use Hunter's Mark\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["sentcleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "SENTINEL || DEFAULT AOE ACTIONLIST",
|
|
["criteria"] = "! buff.lunar_storm_cooldown.remains",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & cooldown.wildfire_bomb.charges_fractional > 1.7 || cooldown.wildfire_bomb.charges_fractional > 1.9 || ( talent.bombardier.enabled & cooldown.coordinated_assault.remains < 2 * gcd.max ) || talent.butchery.enabled & cooldown.butchery.remains < gcd.max",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["criteria"] = "buff.strike_it_rich.up & buff.strike_it_rich.remains < gcd.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.bombardier.enabled || talent.bombardier.enabled & cooldown.wildfire_bomb.charges_fractional < 1",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.tip_of_the_spear.stack = 2 || buff.tip_of_the_spear.stack = 1 )",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.deathblow.remains & talent.sic_em.enabled",
|
|
["action"] = "kill_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["criteria"] = "! talent.contagious_reagents.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "muzzle",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "tranquilizing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.health_pct < pet_healing",
|
|
["action"] = "mend_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies < 3 & talent.howl_of_the_pack_leader.enabled",
|
|
["list_name"] = "plst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 2 & talent.howl_of_the_pack_leader.enabled",
|
|
["list_name"] = "plcleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies < 3 & ! talent.howl_of_the_pack_leader.enabled",
|
|
["list_name"] = "sentst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 2 & ! talent.howl_of_the_pack_leader.enabled",
|
|
["list_name"] = "sentcleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["description"] = "Use Kill Command if there's nothing else to press",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bag_of_tricks",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "summon_pet",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "algethar_puzzle_box",
|
|
["action"] = "algethar_puzzle_box",
|
|
},
|
|
},
|
|
["plcleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains",
|
|
["action"] = "spearhead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["criteria"] = "buff.strike_it_rich.up & buff.strike_it_rich.remains < gcd.max || buff.hogstrider.remains & boar_charge.remains > 0 || buff.hogstrider.remains < gcd.max & buff.hogstrider.up || buff.hogstrider.remains & buff.strike_it_rich.remains",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "wildfire_bomb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "( buff.howl_of_the_pack_leader_wyvern.remains || buff.howl_of_the_pack_leader_boar.remains || buff.howl_of_the_pack_leader_bear.remains )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack = 2 || buff.tip_of_the_spear.stack = 1",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max || charges_fractional > 1.5",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.deathblow.remains & talent.sic_em.enabled",
|
|
["action"] = "kill_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "COOLDOWNS ACTIONLIST",
|
|
["criteria"] = "settings.use_harpoon & prev.kill_command",
|
|
["action"] = "harpoon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled || time_to_die < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 25 || buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["criteria"] = "gcd.remains > gcd.max - 0.1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains || cooldown.spearhead.remains",
|
|
["action"] = "use_items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.distance >= 6",
|
|
["action"] = "aspect_of_the_eagle",
|
|
},
|
|
},
|
|
["plst"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 ) || ( buff.howl_of_the_pack_leader_wyvern.remains || buff.howl_of_the_pack_leader_boar.remains || buff.howl_of_the_pack_leader_bear.remains )",
|
|
["description"] = "PACK LEADER || SINGLE TARGET ACTIONLIST.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains & cooldown.coordinated_assault.remains < gcd.max",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains",
|
|
["action"] = "spearhead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["criteria"] = "! dot.serpent_sting.ticking & target.time_to_die > 12 & ( ! talent.contagious_reagents.enabled || active_dot.serpent_sting = 0 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["criteria"] = "talent.contagious_reagents.enabled & active_dot.serpent_sting < active_enemies & dot.serpent_sting.remains",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.tip_of_the_spear.stack < 1",
|
|
["action"] = "kill_command",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "raptor_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.in > 40 )",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "wildfire_bomb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["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 ) )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 2",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["criteria"] = "! talent.contagious_reagents.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "kill_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["sentst"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.lunar_storm_cooldown.remains",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains",
|
|
["action"] = "spearhead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.tip_of_the_spear.stack < 1",
|
|
["action"] = "kill_command",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.coordinated_assault.up",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.lunar_storm_cooldown.remains > full_recharge_time - gcd.max ) & ( buff.tip_of_the_spear.stack > 0 & cooldown.wildfire_bomb.charges_fractional > 1.7 || cooldown.wildfire_bomb.charges_fractional > 1.9 ) || ( talent.bombardier.enabled & cooldown.coordinated_assault.remains < 2 * gcd.max )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.bombardier.enabled || talent.bombardier.enabled & cooldown.wildfire_bomb.charges_fractional < 1",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "buff.tip_of_the_spear.stack < 1 & cooldown.flanking_strike.remains < gcd.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max & ( ! buff.relentless_primal_ferocity.up || ( buff.relentless_primal_ferocity.up & ( buff.tip_of_the_spear.stack < 2 || focus < 30 ) ) )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.remains < gcd.max & buff.mongoose_fury.stack > 0",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & buff.lunar_storm_cooldown.remains > full_recharge_time & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.in > 15 )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.remains",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "kill_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["criteria"] = "! talent.contagious_reagents.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "SENTINEL || DEFAULT SINGLE TARGET ACTIONLIST.",
|
|
["criteria"] = "! buff.lunar_storm_cooldown.remains",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains",
|
|
["action"] = "spearhead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.tip_of_the_spear.stack < 1",
|
|
["action"] = "kill_command",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.coordinated_assault.up",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.lunar_storm_cooldown.remains > full_recharge_time - gcd.max ) & ( buff.tip_of_the_spear.stack > 0 & cooldown.wildfire_bomb.charges_fractional > 1.7 || cooldown.wildfire_bomb.charges_fractional > 1.9 ) || ( talent.bombardier.enabled & cooldown.coordinated_assault.remains < 2 * gcd.max )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.bombardier.enabled || talent.bombardier.enabled & cooldown.wildfire_bomb.charges_fractional < 1",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "buff.tip_of_the_spear.stack < 1 & cooldown.flanking_strike.remains < gcd.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max & ( ! buff.relentless_primal_ferocity.up || ( buff.relentless_primal_ferocity.up & ( buff.tip_of_the_spear.stack < 2 || focus < 30 ) ) )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.remains < gcd.max & buff.mongoose_fury.stack > 0",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & buff.lunar_storm_cooldown.remains > full_recharge_time & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.in > 15 )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.remains",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "kill_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["criteria"] = "! talent.contagious_reagents.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250505,
|
|
["warnings"] = "Imported 7 action lists.\n",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/hunter_survival.simc\n## Up to date with SimC: April 26 2025 - 739316d\n\nactions.precombat+=/summon_pet\nactions.precombat+=/use_item,name=imperfect_ascendancy_serum\nactions.precombat+=/hunters_mark,if=(settings.mark_any||target.is_boss)&active_dot.hunters_mark=0&target.time_to_pct_80>20\nactions.precombat+=/use_item,name=algethar_puzzle_box\n\nactions+=/muzzle\nactions+=/tranquilizing_shot\nactions+=/hunters_mark,if=(settings.mark_any||target.is_boss)&active_dot.hunters_mark=0&target.time_to_pct_80>20\nactions+=/mend_pet,if=pet.health_pct<pet_healing\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=plst,strict=1,if=active_enemies<3&talent.howl_of_the_pack_leader\nactions+=/call_action_list,name=plcleave,strict=1,if=active_enemies>2&talent.howl_of_the_pack_leader\nactions+=/call_action_list,name=sentst,strict=1,if=active_enemies<3&!talent.howl_of_the_pack_leader\nactions+=/call_action_list,name=sentcleave,strict=1,if=active_enemies>2&!talent.howl_of_the_pack_leader\n# Use Kill Command if there's nothing else to press\nactions+=/kill_command,cycle_targets=1\nactions+=/arcane_torrent\nactions+=/bag_of_tricks\nactions+=/lights_judgment\n\n# COOLDOWNS ACTIONLIST\nactions.cds+=/harpoon,if=settings.use_harpoon&prev.kill_command\nactions.cds+=/blood_fury,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\n## actions.cds+=/invoke_external_buff,name=power_infusion,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/ancestral_call,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/fireblood,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/berserking,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault||time_to_die<13\nactions.cds+=/potion,if=boss&fight_remains<25||buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/use_item,name=imperfect_ascendancy_serum,use_off_gcd=1,if=gcd.remains>gcd.max-0.1\nactions.cds+=/use_items,if=cooldown.coordinated_assault.remains||cooldown.spearhead.remains\nactions.cds+=/aspect_of_the_eagle,if=target.distance>=6\n\n#PACK LEADER || AOE ACTIONLIST\nactions.plcleave+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.plcleave+=/raptor_bite,cycle_targets=1,if=buff.strike_it_rich.up&buff.strike_it_rich.remains<gcd||buff.hogstrider.remains&boar_charge.remains>0||buff.hogstrider.remains<gcd&buff.hogstrider.up||buff.hogstrider.remains&buff.strike_it_rich.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\nactions.plcleave+=/kill_command,cycle_targets=1,if=(buff.howl_of_the_pack_leader_wyvern.remains||buff.howl_of_the_pack_leader_boar.remains||buff.howl_of_the_pack_leader_bear.remains)\nactions.plcleave+=/flanking_strike,if=buff.tip_of_the_spear.stack=2||buff.tip_of_the_spear.stack=1\nactions.plcleave+=/butchery\nactions.plcleave+=/coordinated_assault\nactions.plcleave+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0\nactions.plcleave+=/explosive_shot\nactions.plcleave+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max||charges_fractional>1.5\nactions.plcleave+=/kill_shot,if=buff.deathblow.remains&talent.sic_em\nactions.plcleave+=/raptor_bite,cycle_targets=1\n\n# PACK LEADER || SINGLE TARGET ACTIONLIST.\nactions.plst+=/kill_command,cycle_targets=1,if=(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1)||(buff.howl_of_the_pack_leader_wyvern.remains||buff.howl_of_the_pack_leader_boar.remains||buff.howl_of_the_pack_leader_bear.remains)\nactions.plst+=/explosive_shot,if=cooldown.coordinated_assault.remains&cooldown.coordinated_assault.remains<gcd\nactions.plst+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.plst+=/flanking_strike,if=buff.tip_of_the_spear.stack>0\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+=/kill_command,if=buff.strike_it_rich.remains&buff.tip_of_the_spear.stack<1\nactions.plst+=/raptor_bite,if=buff.strike_it_rich.remains&buff.tip_of_the_spear.stack>0\nactions.plst+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.in>40)\nactions.plst+=/coordinated_assault\nactions.plst+=/wildfire_bomb\nactions.plst+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max&(!buff.relentless_primal_ferocity.up||(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1||focus<30))\nactions.plst+=/explosive_shot,if=active_enemies=2\nactions.plst+=/raptor_bite,cycle_targets=1,if=!talent.contagious_reagents\nactions.plst+=/raptor_bite,cycle_targets=1\nactions.plst+=/kill_shot\nactions.plst+=/explosive_shot\n\n# SENTINEL || DEFAULT AOE ACTIONLIST\nactions.sentcleave+=/wildfire_bomb,if=!buff.lunar_storm_cooldown.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+=/raptor_bite,cycle_targets=1,if=buff.strike_it_rich.up&buff.strike_it_rich.remains<gcd\nactions.sentcleave+=/butchery\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_command,cycle_targets=1,if=focus+cast_regen<focus.max\nactions.sentcleave+=/explosive_shot\nactions.sentcleave+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0\nactions.sentcleave+=/kill_shot,if=buff.deathblow.remains&talent.sic_em\nactions.sentcleave+=/raptor_bite,cycle_targets=1,if=!talent.contagious_reagents\nactions.sentcleave+=/raptor_bite,cycle_targets=1\n\n#SENTINEL || DEFAULT SINGLE TARGET ACTIONLIST.\nactions.sentst=wildfire_bomb,if=!buff.lunar_storm_cooldown.remains\nactions.sentst+=/kill_command,cycle_targets=1,if=(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1)\nactions.sentst+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.sentst+=/flanking_strike,if=buff.tip_of_the_spear.stack>0\nactions.sentst+=/kill_command,if=buff.strike_it_rich.remains&buff.tip_of_the_spear.stack<1\nactions.sentst+=/mongoose_bite,if=buff.strike_it_rich.remains&buff.coordinated_assault.up\nactions.sentst+=/wildfire_bomb,if=(buff.lunar_storm_cooldown.remains>full_recharge_time-gcd)&(buff.tip_of_the_spear.stack>0&cooldown.wildfire_bomb.charges_fractional>1.7||cooldown.wildfire_bomb.charges_fractional>1.9)||(talent.bombardier&cooldown.coordinated_assault.remains<2*gcd)\nactions.sentst+=/butchery\nactions.sentst+=/coordinated_assault,if=!talent.bombardier||talent.bombardier&cooldown.wildfire_bomb.charges_fractional<1\nactions.sentst+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0\nactions.sentst+=/kill_command,cycle_targets=1,if=buff.tip_of_the_spear.stack<1&cooldown.flanking_strike.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||focus<30)))\nactions.sentst+=/mongoose_bite,if=buff.mongoose_fury.remains<gcd&buff.mongoose_fury.stack>0\nactions.sentst+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0&buff.lunar_storm_cooldown.remains>full_recharge_time&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.in>15)\nactions.sentst+=/mongoose_bite,if=buff.mongoose_fury.remains\nactions.sentst+=/explosive_shot\nactions.sentst+=/kill_shot\nactions.sentst+=/raptor_bite,cycle_targets=1,if=!talent.contagious_reagents\nactions.sentst+=/raptor_bite,cycle_targets=1\n\n# SENTINEL || DEFAULT SINGLE TARGET ACTIONLIST.\nactions.sentst+=/wildfire_bomb,if=!buff.lunar_storm_cooldown.remains\nactions.sentst+=/kill_command,cycle_targets=1,if=(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1)\nactions.sentst+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.sentst+=/flanking_strike,if=buff.tip_of_the_spear.stack>0\nactions.sentst+=/kill_command,if=buff.strike_it_rich.remains&buff.tip_of_the_spear.stack<1\nactions.sentst+=/mongoose_bite,if=buff.strike_it_rich.remains&buff.coordinated_assault.up\nactions.sentst+=/wildfire_bomb,if=(buff.lunar_storm_cooldown.remains>full_recharge_time-gcd)&(buff.tip_of_the_spear.stack>0&cooldown.wildfire_bomb.charges_fractional>1.7||cooldown.wildfire_bomb.charges_fractional>1.9)||(talent.bombardier&cooldown.coordinated_assault.remains<2*gcd)\nactions.sentst+=/butchery\nactions.sentst+=/coordinated_assault,if=!talent.bombardier||talent.bombardier&cooldown.wildfire_bomb.charges_fractional<1\nactions.sentst+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0\nactions.sentst+=/kill_command,cycle_targets=1,if=buff.tip_of_the_spear.stack<1&cooldown.flanking_strike.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||focus<30)))\nactions.sentst+=/mongoose_bite,if=buff.mongoose_fury.remains<gcd&buff.mongoose_fury.stack>0\nactions.sentst+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0&buff.lunar_storm_cooldown.remains>full_recharge_time&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.in>15)\nactions.sentst+=/mongoose_bite,if=buff.mongoose_fury.remains\nactions.sentst+=/explosive_shot\nactions.sentst+=/kill_shot\nactions.sentst+=/raptor_bite,cycle_targets=1,if=!talent.contagious_reagents\nactions.sentst+=/raptor_bite,cycle_targets=1",
|
|
["spec"] = 255,
|
|
},
|
|
},
|
|
},
|
|
["Quillick - Thunderhorn"] = {
|
|
["runOnce"] = {
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_73"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_71"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_72"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
},
|
|
["specs"] = {
|
|
[73] = {
|
|
["nameplateRange"] = 8,
|
|
["debuffPadding"] = 0,
|
|
["settings"] = {
|
|
["overlap_ignore_pain"] = false,
|
|
["shield_wall_amount"] = 50,
|
|
["last_stand_condition"] = false,
|
|
["shockwave_interrupt"] = true,
|
|
["rallying_cry_condition"] = false,
|
|
["shield_wall_condition"] = false,
|
|
["shield_wall_health"] = 50,
|
|
["last_stand_offensively"] = false,
|
|
["rallying_cry_health"] = 50,
|
|
["stack_shield_block"] = false,
|
|
["stance_weaving"] = false,
|
|
["rallying_cry_amount"] = 50,
|
|
["last_stand_amount"] = 50,
|
|
["last_stand_health"] = 50,
|
|
["free_revenge"] = true,
|
|
["reserve_rage"] = 35,
|
|
},
|
|
["potion"] = "potion_of_unbridled_fury",
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["maxTime"] = 33,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[71] = {
|
|
["nameplateRange"] = 8,
|
|
["debuffPadding"] = 0,
|
|
["settings"] = {
|
|
["shockwave_interrupt"] = true,
|
|
["heroic_charge"] = false,
|
|
},
|
|
["potion"] = "potion_of_unbridled_fury",
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["maxTime"] = 33,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[72] = {
|
|
["nameplateRange"] = 8,
|
|
["debuffPadding"] = 0,
|
|
["settings"] = {
|
|
["check_ww_range"] = false,
|
|
["shockwave_interrupt"] = true,
|
|
["t30_bloodthirst_crit"] = 95,
|
|
["heroic_charge"] = false,
|
|
},
|
|
["potion"] = "potion_of_unbridled_fury",
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["maxTime"] = 33,
|
|
["buffPadding"] = 0,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Arms"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20240910,
|
|
["author"] = "SimulationCraft",
|
|
["desc"] = "2024-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 || buff.sudden_death.stack = 2",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains >= gcd.max * 4 || buff.colossus_smash.remains >= gcd.max * 4",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.opportunist.up",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.martial_prowess.down",
|
|
["action"] = "cleave",
|
|
},
|
|
{
|
|
["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"] = "raid_event.adds.in > 15",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "demolish",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["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"] = "buff.collateral_damage.up & buff.merciless_bonegrinder.up",
|
|
["action"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.rend.remains",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ravager",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sweeping_strikes",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unhinged.enabled || talent.merciless_bonegrinder.enabled",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "cleave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "demolish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unhinged.enabled",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["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.sweeping_strikes.up",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_death.up & buff.imminent_demise.stack < 3",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["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"] = "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"] = "talent.dreadnaught.enabled",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["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"] = "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 )",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 40",
|
|
["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",
|
|
["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",
|
|
["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",
|
|
["srtict"] = "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 & ( raid_event.adds.in > 15 || ! raid_event.adds.exists )",
|
|
["description"] = "Variables",
|
|
["var_name"] = "st_planning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies >= 2 & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.remains > 5 )",
|
|
["var_name"] = "adds_remain",
|
|
},
|
|
{
|
|
["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"] = "action.overpower.charges = 2 & talent.dreadnaught.enabled || buff.sweeping_strikes.up",
|
|
["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 & debuff.colossus_smash.up",
|
|
["action"] = "demolish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.down",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avatar.up || debuff.colossus_smash.up & cooldown.avatar.remains >= 35",
|
|
["action"] = "demolish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.recklessness_warlords_torment.up || buff.sweeping_strikes.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges = 2 || buff.sweeping_strikes.up",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["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"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fervor_of_battle.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20240910,
|
|
["warnings"] = "The import for 'colossus_aoe' required some automated changes.\nLine 9: Converted 'talent.unhinged' to 'talent.unhinged.enabled' (1x).\nLine 9: Converted 'talent.merciless_bonegrinder' to 'talent.merciless_bonegrinder.enabled' (1x).\nLine 14: Converted 'talent.unhinged' to 'talent.unhinged.enabled' (1x).\n\nThe import for 'slayer_aoe' required some automated changes.\nLine 17: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\n\nThe import for 'colossus_execute' required some automated changes.\nLine 2: Converted 'talent.bloodletting' to 'talent.bloodletting.enabled' (1x).\n\nThe import for 'slayer_execute' required some automated changes.\nLine 2: Converted 'talent.bloodletting' to 'talent.bloodletting.enabled' (1x).\nLine 9: Converted 'talent.executioners_precision' to 'talent.executioners_precision.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 9: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\nLine 20: 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",
|
|
["spec"] = 71,
|
|
["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,srtict=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=raid_event.adds.in>15\nactions.colossus_st+=/colossus_smash\nactions.colossus_st+=/warbreaker\nactions.colossus_st+=/mortal_strike\nactions.colossus_st+=/demolish\nactions.colossus_st+=/skullsplitter\nactions.colossus_st+=/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+=/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)\nactions.colossus_execute+=/execute,if=rage>=40\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+=/overpower,if=action.overpower.charges=2&talent.dreadnaught||buff.sweeping_strikes.up\nactions.colossus_sweep+=/mortal_strike,if=buff.sweeping_strikes.up\nactions.colossus_sweep+=/skullsplitter,if=buff.sweeping_strikes.up\nactions.colossus_sweep+=/demolish,if=buff.sweeping_strikes.up&debuff.colossus_smash.up\nactions.colossus_sweep+=/mortal_strike,if=buff.sweeping_strikes.down\nactions.colossus_sweep+=/demolish,if=buff.avatar.up||debuff.colossus_smash.up&cooldown.avatar.remains>=35\nactions.colossus_sweep+=/execute,if=buff.recklessness_warlords_torment.up||buff.sweeping_strikes.up\nactions.colossus_sweep+=/overpower,if=charges=2||buff.sweeping_strikes.up\nactions.colossus_sweep+=/execute\nactions.colossus_sweep+=/thunder_clap,if=dot.rend.remains<=8&buff.sweeping_strikes.down\nactions.colossus_sweep+=/rend,if=dot.rend.remains<=5\nactions.colossus_sweep+=/cleave,if=talent.fervor_of_battle\nactions.colossus_sweep+=/whirlwind,if=talent.fervor_of_battle\nactions.colossus_sweep+=/slam\n\nactions.colossus_aoe+=/cleave,if=buff.collateral_damage.up&buff.merciless_bonegrinder.up\nactions.colossus_aoe+=/thunder_clap,if=!dot.rend.remains\nactions.colossus_aoe+=/thunderous_roar\nactions.colossus_aoe+=/avatar\nactions.colossus_aoe+=/ravager\nactions.colossus_aoe+=/sweeping_strikes\nactions.colossus_aoe+=/skullsplitter,if=buff.sweeping_strikes.up\nactions.colossus_aoe+=/warbreaker\nactions.colossus_aoe+=/bladestorm,if=talent.unhinged||talent.merciless_bonegrinder\nactions.colossus_aoe+=/champions_spear\nactions.colossus_aoe+=/colossus_smash\nactions.colossus_aoe+=/cleave\nactions.colossus_aoe+=/demolish,if=buff.sweeping_strikes.up\nactions.colossus_aoe+=/bladestorm,if=talent.unhinged\nactions.colossus_aoe+=/overpower\nactions.colossus_aoe+=/mortal_strike,if=buff.sweeping_strikes.up\nactions.colossus_aoe+=/overpower,if=buff.sweeping_strikes.up\nactions.colossus_aoe+=/execute,if=buff.sweeping_strikes.up\nactions.colossus_aoe+=/thunder_clap\nactions.colossus_aoe+=/mortal_strike\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||buff.sudden_death.stack=2\nactions.slayer_st+=/bladestorm,if=cooldown.colossus_smash.remains>=gcd*4||buff.colossus_smash.remains>=gcd*4\nactions.slayer_st+=/overpower,if=buff.opportunist.up\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,if=buff.martial_prowess.down\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\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\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+=/overpower,if=buff.sweeping_strikes.up\nactions.slayer_aoe+=/execute,if=buff.sudden_death.up&buff.imminent_demise.stack<3\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+=/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+=/overpower,if=talent.dreadnaught\nactions.slayer_aoe+=/thunder_clap\nactions.slayer_aoe+=/overpower\nactions.slayer_aoe+=/execute\nactions.slayer_aoe+=/mortal_strike\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&(raid_event.adds.in>15||!raid_event.adds.exists)\nactions.variables+=/variable,name=adds_remain,value=active_enemies>=2&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.remains>5)\nactions.variables+=/variable,name=execute_phase,value=(talent.massacre.enabled&target.health.pct<35)||target.health.pct<20",
|
|
},
|
|
["Protection Warrior"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20240908,
|
|
["spec"] = 73,
|
|
["desc"] = "2024-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+=/shield_wall,if=talent.immovable_object.enabled&buff.avatar.down\nactions+=/blood_fury\nactions+=/berserking\nactions+=/arcane_torrent\nactions+=/lights_judgment\nactions+=/fireblood\nactions+=/ancestral_call\nactions+=/bag_of_tricks\nactions+=/potion,if=buff.avatar.up||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,if=(target.health.pct>=90&talent.unnerving_focus.enabled||target.health.pct<=20&talent.unnerving_focus.enabled)||talent.bolster.enabled||set_bonus.tier30_2pc||set_bonus.tier30_4pc\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"] = 20240908,
|
|
["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,
|
|
["criteria"] = "talent.immovable_object.enabled & buff.avatar.down",
|
|
["action"] = "shield_wall",
|
|
},
|
|
{
|
|
["action"] = "blood_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "berserking",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bag_of_tricks",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avatar.up || buff.avatar.up & target.health.pct <= 20",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ignore_pain",
|
|
["criteria"] = "target.health.pct >= 20 & ( rage.deficit <= 15 & cooldown.shield_slam.ready || rage.deficit <= 40 & cooldown.shield_charge.ready & talent.champions_bulwark.enabled || rage.deficit <= 20 & cooldown.shield_charge.ready || rage.deficit <= 30 & cooldown.demoralizing_shout.ready & talent.booming_voice.enabled || rage.deficit <= 20 & cooldown.avatar.ready || rage.deficit <= 45 & cooldown.demoralizing_shout.ready & talent.booming_voice.enabled & buff.last_stand.up & talent.unnerving_focus.enabled || rage.deficit <= 30 & cooldown.avatar.ready & buff.last_stand.up & talent.unnerving_focus.enabled || rage.deficit <= 20 || rage.deficit <= 40 & cooldown.shield_slam.ready & buff.violent_outburst.up & talent.heavy_repercussions.enabled & talent.impenetrable_wall.enabled || rage.deficit <= 55 & cooldown.shield_slam.ready & buff.violent_outburst.up & buff.last_stand.up & talent.unnerving_focus.enabled & talent.heavy_repercussions.enabled & talent.impenetrable_wall.enabled || rage.deficit <= 17 & cooldown.shield_slam.ready & talent.heavy_repercussions.enabled || rage.deficit <= 18 & cooldown.shield_slam.ready & talent.impenetrable_wall.enabled ) || ( rage >= 70 || buff.seeing_red.stack = 7 & rage >= 35 ) & cooldown.shield_slam.remains <= 1 & buff.shield_block.remains >= 4 & set_bonus.tier31_2pc",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( target.health.pct >= 90 & talent.unnerving_focus.enabled || target.health.pct <= 20 & talent.unnerving_focus.enabled ) || talent.bolster.enabled || set_bonus.tier30_2pc || set_bonus.tier30_4pc",
|
|
["action"] = "last_stand",
|
|
},
|
|
{
|
|
["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,
|
|
},
|
|
},
|
|
},
|
|
["author"] = "SimulationCraft",
|
|
},
|
|
["Fury"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20240910,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-09-03, 09-05, 09-10: 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+=/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=(raid_event.movement.distance>25&raid_event.movement.in>45)\nactions+=/potion\nactions+=/call_action_list,name=trinkets\nactions+=/call_action_list,name=variables\nactions+=/lights_judgment,if=variable.on_gcd_racials\nactions+=/bag_of_tricks,if=variable.on_gcd_racials\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_st,strict=1,if=talent.slayers_dominance&active_enemies=1\nactions+=/run_action_list,name=slayer_mt,strict=1,if=talent.slayers_dominance&active_enemies>1\nactions+=/run_action_list,name=thane_st,strict=1,if=!talent.slayers_dominance&active_enemies=1\nactions+=/run_action_list,name=thane_mt,strict=1,if=!talent.slayers_dominance&active_enemies>1\n\nactions.slayer_st+=/recklessness,if=(!talent.anger_management&cooldown.avatar.remains<1&talent.titans_torment)||talent.anger_management||!talent.titans_torment\nactions.slayer_st+=/avatar,if=(talent.titans_torment&(buff.enrage.up||talent.titanic_rage)&(debuff.champions_might.up||!talent.champions_might))||!talent.titans_torment\nactions.slayer_st+=/thunderous_roar,if=buff.enrage.up\nactions.slayer_st+=/champions_spear,if=(buff.enrage.up&talent.titans_torment&cooldown.avatar.remains<gcd)||(buff.enrage.up&!talent.titans_torment)\nactions.slayer_st+=/odyns_fury,if=dot.odyns_fury_torment_mh.remains<1&(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.slayer_st+=/execute,if=debuff.marked_for_execution.stack=3||(talent.ashen_juggernaut&buff.ashen_juggernaut.remains<=gcd&buff.enrage.up)\nactions.slayer_st+=/rampage,if=talent.bladestorm&cooldown.bladestorm.remains<=gcd&!debuff.champions_might.up\nactions.slayer_st+=/bladestorm,if=buff.enrage.up&cooldown.avatar.remains>=9\nactions.slayer_st+=/onslaught,if=talent.tenderize&buff.brutal_finish.up\nactions.slayer_st+=/rampage,if=talent.anger_management\nactions.slayer_st+=/crushing_blow\nactions.slayer_st+=/onslaught,if=talent.tenderize\nactions.slayer_st+=/bloodbath,if=rage<100||target.health.pct<35&talent.vicious_contempt\nactions.slayer_st+=/raging_blow,if=rage<100&!buff.opportunist.up\nactions.slayer_st+=/rampage,if=talent.reckless_abandon\nactions.slayer_st+=/execute,if=buff.enrage.up&debuff.marked_for_execution.up\nactions.slayer_st+=/bloodthirst,if=!talent.reckless_abandon&buff.enrage.up\nactions.slayer_st+=/raging_blow\nactions.slayer_st+=/onslaught\nactions.slayer_st+=/execute\nactions.slayer_st+=/bloodthirst\nactions.slayer_st+=/whirlwind,if=talent.meat_cleaver\nactions.slayer_st+=/slam\nactions.slayer_st+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_mt+=/recklessness,if=(!talent.anger_management&cooldown.avatar.remains<1&talent.titans_torment)||talent.anger_management||!talent.titans_torment\nactions.slayer_mt+=/avatar,if=(talent.titans_torment&(buff.enrage.up||talent.titanic_rage)&(debuff.champions_might.up||!talent.champions_might))||!talent.titans_torment\nactions.slayer_mt+=/thunderous_roar,if=buff.enrage.up\nactions.slayer_mt+=/champions_spear,if=(buff.enrage.up&talent.titans_torment&cooldown.avatar.remains<gcd)||(buff.enrage.up&!talent.titans_torment)\nactions.slayer_mt+=/odyns_fury,if=dot.odyns_fury_torment_mh.remains<1&(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.slayer_mt+=/whirlwind,if=buff.meat_cleaver.stack=0&talent.meat_cleaver\nactions.slayer_mt+=/execute,if=talent.ashen_juggernaut&buff.ashen_juggernaut.remains<=gcd&buff.enrage.up\nactions.slayer_mt+=/rampage,if=talent.bladestorm&cooldown.bladestorm.remains<=gcd&!debuff.champions_might.up\nactions.slayer_mt+=/bladestorm,if=buff.enrage.up&cooldown.avatar.remains>=9\nactions.slayer_mt+=/onslaught,if=talent.tenderize&buff.brutal_finish.up\nactions.slayer_mt+=/rampage,if=talent.anger_management\nactions.slayer_mt+=/crushing_blow\nactions.slayer_mt+=/onslaught,if=talent.tenderize\nactions.slayer_mt+=/bloodbath,if=buff.enrage.up\nactions.slayer_mt+=/rampage,if=talent.reckless_abandon\nactions.slayer_mt+=/execute,if=buff.enrage.up&debuff.marked_for_execution.up\nactions.slayer_mt+=/bloodbath\nactions.slayer_mt+=/raging_blow,if=talent.slaughtering_strikes\nactions.slayer_mt+=/onslaught\nactions.slayer_mt+=/execute\nactions.slayer_mt+=/bloodthirst\nactions.slayer_mt+=/raging_blow\nactions.slayer_mt+=/whirlwind\nactions.slayer_mt+=/storm_bolt,if=buff.bladestorm.up\n\nactions.thane_st+=/recklessness,if=(!talent.anger_management&cooldown.avatar.remains<1&talent.titans_torment)||talent.anger_management||!talent.titans_torment\nactions.thane_st+=/thunder_blast,if=buff.enrage.up\nactions.thane_st+=/avatar,if=(talent.titans_torment&(buff.enrage.up||talent.titanic_rage)&(debuff.champions_might.up||!talent.champions_might))||!talent.titans_torment\nactions.thane_st+=/ravager\nactions.thane_st+=/thunderous_roar,if=buff.enrage.up\nactions.thane_st+=/champions_spear,if=buff.enrage.up&(cooldown.avatar.remains<gcd||!talent.titans_torment)\nactions.thane_st+=/odyns_fury,if=dot.odyns_fury_torment_mh.remains<1&(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.thane_st+=/execute,if=talent.ashen_juggernaut&buff.ashen_juggernaut.remains<=gcd&buff.enrage.up\nactions.thane_st+=/rampage,if=talent.bladestorm&cooldown.bladestorm.remains<=gcd&!debuff.champions_might.up\nactions.thane_st+=/bladestorm,if=buff.enrage.up&talent.unhinged\nactions.thane_st+=/rampage,if=talent.anger_management\nactions.thane_st+=/crushing_blow\nactions.thane_st+=/onslaught,if=talent.tenderize\nactions.thane_st+=/bloodbath\nactions.thane_st+=/rampage,if=talent.reckless_abandon\nactions.thane_st+=/raging_blow\nactions.thane_st+=/execute\nactions.thane_st+=/bloodthirst,if=buff.enrage.up&(!buff.burst_of_power.up||!talent.reckless_abandon)\nactions.thane_st+=/onslaught\nactions.thane_st+=/bloodthirst\nactions.thane_st+=/thunder_clap\nactions.thane_st+=/whirlwind,if=talent.meat_cleaver\nactions.thane_st+=/slam\n\nactions.thane_mt+=/recklessness,if=(!talent.anger_management&cooldown.avatar.remains<1&talent.titans_torment)||talent.anger_management||!talent.titans_torment\nactions.thane_mt+=/thunder_blast,if=buff.enrage.up\nactions.thane_mt+=/avatar,if=(talent.titans_torment&(buff.enrage.up||talent.titanic_rage)&(debuff.champions_might.up||!talent.champions_might))||!talent.titans_torment\nactions.thane_mt+=/thunder_clap,if=buff.meat_cleaver.stack=0&talent.meat_cleaver\nactions.thane_mt+=/thunderous_roar,if=buff.enrage.up\nactions.thane_mt+=/ravager\nactions.thane_mt+=/champions_spear,if=buff.enrage.up\nactions.thane_mt+=/odyns_fury,if=dot.odyns_fury_torment_mh.remains<1&(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.thane_mt+=/execute,if=talent.ashen_juggernaut&buff.ashen_juggernaut.remains<=gcd&buff.enrage.up\nactions.thane_mt+=/rampage,if=talent.bladestorm&cooldown.bladestorm.remains<=gcd&!debuff.champions_might.up\nactions.thane_mt+=/bladestorm,if=buff.enrage.up\nactions.thane_mt+=/rampage,if=talent.anger_management\nactions.thane_mt+=/crushing_blow,if=buff.enrage.up\nactions.thane_mt+=/onslaught,if=talent.tenderize\nactions.thane_mt+=/bloodbath\nactions.thane_mt+=/rampage,if=talent.reckless_abandon\nactions.thane_mt+=/bloodthirst\nactions.thane_mt+=/thunder_clap\nactions.thane_mt+=/onslaught\nactions.thane_mt+=/execute\nactions.thane_mt+=/raging_blow\nactions.thane_mt+=/whirlwind\n\n# Trinkets\n## actions.trinkets+=/do_treacherous_transmitter_task,use_off_gcd=1\nactions.trinkets+=/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.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)&((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.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)&((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.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&(raid_event.adds.in>15||!raid_event.adds.exists)\nactions.variables+=/variable,name=adds_remain,value=active_enemies>=2&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.remains>5)\nactions.variables+=/variable,name=execute_phase,value=(talent.massacre.enabled&target.health.pct<35)||target.health.pct<20\nactions.variables+=/variable,name=on_gcd_racials,value=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)",
|
|
["version"] = 20240910,
|
|
["warnings"] = "The import for 'slayer_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 10: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 12: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 13: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 15: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 17: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 22: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\n\nThe import for 'slayer_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 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).\nLine 11: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 13: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 15: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 18: Converted 'talent.slaughtering_strikes' to 'talent.slaughtering_strikes.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 13: Converted 'talent.slayers_dominance' to 'talent.slayers_dominance.enabled' (1x).\nLine 14: Converted 'talent.slayers_dominance' to 'talent.slayers_dominance.enabled' (1x).\nLine 15: Converted 'talent.slayers_dominance' to 'talent.slayers_dominance.enabled' (1x).\nLine 16: Converted 'talent.slayers_dominance' to 'talent.slayers_dominance.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 5: Converted '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).\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.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 '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 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.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 '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 9: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 9: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 10: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 10: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (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.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.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.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 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.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 13: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\n\nThe import for 'thane_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 11: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 13: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 15: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 18: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 22: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.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 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 2: Converted 'talent.titans_torment' to 'talent.titans_torment.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.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 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 3: Converted 'talent.titans_torment' to 'talent.titans_torment.enabled' (1x).\nLine 3: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 3: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 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 'thane_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.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 14: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 16: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\n\nImported 8 action lists.\n",
|
|
["spec"] = 72,
|
|
["lists"] = {
|
|
["slayer_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 <= 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 >= 9",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled & buff.brutal_finish.up",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.anger_management.enabled",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["action"] = "crushing_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage < 100 || target.health.pct < 35 & talent.vicious_contempt.enabled",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage < 100 & ! buff.opportunist.up",
|
|
["action"] = "raging_blow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.reckless_abandon.enabled",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & debuff.marked_for_execution.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.reckless_abandon.enabled & buff.enrage.up",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["action"] = "raging_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "onslaught",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodthirst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.meat_cleaver.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["slayer_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"] = "( 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 >= 9",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled & buff.brutal_finish.up",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.anger_management.enabled",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["action"] = "crushing_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.reckless_abandon.enabled",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & debuff.marked_for_execution.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "bloodbath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.slaughtering_strikes.enabled",
|
|
["action"] = "raging_blow",
|
|
},
|
|
{
|
|
["action"] = "onslaught",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["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_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.anger_management.enabled",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "crushing_blow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["action"] = "bloodbath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.reckless_abandon.enabled",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["action"] = "bloodthirst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "onslaught",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "raging_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "whirlwind",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "battle_shout",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["toggle"] = "on",
|
|
["action"] = "berserker_stance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["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 )",
|
|
["var_name"] = "trinket_1_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["criteria"] = "trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration % cooldown.avatar.duration = 0 || trinket.t2.cooldown.duration % cooldown.odyns_fury.duration = 0 )",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_stat.any_dps & ! variable.trinket_1_exclude )",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_stat.any_dps & ! variable.trinket_2_exclude )",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / trinket.t2.buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_1_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_2_manual",
|
|
},
|
|
},
|
|
["thane_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",
|
|
["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.anger_management.enabled",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["action"] = "crushing_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["action"] = "bloodbath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.reckless_abandon.enabled",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["action"] = "raging_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & ( ! buff.burst_of_power.up || ! talent.reckless_abandon.enabled )",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["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,
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["description"] = "Trinkets",
|
|
["criteria"] = "variable.adds_remain || variable.st_planning",
|
|
["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 ) & ( ( 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",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.debuff.casting.react",
|
|
["action"] = "pummel",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time <= 0.5 || movement.distance > 5",
|
|
["action"] = "charge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( raid_event.movement.distance > 25 & raid_event.movement.in > 45 )",
|
|
["action"] = "heroic_leap",
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "variables",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.on_gcd_racials",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.on_gcd_racials",
|
|
["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 & active_enemies = 1",
|
|
["list_name"] = "slayer_st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.slayers_dominance.enabled & active_enemies > 1",
|
|
["list_name"] = "slayer_mt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.slayers_dominance.enabled & active_enemies = 1",
|
|
["list_name"] = "thane_st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.slayers_dominance.enabled & active_enemies > 1",
|
|
["list_name"] = "thane_mt",
|
|
},
|
|
},
|
|
["variables"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies = 1 & ( raid_event.adds.in > 15 || ! raid_event.adds.exists )",
|
|
["description"] = "Variables",
|
|
["var_name"] = "st_planning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies >= 2 & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.remains > 5 )",
|
|
["var_name"] = "adds_remain",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( talent.massacre.enabled & target.health.pct < 35 ) || target.health.pct < 20",
|
|
["var_name"] = "execute_phase",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.recklessness.down & buff.avatar.down & rage < 80 & buff.bloodbath.down & buff.crushing_blow.down & buff.sudden_death.down & ! cooldown.bladestorm.ready & ( ! cooldown.execute.ready || ! variable.execute_phase )",
|
|
["var_name"] = "on_gcd_racials",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["Quillzana - Thunderhorn"] = {
|
|
["runOnce"] = {
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["enabledArcaneMageOnce_20190309"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
},
|
|
["specs"] = {
|
|
[64] = {
|
|
["maxRefresh"] = 10,
|
|
["custom2Name"] = "Custom 2",
|
|
["throttleRefresh"] = false,
|
|
["settings"] = {
|
|
["rotation"] = "standard",
|
|
},
|
|
["aoe"] = 3,
|
|
["gcdSync"] = true,
|
|
["damageDots"] = false,
|
|
["damage"] = true,
|
|
["enabled"] = true,
|
|
["debuffPadding"] = 0,
|
|
["maxTime"] = 33,
|
|
["custom1Name"] = "Custom 1",
|
|
["package"] = "Frost Mage",
|
|
["buffPadding"] = 0,
|
|
["nameplateRange"] = 8,
|
|
["cycle_min"] = 6,
|
|
["cycle"] = false,
|
|
["potion"] = "potion_of_focused_resolve",
|
|
["nameplates"] = false,
|
|
["potionsReset"] = 20180919.1,
|
|
["damageExpiration"] = 6,
|
|
["throttleTime"] = false,
|
|
["damageRange"] = 0,
|
|
},
|
|
[63] = {
|
|
["maxRefresh"] = 10,
|
|
["custom2Name"] = "Custom 2",
|
|
["throttleRefresh"] = false,
|
|
["settings"] = {
|
|
["no_scorch_blast"] = true,
|
|
["prevent_hardcasts"] = false,
|
|
["reserve_runes"] = 1,
|
|
["pyroblast_pull"] = false,
|
|
},
|
|
["aoe"] = 3,
|
|
["gcdSync"] = false,
|
|
["damageDots"] = false,
|
|
["damage"] = true,
|
|
["enabled"] = true,
|
|
["debuffPadding"] = 0,
|
|
["maxTime"] = 33,
|
|
["custom1Name"] = "Custom 1",
|
|
["package"] = "Fire",
|
|
["buffPadding"] = 0,
|
|
["nameplateRange"] = 8,
|
|
["cycle_min"] = 6,
|
|
["cycle"] = false,
|
|
["potion"] = "potion_of_unbridled_fury",
|
|
["nameplates"] = false,
|
|
["potionsReset"] = 20180919.1,
|
|
["damageExpiration"] = 6,
|
|
["throttleTime"] = false,
|
|
["damageRange"] = 0,
|
|
},
|
|
[62] = {
|
|
["maxRefresh"] = 10,
|
|
["custom2Name"] = "Custom 2",
|
|
["throttleRefresh"] = false,
|
|
["aoe"] = 3,
|
|
["gcdSync"] = true,
|
|
["damageDots"] = false,
|
|
["damage"] = true,
|
|
["enabled"] = true,
|
|
["debuffPadding"] = 0,
|
|
["maxTime"] = 33,
|
|
["custom1Name"] = "Custom 1",
|
|
["package"] = "Arcane",
|
|
["buffPadding"] = 0,
|
|
["nameplateRange"] = 8,
|
|
["cycle_min"] = 6,
|
|
["cycle"] = false,
|
|
["potion"] = "potion_of_focused_resolve",
|
|
["nameplates"] = true,
|
|
["potionsReset"] = 20180919.1,
|
|
["damageExpiration"] = 6,
|
|
["throttleTime"] = false,
|
|
["damageRange"] = 0,
|
|
},
|
|
},
|
|
["displays"] = {
|
|
["Interrupts"] = {
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Frost Mage"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20200305,
|
|
["author"] = "SimC",
|
|
["desc"] = "# Frost Mage\n# https://github.com/simulationcraft/simc/\n# March 5, 2020\n\n# Changes:\n# - Use 'time_to_die' instead of 'target.time_to_die' for last second CD usage.\n# - Redo priority forks for rotation.standard/frozen_orb/no_ice_lance.",
|
|
["lists"] = {
|
|
["single_no_lance"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ebonbolt.enabled & prev_gcd.1.ebonbolt & buff.brain_freeze.react",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.glacial_spike & buff.brain_freeze.react",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "essences",
|
|
},
|
|
{
|
|
["action"] = "frozen_orb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 || active_enemies > 1 & ! talent.splitting_ice.enabled",
|
|
["action"] = "blizzard",
|
|
},
|
|
{
|
|
["action"] = "comet_storm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stack = 5 & ! buff.brain_freeze.react",
|
|
["action"] = "ebonbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.brain_freeze.react & ( buff.fingers_of_frost.react || prev_gcd.1.flurry ) & ( buff.icicles.max_stack - buff.icicles.stack ) * action.frostbolt.execute_time + action.glacial_spike.cast_time + action.glacial_spike.travel_time < incanters_flow_time_to.5.any & buff.memory_of_lucid_dreams.down",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.brain_freeze.react || prev_gcd.1.ebonbolt || talent.incanters_flow.enabled & cast_time + travel_time > incanters_flow_time_to.5.up & cast_time + travel_time < incanters_flow_time_to.4.down",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
},
|
|
["essences"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = "1",
|
|
["criteria"] = "rotation.frozen_orb",
|
|
["list_name"] = "essences_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = "1",
|
|
["criteria"] = "! rotation.frozen_orb",
|
|
["list_name"] = "essences_default",
|
|
},
|
|
},
|
|
["single_standard"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ebonbolt.enabled & prev_gcd.1.ebonbolt & ( ! talent.glacial_spike.enabled || buff.icicles.stack < 4 || buff.brain_freeze.react )",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.glacial_spike.enabled & prev_gcd.1.glacial_spike & buff.brain_freeze.react",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.frostbolt & buff.brain_freeze.react & ( ! talent.glacial_spike.enabled || buff.icicles.stack < 4 )",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "essences",
|
|
},
|
|
{
|
|
["action"] = "frozen_orb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 || active_enemies > 1 & cast_time = 0 & buff.fingers_of_frost.react < 2",
|
|
["action"] = "blizzard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.react",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["action"] = "comet_storm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ebonbolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! action.frozen_orb.in_flight & ground_aoe.frozen_orb.remains = 0",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cast_time = 0 || active_enemies > 1",
|
|
["action"] = "blizzard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.brain_freeze.react || prev_gcd.1.ebonbolt || active_enemies > 1 & talent.splitting_ice.enabled",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
},
|
|
["talent_rop"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.glacial_spike.enabled & buff.icicles.stack = 5 & ( buff.brain_freeze.react || talent.ebonbolt.enabled & cooldown.ebonbolt.remains < cast_time )",
|
|
["action"] = "rune_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.glacial_spike.enabled & ( talent.ebonbolt.enabled & cooldown.ebonbolt.remains < cast_time || talent.comet_storm.enabled & cooldown.comet_storm.remains < cast_time || talent.ray_of_frost.enabled & cooldown.ray_of_frost.remains < cast_time || charges_fractional > 1.9 )",
|
|
["action"] = "rune_of_power",
|
|
},
|
|
},
|
|
["single_orb"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "essences",
|
|
},
|
|
{
|
|
["action"] = "frozen_orb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.ebonbolt & buff.brain_freeze.react",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 || active_enemies > 1 & cast_time = 0",
|
|
["action"] = "blizzard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.react & cooldown.frozen_orb.remains > 5 || buff.fingers_of_frost.react = 2",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cast_time = 0",
|
|
["action"] = "blizzard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.ebonbolt",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.brain_freeze.react & ( prev_gcd.1.frostbolt || debuff.packed_ice.remains > execute_time + action.ice_lance.travel_time )",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["action"] = "comet_storm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ebonbolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ray_of_frost",
|
|
["interrupt_if"] = "buff.fingers_of_frost.react=2",
|
|
["interrupt_immediate"] = "1",
|
|
["criteria"] = "debuff.packed_ice.up",
|
|
},
|
|
{
|
|
["action"] = "blizzard",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["essences_orb"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down & debuff.packed_ice.down || active_enemies > 3",
|
|
["action"] = "focused_azerite_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 5 & debuff.packed_ice.down & cooldown.frozen_orb.remains > 5 & ! action.frozen_orb.in_flight & ground_aoe.frozen_orb.remains = 0",
|
|
["action"] = "memory_of_lucid_dreams",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.frozen_orb || ground_aoe.frozen_orb.remains > 5",
|
|
["action"] = "blood_of_the_enemy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down & debuff.packed_ice.down || active_enemies > 3",
|
|
["action"] = "purifying_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down & debuff.packed_ice.down || active_enemies > 3",
|
|
["action"] = "ripple_in_space",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down & debuff.packed_ice.down",
|
|
["action"] = "concentrated_flame",
|
|
["line_cd"] = "6",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down & debuff.packed_ice.down",
|
|
["action"] = "reaping_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down & debuff.packed_ice.down & cooldown.frozen_orb.remains < 4 || active_enemies > 3",
|
|
["action"] = "worldvein_resonance",
|
|
},
|
|
},
|
|
["essences_default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down || active_enemies > 3",
|
|
["action"] = "focused_azerite_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 5 & ( buff.icicles.stack <= 1 || ! talent.glacial_spike.enabled ) & cooldown.frozen_orb.remains > 10 & ( ! rotation.standard || ! action.frozen_orb.in_flight & ground_aoe.frozen_orb.remains = 0 )",
|
|
["action"] = "memory_of_lucid_dreams",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.glacial_spike.enabled & buff.icicles.stack = 5 & ( buff.brain_freeze.react || prev_gcd.1.ebonbolt ) ) || ( ( active_enemies > 3 || ! talent.glacial_spike.enabled ) & ( prev_gcd.1.frozen_orb || ground_aoe.frozen_orb.remains > 5 ) )",
|
|
["action"] = "blood_of_the_enemy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down || active_enemies > 3",
|
|
["action"] = "purifying_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down || active_enemies > 3",
|
|
["action"] = "ripple_in_space",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down",
|
|
["action"] = "concentrated_flame",
|
|
["line_cd"] = "6",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down",
|
|
["action"] = "reaping_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down || active_enemies > 3",
|
|
["action"] = "worldvein_resonance",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "counterspell",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! rotation.no_ice_lance & prev_gcd.1.flurry & ! buff.fingers_of_frost.react",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies > 3 & talent.freezing_rain.enabled || active_enemies > 4",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "single",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "arcane_intellect",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "water_elemental",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["action"] = "mirror_image",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "frostbolt",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["action"] = "guardian_of_azeroth",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "icy_veins",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mirror_image",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.frozen_orb || time_to_die > 10 + cast_time & time_to_die < 20",
|
|
["action"] = "rune_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "talent.rune_of_power.enabled & active_enemies = 1 & cooldown.rune_of_power.full_recharge_time < cooldown.frozen_orb.remains",
|
|
["list_name"] = "talent_rop",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.icy_veins || time_to_die < 30",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.glacial_spike.enabled || buff.brain_freeze.react & prev_gcd.1.glacial_spike",
|
|
["name"] = "balefire_branch",
|
|
["action"] = "balefire_branch",
|
|
},
|
|
{
|
|
["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,
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["action"] = "frozen_orb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blizzard",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "essences",
|
|
},
|
|
{
|
|
["action"] = "comet_storm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ice_nova",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.ebonbolt || buff.brain_freeze.react & ( prev_gcd.1.frostbolt & ( buff.icicles.stack < 4 || ! talent.glacial_spike.enabled ) || prev_gcd.1.glacial_spike )",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.react",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["action"] = "ray_of_frost",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ebonbolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "glacial_spike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "cone_of_cold",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icy_veins.down & buff.rune_of_power.down",
|
|
["name"] = "tidestorm_codex",
|
|
["action"] = "tidestorm_codex",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icy_veins.down & buff.rune_of_power.down",
|
|
["action"] = "cyclotronic_blast",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["action"] = "frostbolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "movement",
|
|
},
|
|
{
|
|
["action"] = "ice_lance",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["movement"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "movement.distance > 10",
|
|
["action"] = "blink_any",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ice_floes.down",
|
|
["action"] = "ice_floes",
|
|
},
|
|
},
|
|
["single"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.ice_nova.ready & debuff.winters_chill.up",
|
|
["action"] = "ice_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = "1",
|
|
["criteria"] = "rotation.standard",
|
|
["list_name"] = "single_standard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = "1",
|
|
["criteria"] = "rotation.no_ice_lance",
|
|
["list_name"] = "single_no_lance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = "1",
|
|
["criteria"] = "rotation.frozen_orb",
|
|
["list_name"] = "single_orb",
|
|
},
|
|
{
|
|
["action"] = "ice_nova",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icy_veins.down & buff.rune_of_power.down",
|
|
["name"] = "tidestorm_codex",
|
|
["action"] = "tidestorm_codex",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icy_veins.down & buff.rune_of_power.down",
|
|
["action"] = "cyclotronic_blast",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["action"] = "frostbolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "movement",
|
|
},
|
|
{
|
|
["action"] = "ice_lance",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20200305,
|
|
["warnings"] = "WARNING: The import for 'movement' required some automated changes.\nLine 1: Unsupported action 'blink_any'.\n\nImported 13 action lists.\n",
|
|
["profile"] = "# Frost Mage\n# https://github.com/simulationcraft/simc/\n# March 5, 2020\n\n# Changes:\n# - Use 'time_to_die' instead of 'target.time_to_die' for last second CD usage.\n# - Redo priority forks for rotation.standard/frozen_orb/no_ice_lance.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/food\n# actions.precombat+=/augmentation\nactions.precombat+=/arcane_intellect\nactions.precombat+=/summon_water_elemental\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/mirror_image\nactions.precombat+=/potion\nactions.precombat+=/frostbolt\n\n# Executed every time the actor is available.\nactions=counterspell\n# If the mage has FoF after casting instant Flurry, we can delay the Ice Lance and use other high priority action, if available.\nactions+=/ice_lance,if=!rotation.no_ice_lance&prev_gcd.1.flurry&!buff.fingers_of_frost.react\nactions+=/call_action_list,name=cooldowns\n# The target threshold isn't exact. Between 3-5 targets, the differences between the ST and AoE action lists are rather small. However, Freezing Rain prefers using AoE action list sooner as it benefits greatly from the high priority Blizzard action.\nactions+=/call_action_list,name=aoe,if=active_enemies>3&talent.freezing_rain.enabled||active_enemies>4\nactions+=/call_action_list,name=single\n\n# With Freezing Rain, it's better to prioritize using Frozen Orb when both FO and Blizzard are off cooldown. Without Freezing Rain, the converse is true although the difference is miniscule until very high target counts.\nactions.aoe=frozen_orb\nactions.aoe+=/blizzard\nactions.aoe+=/call_action_list,name=essences\nactions.aoe+=/comet_storm\nactions.aoe+=/ice_nova\n# Simplified Flurry conditions from the ST action list. Since the mage is generating far less Brain Freeze charges, the exact condition here isn't all that important.\nactions.aoe+=/flurry,if=prev_gcd.1.ebonbolt||buff.brain_freeze.react&(prev_gcd.1.frostbolt&(buff.icicles.stack<4||!talent.glacial_spike.enabled)||prev_gcd.1.glacial_spike)\nactions.aoe+=/ice_lance,if=buff.fingers_of_frost.react\n# The mage will generally be generating a lot of FoF charges when using the AoE action list. Trying to delay Ray of Frost until there are no FoF charges and no active Frozen Orbs would lead to it not being used at all.\nactions.aoe+=/ray_of_frost\nactions.aoe+=/ebonbolt\nactions.aoe+=/glacial_spike\n# Using Cone of Cold is mostly DPS neutral with the AoE target thresholds. It only becomes decent gain with roughly 7 or more targets.\nactions.aoe+=/cone_of_cold\nactions.aoe+=/use_item,name=tidestorm_codex,if=buff.icy_veins.down&buff.rune_of_power.down\nactions.aoe+=/use_item,effect_name=cyclotronic_blast,if=buff.icy_veins.down&buff.rune_of_power.down\nactions.aoe+=/frostbolt\nactions.aoe+=/call_action_list,name=movement\nactions.aoe+=/ice_lance\n\nactions.cooldowns=guardian_of_azeroth\nactions.cooldowns+=/icy_veins\nactions.cooldowns+=/mirror_image\n# Rune of Power is always used with Frozen Orb. Any leftover charges at the end of the fight should be used, ideally if the boss doesn't die in the middle of the Rune buff.\nactions.cooldowns+=/rune_of_power,if=prev_gcd.1.frozen_orb||time_to_die>10+cast_time&time_to_die<20\n# On single target fights, the cooldown of Rune of Power is lower than the cooldown of Frozen Orb, this gives extra Rune of Power charges that should be used with active talents, if possible.\nactions.cooldowns+=/call_action_list,name=talent_rop,if=talent.rune_of_power.enabled&active_enemies=1&cooldown.rune_of_power.full_recharge_time<cooldown.frozen_orb.remains\nactions.cooldowns+=/potion,if=prev_gcd.1.icy_veins||time_to_die<30\nactions.cooldowns+=/use_item,name=balefire_branch,if=!talent.glacial_spike.enabled||buff.brain_freeze.react&prev_gcd.1.glacial_spike\nactions.cooldowns+=/use_items\nactions.cooldowns+=/blood_fury\nactions.cooldowns+=/berserking\nactions.cooldowns+=/lights_judgment\nactions.cooldowns+=/fireblood\nactions.cooldowns+=/ancestral_call\nactions.cooldowns+=/bag_of_tricks\n\n# Essences: Standard and No Ice Lance\nactions.essences_default=focused_azerite_beam,if=buff.rune_of_power.down||active_enemies>3\nactions.essences_default+=/memory_of_lucid_dreams,if=active_enemies<5&(buff.icicles.stack<=1||!talent.glacial_spike.enabled)&cooldown.frozen_orb.remains>10&(!rotation.standard||!action.frozen_orb.in_flight&ground_aoe.frozen_orb.remains=0)\nactions.essences_default+=/blood_of_the_enemy,if=(talent.glacial_spike.enabled&buff.icicles.stack=5&(buff.brain_freeze.react||prev_gcd.1.ebonbolt))||((active_enemies>3||!talent.glacial_spike.enabled)&(prev_gcd.1.frozen_orb||ground_aoe.frozen_orb.remains>5))\nactions.essences_default+=/purifying_blast,if=buff.rune_of_power.down||active_enemies>3\nactions.essences_default+=/ripple_in_space,if=buff.rune_of_power.down||active_enemies>3\nactions.essences_default+=/concentrated_flame,line_cd=6,if=buff.rune_of_power.down\nactions.essences_default+=/reaping_flames,if=buff.rune_of_power.down\nactions.essences_default+=/the_unbound_force,if=buff.reckless_force.up\nactions.essences_default+=/worldvein_resonance,if=buff.rune_of_power.down||active_enemies>3\n\n# Essences: Frozen Orb\nactions.essences_orb+=/focused_azerite_beam,if=buff.rune_of_power.down&debuff.packed_ice.down||active_enemies>3\nactions.essences_orb+=/memory_of_lucid_dreams,if=active_enemies<5&debuff.packed_ice.down&cooldown.frozen_orb.remains>5&!action.frozen_orb.in_flight&ground_aoe.frozen_orb.remains=0\nactions.essences_orb+=/blood_of_the_enemy,if=prev_gcd.1.frozen_orb||ground_aoe.frozen_orb.remains>5\nactions.essences_orb+=/purifying_blast,if=buff.rune_of_power.down&debuff.packed_ice.down||active_enemies>3\nactions.essences_orb+=/ripple_in_space,if=buff.rune_of_power.down&debuff.packed_ice.down||active_enemies>3\nactions.essences_orb+=/concentrated_flame,line_cd=6,if=buff.rune_of_power.down&debuff.packed_ice.down\nactions.essences_orb+=/reaping_flames,if=buff.rune_of_power.down&debuff.packed_ice.down\nactions.essences_orb+=/the_unbound_force,if=buff.reckless_force.up\nactions.essences_orb+=/worldvein_resonance,if=buff.rune_of_power.down&debuff.packed_ice.down&cooldown.frozen_orb.remains<4||active_enemies>3\n\nactions.essences=call_action_list,strict=1,name=essences_orb,if=rotation.frozen_orb\nactions.essences+=/call_action_list,strict=1,name=essences_default,if=!rotation.frozen_orb\n\nactions.movement=blink_any,if=movement.distance>10\nactions.movement+=/ice_floes,if=buff.ice_floes.down\n\n# Single Target\n# Without GS, Ebonbolt is always shattered. With GS, Ebonbolt is shattered if it would waste Brain Freeze charge (i.e. when the mage starts casting Ebonbolt with Brain Freeze active) or when below 4 Icicles (if Ebonbolt is cast when the mage has 4-5 Icicles, it's better to use the Brain Freeze from it on Glacial Spike).\nactions.single_standard=flurry,if=talent.ebonbolt.enabled&prev_gcd.1.ebonbolt&(!talent.glacial_spike.enabled||buff.icicles.stack<4||buff.brain_freeze.react)\n# Glacial Spike is always shattered.\nactions.single_standard+=/flurry,if=talent.glacial_spike.enabled&prev_gcd.1.glacial_spike&buff.brain_freeze.react\n# Without GS, the mage just tries to shatter as many Frostbolts as possible. With GS, the mage only shatters Frostbolt that would put them at 1-3 Icicle stacks. Difference between shattering Frostbolt with 1-3 Icicles and 1-4 Icicles is small, but 1-3 tends to be better in more situations (the higher GS damage is, the more it leans towards 1-3). Forcing shatter on Frostbolt is still a small gain, so is not caring about FoF. Ice Lance is too weak to warrant delaying Brain Freeze Flurry.\nactions.single_standard+=/flurry,if=prev_gcd.1.frostbolt&buff.brain_freeze.react&(!talent.glacial_spike.enabled||buff.icicles.stack<4)\nactions.single_standard+=/call_action_list,name=essences\nactions.single_standard+=/frozen_orb\n# With Freezing Rain and at least 2 targets, Blizzard needs to be used with higher priority to make sure you can fit both instant Blizzards into a single Freezing Rain. Starting with three targets, Blizzard leaves the low priority filler role and is used on cooldown (and just making sure not to waste Brain Freeze charges) with or without Freezing Rain.\nactions.single_standard+=/blizzard,if=active_enemies>2||active_enemies>1&cast_time=0&buff.fingers_of_frost.react<2\n# Trying to pool charges of FoF for anything isn't worth it. Use them as they come.\nactions.single_standard+=/ice_lance,if=buff.fingers_of_frost.react\nactions.single_standard+=/comet_storm\nactions.single_standard+=/ebonbolt\n# Ray of Frost is used after all Fingers of Frost charges have been used and there isn't active Frozen Orb that could generate more. This is only a small gain against multiple targets, as Ray of Frost isn't too impactful.\nactions.single_standard+=/ray_of_frost,if=!action.frozen_orb.in_flight&ground_aoe.frozen_orb.remains=0\n# Blizzard is used as low priority filler against 2 targets. When using Freezing Rain, it's a medium gain to use the instant Blizzard even against a single target, especially with low mastery.\nactions.single_standard+=/blizzard,if=cast_time=0||active_enemies>1\n# Glacial Spike is used when there's a Brain Freeze proc active (i.e. only when it can be shattered). This is a small to medium gain in most situations. Low mastery leans towards using it when available. When using Splitting Ice and having another target nearby, it's slightly better to use GS when available, as the second target doesn't benefit from shattering the main target.\nactions.single_standard+=/glacial_spike,if=buff.brain_freeze.react||prev_gcd.1.ebonbolt||active_enemies>1&talent.splitting_ice.enabled\n\nactions.single_no_lance=flurry,if=talent.ebonbolt.enabled&prev_gcd.1.ebonbolt&buff.brain_freeze.react\nactions.single_no_lance+=/flurry,if=prev_gcd.1.glacial_spike&buff.brain_freeze.react\nactions.single_no_lance+=/call_action_list,name=essences\nactions.single_no_lance+=/frozen_orb\nactions.single_no_lance+=/blizzard,if=active_enemies>2||active_enemies>1&!talent.splitting_ice.enabled\nactions.single_no_lance+=/comet_storm\nactions.single_no_lance+=/ebonbolt,if=buff.icicles.stack=5&!buff.brain_freeze.react\nactions.single_no_lance+=/ice_lance,if=buff.brain_freeze.react&(buff.fingers_of_frost.react||prev_gcd.1.flurry)&(buff.icicles.max_stack-buff.icicles.stack)*action.frostbolt.execute_time+action.glacial_spike.cast_time+action.glacial_spike.travel_time<incanters_flow_time_to.5.any&buff.memory_of_lucid_dreams.down\nactions.single_no_lance+=/glacial_spike,if=buff.brain_freeze.react||prev_gcd.1.ebonbolt||talent.incanters_flow.enabled&cast_time+travel_time>incanters_flow_time_to.5.up&cast_time+travel_time<incanters_flow_time_to.4.down\n\nactions.single_orb=call_action_list,name=essences\nactions.single_orb+=/frozen_orb\nactions.single_orb+=/flurry,if=prev_gcd.1.ebonbolt&buff.brain_freeze.react\nactions.single_orb+=/blizzard,if=active_enemies>2||active_enemies>1&cast_time=0\nactions.single_orb+=/ice_lance,if=buff.fingers_of_frost.react&cooldown.frozen_orb.remains>5||buff.fingers_of_frost.react=2\nactions.single_orb+=/blizzard,if=cast_time=0\nactions.single_orb+=/flurry,if=prev_gcd.1.ebonbolt\nactions.single_orb+=/flurry,if=buff.brain_freeze.react&(prev_gcd.1.frostbolt||debuff.packed_ice.remains>execute_time+action.ice_lance.travel_time)\nactions.single_orb+=/comet_storm\nactions.single_orb+=/ebonbolt\nactions.single_orb+=/ray_of_frost,if=debuff.packed_ice.up,interrupt_if=buff.fingers_of_frost.react=2,interrupt_immediate=1\nactions.single_orb+=/blizzard\n\n# In some situations, you can shatter Ice Nova even after already casting Flurry and Ice Lance. Otherwise this action is used when the mage has FoF after casting Flurry, see above.\nactions.single=ice_nova,if=cooldown.ice_nova.ready&debuff.winters_chill.up\nactions.single+=/call_action_list,strict=1,name=single_standard,if=rotation.standard\nactions.single+=/call_action_list,strict=1,name=single_no_lance,if=rotation.no_ice_lance\nactions.single+=/call_action_list,strict=1,name=single_orb,if=rotation.frozen_orb\nactions.single+=/ice_nova\nactions.single+=/use_item,name=tidestorm_codex,if=buff.icy_veins.down&buff.rune_of_power.down\nactions.single+=/use_item,effect_name=cyclotronic_blast,if=buff.icy_veins.down&buff.rune_of_power.down\nactions.single+=/frostbolt\nactions.single+=/call_action_list,name=movement\nactions.single+=/ice_lance\n\n# With Glacial Spike, Rune of Power should be used right before the Glacial Spike combo (i.e. with 5 Icicles and a Brain Freeze). When Ebonbolt is off cooldown, Rune of Power can also be used just with 5 Icicles.\nactions.talent_rop=rune_of_power,if=talent.glacial_spike.enabled&buff.icicles.stack=5&(buff.brain_freeze.react||talent.ebonbolt.enabled&cooldown.ebonbolt.remains<cast_time)\n# Without Glacial Spike, Rune of Power should be used before any bigger cooldown (Ebonbolt, Comet Storm, Ray of Frost) or when Rune of Power is about to reach 2 charges.\nactions.talent_rop+=/rune_of_power,if=!talent.glacial_spike.enabled&(talent.ebonbolt.enabled&cooldown.ebonbolt.remains<cast_time||talent.comet_storm.enabled&cooldown.comet_storm.remains<cast_time||talent.ray_of_frost.enabled&cooldown.ray_of_frost.remains<cast_time||charges_fractional>1.9)",
|
|
["spec"] = 64,
|
|
},
|
|
["Fire"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20200401.2,
|
|
["author"] = "SimC",
|
|
["desc"] = "# Fire Mage\n# https://github.com/simulationcraft/simc/\n# April 1, 2020 - 14:51\n\n# Changes:\n# - Use time_to_die rather than target.time_to_die for last-second ability usages.\n# - Update logic re: Lucid Dreams.\n# - Loosen cast requirements for Combustion (i.e., don't hold it for a fresh Meteor cast).\n# - Disable an entry that would result in a hardcast Pyroblast in-game.",
|
|
["lists"] = {
|
|
["items_low_priority"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tidestorm_codex",
|
|
["criteria"] = "variable.time_to_combustion > variable.on_use_cutoff",
|
|
["name"] = "tidestorm_codex",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cyclotronic_blast",
|
|
["criteria"] = "variable.time_to_combustion > variable.on_use_cutoff",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
},
|
|
["combustion_phase"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.down",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.down",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & buff.combustion.down",
|
|
["action"] = "living_bomb",
|
|
},
|
|
{
|
|
["action"] = "blood_of_the_enemy",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "memory_of_lucid_dreams",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "worldvein_resonance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "charges >= 1 & ( ( action.fire_blast.charges_fractional + ( buff.combustion.remains - buff.blaster_master.duration ) % cooldown.fire_blast.duration - ( buff.combustion.remains ) % ( buff.blaster_master.duration - 0.5 ) ) >= 0 || ! azerite.blaster_master.enabled || ! talent.flame_on.enabled || buff.combustion.remains <= buff.blaster_master.duration || buff.blaster_master.remains < 0.5 || equipped.hyperthread_wristwraps & cooldown.hyperthread_wristwraps_300142.remains < 5 ) & buff.combustion.up & ( ! action.scorch.executing & ! action.pyroblast.in_flight & buff.heating_up.up || action.scorch.executing & buff.hot_streak.down & ( buff.heating_up.down || azerite.blaster_master.enabled ) || azerite.blaster_master.enabled & talent.flame_on.enabled & action.pyroblast.in_flight & buff.heating_up.down & buff.hot_streak.down )",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.down",
|
|
["action"] = "rune_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["action"] = "fire_blast",
|
|
["criteria"] = "azerite.blaster_master.enabled & ( essence.memory_of_lucid_dreams.major || ! essence.memory_of_lucid_dreams.minor ) & talent.meteor.enabled & talent.flame_on.enabled & buff.blaster_master.down & ( talent.rune_of_power.enabled & action.rune_of_power.executing & action.rune_of_power.execute_remains < 0.6 || ( variable.time_to_combustion <= 0 || buff.combustion.up ) & ! talent.rune_of_power.enabled & ! action.pyroblast.in_flight & ! action.fireball.in_flight )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "active_talents",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "( essence.memory_of_lucid_dreams.major || buff.hot_streak.react || action.scorch.executing & action.scorch.execute_remains < 0.5 || action.pyroblast.executing & action.pyroblast.execute_remains < 0.5 ) & ( buff.rune_of_power.up || ! talent.rune_of_power.enabled )",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "combustion",
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blood_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "berserking",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( talent.flame_patch.enabled & active_enemies > 2 ) || active_enemies > 6 ) & buff.hot_streak.react & ! azerite.blaster_master.enabled",
|
|
["action"] = "flamestrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.pyroclasm.react & buff.combustion.remains > cast_time",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_streak.react",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["action"] = "phoenix_flames",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.remains > cast_time & buff.combustion.up || buff.combustion.down & cooldown.combustion.remains < cast_time",
|
|
["action"] = "scorch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.remains < gcd.max & active_enemies > 1",
|
|
["action"] = "living_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.remains < gcd.max & buff.combustion.up",
|
|
["action"] = "dragons_breath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct <= 30 & talent.searing_touch.enabled",
|
|
["action"] = "scorch",
|
|
},
|
|
},
|
|
["active_talents"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & buff.combustion.down & ( variable.time_to_combustion > cooldown.living_bomb.duration || variable.time_to_combustion <= 0 )",
|
|
["action"] = "living_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.time_to_combustion <= 0 || ( buff.rune_of_power.up || cooldown.rune_of_power.remains > time_to_die & action.rune_of_power.charges < 1 || ! talent.rune_of_power.enabled ) & ( cooldown.meteor.duration < variable.time_to_combustion || time_to_die < variable.time_to_combustion )",
|
|
["action"] = "meteor",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.alexstraszas_fury.enabled & ( buff.combustion.down & ! buff.hot_streak.react || buff.combustion.up & action.fire_blast.charges < action.fire_blast.max_charges & ! buff.hot_streak.react )",
|
|
["action"] = "dragons_breath",
|
|
},
|
|
},
|
|
["items_high_priority"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.time_to_combustion <= 0",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "items_combustion",
|
|
},
|
|
{
|
|
["action"] = "use_items",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "manifesto_of_madness",
|
|
["criteria"] = "! equipped.azsharas_font_of_power & variable.time_to_combustion < 8",
|
|
["name"] = "manifesto_of_madness",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "azsharas_font_of_power",
|
|
["criteria"] = "variable.time_to_combustion <= 5 + 15 * variable.font_double_on_use",
|
|
["name"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rotcrusted_voodoo_doll",
|
|
["criteria"] = "variable.time_to_combustion > variable.on_use_cutoff",
|
|
["name"] = "rotcrusted_voodoo_doll",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "aquipotent_nautilus",
|
|
["criteria"] = "variable.time_to_combustion > variable.on_use_cutoff",
|
|
["name"] = "aquipotent_nautilus",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shiver_venom_relic",
|
|
["criteria"] = "variable.time_to_combustion > variable.on_use_cutoff",
|
|
["name"] = "shiver_venom_relic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "forbidden_obsidian_claw",
|
|
["criteria"] = "variable.time_to_combustion > variable.on_use_cutoff",
|
|
["name"] = "forbidden_obsidian_claw",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "harmonic_dematerializer",
|
|
["effect_name"] = "harmonic_dematerializer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "malformed_heralds_legwraps",
|
|
["criteria"] = "variable.time_to_combustion >= 55 & buff.combustion.down & variable.time_to_combustion > variable.on_use_cutoff",
|
|
["name"] = "malformed_heralds_legwraps",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ancient_knot_of_wisdom",
|
|
["criteria"] = "variable.time_to_combustion >= 55 & buff.combustion.down & variable.time_to_combustion > variable.on_use_cutoff",
|
|
["name"] = "ancient_knot_of_wisdom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["criteria"] = "variable.time_to_combustion >= 45 & buff.combustion.down & variable.time_to_combustion > variable.on_use_cutoff",
|
|
["name"] = "neural_synapse_enhancer",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "counterspell",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.firestarter.enabled * firestarter.remains + ( cooldown.combustion.remains * ( 1 - variable.kindling_reduction * talent.kindling.enabled ) - action.rune_of_power.execute_time * talent.rune_of_power.enabled ) * ! cooldown.combustion.ready * buff.combustion.down",
|
|
["var_name"] = "time_to_combustion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "max",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.memory_of_lucid_dreams.remains",
|
|
["criteria"] = "essence.memory_of_lucid_dreams.major & buff.memory_of_lucid_dreams.down & cooldown.memory_of_lucid_dreams.remains - variable.time_to_combustion <= variable.hold_combustion_threshold",
|
|
["var_name"] = "time_to_combustion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "max",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.worldvein_resonance.remains",
|
|
["criteria"] = "essence.worldvein_resonance.major & buff.worldvein_resonance.down & cooldown.worldvein_resonance.remains - variable.time_to_combustion <= variable.hold_combustion_threshold",
|
|
["var_name"] = "time_to_combustion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "items_high_priority",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.down",
|
|
["action"] = "mirror_image",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.time_to_combustion < 10 || time_to_die < variable.time_to_combustion )",
|
|
["action"] = "guardian_of_azeroth",
|
|
},
|
|
{
|
|
["action"] = "concentrated_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "reaping_flames",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "focused_azerite_beam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "purifying_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ripple_in_space",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "the_unbound_force",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.down & ( variable.time_to_combustion > full_recharge_time || variable.time_to_combustion > time_to_die )",
|
|
["action"] = "rune_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.time_to_combustion <= 0",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "combustion_phase",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "( essence.memory_of_lucid_dreams.major || essence.memory_of_lucid_dreams.minor & azerite.blaster_master.enabled ) & charges = max_charges & ! buff.hot_streak.react & ! ( buff.heating_up.react & ( buff.combustion.up & ( action.fireball.in_flight || action.pyroblast.in_flight || action.scorch.executing ) || target.health.pct <= 30 & action.scorch.executing ) ) & ! ( ! buff.heating_up.react & ! buff.hot_streak.react & buff.combustion.down & ( action.fireball.in_flight || action.pyroblast.in_flight ) )",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.rune_of_power.enabled & cooldown.rune_of_power.remains < cooldown.fire_blast.full_recharge_time & ( variable.time_to_combustion > action.rune_of_power.full_recharge_time ) & ( cooldown.rune_of_power.remains < time_to_die || action.rune_of_power.charges > 0 ) || variable.time_to_combustion < action.fire_blast.full_recharge_time & variable.time_to_combustion < time_to_die",
|
|
["var_name"] = "fire_blast_pooling",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.up & ( variable.time_to_combustion > 0 )",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "rop_phase",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.rune_of_power.enabled & cooldown.rune_of_power.remains < cooldown.phoenix_flames.full_recharge_time & ( variable.time_to_combustion > action.rune_of_power.full_recharge_time ) & ( cooldown.rune_of_power.remains < time_to_die || action.rune_of_power.charges > 0 ) || variable.time_to_combustion < action.phoenix_flames.full_recharge_time & variable.time_to_combustion < time_to_die",
|
|
["var_name"] = "phoenix_pooling",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "( ! variable.fire_blast_pooling || buff.rune_of_power.up ) & ( variable.time_to_combustion > 0 ) & ( active_enemies >= variable.hard_cast_flamestrike & ( time - buff.combustion.last_expire > variable.delay_flamestrike ) ) & ! firestarter.active & buff.hot_streak.down & ( ! azerite.blaster_master.enabled || buff.blaster_master.remains < 0.5 )",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "firestarter.active & charges >= 1 & ( ! variable.fire_blast_pooling || buff.rune_of_power.up ) & ( ! azerite.blaster_master.enabled || buff.blaster_master.remains < 0.5 ) & ( ! action.fireball.executing & ! action.pyroblast.in_flight & buff.heating_up.up || action.fireball.executing & buff.hot_streak.down || action.pyroblast.in_flight & buff.heating_up.down & buff.hot_streak.down )",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.time_to_combustion > 0",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "standard_rotation",
|
|
},
|
|
},
|
|
["items_combustion"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "ignition_mages_fuse",
|
|
["action"] = "ignition_mages_fuse",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "hyperthread_wristwraps",
|
|
["criteria"] = "buff.combustion.up & action.fire_blast.charges = 0 & action.fire_blast.recharge_time > gcd.max",
|
|
["name"] = "hyperthread_wristwraps",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "manifesto_of_madness",
|
|
["action"] = "manifesto_of_madness",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.up || action.meteor.in_flight & action.meteor.in_flight_remains <= 0.5",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "cancel_buff",
|
|
["buff_name"] = "manifesto_of_madness_chapter_one",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azurethos_singed_plumage",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "azurethos_singed_plumage",
|
|
["criteria"] = "buff.combustion.up || action.meteor.in_flight & action.meteor.in_flight_remains <= 0.5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "gladiators_badge",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "buff.combustion.up || action.meteor.in_flight & action.meteor.in_flight_remains <= 0.5",
|
|
["effect_name"] = "gladiators_badge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "gladiators_medallion",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "buff.combustion.up || action.meteor.in_flight & action.meteor.in_flight_remains <= 0.5",
|
|
["effect_name"] = "gladiators_medallion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "balefire_branch",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "balefire_branch",
|
|
["criteria"] = "buff.combustion.up || action.meteor.in_flight & action.meteor.in_flight_remains <= 0.5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "shockbiters_fang",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "shockbiters_fang",
|
|
["criteria"] = "buff.combustion.up || action.meteor.in_flight & action.meteor.in_flight_remains <= 0.5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "tzanes_barkspines",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "tzanes_barkspines",
|
|
["criteria"] = "buff.combustion.up || action.meteor.in_flight & action.meteor.in_flight_remains <= 0.5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "ancient_knot_of_wisdom",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "ancient_knot_of_wisdom",
|
|
["criteria"] = "buff.combustion.up || action.meteor.in_flight & action.meteor.in_flight_remains <= 0.5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "neural_synapse_enhancer",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["criteria"] = "buff.combustion.up || action.meteor.in_flight & action.meteor.in_flight_remains <= 0.5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "malformed_heralds_legwraps",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "malformed_heralds_legwraps",
|
|
["criteria"] = "buff.combustion.up || action.meteor.in_flight & action.meteor.in_flight_remains <= 0.5",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "arcane_intellect",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "equipped.manifesto_of_madness || equipped.gladiators_badge || equipped.gladiators_medallion || equipped.ignition_mages_fuse || equipped.tzanes_barkspines || equipped.azurethos_singed_plumage || equipped.ancient_knot_of_wisdom || equipped.shockbiters_fang || equipped.neural_synapse_enhancer || equipped.balefire_branch",
|
|
["var_name"] = "combustion_on_use",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "equipped.azsharas_font_of_power & variable.combustion_on_use",
|
|
["var_name"] = "font_double_on_use",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "20 * ( variable.combustion_on_use & ! variable.font_double_on_use ) + 40 * ( variable.font_double_on_use ) + 25 * ( equipped.azsharas_font_of_power & ! variable.font_double_on_use ) + 8 * ( equipped.manifesto_of_madness & ! variable.font_double_on_use )",
|
|
["var_name"] = "on_use_cutoff",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "hold_combustion_threshold",
|
|
["default"] = "20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2 * talent.flame_patch.enabled + 99 * ! talent.flame_patch.enabled",
|
|
["criteria"] = "variable.hot_streak_flamestrike = 0",
|
|
["var_name"] = "hot_streak_flamestrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "3 * talent.flame_patch.enabled + 99 * ! talent.flame_patch.enabled",
|
|
["criteria"] = "variable.hard_cast_flamestrike = 0",
|
|
["var_name"] = "hard_cast_flamestrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "delay_flamestrike",
|
|
["default"] = "25",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "kindling_reduction",
|
|
["default"] = "0.2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["action"] = "mirror_image",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "pyroblast",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["standard_rotation"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_enemies >= variable.hot_streak_flamestrike & ( time - buff.combustion.last_expire > variable.delay_flamestrike ) ) & buff.hot_streak.react",
|
|
["action"] = "flamestrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_streak.react & buff.hot_streak.remains < action.fireball.execute_time",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_streak.react & ( prev_gcd.1.fireball || firestarter.active || action.pyroblast.in_flight )",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges >= 3 & active_enemies > 2 & ! variable.phoenix_pooling",
|
|
["action"] = "phoenix_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_streak.react & target.health.pct <= 30 & talent.searing_touch.enabled",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.pyroclasm.react & cast_time < buff.pyroclasm.remains",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "( buff.rune_of_power.down & ! firestarter.active ) & ! variable.fire_blast_pooling & ( ( ( action.fireball.executing || action.pyroblast.executing ) & buff.heating_up.react ) || ( talent.searing_touch.enabled & target.health.pct <= 30 & ( buff.heating_up.react & ! action.scorch.executing || ! buff.hot_streak.react & ! buff.heating_up.react & action.scorch.executing & ! action.pyroblast.in_flight & ! action.fireball.in_flight ) ) )",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.heating_up.react || ( ! buff.hot_streak.react & ( action.fire_blast.charges > 0 || talent.searing_touch.enabled & target.health.pct <= 30 ) ) ) & ! variable.phoenix_pooling",
|
|
["action"] = "phoenix_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "active_talents",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "dragons_breath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "items_low_priority",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct <= 30 & talent.searing_touch.enabled",
|
|
["action"] = "scorch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= variable.hard_cast_flamestrike & ( time - buff.combustion.last_expire > variable.delay_flamestrike )",
|
|
["action"] = "flamestrike",
|
|
},
|
|
{
|
|
["action"] = "fireball",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "scorch",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["rop_phase"] = {
|
|
{
|
|
["action"] = "rune_of_power",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_enemies >= variable.hot_streak_flamestrike & ( time - buff.combustion.last_expire > variable.delay_flamestrike ) ) & buff.hot_streak.react",
|
|
["action"] = "flamestrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_streak.react",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "! ( active_enemies >= variable.hard_cast_flamestrike & ( time - buff.combustion.last_expire > variable.delay_flamestrike ) ) & ! firestarter.active & ( ! buff.heating_up.react & ! buff.hot_streak.react & ! prev_off_gcd.fire_blast & ( action.fire_blast.charges >= 2 || ( action.phoenix_flames.charges >= 1 & talent.phoenix_flames.enabled ) || ( talent.alexstraszas_fury.enabled & cooldown.dragons_breath.ready ) || ( talent.searing_touch.enabled & target.health.pct <= 30 ) ) )",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "active_talents",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.pyroclasm.react & cast_time < buff.pyroclasm.remains & buff.rune_of_power.remains > cast_time",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "! ( active_enemies >= variable.hard_cast_flamestrike & ( time - buff.combustion.last_expire > variable.delay_flamestrike ) ) & ! firestarter.active & ( buff.heating_up.react & ( target.health.pct >= 30 || ! talent.searing_touch.enabled ) )",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "! ( active_enemies >= variable.hard_cast_flamestrike & ( time - buff.combustion.last_expire > variable.delay_flamestrike ) ) & ! firestarter.active & talent.searing_touch.enabled & target.health.pct <= 30 & ( buff.heating_up.react & ! action.scorch.executing || ! buff.heating_up.react & ! buff.hot_streak.react )",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! prev_gcd.1.phoenix_flames & buff.heating_up.react",
|
|
["action"] = "phoenix_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct <= 30 & talent.searing_touch.enabled",
|
|
["action"] = "scorch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2",
|
|
["action"] = "dragons_breath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_enemies >= variable.hard_cast_flamestrike & ( time - buff.combustion.last_expire > variable.delay_flamestrike ) )",
|
|
["action"] = "flamestrike",
|
|
},
|
|
{
|
|
["action"] = "fireball",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20200401.2,
|
|
["warnings"] = "Imported 9 action lists.\n",
|
|
["spec"] = 63,
|
|
["profile"] = "# Fire Mage\n# https://github.com/simulationcraft/simc/\n# April 1, 2020 - 14:51\n\n# Changes:\n# - Use time_to_die rather than target.time_to_die for last-second ability usages.\n# - Update logic re: Lucid Dreams.\n# - Loosen cast requirements for Combustion (i.e., don't hold it for a fresh Meteor cast).\n# - Disable an entry that would result in a hardcast Pyroblast in-game.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/food\n# actions.precombat+=/augmentation\nactions.precombat+=/arcane_intellect\nactions.precombat+=/variable,name=combustion_on_use,op=set,value=equipped.manifesto_of_madness||equipped.gladiators_badge||equipped.gladiators_medallion||equipped.ignition_mages_fuse||equipped.tzanes_barkspines||equipped.azurethos_singed_plumage||equipped.ancient_knot_of_wisdom||equipped.shockbiters_fang||equipped.neural_synapse_enhancer||equipped.balefire_branch\nactions.precombat+=/variable,name=font_double_on_use,op=set,value=equipped.azsharas_font_of_power&variable.combustion_on_use\n# Items that are used outside of Combustion are not used after this time if they would put a trinket used with Combustion on a sharded cooldown.\nactions.precombat+=/variable,name=on_use_cutoff,op=set,value=20*(variable.combustion_on_use&!variable.font_double_on_use)+40*(variable.font_double_on_use)+25*(equipped.azsharas_font_of_power&!variable.font_double_on_use)+8*(equipped.manifesto_of_madness&!variable.font_double_on_use)\n# Combustion is only used without Worldvein Resonance or Memory of Lucid Dreams if it will be available at least this many seconds before the essence's cooldown is ready.\nactions.precombat+=/variable,name=hold_combustion_threshold,op=reset,default=20\n# 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,op=set,if=variable.hot_streak_flamestrike=0,value=2*talent.flame_patch.enabled+99*!talent.flame_patch.enabled\n# 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,op=set,if=variable.hard_cast_flamestrike=0,value=3*talent.flame_patch.enabled+99*!talent.flame_patch.enabled\n# Using Flamestrike after Combustion is over can cause a significant amount of damage to be lost due to the overwriting of Ignite that occurs when the Ignite from your primary Combustion target spreads. This variable is used to specify the amount of time in seconds that must pass after Combustion expires before Flamestrikes will be used normally.\nactions.precombat+=/variable,name=delay_flamestrike,default=25,op=reset\n# With Kindling, Combustion's cooldown will be reduced by a random amount, but the number of crits starts very high after activating Combustion and slows down towards the end of Combustion's cooldown. When making decisions in the APL, Combustion's remaining cooldown is reduced by this fraction to account for Kindling.\nactions.precombat+=/variable,name=kindling_reduction,default=0.2,op=reset\nactions.precombat+=/snapshot_stats\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/mirror_image\nactions.precombat+=/potion\nactions.precombat+=/pyroblast\n\n# Executed every time the actor is available.\nactions=counterspell\nactions+=/variable,name=time_to_combustion,op=set,value=talent.firestarter.enabled*firestarter.remains+(cooldown.combustion.remains*(1-variable.kindling_reduction*talent.kindling.enabled)-action.rune_of_power.execute_time*talent.rune_of_power.enabled)*!cooldown.combustion.ready*buff.combustion.down\nactions+=/variable,name=time_to_combustion,op=max,value=cooldown.memory_of_lucid_dreams.remains,if=essence.memory_of_lucid_dreams.major&buff.memory_of_lucid_dreams.down&cooldown.memory_of_lucid_dreams.remains-variable.time_to_combustion<=variable.hold_combustion_threshold\nactions+=/variable,name=time_to_combustion,op=max,value=cooldown.worldvein_resonance.remains,if=essence.worldvein_resonance.major&buff.worldvein_resonance.down&cooldown.worldvein_resonance.remains-variable.time_to_combustion<=variable.hold_combustion_threshold\nactions+=/call_action_list,name=items_high_priority\nactions+=/mirror_image,if=buff.combustion.down\nactions+=/guardian_of_azeroth,if=(variable.time_to_combustion<10||time_to_die<variable.time_to_combustion)\nactions+=/concentrated_flame\nactions+=/reaping_flames\nactions+=/focused_azerite_beam\nactions+=/purifying_blast\nactions+=/ripple_in_space\nactions+=/the_unbound_force\nactions+=/rune_of_power,if=buff.combustion.down&(variable.time_to_combustion>full_recharge_time||variable.time_to_combustion>time_to_die)\nactions+=/call_action_list,name=combustion_phase,if=variable.time_to_combustion<=0\nactions+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=(essence.memory_of_lucid_dreams.major||essence.memory_of_lucid_dreams.minor&azerite.blaster_master.enabled)&charges=max_charges&!buff.hot_streak.react&!(buff.heating_up.react&(buff.combustion.up&(action.fireball.in_flight||action.pyroblast.in_flight||action.scorch.executing)||target.health.pct<=30&action.scorch.executing))&!(!buff.heating_up.react&!buff.hot_streak.react&buff.combustion.down&(action.fireball.in_flight||action.pyroblast.in_flight))\nactions+=/variable,name=fire_blast_pooling,value=talent.rune_of_power.enabled&cooldown.rune_of_power.remains<cooldown.fire_blast.full_recharge_time&(variable.time_to_combustion>action.rune_of_power.full_recharge_time)&(cooldown.rune_of_power.remains<time_to_die||action.rune_of_power.charges>0)||variable.time_to_combustion<action.fire_blast.full_recharge_time&variable.time_to_combustion<time_to_die\nactions+=/call_action_list,name=rop_phase,if=buff.rune_of_power.up&(variable.time_to_combustion>0)\nactions+=/variable,name=phoenix_pooling,value=talent.rune_of_power.enabled&cooldown.rune_of_power.remains<cooldown.phoenix_flames.full_recharge_time&(variable.time_to_combustion>action.rune_of_power.full_recharge_time)&(cooldown.rune_of_power.remains<time_to_die||action.rune_of_power.charges>0)||variable.time_to_combustion<action.phoenix_flames.full_recharge_time&variable.time_to_combustion<time_to_die\n# When Hardcasting Flame Strike, Fire Blasts should be used to generate Hot Streaks and to extend Blaster Master.\nactions+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=(!variable.fire_blast_pooling||buff.rune_of_power.up)&(variable.time_to_combustion>0)&(active_enemies>=variable.hard_cast_flamestrike&(time-buff.combustion.last_expire>variable.delay_flamestrike))&!firestarter.active&buff.hot_streak.down&(!azerite.blaster_master.enabled||buff.blaster_master.remains<0.5)\n# During Firestarter, Fire Blasts are used similarly to during Combustion. Generally, they are used to generate Hot Streaks when crits will not be wasted and with Blaster Master, they should be spread out to maintain the Blaster Master buff.\nactions+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=firestarter.active&charges>=1&(!variable.fire_blast_pooling||buff.rune_of_power.up)&(!azerite.blaster_master.enabled||buff.blaster_master.remains<0.5)&(!action.fireball.executing&!action.pyroblast.in_flight&buff.heating_up.up||action.fireball.executing&buff.hot_streak.down||action.pyroblast.in_flight&buff.heating_up.down&buff.hot_streak.down)\nactions+=/call_action_list,name=standard_rotation,if=variable.time_to_combustion>0\n\nactions.active_talents=living_bomb,if=active_enemies>1&buff.combustion.down&(variable.time_to_combustion>cooldown.living_bomb.duration||variable.time_to_combustion<=0)\nactions.active_talents+=/meteor,if=variable.time_to_combustion<=0||(buff.rune_of_power.up||cooldown.rune_of_power.remains>time_to_die&action.rune_of_power.charges<1||!talent.rune_of_power.enabled)&(cooldown.meteor.duration<variable.time_to_combustion||time_to_die<variable.time_to_combustion)\nactions.active_talents+=/dragons_breath,if=talent.alexstraszas_fury.enabled&(buff.combustion.down&!buff.hot_streak.react||buff.combustion.up&action.fire_blast.charges<action.fire_blast.max_charges&!buff.hot_streak.react)\n\n# Combustion phase prepares abilities with a delay, then launches into the Combustion sequence\nactions.combustion_phase=lights_judgment,if=buff.combustion.down\nactions.combustion_phase+=/bag_of_tricks,if=buff.combustion.down\nactions.combustion_phase+=/living_bomb,if=active_enemies>1&buff.combustion.down\nactions.combustion_phase+=/blood_of_the_enemy\nactions.combustion_phase+=/memory_of_lucid_dreams\nactions.combustion_phase+=/worldvein_resonance\n# During Combustion, Fire Blasts are used to generate Hot Streaks and minimize the amount of time spent executing other spells. For standard Fire, Fire Blasts are only used when Heating Up is active or when a Scorch cast is in progress and Heating Up and Hot Streak are not active. With Blaster Master and Flame On, Fire Blasts can additionally be used while Hot Streak and Heating Up are not active and a Pyroblast is in the air and also while casting Scorch even if Heating Up is already active. The latter allows two Hot Streak Pyroblasts to be cast in succession after the Scorch. Additionally with Blaster Master and Flame On, Fire Blasts should not be used unless Blaster Master is about to expire or there are more than enough Fire Blasts to extend Blaster Master to the end of Combustion.\nactions.combustion_phase+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=charges>=1&((action.fire_blast.charges_fractional+(buff.combustion.remains-buff.blaster_master.duration)%cooldown.fire_blast.duration-(buff.combustion.remains)%(buff.blaster_master.duration-0.5))>=0||!azerite.blaster_master.enabled||!talent.flame_on.enabled||buff.combustion.remains<=buff.blaster_master.duration||buff.blaster_master.remains<0.5||equipped.hyperthread_wristwraps&cooldown.hyperthread_wristwraps_300142.remains<5)&buff.combustion.up&(!action.scorch.executing&!action.pyroblast.in_flight&buff.heating_up.up||action.scorch.executing&buff.hot_streak.down&(buff.heating_up.down||azerite.blaster_master.enabled)||azerite.blaster_master.enabled&talent.flame_on.enabled&action.pyroblast.in_flight&buff.heating_up.down&buff.hot_streak.down)\nactions.combustion_phase+=/rune_of_power,if=buff.combustion.down\n# A Fire Blast should be used to apply Blaster Master while casting Rune of Power when using Blaster Master, Flame On, and Meteor. If only Memory of Lucid Dreams Minor is equipped, this line is ignored because it will sometimes result in going into Combustion with few Fire Blast charges.\nactions.combustion_phase+=/fire_blast,use_while_casting=1,if=azerite.blaster_master.enabled&(essence.memory_of_lucid_dreams.major||!essence.memory_of_lucid_dreams.minor)&talent.meteor.enabled&talent.flame_on.enabled&buff.blaster_master.down&(talent.rune_of_power.enabled&action.rune_of_power.executing&action.rune_of_power.execute_remains<0.6||(variable.time_to_combustion<=0||buff.combustion.up)&!talent.rune_of_power.enabled&!action.pyroblast.in_flight&!action.fireball.in_flight)\nactions.combustion_phase+=/call_action_list,name=active_talents\nactions.combustion_phase+=/combustion,use_off_gcd=1,use_while_casting=1,if=(essence.memory_of_lucid_dreams.major||buff.hot_streak.react||action.scorch.executing&action.scorch.execute_remains<0.5||action.pyroblast.executing&action.pyroblast.execute_remains<0.5)&(buff.rune_of_power.up||!talent.rune_of_power.enabled)\nactions.combustion_phase+=/potion\nactions.combustion_phase+=/blood_fury\nactions.combustion_phase+=/berserking\nactions.combustion_phase+=/fireblood\nactions.combustion_phase+=/ancestral_call\nactions.combustion_phase+=/flamestrike,if=((talent.flame_patch.enabled&active_enemies>2)||active_enemies>6)&buff.hot_streak.react&!azerite.blaster_master.enabled\nactions.combustion_phase+=/pyroblast,if=buff.pyroclasm.react&buff.combustion.remains>cast_time\nactions.combustion_phase+=/pyroblast,if=buff.hot_streak.react\n# Commenting this entry out; it's relying on a reaction time delay when you know your Scorch will crit and you had Heating Up when you cast Scorch.\n# In-game, this is handled more naturally.\n# actions.combustion_phase+=/pyroblast,if=prev_gcd.1.scorch&buff.heating_up.up\nactions.combustion_phase+=/phoenix_flames\nactions.combustion_phase+=/scorch,if=buff.combustion.remains>cast_time&buff.combustion.up||buff.combustion.down&cooldown.combustion.remains<cast_time\nactions.combustion_phase+=/living_bomb,if=buff.combustion.remains<gcd.max&active_enemies>1\nactions.combustion_phase+=/dragons_breath,if=buff.combustion.remains<gcd.max&buff.combustion.up\nactions.combustion_phase+=/scorch,if=target.health.pct<=30&talent.searing_touch.enabled\n\nactions.items_combustion=use_item,name=ignition_mages_fuse\nactions.items_combustion+=/use_item,name=hyperthread_wristwraps,if=buff.combustion.up&action.fire_blast.charges=0&action.fire_blast.recharge_time>gcd.max\nactions.items_combustion+=/use_item,name=manifesto_of_madness\nactions.items_combustion+=/cancel_buff,use_off_gcd=1,name=manifesto_of_madness_chapter_one,if=buff.combustion.up||action.meteor.in_flight&action.meteor.in_flight_remains<=0.5\nactions.items_combustion+=/use_item,use_off_gcd=1,name=azurethos_singed_plumage,if=buff.combustion.up||action.meteor.in_flight&action.meteor.in_flight_remains<=0.5\nactions.items_combustion+=/use_item,use_off_gcd=1,effect_name=gladiators_badge,if=buff.combustion.up||action.meteor.in_flight&action.meteor.in_flight_remains<=0.5\nactions.items_combustion+=/use_item,use_off_gcd=1,effect_name=gladiators_medallion,if=buff.combustion.up||action.meteor.in_flight&action.meteor.in_flight_remains<=0.5\nactions.items_combustion+=/use_item,use_off_gcd=1,name=balefire_branch,if=buff.combustion.up||action.meteor.in_flight&action.meteor.in_flight_remains<=0.5\nactions.items_combustion+=/use_item,use_off_gcd=1,name=shockbiters_fang,if=buff.combustion.up||action.meteor.in_flight&action.meteor.in_flight_remains<=0.5\nactions.items_combustion+=/use_item,use_off_gcd=1,name=tzanes_barkspines,if=buff.combustion.up||action.meteor.in_flight&action.meteor.in_flight_remains<=0.5\nactions.items_combustion+=/use_item,use_off_gcd=1,name=ancient_knot_of_wisdom,if=buff.combustion.up||action.meteor.in_flight&action.meteor.in_flight_remains<=0.5\nactions.items_combustion+=/use_item,use_off_gcd=1,name=neural_synapse_enhancer,if=buff.combustion.up||action.meteor.in_flight&action.meteor.in_flight_remains<=0.5\nactions.items_combustion+=/use_item,use_off_gcd=1,name=malformed_heralds_legwraps,if=buff.combustion.up||action.meteor.in_flight&action.meteor.in_flight_remains<=0.5\n\nactions.items_high_priority=call_action_list,name=items_combustion,if=variable.time_to_combustion<=0\nactions.items_high_priority+=/use_items\nactions.items_high_priority+=/use_item,name=manifesto_of_madness,if=!equipped.azsharas_font_of_power&variable.time_to_combustion<8\nactions.items_high_priority+=/use_item,name=azsharas_font_of_power,if=variable.time_to_combustion<=5+15*variable.font_double_on_use\nactions.items_high_priority+=/use_item,name=rotcrusted_voodoo_doll,if=variable.time_to_combustion>variable.on_use_cutoff\nactions.items_high_priority+=/use_item,name=aquipotent_nautilus,if=variable.time_to_combustion>variable.on_use_cutoff\nactions.items_high_priority+=/use_item,name=shiver_venom_relic,if=variable.time_to_combustion>variable.on_use_cutoff\nactions.items_high_priority+=/use_item,name=forbidden_obsidian_claw,if=variable.time_to_combustion>variable.on_use_cutoff\nactions.items_high_priority+=/use_item,effect_name=harmonic_dematerializer\nactions.items_high_priority+=/use_item,name=malformed_heralds_legwraps,if=variable.time_to_combustion>=55&buff.combustion.down&variable.time_to_combustion>variable.on_use_cutoff\nactions.items_high_priority+=/use_item,name=ancient_knot_of_wisdom,if=variable.time_to_combustion>=55&buff.combustion.down&variable.time_to_combustion>variable.on_use_cutoff\nactions.items_high_priority+=/use_item,name=neural_synapse_enhancer,if=variable.time_to_combustion>=45&buff.combustion.down&variable.time_to_combustion>variable.on_use_cutoff\n\nactions.items_low_priority=use_item,name=tidestorm_codex,if=variable.time_to_combustion>variable.on_use_cutoff\nactions.items_low_priority+=/use_item,effect_name=cyclotronic_blast,if=variable.time_to_combustion>variable.on_use_cutoff\n\nactions.rop_phase=rune_of_power\nactions.rop_phase+=/flamestrike,if=(active_enemies>=variable.hot_streak_flamestrike&(time-buff.combustion.last_expire>variable.delay_flamestrike))&buff.hot_streak.react\nactions.rop_phase+=/pyroblast,if=buff.hot_streak.react\nactions.rop_phase+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=!(active_enemies>=variable.hard_cast_flamestrike&(time-buff.combustion.last_expire>variable.delay_flamestrike))&!firestarter.active&(!buff.heating_up.react&!buff.hot_streak.react&!prev_off_gcd.fire_blast&(action.fire_blast.charges>=2||(action.phoenix_flames.charges>=1&talent.phoenix_flames.enabled)||(talent.alexstraszas_fury.enabled&cooldown.dragons_breath.ready)||(talent.searing_touch.enabled&target.health.pct<=30)))\nactions.rop_phase+=/call_action_list,name=active_talents\nactions.rop_phase+=/pyroblast,if=buff.pyroclasm.react&cast_time<buff.pyroclasm.remains&buff.rune_of_power.remains>cast_time\nactions.rop_phase+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=!(active_enemies>=variable.hard_cast_flamestrike&(time-buff.combustion.last_expire>variable.delay_flamestrike))&!firestarter.active&(buff.heating_up.react&(target.health.pct>=30||!talent.searing_touch.enabled))\nactions.rop_phase+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=!(active_enemies>=variable.hard_cast_flamestrike&(time-buff.combustion.last_expire>variable.delay_flamestrike))&!firestarter.active&talent.searing_touch.enabled&target.health.pct<=30&(buff.heating_up.react&!action.scorch.executing||!buff.heating_up.react&!buff.hot_streak.react)\n# Commenting this entry out; it's relying on a reaction time delay when you know your Scorch will crit and you had Heating Up when you cast Scorch.\n# In-game, this is handled more naturally.\n# actions.rop_phase+=/pyroblast,if=prev_gcd.1.scorch&buff.heating_up.up&talent.searing_touch.enabled&target.health.pct<=30&!(active_enemies>=variable.hot_streak_flamestrike&(time-buff.combustion.last_expire>variable.delay_flamestrike))\nactions.rop_phase+=/phoenix_flames,if=!prev_gcd.1.phoenix_flames&buff.heating_up.react\nactions.rop_phase+=/scorch,if=target.health.pct<=30&talent.searing_touch.enabled\nactions.rop_phase+=/dragons_breath,if=active_enemies>2\nactions.rop_phase+=/flamestrike,if=(active_enemies>=variable.hard_cast_flamestrike&(time-buff.combustion.last_expire>variable.delay_flamestrike))\nactions.rop_phase+=/fireball\n\nactions.standard_rotation=flamestrike,if=(active_enemies>=variable.hot_streak_flamestrike&(time-buff.combustion.last_expire>variable.delay_flamestrike))&buff.hot_streak.react\nactions.standard_rotation+=/pyroblast,if=buff.hot_streak.react&buff.hot_streak.remains<action.fireball.execute_time\nactions.standard_rotation+=/pyroblast,if=buff.hot_streak.react&(prev_gcd.1.fireball||firestarter.active||action.pyroblast.in_flight)\nactions.standard_rotation+=/phoenix_flames,if=charges>=3&active_enemies>2&!variable.phoenix_pooling\nactions.standard_rotation+=/pyroblast,if=buff.hot_streak.react&target.health.pct<=30&talent.searing_touch.enabled\nactions.standard_rotation+=/pyroblast,if=buff.pyroclasm.react&cast_time<buff.pyroclasm.remains\nactions.standard_rotation+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=(buff.rune_of_power.down&!firestarter.active)&!variable.fire_blast_pooling&(((action.fireball.executing||action.pyroblast.executing)&buff.heating_up.react)||(talent.searing_touch.enabled&target.health.pct<=30&(buff.heating_up.react&!action.scorch.executing||!buff.hot_streak.react&!buff.heating_up.react&action.scorch.executing&!action.pyroblast.in_flight&!action.fireball.in_flight)))\n# Commenting this entry out; it's relying on a reaction time delay when you know your Scorch will crit and you had Heating Up when you cast Scorch.\n# In-game, this is handled more naturally.\n# actions.standard_rotation+=/pyroblast,if=prev_gcd.1.scorch&buff.heating_up.up&talent.searing_touch.enabled&target.health.pct<=30&!(active_enemies>=variable.hot_streak_flamestrike&(time-buff.combustion.last_expire>variable.delay_flamestrike))\nactions.standard_rotation+=/phoenix_flames,if=(buff.heating_up.react||(!buff.hot_streak.react&(action.fire_blast.charges>0||talent.searing_touch.enabled&target.health.pct<=30)))&!variable.phoenix_pooling\nactions.standard_rotation+=/call_action_list,name=active_talents\nactions.standard_rotation+=/dragons_breath,if=active_enemies>1\nactions.standard_rotation+=/call_action_list,name=items_low_priority\nactions.standard_rotation+=/scorch,if=target.health.pct<=30&talent.searing_touch.enabled\n# With enough targets, it is a gain to cast Flamestrike as filler instead of Fireball.\nactions.standard_rotation+=/flamestrike,if=active_enemies>=variable.hard_cast_flamestrike&(time-buff.combustion.last_expire>variable.delay_flamestrike)\nactions.standard_rotation+=/fireball\nactions.standard_rotation+=/scorch",
|
|
},
|
|
["Fire IV"] = {
|
|
["source"] = "https://icy-veins.com/",
|
|
["builtIn"] = true,
|
|
["date"] = 20200204.1,
|
|
["author"] = "Icy-Veins Authors",
|
|
["desc"] = "# Fire Mage\n# Based off Icy Veins priority.\n# March 31, 2020",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "counterspell",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.combustion.ready",
|
|
["action"] = "rune_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.combustion.ready",
|
|
["action"] = "memory_of_lucid_dreams",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.down",
|
|
["action"] = "use_items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.rune_of_power.enabled || buff.rune_of_power.up ) & ( cooldown.combustion.ready || cooldown.combustion.remains >= 45 )",
|
|
["action"] = "meteor",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "( ! essence.memory_of_lucid_dreams.major || buff.memory_of_lucid_dreams.up || cooldown.memory_of_lucid_dreams.remains > 115 ) & ( ! talent.meteor.enabled || cooldown.meteor.remains )",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "combustion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.up & action.fire_blast.charges = 0 & action.fire_blast.recharge_time > gcd.max",
|
|
["name"] = "hyperthread_wristwraps",
|
|
["action"] = "hyperthread_wristwraps",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "full_recharge_time < 2",
|
|
["action"] = "rune_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges_fractional >= 2.9",
|
|
["action"] = "phoenix_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.flame_patch.enabled & ( buff.combustion.up & active_enemies >= 8 || buff.combustion.down & active_enemies >= 5 ) & buff.hot_streak.up",
|
|
["action"] = "flamestrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.flame_patch.enabled & ( buff.combustion.up & active_enemies >= 3 || buff.combustion.down & active_enemies >= 2 ) & buff.hot_streak.up",
|
|
["action"] = "flamestrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.pyroclasm.up & ( buff.combustion.remains > buff.pyroclasm.remains || buff.combustion.down & cooldown.combustion.remains > buff.pyroclasm.remains + 3 ) & ( buff.rune_of_power.remains > buff.pyroclasm.remains || ! talent.rune_of_power.enabled || talent.rune_of_power.enabled & buff.rune_of_power.down & cooldown.rune_of_power.remains > buff.pyroclasm.remains + 3 )",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_streak.up",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 3 & time_to_die >= 8",
|
|
["action"] = "living_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.up & buff.combustion.remains < 1",
|
|
["action"] = "dragons_breath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 3",
|
|
["action"] = "dragons_breath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "buff.heating_up.up",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["action"] = "dragons_breath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.searing_touch.enabled & target.health.pct < 30 & target.time_to_die > cast_time",
|
|
["action"] = "scorch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "time_to_die < action.scorch.cast",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.down",
|
|
["action"] = "fireball",
|
|
},
|
|
{
|
|
["moving"] = "1",
|
|
["action"] = "scorch",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "arcane_intellect",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blazing_barrier.down",
|
|
["action"] = "blazing_barrier",
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "pyroblast",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20200204.1,
|
|
["warnings"] = "Imported 2 action lists.\n",
|
|
["spec"] = 63,
|
|
["profile"] = "# Fire Mage\n# Based off Icy Veins priority.\n# March 31, 2020\n\nactions.precombat=arcane_intellect\nactions.precombat=blazing_barrier,if=buff.blazing_barrier.down\nactions.precombat=potion\nactions.precombat=pyroblast\n\nactions+=/counterspell\nactions+=/rune_of_power,if=cooldown.combustion.ready\nactions+=/memory_of_lucid_dreams,if=cooldown.combustion.ready\nactions+=/use_items,if=buff.combustion.down\nactions+=/meteor,if=(!talent.rune_of_power.enabled||buff.rune_of_power.up)&(cooldown.combustion.ready||cooldown.combustion.remains>=45)\nactions+=/combustion,use_while_casting=1,use_off_gcd=1,if=(!essence.memory_of_lucid_dreams.major||buff.memory_of_lucid_dreams.up||cooldown.memory_of_lucid_dreams.remains>115)&(!talent.meteor.enabled||cooldown.meteor.remains)\nactions+=/use_item,name=hyperthread_wristwraps,if=buff.combustion.up&action.fire_blast.charges=0&action.fire_blast.recharge_time>gcd.max\n# actions+=/hyperthread_wristwraps,if=buff.combustion.up&cooldown.fire_blast.charges=0&(prev.1.fire_blast+prev.2.fire_blast+prev.3.fire_blast>=2)\nactions+=/rune_of_power,if=full_recharge_time<2\n# actions+=/rune_of_power,if=charges_fractional>=1.95&cast<time_to_die\nactions+=/phoenix_flames,if=charges_fractional>=2.9\nactions+=/flamestrike,if=!talent.flame_patch.enabled&(buff.combustion.up&active_enemies>=8||buff.combustion.down&active_enemies>=5)&buff.hot_streak.up\nactions+=/flamestrike,if=talent.flame_patch.enabled&(buff.combustion.up&active_enemies>=3||buff.combustion.down&active_enemies>=2)&buff.hot_streak.up\n# If Combustion or Rune of Power is currently not active, but will be available before the Pyroclasm buff would time out, and you only have one stack of Pyroclasm, you should hold it until the Combustion or Rune of Power is up.\nactions+=/pyroblast,if=buff.pyroclasm.up&(buff.combustion.remains>buff.pyroclasm.remains||buff.combustion.down&cooldown.combustion.remains>buff.pyroclasm.remains+3)&(buff.rune_of_power.remains>buff.pyroclasm.remains||!talent.rune_of_power.enabled||talent.rune_of_power.enabled&buff.rune_of_power.down&cooldown.rune_of_power.remains>buff.pyroclasm.remains+3)\nactions+=/pyroblast,if=buff.hot_streak.up\nactions+=/living_bomb,if=active_enemies>=3&time_to_die>=8\nactions+=/dragons_breath,if=buff.combustion.up&buff.combustion.remains<1\nactions+=/dragons_breath,if=active_enemies>=3\nactions+=/fire_blast,use_while_casting=1,use_off_gcd=1,if=buff.heating_up.up\nactions+=/dragons_breath\nactions+=/scorch,if=talent.searing_touch.enabled&target.health.pct<30&target.time_to_die>cast_time\nactions+=/fire_blast,use_while_casting=1,use_off_gcd=1,if=time_to_die<action.scorch.cast\nactions+=/fireball,if=buff.combustion.down\nactions+=/scorch,moving=1",
|
|
},
|
|
["Arcane"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20200301,
|
|
["spec"] = 62,
|
|
["desc"] = "# Arcane Mage\n# https://github.com/simulationcraft/simc/\n# March 1, 2020\n\n# Changes:\n# - start_burn_phase, stop_burn_phase, and average_burn_length are handled by the addon.\n# - target.time_to_die -> (time_to_die) so that we don't excessively burn on trash if we don't want to.\n# - Update potion logic.",
|
|
["lists"] = {
|
|
["conserve"] = {
|
|
{
|
|
["action"] = "mirror_image",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_charge.stack = 0",
|
|
["action"] = "charged_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( refreshable || ! ticking ) & buff.arcane_charge.stack = buff.arcane_charge.max_stack & buff.rune_of_power.down & buff.arcane_power.down",
|
|
["action"] = "nether_tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_charge.stack <= 2 & ( cooldown.arcane_power.remains > 10 || active_enemies <= 2 )",
|
|
["action"] = "arcane_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rule_of_threes.up & buff.arcane_charge.stack > 3",
|
|
["action"] = "arcane_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down & ! buff.arcane_power.react & cooldown.arcane_power.remains > 20",
|
|
["name"] = "tidestorm_codex",
|
|
["action"] = "tidestorm_codex",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down & ! buff.arcane_power.react & cooldown.arcane_power.remains > 20",
|
|
["action"] = "cyclotronic_blast",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_charge.stack = buff.arcane_charge.max_stack & ( full_recharge_time <= execute_time || full_recharge_time <= cooldown.arcane_power.remains || time_to_die <= cooldown.arcane_power.remains )",
|
|
["action"] = "rune_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["chain"] = "1",
|
|
["criteria"] = "mana.pct <= 95 & buff.clearcasting.react & active_enemies < 3",
|
|
["action"] = "arcane_missiles",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( buff.arcane_charge.stack = buff.arcane_charge.max_stack ) & ( ( mana.pct <= variable.conserve_mana ) || ( talent.rune_of_power.enabled & cooldown.arcane_power.remains > cooldown.rune_of_power.full_recharge_time & mana.pct <= variable.conserve_mana + 25 ) ) || ( talent.arcane_orb.enabled & cooldown.arcane_orb.remains <= gcd & cooldown.arcane_power.remains > 10 ) ) || mana.pct <= ( variable.conserve_mana - 10 )",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "mana.pct <= 95",
|
|
["action"] = "supernova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 3 & ( mana.pct >= variable.conserve_mana || buff.arcane_charge.stack = 3 )",
|
|
["action"] = "arcane_explosion",
|
|
},
|
|
{
|
|
["action"] = "arcane_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_barrage",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "counterspell",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spellsteal",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "remove_curse",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "essences",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down & buff.arcane_power.down & ( cooldown.arcane_power.remains <= 4 + 10 * variable.font_double_on_use & cooldown.evocation.remains <= variable.average_burn_length + 4 + 10 * variable.font_double_on_use || time_to_die < cooldown.arcane_power.remains )",
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "burn_phase || ( time_to_die < average_burn_length )",
|
|
["list_name"] = "burn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "( cooldown.arcane_power.remains = 0 & cooldown.evocation.remains <= average_burn_length & ( buff.arcane_charge.stack = buff.arcane_charge.max_stack || ( talent.charged_up.enabled & cooldown.charged_up.remains = 0 & buff.arcane_charge.stack <= 1 ) ) )",
|
|
["list_name"] = "burn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "! burn_phase",
|
|
["list_name"] = "conserve",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "movement",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "arcane_intellect",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "summon_arcane_familiar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "60 + 20 * azerite.equipoise.enabled",
|
|
["var_name"] = "conserve_mana",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "equipped.azsharas_font_of_power & ( equipped.manifesto_of_madness || equipped.gladiators_badge || equipped.gladiators_medallion || equipped.ignition_mages_fuse || equipped.tzanes_barkspines || equipped.azurethos_singed_plumage || equipped.ancient_knot_of_wisdom || equipped.shockbiters_fang || equipped.neural_synapse_enhancer || equipped.balefire_branch )",
|
|
["var_name"] = "font_double_on_use",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "12",
|
|
["var_name"] = "font_of_power_precombat_channel",
|
|
["criteria"] = "variable.font_double_on_use & variable.font_of_power_precombat_channel = 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["action"] = "mirror_image",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_blast",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["burn"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_charge.stack <= 1",
|
|
["action"] = "charged_up",
|
|
},
|
|
{
|
|
["action"] = "mirror_image",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( refreshable || ! ticking ) & buff.arcane_charge.stack = buff.arcane_charge.max_stack & buff.rune_of_power.down & buff.arcane_power.down",
|
|
["action"] = "nether_tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rule_of_threes.up & talent.overpowered.enabled & active_enemies < 3",
|
|
["action"] = "arcane_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_power.down",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_power.down",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.arcane_power.up & ( mana.pct >= 50 || cooldown.arcane_power.remains = 0 ) & ( buff.arcane_charge.stack = buff.arcane_charge.max_stack )",
|
|
["action"] = "rune_of_power",
|
|
},
|
|
{
|
|
["action"] = "berserking",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_power",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_power.up || time_to_die < cooldown.arcane_power.remains",
|
|
["action"] = "use_items",
|
|
},
|
|
{
|
|
["action"] = "blood_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.rune_of_power.enabled & buff.rune_of_power.remains <= buff.presence_of_mind.max_stack * action.arcane_blast.execute_time ) || buff.arcane_power.remains <= buff.presence_of_mind.max_stack * action.arcane_blast.execute_time",
|
|
["action"] = "presence_of_mind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_power.up & ( ( ! essence.condensed_lifeforce.major || essence.condensed_lifeforce.rank < 2 ) & ( buff.berserking.up || buff.blood_fury.up || ! ( race.troll || race.orc ) ) || buff.guardian_of_azeroth.up ) || time_to_die < cooldown.arcane_power.remains",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_charge.stack = 0 || ( active_enemies < 3 || ( active_enemies < 2 & talent.resonance.enabled ) )",
|
|
["action"] = "arcane_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 3 & ( buff.arcane_charge.stack = buff.arcane_charge.max_stack )",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 3",
|
|
["action"] = "arcane_explosion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["chain"] = "1",
|
|
["criteria"] = "buff.clearcasting.react & active_enemies < 3 & ( talent.amplification.enabled || ( ! talent.overpowered.enabled & azerite.arcane_pummeling.rank >= 2 ) || buff.arcane_power.down )",
|
|
["action"] = "arcane_missiles",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3",
|
|
["action"] = "arcane_blast",
|
|
},
|
|
{
|
|
["interrupt_if"] = "mana.pct>=85",
|
|
["interrupt_immediate"] = "1",
|
|
["action"] = "evocation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_barrage",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["essences"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "burn_phase & buff.arcane_power.down & buff.rune_of_power.down & buff.arcane_charge.stack = buff.arcane_charge.max_stack || time_to_die < cooldown.arcane_power.remains",
|
|
["action"] = "blood_of_the_enemy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down & buff.arcane_power.down & ( ! burn_phase || time_to_die < cooldown.arcane_power.remains ) & mana.time_to_max >= execute_time",
|
|
["action"] = "concentrated_flame",
|
|
["line_cd"] = "6",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down & buff.arcane_power.down & ( ! burn_phase || time_to_die < cooldown.arcane_power.remains ) & mana.time_to_max >= execute_time",
|
|
["action"] = "reaping_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down & buff.arcane_power.down",
|
|
["action"] = "focused_azerite_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down & buff.arcane_power.down",
|
|
["action"] = "guardian_of_azeroth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down & buff.arcane_power.down",
|
|
["action"] = "purifying_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down & buff.arcane_power.down",
|
|
["action"] = "ripple_in_space",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rune_of_power.down & buff.arcane_power.down",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! burn_phase & buff.arcane_power.down & cooldown.arcane_power.remains & buff.arcane_charge.stack = buff.arcane_charge.max_stack & ( ! talent.rune_of_power.enabled || action.rune_of_power.charges ) || time_to_die < cooldown.arcane_power.remains",
|
|
["action"] = "memory_of_lucid_dreams",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "burn_phase & buff.arcane_power.down & buff.rune_of_power.down & buff.arcane_charge.stack = buff.arcane_charge.max_stack || time_to_die < cooldown.arcane_power.remains",
|
|
["action"] = "worldvein_resonance",
|
|
},
|
|
},
|
|
["movement"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "movement.distance >= 10",
|
|
["action"] = "blink",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "movement.distance >= 10",
|
|
["action"] = "blink",
|
|
},
|
|
{
|
|
["action"] = "presence_of_mind",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_missiles",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_orb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "supernova",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20200301,
|
|
["warnings"] = "Imported 6 action lists.\n",
|
|
["author"] = "SimulationCraft",
|
|
["profile"] = "# Arcane Mage\n# https://github.com/simulationcraft/simc/\n# March 1, 2020\n\n# Changes:\n# - start_burn_phase, stop_burn_phase, and average_burn_length are handled by the addon.\n# - target.time_to_die -> (time_to_die) so that we don't excessively burn on trash if we don't want to.\n# - Update potion logic.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/food\n# actions.precombat+=/augmentation\nactions.precombat+=/arcane_intellect\nactions.precombat+=/arcane_familiar\n# conserve_mana is the mana percentage we want to go down to during conserve. It needs to leave enough room to worst case scenario spam AB only during AP.\nactions.precombat+=/variable,name=conserve_mana,op=set,value=60+20*azerite.equipoise.enabled\nactions.precombat+=/variable,name=font_double_on_use,op=set,value=equipped.azsharas_font_of_power&(equipped.manifesto_of_madness||equipped.gladiators_badge||equipped.gladiators_medallion||equipped.ignition_mages_fuse||equipped.tzanes_barkspines||equipped.azurethos_singed_plumage||equipped.ancient_knot_of_wisdom||equipped.shockbiters_fang||equipped.neural_synapse_enhancer||equipped.balefire_branch)\nactions.precombat+=/variable,name=font_of_power_precombat_channel,op=set,value=12,if=variable.font_double_on_use&variable.font_of_power_precombat_channel=0\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/mirror_image\nactions.precombat+=/potion\nactions.precombat+=/arcane_blast\n\n# Executed every time the actor is available.\nactions=counterspell\nactions+=/spellsteal\nactions+=/remove_curse\nactions+=/call_action_list,name=essences\nactions+=/use_item,name=azsharas_font_of_power,if=buff.rune_of_power.down&buff.arcane_power.down&(cooldown.arcane_power.remains<=4+10*variable.font_double_on_use&cooldown.evocation.remains<=variable.average_burn_length+4+10*variable.font_double_on_use||time_to_die<cooldown.arcane_power.remains)\n# Go to Burn Phase when already burning, or when boss will die soon.\nactions+=/call_action_list,name=burn,if=burn_phase||(time_to_die<average_burn_length)\n# Start Burn Phase when Arcane Power is ready and Evocation will be ready (on average) before the burn phase is over. Also make sure we got 4 Arcane Charges, or can get 4 Arcane Charges with Charged Up.\nactions+=/call_action_list,name=burn,if=(cooldown.arcane_power.remains=0&cooldown.evocation.remains<=average_burn_length&(buff.arcane_charge.stack=buff.arcane_charge.max_stack||(talent.charged_up.enabled&cooldown.charged_up.remains=0&buff.arcane_charge.stack<=1)))\nactions+=/call_action_list,name=conserve,if=!burn_phase\nactions+=/call_action_list,name=movement\n\n# Increment our burn phase counter. Whenever we enter the `burn` actions without being in a burn phase, it means that we are about to start one.\n# actions.burn=variable,name=total_burns,op=add,value=1,if=!burn_phase\n# actions.burn+=/start_burn_phase,if=!burn_phase\n# End the burn phase when we just evocated.\n# actions.burn+=/stop_burn_phase,if=burn_phase&prev_gcd.1.evocation&(time_to_die)>variable.average_burn_length&burn_phase_duration>0\n# Less than 1 instead of equals to 0, because of pre-cast Arcane Blast\nactions.burn+=/charged_up,if=buff.arcane_charge.stack<=1\nactions.burn+=/mirror_image\nactions.burn+=/nether_tempest,if=(refreshable||!ticking)&buff.arcane_charge.stack=buff.arcane_charge.max_stack&buff.rune_of_power.down&buff.arcane_power.down\n# When running Overpowered, and we got a Rule of Threes proc (AKA we got our 4th Arcane Charge via Charged Up), use it before using RoP+AP, because the mana reduction is otherwise largely wasted since the AB was free anyway.\nactions.burn+=/arcane_blast,if=buff.rule_of_threes.up&talent.overpowered.enabled&active_enemies<3\nactions.burn+=/lights_judgment,if=buff.arcane_power.down\nactions.burn+=/bag_of_tricks,if=buff.arcane_power.down\nactions.burn+=/rune_of_power,if=!buff.arcane_power.up&(mana.pct>=50||cooldown.arcane_power.remains=0)&(buff.arcane_charge.stack=buff.arcane_charge.max_stack)\nactions.burn+=/berserking\nactions.burn+=/arcane_power\nactions.burn+=/use_items,if=buff.arcane_power.up||time_to_die<cooldown.arcane_power.remains\nactions.burn+=/blood_fury\nactions.burn+=/fireblood\nactions.burn+=/ancestral_call\nactions.burn+=/presence_of_mind,if=(talent.rune_of_power.enabled&buff.rune_of_power.remains<=buff.presence_of_mind.max_stack*action.arcane_blast.execute_time)||buff.arcane_power.remains<=buff.presence_of_mind.max_stack*action.arcane_blast.execute_time\nactions.burn+=/potion,if=buff.arcane_power.up&((!essence.condensed_lifeforce.major||essence.condensed_lifeforce.rank<2)&(buff.berserking.up||buff.blood_fury.up||!(race.troll||race.orc))||buff.guardian_of_azeroth.up)||time_to_die<cooldown.arcane_power.remains\nactions.burn+=/arcane_orb,if=buff.arcane_charge.stack=0||(active_enemies<3||(active_enemies<2&talent.resonance.enabled))\nactions.burn+=/arcane_barrage,if=active_enemies>=3&(buff.arcane_charge.stack=buff.arcane_charge.max_stack)\nactions.burn+=/arcane_explosion,if=active_enemies>=3\n# Ignore Arcane Missiles during Arcane Power, aside from some very specific exceptions, like not having Overpowered talented & running 3x Arcane Pummeling.\nactions.burn+=/arcane_missiles,if=buff.clearcasting.react&active_enemies<3&(talent.amplification.enabled||(!talent.overpowered.enabled&azerite.arcane_pummeling.rank>=2)||buff.arcane_power.down),chain=1\nactions.burn+=/arcane_blast,if=active_enemies<3\n# Now that we're done burning, we can update the average_burn_length with the length of this burn.\n# actions.burn+=/variable,name=average_burn_length,op=set,value=(variable.average_burn_length*variable.total_burns-variable.average_burn_length+(burn_phase_duration))%variable.total_burns\nactions.burn+=/evocation,interrupt_if=mana.pct>=85,interrupt_immediate=1\n# For the rare occasion where we go oom before evocation is back up. (Usually because we get very bad rng so the burn is cut very short)\nactions.burn+=/arcane_barrage\n\nactions.conserve=mirror_image\nactions.conserve+=/charged_up,if=buff.arcane_charge.stack=0\nactions.conserve+=/nether_tempest,if=(refreshable||!ticking)&buff.arcane_charge.stack=buff.arcane_charge.max_stack&buff.rune_of_power.down&buff.arcane_power.down\nactions.conserve+=/arcane_orb,if=buff.arcane_charge.stack<=2&(cooldown.arcane_power.remains>10||active_enemies<=2)\n# Arcane Blast shifts up in priority when running rule of threes.\nactions.conserve+=/arcane_blast,if=buff.rule_of_threes.up&buff.arcane_charge.stack>3\nactions.conserve+=/use_item,name=tidestorm_codex,if=buff.rune_of_power.down&!buff.arcane_power.react&cooldown.arcane_power.remains>20\nactions.conserve+=/use_item,effect_name=cyclotronic_blast,if=buff.rune_of_power.down&!buff.arcane_power.react&cooldown.arcane_power.remains>20\nactions.conserve+=/rune_of_power,if=buff.arcane_charge.stack=buff.arcane_charge.max_stack&(full_recharge_time<=execute_time||full_recharge_time<=cooldown.arcane_power.remains||time_to_die<=cooldown.arcane_power.remains)\nactions.conserve+=/arcane_missiles,if=mana.pct<=95&buff.clearcasting.react&active_enemies<3,chain=1\n# During conserve, we still just want to continue not dropping charges as long as possible.So keep 'burning' as long as possible (aka conserve_mana threshhold) and then swap to a 4x AB->Abarr conserve rotation. If we do not have 4 AC, we can dip slightly lower to get a 4th AC. We also sustain at a higher mana percentage when we plan to use a Rune of Power during conserve phase, so we can burn during the Rune of Power.\nactions.conserve+=/arcane_barrage,if=((buff.arcane_charge.stack=buff.arcane_charge.max_stack)&((mana.pct<=variable.conserve_mana)||(talent.rune_of_power.enabled&cooldown.arcane_power.remains>cooldown.rune_of_power.full_recharge_time&mana.pct<=variable.conserve_mana+25))||(talent.arcane_orb.enabled&cooldown.arcane_orb.remains<=gcd&cooldown.arcane_power.remains>10))||mana.pct<=(variable.conserve_mana-10)\n# Supernova is barely worth casting, which is why it is so far down, only just above AB. \nactions.conserve+=/supernova,if=mana.pct<=95\n# Keep 'burning' in aoe situations until conserve_mana pct. After that only cast AE with 3 Arcane charges, since it's almost equal mana cost to a 3 stack AB anyway. At that point AoE rotation will be AB x3->AE->Abarr\nactions.conserve+=/arcane_explosion,if=active_enemies>=3&(mana.pct>=variable.conserve_mana||buff.arcane_charge.stack=3)\nactions.conserve+=/arcane_blast\nactions.conserve+=/arcane_barrage\n\nactions.essences=blood_of_the_enemy,if=burn_phase&buff.arcane_power.down&buff.rune_of_power.down&buff.arcane_charge.stack=buff.arcane_charge.max_stack||time_to_die<cooldown.arcane_power.remains\nactions.essences+=/concentrated_flame,line_cd=6,if=buff.rune_of_power.down&buff.arcane_power.down&(!burn_phase||time_to_die<cooldown.arcane_power.remains)&mana.time_to_max>=execute_time\nactions.essences+=/reaping_flames,if=buff.rune_of_power.down&buff.arcane_power.down&(!burn_phase||time_to_die<cooldown.arcane_power.remains)&mana.time_to_max>=execute_time\nactions.essences+=/focused_azerite_beam,if=buff.rune_of_power.down&buff.arcane_power.down\nactions.essences+=/guardian_of_azeroth,if=buff.rune_of_power.down&buff.arcane_power.down\nactions.essences+=/purifying_blast,if=buff.rune_of_power.down&buff.arcane_power.down\nactions.essences+=/ripple_in_space,if=buff.rune_of_power.down&buff.arcane_power.down\nactions.essences+=/the_unbound_force,if=buff.rune_of_power.down&buff.arcane_power.down\nactions.essences+=/memory_of_lucid_dreams,if=!burn_phase&buff.arcane_power.down&cooldown.arcane_power.remains&buff.arcane_charge.stack=buff.arcane_charge.max_stack&(!talent.rune_of_power.enabled||action.rune_of_power.charges)||time_to_die<cooldown.arcane_power.remains\nactions.essences+=/worldvein_resonance,if=burn_phase&buff.arcane_power.down&buff.rune_of_power.down&buff.arcane_charge.stack=buff.arcane_charge.max_stack||time_to_die<cooldown.arcane_power.remains\n\nactions.movement=shimmer,if=movement.distance>=10\nactions.movement+=/blink,if=movement.distance>=10\nactions.movement+=/presence_of_mind\nactions.movement+=/arcane_missiles\nactions.movement+=/arcane_orb\nactions.movement+=/supernova",
|
|
},
|
|
},
|
|
},
|
|
["Quillcroft - Thunderhorn"] = {
|
|
["runOnce"] = {
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_262"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_264"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_263"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
},
|
|
["specs"] = {
|
|
[263] = {
|
|
["debuffPadding"] = 0,
|
|
["nameplateRange"] = 8,
|
|
["settings"] = {
|
|
["pad_windstrike"] = true,
|
|
["pad_lava_lash"] = true,
|
|
["filler_shock"] = true,
|
|
["funnel_priority"] = false,
|
|
["purge_icd"] = 12,
|
|
["hostile_dispel"] = false,
|
|
["pwave_gcds"] = 4,
|
|
["pwave_targets"] = 0,
|
|
},
|
|
["maxRefresh"] = 10,
|
|
["potionsReset"] = 20180919.1,
|
|
["maxTime"] = 33,
|
|
["potion"] = "superior_battle_potion_of_agility",
|
|
["buffPadding"] = 0,
|
|
},
|
|
[262] = {
|
|
["debuffPadding"] = 0,
|
|
["nameplateRange"] = 8,
|
|
["settings"] = {
|
|
["purge_icd"] = 12,
|
|
["hostile_dispel"] = false,
|
|
["stack_buffer"] = 1.1,
|
|
["funnel_damage"] = false,
|
|
},
|
|
["maxRefresh"] = 10,
|
|
["potionsReset"] = 20180919.1,
|
|
["maxTime"] = 33,
|
|
["potion"] = "potion_of_unbridled_fury",
|
|
["buffPadding"] = 0,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Enhancement"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/dragonflight/engine/class_modules/sc_shaman.cpp",
|
|
["builtIn"] = true,
|
|
["date"] = 20240910,
|
|
["spec"] = 263,
|
|
["desc"] = "2024-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.thorims_invocation.enabled & buff.maelstrom_weapon.stack > 1 & ti_lightning_bolt & ! talent.elemental_spirits.enabled",
|
|
["action"] = "windstrike",
|
|
},
|
|
{
|
|
["action"] = "feral_spirit",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tempest.stack < buff.tempest.max_stack & buff.maelstrom_weapon.stack >= 5 & talent.elemental_spirits.enabled & feral_spirit.active >= 2 & feral_spirit.remains <= 2 * gcd.max",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["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 >= 10 & talent.elemental_spirits.enabled & feral_spirit.active >= 8 & charges_fractional >= 1.8",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in >= action.doom_winds.cooldown & ! talent.elemental_spirits.enabled",
|
|
["action"] = "doom_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.thorims_invocation.enabled & buff.maelstrom_weapon.stack > 1 & ti_lightning_bolt",
|
|
["action"] = "windstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ascendance.up & pet.surging_totem.active & talent.earthsurge.enabled",
|
|
["action"] = "sundering",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.flame_shock.ticking & talent.lashing_flames.enabled & ( raid_event.adds.in > action.primordial_wave.cooldown || raid_event.adds.in < 6 )",
|
|
["action"] = "primordial_wave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking & talent.lashing_flames.enabled",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= ( 8 - ( talent.elemental_spirits.enabled + talent.elemental_blast.enabled ) )",
|
|
["action"] = "tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & talent.elemental_spirits.enabled & feral_spirit.active >= 4 & ! talent.tempest.enabled",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 8 & feral_spirit.active >= 7 & ( buff.icy_edge.up || buff.molten_weapon.up ) & cooldown.feral_spirit.remains >= 3",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 8 & feral_spirit.active >= 1 & ( buff.icy_edge.stack + buff.molten_weapon.stack >= 1 ) & charges_fractional >= 1.8 & cooldown.feral_spirit.remains >= 3",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tempest.enabled & buff.maelstrom_weapon.stack >= ( buff.maelstrom_weapon.max_stack - talent.elemental_spirits.enabled * ( talent.supercharge.enabled + talent.static_accumulation.enabled ) )",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & buff.ascendance.up & ti_chain_lightning & ( buff.ascendance.remains > ( cooldown.strike.remains + gcd.max ) )",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.elemental_spirits.enabled & ( buff.doom_winds.up || talent.deeply_rooted_elements.enabled || ( talent.stormblast.enabled & buff.stormbringer.up ) )",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_hand.up",
|
|
["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 & raid_event.adds.in > buff.primordial_wave.remains & ( ! buff.splintered_elements.up || boss & 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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > action.primordial_wave.cooldown || raid_event.adds.in < 6",
|
|
["action"] = "primordial_wave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.elemental_spirits.enabled & ( buff.doom_winds.up || talent.deeply_rooted_elements.enabled || ( talent.stormblast.enabled & buff.stormbringer.up ) )",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( buff.maelstrom_weapon.stack >= 8 ) || ( talent.static_accumulation.enabled & buff.maelstrom_weapon.stack >= 5 ) ) & buff.primordial_wave.down",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["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.totemic_rebound.enabled & time_since_tr >= 3.5 ) || ( talent.awakening_storms.enabled & time_since_as >= 3.5 )",
|
|
["action"] = "windstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.totemic_rebound.enabled & time_since_tr >= 3.5 ) || ( talent.awakening_storms.enabled & time_since_as >= 3.5 )",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.lively_totems.enabled & ( action.lava_lash.time_since >= 3.5 )",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in >= action.doom_winds.cooldown & talent.elemental_spirits.enabled",
|
|
["action"] = "doom_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.elemental_assault.enabled & talent.swirling_maelstrom.enabled",
|
|
["action"] = "ice_strike",
|
|
},
|
|
{
|
|
["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,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in >= action.sundering.cooldown",
|
|
["action"] = "sundering",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5",
|
|
["action"] = "tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hailstorm.enabled & buff.maelstrom_weapon.stack >= 5 & buff.primordial_wave.down",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & buff.primordial_wave.down",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
},
|
|
["funnel"] = {
|
|
{
|
|
["action"] = "ascendance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.thorims_invocation.enabled & buff.maelstrom_weapon.stack > 1 ) || 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 || boss & 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.volcanic_strength.up > 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 >= cycle_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 || settings.filler_shock ) & ( talent.fire_nova.enabled || talent.primordial_wave.enabled ) & ( active_dot.flame_shock < cycle_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.volcanic_strength.up > 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"] = {
|
|
{
|
|
["action"] = "bloodlust",
|
|
["line_cd"] = "600",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.ascendance.up || buff.feral_spirit.up || buff.doom_winds.up || ( 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",
|
|
},
|
|
{
|
|
["action"] = "purge",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["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 || ( 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 || ( 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 ) || ( 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 ) || ( 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 || ( 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 || ( 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 || ( 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 || ( 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,
|
|
["criteria"] = "set_bonus.tier31_2pc & ( raid_event.adds.in > ( action.primordial_wave.cooldown / ( 1 + set_bonus.tier31_4pc ) ) || raid_event.adds.in < 6 )",
|
|
["action"] = "primordial_wave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.elemental_spirits.enabled || ( talent.alpha_wolf.enabled & active_enemies > 1 )",
|
|
["action"] = "feral_spirit",
|
|
},
|
|
{
|
|
["action"] = "surging_totem",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.flame_shock.ticking & ( ( ti_lightning_bolt & active_enemies = 1 & raid_event.adds.in >= action.ascendance.cooldown / 2 ) || ( ti_chain_lightning & active_enemies > 1 ) )",
|
|
["action"] = "ascendance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies = 1",
|
|
["list_name"] = "single",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 1 & ( ! toggle.funnel )",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["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"] = "skyfury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lightning_shield",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.earth_shield.up & talent.elemental_orbit.enabled",
|
|
["action"] = "earth_shield",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.thorims_invocation.enabled & buff.maelstrom_weapon.stack > 1 & 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"] = "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",
|
|
["action"] = "chain_lightning",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "feral_spirit",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "doom_winds",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["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",
|
|
["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.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 || settings.filler_shock ) & ( talent.fire_nova.enabled || talent.primordial_wave.enabled ) & ( active_dot.flame_shock < cycle_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",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20240910,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 2: Converted operations in '(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||(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||(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.duration' to 'trinket.t1.buff.duration' (1x).\nLine 7: Converted 'trinket.1.buff.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||(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||(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.duration' to 'trinket.t2.buff.duration' (1x).\nLine 8: Converted 'trinket.2.buff.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||(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||(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)||(fight_remains%%150<=5)' to '(!buff.ascendance.up&!buff.feral_spirit.up&!buff.doom_winds.up)||(fight_remains%150<=5)'.\nLine 10: Converted operations in '(!buff.ascendance.up&!buff.feral_spirit.up&!buff.doom_winds.up)||(fight_remains%%120<=5)' to '(!buff.ascendance.up&!buff.feral_spirit.up&!buff.doom_winds.up)||(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||(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||(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||(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||(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||(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||(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||(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||(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))'.\nLine 17: Converted operations in 'set_bonus.tier31_2pc&(raid_event.adds.in>(action.primordial_wave.cooldown%(1+set_bonus.tier31_4pc))||raid_event.adds.in<6)' to 'set_bonus.tier31_2pc&(raid_event.adds.in>(action.primordial_wave.cooldown/(1+set_bonus.tier31_4pc))||raid_event.adds.in<6)'.\nLine 20: Converted operations in 'dot.flame_shock.ticking&((ti_lightning_bolt&active_enemies=1&raid_event.adds.in>=action.ascendance.cooldown%2)||(ti_chain_lightning&active_enemies>1))' to 'dot.flame_shock.ticking&((ti_lightning_bolt&active_enemies=1&raid_event.adds.in>=action.ascendance.cooldown/2)||(ti_chain_lightning&active_enemies>1))'.\nThe following auras were used in the action list but were not found in the addon database:\n - duration\n\nThe import for 'precombat' required some automated changes.\nLine 5: Converted 'talent.elemental_orbit' to 'talent.elemental_orbit.enabled' (1x).\nLine 6: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 6: Converted 'trinket.1.is.manic_grieftorch' to 'trinket.t1.is.manic_grieftorch' (1x).\nLine 6: Converted 'trinket.1.is.elementium_pocket_anvil' to 'trinket.t1.is.elementium_pocket_anvil' (1x).\nLine 6: Converted 'trinket.1.is.beacon_to_the_beyond' to 'trinket.t1.is.beacon_to_the_beyond' (1x).\nLine 7: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\nLine 7: Converted 'trinket.2.is.manic_grieftorch' to 'trinket.t2.is.manic_grieftorch' (1x).\nLine 7: Converted 'trinket.2.is.elementium_pocket_anvil' to 'trinket.t2.is.elementium_pocket_anvil' (1x).\nLine 7: Converted 'trinket.2.is.beacon_to_the_beyond' to 'trinket.t2.is.beacon_to_the_beyond' (1x).\nLine 8: 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\nImported 5 action lists.\n",
|
|
["profile"] = "actions.precombat+=/windfury_weapon\nactions.precombat+=/flametongue_weapon\nactions.precombat+=/skyfury\nactions.precombat+=/lightning_shield\nactions.precombat+=/earth_shield,if=!buff.earth_shield.up&talent.elemental_orbit\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\nactions+=/bloodlust,line_cd=600\nactions+=/potion,if=(buff.ascendance.up||buff.feral_spirit.up||buff.doom_winds.up||(fight_remains%%300<=30)||(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))\n# Interrupt of casts.\nactions+=/wind_shear\nactions+=/purge\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||(fight_remains%%trinket.1.cooldown.duration<=trinket.1.buff.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||(fight_remains%%trinket.2.cooldown.duration<=trinket.2.buff.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)||(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)||(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||(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||(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||(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||(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+=/primordial_wave,if=set_bonus.tier31_2pc&(raid_event.adds.in>(action.primordial_wave.cooldown%(1+set_bonus.tier31_4pc))||raid_event.adds.in<6)\nactions+=/feral_spirit,if=talent.elemental_spirits.enabled||(talent.alpha_wolf.enabled&active_enemies>1)\nactions+=/surging_totem\nactions+=/ascendance,if=dot.flame_shock.ticking&((ti_lightning_bolt&active_enemies=1&raid_event.adds.in>=action.ascendance.cooldown%2)||(ti_chain_lightning&active_enemies>1))\nactions+=/call_action_list,name=single,strict=1,if=active_enemies=1\nactions+=/call_action_list,name=aoe,strict=1,if=active_enemies>1&(!toggle.funnel)\nactions+=/call_action_list,name=funnel,strict=1,if=active_enemies>1&toggle.funnel\n\nactions.single+=/windstrike,if=talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>1&ti_lightning_bolt&!talent.elemental_spirits.enabled\nactions.single+=/feral_spirit\nactions.single+=/elemental_blast,if=buff.tempest.stack<buff.tempest.max_stack&buff.maelstrom_weapon.stack>=5&talent.elemental_spirits.enabled&feral_spirit.active>=2&feral_spirit.remains<=2*gcd\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>=10&talent.elemental_spirits.enabled&feral_spirit.active>=8&charges_fractional>=1.8\nactions.single+=/doom_winds,if=raid_event.adds.in>=action.doom_winds.cooldown&!talent.elemental_spirits.enabled\nactions.single+=/windstrike,if=talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>1&ti_lightning_bolt\nactions.single+=/sundering,if=buff.ascendance.up&pet.surging_totem.active&talent.earthsurge.enabled\nactions.single+=/primordial_wave,if=!dot.flame_shock.ticking&talent.lashing_flames.enabled&(raid_event.adds.in>action.primordial_wave.cooldown||raid_event.adds.in<6)\nactions.single+=/flame_shock,if=!ticking&talent.lashing_flames.enabled\nactions.single+=/tempest,if=buff.maelstrom_weapon.stack>=(8-(talent.elemental_spirits.enabled+talent.elemental_blast.enabled))\nactions.single+=/elemental_blast,if=buff.maelstrom_weapon.stack>=5&talent.elemental_spirits.enabled&feral_spirit.active>=4&!talent.tempest.enabled\nactions.single+=/elemental_blast,if=buff.maelstrom_weapon.stack>=8&feral_spirit.active>=7&(buff.icy_edge.up||buff.molten_weapon.up)&cooldown.feral_spirit.remains>=3\nactions.single+=/elemental_blast,if=buff.maelstrom_weapon.stack>=8&feral_spirit.active>=1&(buff.icy_edge.stack+buff.molten_weapon.stack>=1)&charges_fractional>=1.8&cooldown.feral_spirit.remains>=3\nactions.single+=/lightning_bolt,if=talent.tempest.enabled&buff.maelstrom_weapon.stack>=(buff.maelstrom_weapon.max_stack-talent.elemental_spirits.enabled*(talent.supercharge.enabled+talent.static_accumulation.enabled))\nactions.single+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=5&buff.ascendance.up&ti_chain_lightning&(buff.ascendance.remains>(cooldown.strike.remains+gcd))\nactions.single+=/stormstrike,if=!talent.elemental_spirits.enabled&(buff.doom_winds.up||talent.deeply_rooted_elements.enabled||(talent.stormblast.enabled&buff.stormbringer.up))\nactions.single+=/lava_lash,if=buff.hot_hand.up\nactions.single+=/elemental_blast,if=buff.maelstrom_weapon.stack>=5&charges=max_charges\nactions.single+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=8&buff.primordial_wave.up&raid_event.adds.in>buff.primordial_wave.remains&(!buff.splintered_elements.up||boss&fight_remains<=12)\nactions.single+=/elemental_blast,if=buff.maelstrom_weapon.stack>=8&(feral_spirit.active>=2||!talent.elemental_spirits.enabled)\nactions.single+=/lava_burst,if=!talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>=5\nactions.single+=/primordial_wave,if=raid_event.adds.in>action.primordial_wave.cooldown||raid_event.adds.in<6\nactions.single+=/stormstrike,if=talent.elemental_spirits.enabled&(buff.doom_winds.up||talent.deeply_rooted_elements.enabled||(talent.stormblast.enabled&buff.stormbringer.up))\nactions.single+=/lightning_bolt,if=((buff.maelstrom_weapon.stack>=8)||(talent.static_accumulation.enabled&buff.maelstrom_weapon.stack>=5))&buff.primordial_wave.down\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+=/windstrike,if=(talent.totemic_rebound.enabled&time_since_tr>=3.5)||(talent.awakening_storms.enabled&time_since_as>=3.5)\nactions.single+=/stormstrike,if=(talent.totemic_rebound.enabled&time_since_tr>=3.5)||(talent.awakening_storms.enabled&time_since_as>=3.5)\nactions.single+=/lava_lash,if=talent.lively_totems.enabled&(action.lava_lash.time_since>=3.5)\nactions.single+=/doom_winds,if=raid_event.adds.in>=action.doom_winds.cooldown&talent.elemental_spirits.enabled\nactions.single+=/ice_strike,if=talent.elemental_assault.enabled&talent.swirling_maelstrom.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,if=raid_event.adds.in>=action.sundering.cooldown\nactions.single+=/tempest,if=buff.maelstrom_weapon.stack>=5\nactions.single+=/lightning_bolt,if=talent.hailstorm.enabled&buff.maelstrom_weapon.stack>=5&buff.primordial_wave.down\nactions.single+=/frost_shock\nactions.single+=/crash_lightning\nactions.single+=/fire_nova,if=active_dot.flame_shock\nactions.single+=/earth_elemental\nactions.single+=/flame_shock,if=settings.filler_shock\nactions.single+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=5&buff.primordial_wave.down\n\nactions.aoe+=/tempest,cycle_targets=1,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.aoe+=/windstrike,cycle_targets=1,if=talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>1&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+=/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\nactions.aoe+=/feral_spirit\nactions.aoe+=/doom_winds\nactions.aoe+=/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+=/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=active_enemies)\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||settings.filler_shock)&(talent.fire_nova.enabled||talent.primordial_wave.enabled)&(active_dot.flame_shock<cycle_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.funnel+=/ascendance\nactions.funnel+=/windstrike,if=(talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>1)||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||boss&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.volcanic_strength.up>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>=cycle_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||settings.filler_shock)&(talent.fire_nova.enabled||talent.primordial_wave.enabled)&(active_dot.flame_shock<cycle_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.volcanic_strength.up>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",
|
|
},
|
|
["Elemental"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20240825,
|
|
["spec"] = 262,
|
|
["desc"] = "2024-08-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+=/thunderstrike_ward\nactions.precombat+=/skyfury\nactions.precombat+=/lightning_shield\nactions.precombat+=/earth_shield,if=!buff.earth_shield.up&talent.elemental_orbit\nactions.precombat+=/potion\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||target.time_to_die<45&cooldown.stormkeeper.remains<5||boss&fight_remains<22\nactions+=/use_item,slot=trinket2,if=!variable.spymaster_in_2nd||target.time_to_die<45&cooldown.stormkeeper.remains<5||boss&fight_remains<22\nactions+=/use_item,slot=main_hand\nactions+=/lightning_shield,if=buff.lightning_shield.down\nactions+=/natures_swiftness\nactions+=/potion\nactions+=/run_action_list,name=aoe,strict=1,if=spell_targets.chain_lightning>2\nactions+=/run_action_list,name=single_target\n\nactions.aoe+=/fire_elemental,if=!buff.fire_elemental.up\nactions.aoe+=/storm_elemental,if=!buff.storm_elemental.up\nactions.aoe+=/stormkeeper,if=!buff.stormkeeper.up\n# {Fire} Reset LMT CD as early as possible.\nactions.aoe+=/totemic_recall,if=cooldown.liquid_magma_totem.remains>15&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# {Lightning} 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&talent.lightning_rod.enabled&dot.flame_shock.remains<target.time_to_die-16&active_dot.flame_shock<(spell_targets.chain_lightning>?6)&!talent.liquid_magma_totem.enabled\n# {Lightning} Cast extra Flame Shock to help getting to next spender for SK+SoP on 6+ targets. Mostly opener.\nactions.aoe+=/flame_shock,cycle_targets=1,if=buff.primordial_wave.up&buff.stormkeeper.up&maelstrom<60-5*talent.eye_of_the_storm.enabled-(8+2*talent.flow_of_power.enabled)*active_dot.flame_shock&spell_targets.chain_lightning>=6&active_dot.flame_shock<6\n# {Fire} 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)\nactions.aoe+=/tempest,cycle_targets=1,if=!buff.arc_discharge.up\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# Against 6 targets or more Surge of Power should be used with Lava Beam rather than Lava Burst.\nactions.aoe+=/lava_beam,if=active_enemies>=6&buff.surge_of_power.up&buff.ascendance.remains>cast_time\n# Against 6 targets or more Surge of Power should be used with Chain Lightning rather than Lava Burst.\nactions.aoe+=/chain_lightning,if=active_enemies>=6&buff.surge_of_power.up\n# 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&maelstrom<60-5*talent.eye_of_the_storm.enabled&spell_targets.chain_lightning>=6&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&(buff.primordial_wave.remains<4||buff.lava_surge.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# 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,cycle_targets=1,if=(debuff.lightning_rod.remains=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&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# {Fire} Spend if you have Master of the elements buff or fighting 5+ enemies. Bank maelstrom during the end of Ascendance. Respect Echoes of Great Sundering.\nactions.aoe+=/earthquake,if=(buff.master_of_the_elements.up||spell_targets.chain_lightning>=5)&(buff.fusion_of_elements_nature.up||buff.ascendance.remains>9||!buff.ascendance.up)&(buff.echoes_of_great_sundering_es.up||buff.echoes_of_great_sundering_eb.up||!talent.echoes_of_great_sundering.enabled)&talent.fire_elemental.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&(!buff.maelstrom_surge.up&set_bonus.tww1_4pc||maelstrom>variable.mael_cap-30)\n# Use Icefury for Fusion f 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\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\n# Use the talents you selected.\nactions.aoe+=/earth_shock,if=talent.echoes_of_great_sundering.enabled\n# Buff Stormkeeper with Master of the elements on 3-4 targets.\nactions.aoe+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains&talent.master_of_the_elements.enabled&!buff.master_of_the_elements.up&(buff.stormkeeper.up||t30_2pc_timer.next_tick<3&set_bonus.tier30_2pc)&(maelstrom<60-5*talent.eye_of_the_storm.enabled-2*talent.flow_of_power.enabled-10)&active_enemies<5\n# Stormkeeper is strong and should be used.\nactions.aoe+=/lava_beam,if=buff.stormkeeper.up&(buff.surge_of_power.up||spell_targets.lava_beam<6)\n# Stormkeeper is strong and should be used.\nactions.aoe+=/chain_lightning,if=buff.stormkeeper.up&(buff.surge_of_power.up||spell_targets.chain_lightning<6)\n# Power of the Maelstrom is strong and should be used.\nactions.aoe+=/lava_beam,if=buff.power_of_the_maelstrom.up&buff.ascendance.remains>cast_time&!buff.stormkeeper.up\n# Power of the Maelstrom is strong and should be used\nactions.aoe+=/chain_lightning,if=buff.power_of_the_maelstrom.up&!buff.stormkeeper.up\n# Consume Master of the Elements with Lava Beam on 4+ targets. Just spam it over hardcasted Lava Burst on 5+ targets.\nactions.aoe+=/lava_beam,if=(buff.master_of_the_elements.up&spell_targets.lava_beam>=4||spell_targets.lava_beam>=5)&buff.ascendance.remains>cast_time&!buff.stormkeeper.up\n# Gamble away for Deeply Rooted Elements procs.\nactions.aoe+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains>2&talent.deeply_rooted_elements.enabled\nactions.aoe+=/lava_beam,if=buff.ascendance.remains>cast_time\nactions.aoe+=/chain_lightning\nactions.aoe+=/flame_shock,moving=1,cycle_targets=1,if=refreshable\nactions.aoe+=/frost_shock,moving=1\n\nactions.single_target+=/fire_elemental,if=!buff.fire_elemental.up\nactions.single_target+=/storm_elemental,if=!buff.storm_elemental.up\n# Just use Stormkeeper.\nactions.single_target+=/stormkeeper,if=!buff.ascendance.up&!buff.stormkeeper.up\n# {Fire} Reset LMT CD as early as possible.\nactions.single_target+=/totemic_recall,if=cooldown.liquid_magma_totem.remains>15&spell_targets.chain_lightning>1&talent.fire_elemental.enabled\n# Use LMT outside Ascendance in fire builds and on 2 targets for lightning.\nactions.single_target+=/liquid_magma_totem,if=!buff.ascendance.up&(talent.fire_elemental.enabled||spell_targets.chain_lightning>1)\n# Use Primordial Wave as much as possible.\nactions.single_target+=/primordial_wave,cycle_targets=1\nactions.single_target+=/ancestral_swiftness\n# {Fire} Manually refresh Flame shock if better options are not available.\nactions.single_target+=/flame_shock,cycle_targets=1,if=active_enemies=1&(dot.flame_shock.remains<2||active_dot.flame_shock=0)&(dot.flame_shock.remains<cooldown.primordial_wave.remains||!talent.primordial_wave.enabled)&(dot.flame_shock.remains<cooldown.liquid_magma_totem.remains||!talent.liquid_magma_totem.enabled)&!buff.surge_of_power.up&talent.fire_elemental.enabled\n# Use Flame shock without Surge of Power if you can't spread it with SoP because it is going to be used on Stormkeeper or Surge of Power is not talented.\nactions.single_target+=/flame_shock,cycle_targets=1,if=active_dot.flame_shock<active_enemies&spell_targets.chain_lightning>1&(talent.deeply_rooted_elements.enabled||talent.ascendance.enabled||talent.primordial_wave.enabled||talent.searing_flames.enabled||talent.magma_chamber.enabled)&(!buff.surge_of_power.up&buff.stormkeeper.up||!talent.surge_of_power.enabled||cooldown.ascendance.remains=0)\n# Spread Flame Shock to multiple targets only if talents were selected that benefit from it.\nactions.single_target+=/flame_shock,cycle_targets=1,if=spell_targets.chain_lightning>1&(talent.deeply_rooted_elements.enabled||talent.ascendance.enabled||talent.primordial_wave.enabled||talent.searing_flames.enabled||talent.magma_chamber.enabled)&(buff.surge_of_power.up&!buff.stormkeeper.up||!talent.surge_of_power.enabled)&dot.flame_shock.remains<6,cycle_targets=1\nactions.single_target+=/tempest\n# Stormkeeper is strong and should be used.\nactions.single_target+=/lightning_bolt,if=buff.stormkeeper.up&buff.surge_of_power.up\n# Buff stormkeeper with MotE when not using Surge of Power.\nactions.single_target+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains>2&buff.stormkeeper.up&!buff.master_of_the_elements.up&!talent.surge_of_power.enabled&talent.master_of_the_elements.enabled\n# Buff Stormkeeper with at least something if you can.\nactions.single_target+=/lightning_bolt,if=buff.stormkeeper.up&!talent.surge_of_power.enabled&(buff.master_of_the_elements.up||!talent.master_of_the_elements.enabled)\n# Surge of Power is strong and should be used.\nactions.single_target+=/lightning_bolt,if=buff.surge_of_power.up&!buff.ascendance.up&talent.echo_chamber.enabled\nactions.single_target+=/ascendance,if=cooldown.lava_burst.charges_fractional<1.0\n# {Fire} Lava Surge is neat. Utilize it.\nactions.single_target+=/lava_burst,if=cooldown_react&buff.lava_surge.up&talent.fire_elemental.enabled\n# Consume Primordial wave buff.\nactions.single_target+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains>2&buff.primordial_wave.up\n# {Fire} Spend if you have MotE buff and: not in Ascendance OR Ascendance gona last so long you will need to spend anyway OR nature fusion buff up OR close to maelstrom cap. Respect Echoes of Great Sundering.\nactions.single_target+=/earthquake,if=buff.master_of_the_elements.up&(buff.echoes_of_great_sundering_es.up||buff.echoes_of_great_sundering_eb.up||spell_targets.chain_lightning>1&!talent.echoes_of_great_sundering.enabled&!talent.elemental_blast.enabled)&(buff.fusion_of_elements_nature.up||maelstrom>variable.mael_cap-15||buff.ascendance.remains>9||!buff.ascendance.up)&talent.fire_elemental.enabled\n# {Fire} Spend if you have MotE buff and: not in Ascendance OR Ascendance gona last so long you will need to spend anyway OR any fusion buff up OR close to maelstrom cap.\nactions.single_target+=/elemental_blast,if=buff.master_of_the_elements.up&(buff.fusion_of_elements_nature.up||buff.fusion_of_elements_fire.up||maelstrom>variable.mael_cap-15||buff.ascendance.remains>6||!buff.ascendance.up)&talent.fire_elemental.enabled\n# {Fire} Spend if you have MotE buff and: not in Ascendance OR Ascendance gona last so long you will need to spend anyway OR nature fusion buff up OR close to maelstrom cap.\nactions.single_target+=/earth_shock,if=buff.master_of_the_elements.up&(buff.fusion_of_elements_nature.up||maelstrom>variable.mael_cap-15||buff.ascendance.remains>9||!buff.ascendance.up)&talent.fire_elemental.enabled\n# {Lightning} Spend if you have Master of the Elements buff and Stormkeeper is not coming up soon OR Stormkeeper is active OR you are close to maelstrom cap. Respect Echoes of Great Sundering.\nactions.single_target+=/earthquake,if=(buff.echoes_of_great_sundering_es.up||buff.echoes_of_great_sundering_eb.up||spell_targets.chain_lightning>1&!talent.echoes_of_great_sundering.enabled&!talent.elemental_blast.enabled)&(buff.master_of_the_elements.up&cooldown.stormkeeper.remains>10||maelstrom>variable.mael_cap-15||buff.stormkeeper.up)&talent.storm_elemental.enabled\n# {Lightning} Spend if you have Master of the Elements buff and Stormkeeper is not coming up soon OR Stormkeeper is active OR you are close to maelstrom cap. Spread Lightning Rod to as many targets as possible.\nactions.single_target+=/elemental_blast,cycle_targets=1,if=(buff.master_of_the_elements.up&cooldown.stormkeeper.remains>10||maelstrom>variable.mael_cap-15||buff.stormkeeper.up)&talent.storm_elemental.enabled\n# {Lightning} Spend if you have Master of the Elements buff and Stormkeeper is not coming up soon OR Stormkeeper is active OR you are close to maelstrom cap. Spread Lightning Rod to as many targets as possible.\nactions.single_target+=/earth_shock,cycle_targets=1,if=(buff.master_of_the_elements.up&cooldown.stormkeeper.remains>10||maelstrom>variable.mael_cap-15||buff.stormkeeper.up)&talent.storm_elemental.enabled\n# Don't waste Icefury stacks even during Ascendance.\nactions.single_target+=/icefury,if=!(buff.fusion_of_elements_nature.up||buff.fusion_of_elements_fire.up)&buff.icefury.stack=2&(talent.fusion_of_elements.enabled||!buff.ascendance.up)\n# Spam Lava burst in Ascendance.\nactions.single_target+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains>2&buff.ascendance.up\n# {Fire} Buff your next <anything> with MotE.\nactions.single_target+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains>2&talent.master_of_the_elements.enabled&!buff.master_of_the_elements.up&talent.fire_elemental.enabled\n# Spend all Lava Burst charges in opener to get one Stormkeeper buffed with Surge of Power. Lava Surge can be used as emergency generator in combat to help with buffing Stormkeeper.\nactions.single_target+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains>2&buff.stormkeeper.up&(buff.lava_surge.up||time<10)\n# Spend if close to overcaping or all Lightning Rods ran out. Respect Echoes of Great Sundering.\nactions.single_target+=/earthquake,cycle_targets=1,if=(buff.echoes_of_great_sundering_es.up||buff.echoes_of_great_sundering_eb.up||spell_targets.chain_lightning>1&!talent.echoes_of_great_sundering.enabled&!talent.elemental_blast.enabled)&(maelstrom>variable.mael_cap-15||debuff.lightning_rod.remains<gcd||fight_remains<5)\n# Spend if close to overcaping or all Lightning Rods ran out.\nactions.single_target+=/elemental_blast,cycle_targets=1,if=maelstrom>variable.mael_cap-15||debuff.lightning_rod.remains<gcd||fight_remains<5\n# Spend if close to overcaping or all Lightning Rods ran out.\nactions.single_target+=/earth_shock,cycle_targets=1,if=maelstrom>variable.mael_cap-15||debuff.lightning_rod.remains<gcd||fight_remains<5\nactions.single_target+=/lightning_bolt,if=buff.surge_of_power.up\n# Use Icefury if you won't overwrite Fusion of Elements buffs.\nactions.single_target+=/icefury,if=!(buff.fusion_of_elements_nature.up||buff.fusion_of_elements_fire.up)\n# Use Icefury-buffed Frost Shock against 1 target or if you need to generate for SoP buff on Stormkeeper.\nactions.single_target+=/frost_shock,if=buff.icefury_dmg.up&(spell_targets.chain_lightning=1||buff.stormkeeper.up)&talent.surge_of_power.enabled\n# Utilize the Power of the Maelstrom buff.\nactions.single_target+=/chain_lightning,if=buff.power_of_the_maelstrom.up&spell_targets.chain_lightning>1&!buff.stormkeeper.up\n# Utilize the Power of the Maelstrom buff.\nactions.single_target+=/lightning_bolt,if=buff.power_of_the_maelstrom.up&!buff.stormkeeper.up\n# Fish for DRE procs.\nactions.single_target+=/lava_burst,cycle_targets=1,if=dot.flame_shock.remains>2&talent.deeply_rooted_elements.enabled\n# Casting Chain Lightning at two targets is more efficient than Lightning Bolt.\nactions.single_target+=/chain_lightning,if=spell_targets.chain_lightning>1\n# Filler spell. Always available. Always the bottom line.\nactions.single_target+=/lightning_bolt\nactions.single_target+=/flame_shock,moving=1,cycle_targets=1,if=refreshable\nactions.single_target+=/flame_shock,moving=1,if=movement.distance>6\n# Frost Shock is our movement filler.\nactions.single_target+=/frost_shock,moving=1",
|
|
["version"] = 20240825,
|
|
["warnings"] = "The import for 'precombat' required some automated changes.\nLine 5: Converted 'talent.elemental_orbit' to 'talent.elemental_orbit.enabled' (1x).\nLine 9: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 10: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\n\nImported 4 action lists.\n",
|
|
["author"] = "SimulationCraft",
|
|
["lists"] = {
|
|
["single_target"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.fire_elemental.up",
|
|
["action"] = "fire_elemental",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.storm_elemental.up",
|
|
["action"] = "storm_elemental",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "stormkeeper",
|
|
["description"] = "Just use Stormkeeper.",
|
|
["criteria"] = "! buff.ascendance.up & ! buff.stormkeeper.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "totemic_recall",
|
|
["description"] = "{Fire} Reset LMT CD as early as possible.",
|
|
["criteria"] = "cooldown.liquid_magma_totem.remains > 15 & spell_targets.chain_lightning > 1 & talent.fire_elemental.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "liquid_magma_totem",
|
|
["description"] = "Use LMT outside Ascendance in fire builds and on 2 targets for lightning.",
|
|
["criteria"] = "! buff.ascendance.up & ( talent.fire_elemental.enabled || spell_targets.chain_lightning > 1 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Primordial Wave as much as possible.",
|
|
["action"] = "primordial_wave",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "ancestral_swiftness",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "flame_shock",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "{Fire} Manually refresh Flame shock if better options are not available.",
|
|
["criteria"] = "active_enemies = 1 & ( dot.flame_shock.remains < 2 || active_dot.flame_shock = 0 ) & ( dot.flame_shock.remains < cooldown.primordial_wave.remains || ! talent.primordial_wave.enabled ) & ( dot.flame_shock.remains < cooldown.liquid_magma_totem.remains || ! talent.liquid_magma_totem.enabled ) & ! buff.surge_of_power.up & talent.fire_elemental.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "flame_shock",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Use Flame shock without Surge of Power if you can't spread it with SoP because it is going to be used on Stormkeeper or Surge of Power is not talented.",
|
|
["criteria"] = "active_dot.flame_shock < active_enemies & spell_targets.chain_lightning > 1 & ( talent.deeply_rooted_elements.enabled || talent.ascendance.enabled || talent.primordial_wave.enabled || talent.searing_flames.enabled || talent.magma_chamber.enabled ) & ( ! buff.surge_of_power.up & buff.stormkeeper.up || ! talent.surge_of_power.enabled || cooldown.ascendance.remains = 0 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "flame_shock",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Spread Flame Shock to multiple targets only if talents were selected that benefit from it.",
|
|
["criteria"] = "spell_targets.chain_lightning > 1 & ( talent.deeply_rooted_elements.enabled || talent.ascendance.enabled || talent.primordial_wave.enabled || talent.searing_flames.enabled || talent.magma_chamber.enabled ) & ( buff.surge_of_power.up & ! buff.stormkeeper.up || ! talent.surge_of_power.enabled ) & dot.flame_shock.remains < 6",
|
|
},
|
|
{
|
|
["action"] = "tempest",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lightning_bolt",
|
|
["description"] = "Stormkeeper is strong and should be used.",
|
|
["criteria"] = "buff.stormkeeper.up & buff.surge_of_power.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Buff stormkeeper with MotE when not using Surge of Power.",
|
|
["criteria"] = "dot.flame_shock.remains > 2 & buff.stormkeeper.up & ! buff.master_of_the_elements.up & ! talent.surge_of_power.enabled & talent.master_of_the_elements.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lightning_bolt",
|
|
["description"] = "Buff Stormkeeper with at least something if you can.",
|
|
["criteria"] = "buff.stormkeeper.up & ! talent.surge_of_power.enabled & ( buff.master_of_the_elements.up || ! talent.master_of_the_elements.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lightning_bolt",
|
|
["description"] = "Surge of Power is strong and should be used.",
|
|
["criteria"] = "buff.surge_of_power.up & ! buff.ascendance.up & talent.echo_chamber.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.lava_burst.charges_fractional < 1.0",
|
|
["action"] = "ascendance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["description"] = "{Fire} Lava Surge is neat. Utilize it.",
|
|
["criteria"] = "cooldown_react & buff.lava_surge.up & talent.fire_elemental.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Consume Primordial wave buff.",
|
|
["criteria"] = "dot.flame_shock.remains > 2 & buff.primordial_wave.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earthquake",
|
|
["description"] = "{Fire} Spend if you have MotE buff and: not in Ascendance OR Ascendance gona last so long you will need to spend anyway OR nature fusion buff up OR close to maelstrom cap. Respect Echoes of Great Sundering.",
|
|
["criteria"] = "buff.master_of_the_elements.up & ( buff.echoes_of_great_sundering_es.up || buff.echoes_of_great_sundering_eb.up || spell_targets.chain_lightning > 1 & ! talent.echoes_of_great_sundering.enabled & ! talent.elemental_blast.enabled ) & ( buff.fusion_of_elements_nature.up || maelstrom > variable.mael_cap - 15 || buff.ascendance.remains > 9 || ! buff.ascendance.up ) & talent.fire_elemental.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "elemental_blast",
|
|
["description"] = "{Fire} Spend if you have MotE buff and: not in Ascendance OR Ascendance gona last so long you will need to spend anyway OR any fusion buff up OR close to maelstrom cap.",
|
|
["criteria"] = "buff.master_of_the_elements.up & ( buff.fusion_of_elements_nature.up || buff.fusion_of_elements_fire.up || maelstrom > variable.mael_cap - 15 || buff.ascendance.remains > 6 || ! buff.ascendance.up ) & talent.fire_elemental.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earth_shock",
|
|
["description"] = "{Fire} Spend if you have MotE buff and: not in Ascendance OR Ascendance gona last so long you will need to spend anyway OR nature fusion buff up OR close to maelstrom cap.",
|
|
["criteria"] = "buff.master_of_the_elements.up & ( buff.fusion_of_elements_nature.up || maelstrom > variable.mael_cap - 15 || buff.ascendance.remains > 9 || ! buff.ascendance.up ) & talent.fire_elemental.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earthquake",
|
|
["description"] = "{Lightning} Spend if you have Master of the Elements buff and Stormkeeper is not coming up soon OR Stormkeeper is active OR you are close to maelstrom cap. Respect Echoes of Great Sundering.",
|
|
["criteria"] = "( buff.echoes_of_great_sundering_es.up || buff.echoes_of_great_sundering_eb.up || spell_targets.chain_lightning > 1 & ! talent.echoes_of_great_sundering.enabled & ! talent.elemental_blast.enabled ) & ( buff.master_of_the_elements.up & cooldown.stormkeeper.remains > 10 || maelstrom > variable.mael_cap - 15 || buff.stormkeeper.up ) & talent.storm_elemental.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "elemental_blast",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "{Lightning} Spend if you have Master of the Elements buff and Stormkeeper is not coming up soon OR Stormkeeper is active OR you are close to maelstrom cap. Spread Lightning Rod to as many targets as possible.",
|
|
["criteria"] = "( buff.master_of_the_elements.up & cooldown.stormkeeper.remains > 10 || maelstrom > variable.mael_cap - 15 || buff.stormkeeper.up ) & talent.storm_elemental.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earth_shock",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "{Lightning} Spend if you have Master of the Elements buff and Stormkeeper is not coming up soon OR Stormkeeper is active OR you are close to maelstrom cap. Spread Lightning Rod to as many targets as possible.",
|
|
["criteria"] = "( buff.master_of_the_elements.up & cooldown.stormkeeper.remains > 10 || maelstrom > variable.mael_cap - 15 || buff.stormkeeper.up ) & talent.storm_elemental.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "icefury",
|
|
["description"] = "Don't waste Icefury stacks even during Ascendance.",
|
|
["criteria"] = "! ( buff.fusion_of_elements_nature.up || buff.fusion_of_elements_fire.up ) & buff.icefury.stack = 2 & ( talent.fusion_of_elements.enabled || ! buff.ascendance.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Spam Lava burst in Ascendance.",
|
|
["criteria"] = "dot.flame_shock.remains > 2 & buff.ascendance.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "{Fire} Buff your next <anything> with MotE.",
|
|
["criteria"] = "dot.flame_shock.remains > 2 & talent.master_of_the_elements.enabled & ! buff.master_of_the_elements.up & talent.fire_elemental.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Spend all Lava Burst charges in opener to get one Stormkeeper buffed with Surge of Power. Lava Surge can be used as emergency generator in combat to help with buffing Stormkeeper.",
|
|
["criteria"] = "dot.flame_shock.remains > 2 & buff.stormkeeper.up & ( buff.lava_surge.up || time < 10 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earthquake",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Spend if close to overcaping or all Lightning Rods ran out. Respect Echoes of Great Sundering.",
|
|
["criteria"] = "( buff.echoes_of_great_sundering_es.up || buff.echoes_of_great_sundering_eb.up || spell_targets.chain_lightning > 1 & ! talent.echoes_of_great_sundering.enabled & ! talent.elemental_blast.enabled ) & ( maelstrom > variable.mael_cap - 15 || debuff.lightning_rod.remains < gcd.max || fight_remains < 5 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "elemental_blast",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Spend if close to overcaping or all Lightning Rods ran out.",
|
|
["criteria"] = "maelstrom > variable.mael_cap - 15 || debuff.lightning_rod.remains < gcd.max || fight_remains < 5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earth_shock",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Spend if close to overcaping or all Lightning Rods ran out.",
|
|
["criteria"] = "maelstrom > variable.mael_cap - 15 || debuff.lightning_rod.remains < gcd.max || fight_remains < 5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.surge_of_power.up",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "icefury",
|
|
["description"] = "Use Icefury if you won't overwrite Fusion of Elements buffs.",
|
|
["criteria"] = "! ( buff.fusion_of_elements_nature.up || buff.fusion_of_elements_fire.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "frost_shock",
|
|
["description"] = "Use Icefury-buffed Frost Shock against 1 target or if you need to generate for SoP buff on Stormkeeper.",
|
|
["criteria"] = "buff.icefury_dmg.up & ( spell_targets.chain_lightning = 1 || buff.stormkeeper.up ) & talent.surge_of_power.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "chain_lightning",
|
|
["description"] = "Utilize the Power of the Maelstrom buff.",
|
|
["criteria"] = "buff.power_of_the_maelstrom.up & spell_targets.chain_lightning > 1 & ! buff.stormkeeper.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lightning_bolt",
|
|
["description"] = "Utilize the Power of the Maelstrom buff.",
|
|
["criteria"] = "buff.power_of_the_maelstrom.up & ! buff.stormkeeper.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Fish for DRE procs.",
|
|
["criteria"] = "dot.flame_shock.remains > 2 & talent.deeply_rooted_elements.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "chain_lightning",
|
|
["description"] = "Casting Chain Lightning at two targets is more efficient than Lightning Bolt.",
|
|
["criteria"] = "spell_targets.chain_lightning > 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Filler spell. Always available. Always the bottom line.",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["moving"] = 1,
|
|
["enable_moving"] = true,
|
|
["action"] = "flame_shock",
|
|
["cycle_targets"] = 1,
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["enable_moving"] = true,
|
|
["action"] = "flame_shock",
|
|
["moving"] = 1,
|
|
["criteria"] = "movement.distance > 6",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["enable_moving"] = true,
|
|
["action"] = "frost_shock",
|
|
["moving"] = 1,
|
|
["description"] = "Frost Shock is our movement filler.",
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.fire_elemental.up",
|
|
["action"] = "fire_elemental",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.storm_elemental.up",
|
|
["action"] = "storm_elemental",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.stormkeeper.up",
|
|
["action"] = "stormkeeper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "totemic_recall",
|
|
["description"] = "{Fire} Reset LMT CD as early as possible.",
|
|
["criteria"] = "cooldown.liquid_magma_totem.remains > 15 & talent.fire_elemental.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "totem.liquid_magma_totem.down",
|
|
["action"] = "liquid_magma_totem",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "primordial_wave",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Spread Flame Shock via Primordial Wave using Surge of Power if possible.",
|
|
["criteria"] = "buff.surge_of_power.up || ! talent.surge_of_power.enabled || maelstrom < 60 - 5 * talent.eye_of_the_storm.enabled",
|
|
},
|
|
{
|
|
["action"] = "ancestral_swiftness",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "flame_shock",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "{Lightning} Spread Flame Shock using Surge of Power if LMT is not picked.",
|
|
["criteria"] = "refreshable & buff.surge_of_power.up & talent.lightning_rod.enabled & dot.flame_shock.remains < target.time_to_die - 16 & active_dot.flame_shock < ( spell_targets.chain_lightning >? 6 ) & ! talent.liquid_magma_totem.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "flame_shock",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "{Lightning} Cast extra Flame Shock to help getting to next spender for SK+SoP on 6+ targets. Mostly opener.",
|
|
["criteria"] = "buff.primordial_wave.up & buff.stormkeeper.up & maelstrom < 60 - 5 * talent.eye_of_the_storm.enabled - ( 8 + 2 * talent.flow_of_power.enabled ) * active_dot.flame_shock & spell_targets.chain_lightning >= 6 & active_dot.flame_shock < 6",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "flame_shock",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "{Fire} Spread and refresh Flame Shock using Surge of Power (if talented) up to 6.",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.arc_discharge.up",
|
|
["action"] = "tempest",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["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"] = "lava_beam",
|
|
["description"] = "Against 6 targets or more Surge of Power should be used with Lava Beam rather than Lava Burst.",
|
|
["criteria"] = "active_enemies >= 6 & buff.surge_of_power.up & buff.ascendance.remains > cast_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "chain_lightning",
|
|
["description"] = "Against 6 targets or more Surge of Power should be used with Chain Lightning rather than Lava Burst.",
|
|
["criteria"] = "active_enemies >= 6 & buff.surge_of_power.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Consume Primordial Wave buff immediately if you have Stormkeeper buff, fighting 6+ enemies and need maelstrom to spend.",
|
|
["criteria"] = "dot.flame_shock.remains > 2 & buff.primordial_wave.up & buff.stormkeeper.up & maelstrom < 60 - 5 * talent.eye_of_the_storm.enabled & spell_targets.chain_lightning >= 6 & talent.surge_of_power.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Cast Lava burst to consume Primordial Wave proc. Wait for Lava Surge proc if possible.",
|
|
["criteria"] = "dot.flame_shock.remains > 2 & buff.primordial_wave.up & ( buff.primordial_wave.remains < 4 || buff.lava_surge.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "{Fire} Use Lava Surge proc to buff <anything> with Master of the Elements.",
|
|
["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",
|
|
},
|
|
{
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Spend if all Lightning Rods ran out or you are close to overcaping. Respect Echoes of Great Sundering.",
|
|
["criteria"] = "( debuff.lightning_rod.remains = 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 & 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"] = "{Fire} Spend if you have Master of the elements buff or fighting 5+ enemies. Bank maelstrom during the end of Ascendance. Respect Echoes of Great Sundering.",
|
|
["criteria"] = "( buff.master_of_the_elements.up || spell_targets.chain_lightning >= 5 ) & ( buff.fusion_of_elements_nature.up || buff.ascendance.remains > 9 || ! buff.ascendance.up ) & ( buff.echoes_of_great_sundering_es.up || buff.echoes_of_great_sundering_eb.up || ! talent.echoes_of_great_sundering.enabled ) & talent.fire_elemental.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earth_shock",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Use the talents you selected. Spread Lightning Rod to as many targets as possible.",
|
|
["criteria"] = "talent.echoes_of_great_sundering.enabled & ! buff.echoes_of_great_sundering_es.up & ( ! buff.maelstrom_surge.up & set_bonus.tww1_4pc || maelstrom > variable.mael_cap - 30 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "icefury",
|
|
["description"] = "Use Icefury for Fusion f 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,
|
|
["description"] = "{Fire} Proc Master of the Elements outside Ascendance.",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earth_shock",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Use the talents you selected. Spread Lightning Rod to as many targets as possible.",
|
|
["criteria"] = "talent.echoes_of_great_sundering.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earth_shock",
|
|
["description"] = "Use the talents you selected.",
|
|
["criteria"] = "talent.echoes_of_great_sundering.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Buff Stormkeeper with Master of the elements on 3-4 targets.",
|
|
["criteria"] = "dot.flame_shock.remains & talent.master_of_the_elements.enabled & ! buff.master_of_the_elements.up & ( buff.stormkeeper.up || t30_2pc_timer.next_tick < 3 & set_bonus.tier30_2pc ) & ( maelstrom < 60 - 5 * talent.eye_of_the_storm.enabled - 2 * talent.flow_of_power.enabled - 10 ) & active_enemies < 5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_beam",
|
|
["description"] = "Stormkeeper is strong and should be used.",
|
|
["criteria"] = "buff.stormkeeper.up & ( buff.surge_of_power.up || spell_targets.lava_beam < 6 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "chain_lightning",
|
|
["description"] = "Stormkeeper is strong and should be used.",
|
|
["criteria"] = "buff.stormkeeper.up & ( buff.surge_of_power.up || spell_targets.chain_lightning < 6 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_beam",
|
|
["description"] = "Power of the Maelstrom is strong and should be used.",
|
|
["criteria"] = "buff.power_of_the_maelstrom.up & buff.ascendance.remains > cast_time & ! buff.stormkeeper.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "chain_lightning",
|
|
["description"] = "Power of the Maelstrom is strong and should be used",
|
|
["criteria"] = "buff.power_of_the_maelstrom.up & ! buff.stormkeeper.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_beam",
|
|
["description"] = "Consume Master of the Elements with Lava Beam on 4+ targets. Just spam it over hardcasted Lava Burst on 5+ targets.",
|
|
["criteria"] = "( buff.master_of_the_elements.up & spell_targets.lava_beam >= 4 || spell_targets.lava_beam >= 5 ) & buff.ascendance.remains > cast_time & ! buff.stormkeeper.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Gamble away for Deeply Rooted Elements procs.",
|
|
["criteria"] = "dot.flame_shock.remains > 2 & talent.deeply_rooted_elements.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ascendance.remains > cast_time",
|
|
["action"] = "lava_beam",
|
|
},
|
|
{
|
|
["action"] = "chain_lightning",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["moving"] = 1,
|
|
["enable_moving"] = true,
|
|
["action"] = "flame_shock",
|
|
["cycle_targets"] = 1,
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable",
|
|
},
|
|
{
|
|
["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",
|
|
["moving"] = 1,
|
|
["description"] = "Enable more movement.",
|
|
},
|
|
{
|
|
["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,
|
|
["criteria"] = "! variable.spymaster_in_1st || target.time_to_die < 45 & cooldown.stormkeeper.remains < 5 || boss & fight_remains < 22",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.spymaster_in_2nd || target.time_to_die < 45 & cooldown.stormkeeper.remains < 5 || boss & fight_remains < 22",
|
|
["action"] = "trinket2",
|
|
["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,
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "spell_targets.chain_lightning > 2",
|
|
["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"] = "thunderstrike_ward",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "skyfury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lightning_shield",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.earth_shield.up & talent.elemental_orbit.enabled",
|
|
["action"] = "earth_shield",
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["Restoration Shaman"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20240901,
|
|
["spec"] = 264,
|
|
["desc"] = "2024-07-30: The War Within",
|
|
["profile"] = "actions.precombat+=/earthliving_weapon\nactions.precombat+=/water_shield,if=buff.water_shield.up+buff.earth_shield.up+buff.lightning_shield.up<1+talent.elemental_orbit.rank\nactions.precombat+=/lightning_shield,if=buff.water_shield.up+buff.earth_shield.up+buff.lightning_shield.up<1+talent.elemental_orbit.rank\nactions.precombat+=/earth_shield,if=buff.water_shield.up+buff.earth_shield.up+buff.lightning_shield.up<1+talent.elemental_orbit.rank\nactions.precombat+=/earth_elemental\nactions.precombat+=/potion\n\nactions+=/spiritwalkers_grace,moving=1,if=movement.distance>6\n# Interrupt of casts.\nactions+=/wind_shear\nactions+=/potion\nactions+=/use_items\nactions+=/blood_fury\nactions+=/berserking\nactions+=/fireblood\nactions+=/ancestral_call\nactions+=/bag_of_tricks\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",
|
|
["version"] = 20240901,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 10: Converted 'talent.acid_rain' to 'talent.acid_rain.enabled' (1x).\nLine 14: Converted 'talent.chain_lightning' to 'talent.chain_lightning.enabled' (1x).\n\nImported 2 action lists.\n",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["moving"] = 1,
|
|
["enable_moving"] = true,
|
|
["criteria"] = "movement.distance > 6",
|
|
["action"] = "spiritwalkers_grace",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Interrupt of casts.",
|
|
["action"] = "wind_shear",
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "surging_totem",
|
|
["criteria"] = "talent.acid_rain.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.acid_rain.enabled",
|
|
["action"] = "healing_rain",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "flame_shock",
|
|
["criteria"] = "active_enemies < 3 & refreshable",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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"] = "lava_burst",
|
|
},
|
|
{
|
|
["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,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.water_shield.up + buff.earth_shield.up + buff.lightning_shield.up < 1 + talent.elemental_orbit.rank",
|
|
["action"] = "water_shield",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.water_shield.up + buff.earth_shield.up + buff.lightning_shield.up < 1 + talent.elemental_orbit.rank",
|
|
["action"] = "lightning_shield",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.water_shield.up + buff.earth_shield.up + buff.lightning_shield.up < 1 + talent.elemental_orbit.rank",
|
|
["action"] = "earth_shield",
|
|
},
|
|
{
|
|
["action"] = "earth_elemental",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["author"] = "Hekili",
|
|
},
|
|
},
|
|
},
|
|
["Quillikus - Thunderhorn"] = {
|
|
["runOnce"] = {
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["enabledArcaneMageOnce_20190309"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_64"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_62"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_63"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
},
|
|
["specs"] = {
|
|
[64] = {
|
|
["debuffPadding"] = 0,
|
|
["nameplateRange"] = 8,
|
|
["settings"] = {
|
|
["rotation"] = "standard",
|
|
["prevent_hardcasts"] = false,
|
|
},
|
|
["maxRefresh"] = 10,
|
|
["potionsReset"] = 20180919.1,
|
|
["maxTime"] = 33,
|
|
["potion"] = "potion_of_focused_resolve",
|
|
["buffPadding"] = 0,
|
|
},
|
|
[63] = {
|
|
["debuffPadding"] = 0,
|
|
["maxTime"] = 33,
|
|
["nameplateRange"] = 8,
|
|
["settings"] = {
|
|
["prevent_hardcasts"] = false,
|
|
["reserve_runes"] = 1,
|
|
["no_scorch_blast"] = true,
|
|
["check_explosion_range"] = true,
|
|
["save_2_runes"] = true,
|
|
["pyroblast_pull"] = false,
|
|
},
|
|
["potion"] = "potion_of_unbridled_fury",
|
|
["potionsReset"] = 20180919.1,
|
|
["gcdSync"] = false,
|
|
["maxRefresh"] = 10,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[62] = {
|
|
["debuffPadding"] = 0,
|
|
["nameplateRange"] = 8,
|
|
["settings"] = {
|
|
["cancel_pom"] = false,
|
|
["check_explosion_range"] = true,
|
|
},
|
|
["maxRefresh"] = 10,
|
|
["potionsReset"] = 20180919.1,
|
|
["maxTime"] = 33,
|
|
["potion"] = "potion_of_focused_resolve",
|
|
["buffPadding"] = 0,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Frost Mage"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241103,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-11-03: 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 || prev_gcd.1.cone_of_cold",
|
|
["action"] = "comet_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icy_veins.up & ( buff.deaths_chill.stack < 8 || buff.deaths_chill.stack = 8 & ! action.frostbolt.in_flight ) & buff.icy_veins.remains > 8 & talent.deaths_chill.enabled",
|
|
["action"] = "frostbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( prev_gcd.1.frostbolt || prev_gcd.1.frostfire_bolt ) & buff.icicles.stacks >= 3 ) || prev_gcd.1.glacial_spike || ( buff.icicles.stacks >= 3 & buff.icicles.stacks < 5 & charges_fractional = 2 )",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill = 1",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.stacks < 2 & ( ! talent.ray_of_frost.enabled || cooldown.ray_of_frost.remains )",
|
|
["action"] = "frozen_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.coldest_snap.enabled & cooldown.comet_storm.remains > 10 & cooldown.frozen_orb.remains > 10 & remaining_winters_chill = 0 & active_enemies >= 3",
|
|
["action"] = "cone_of_cold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stacks = 5 & ( cooldown.flurry.up || remaining_winters_chill & buff.icy_veins.down )",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.frozen_orb.true_remains > 10 & ( ! talent.comet_storm.enabled || cooldown.comet_storm.true_remains > 10 ) & ( ! talent.ray_of_frost.enabled || cooldown.ray_of_frost.true_remains > 10 ) || cooldown.icy_veins.true_remains < 20",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stacks = 5",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frostfire_empowerment.up & remaining_winters_chill",
|
|
["action"] = "frostbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.up & ! prev_gcd.1.glacial_spike || remaining_winters_chill & buff.icy_veins.down",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["action"] = "frostbolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "movement",
|
|
},
|
|
},
|
|
["st_aoebuild"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.flurry & ( buff.icy_veins.down || talent.frostfire_bolt.enabled )",
|
|
["action"] = "comet_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.icicles.stack < 5 || talent.splinterstorm.enabled ) & ( remaining_winters_chill = 0 & debuff.winters_chill.down & ( prev_gcd.1.frostbolt || prev_gcd.1.frostfire_bolt || prev_gcd.1.glacial_spike ) || buff.excess_frost.up )",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.splinterstorm.enabled || ( ! talent.ray_of_frost.enabled || buff.fingers_of_frost.down & cooldown.ray_of_frost.remains & buff.icicles.stack < 5 ) )",
|
|
["action"] = "frozen_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.icy_veins.true_remains > 10 & cooldown.flurry.true_remains & ( fight_remains + 10 > cooldown.icy_veins.true_remains ) || talent.frostfire_bolt.enabled ) & ( talent.splinterstorm.enabled || ( buff.icy_veins.down || ! talent.deaths_chill.enabled ) & cooldown.frozen_orb.true_remains > 10 & ( ! talent.comet_storm.enabled || cooldown.comet_storm.true_remains > 10 ) & ( ! talent.ray_of_frost.enabled || cooldown.ray_of_frost.true_remains > 10 ) & buff.icicles.stack < 5 )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stacks = 5 & ( cooldown.flurry.up || remaining_winters_chill )",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill & talent.frostfire_bolt.enabled || remaining_winters_chill = 1",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "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",
|
|
},
|
|
},
|
|
["aoe_ss"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.coldest_snap.enabled & cooldown.frozen_orb.remains & ( prev_gcd.1.comet_storm || prev_gcd.1.frozen_orb & cooldown.comet_storm.remains ) & ( ! talent.deaths_chill.enabled || buff.icy_veins.remains < 8 || buff.deaths_chill.stack >= 12 )",
|
|
["action"] = "cone_of_cold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable & debuff.frozen.down & prev_gcd.1.glacial_spike",
|
|
["action"] = "freeze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill = 0 & prev_gcd.1.glacial_spike",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "",
|
|
["action"] = "frozen_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.deaths_chill.enabled & buff.icy_veins.remains > 8 & ( buff.deaths_chill.stack < 9 || buff.deaths_chill.stack = 9 & ! action.frostbolt.in_flight )",
|
|
["action"] = "frostbolt",
|
|
},
|
|
{
|
|
["action"] = "comet_storm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blizzard",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.icy_veins.true_remains > 10",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stack = 5 & ( cooldown.flurry.up || remaining_winters_chill )",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.up",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill = 0",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable || active_enemies >= 8",
|
|
["action"] = "ice_nova",
|
|
},
|
|
{
|
|
["action"] = "frostbolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "movement",
|
|
},
|
|
},
|
|
["st_ff"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.flurry || prev_gcd.1.cone_of_cold",
|
|
["action"] = "comet_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stacks < 5 & remaining_winters_chill = 0 & ( debuff.winters_chill.down || buff.brain_freeze.up || buff.excess_frost.up )",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.coldest_snap.enabled & prev_gcd.1.comet_storm & active_enemies >= 3",
|
|
["action"] = "cone_of_cold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stacks = 5 & ( cooldown.flurry.up || remaining_winters_chill )",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill & ( buff.icy_veins.remains < 14 || buff.spymasters_web.up )",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["action"] = "frozen_orb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.icy_veins.down || ! talent.deaths_chill.enabled ) & cooldown.frozen_orb.true_remains > 10 & ( ! talent.comet_storm.enabled || cooldown.comet_storm.true_remains > 10 ) & ( ! talent.ray_of_frost.enabled || cooldown.ray_of_frost.true_remains > 10 )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.excess_fire.up & remaining_winters_chill = 2 || remaining_winters_chill = 0 & debuff.winters_chill.down & buff.fingers_of_frost.up",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["action"] = "frostbolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "movement",
|
|
},
|
|
},
|
|
["aoe_ff"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.coldest_snap.enabled & cooldown.frozen_orb.remains > 4 & ( prev_gcd.1.comet_storm || prev_gcd.1.frozen_orb & ! talent.comet_storm.enabled || cooldown.comet_storm.remains > 15 & ! talent.frostfire_bolt.enabled )",
|
|
["action"] = "cone_of_cold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ! prev_gcd.1.cone_of_cold || ! talent.isothermic_core.enabled ) & ( ! prev_gcd.1.glacial_spike || ! freezable ) )",
|
|
["action"] = "frozen_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! prev_gcd.1.glacial_spike || ! freezable",
|
|
["action"] = "blizzard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icy_veins.up & ( buff.deaths_chill.stack < 9 || buff.deaths_chill.stack = 9 & ! action.frostbolt.in_flight ) & buff.icy_veins.remains > 8 & talent.deaths_chill.enabled",
|
|
["action"] = "frostbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! prev_gcd.1.glacial_spike & ( ! talent.coldest_snap.enabled || cooldown.cone_of_cold.ready & cooldown.frozen_orb.remains > 20 || ( cooldown.cone_of_cold.remains > 10 ) )",
|
|
["action"] = "comet_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable & debuff.frozen.down & ( ! talent.glacial_spike.enabled || prev_gcd.1.glacial_spike )",
|
|
["action"] = "freeze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable & ! prev_off_gcd.freeze & ( prev_gcd.1.glacial_spike )",
|
|
["action"] = "ice_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable & ! prev_off_gcd.freeze & ( prev_gcd.1.glacial_spike & ! remaining_winters_chill )",
|
|
["action"] = "frost_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.comet_storm.true_remains > 14",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frostfire_empowerment.up & ! buff.excess_frost.up & ! buff.excess_fire.up",
|
|
["action"] = "frostbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stack = 5 & ( freezable || ( cooldown.flurry.up || remaining_winters_chill ) )",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! remaining_winters_chill & ( buff.brain_freeze.up & ! talent.excess_frost.enabled || buff.excess_frost.up || prev_gcd.1.glacial_spike )",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.up || debuff.frozen.remains > travel_time || remaining_winters_chill",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! remaining_winters_chill",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 4 & ( ! talent.glacial_spike.enabled || ! freezable ) & ! talent.frostfire_bolt.enabled",
|
|
["action"] = "ice_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.coldest_snap.enabled & active_enemies >= 7",
|
|
["action"] = "cone_of_cold",
|
|
},
|
|
{
|
|
["action"] = "frostbolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "movement",
|
|
},
|
|
},
|
|
["movement"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "movement.distance > 10",
|
|
["action"] = "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,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "movement.distance > 10",
|
|
["action"] = "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,
|
|
},
|
|
},
|
|
["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",
|
|
["var_name"] = "st_aoebuild",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.frostfire_bolt.enabled",
|
|
["var_name"] = "st_ff",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "10 * talent.frostfire_bolt.enabled + 23 * talent.splinterstorm.enabled",
|
|
["var_name"] = "time_to_coc",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 2 & talent.ice_caller.enabled & ! talent.fractured_frost.enabled || active_enemies >= 4",
|
|
["action"] = "blizzard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies <= 3",
|
|
["action"] = "frostbolt",
|
|
},
|
|
},
|
|
["cleave_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"] = "prev_gcd.1.glacial_spike",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable & debuff.frozen.down & ( ! talent.glacial_spike.enabled || prev_gcd.1.glacial_spike )",
|
|
["action"] = "freeze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable & ! prev.1.freeze & ( prev_gcd.1.glacial_spike )",
|
|
["action"] = "ice_nova",
|
|
},
|
|
{
|
|
["action"] = "frozen_orb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.icy_veins.true_remains > 10 & cooldown.flurry.true_remains & ( boss & fight_remains > cooldown.icy_veins.true_remains - 6 )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.coldest_snap.enabled & cooldown.comet_storm.remains > 10 & cooldown.frozen_orb.remains > 10 & remaining_winters_chill = 0 & active_enemies >= 3",
|
|
["action"] = "cone_of_cold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stack = 5 & ( cooldown.flurry.up || remaining_winters_chill || freezable & cooldown.freeze.ready )",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill & buff.icy_veins.down",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.deaths_chill.enabled & ( ! talent.freezing_rain.enabled & buff.icy_veins.remains > 8 & buff.deaths_chill.stack <= 13 || talent.freezing_rain.enabled & buff.icy_veins.remains > 22 )",
|
|
["action"] = "frostbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.up & ! prev_gcd.1.glacial_spike",
|
|
["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_react & ( cooldown.icy_veins.remains > 22 || buff.icy_veins.up )",
|
|
["action"] = "frozen_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.icy_veins.true_remains > 10 & cooldown.flurry.remains & ( fight_remains + 10 > cooldown.icy_veins.true_remains )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stacks = 5 & ( cooldown.flurry.up || remaining_winters_chill )",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill & buff.icy_veins.down",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icy_veins.remains > 8 & buff.deaths_chill.stack < 8",
|
|
["action"] = "frostbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill = 2 || remaining_winters_chill & cooldown.flurry.up",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["action"] = "frostbolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "movement",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icy_veins.remains > 19 || boss & fight_remains < 25",
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "equipped.spymasters_web & ( boss & fight_remains < 50 || cooldown.icy_veins.remains < 12 ) || ! equipped.spymasters_web & ( boss & fight_remains < 30 || prev_off_gcd.icy_veins )",
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icy_veins.remains < 21 || boss & fight_remains < 25",
|
|
["name"] = "burst_of_knowledge",
|
|
["action"] = "burst_of_knowledge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 22 || buff.icy_veins.remains < 19 & ( boss & fight_remains < 105 || buff.spymasters_report.stack >= 32 ) & ( buff.icy_veins.remains > 15 || equipped.treacherous_transmitter & buff.icy_veins.remains > 9 )",
|
|
["name"] = "spymasters_web",
|
|
["action"] = "spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 35 || buff.icy_veins.remains > 10 & ( fight_remains > 315 || cooldown.icy_veins.remains + 12 > fight_remains )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icy_veins.remains < gcd.max * 2",
|
|
["action"] = "icy_veins",
|
|
},
|
|
{
|
|
["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,
|
|
},
|
|
},
|
|
["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 >= 4",
|
|
["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 & active_enemies <= 3",
|
|
["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"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.frostfire_bolt.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 )",
|
|
["list_name"] = "st_aoebuild",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.frostfire_bolt.enabled",
|
|
["list_name"] = "st_ff",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.frostfire_bolt.enabled",
|
|
["list_name"] = "st_ss",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241103,
|
|
["warnings"] = "The import for 'cleave_ff' required some automated changes.\nLine 2: Converted 'talent.deaths_chill' to 'talent.deaths_chill.enabled' (1x).\nLine 5: Converted 'talent.ray_of_frost' to 'talent.ray_of_frost.enabled' (1x).\nLine 6: Converted 'talent.coldest_snap' to 'talent.coldest_snap.enabled' (1x).\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 'st_aoebuild' required some automated changes.\nLine 1: Converted 'talent.frostfire_bolt' to 'talent.frostfire_bolt.enabled' (1x).\nLine 2: Converted 'talent.splinterstorm' to 'talent.splinterstorm.enabled' (1x).\nLine 3: Converted 'talent.splinterstorm' to 'talent.splinterstorm.enabled' (1x).\nLine 3: Converted 'talent.ray_of_frost' to 'talent.ray_of_frost.enabled' (1x).\nLine 4: Converted 'talent.frostfire_bolt' to 'talent.frostfire_bolt.enabled' (1x).\nLine 4: Converted 'talent.splinterstorm' to 'talent.splinterstorm.enabled' (1x).\nLine 4: Converted 'talent.deaths_chill' to 'talent.deaths_chill.enabled' (1x).\nLine 4: Converted 'talent.comet_storm' to 'talent.comet_storm.enabled' (1x).\nLine 4: Converted 'talent.ray_of_frost' to 'talent.ray_of_frost.enabled' (1x).\nLine 6: Converted 'talent.frostfire_bolt' to 'talent.frostfire_bolt.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).\n\nThe import for 'st_ff' required some automated changes.\nLine 3: Converted 'talent.coldest_snap' to 'talent.coldest_snap.enabled' (1x).\nLine 7: Converted 'talent.deaths_chill' to 'talent.deaths_chill.enabled' (1x).\nLine 7: Converted 'talent.comet_storm' to 'talent.comet_storm.enabled' (1x).\nLine 7: 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 1: Converted 'talent.comet_storm' to 'talent.comet_storm.enabled' (1x).\nLine 1: Converted 'talent.frostfire_bolt' to 'talent.frostfire_bolt.enabled' (1x).\nLine 2: Converted 'talent.isothermic_core' to 'talent.isothermic_core.enabled' (1x).\nLine 4: Converted 'talent.deaths_chill' to 'talent.deaths_chill.enabled' (1x).\nLine 5: Converted 'talent.coldest_snap' to 'talent.coldest_snap.enabled' (1x).\nLine 6: Converted 'talent.glacial_spike' to 'talent.glacial_spike.enabled' (1x).\nLine 12: Converted 'talent.excess_frost' to 'talent.excess_frost.enabled' (1x).\nLine 15: Converted 'talent.glacial_spike' to 'talent.glacial_spike.enabled' (1x).\nLine 15: Converted 'talent.frostfire_bolt' to 'talent.frostfire_bolt.enabled' (1x).\nLine 16: Converted 'talent.coldest_snap' to 'talent.coldest_snap.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 7: Converted 'talent.cold_front' to 'talent.cold_front.enabled' (1x).\nLine 7: Converted 'talent.slick_ice' to 'talent.slick_ice.enabled' (1x).\nLine 7: Converted 'talent.deaths_chill' to 'talent.deaths_chill.enabled' (1x).\nLine 7: Converted 'talent.frozen_touch' to 'talent.frozen_touch.enabled' (1x).\nLine 7: Converted 'talent.frostfire_bolt' to 'talent.frostfire_bolt.enabled' (1x).\nLine 7: Converted 'talent.deep_shatter' to 'talent.deep_shatter.enabled' (1x).\nLine 7: Converted 'talent.slick_ice' to 'talent.slick_ice.enabled' (1x).\nLine 7: Converted 'talent.deaths_chill' to 'talent.deaths_chill.enabled' (1x).\nLine 8: Converted 'talent.frostfire_bolt' to 'talent.frostfire_bolt.enabled' (1x).\nLine 9: 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 4: Converted 'talent.frostfire_bolt' to 'talent.frostfire_bolt.enabled' (1x).\nLine 5: Converted 'talent.frostfire_bolt' to 'talent.frostfire_bolt.enabled' (1x).\nLine 5: Converted 'talent.splinterstorm' to 'talent.splinterstorm.enabled' (1x).\nLine 6: Converted 'talent.ice_caller' to 'talent.ice_caller.enabled' (1x).\nLine 6: Converted 'talent.fractured_frost' to 'talent.fractured_frost.enabled' (1x).\n\nThe import for 'movement' required some automated changes.\nLine 4: Converted 'talent.coldest_snap' to 'talent.coldest_snap.enabled' (1x).\nLine 11: Converted 'talent.coldest_snap' to 'talent.coldest_snap.enabled' (1x).\n\nThe import for 'cleave_ss' required some automated changes.\nLine 4: Converted 'talent.glacial_spike' to 'talent.glacial_spike.enabled' (1x).\nLine 8: Converted 'talent.coldest_snap' to 'talent.coldest_snap.enabled' (1x).\nLine 11: Converted 'talent.deaths_chill' to 'talent.deaths_chill.enabled' (1x).\nLine 11: Converted 'talent.freezing_rain' to 'talent.freezing_rain.enabled' (1x).\nLine 11: Converted 'talent.freezing_rain' to 'talent.freezing_rain.enabled' (1x).\n\nImported 11 action lists.\n",
|
|
["spec"] = 64,
|
|
["profile"] = "actions.precombat+=/arcane_intellect\nactions.precombat+=/mirror_image\nactions.precombat+=/variable,name=st_aoebuild,value=talent.splinterstorm&!(talent.cold_front&talent.slick_ice&talent.deaths_chill&talent.frozen_touch)||talent.frostfire_bolt&!talent.deep_shatter\nactions.precombat+=/variable,name=st_ff,value=talent.frostfire_bolt\nactions.precombat+=/variable,name=time_to_coc,value=10*talent.frostfire_bolt+23*talent.splinterstorm\nactions.precombat+=/blizzard,if=active_enemies>=2&talent.ice_caller&!talent.fractured_frost||active_enemies>=4\nactions.precombat+=/frostbolt,if=active_enemies<=3\n\nactions+=/counterspell\nactions+=/call_action_list,name=cds\nactions+=/run_action_list,name=aoe_ff,strict=1,if=talent.frostfire_bolt&active_enemies>=4\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&active_enemies<=3\nactions+=/run_action_list,name=cleave_ss,strict=1,if=!talent.frostfire_bolt&active_enemies=2\nactions+=/call_action_list,name=st_aoebuild,strict=1,if=!talent.frostfire_bolt&!(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+=/call_action_list,name=st_ff,strict=1,if=talent.frostfire_bolt\nactions+=/call_action_list,name=st_ss,strict=1,if=!talent.frostfire_bolt\n\nactions.aoe_ff+=/cone_of_cold,if=talent.coldest_snap&cooldown.frozen_orb.remains>4&(prev_gcd.1.comet_storm||prev_gcd.1.frozen_orb&!talent.comet_storm||cooldown.comet_storm.remains>15&!talent.frostfire_bolt)\nactions.aoe_ff+=/frozen_orb,if=((!prev_gcd.1.cone_of_cold||!talent.isothermic_core)&(!prev_gcd.1.glacial_spike||!freezable))\nactions.aoe_ff+=/blizzard,if=!prev_gcd.1.glacial_spike||!freezable\nactions.aoe_ff+=/frostbolt,if=buff.icy_veins.up&(buff.deaths_chill.stack<9||buff.deaths_chill.stack=9&!action.frostbolt.in_flight)&buff.icy_veins.remains>8&talent.deaths_chill\nactions.aoe_ff+=/comet_storm,if=!prev_gcd.1.glacial_spike&(!talent.coldest_snap||cooldown.cone_of_cold.ready&cooldown.frozen_orb.remains>20||(cooldown.cone_of_cold.remains>10))\nactions.aoe_ff+=/freeze,if=freezable&debuff.frozen.down&(!talent.glacial_spike||prev_gcd.1.glacial_spike)\nactions.aoe_ff+=/ice_nova,if=freezable&!prev_off_gcd.freeze&(prev_gcd.1.glacial_spike)\nactions.aoe_ff+=/frost_nova,if=freezable&!prev_off_gcd.freeze&(prev_gcd.1.glacial_spike&!remaining_winters_chill)\nactions.aoe_ff+=/shifting_power,if=cooldown.comet_storm.true_remains>14\nactions.aoe_ff+=/frostbolt,if=buff.frostfire_empowerment.up&!buff.excess_frost.up&!buff.excess_fire.up\nactions.aoe_ff+=/glacial_spike,if=buff.icicles.stack=5&(freezable||(cooldown.flurry.up||remaining_winters_chill))\nactions.aoe_ff+=/flurry,if=!remaining_winters_chill&(buff.brain_freeze.up&!talent.excess_frost||buff.excess_frost.up||prev_gcd.1.glacial_spike)\nactions.aoe_ff+=/ice_lance,if=buff.fingers_of_frost.up||debuff.frozen.remains>travel_time||remaining_winters_chill\nactions.aoe_ff+=/flurry,if=!remaining_winters_chill\nactions.aoe_ff+=/ice_nova,if=active_enemies>=4&(!talent.glacial_spike||!freezable)&!talent.frostfire_bolt\nactions.aoe_ff+=/cone_of_cold,if=!talent.coldest_snap&active_enemies>=7\nactions.aoe_ff+=/frostbolt\nactions.aoe_ff+=/call_action_list,name=movement\n\nactions.aoe_ss+=/cone_of_cold,if=talent.coldest_snap&cooldown.frozen_orb.remains&(prev_gcd.1.comet_storm||prev_gcd.1.frozen_orb&cooldown.comet_storm.remains)&(!talent.deaths_chill||buff.icy_veins.remains<8||buff.deaths_chill.stack>=12)\nactions.aoe_ss+=/freeze,if=freezable&debuff.frozen.down&prev_gcd.1.glacial_spike\nactions.aoe_ss+=/flurry,if=remaining_winters_chill=0&prev_gcd.1.glacial_spike\nactions.aoe_ss+=/frozen_orb,if=\nactions.aoe_ss+=/frostbolt,if=talent.deaths_chill&buff.icy_veins.remains>8&(buff.deaths_chill.stack<9||buff.deaths_chill.stack=9&!action.frostbolt.in_flight)\nactions.aoe_ss+=/comet_storm\nactions.aoe_ss+=/blizzard\nactions.aoe_ss+=/shifting_power,if=cooldown.icy_veins.true_remains>10\nactions.aoe_ss+=/glacial_spike,if=buff.icicles.stack=5&(cooldown.flurry.up||remaining_winters_chill)\nactions.aoe_ss+=/ice_lance,if=buff.fingers_of_frost.up\nactions.aoe_ss+=/flurry,if=remaining_winters_chill=0\nactions.aoe_ss+=/ice_nova,if=freezable||active_enemies>=8\nactions.aoe_ss+=/frostbolt\nactions.aoe_ss+=/call_action_list,name=movement\n\nactions.cds+=/use_item,name=imperfect_ascendancy_serum,if=buff.icy_veins.remains>19||boss&fight_remains<25\nactions.cds+=/use_item,name=treacherous_transmitter,if=equipped.spymasters_web&(boss&fight_remains<50||cooldown.icy_veins.remains<12)||!equipped.spymasters_web&(boss&fight_remains<30||prev_off_gcd.icy_veins)\n## actions.cds+=/do_treacherous_transmitter_task,use_off_gcd=1,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=burst_of_knowledge,if=buff.icy_veins.remains<21||boss&fight_remains<25\nactions.cds+=/use_item,name=spymasters_web,if=boss&fight_remains<22||buff.icy_veins.remains<19&(boss&fight_remains<105||buff.spymasters_report.stack>=32)&(buff.icy_veins.remains>15||equipped.treacherous_transmitter&buff.icy_veins.remains>9)\nactions.cds+=/potion,if=boss&fight_remains<35||buff.icy_veins.remains>10&(fight_remains>315||cooldown.icy_veins.remains+12>fight_remains)\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+=/icy_veins,if=buff.icy_veins.remains<gcd.max*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\nactions.cds+=/lights_judgment\nactions.cds+=/fireblood\nactions.cds+=/ancestral_call\n\nactions.cleave_ff+=/comet_storm,if=prev_gcd.1.flurry||prev_gcd.1.cone_of_cold\nactions.cleave_ff+=/frostbolt,if=buff.icy_veins.up&(buff.deaths_chill.stack<8||buff.deaths_chill.stack=8&!action.frostbolt.in_flight)&buff.icy_veins.remains>8&talent.deaths_chill\nactions.cleave_ff+=/flurry,if=((prev_gcd.1.frostbolt||prev_gcd.1.frostfire_bolt)&buff.icicles.stacks>=3)||prev_gcd.1.glacial_spike||(buff.icicles.stacks>=3&buff.icicles.stacks<5&charges_fractional=2)\nactions.cleave_ff+=/ray_of_frost,if=remaining_winters_chill=1\nactions.cleave_ff+=/frozen_orb,if=buff.fingers_of_frost.stacks<2&(!talent.ray_of_frost||cooldown.ray_of_frost.remains)\nactions.cleave_ff+=/cone_of_cold,if=talent.coldest_snap&cooldown.comet_storm.remains>10&cooldown.frozen_orb.remains>10&remaining_winters_chill=0&active_enemies>=3\nactions.cleave_ff+=/glacial_spike,if=buff.icicles.stacks=5&(cooldown.flurry.up||remaining_winters_chill&buff.icy_veins.down)\nactions.cleave_ff+=/shifting_power,if=cooldown.frozen_orb.true_remains>10&(!talent.comet_storm||cooldown.comet_storm.true_remains>10)&(!talent.ray_of_frost||cooldown.ray_of_frost.true_remains>10)||cooldown.icy_veins.true_remains<20\nactions.cleave_ff+=/glacial_spike,if=buff.icicles.stacks=5\nactions.cleave_ff+=/frostfire_bolt,if=buff.frostfire_empowerment.up&remaining_winters_chill\nactions.cleave_ff+=/ice_lance,if=buff.fingers_of_frost.up&!prev_gcd.1.glacial_spike||remaining_winters_chill&buff.icy_veins.down\nactions.cleave_ff+=/frostbolt\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+=/flurry,if=remaining_winters_chill=0&debuff.winters_chill.down&(prev_gcd.1.frostbolt||prev_gcd.1.glacial_spike)\nactions.cleave_ss+=/flurry,if=prev_gcd.1.glacial_spike\nactions.cleave_ss+=/freeze,if=freezable&debuff.frozen.down&(!talent.glacial_spike||prev_gcd.1.glacial_spike)\nactions.cleave_ss+=/ice_nova,if=freezable&!prev.1.freeze&(prev_gcd.1.glacial_spike)\nactions.cleave_ss+=/frozen_orb\nactions.cleave_ss+=/shifting_power,if=cooldown.icy_veins.true_remains>10&cooldown.flurry.true_remains&(boss&fight_remains>cooldown.icy_veins.true_remains-6)\nactions.cleave_ss+=/cone_of_cold,if=talent.coldest_snap&cooldown.comet_storm.remains>10&cooldown.frozen_orb.remains>10&remaining_winters_chill=0&active_enemies>=3\nactions.cleave_ss+=/glacial_spike,if=buff.icicles.stack=5&(cooldown.flurry.up||remaining_winters_chill||freezable&cooldown.freeze.ready)\nactions.cleave_ss+=/ray_of_frost,if=remaining_winters_chill&buff.icy_veins.down\nactions.cleave_ss+=/frostbolt,if=talent.deaths_chill&(!talent.freezing_rain&buff.icy_veins.remains>8&buff.deaths_chill.stack<=13||talent.freezing_rain&buff.icy_veins.remains>22)\nactions.cleave_ss+=/ice_lance,if=buff.fingers_of_frost.up&!prev_gcd.1.glacial_spike\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_aoebuild+=/comet_storm,if=prev_gcd.1.flurry&(buff.icy_veins.down||talent.frostfire_bolt)\nactions.st_aoebuild+=/flurry,if=(buff.icicles.stack<5||talent.splinterstorm)&(remaining_winters_chill=0&debuff.winters_chill.down&(prev_gcd.1.frostbolt||prev_gcd.1.frostfire_bolt||prev_gcd.1.glacial_spike)||buff.excess_frost.up)\nactions.st_aoebuild+=/frozen_orb,if=(talent.splinterstorm||(!talent.ray_of_frost||buff.fingers_of_frost.down&cooldown.ray_of_frost.remains&buff.icicles.stack<5))\nactions.st_aoebuild+=/shifting_power,if=(cooldown.icy_veins.true_remains>10&cooldown.flurry.true_remains&(fight_remains+10>cooldown.icy_veins.true_remains)||talent.frostfire_bolt)&(talent.splinterstorm||(buff.icy_veins.down||!talent.deaths_chill)&cooldown.frozen_orb.true_remains>10&(!talent.comet_storm||cooldown.comet_storm.true_remains>10)&(!talent.ray_of_frost||cooldown.ray_of_frost.true_remains>10)&buff.icicles.stack<5)\nactions.st_aoebuild+=/glacial_spike,if=buff.icicles.stacks=5&(cooldown.flurry.up||remaining_winters_chill)\nactions.st_aoebuild+=/ray_of_frost,if=remaining_winters_chill&talent.frostfire_bolt||remaining_winters_chill=1\nactions.st_aoebuild+=/ice_lance,if=buff.fingers_of_frost.up&!prev_gcd.1.glacial_spike||remaining_winters_chill\nactions.st_aoebuild+=/frostbolt\nactions.st_aoebuild+=/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||prev_gcd.1.cone_of_cold\nactions.st_ff+=/flurry,if=buff.icicles.stacks<5&remaining_winters_chill=0&(debuff.winters_chill.down||buff.brain_freeze.up||buff.excess_frost.up)\nactions.st_ff+=/cone_of_cold,if=talent.coldest_snap&prev_gcd.1.comet_storm&active_enemies>=3\nactions.st_ff+=/glacial_spike,if=buff.icicles.stacks=5&(cooldown.flurry.up||remaining_winters_chill)\nactions.st_ff+=/ray_of_frost,if=remaining_winters_chill&(buff.icy_veins.remains<14||buff.spymasters_web.up)\nactions.st_ff+=/frozen_orb\nactions.st_ff+=/shifting_power,if=(buff.icy_veins.down||!talent.deaths_chill)&cooldown.frozen_orb.true_remains>10&(!talent.comet_storm||cooldown.comet_storm.true_remains>10)&(!talent.ray_of_frost||cooldown.ray_of_frost.true_remains>10)\nactions.st_ff+=/ice_lance,if=buff.excess_fire.up&remaining_winters_chill=2||remaining_winters_chill=0&debuff.winters_chill.down&buff.fingers_of_frost.up\nactions.st_ff+=/frostbolt\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_react&(cooldown.icy_veins.remains>22||buff.icy_veins.up)\nactions.st_ss+=/shifting_power,if=cooldown.icy_veins.true_remains>10&cooldown.flurry.remains&(fight_remains+10>cooldown.icy_veins.true_remains)\nactions.st_ss+=/glacial_spike,if=buff.icicles.stacks=5&(cooldown.flurry.up||remaining_winters_chill)\nactions.st_ss+=/ray_of_frost,if=remaining_winters_chill&buff.icy_veins.down\nactions.st_ss+=/frostbolt,if=buff.icy_veins.remains>8&buff.deaths_chill.stack<8\nactions.st_ss+=/ice_lance,if=remaining_winters_chill=2||remaining_winters_chill&cooldown.flurry.up\nactions.st_ss+=/frostbolt\nactions.st_ss+=/call_action_list,name=movement",
|
|
},
|
|
["Fire"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241022,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-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 || action.meteor.in_flight & action.meteor.in_flight_remains < variable.combustion_cast_remains )",
|
|
["use_off_gcd"] = 1,
|
|
["description"] = "Combustion should be used when the precast is almost finished or when Meteor is about to land.",
|
|
["action"] = "combustion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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.react & ! buff.hot_streak.react & 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,
|
|
["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",
|
|
["action"] = "flamestrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fury_of_the_sun_king.up & buff.fury_of_the_sun_king.remains > cast_time & buff.fury_of_the_sun_king.expiration_delay_remains = 0",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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"] = "( buff.combustion.remains > 10 & fight_remains < 80 )",
|
|
["name"] = "spymasters_web",
|
|
["action"] = "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",
|
|
["value"] = "talent.sun_kings_blessing.enabled",
|
|
["var_name"] = "firestarter_combustion",
|
|
["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,
|
|
["criteria"] = "buff.combustion.up || ( buff.sun_kings_blessing.max_stack - buff.sun_kings_blessing.stack > 4 || variable.time_to_combustion <= 0 || buff.combustion.remains > travel_time || ! talent.sun_kings_blessing.enabled & ( cooldown.meteor.duration < variable.time_to_combustion & fight_remains < variable.time_to_combustion ) )",
|
|
["action"] = "meteor",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With Alexstrasza's Fury when Combustion is not active, Dragon's Breath should be used to convert Heating Up to a Hot Streak.",
|
|
["criteria"] = "talent.alexstraszas_fury.enabled & ( buff.combustion.down & ! buff.hot_streak.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 & debuff.improved_scorch.remains < action.pyroblast.cast_time + 5 * gcd.max & buff.fury_of_the_sun_king.up & ! action.scorch.in_flight",
|
|
["action"] = "scorch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fury_of_the_sun_king.up & buff.fury_of_the_sun_king.expiration_delay_remains = 0",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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.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,
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "improved_scorch.active & debuff.improved_scorch.remains < 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"] = 20241022,
|
|
["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 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 1: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\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 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.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 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 21: Converted 'talent.phoenix_reborn' to 'talent.phoenix_reborn.enabled' (1x).\nLine 23: Converted 'talent.scald' to 'talent.scald.enabled' (1x).\nLine 23: Converted 'talent.improved_scorch' to 'talent.improved_scorch.enabled' (1x).\nLine 24: Converted 'talent.call_of_the_sun_king' to 'talent.call_of_the_sun_king.enabled' (1x).\nLine 24: Converted 'talent.call_of_the_sun_king' to 'talent.call_of_the_sun_king.enabled' (1x).\n\nImported 8 action lists.\n",
|
|
["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,name=spymasters_web,if=(buff.combustion.remains>10&fight_remains<80)\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\nactions.active_talents+=/meteor,if=buff.combustion.up||(buff.sun_kings_blessing.max_stack-buff.sun_kings_blessing.stack>4||variable.time_to_combustion<=0||buff.combustion.remains>travel_time||!talent.sun_kings_blessing&(cooldown.meteor.duration<variable.time_to_combustion&fight_remains<variable.time_to_combustion))\n# With Alexstrasza's Fury when Combustion is not active, Dragon's Breath should be used to convert Heating Up to a Hot Streak.\nactions.active_talents+=/dragons_breath,if=talent.alexstraszas_fury&(buff.combustion.down&!buff.hot_streak.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||action.meteor.in_flight&action.meteor.in_flight_remains<variable.combustion_cast_remains)\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.react&!buff.hot_streak.react&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\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\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\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&debuff.improved_scorch.remains<action.pyroblast.cast_time+5*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.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<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",
|
|
["spec"] = 63,
|
|
},
|
|
["Arcane"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241103,
|
|
["spec"] = 62,
|
|
["desc"] = "2024-11-03: 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 ) || cooldown.evocation.remains < 4 || fight_remains < 20",
|
|
["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,
|
|
["criteria"] = "! ( talent.splintering_sorcery.enabled & variable.transmitter_double_on_use )",
|
|
["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,
|
|
["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 ) & buff.nether_precision.down ) || variable.opener",
|
|
["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 at the cost of some overall AOE, 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 encourages 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,
|
|
["description"] = "With Shifting Shards we can use Shifting Power whenever basically favoring cooldowns slightly, without it though we want to use it outside of cooldown",
|
|
["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,
|
|
["criteria"] = "( ( buff.arcane_surge.down & buff.siphon_storm.down & debuff.touch_of_the_magi.down & cooldown.touch_of_the_magi.true_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.true_remains < 20 ) ) ) & fight_remains > 10",
|
|
["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"] = "( variable.touch_ready ) || ( talent.arcane_tempo.enabled & buff.arcane_tempo.up & buff.arcane_tempo.remains < gcd.max ) || ( ( buff.aethervision.stack = 2 || buff.intuition.up ) & ( buff.nether_precision.up || ( target.health.pct < 35 & talent.arcane_bombardment.enabled & buff.clearcasting.down ) || ( mana.pct < 70 & talent.enlightened.enabled & buff.clearcasting.down & buff.arcane_surge.down ) ) ) || ( action.arcane_orb.charges > 0 & buff.arcane_charge.stack = 4 & buff.clearcasting.stack = 0 & buff.nether_precision.down & talent.orb_barrage.enabled )",
|
|
["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 ) ) || ( buff.arcane_charge.stack = 4 & talent.reverberate.enabled & active_enemies > 2 ) || ( buff.aether_attunement.up & talent.high_voltage.enabled & buff.clearcasting.up & 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 or if you have 3 stacks to prevent munching, always clip off GCD unless you 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 )",
|
|
["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"] = 20241103,
|
|
["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 9: Converted 'talent.splintering_sorcery' to 'talent.splintering_sorcery.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.shifting_shards' to 'talent.shifting_shards.enabled' (1x).\nLine 3: Converted 'talent.unerring_proficiency' to 'talent.unerring_proficiency.enabled' (1x).\nLine 6: Converted 'talent.arcane_tempo' to 'talent.arcane_tempo.enabled' (1x).\nLine 6: Converted 'talent.arcane_bombardment' to 'talent.arcane_bombardment.enabled' (1x).\nLine 6: Converted 'talent.enlightened' to 'talent.enlightened.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,if=!(talent.splintering_sorcery&variable.transmitter_double_on_use)\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)||cooldown.evocation.remains<4||fight_remains<20\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\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)&buff.nether_precision.down)||variable.opener,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\nactions.spellslinger+=/shifting_power,if=((buff.arcane_surge.down&buff.siphon_storm.down&debuff.touch_of_the_magi.down&cooldown.touch_of_the_magi.true_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.true_remains<20)))&fight_remains>10\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=(variable.touch_ready)||(talent.arcane_tempo&buff.arcane_tempo.up&buff.arcane_tempo.remains<gcd.max)||((buff.aethervision.stack=2||buff.intuition.up)&(buff.nether_precision.up||(target.health.pct<35&talent.arcane_bombardment&buff.clearcasting.down)||(mana.pct<70&talent.enlightened&buff.clearcasting.down&buff.arcane_surge.down)))||(action.arcane_orb.charges>0&buff.arcane_charge.stack=4&buff.clearcasting.stack=0&buff.nether_precision.down&talent.orb_barrage)\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))||(buff.arcane_charge.stack=4&talent.reverberate&active_enemies>2)||(buff.aether_attunement.up&talent.high_voltage&buff.clearcasting.up&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 or if you have 3 stacks to prevent munching, always clip off GCD unless you have Aether Attunement\nactions.spellslinger+=/arcane_missiles,if=(buff.clearcasting.up&buff.nether_precision.down),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\n# With Shifting Shards we can use Shifting Power whenever basically favoring cooldowns slightly, without it though we want to use it outside of cooldown\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 at the cost of some overall AOE, 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 encourages 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",
|
|
},
|
|
},
|
|
},
|
|
["Quillastra - Deathwing"] = {
|
|
["runOnce"] = {
|
|
["forceReloadClassDefaultOptions_20220306_103"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["removeOldThrottles_20241115"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_105"] = true,
|
|
["resetAllPotions_20201209"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["resetGlobalCooldownSync_20210403"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_102"] = true,
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_104"] = true,
|
|
["forceEnableEnhancedRecheckBoomkin_20210712"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
},
|
|
["specs"] = {
|
|
[103] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["delay_berserking"] = false,
|
|
["regrowth"] = true,
|
|
["frenzy_cp"] = 2,
|
|
["zerk_biteweave"] = false,
|
|
["allow_crit_prediction"] = true,
|
|
["vigil_damage"] = 50,
|
|
["owlweave_cat"] = false,
|
|
["use_funnel"] = false,
|
|
["rip_duration"] = 9,
|
|
["lazy_swipe"] = false,
|
|
["filler_regrowth"] = false,
|
|
["brutal_charges"] = 2,
|
|
["solo_prowl"] = false,
|
|
},
|
|
},
|
|
[104] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["maul_anyway"] = true,
|
|
["ironfur_damage_threshold"] = 5,
|
|
["vigil_damage"] = 50,
|
|
["catweave_bear"] = false,
|
|
["max_ironfur"] = 1,
|
|
["mangle_more"] = false,
|
|
["maul_rage"] = 20,
|
|
["owlweave_bear"] = false,
|
|
["shift_for_convoke"] = false,
|
|
},
|
|
},
|
|
[102] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["vigil_damage"] = 50,
|
|
["starlord_cancel"] = false,
|
|
["solo_drift"] = false,
|
|
["delay_berserking"] = false,
|
|
},
|
|
},
|
|
[105] = {
|
|
["settings"] = {
|
|
["healing_mode"] = false,
|
|
},
|
|
},
|
|
},
|
|
["displays"] = {
|
|
["Interrupts"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = -185.8329925537109,
|
|
["y"] = -389.9986572265625,
|
|
},
|
|
["Cooldowns"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = 138.3331298828125,
|
|
["y"] = -374.1657104492188,
|
|
},
|
|
["Primary"] = {
|
|
["y"] = -374.16552734375,
|
|
["x"] = -65.8331298828125,
|
|
["rel"] = "CENTER",
|
|
},
|
|
["AOE"] = {
|
|
["rel"] = "CENTER",
|
|
},
|
|
["Defensives"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = -185.8332366943359,
|
|
["y"] = -334.9992065429688,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Feral"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/druid_feral.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250425.1,
|
|
["spec"] = 103,
|
|
["desc"] = "2025-04-25: SimC Update; fix 'wait'\n\n2025-03-13: Generators at 5 combo point workaround\n\n2025-02-28: TWW Season 2 update\n\n2024-10-22: 11.0.5",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/druid_feral.simc\n## Up to date with SimC: April 12 2025 - d935a4a\n\nactions.precombat+=/mark_of_the_wild\nactions.precombat+=/prowl,if=!buff.prowl.up\nactions.precombat+=/cat_form,if=!buff.cat_form.up\n# check if trinket slot contains a stat on use (variable is just kept in case of things like mirror not working with has_use_buff)\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff&!trinket.1.is.imperfect_ascendancy_serum&!trinket.1.is.ovinaxs_mercurial_egg&!trinket.1.is.concoction_kiss_of_death\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff&!trinket.2.is.imperfect_ascendancy_serum&!trinket.2.is.ovinaxs_mercurial_egg&!trinket.2.is.concoction_kiss_of_death\n# if we are playing 2 minute convoke, we prefer 2 minute on-use over 3 minute on-use even without berserk: heart of the lion\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=talent.convoke_the_spirits&!talent.ashamanes_guidance&variable.trinket_1_buffs&(trinket.1.cooldown.duration%%120=0||120%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=talent.convoke_the_spirits&!talent.ashamanes_guidance&variable.trinket_2_buffs&(trinket.1.cooldown.duration%%120=0||120%%trinket.1.cooldown.duration=0)\n# if we aren't playing 2 minute convoke, then we can sync 3 minute cds with berserk sans hotl\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=!(talent.convoke_the_spirits&!talent.ashamanes_guidance)&variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%%trinket.1.cooldown.duration=0||trinket.1.cooldown.duration%%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=!(talent.convoke_the_spirits&!talent.ashamanes_guidance)&variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%%trinket.2.cooldown.duration=0||trinket.2.cooldown.duration%%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%%trinket.2.cooldown.duration=0)\n# prioritize trinkets that line-up with cds->main-stat on uses->longer cd trinkets->shorter duration trinkets\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.agility)*(1.2+trinket.2.has_buff.mastery)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.agility)*(1.2+trinket.1.has_buff.mastery)*(variable.trinket_1_sync))\n\nactions+=/prowl,if=buff.bs_inc.down&!buff.prowl.up\nactions+=/cat_form,if=!buff.cat_form.up&!talent.fluid_form\nactions+=/skull_bash\nactions+=/soothe\n## Line up <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&hero_tree.wildstalker)&(boss&fight_remains<=15||(cooldown.bs_inc.remains>20&fight_remains>5)||(cooldown.bs_inc.ready&fight_remains>12||boss))\nactions+=/rake,cycle_targets=1,if=buff.shadowmeld.up||buff.prowl.up\nactions+=/natures_vigil,if=variable.regrowth&health.percent<70&(buff.bs_inc.up||buff.tigers_fury.up)\nactions+=/renewal,if=variable.regrowth&health.percent<70\nactions+=/adaptive_swarm,cycle_targets=1,if=dot.adaptive_swarm_damage.stack<3&(!dot.adaptive_swarm_damage.ticking||dot.adaptive_swarm_damage.remains<2)&!action.adaptive_swarm.in_flight&(spell_targets=1||!talent.unbridled_swarm)&(dot.rip.ticking||hero_tree.druid_of_the_claw)\nactions+=/adaptive_swarm,cycle_targets=1,if=buff.cat_form.up&dot.adaptive_swarm_damage.stack<3&talent.unbridled_swarm.enabled&spell_targets.swipe_cat>1&dot.rip.ticking\nactions+=/ferocious_bite,if=buff.apex_predators_craving.up&!(variable.need_bt&active_bt_triggers=2)\nactions+=/call_action_list,name=cooldown,strict=1,if=dot.rip.ticking\n# keep using this archaic 'nonsense' for veinripper because its better idk ill fix soon tm\nactions+=/rip,if=talent.veinripper&spell_targets=1&hero_tree.wildstalker&!(talent.raging_fury&talent.veinripper)&(buff.bloodtalons.up||!talent.bloodtalons)&(dot.rip.remains<5&buff.tigers_fury.remains>10&combo_points>=3||((buff.tigers_fury.remains<3&combo_points=5)||buff.tigers_fury.remains<=1)&buff.tigers_fury.up&combo_points>=3&remains<cooldown.tigers_fury.remains)\n# fix to work with veinripper idk\nactions+=/rip,if=!talent.veinripper&spell_targets=1&hero_tree.wildstalker&buff.tigers_fury.up&(buff.bloodtalons.up||!talent.bloodtalons)&(combo_points>=3&refreshable&cooldown.tigers_fury.remains>25||buff.tigers_fury.remains<5&variable.rip_duration>cooldown.tigers_fury.remains&cooldown.tigers_fury.remains>=dot.rip.remains)\nactions+=/call_action_list,name=builder,if=(buff.bs_inc.up&!buff.ravage.up&!buff.coiled_to_spring.up&hero_tree.druid_of_the_claw&talent.coiled_to_spring&spell_targets<=2)||buff.bloodtalons.stack=0&active_bt_triggers=2\nactions+=/wait,sec=cooldown.tigers_fury.remains,if=combo_points=5&cooldown.tigers_fury.remains<3&spell_targets=1\nactions+=/call_action_list,name=finisher,if=combo_points=5\n## [Syrif] - combo_points<5 added to stop from sending generators inappropriately\nactions+=/call_action_list,name=builder,if=spell_targets.swipe_cat=1&combo_points<5\nactions+=/call_action_list,name=aoe_builder,if=spell_targets.swipe_cat>=2&combo_points<5\nactions+=/regrowth,if=buff.predatory_swiftness.up&variable.regrowth&selection_time>gcd.max\n\n# maintain thrash highest prio\nactions.aoe_builder+=/thrash_cat,if=refreshable&!talent.thrashing_claws&!(variable.need_bt&buff.bt_thrash.up)\n# avoid capping brs charges. Also send brutal slashes/ws swipe in aoe, even if we need to proc bloodtalons, during berserk.\nactions.aoe_builder+=/brutal_slash,cycle_targets=1,if=(cooldown.brutal_slash.full_recharge_time<4||time_to_die<4||raid_event.adds.remains<4||(buff.bs_inc.up&spell_targets>=3-hero_tree.druid_of_the_claw))&!(variable.need_bt&buff.bt_swipe.up&(buff.bs_inc.down||spell_targets<3-hero_tree.druid_of_the_claw))\nactions.aoe_builder+=/swipe_cat,if=talent.wild_slashes&(time_to_die<4||raid_event.adds.remains<4||buff.bs_inc.up&spell_targets>=3-hero_tree.druid_of_the_claw)&!(variable.need_bt&buff.bt_swipe.up&(buff.bs_inc.down||spell_targets<3-hero_tree.druid_of_the_claw))\n# with wild slashes we swipe at 5+ targets over raking/moonfire\nactions.aoe_builder+=/swipe_cat,if=time_to_die<4||(talent.wild_slashes&spell_targets.swipe_cat>4&!(variable.need_bt&buff.bt_swipe.up))\nactions.aoe_builder+=/prowl,if=dot.rake.refreshable||dot.rake.pmultiplier<1.4&!(variable.need_bt&buff.bt_rake.up)&action.rake.ready&gcd.remains=0&!buff.sudden_ambush.up&!variable.cc_capped\nactions.aoe_builder+=/shadowmeld,if=dot.rake.refreshable||dot.rake.pmultiplier<1.4&!(variable.need_bt&buff.bt_rake.up)&action.rake.ready&!buff.sudden_ambush.up&!buff.prowl.up&!variable.cc_capped\n# dcr rake > moonfire\nactions.aoe_builder+=/rake,cycle_targets=1,if=refreshable&talent.doubleclawed_rake&!(variable.need_bt&buff.bt_rake.up)&!variable.cc_capped\n# at 3t with wild slashes, swipe is better than moonfiring/st rake\nactions.aoe_builder+=/swipe_cat,if=talent.wild_slashes&spell_targets.swipe_cat>2&!(variable.need_bt&buff.bt_swipe.up)\n# if wildstalker make sure you have at least one rake up\nactions.aoe_builder+=/rake,cycle_targets=1,if=!dot.rake.ticking&hero_tree.wildstalker\n# li moonfire is better than non-dcr rake in aoe if we already have 1 rake\nactions.aoe_builder+=/moonfire_cat,cycle_targets=1,if=refreshable&!(variable.need_bt&buff.bt_moonfire.up)&!variable.cc_capped\nactions.aoe_builder+=/rake,cycle_targets=1,if=refreshable&!(variable.need_bt&buff.bt_rake.up)&!variable.cc_capped\n# fillers\nactions.aoe_builder+=/brutal_slash,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.aoe_builder+=/swipe_cat,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.aoe_builder+=/shred,if=!buff.sudden_ambush.up&!variable.easy_swipe&!(variable.need_bt&buff.bt_shred.up)\nactions.aoe_builder+=/thrash_cat,if=!talent.thrashing_claws&!(variable.need_bt&buff.bt_thrash.up)\n# fallback bt actions\nactions.aoe_builder+=/rake,cycle_targets=1,if=talent.doubleclawed_rake&buff.sudden_ambush.up&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/moonfire_cat,cycle_targets=1,if=variable.need_bt&buff.bt_moonfire.down\nactions.aoe_builder+=/rake,cycle_targets=1,if=buff.sudden_ambush.up&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/shred,if=variable.need_bt&buff.bt_shred.down&!variable.easy_swipe\nactions.aoe_builder+=/rake,cycle_targets=1,if=dot.rake.pmultiplier<1.6&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/thrash_cat,if=variable.need_bt&buff.bt_shred.down\n\nactions.builder+=/prowl,if=gcd.remains=0&energy>=35&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)*!(variable.need_bt&buff.bt_rake.up)&buff.tigers_fury.up&!buff.shadowmeld.up\nactions.builder+=/shadowmeld,if=gcd.remains=0&energy>=35&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)*!(variable.need_bt&buff.bt_rake.up)&buff.tigers_fury.up&!buff.prowl.up\n# upgrade to stealth rakes, otherwise refresh in pandemic. Delay rake as long as possible if it would downgrade\nactions.builder+=/rake,if=((refreshable&persistent_multiplier>=dot.rake.pmultiplier||dot.rake.remains<3.5)||buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier)&!(variable.need_bt&buff.bt_rake.up)&(hero_tree.wildstalker||!buff.bs_inc.up)\n# bt check is due to the overcap line, comes up with convoke/apex bites\nactions.builder+=/shred,if=buff.sudden_ambush.up&buff.bs_inc.up&!(variable.need_bt&buff.bt_shred.up&active_bt_triggers=2)\nactions.builder+=/brutal_slash,if=cooldown.brutal_slash.full_recharge_time<4&!(variable.need_bt&buff.bt_swipe.up)\nactions.builder+=/moonfire_cat,if=refreshable\nactions.builder+=/thrash_cat,if=refreshable&!talent.thrashing_claws&!buff.bs_inc.up\nactions.builder+=/shred,if=buff.clearcasting.up&!(variable.need_bt&buff.bt_shred.up)\n# pool energy if we need to refresh dot in the next 1.5s [Hekili] TODO: Sim character to see how frequently this fires, determine if `wait` value should be adjusted.\nactions.builder+=/pool_resource,if=variable.dot_refresh_soon&energy.deficit>70&!variable.need_bt&!buff.bs_inc.up&cooldown.tigers_fury.remains>3\nactions.builder+=/brutal_slash,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.builder+=/shred,if=!(variable.need_bt&buff.bt_shred.up)\nactions.builder+=/rake,if=refreshable\nactions.builder+=/thrash_cat,if=refreshable&!talent.thrashing_claws\nactions.builder+=/swipe_cat,if=variable.need_bt&buff.bt_swipe.down\n# clip rake for bt if it wont downgrade its snapshot\nactions.builder+=/rake,if=variable.need_bt&buff.bt_rake.down&persistent_multiplier>=dot.rake.pmultiplier\nactions.builder+=/moonfire_cat,if=variable.need_bt&buff.bt_moonfire.down\nactions.builder+=/thrash_cat,if=variable.need_bt&buff.bt_thrash.down\n\nactions.cooldown+=/incarnation,if=fight_remains>17||boss\n# non-stat on use trinkets get used on cooldown, so long as it wont interfere with a stat on-use trinket\nactions.cooldown+=/use_item,slot=trinket1,if=trinket.1.has_use_damage&(trinket.2.cooldown.remains>20&(!trinket.1.is.junkmaestros_mega_magnet||cooldown.bestinslots.remains>20||!equipped.bestinslots)||!trinket.2.has_use_buff&(cooldown.bestinslots.remains>20||!equipped.bestinslots)||cooldown.tigers_fury.remains<25&cooldown.tigers_fury.remains>20)||boss&fight_remains<5\nactions.cooldown+=/use_item,slot=trinket2,if=trinket.2.has_use_damage&(trinket.1.cooldown.remains>20&(!trinket.2.is.junkmaestros_mega_magnet||cooldown.bestinslots.remains>20||!equipped.bestinslots)||!trinket.1.has_use_buff&(cooldown.bestinslots.remains>20||!equipped.bestinslots)||cooldown.tigers_fury.remains<25&cooldown.tigers_fury.remains>20)||boss&fight_remains<5\n# berserk with tigers fury\nactions.cooldown+=/berserk,if=buff.tigers_fury.up&(fight_remains>12||boss)\nactions.cooldown+=/berserking,if=buff.bs_inc.up\n# todo make last set of cds line up again now that we know potions.remains is the syntax\nactions.cooldown+=/potion,if=buff.bs_inc.up||boss&fight_remains<32||(!variable.lastzerk&variable.lastconvoke&cooldown.convoke_the_spirits.remains<10)\n# non trinket gear-on-uses have variable rules on whether or not they trigger the trinket shared CD. For the cases they do we will need specific APL entries. For now just use on cooldown.\nactions.cooldown+=/use_items\n# stat on-use trinkets, prefers trinket with higher priority.\nactions.cooldown+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&(buff.bs_inc.up||((buff.tigers_fury.up&cooldown.tigers_fury.remains>25)&(cooldown.convoke_the_spirits.remains<6||(variable.trinket_2_buffs&cooldown.convoke_the_spirits.remains-trinket.2.cooldown.remains>0)||!talent.convoke_the_spirits&cooldown.bs_inc.remains-trinket.2.cooldown.remains>0)))&(!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains&boss\nactions.cooldown+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&(buff.bs_inc.up||((buff.tigers_fury.up&cooldown.tigers_fury.remains>25)&(cooldown.convoke_the_spirits.remains<6||(variable.trinket_1_buffs&cooldown.convoke_the_spirits.remains-trinket.1.cooldown.remains>0)||!talent.convoke_the_spirits&cooldown.bs_inc.remains-trinket.1.cooldown.remains>0)))&(!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains&boss\n## actions.cooldown+=/do_treacherous_transmitter_task,if=buff.tigers_fury.up||fight_remains<22\nactions.cooldown+=/feral_frenzy,if=combo_points<=1+buff.bs_inc.up&(buff.tigers_fury.up||!talent.savage_fury||!hero_tree.wildstalker||boss&fight_remains<cooldown.tigers_fury.remains)\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+=/pool_resource,for_next=1\nactions.finisher+=/ferocious_bite,cycle_targets=1,if=buff.bs_inc.up\n\n# what rips new duration would be if applied in current state\nactions.variable+=/variable,name=rip_duration,value=((4+(4*combo_points))*(1-(0.2*talent.circle_of_life_and_death))*(1+(0.25*talent.veinripper)))+(variable.rip_max_pandemic_duration>?dot.rip.remains)\nactions.variable+=/variable,name=rip_max_pandemic_duration,value=((4+(4*combo_points))*(1-(0.2*talent.circle_of_life_and_death))*(1+(0.25*talent.veinripper)))*0.3\n# this returns true if we have a dot nearing pandemic range\nactions.variable+=/variable,name=dot_refresh_soon,value=(!talent.thrashing_claws&(dot.thrash_cat.remains-dot.thrash_cat.duration*0.3<=2))||(talent.lunar_inspiration&(dot.moonfire_cat.remains-dot.moonfire_cat.duration*0.3<=2))||((dot.rake.pmultiplier<1.6||buff.sudden_ambush.up)&(dot.rake.remains-dot.rake.duration*0.3<=2))\n# try to proc bt if we have 1 or 0 sacks of bloodtalons\nactions.variable+=/variable,name=need_bt,value=talent.bloodtalons&buff.bloodtalons.stack<=1\n# capped on clearcasting stacks\nactions.variable+=/variable,name=cc_capped,value=buff.clearcasting.stack=(1+talent.moment_of_clarity)\n# checks if theres exactly 1 convoke remaining in sim\nactions.variable+=/variable,name=lastconvoke,value=(cooldown.convoke_the_spirits.remains+cooldown.convoke_the_spirits.duration)>fight_remains&cooldown.convoke_the_spirits.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\n# track moonfire snapshot\nactions.variable+=/variable,name=moonfire_snapshotted,value=buff.tigers_fury.up,op=set,if=prev.lunar_inspiration",
|
|
["version"] = 20250425.1,
|
|
["warnings"] = "The 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 '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 '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 '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 '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 '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 2: Converted 'trinket.1.is.junkmaestros_mega_magnet' to 'trinket.t1.is.junkmaestros_mega_magnet' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\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 3: Converted 'trinket.2.is.junkmaestros_mega_magnet' to 'trinket.t2.is.junkmaestros_mega_magnet' (1x).\nLine 3: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (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.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 '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).\n\nImported 7 action lists.\n",
|
|
["lists"] = {
|
|
["aoe_builder"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "thrash_cat",
|
|
["description"] = "maintain thrash highest prio",
|
|
["criteria"] = "refreshable & ! talent.thrashing_claws.enabled & ! ( variable.need_bt & buff.bt_thrash.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "brutal_slash",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "avoid capping brs charges. Also send brutal slashes/ws swipe in aoe, even if we need to proc bloodtalons, during berserk.",
|
|
["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 ) )",
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "swipe_cat",
|
|
["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 ) )",
|
|
},
|
|
{
|
|
["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,
|
|
["description"] = "dcr rake > moonfire",
|
|
["criteria"] = "refreshable & talent.doubleclawed_rake.enabled & ! ( variable.need_bt & buff.bt_rake.up ) & ! variable.cc_capped",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "swipe_cat",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rake",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "if wildstalker make sure you have at least one rake up",
|
|
["criteria"] = "! dot.rake.ticking & hero_tree.wildstalker",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "moonfire_cat",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "li moonfire is better than non-dcr rake in aoe if we already have 1 rake",
|
|
["criteria"] = "refreshable & ! ( variable.need_bt & buff.bt_moonfire.up ) & ! variable.cc_capped",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! ( variable.need_bt & buff.bt_rake.up ) & ! variable.cc_capped",
|
|
["action"] = "rake",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "brutal_slash",
|
|
["description"] = "fillers",
|
|
["criteria"] = "! ( variable.need_bt & buff.bt_swipe.up )",
|
|
},
|
|
{
|
|
["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,
|
|
["description"] = "fallback bt actions",
|
|
["criteria"] = "talent.doubleclawed_rake.enabled & buff.sudden_ambush.up & variable.need_bt & buff.bt_rake.down",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_moonfire.down",
|
|
["action"] = "moonfire_cat",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_ambush.up & variable.need_bt & buff.bt_rake.down",
|
|
["action"] = "rake",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_shred.down & ! variable.easy_swipe",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rake.pmultiplier < 1.6 & variable.need_bt & buff.bt_rake.down",
|
|
["action"] = "rake",
|
|
["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 & hero_tree.wildstalker ) & ( 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,
|
|
["criteria"] = "buff.shadowmeld.up || buff.prowl.up",
|
|
["action"] = "rake",
|
|
["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,
|
|
["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 )",
|
|
["action"] = "adaptive_swarm",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.cat_form.up & dot.adaptive_swarm_damage.stack < 3 & talent.unbridled_swarm.enabled & spell_targets.swipe_cat > 1 & dot.rip.ticking",
|
|
["action"] = "adaptive_swarm",
|
|
["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,
|
|
["action"] = "rip",
|
|
["description"] = "keep using this archaic 'nonsense' for veinripper because its better idk ill fix soon tm",
|
|
["criteria"] = "talent.veinripper.enabled & 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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rip",
|
|
["description"] = "fix to work with veinripper idk",
|
|
["criteria"] = "! talent.veinripper.enabled & spell_targets = 1 & hero_tree.wildstalker & buff.tigers_fury.up & ( buff.bloodtalons.up || ! talent.bloodtalons.enabled ) & ( combo_points >= 3 & refreshable & cooldown.tigers_fury.remains > 25 || buff.tigers_fury.remains < 5 & variable.rip_duration > cooldown.tigers_fury.remains & cooldown.tigers_fury.remains >= dot.rip.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "( buff.bs_inc.up & ! buff.ravage.up & ! buff.coiled_to_spring.up & hero_tree.druid_of_the_claw & talent.coiled_to_spring.enabled & spell_targets <= 2 ) || buff.bloodtalons.stack = 0 & active_bt_triggers = 2",
|
|
["list_name"] = "builder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["sec"] = "cooldown.tigers_fury.remains",
|
|
["action"] = "wait",
|
|
["criteria"] = "combo_points = 5 & cooldown.tigers_fury.remains < 3 & spell_targets = 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "combo_points = 5",
|
|
["list_name"] = "finisher",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "spell_targets.swipe_cat = 1 & combo_points < 5",
|
|
["list_name"] = "builder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "spell_targets.swipe_cat >= 2 & combo_points < 5",
|
|
["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",
|
|
["var_name"] = "trinket_1_buffs",
|
|
["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)",
|
|
},
|
|
{
|
|
["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",
|
|
["var_name"] = "trinket_1_sync",
|
|
["value"] = "1",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["value"] = "1",
|
|
["value_else"] = "0.5",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "if we aren't playing 2 minute convoke, then we can sync 3 minute cds with berserk sans hotl",
|
|
["var_name"] = "trinket_1_sync",
|
|
["value"] = "1",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["value"] = "1",
|
|
["value_else"] = "0.5",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "prioritize trinkets that line-up with cds->main-stat on uses->longer cd trinkets->shorter duration trinkets",
|
|
["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 / 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 ) )",
|
|
},
|
|
},
|
|
["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,
|
|
["action"] = "rake",
|
|
["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 ) & ( hero_tree.wildstalker || ! buff.bs_inc.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shred",
|
|
["description"] = "bt check is due to the overcap line, comes up with convoke/apex bites",
|
|
["criteria"] = "buff.sudden_ambush.up & buff.bs_inc.up & ! ( variable.need_bt & buff.bt_shred.up & active_bt_triggers = 2 )",
|
|
},
|
|
{
|
|
["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"] = "moonfire_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! talent.thrashing_claws.enabled & ! buff.bs_inc.up",
|
|
["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",
|
|
},
|
|
{
|
|
["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"] = "refreshable",
|
|
["action"] = "rake",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! talent.thrashing_claws.enabled",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_swipe.down",
|
|
["action"] = "swipe_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rake",
|
|
["description"] = "clip rake for bt if it wont downgrade its snapshot",
|
|
["criteria"] = "variable.need_bt & buff.bt_rake.down & persistent_multiplier >= dot.rake.pmultiplier",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_moonfire.down",
|
|
["action"] = "moonfire_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_thrash.down",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
},
|
|
["variable"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( ( 4 + ( 4 * combo_points ) ) * ( 1 - ( 0.2 * talent.circle_of_life_and_death.enabled ) ) * ( 1 + ( 0.25 * talent.veinripper.enabled ) ) ) + ( variable.rip_max_pandemic_duration >? dot.rip.remains )",
|
|
["var_name"] = "rip_duration",
|
|
["description"] = "what rips new duration would be if applied in current state",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( ( 4 + ( 4 * combo_points ) ) * ( 1 - ( 0.2 * talent.circle_of_life_and_death.enabled ) ) * ( 1 + ( 0.25 * talent.veinripper.enabled ) ) ) * 0.3",
|
|
["var_name"] = "rip_max_pandemic_duration",
|
|
},
|
|
{
|
|
["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 ) )",
|
|
["var_name"] = "dot_refresh_soon",
|
|
["description"] = "this returns true if we have a dot nearing pandemic range",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.bloodtalons.enabled & buff.bloodtalons.stack <= 1",
|
|
["var_name"] = "need_bt",
|
|
["description"] = "try to proc bt if we have 1 or 0 sacks of bloodtalons",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.clearcasting.stack = ( 1 + talent.moment_of_clarity.enabled )",
|
|
["var_name"] = "cc_capped",
|
|
["description"] = "capped on clearcasting stacks",
|
|
},
|
|
{
|
|
["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",
|
|
["var_name"] = "lastconvoke",
|
|
["description"] = "checks if theres exactly 1 convoke remaining in sim",
|
|
},
|
|
{
|
|
["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",
|
|
["var_name"] = "lastzerk",
|
|
["description"] = "checks if theres exactly 1 berserk cast remaining in sim : at least 5s spare for now, TODO: check #s",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( cooldown.potions.remains + cooldown.potions.duration + 15 ) > fight_remains & cooldown.potions.remains + 15 < fight_remains",
|
|
["var_name"] = "lastpotion",
|
|
["description"] = "approximates if theres exactly 1 potion cast remaining with duration to spare",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["value"] = "settings.regrowth",
|
|
["var_name"] = "regrowth",
|
|
["description"] = "optional variable that sends regrowth and renewal casts. Turned off by default",
|
|
},
|
|
{
|
|
["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",
|
|
["var_name"] = "moonfire_snapshotted",
|
|
["value"] = "buff.tigers_fury.up",
|
|
["description"] = "track moonfire snapshot",
|
|
["criteria"] = "prev.lunar_inspiration",
|
|
},
|
|
},
|
|
["cooldown"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > 17 || boss",
|
|
["action"] = "incarnation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["description"] = "non-stat on use trinkets get used on cooldown, so long as it wont interfere with a stat on-use trinket",
|
|
["criteria"] = "trinket.t1.has_use_damage & ( trinket.t2.cooldown.remains > 20 & ( ! trinket.t1.is.junkmaestros_mega_magnet || cooldown.bestinslots.remains > 20 || ! equipped.bestinslots ) || ! trinket.t2.has_use_buff & ( cooldown.bestinslots.remains > 20 || ! equipped.bestinslots ) || cooldown.tigers_fury.remains < 25 & cooldown.tigers_fury.remains > 20 ) || boss & fight_remains < 5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "trinket.t2.has_use_damage & ( trinket.t1.cooldown.remains > 20 & ( ! trinket.t2.is.junkmaestros_mega_magnet || cooldown.bestinslots.remains > 20 || ! equipped.bestinslots ) || ! trinket.t1.has_use_buff & ( cooldown.bestinslots.remains > 20 || ! equipped.bestinslots ) || cooldown.tigers_fury.remains < 25 & cooldown.tigers_fury.remains > 20 ) || boss & fight_remains < 5",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "berserk",
|
|
["description"] = "berserk with tigers fury",
|
|
["criteria"] = "buff.tigers_fury.up & ( fight_remains > 12 || boss )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bs_inc.up",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "potion",
|
|
["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 )",
|
|
},
|
|
{
|
|
["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",
|
|
["description"] = "stat on-use trinkets, prefers trinket with higher priority.",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points <= 1 + buff.bs_inc.up & ( buff.tigers_fury.up || ! talent.savage_fury.enabled || ! hero_tree.wildstalker || boss & fight_remains < cooldown.tigers_fury.remains )",
|
|
["action"] = "feral_frenzy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "convoke_the_spirits",
|
|
["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 ) )",
|
|
},
|
|
},
|
|
["finisher"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "primal_wrath",
|
|
["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 ) ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rip",
|
|
["cycle_targets"] = 1,
|
|
["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",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ferocious_bite",
|
|
["cycle_targets"] = 1,
|
|
["max_energy"] = 1,
|
|
["criteria"] = "! buff.bs_inc.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bs_inc.up",
|
|
["action"] = "ferocious_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
},
|
|
["author"] = "SimC",
|
|
},
|
|
["Balance"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/druid_balance.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250506,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-05-06: SimC Sync\n2025-04-25: SimC Sync\n2025-03-30: SimC Sync\n2025-03-14: SimC Sync (trinket conditions)\n2025-03-13: Trinket fixes\n2025-03-08: Replace variables with eclipse metatable expressions\n2025-03-05: Remove bear form stuff for now\n2025-03-02: TWW Season 2 update\n2025-02-06: Revert (or edit) workarounds for wrath opener\n2024-01-25: SimC update\n2024-12-22: Spymasters improvement\n2024-11-05: SimC update (Sunfire)\n2024-10-29: Fix AOE Eclipse\n2024-10-26: SimC update, adjustments for leveling\n2024-10-23: SimC update\n2024-10-22: 11.0.5\n2024-10-06, 10-11, 10-21: SimC update\n2024-09-28, 09-29: SimC update\n2024-09-01, 09-04, 09-08, 09-10, 09-15, 09-21: SimC update\n2024-08-11: Mark of the Wild\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "solar_beam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "[Edited] Trigger Lunar Eclipse if we failed to precast Wrath x2",
|
|
["criteria"] = "time < 2 & eclipse.lunar_in_1",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["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",
|
|
["description"] = "VARIABLES",
|
|
["var_name"] = "passive_asp",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.ca_inc.full_recharge_time <? 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"] = "( ! talent.whirling_stars.enabled || ! talent.convoke_the_spirits.enabled || cooldown.convoke_the_spirits.remains < gcd.max * 2 || fight_remains < cooldown.convoke_the_spirits.remains + 3 || cooldown.convoke_the_spirits.remains > cooldown.ca_inc.full_recharge_time + 15 * talent.control_of_the_dream.enabled ) & ( variable.on_use_trinket = 0 || ( variable.on_use_trinket = 1 || variable.on_use_trinket = 3 ) & ( trinket.t1.cooldown.remains > cooldown.ca_inc.full_recharge_time + ( 15 * talent.control_of_the_dream.enabled ) || ! talent.convoke_the_spirits.enabled & hero_tree.elunes_chosen & trinket.t1.cooldown.remains > cooldown.ca_inc.full_recharge_time - cooldown.ca_inc.duration || talent.convoke_the_spirits.enabled & ( cooldown.convoke_the_spirits.remains < 3 & ( ceil ( ( fight_remains - 10 ) / cooldown.convoke_the_spirits.duration ) > ceil ( ( fight_remains - trinket.t1.cooldown.remains - 10 ) / cooldown.convoke_the_spirits.duration ) ) || cooldown.convoke_the_spirits.remains > trinket.t1.cooldown.remains & cooldown.ca_inc.full_recharge_time - cooldown.ca_inc.duration < trinket.t1.cooldown.remains + 15 ) || trinket.t1.cooldown.remains + 6 > fight_remains || trinket.t1.cooldown.ready ) || variable.on_use_trinket = 2 & ( trinket.t2.cooldown.remains > cooldown.ca_inc.full_recharge_time + ( 15 * talent.control_of_the_dream.enabled ) || ! talent.convoke_the_spirits.enabled & hero_tree.elunes_chosen & trinket.t1.cooldown.remains > cooldown.ca_inc.full_recharge_time - cooldown.ca_inc.duration || talent.convoke_the_spirits.enabled & ( cooldown.convoke_the_spirits.remains < 3 & ( ceil ( ( fight_remains - 10 ) / cooldown.convoke_the_spirits.duration ) > ceil ( ( fight_remains - trinket.t2.cooldown.remains - 10 ) / cooldown.convoke_the_spirits.duration ) ) || cooldown.convoke_the_spirits.remains > trinket.t2.cooldown.remains & cooldown.ca_inc.full_recharge_time - cooldown.ca_inc.duration < trinket.t2.cooldown.remains + 15 ) || trinket.t2.cooldown.remains + 6 > fight_remains || trinket.t2.cooldown.ready ) ) & cooldown.ca_inc.remains < gcd.max & ! buff.ca_inc.up",
|
|
["var_name"] = "pre_cd_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.pre_cd_condition & ( fight_remains < ( 15 + 5 * talent.incarnation_chosen_of_elune.enabled ) * ( 1 - talent.whirling_stars.enabled * 0.2 ) || target.time_to_die > 10 & ( ! hero_tree.keeper_of_the_grove || buff.harmony_of_the_grove.up ) )",
|
|
["var_name"] = "cd_condition",
|
|
},
|
|
{
|
|
["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,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.lunar_calling.enabled || spell_targets.starfire > 3 - ( talent.umbral_intensity.rank || talent.soul_of_the_forest.enabled )",
|
|
["description"] = "[Syrif] - Variable replaced with eclipse metatable expression",
|
|
["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,
|
|
["name"] = "spymasters_web",
|
|
["description"] = "ITEMS",
|
|
["criteria"] = "variable.cd_condition & ( buff.spymasters_report.stack > 29 || boss & fight_remains < cooldown.ca_inc.duration ) || boss & fight_remains < 20",
|
|
["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"] = "( ( cooldown.force_of_nature.remains < 3 & ( trinket.t1.is.spymasters_web || trinket.t2.is.spymasters_web ) & buff.spymasters_report.stack >= 29 ) || ( cooldown.convoke_the_spirits.remains < 2 & cooldown.ca_inc.ready & cooldown.force_of_nature.remains < 3 & buff.spymasters_report.stack <= 29 || fight_remains < 20 || fight_remains < variable.ca_effective_cd & ( buff.harmony_of_the_grove.up || cooldown.convoke_the_spirits.ready ) ) )",
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.no_cd_talent || boss & 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 & 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 & ! trinket.t1.is.soulletting_ruby & ( variable.on_use_trinket != 1 & variable.on_use_trinket != 3 & trinket.t2.cooldown.remains > 20 || boss & fight_remains < ( 20 + 20 * ( trinket.t2.has_use & 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 & ! trinket.t2.is.soulletting_ruby & ( variable.on_use_trinket < 2 & trinket.t1.cooldown.remains > 20 || variable.on_use_trinket = 3 & trinket.t1.cooldown.remains > 20 & ( ! hero_tree.keeper_of_the_grove || buff.harmony_of_the_grove.up || ceil ( ( fight_remains - 15 ) / trinket.t2.cooldown.duration ) > ceil ( ( fight_remains - cooldown.force_of_nature.remains - 15 ) / trinket.t2.cooldown.duration ) ) || boss & fight_remains < ( 20 + 20 * ( trinket.t1.has_use & trinket.t1.cooldown.remains < 25 ) ) || variable.generic_trinket_condition )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hero_tree.keeper_of_the_grove & buff.harmony_of_the_grove.up || hero_tree.elunes_chosen & ( cooldown.ca_inc.full_recharge_time > 20 || buff.ca_inc.up )",
|
|
["name"] = "bestinslots",
|
|
["action"] = "bestinslots",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.on_use_trinket = 1 & ! trinket.t1.cooldown.ready & ( buff.harmony_of_the_grove.up || hero_tree.elunes_chosen ) || ! trinket.t1.has_use_buff & ( buff.harmony_of_the_grove.up || hero_tree.elunes_chosen )",
|
|
["name"] = "neural_synapse_enhancer",
|
|
["action"] = "neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.on_use_trinket = 2 & ! trinket.t2.cooldown.ready & ( buff.harmony_of_the_grove.up || hero_tree.elunes_chosen ) || ! trinket.t2.has_use_buff & ( buff.harmony_of_the_grove.up || hero_tree.elunes_chosen )",
|
|
["name"] = "neural_synapse_enhancer",
|
|
["action"] = "neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains <= 30",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.no_cd_talent || boss & fight_remains < 15",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["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",
|
|
["var_name"] = "on_use_trinket",
|
|
["criteria"] = "trinket.t1.has_use_buff & ! trinket.t1.is.ovinaxs_mercurial_egg & ! trinket.t1.is.spymasters_web",
|
|
["value_else"] = "0",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "on_use_trinket",
|
|
["criteria"] = "trinket.t2.has_use_buff & ! trinket.t2.is.ovinaxs_mercurial_egg & ! trinket.t2.is.spymasters_web",
|
|
["value_else"] = "0",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["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,
|
|
["description"] = "[edited] This handles the wrath opener based on the state of eclipse",
|
|
["criteria"] = "eclipse.lunar_in",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.stellar_flare.enabled & hero_tree.elunes_chosen",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["action"] = "stellar_flare",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "AOE",
|
|
["criteria"] = "variable.enter_lunar & eclipse.in_eclipse & eclipse.remains < cast_time & ! variable.cd_condition",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.enter_lunar & eclipse.in_eclipse & 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 & ( eclipse.in_none || eclipse.remains < cast_time ) & ! variable.pre_cd_condition",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.enter_lunar & ( eclipse.in_none || 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"] = "variable.pre_cd_condition || 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 || fight_remains < cooldown.convoke_the_spirits.remains + cooldown.convoke_the_spirits.duration + 5 ) & ( variable.on_use_trinket = 0 || ( variable.on_use_trinket = 1 || variable.on_use_trinket = 3 ) & ( trinket.t1.cooldown.remains > 5 + 15 * talent.control_of_the_dream.enabled || cooldown.ca_inc.remains > 20 || trinket.t1.cooldown.ready ) || variable.on_use_trinket = 2 & ( trinket.t2.cooldown.remains > 5 + 15 * talent.control_of_the_dream.enabled || cooldown.ca_inc.remains > 20 || trinket.t2.cooldown.ready ) ) & ( fight_remains > action_cooldown + 5 || 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 & fight_remains > cooldown.convoke_the_spirits.remains + 6",
|
|
["action"] = "force_of_nature",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "eclipse.in_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 & ! buff.dreamstate.up",
|
|
["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,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! prev_gcd.1.wild_mushroom & ! dot.fungal_growth.ticking",
|
|
["action"] = "wild_mushroom",
|
|
},
|
|
{
|
|
["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 > ( 3 - ( talent.umbral_intensity.enabled || talent.soul_of_the_forest.enabled ) )",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["action"] = "wrath",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "ST",
|
|
["criteria"] = "talent.lunar_calling.enabled || ! talent.lunar_calling.enabled & eclipse.remains <= 7",
|
|
["action"] = "warrior_of_elune",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.enter_lunar & eclipse.in_eclipse & eclipse.remains < cast_time & ! variable.cd_condition",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.enter_lunar & eclipse.in_eclipse & 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 & ( eclipse.in_none || eclipse.remains < cast_time )",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.enter_lunar & ( eclipse.in_none || 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"] = "variable.pre_cd_condition || 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 || fight_remains < cooldown.convoke_the_spirits.remains + cooldown.convoke_the_spirits.duration + 5 ) & ( variable.on_use_trinket = 0 || ( variable.on_use_trinket = 1 || variable.on_use_trinket = 3 ) & ( trinket.t1.cooldown.remains > 5 + 15 * talent.control_of_the_dream.enabled || cooldown.ca_inc.remains > 20 || trinket.t1.cooldown.ready ) || variable.on_use_trinket = 2 & ( trinket.t2.cooldown.remains > 5 + 15 * talent.control_of_the_dream.enabled || cooldown.ca_inc.remains > 20 || trinket.t2.cooldown.ready ) ) & ( fight_remains > action_cooldown + 5 || 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 & 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,
|
|
["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,
|
|
["name"] = "spymasters_web",
|
|
["description"] = "PRE_CD",
|
|
["criteria"] = "variable.cd_condition & ( buff.spymasters_report.stack > 29 || boss & fight_remains < cooldown.ca_inc.duration )",
|
|
["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"] = 20250506,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 3: 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 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 6: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 6: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 6: Converted operations in '(!talent.whirling_stars.enabled||!talent.convoke_the_spirits.enabled||cooldown.convoke_the_spirits.remains<gcd.max*2||fight_remains<cooldown.convoke_the_spirits.remains+3||cooldown.convoke_the_spirits.remains>cooldown.ca_inc.full_recharge_time+15*talent.control_of_the_dream.enabled)&(variable.on_use_trinket=0||(variable.on_use_trinket=1||variable.on_use_trinket=3)&(trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream.enabled)||!talent.convoke_the_spirits.enabled&hero_tree.elunes_chosen&trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits.enabled&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)%cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.t1.cooldown.remains-10)%cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.t1.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.t1.cooldown.remains+15)||trinket.t1.cooldown.remains+6>fight_remains||trinket.t1.cooldown.ready)||variable.on_use_trinket=2&(trinket.t2.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream.enabled)||!talent.convoke_the_spirits.enabled&hero_tree.elunes_chosen&trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits.enabled&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)%cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.t2.cooldown.remains-10)%cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.t2.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.t2.cooldown.remains+15)||trinket.t2.cooldown.remains+6>fight_remains||trinket.t2.cooldown.ready))&cooldown.ca_inc.remains<gcd.max&!buff.ca_inc.up' to '(!talent.whirling_stars.enabled||!talent.convoke_the_spirits.enabled||cooldown.convoke_the_spirits.remains<gcd.max*2||fight_remains<cooldown.convoke_the_spirits.remains+3||cooldown.convoke_the_spirits.remains>cooldown.ca_inc.full_recharge_time+15*talent.control_of_the_dream.enabled)&(variable.on_use_trinket=0||(variable.on_use_trinket=1||variable.on_use_trinket=3)&(trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream.enabled)||!talent.convoke_the_spirits.enabled&hero_tree.elunes_chosen&trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits.enabled&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)/cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.t1.cooldown.remains-10)/cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.t1.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.t1.cooldown.remains+15)||trinket.t1.cooldown.remains+6>fight_remains||trinket.t1.cooldown.ready)||variable.on_use_trinket=2&(trinket.t2.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream.enabled)||!talent.convoke_the_spirits.enabled&hero_tree.elunes_chosen&trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits.enabled&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)/cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.t2.cooldown.remains-10)/cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.t2.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.t2.cooldown.remains+15)||trinket.t2.cooldown.remains+6>fight_remains||trinket.t2.cooldown.ready))&cooldown.ca_inc.remains<gcd.max&!buff.ca_inc.up'.\nLine 13: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 13: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 14: Converted operations in 'variable.no_cd_talent||boss&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&variable.ca_effective_cd>20||variable.on_use_trinket=0' to 'variable.no_cd_talent||boss&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&variable.ca_effective_cd>20||variable.on_use_trinket=0'.\nLine 15: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 15: Converted 'trinket.1.is.imperfect_ascendancy_serum' to 'trinket.t1.is.imperfect_ascendancy_serum' (1x).\nLine 15: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 15: Converted 'trinket.1.is.soulletting_ruby' to 'trinket.t1.is.soulletting_ruby' (1x).\nLine 15: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 15: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 15: Converted 'trinket.2.has_use' to 'trinket.t2.has_use' (1x).\nLine 15: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 15: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 16: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 16: Converted 'trinket.2.is.imperfect_ascendancy_serum' to 'trinket.t2.is.imperfect_ascendancy_serum' (1x).\nLine 16: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 16: Converted 'trinket.2.is.soulletting_ruby' to 'trinket.t2.is.soulletting_ruby' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 16: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 16: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\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.1.has_use' to 'trinket.t1.has_use' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 16: Converted operations in '!trinket.t2.is.spymasters_web&!trinket.t2.is.imperfect_ascendancy_serum&!trinket.t2.is.treacherous_transmitter&!trinket.t2.is.soulletting_ruby&(variable.on_use_trinket<2&trinket.t1.cooldown.remains>20||variable.on_use_trinket=3&trinket.t1.cooldown.remains>20&(!hero_tree.keeper_of_the_grove||buff.harmony_of_the_grove.up||ceil((fight_remains-15)%trinket.t2.cooldown.duration)>ceil((fight_remains-cooldown.force_of_nature.remains-15)%trinket.t2.cooldown.duration))||boss&fight_remains<(20+20*(trinket.t1.has_use&trinket.t1.cooldown.remains<25))||variable.generic_trinket_condition)' to '!trinket.t2.is.spymasters_web&!trinket.t2.is.imperfect_ascendancy_serum&!trinket.t2.is.treacherous_transmitter&!trinket.t2.is.soulletting_ruby&(variable.on_use_trinket<2&trinket.t1.cooldown.remains>20||variable.on_use_trinket=3&trinket.t1.cooldown.remains>20&(!hero_tree.keeper_of_the_grove||buff.harmony_of_the_grove.up||ceil((fight_remains-15)/trinket.t2.cooldown.duration)>ceil((fight_remains-cooldown.force_of_nature.remains-15)/trinket.t2.cooldown.duration))||boss&fight_remains<(20+20*(trinket.t1.has_use&trinket.t1.cooldown.remains<25))||variable.generic_trinket_condition)'.\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'.\nLine 18: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 19: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 19: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 19: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.is.ovinaxs_mercurial_egg' to 'trinket.t1.is.ovinaxs_mercurial_egg' (1x).\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.is.ovinaxs_mercurial_egg' to 'trinket.t2.is.ovinaxs_mercurial_egg' (1x).\nLine 6: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\n\nThe import for 'aoe' required some automated changes.\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 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.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 10: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 10: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 10: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\n\nThe import for 'st' required some automated changes.\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.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 12: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 12: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 12: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 12: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 12: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\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"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/druid_balance.simc\n## Up to date with SimC: April 27 - 603b5f7\n\nactions.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\n## [Syrif] - Edited the below 2 variables to better match SimC's intention\nactions.precombat+=/variable,name=on_use_trinket,op=add,if=trinket.1.has_use_buff&!trinket.1.is.ovinaxs_mercurial_egg&!trinket.1.is.spymasters_web,value=1,value_else=0\nactions.precombat+=/variable,name=on_use_trinket,op=add,if=trinket.2.has_use_buff&!trinket.2.is.ovinaxs_mercurial_egg&!trinket.2.is.spymasters_web,value=2,value_else=0\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\n# [edited] This handles the wrath opener based on the state of eclipse\nactions.precombat+=/wrath,if=eclipse.lunar_in\nactions.precombat+=/starfire,if=!talent.stellar_flare&hero_tree.elunes_chosen\nactions.precombat+=/stellar_flare\n\nactions+=/solar_beam\n# [Edited] Trigger Lunar Eclipse if we failed to precast Wrath x2\nactions+=/wrath,if=time<2&eclipse.lunar_in_1\n# VARIABLES\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.full_recharge_time<?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=pre_cd_condition,value=(!talent.whirling_stars||!talent.convoke_the_spirits||cooldown.convoke_the_spirits.remains<gcd.max*2||fight_remains<cooldown.convoke_the_spirits.remains+3||cooldown.convoke_the_spirits.remains>cooldown.ca_inc.full_recharge_time+15*talent.control_of_the_dream)&(variable.on_use_trinket=0||(variable.on_use_trinket=1||variable.on_use_trinket=3)&(trinket.1.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream)||!talent.convoke_the_spirits&hero_tree.elunes_chosen&trinket.1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)%cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.1.cooldown.remains-10)%cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.1.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.1.cooldown.remains+15)||trinket.1.cooldown.remains+6>fight_remains||trinket.1.cooldown.ready)||variable.on_use_trinket=2&(trinket.2.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream)||!talent.convoke_the_spirits&hero_tree.elunes_chosen&trinket.1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)%cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.2.cooldown.remains-10)%cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.2.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.2.cooldown.remains+15)||trinket.2.cooldown.remains+6>fight_remains||trinket.2.cooldown.ready))&cooldown.ca_inc.remains<gcd.max&!buff.ca_inc.up\nactions+=/variable,name=cd_condition,value=variable.pre_cd_condition&(fight_remains<(15+5*talent.incarnation_chosen_of_elune)*(1-talent.whirling_stars*0.2)||target.time_to_die>10&(!hero_tree.keeper_of_the_grove||buff.harmony_of_the_grove.up))\nactions+=/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)\n# [Syrif] - Variable replaced with eclipse metatable expression\n## actions+=/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>3-(talent.umbral_intensity.rank||talent.soul_of_the_forest)\nactions+=/variable,name=boat_stacks,value=buff.balance_of_all_things_arcane.stack+buff.balance_of_all_things_nature.stack\n# ITEMS\nactions+=/use_item,name=spymasters_web,if=variable.cd_condition&(buff.spymasters_report.stack>29||boss&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=((cooldown.force_of_nature.remains<3&(trinket.1.is.spymasters_web||trinket.2.is.spymasters_web)&buff.spymasters_report.stack>=29)||(cooldown.convoke_the_spirits.remains<2&cooldown.ca_inc.ready&cooldown.force_of_nature.remains<3&buff.spymasters_report.stack<=29||fight_remains<20||fight_remains<variable.ca_effective_cd&(buff.harmony_of_the_grove.up||cooldown.convoke_the_spirits.ready)))\nactions+=/variable,name=generic_trinket_condition,value=variable.no_cd_talent||boss&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&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&!trinket.1.is.soulletting_ruby&(variable.on_use_trinket!=1&variable.on_use_trinket!=3&trinket.2.cooldown.remains>20||boss&fight_remains<(20+20*(trinket.2.has_use&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&!trinket.2.is.soulletting_ruby&(variable.on_use_trinket<2&trinket.1.cooldown.remains>20||variable.on_use_trinket=3&trinket.1.cooldown.remains>20&(!hero_tree.keeper_of_the_grove||buff.harmony_of_the_grove.up||ceil((fight_remains-15)%trinket.2.cooldown.duration)>ceil((fight_remains-cooldown.force_of_nature.remains-15)%trinket.2.cooldown.duration))||boss&fight_remains<(20+20*(trinket.1.has_use&trinket.1.cooldown.remains<25))||variable.generic_trinket_condition)\nactions+=/use_item,name=bestinslots,if=hero_tree.keeper_of_the_grove&buff.harmony_of_the_grove.up||hero_tree.elunes_chosen&(cooldown.ca_inc.full_recharge_time>20||buff.ca_inc.up)\nactions+=/use_item,name=neural_synapse_enhancer,if=variable.on_use_trinket=1&!trinket.1.cooldown.ready&(buff.harmony_of_the_grove.up||hero_tree.elunes_chosen)||!trinket.1.has_use_buff&(buff.harmony_of_the_grove.up||hero_tree.elunes_chosen)\nactions+=/use_item,name=neural_synapse_enhancer,if=variable.on_use_trinket=2&!trinket.2.cooldown.ready&(buff.harmony_of_the_grove.up||hero_tree.elunes_chosen)||!trinket.2.has_use_buff&(buff.harmony_of_the_grove.up||hero_tree.elunes_chosen)\nactions+=/potion,if=boss&fight_remains<=30\n## PI & RUN APL\n## actions+=/invoke_external_buff,name=power_infusion,if=variable.cd_condition\nactions+=/berserking,if=variable.no_cd_talent||boss&fight_remains<15\nactions+=/run_action_list,name=aoe,strict=1,if=spell_targets>1\nactions+=/run_action_list,name=st\n\n# AOE\nactions.aoe+=/wrath,if=variable.enter_lunar&eclipse.in_eclipse&eclipse.remains<cast_time&!variable.cd_condition\nactions.aoe+=/starfire,if=!variable.enter_lunar&eclipse.in_eclipse&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&(eclipse.in_none||eclipse.remains<cast_time)\n## actions.aoe+=/starfire,if=cooldown.ca_inc.remains>cast_time+gcd.max&!variable.enter_lunar&(eclipse.in_none||eclipse.remains<cast_time)\nactions.aoe+=/wrath,if=variable.enter_lunar&(eclipse.in_none||eclipse.remains<cast_time)&!variable.pre_cd_condition\nactions.aoe+=/starfire,if=!variable.enter_lunar&(eclipse.in_none||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=variable.pre_cd_condition||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||fight_remains<cooldown.convoke_the_spirits.remains+cooldown.convoke_the_spirits.duration+5)&(variable.on_use_trinket=0||(variable.on_use_trinket=1||variable.on_use_trinket=3)&(trinket.1.cooldown.remains>5+15*talent.control_of_the_dream||cooldown.ca_inc.remains>20||trinket.1.cooldown.ready)||variable.on_use_trinket=2&(trinket.2.cooldown.remains>5+15*talent.control_of_the_dream||cooldown.ca_inc.remains>20||trinket.2.cooldown.ready))&(fight_remains>cooldown+5||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&fight_remains>cooldown.convoke_the_spirits.remains+6\nactions.aoe+=/fury_of_elune,if=eclipse.in_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&!buff.dreamstate.up\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,if=!prev_gcd.1.wild_mushroom&!dot.fungal_growth.ticking\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>(3-(talent.umbral_intensity||talent.soul_of_the_forest))\nactions.aoe+=/wrath\n\n# PRE_CD\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||buff.harmony_of_the_grove.up&(buff.spymasters_report.stack>29||!trinket.1.is.spymasters_web||!trinket.2.is.spymasters_web)\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\n\n# ST\nactions.st+=/warrior_of_elune,if=talent.lunar_calling||!talent.lunar_calling&eclipse.remains<=7\nactions.st+=/wrath,if=variable.enter_lunar&eclipse.in_eclipse&eclipse.remains<cast_time&!variable.cd_condition\nactions.st+=/starfire,if=!variable.enter_lunar&eclipse.in_eclipse&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&(eclipse.in_none||eclipse.remains<cast_time)\nactions.st+=/starfire,if=!variable.enter_lunar&(eclipse.in_none||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=variable.pre_cd_condition||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||fight_remains<cooldown.convoke_the_spirits.remains+cooldown.convoke_the_spirits.duration+5)&(variable.on_use_trinket=0||(variable.on_use_trinket=1||variable.on_use_trinket=3)&(trinket.1.cooldown.remains>5+15*talent.control_of_the_dream||cooldown.ca_inc.remains>20||trinket.1.cooldown.ready)||variable.on_use_trinket=2&(trinket.2.cooldown.remains>5+15*talent.control_of_the_dream||cooldown.ca_inc.remains>20||trinket.2.cooldown.ready))&(fight_remains>cooldown+5||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&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+=/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",
|
|
},
|
|
["Guardian"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250314,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-03-14: SimC Sync\n\n2024-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",
|
|
},
|
|
},
|
|
["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.ursocs_endurance.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",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "skull_bash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soothe",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.incarnation_guardian_of_ursoc.up || buff.berserk_bear.up",
|
|
["name"] = "bestinslots",
|
|
["action"] = "bestinslots",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inner_resilience.up",
|
|
["name"] = "tome_of_lights_devotion",
|
|
["action"] = "tome_of_lights_devotion",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
},
|
|
["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_bear",
|
|
["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.up & buff.tooth_and_claw.remains < 1 + gcd.max ) & variable.if_build = 1",
|
|
["action"] = "raze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.if_build = 0 & ( buff.tooth_and_claw.stack > 1 || buff.tooth_and_claw.up & buff.tooth_and_claw.remains < 1 + gcd.max || buff.vicious_cycle_maul.stack = 3 )",
|
|
["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 & ! 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",
|
|
["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.up & buff.tooth_and_claw.remains < 1 + gcd.max ) & active_enemies <= 5 & ! talent.raze.enabled ) || ( ( buff.tooth_and_claw.stack > 1 || buff.tooth_and_claw.up & buff.tooth_and_claw.remains < 1 + gcd.max ) & active_enemies = 1 & talent.raze.enabled ) || ( ( buff.tooth_and_claw.stack > 1 || buff.tooth_and_claw.up & 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",
|
|
["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",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.cat_form.up & ! dot.rip.ticking & active_enemies < 3",
|
|
["action"] = "rip",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rip.ticking & combo_points > 4 & active_enemies < 3",
|
|
["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",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250314,
|
|
["warnings"] = "Imported 4 action lists.\n",
|
|
["spec"] = 104,
|
|
["basedOn"] = "Guardian",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/druid_guardian.simc\n## Up to date with SimC: March 8 2025 - ccb7c79\n\nactions.precombat+=/mark_of_the_wild\nactions.precombat+=/variable,name=if_build,value=1,value_else=0,if=talent.thorns_of_iron.enabled&talent.ursocs_endurance.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,name=bestinslots,if=buff.incarnation_guardian_of_ursoc.up||buff.berserk_bear.up\nactions+=/use_item,name=tome_of_lights_devotion,if=buff.inner_resilience.up\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.up&buff.tooth_and_claw.remains<1+gcd)&variable.if_build=1\nactions.bear+=/raze,if=variable.if_build=0&(buff.tooth_and_claw.stack>1||buff.tooth_and_claw.up&buff.tooth_and_claw.remains<1+gcd||buff.vicious_cycle_maul.stack=3)\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&!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\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.up&buff.tooth_and_claw.remains<1+gcd)&active_enemies<=5&!talent.raze.enabled)||((buff.tooth_and_claw.stack>1||buff.tooth_and_claw.up&buff.tooth_and_claw.remains<1+gcd)&active_enemies=1&talent.raze.enabled)||((buff.tooth_and_claw.stack>1||buff.tooth_and_claw.up&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\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\nactions.bear+=/rip,if=buff.cat_form.up&!dot.rip.ticking&active_enemies<3\nactions.bear+=/ferocious_bite,if=dot.rip.ticking&combo_points>4&active_enemies<3\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",
|
|
},
|
|
["Restoration Druid"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20250425,
|
|
["spec"] = 105,
|
|
["desc"] = "2025-04-25: Fix target_if; tweak healing",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/druid_restoration.simc\n## Up to date with SimC: March 8 2025 - ccb7c79\n\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\nactions.precombat+=/mark_of_the_wild\nactions.precombat+=/symbiotic_relationship,if=down&active_allies>1\nactions.precombat+=/prowl,if=talent.rake.enabled\nactions.precombat+=/cat_form,if=talent.rake.enabled1\n\nactions+=/skull_bash\nactions+=/berserking\nactions+=/natures_vigil,if=!buff.prowl.up&!buff.shadowmeld.up\nactions+=/call_action_list,name=healing,strict=1,if=settings.healing_mode&buff.prowl.down\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)||boss&fight_remains<46\nactions.cat+=/cat_form,if=talent.convoke_the_spirits.enabled&(active_enemies<=6)&(!buff.cat_form.up&cooldown.convoke_the_spirits.remains<=gcd.max&(buff.heart_of_the_wild.up||cooldown.heart_of_the_wild.remains>60-30*talent.cenarius_guidance.enabled||!talent.heart_of_the_wild.enabled))\nactions.cat+=/convoke_the_spirits,if=(buff.cat_form.up)&(buff.heart_of_the_wild.up||cooldown.heart_of_the_wild.remains>60-30*talent.cenarius_guidance.enabled||!talent.heart_of_the_wild.enabled)\nactions.cat+=/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>5&spell_targets.thrash_cat>4\nactions.cat+=/sunfire,cycle_targets=1,if=(refreshable&target.time_to_die>5)&!prev_gcd.1.cat_form\nactions.cat+=/rake,cycle_targets=1,if=refreshable&(time_to_die>8&!ticking)||(active_dot.rake<1&talent.primal_fury.enabled&talent.master_shapeshifter.enabled&spell_targets.swipe_cat>4)\n# [Hekili] Modified as cooldown.healing and druid.time_spend_healing are not supported.\nactions.cat+=/cat_form,if=!buff.cat_form.up&energy>60&!talent.fluid_form.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<4\nactions.cat+=/sunfire,if=prev_gcd.1.moonfire&remains<duration*0.8\nactions.cat+=/starfire,if=(talent.master_shapeshifter.enabled&(spell_targets.starfire>4||(buff.heart_of_the_wild.up&spell_targets.starfire>5))||(buff.heart_of_the_wild.up&spell_targets.starfire>7))\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&!talent.fluid_form.enabled\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&dot.rip.remains>10)&spell_targets.swipe_cat<4\nactions.cat+=/thrash_cat,cycle_targets=1,if=refreshable&target.time_to_die>5&spell_targets.thrash_cat>2\nactions.cat+=/rake,cycle_targets=1,if=refreshable&time_to_die>10&(!talent.primal_fury.enabled||!talent.master_shapeshifter.enabled||!spell_targets.swipe_cat>4)\nactions.cat+=/swipe_cat,if=active_enemies>2&combo_points<5\nactions.cat+=/thrash_cat,if=refreshable&fight_remains>5\nactions.cat+=/pool_resource,for_next=1\nactions.cat+=/shred,if=energy>60&combo_points<5\nactions.cat+=/ferocious_bite,if=energy>50&combo_points.deficit=0\nactions.cat+=/cat_form,if=!buff.cat_form.up\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",
|
|
["version"] = 20250425,
|
|
["warnings"] = "Imported 4 action lists.\n",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "skull_bash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "berserking",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.prowl.up & ! buff.shadowmeld.up",
|
|
["action"] = "natures_vigil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "settings.healing_mode & buff.prowl.down",
|
|
["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,
|
|
},
|
|
},
|
|
["healing"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "On the tank",
|
|
["criteria"] = "active_dot.rejuvenation < 1",
|
|
["action"] = "rejuvenation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "On an ally",
|
|
["criteria"] = "( active_dot.lifebloom < 1 ) || ( active_dot.lifebloom < 2 & buff.lifebloom.up & talent.undergrowth.enabled )",
|
|
["action"] = "lifebloom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "On yourself",
|
|
["criteria"] = "( active_dot.lifebloom < 2 & buff.lifebloom.down & talent.undergrowth.enabled )",
|
|
["action"] = "lifebloom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Maintain Efflo",
|
|
["criteria"] = "buff.efflorescence.down",
|
|
["action"] = "efflorescence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "transform into tree",
|
|
["criteria"] = "( active_dot.regrowth + active_dot.wild_growth + active_dot.rejuvenation ) > 1 & talent.reforestation.enabled & buff.reforestation.stack = 3",
|
|
["action"] = "swiftmend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Always wild growth after swiftmend",
|
|
["criteria"] = "prev.1.swiftmend",
|
|
["action"] = "wild_growth",
|
|
},
|
|
},
|
|
["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 ) || boss & fight_remains < 46",
|
|
["action"] = "heart_of_the_wild",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.convoke_the_spirits.enabled & ( active_enemies <= 6 ) & ( ! buff.cat_form.up & cooldown.convoke_the_spirits.remains <= gcd.max & ( buff.heart_of_the_wild.up || cooldown.heart_of_the_wild.remains > 60 - 30 * talent.cenarius_guidance.enabled || ! talent.heart_of_the_wild.enabled ) )",
|
|
["action"] = "cat_form",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.cat_form.up ) & ( 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"] = "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 > 5 & spell_targets.thrash_cat > 4",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "sunfire",
|
|
["criteria"] = "( refreshable & target.time_to_die > 5 ) & ! prev_gcd.1.cat_form",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rake",
|
|
["criteria"] = "refreshable & ( time_to_die > 8 & ! ticking ) || ( active_dot.rake < 1 & talent.primal_fury.enabled & talent.master_shapeshifter.enabled & spell_targets.swipe_cat > 4 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "[Hekili] Modified as cooldown.healing and druid.time_spend_healing are not supported.",
|
|
["criteria"] = "! buff.cat_form.up & energy > 60 & ! talent.fluid_form.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 < 4",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.moonfire & remains < duration * 0.8",
|
|
["action"] = "sunfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.master_shapeshifter.enabled & ( spell_targets.starfire > 4 || ( buff.heart_of_the_wild.up & spell_targets.starfire > 5 ) ) || ( buff.heart_of_the_wild.up & spell_targets.starfire > 7 ) )",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 || ( active_enemies < 8 & ! buff.cat_form.up )",
|
|
["action"] = "starsurge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.cat_form.up & energy > 50 & ! talent.fluid_form.enabled",
|
|
["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 & dot.rip.remains > 10 ) & spell_targets.swipe_cat < 4",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "thrash_cat",
|
|
["criteria"] = "refreshable & target.time_to_die > 5 & spell_targets.thrash_cat > 2",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rake",
|
|
["criteria"] = "refreshable & time_to_die > 10 & ( ! talent.primal_fury.enabled || ! talent.master_shapeshifter.enabled || ! spell_targets.swipe_cat > 4 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 & combo_points < 5",
|
|
["action"] = "swipe_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & fight_remains > 5",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy > 60 & combo_points < 5",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy > 50 & combo_points.deficit = 0",
|
|
["action"] = "ferocious_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.cat_form.up",
|
|
["action"] = "cat_form",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Snapshot raid buffed stats before combat begins and pre-potting is done.",
|
|
["action"] = "mark_of_the_wild",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "down & active_allies > 1",
|
|
["action"] = "symbiotic_relationship",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.rake.enabled",
|
|
["action"] = "prowl",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.rake.enabled1",
|
|
["action"] = "cat_form",
|
|
},
|
|
},
|
|
},
|
|
["author"] = "Makahiki",
|
|
},
|
|
},
|
|
},
|
|
["Quillisium - Deathwing"] = {
|
|
["runOnce"] = {
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["removeOldThrottles_20241115"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_267"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["forceEnableEnhancedRecheckBoomkin_20210712"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_266"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_265"] = true,
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
},
|
|
["specs"] = {
|
|
[266] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["tyrant_padding"] = 1,
|
|
["dcon_imps"] = 0,
|
|
},
|
|
["potionsReset"] = 20180919.1,
|
|
["debuffPadding"] = 0,
|
|
["potion"] = "unbridled_fury",
|
|
["buffPadding"] = 0,
|
|
},
|
|
[267] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["default_pet"] = "summon_sayaad",
|
|
["cataclysm_ttd"] = 11,
|
|
["cleave_apl"] = false,
|
|
["low_ttd_dot"] = 11,
|
|
},
|
|
["potionsReset"] = 20180919.1,
|
|
["debuffPadding"] = 0,
|
|
["potion"] = "unbridled_fury",
|
|
["buffPadding"] = 0,
|
|
},
|
|
[265] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["default_pet"] = "summon_sayaad",
|
|
["manage_ds_ticks"] = false,
|
|
},
|
|
["potionsReset"] = 20180919.1,
|
|
["debuffPadding"] = 0,
|
|
["potion"] = "unbridled_fury",
|
|
["buffPadding"] = 0,
|
|
},
|
|
},
|
|
["displays"] = {
|
|
["Interrupts"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = -55.00000381469727,
|
|
},
|
|
["Cooldowns"] = {
|
|
["rel"] = "CENTER",
|
|
["y"] = -280.0000305175781,
|
|
},
|
|
["Primary"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = -62.5289306640625,
|
|
["y"] = -343.6209411621094,
|
|
},
|
|
["AOE"] = {
|
|
["rel"] = "CENTER",
|
|
},
|
|
["Defensives"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = -110.0000076293945,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Demonology"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/dragonflight/engine/class_modules/apl/warlock.cpp",
|
|
["builtIn"] = true,
|
|
["date"] = 20250302,
|
|
["spec"] = 266,
|
|
["desc"] = "2025-03-02: Sync with SimC",
|
|
["lists"] = {
|
|
["items"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! pet.demonic_tyrant.active & trinket.t1.cast_time > 0 || ! trinket.t1.cast_time > 0 ) & ( pet.demonic_tyrant.active || ! talent.summon_demonic_tyrant.enabled || variable.trinket_priority = 2 & cooldown.summon_demonic_tyrant.remains > 20 & ! pet.demonic_tyrant.active & trinket.t2.cooldown.remains < cooldown.summon_demonic_tyrant.remains + 5 ) & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 & ! variable.trinket_2_manual ) || variable.trinket_1_buff_duration >= fight_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! pet.demonic_tyrant.active & trinket.t2.cast_time > 0 || ! trinket.t2.cast_time > 0 ) & ( pet.demonic_tyrant.active || ! talent.summon_demonic_tyrant.enabled || variable.trinket_priority = 1 & cooldown.summon_demonic_tyrant.remains > 20 & ! pet.demonic_tyrant.active & trinket.t1.cooldown.remains < cooldown.summon_demonic_tyrant.remains + 5 ) & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 & ! variable.trinket_1_manual ) || variable.trinket_2_buff_duration >= fight_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ( variable.damage_trinket_priority = 1 || trinket.t2.cooldown.remains ) & ( trinket.t1.cast_time > 0 & ! pet.demonic_tyrant.active || ! trinket.t1.cast_time > 0 ) || ( time < 20 & variable.trinket_2_buffs ) || cooldown.summon_demonic_tyrant.remains_expected > 20 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ( variable.damage_trinket_priority = 2 || trinket.t1.cooldown.remains ) & ( trinket.t2.cast_time > 0 & ! pet.demonic_tyrant.active || ! trinket.t2.cast_time > 0 ) || ( time < 20 & variable.trinket_1_buffs ) || cooldown.summon_demonic_tyrant.remains_expected > 20 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "spymasters_web",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "spymasters_web",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["criteria"] = "pet.demonic_tyrant.active & gcd.remains > 0 || fight_remains <= 30",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "mirror_of_fractured_tomorrows",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ( variable.damage_trinket_priority = 1 || trinket.t2.cooldown.remains )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.trinket_2_buffs & ( variable.damage_trinket_priority = 2 || trinket.t1.cooldown.remains )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! equipped.neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "neural_synapse_enhancer",
|
|
["criteria"] = "( pet.demonic_tyrant.active || fight_remains <= 15 ) & ! variable.trinket_1_buffs & ! variable.trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "neural_synapse_enhancer",
|
|
["criteria"] = "( pet.demonic_tyrant.active || fight_remains <= 15 || trinket.t2.cooldown.remains > cooldown.summon_demonic_tyrant.remains ) & variable.trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "neural_synapse_enhancer",
|
|
["criteria"] = "( pet.demonic_tyrant.active || fight_remains <= 15 || trinket.t1.cooldown.remains > cooldown.summon_demonic_tyrant.remains ) & variable.trinket_1_buffs",
|
|
},
|
|
},
|
|
["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,
|
|
["criteria"] = "boss & fight_remains < 30",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "fight_end",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "time < variable.first_tyrant_time",
|
|
["list_name"] = "opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < gcd.max * 14",
|
|
["action"] = "call_action_list",
|
|
["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,
|
|
["action"] = "demonbolt",
|
|
["criteria"] = "buff.demonic_core.up & ( ! talent.doom.enabled || buff.demonic_core.stack > 1 || debuff.doom.remains > 10 || debuff.doom.down ) & ( ( ( ! talent.fel_invocation.enabled || cooldown.soul_strike.remains > gcd.max * 2 ) & soul_shard < 4 ) ) & ! prev_gcd.1.demonbolt & ! variable.pool_cores_for_tyrant",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "demonbolt",
|
|
["criteria"] = "buff.demonic_core.stack >= 3 - ( talent.doom.enabled & debuff.doom.down ) * 2 & soul_shard <= 3 & ! variable.pool_cores_for_tyrant",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonic_core.stack < 3 & cooldown.summon_demonic_tyrant.remains > 25 & ! buff.demonic_power.up",
|
|
["action"] = "power_siphon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "demonic_strength",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "bilescourge_bombers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ( cooldown.demonic_strength.remains || ! talent.demonic_strength.enabled )",
|
|
["action"] = "guillotine",
|
|
},
|
|
{
|
|
["action"] = "ruination",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.infernal_bolt.remains > cast_time & buff.infernal_bolt.remains < 2 * gcd.max || soul_shard < 3 & cooldown.summon_demonic_tyrant.remains > 20",
|
|
["action"] = "infernal_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "two_cast_imps > 0 & variable.impl & ! prev_gcd.1.implosion & ( active_enemies > 3 || active_enemies <= 3 & last_cast_imps > 0 )",
|
|
["action"] = "implosion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.diabolic_ritual_remains > gcd.max & variable.diabolic_ritual_remains < gcd.max + gcd.max & buff.demonic_core.up & soul_shard <= 3",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.diabolic_ritual_remains > gcd.max & variable.diabolic_ritual_remains < soul_shard_deficit * cast_time + gcd.max & soul_shard < 5",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( soul_shard > 2 & ( cooldown.call_dreadstalkers.remains > gcd.max * 4 || buff.demonic_calling.remains - gcd.max > cooldown.call_dreadstalkers.remains ) & cooldown.summon_demonic_tyrant.remains > 17 ) || soul_shard = 5 || soul_shard = 4 & talent.fel_invocation.enabled ) & ( active_enemies = 1 )",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard > 2 & ! ( active_enemies = 1 )",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "demonbolt",
|
|
["criteria"] = "active_enemies < 4 & buff.demonic_core.stack > 1 & ( ( soul_shard < 4 & ! talent.soul_strike.enabled || cooldown.soul_strike.remains > gcd.max * 2 & talent.fel_invocation.enabled ) || soul_shard < 3 ) & ! variable.pool_cores_for_tyrant",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonic_core.up & buff.tyrant.up & soul_shard < 3",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonic_core.stack > 1 & soul_shard < 4",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["action"] = "infernal_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! pet.tyrant.active & cooldown.tyrant_remains > 15 & active_enemies > 1",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["action"] = "shadow_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ( cooldown.demonic_strength.remains || ! talent.demonic_strength.enabled ) & talent.fel_sunder.enabled",
|
|
["action"] = "felstorm",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time > 0 & ! pet.alive & ! buff.grimoire_of_sacrifice.up",
|
|
["action"] = "fel_domination",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! pet.alive & ! buff.grimoire_of_sacrifice.up",
|
|
["action"] = "summon_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "12",
|
|
["description"] = "Sets the expected Tyrant Setup on pull to take a total 12 seconds long",
|
|
["var_name"] = "first_tyrant_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "first_tyrant_time",
|
|
["criteria"] = "talent.grimoire_felguard.enabled",
|
|
["description"] = "Accounts for the execution time of Grimoire Felguard in the setup of Tyrant on Pull",
|
|
["value"] = "action.grimoire_felguard.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "first_tyrant_time",
|
|
["criteria"] = "talent.summon_vilefiend.enabled",
|
|
["description"] = "Accounts for the execution time of Vilefiend in the the setup of Tyrant on Pull",
|
|
["value"] = "action.summon_vilefiend.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "first_tyrant_time",
|
|
["criteria"] = "talent.grimoire_felguard.enabled || talent.summon_vilefiend.enabled",
|
|
["description"] = "Accounts for the execution time of both Grimoire Felguard and Vilefiend in the tyrant Setup on Pull",
|
|
["value"] = "gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "action.summon_demonic_tyrant.execute_time + action.shadow_bolt.execute_time",
|
|
["description"] = "Accounts for Tyrant own Cast Time and an additional Shadowbolt cast time",
|
|
["var_name"] = "first_tyrant_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "min",
|
|
["action"] = "variable",
|
|
["value"] = "10",
|
|
["description"] = "Sets an absolute minimun of 10s for the First Tyrant Setup",
|
|
["var_name"] = "first_tyrant_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "in_opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff",
|
|
["description"] = "Defines if the the Trinket 1 is a buff Trinket in the trinket logic",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff",
|
|
["description"] = "Defines if the the Trinket 2 is a buff Trinket in the trinket logic",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["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 dont want to use in combat",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.spymasters_web || trinket.t1.is.imperfect_ascendancy_serum",
|
|
["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.imperfect_ascendancy_serum",
|
|
["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.buff_duration + ( trinket.t1.is.mirror_of_fractured_tomorrows * 20 )",
|
|
["description"] = "Defines the Duration of the buff or an expected time for value of the trinket",
|
|
["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"] = "Defines the Duration of the buff or an expected time for value of the trinket",
|
|
["var_name"] = "trinket_2_buff_duration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Trinket Automatic Logic for Trinket 1",
|
|
["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 )",
|
|
["var_name"] = "trinket_1_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Trinket Automatic Logic for Trinket 2",
|
|
["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 )",
|
|
["var_name"] = "trinket_2_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Automatic Logic in case of 2 Buff Trinkets",
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_2_buffs & trinket.t2.ilvl > trinket.t1.ilvl",
|
|
["var_name"] = "damage_trinket_priority",
|
|
["action"] = "variable",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["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 / 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 ) ) )",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["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,
|
|
},
|
|
},
|
|
["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",
|
|
["criteria"] = "pet.demonic_tyrant.active",
|
|
["var_name"] = "in_opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "impl",
|
|
["criteria"] = "active_enemies > 1 + ( talent.sacrificed_souls.enabled )",
|
|
["description"] = "Defines the viability of Implosion when Tyrant is down",
|
|
["value"] = "buff.tyrant.down",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "impl",
|
|
["criteria"] = "active_enemies > 2 + ( talent.sacrificed_souls.enabled ) & active_enemies < 5 + ( talent.sacrificed_souls.enabled )",
|
|
["description"] = "Defines the Viability of Implosion while Tyrant is Up",
|
|
["value"] = "buff.tyrant.remains < 6",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "impl",
|
|
["criteria"] = "active_enemies > 4 + ( talent.sacrificed_souls.enabled )",
|
|
["description"] = "Defines the Viability of Implosion while Tyrant is Up",
|
|
["value"] = "buff.tyrant.remains < 8",
|
|
},
|
|
{
|
|
["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",
|
|
["description"] = "Restricts Demonic Core usage for the sake of having 2 or more Demonic Cores on Tyrant Setup",
|
|
["var_name"] = "pool_cores_for_tyrant",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.diabolic_ritual_mother_of_chaos.remains",
|
|
["criteria"] = "buff.diabolic_ritual_mother_of_chaos.up",
|
|
["var_name"] = "diabolic_ritual_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.diabolic_ritual_overlord.remains",
|
|
["criteria"] = "buff.diabolic_ritual_overlord.up",
|
|
["var_name"] = "diabolic_ritual_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.diabolic_ritual_pit_lord.remains",
|
|
["criteria"] = "buff.diabolic_ritual_pit_lord.up",
|
|
["var_name"] = "diabolic_ritual_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2 * spell_haste * 6 + 0.58 + time",
|
|
["criteria"] = "prev_gcd.1.hand_of_guldan & buff.dreadstalkers.up & cooldown.summon_demonic_tyrant.remains < 13 & variable.imp_despawn = 0",
|
|
["var_name"] = "imp_despawn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ( cooldown.demonic_strength.remains || ! talent.demonic_strength.enabled ) & talent.fel_sunder.enabled",
|
|
["action"] = "felstorm",
|
|
},
|
|
},
|
|
["tyrant"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["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 ) )",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "racials",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn & variable.imp_despawn < time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & ( prev_gcd.1.hand_of_guldan || prev_gcd.1.ruination ) & ( variable.imp_despawn & variable.imp_despawn < time + gcd.max + action.summon_demonic_tyrant.cast_time || soul_shard < 2 )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < 15 & ( time < variable.first_tyrant_time || cooldown.summon_demonic_tyrant.remains > ( action.summon_demonic_tyrant.cast_time + 2 * gcd.max ) )",
|
|
["action"] = "power_siphon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dreadstalkers.remains > gcd.max + action.summon_demonic_tyrant.cast_time & ( soul_shard = 5 || variable.imp_despawn )",
|
|
["action"] = "ruination",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.infernal_bolt.remains > cast_time & buff.infernal_bolt.remains < 2 * gcd.max || ! buff.demonic_core.up ) & variable.imp_despawn > time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & soul_shard < 3",
|
|
["action"] = "infernal_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.call_dreadstalkers & soul_shard < 4 & buff.demonic_core.stack < 4",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.2.call_dreadstalkers & prev_gcd.1.shadow_bolt & buff.bloodlust.up & soul_shard < 5",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.summon_vilefiend & ( buff.demonic_calling.down || prev_gcd.2.grimoire_felguard )",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.grimoire_felguard & buff.demonic_core.stack < 3 & buff.demonic_calling.remains > gcd.max * 3",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn > time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & ! buff.demonic_core.up & buff.demonic_art_pit_lord.up & variable.imp_despawn < time + gcd.max * 5 + action.summon_demonic_tyrant.cast_time",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn > time + gcd.max + action.summon_demonic_tyrant.cast_time & variable.imp_despawn < time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & buff.dreadstalkers.remains > gcd.max + action.summon_demonic_tyrant.cast_time & soul_shard > 1",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.demonic_core.up & variable.imp_despawn > time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & variable.imp_despawn < time + gcd.max * 4 + action.summon_demonic_tyrant.cast_time & soul_shard < 3 & buff.dreadstalkers.remains > gcd.max * 2 + action.summon_demonic_tyrant.cast_time",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < 17 - 2 * gcd.max & cooldown.summon_vilefiend.remains < 15 - 2 * gcd.max & cooldown.call_dreadstalkers.remains < 12 - 2 * gcd.max",
|
|
["action"] = "grimoire_felguard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < 15 - 2 * gcd.max & ( buff.grimoire_felguard.up || cooldown.grimoire_felguard.remains > 15 || ! talent.grimoire_felguard.enabled ) & ( buff.dreadstalkers.up || cooldown.call_dreadstalkers.remains < 15 - 2 * gcd.max || ! talent.call_dreadstalkers.enabled )",
|
|
["action"] = "summon_vilefiend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < 12 - 2 * gcd.max & ( buff.vilefiend.up || cooldown.summon_vilefiend.remains < 12 - 2 * gcd.max || ! talent.summon_vilefiend.enabled )",
|
|
["action"] = "call_dreadstalkers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ( variable.imp_despawn & variable.imp_despawn < time + gcd.max * 2.5 + cast_time ) || ( buff.wild_imps.stack > 9 & soul_shards < 2 ) ) & buff.dreadstalkers.up & ( buff.vilefiend.up || ! talent.summon_vilefiend.enabled ) ) || ( buff.dreadstalkers.up & buff.dreadstalkers.remains < gcd.max * 2 + cast_time & ( ( buff.vilefiend.up & buff.vilefiend.remains > 2 * gcd.max ) || ! talent.summon_vilefiend.enabled ) & ( ( buff.grimoire_felguard.up & buff.grimoire_felguard.remains > 2 * gcd.max ) || ! talent.grimoire_felguard.enabled || cooldown.grimoire_felguard.remains > 20 ) )",
|
|
["action"] = "summon_demonic_tyrant",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.imp_despawn || buff.dreadstalkers.remains ) & soul_shard >= 3 || soul_shard = 5",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn & soul_shard < 3",
|
|
["action"] = "infernal_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "demonbolt",
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn || soul_shard = 5 & cooldown.summon_vilefiend.remains > gcd.max * 3",
|
|
["action"] = "ruination",
|
|
},
|
|
{
|
|
["action"] = "shadow_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "infernal_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["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,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250302,
|
|
["warnings"] = "The import for 'items' required some automated changes.\nLine 1: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 1: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 1: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 1: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 2: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 3: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 4: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 7: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 7: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 12: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 12: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 13: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 13: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\n\nThe import for 'default' required some automated changes.\nLine 12: Converted 'talent.doom' to 'talent.doom.enabled' (1x).\nLine 12: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\nLine 12: Converted 'pet.felguard.cooldown.soul_strike.remains' to 'cooldown.soul_strike.remains' (1x).\nLine 13: Converted 'talent.doom' to 'talent.doom.enabled' (1x).\nLine 17: Converted 'talent.demonic_strength' to 'talent.demonic_strength.enabled' (1x).\nLine 23: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\nLine 25: Converted 'talent.soul_strike' to 'talent.soul_strike.enabled' (1x).\nLine 25: Converted 'pet.felguard.cooldown.soul_strike.remains' to 'cooldown.soul_strike.remains' (1x).\nLine 25: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\nLine 31: Converted 'talent.demonic_strength' to 'talent.demonic_strength.enabled' (1x).\nLine 31: Converted 'talent.fel_sunder' to 'talent.fel_sunder.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 10: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 11: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 12: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 13: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 14: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 14: Converted 'trinket.1.is.imperfect_ascendancy_serum' to 'trinket.t1.is.imperfect_ascendancy_serum' (1x).\nLine 15: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 15: Converted 'trinket.2.is.imperfect_ascendancy_serum' to 'trinket.t2.is.imperfect_ascendancy_serum' (1x).\nLine 16: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 16: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 16: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 17: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 17: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 17: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 18: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%trinket.t1.cooldown.duration=0)'.\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 19: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%trinket.t2.cooldown.duration=0)'.\nLine 20: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 20: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nLine 21: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 21: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 21: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 21: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 21: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 21: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 21: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 21: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 21: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nLine 21: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 21: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%variable.trinket_2_buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>(((trinket.t1.cooldown.duration%variable.trinket_1_buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))*(1+((trinket.t1.ilvl-trinket.t2.ilvl)%100)))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/variable.trinket_2_buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>(((trinket.t1.cooldown.duration/variable.trinket_1_buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))*(1+((trinket.t1.ilvl-trinket.t2.ilvl)/100)))'.\n\nThe import for 'variables' required some automated changes.\nLine 11: Converted 'talent.demonic_strength' to 'talent.demonic_strength.enabled' (1x).\nLine 11: Converted 'talent.fel_sunder' to 'talent.fel_sunder.enabled' (1x).\n\nThe import for 'tyrant' required some automated changes.\nLine 14: Converted 'talent.grimoire_felguard' to 'talent.grimoire_felguard.enabled' (1x).\nLine 14: Converted 'talent.call_dreadstalkers' to 'talent.call_dreadstalkers.enabled' (1x).\nLine 15: Converted 'talent.summon_vilefiend' to 'talent.summon_vilefiend.enabled' (1x).\n\nThe import for 'opener' required some automated changes.\nLine 1: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\n\nImported 8 action lists.\n",
|
|
["profile"] = "actions.precombat+=/fel_domination,if=time>0&!pet.alive&!buff.grimoire_of_sacrifice.up\nactions.precombat+=/summon_pet,if=!pet.alive&!buff.grimoire_of_sacrifice.up\n# Sets the expected Tyrant Setup on pull to take a total 12 seconds long\nactions.precombat+=/variable,name=first_tyrant_time,op=set,value=12\n# Accounts for the execution time of Grimoire Felguard in the setup of Tyrant on Pull\nactions.precombat+=/variable,name=first_tyrant_time,op=add,value=action.grimoire_felguard.execute_time,if=talent.grimoire_felguard.enabled\n# Accounts for the execution time of Vilefiend in the the setup of Tyrant on Pull\nactions.precombat+=/variable,name=first_tyrant_time,op=add,value=action.summon_vilefiend.execute_time,if=talent.summon_vilefiend.enabled\n# Accounts for the execution time of both Grimoire Felguard and Vilefiend in the tyrant Setup on Pull\nactions.precombat+=/variable,name=first_tyrant_time,op=add,value=gcd.max,if=talent.grimoire_felguard.enabled||talent.summon_vilefiend.enabled\n# Accounts for Tyrant own Cast Time and an additional Shadowbolt cast time\nactions.precombat+=/variable,name=first_tyrant_time,op=sub,value=action.summon_demonic_tyrant.execute_time+action.shadow_bolt.execute_time\n# Sets an absolute minimun of 10s for the First Tyrant Setup\nactions.precombat+=/variable,name=first_tyrant_time,op=min,value=10\nactions.precombat+=/variable,name=in_opener,op=set,value=1\n# Defines if the the Trinket 1 is a buff Trinket in the trinket logic\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff\n# Defines if the the Trinket 2 is a buff Trinket in the trinket logic\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff\n# For On Use Trinkets on slot 1 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell\n# For On Use Trinkets on slot 2 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell\n# Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.spymasters_web||trinket.1.is.imperfect_ascendancy_serum\n# Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.spymasters_web||trinket.2.is.imperfect_ascendancy_serum\n# Defines the Duration of the buff or an expected time for value of the trinket\nactions.precombat+=/variable,name=trinket_1_buff_duration,value=trinket.1.proc.any_dps.duration+(trinket.1.is.mirror_of_fractured_tomorrows*20)\n# Defines the Duration of the buff or an expected time for value of the trinket\nactions.precombat+=/variable,name=trinket_2_buff_duration,value=trinket.2.proc.any_dps.duration+(trinket.2.is.mirror_of_fractured_tomorrows*20)\n# Trinket Automatic Logic for Trinket 1\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.1.cooldown.duration=0)\n# Trinket Automatic Logic for Trinket 2\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.2.cooldown.duration=0)\n# Automatic Logic in case of 2 Buff Trinkets\nactions.precombat+=/variable,name=damage_trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&!variable.trinket_2_buffs&trinket.2.ilvl>trinket.1.ilvl\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%variable.trinket_2_buff_duration)*(1.5+trinket.2.has_buff.intellect)*(variable.trinket_2_sync))>(((trinket.1.cooldown.duration%variable.trinket_1_buff_duration)*(1.5+trinket.1.has_buff.intellect)*(variable.trinket_1_sync))*(1+((trinket.1.ilvl-trinket.2.ilvl)%100)))\nactions.precombat+=/power_siphon\nactions.precombat+=/lights_judgment\nactions.precombat+=/demonbolt,if=!buff.power_siphon.up||soul_shards.deficit>1\nactions.precombat+=/shadow_bolt\n\nactions+=/axe_toss\nactions+=/call_action_list,name=variables\nactions+=/potion,if=buff.tyrant.remains>10\nactions+=/variable,name=check_racials,op=set,value=pet.demonic_tyrant.active||boss&fight_remains<22\nactions+=/call_action_list,name=racials,if=variable.check_racials,use_off_gcd=1\nactions+=/call_action_list,name=items,use_off_gcd=1\n## actions+=/invoke_external_buff,name=power_infusion,if=fight_remains<15||pet.demonic_tyrant.active&fight_remains<100||fight_remains<25||(pet.demonic_tyrant.active||!talent.summon_demonic_tyrant&buff.dreadstalkers.up)\nactions+=/call_action_list,name=fight_end,if=boss&fight_remains<30\nactions+=/call_action_list,name=opener,strict=1,if=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=buff.demonic_core.up&(!talent.doom||buff.demonic_core.stack>1||debuff.doom.remains>10||debuff.doom.down)&(((!talent.fel_invocation||pet.felguard.cooldown.soul_strike.remains>gcd.max*2)&soul_shard<4))&!prev_gcd.1.demonbolt&!variable.pool_cores_for_tyrant\nactions+=/demonbolt,cycle_targets=1,if=buff.demonic_core.stack>=3-(talent.doom&debuff.doom.down)*2&soul_shard<=3&!variable.pool_cores_for_tyrant\nactions+=/power_siphon,if=buff.demonic_core.stack<3&cooldown.summon_demonic_tyrant.remains>25&!buff.demonic_power.up\nactions+=/demonic_strength,if=active_enemies>1\nactions+=/bilescourge_bombers,if=active_enemies>1\nactions+=/guillotine,if=active_enemies>1&(cooldown.demonic_strength.remains||!talent.demonic_strength)\nactions+=/ruination\nactions+=/infernal_bolt,if=buff.infernal_bolt.remains>cast_time&buff.infernal_bolt.remains<2*gcd.max||soul_shard<3&cooldown.summon_demonic_tyrant.remains>20\nactions+=/implosion,if=two_cast_imps>0&variable.impl&!prev_gcd.1.implosion&(active_enemies>3||active_enemies<=3&last_cast_imps>0)\nactions+=/demonbolt,if=variable.diabolic_ritual_remains>gcd.max&variable.diabolic_ritual_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=active_enemies<4&buff.demonic_core.stack>1&((soul_shard<4&!talent.soul_strike||pet.felguard.cooldown.soul_strike.remains>gcd.max*2&talent.fel_invocation)||soul_shard<3)&!variable.pool_cores_for_tyrant\nactions+=/demonbolt,if=buff.demonic_core.up&buff.tyrant.up&soul_shard<3\nactions+=/demonbolt,if=buff.demonic_core.stack>1&soul_shard<4\nactions+=/infernal_bolt\nactions+=/lights_judgment,if=!pet.tyrant.active&cooldown.tyrant_remains>15&active_enemies>1\nactions+=/shadow_bolt\nactions+=/felstorm,if=active_enemies>1&(cooldown.demonic_strength.remains||!talent.demonic_strength)&talent.fel_sunder\n\nactions.fight_end+=/grimoire_felguard,if=fight_remains<20\nactions.fight_end+=/ruination\nactions.fight_end+=/implosion,if=fight_remains<2*gcd.max&!prev_gcd.1.implosion\nactions.fight_end+=/demonbolt,if=fight_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,name=mirror_of_fractured_tomorrows,if=trinket.1.is.mirror_of_fractured_tomorrows&variable.trinket_priority=2||trinket.2.is.mirror_of_fractured_tomorrows&variable.trinket_priority=1\nactions.items+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(variable.damage_trinket_priority=1||trinket.2.cooldown.remains)\nactions.items+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(variable.damage_trinket_priority=2||trinket.1.cooldown.remains)\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,if=!equipped.neural_synapse_enhancer\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(pet.demonic_tyrant.active||fight_remains<=15)&!variable.trinket_1_buffs&!variable.trinket_2_buffs\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(pet.demonic_tyrant.active||fight_remains<=15||trinket.2.cooldown.remains>cooldown.summon_demonic_tyrant.remains)&variable.trinket_2_buffs\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(pet.demonic_tyrant.active||fight_remains<=15||trinket.1.cooldown.remains>cooldown.summon_demonic_tyrant.remains)&variable.trinket_1_buffs\n\nactions.opener+=/grimoire_felguard,if=soul_shard>=5-talent.fel_invocation\nactions.opener+=/summon_vilefiend,if=soul_shard=5\nactions.opener+=/shadow_bolt,if=soul_shard<5&cooldown.call_dreadstalkers.up\nactions.opener+=/call_dreadstalkers,if=soul_shard=5\nactions.opener+=/ruination\n\nactions.racials+=/berserking,use_off_gcd=1\nactions.racials+=/blood_fury\nactions.racials+=/fireblood\nactions.racials+=/ancestral_call\n\nactions.tyrant+=/call_action_list,name=racials,if=!variable.check_racials&(variable.imp_despawn&variable.imp_despawn<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.5+cast_time)||(buff.wild_imps.stack>9&soul_shards<2))&buff.dreadstalkers.up&(buff.vilefiend.up||!talent.summon_vilefiend.enabled))||(buff.dreadstalkers.up&buff.dreadstalkers.remains<gcd.max*2+cast_time&((buff.vilefiend.up&buff.vilefiend.remains>2*gcd.max)||!talent.summon_vilefiend.enabled)&((buff.grimoire_felguard.up&buff.grimoire_felguard.remains>2*gcd.max)||!talent.grimoire_felguard.enabled||cooldown.grimoire_felguard.remains>20))\nactions.tyrant+=/hand_of_guldan,if=(variable.imp_despawn||buff.dreadstalkers.remains)&soul_shard>=3||soul_shard=5\nactions.tyrant+=/infernal_bolt,if=variable.imp_despawn&soul_shard<3\nactions.tyrant+=/demonbolt,cycle_targets=1,if=variable.imp_despawn&buff.demonic_core.up&soul_shard<4||prev_gcd.1.call_dreadstalkers&soul_shard<4&buff.demonic_core.stack=4||buff.demonic_core.stack=4&soul_shard<4||buff.demonic_core.stack>=2&cooldown.power_siphon.remains<5\nactions.tyrant+=/ruination,if=variable.imp_despawn||soul_shard=5&cooldown.summon_vilefiend.remains>gcd.max*3\nactions.tyrant+=/shadow_bolt\nactions.tyrant+=/infernal_bolt\n\nactions.variables+=/variable,name=next_tyrant_cd,op=set,value=cooldown.summon_demonic_tyrant.remains_expected\nactions.variables+=/variable,name=in_opener,op=set,value=0,if=pet.demonic_tyrant.active\n## Handled internally [Hekili]\n## Sets an expected duration of valid Wild Imps on a tyrant Setup for the sake of casting Tyrant before expiration of Imps\n## actions.variables+=/variable,name=imp_despawn,op=set,value=2*spell_haste*6+0.58+time,if=prev_gcd.1.hand_of_guldan&buff.dreadstalkers.up&cooldown.summon_demonic_tyrant.remains<13&variable.imp_despawn=0\n## Checks the Wild Imps in a Tyrant Setup alongside Dreadstalkers for the sake of casting Tyrant before Expiration Dreadstalkers or Imps\n## actions.variables+=/variable,name=imp_despawn,op=max,value=buff.dreadstalkers.remains+time,if=variable.imp_despawn\n## Checks The Wild Imps in a Tyrant Setup alongside Grimoire Felguard for the sake of casting Tyrant before Expiration of Grimoire Felguard or Imps\n## actions.variables+=/variable,name=imp_despawn,op=max,value=buff.grimoire_felguard.remains+time,if=variable.imp_despawn&buff.grimoire_felguard.up\n## actions.variables+=/variable,name=imp_despawn,op=set,value=0,if=buff.tyrant.up\n# Defines the viability of Implosion when Tyrant is down\nactions.variables+=/variable,name=impl,op=set,value=buff.tyrant.down,if=active_enemies>1+(talent.sacrificed_souls.enabled)\n# Defines the Viability of Implosion while Tyrant is Up\nactions.variables+=/variable,name=impl,op=set,value=buff.tyrant.remains<6,if=active_enemies>2+(talent.sacrificed_souls.enabled)&active_enemies<5+(talent.sacrificed_souls.enabled)\n# Defines the Viability of Implosion while Tyrant is Up\nactions.variables+=/variable,name=impl,op=set,value=buff.tyrant.remains<8,if=active_enemies>4+(talent.sacrificed_souls.enabled)\n# Restricts Demonic Core usage for the sake of having 2 or more Demonic Cores on Tyrant Setup\nactions.variables+=/variable,name=pool_cores_for_tyrant,op=set,value=cooldown.summon_demonic_tyrant.remains<20&variable.next_tyrant_cd<20&(buff.demonic_core.stack<=2||!buff.demonic_core.up)&cooldown.summon_vilefiend.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\nactions.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\nactions.variables+=/felstorm,if=active_enemies>1&(cooldown.demonic_strength.remains||!talent.demonic_strength)&talent.fel_sunder",
|
|
["author"] = "SimC",
|
|
},
|
|
["Affliction"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250303,
|
|
["spec"] = 265,
|
|
["desc"] = "2025-03-03: Sync with SimC",
|
|
["profile"] = "actions.precombat=fel_domination,if=time>0&!pet.alive\nactions.precombat+=/summon_pet\nactions.precombat+=/variable,name=cleave_apl,value=toggle.funnel\n# Used to set Trinket in slot 1 as Buff Trinkets for the automatic logic\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff\n# Used to set Trinkets in slot 2 as Buff Trinkets for the automatic logic\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff\n# Automatic Logic for Buff Trinkets in Trinket Slot 1\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.1.cooldown.duration=0)\n# Automatic Logic for Buff Trinkets in Trinket Slot 2\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.2.cooldown.duration=0)\n# Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.spymasters_web||trinket.1.is.aberrant_spellforge\n# Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.spymasters_web||trinket.2.is.aberrant_spellforge\n# For On Use Trinkets on slot 1 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell\n# For On Use Trinkets on Slot 2 with on use effects you don't want to use in combat\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell\n# Sets the duration of Trinket 1 in the automatic logic\nactions.precombat+=/variable,name=trinket_1_buff_duration,value=trinket.1.proc.any_dps.duration+(trinket.1.is.mirror_of_fractured_tomorrows*20)\n# Sets the duration of Trinket 2 in the automatic logic\nactions.precombat+=/variable,name=trinket_2_buff_duration,value=trinket.2.proc.any_dps.duration+(trinket.2.is.mirror_of_fractured_tomorrows*20)\n# Automatic Logic in case of 2 On Use Buff Trinkets\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%variable.trinket_2_buff_duration)*(1+0.5*trinket.2.has_buff.intellect)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.1.has_buff.intellect)*(variable.trinket_1_sync))\nactions.precombat+=/grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice.enabled\nactions.precombat+=/seed_of_corruption,if=spell_targets.seed_of_corruption_aoe>2||spell_targets.seed_of_corruption_aoe>1&talent.demonic_soul\nactions.precombat+=/haunt\n\nactions+=/spell_lock\nactions+=/call_action_list,name=variables\nactions+=/call_action_list,name=ogcd\nactions+=/call_action_list,name=items\n# This entry is manually translated and will differ from SIMC, but maintains the same functionality.\nactions+=/call_action_list,name=cleave,if=active_enemies=2||active_enemies>2&variable.cleave_apl\nactions+=/call_action_list,name=aoe,if=active_enemies>2\nactions+=/call_action_list,name=end_of_fight\nactions+=/agony,if=(!talent.vile_taint||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,if=!equipped.neural_synapse_enhancer\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(prev_gcd.1.soul_rot||boss&fight_remains<=15)&!variable.trinket_1_buffs&!variable.trinket_2_buffs\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(prev_gcd.1.soul_rot||boss&fight_remains<=15||cooldown.soul_rot.remains>=45)&trinket.2.cooldown.remains&variable.trinket_2_buffs\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(prev_gcd.1.soul_rot||boss&fight_remains<=15||cooldown.soul_rot.remains>=45)&trinket.1.cooldown.remains&variable.trinket_1_buffs\n\nactions.ogcd+=/potion,if=variable.cds_active||fight_remains<32||prev_gcd.1.soul_rot&time<20\nactions.ogcd+=/berserking,if=variable.cds_active||fight_remains<14||prev_gcd.1.soul_rot&time<20\nactions.ogcd+=/blood_fury,if=variable.cds_active||fight_remains<17||prev_gcd.1.soul_rot&time<20\n## actions.ogcd+=/invoke_external_buff,name=power_infusion,if=variable.cds_active\nactions.ogcd+=/fireblood,if=variable.cds_active||fight_remains<10||prev_gcd.1.soul_rot&time<20\nactions.ogcd+=/ancestral_call,if=variable.cds_active||fight_remains<17||prev_gcd.1.soul_rot&time<20\n\nactions.variables+=/variable,name=ps_up,op=set,value=!talent.phantom_singularity||dot.phantom_singularity.up\nactions.variables+=/variable,name=vt_up,op=set,value=!talent.vile_taint||dot.vile_taint_dot.up\nactions.variables+=/variable,name=vt_ps_up,op=set,value=(!talent.vile_taint&!talent.phantom_singularity)||dot.vile_taint_dot.up||dot.phantom_singularity.up\nactions.variables+=/variable,name=sr_up,op=set,value=!talent.soul_rot||dot.soul_rot.up\nactions.variables+=/variable,name=cd_dots_up,op=set,value=variable.ps_up&variable.vt_up&variable.sr_up\nactions.variables+=/variable,name=has_cds,op=set,value=talent.phantom_singularity||talent.vile_taint||talent.soul_rot||talent.summon_darkglare\nactions.variables+=/variable,name=cds_active,op=set,value=!variable.has_cds||(variable.cd_dots_up&(!talent.summon_darkglare||cooldown.summon_darkglare.remains>20||pet.darkglare.remains))\nactions.variables+=/variable,name=min_vt,op=reset,if=variable.min_vt\nactions.variables+=/variable,name=min_ps,op=reset,if=variable.min_ps",
|
|
["version"] = 20250303,
|
|
["warnings"] = "The import for 'cleave' required some automated changes.\nLine 2: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 2: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 4: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 4: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 5: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 7: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 9: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 13: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 14: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 15: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 15: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 16: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 17: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 17: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 17: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 18: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 19: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 19: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 19: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 19: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 20: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 20: Converted 'talent.nightfall' to 'talent.nightfall.enabled' (1x).\nLine 20: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 20: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 21: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'variables' required some automated changes.\nLine 1: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 2: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 3: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 3: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 4: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 6: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 6: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 6: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 6: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 7: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\n\nThe import for 'se_maintenance' required some automated changes.\nLine 1: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 1: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 2: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\n\nThe import for 'items' required some automated changes.\nLine 2: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 3: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Unsupported use_item action [ time_thiefs_gambit]; entry disabled.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 6: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 7: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\n\nThe import for 'opener_cleave_se' required some automated changes.\nLine 1: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 1: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 8: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 8: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 8: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 9: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 9: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 10: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 10: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 10: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 11: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 11: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 11: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 12: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 12: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 12: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 14: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 15: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 16: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 17: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 18: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 22: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 23: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 23: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 24: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 25: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 25: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 25: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 27: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 28: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 28: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 28: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 28: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 29: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 29: Converted 'talent.nightfall' to 'talent.nightfall.enabled' (1x).\nLine 29: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 29: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 30: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%trinket.t1.cooldown.duration=0)'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%trinket.t2.cooldown.duration=0)'.\nLine 8: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 8: Converted 'trinket.1.is.aberrant_spellforge' to 'trinket.t1.is.aberrant_spellforge' (1x).\nLine 9: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 9: Converted 'trinket.2.is.aberrant_spellforge' to 'trinket.t2.is.aberrant_spellforge' (1x).\nLine 10: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 11: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 12: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 13: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 14: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 16: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 4: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 4: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 9: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 9: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 9: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 12: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 12: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 13: Converted 'talent.seed_of_corruption' to 'talent.seed_of_corruption.enabled' (1x).\nLine 14: Converted 'talent.seed_of_corruption' to 'talent.seed_of_corruption.enabled' (1x).\nLine 16: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 17: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 18: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 18: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 19: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 20: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 21: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 22: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 22: Converted 'talent.nightfall' to 'talent.nightfall.enabled' (1x).\nLine 23: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 23: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 24: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 24: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 24: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 25: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\n\nThe import for 'end_of_fight' required some automated changes.\nLine 1: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 3: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 3: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'cleave_se_maintenance' required some automated changes.\nLine 1: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 1: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 1: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 1: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 2: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 2: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\n\nImported 11 action lists.\n",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! equipped.neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "neural_synapse_enhancer",
|
|
["criteria"] = "( prev_gcd.1.soul_rot || boss & fight_remains <= 15 ) & ! variable.trinket_1_buffs & ! variable.trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "neural_synapse_enhancer",
|
|
["criteria"] = "( prev_gcd.1.soul_rot || boss & fight_remains <= 15 || cooldown.soul_rot.remains >= 45 ) & trinket.t2.cooldown.remains & variable.trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "neural_synapse_enhancer",
|
|
["criteria"] = "( prev_gcd.1.soul_rot || boss & fight_remains <= 15 || cooldown.soul_rot.remains >= 45 ) & trinket.t1.cooldown.remains & variable.trinket_1_buffs",
|
|
},
|
|
},
|
|
["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",
|
|
},
|
|
},
|
|
["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 )",
|
|
["var_name"] = "trinket_1_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["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 )",
|
|
["var_name"] = "trinket_2_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["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 ) )",
|
|
["var_name"] = "trinket_priority",
|
|
["action"] = "variable",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["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,
|
|
},
|
|
},
|
|
["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,
|
|
["criteria"] = "talent.drain_soul.enabled & buff.nightfall.up & talent.shadow_embrace.enabled & ( debuff.shadow_embrace.stack < 4 || debuff.shadow_embrace.remains < 3 )",
|
|
["action"] = "drain_soul",
|
|
["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",
|
|
},
|
|
},
|
|
["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",
|
|
},
|
|
},
|
|
["opener_cleave_se"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "drain_soul",
|
|
["criteria"] = "talent.shadow_embrace.enabled & talent.drain_soul.enabled & buff.nightfall.up & ( debuff.shadow_embrace.stack < debuff.shadow_embrace.max_stack || debuff.shadow_embrace.remains < 3 ) & ( target.time_to_die > 15 || time < 20 )",
|
|
["interrupt_if"] = "debuff.shadow_embrace.stack=debuff.shadow_embrace.max_stack",
|
|
},
|
|
},
|
|
["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",
|
|
},
|
|
["Destruction"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250303,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-03-03: Sync with SimC",
|
|
["lists"] = {
|
|
["items"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["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 )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["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 )",
|
|
["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",
|
|
["criteria"] = "havoc_active",
|
|
["var_name"] = "havoc_immo_time",
|
|
},
|
|
{
|
|
["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 )",
|
|
["default"] = "1",
|
|
["var_name"] = "pooling_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.pooling_condition || pet.infernal.active & soul_shard >= 3",
|
|
["default"] = "1",
|
|
["var_name"] = "pooling_condition_cb",
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "immolate",
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wither",
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies <= 4 & ( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled )",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies <= 4 & havoc_remains <= gcd.max * 3",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cast_time < havoc_remains & ( ( ! talent.improved_chaos_bolt.enabled & active_enemies <= 2 ) || ( talent.improved_chaos_bolt.enabled & ( ( talent.wither.enabled & talent.inferno.enabled & active_enemies <= 2 ) || ( talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 4 ) || ( ! talent.wither.enabled & talent.inferno.enabled & active_enemies <= 3 ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 5 ) ) ) )",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 3",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time & soul_shard < 4.5",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.backdraft.enabled",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard < 4.7 & ( charges > 2 || boss & fight_remains < cooldown.dimensional_rift.duration )",
|
|
["action"] = "dimensional_rift",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cast_time < havoc_remains",
|
|
["action"] = "incinerate",
|
|
},
|
|
},
|
|
["cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "havoc_active & havoc_remains > gcd.max",
|
|
["list_name"] = "havoc",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.havoc.remains <= 5 || talent.mayhem.enabled",
|
|
["var_name"] = "pool_soul_shards",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled )",
|
|
["action"] = "malevolence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "havoc",
|
|
["criteria"] = "( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled ) & target.time_to_die > 8",
|
|
["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,
|
|
["action"] = "wither",
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wither",
|
|
["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",
|
|
["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,
|
|
["action"] = "immolate",
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "summon_infernal",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.diabolic_ritual.enabled & ( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains - 2 - ! variable.disable_cb_2t * action.chaos_bolt.cast_time - variable.disable_cb_2t * gcd.max ) <= 0 )",
|
|
["action"] = "incinerate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.pooling_condition & ! talent.wither.enabled & buff.rain_of_chaos.up",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.allow_rof_2t_spender >= 1 & ! talent.wither.enabled & talent.pyrogenics.enabled & debuff.pyrogenics.remains <= gcd.max & ( ! talent.rain_of_chaos.enabled || cooldown.summon_infernal.remains >= gcd.max * 3 ) & variable.pooling_condition",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.do_rof_2t & variable.pooling_condition & ( cooldown.summon_infernal.remains >= gcd.max * 3 || ! talent.rain_of_chaos.enabled )",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard <= 4 & talent.mayhem.enabled",
|
|
["action"] = "soul_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.disable_cb_2t & variable.pooling_condition_cb & ( cooldown.summon_infernal.remains >= gcd.max * 3 || soul_shard > 4 || ! talent.rain_of_chaos.enabled )",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["action"] = "dimensional_rift",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "infernal_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time_to_max_charges < 2 * gcd.max || boss & fight_remains < gcd.max * charges",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["action"] = "incinerate",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_infernal.remains >= 55 & soul_shard < 4.7 & ( active_enemies <= 3 + active_dot.wither || time > 30 )",
|
|
["action"] = "malevolence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "demonic_art",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["sec"] = "( ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) )",
|
|
["action"] = "wait",
|
|
["criteria"] = "( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) < gcd.max * 0.25 ) & soul_shard > 2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) <= action.incinerate.cast_time & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) > gcd.max * 0.25 )",
|
|
["action"] = "incinerate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "havoc_active & havoc_remains > gcd.max & active_enemies < ( 5 + ! talent.wither.enabled ) & ( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled )",
|
|
["list_name"] = "havoc",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard < 4.7 & ( charges > 2 || boss & fight_remains < cooldown.dimensional_rift.duration )",
|
|
["action"] = "dimensional_rift",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.inferno.enabled & soul_shard >= ( 4.5 - 0.1 * ( active_dot.immolate + active_dot.wither ) ) || soul_shard >= ( 3.5 - 0.1 * ( active_dot.immolate + active_dot.wither ) ) || buff.ritual_of_ruin.up",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wither",
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time & talent.raging_demonfire.enabled",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( buff.malevolence.up & ( ( talent.cataclysm.enabled & active_enemies <= 10 ) || ( talent.inferno.enabled & active_enemies <= 6 ) ) ) || ( talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 6 ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 4 ) || active_enemies <= 3 ) & ( ( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled ) || fight_remains <= 8 )",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadowburn",
|
|
["criteria"] = "( ( buff.malevolence.up & ( ( talent.cataclysm.enabled & active_enemies <= 10 ) || ( talent.inferno.enabled & active_enemies <= 6 ) ) ) || ( talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 6 ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 4 ) || active_enemies <= 3 ) & ( ( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled ) & time_to_die < 5 || boss & fight_remains <= 8 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "ruination",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.infernal.active & talent.rain_of_chaos.enabled",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "soul_fire",
|
|
["criteria"] = "( buff.decimation.up ) & ! talent.raging_demonfire.enabled & havoc_active",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "soul_fire",
|
|
["criteria"] = "buff.decimation.up & active_dot.immolate <= 4",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard < 2.5",
|
|
["action"] = "infernal_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( soul_shard > 3.5 - ( 0.1 * active_enemies ) & ! talent.rain_of_fire.enabled ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 3 )",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > 15 || talent.wither.enabled",
|
|
["action"] = "cataclysm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "havoc",
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wither",
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "immolate",
|
|
["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",
|
|
["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,
|
|
["action"] = "immolate",
|
|
["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 ) )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "immolate",
|
|
["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 ) )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "dimensional_rift",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "soul_fire",
|
|
["criteria"] = "buff.decimation.up",
|
|
["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",
|
|
["description"] = "Automatic Logic for Buff Trinkets in Trinket Slot 1",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff",
|
|
["description"] = "Automatic Logic for Buff Trinkets in Trinket Slot 2",
|
|
["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.summon_infernal.duration = 0 || cooldown.summon_infernal.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.summon_infernal.duration = 0 || cooldown.summon_infernal.duration % trinket.t2.cooldown.duration = 0 )",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.spymasters_web",
|
|
["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",
|
|
["description"] = "Sets a specific Trinkets in Slot 1 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.whispering_incarnate_icon",
|
|
["description"] = "Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic",
|
|
["var_name"] = "trinket_1_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.whispering_incarnate_icon",
|
|
["description"] = "For On Use Trinkets on slot 2 with on use effects you dont want to use in combat",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.buff_duration",
|
|
["description"] = "Sets the duration of the trinket in the automatic logic",
|
|
["var_name"] = "trinket_1_buff_duration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.buff_duration",
|
|
["description"] = "Sets the duration of the trinket in the automatic logic",
|
|
["var_name"] = "trinket_2_buff_duration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Automatic Logic in case both Trinkets are on use buffs",
|
|
["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 ) )",
|
|
["var_name"] = "trinket_priority",
|
|
["action"] = "variable",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "[Hekili] Don't use without Immolate/Wither active.",
|
|
["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["action"] = "dimensional_rift",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "infernal_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time_to_max_charges < 2 * gcd.max || boss & fight_remains < gcd.max * charges",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["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"] = 20250303,
|
|
["warnings"] = "The import for 'items' required some automated changes.\nLine 2: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 3: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\n\nThe import for 'variables' required some automated changes.\nLine 2: Converted 'talent.secrets_of_the_coven' to 'talent.secrets_of_the_coven.enabled' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted operations in '((floor((fight_remains%trinket.t1.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(floor((fight_remains%trinket.t1.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)%trinket.t1.cooldown.duration)+1))||((floor((fight_remains%trinket.t1.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%%trinket.t1.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_1_buff_duration)>0)))&cooldown.summon_infernal.remains>20' to '((floor((fight_remains/trinket.t1.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(floor((fight_remains/trinket.t1.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)/trinket.t1.cooldown.duration)+1))||((floor((fight_remains/trinket.t1.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%trinket.t1.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_1_buff_duration)>0)))&cooldown.summon_infernal.remains>20'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted operations in '((floor((fight_remains%trinket.t2.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(floor((fight_remains%trinket.t2.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)%trinket.t2.cooldown.duration)+1))||((floor((fight_remains%trinket.t2.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%%trinket.t2.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_2_buff_duration)>0)))&cooldown.summon_infernal.remains>20' to '((floor((fight_remains/trinket.t2.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(floor((fight_remains/trinket.t2.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)/trinket.t2.cooldown.duration)+1))||((floor((fight_remains/trinket.t2.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%trinket.t2.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_2_buff_duration)>0)))&cooldown.summon_infernal.remains>20'.\n\nThe import for 'default' required some automated changes.\nLine 11: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 11: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 12: Converted 'talent.roaring_blaze' to 'talent.roaring_blaze.enabled' (1x).\nLine 13: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 13: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 13: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 13: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 15: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 16: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 17: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 17: Converted 'talent.shadowburn' to 'talent.shadowburn.enabled' (1x).\nLine 18: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 18: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 19: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 19: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 20: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 20: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 20: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 21: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 21: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 21: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 21: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 21: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 23: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 24: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%trinket.t1.cooldown.duration=0)'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%trinket.t2.cooldown.duration=0)'.\nLine 8: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 9: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 10: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 11: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 14: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 16: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 16: Converted 'talent.improved_chaos_bolt' to 'talent.improved_chaos_bolt.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 5: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 7: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 8: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 9: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 10: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 10: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 10: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 10: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 10: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 10: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 10: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 10: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 10: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 10: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 11: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 11: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 11: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 11: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 11: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 11: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 11: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 13: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 14: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 17: Converted 'talent.rain_of_fire' to 'talent.rain_of_fire.enabled' (1x).\nLine 17: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 17: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 18: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 19: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 19: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 19: Converted 'talent.malevolence' to 'talent.malevolence.enabled' (1x).\nLine 20: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 21: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 21: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 21: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 24: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 26: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 26: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 27: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 27: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 31: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\n\nThe import for 'cleave' required some automated changes.\nLine 2: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 3: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 7: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 7: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 8: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 8: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 10: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 10: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 10: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 10: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 12: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 13: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 14: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 15: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 15: Converted 'talent.shadowburn' to 'talent.shadowburn.enabled' (1x).\nLine 17: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 17: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 18: Converted 'talent.roaring_blaze' to 'talent.roaring_blaze.enabled' (1x).\nLine 19: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 19: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 19: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 21: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 22: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 23: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 23: Converted 'talent.pyrogenics' to 'talent.pyrogenics.enabled' (1x).\nLine 23: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 24: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 25: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 26: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\n\nThe import for 'havoc' required some automated changes.\nLine 1: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\nLine 3: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 6: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 6: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 6: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 6: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 8: Converted 'talent.improved_chaos_bolt' to 'talent.improved_chaos_bolt.enabled' (1x).\nLine 8: Converted 'talent.improved_chaos_bolt' to 'talent.improved_chaos_bolt.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\n\nThe import for 'ogcd' required some automated changes.\nLine 1: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 2: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 3: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\n\nImported 8 action lists.\n",
|
|
["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)\n# [Hekili] Don't use without Immolate/Wither active.\nactions+=/channel_demonfire,if=dot.immolate.remains+dot.wither.remains>cast_time\nactions+=/dimensional_rift\nactions+=/infernal_bolt\nactions+=/conflagrate,if=time_to_max_charges<2*gcd.max||boss&fight_remains<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+!talent.wither)&(!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&active_enemies<=10)||(talent.inferno&active_enemies<=6)))||(talent.wither&talent.cataclysm&active_enemies<=6)||(!talent.wither&talent.cataclysm&active_enemies<=4)||active_enemies<=3)&((cooldown.shadowburn.full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)||fight_remains<=8)\nactions.aoe+=/shadowburn,cycle_targets=1,if=((buff.malevolence.up&((talent.cataclysm&active_enemies<=10)||(talent.inferno&active_enemies<=6)))||(talent.wither&talent.cataclysm&active_enemies<=6)||(!talent.wither&talent.cataclysm&active_enemies<=4)||active_enemies<=3)&((cooldown.shadowburn.full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)&time_to_die<5||boss&fight_remains<=8)\nactions.aoe+=/ruination\nactions.aoe+=/rain_of_fire,if=pet.infernal.active&talent.rain_of_chaos\nactions.aoe+=/soul_fire,cycle_targets=1,if=(buff.decimation.up)&!talent.raging_demonfire&havoc_active\nactions.aoe+=/soul_fire,cycle_targets=1,if=buff.decimation.up&active_dot.immolate<=4\nactions.aoe+=/infernal_bolt,if=soul_shard<2.5\nactions.aoe+=/chaos_bolt,if=(soul_shard>3.5-(0.1*active_enemies)&!talent.rain_of_fire)||(!talent.wither&talent.cataclysm&active_enemies<=3)\nactions.aoe+=/cataclysm,if=raid_event.adds.in>15||talent.wither\nactions.aoe+=/havoc,cycle_targets=1,if=(!cooldown.summon_infernal.up||!talent.summon_infernal||(talent.inferno&active_enemies>4))&target.time_to_die>8&(cooldown.malevolence.remains>15||!talent.malevolence)||time<5\nactions.aoe+=/wither,cycle_targets=1,if=dot.wither.refreshable&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.wither.remains)&(!talent.raging_demonfire||cooldown.channel_demonfire.remains>remains||time<5)&active_dot.wither<=cycle_enemies&target.time_to_die>18\nactions.aoe+=/immolate,cycle_targets=1,if=dot.immolate.refreshable&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.immolate.remains)&(!talent.raging_demonfire||cooldown.channel_demonfire.remains>remains||time<5)&(active_dot.immolate<=6&!(talent.diabolic_ritual&talent.inferno)||active_dot.immolate<=4)&target.time_to_die>18\nactions.aoe+=/call_action_list,name=ogcd\nactions.aoe+=/summon_infernal\nactions.aoe+=/rain_of_fire,if=debuff.pyrogenics.down&active_enemies<=4&!talent.diabolic_ritual\nactions.aoe+=/channel_demonfire,if=dot.immolate.remains+dot.wither.remains>cast_time\nactions.aoe+=/immolate,cycle_targets=1,if=dot.immolate.refreshable&((((!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.immolate.remains))||cycle_enemies>active_dot.immolate)&target.time_to_die>10&!havoc_active&!(talent.diabolic_ritual&talent.inferno))\nactions.aoe+=/immolate,cycle_targets=1,if=dot.immolate.refreshable&((variable.havoc_immo_time<5.4||(dot.immolate.remains<2&dot.immolate.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,if=dot.immolate.remains+dot.wither.remains>cast_time\nactions.cleave+=/dimensional_rift\nactions.cleave+=/infernal_bolt\nactions.cleave+=/conflagrate,if=time_to_max_charges<2*gcd.max||boss&fight_remains<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=active_enemies<=4&(cooldown.shadowburn.full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)\nactions.havoc+=/shadowburn,if=active_enemies<=4&havoc_remains<=gcd.max*3\nactions.havoc+=/chaos_bolt,if=cast_time<havoc_remains&((!talent.improved_chaos_bolt&active_enemies<=2)||(talent.improved_chaos_bolt&((talent.wither&talent.inferno&active_enemies<=2)||(talent.wither&talent.cataclysm&active_enemies<=4)||(!talent.wither&talent.inferno&active_enemies<=3)||(!talent.wither&talent.cataclysm&active_enemies<=5))))\nactions.havoc+=/rain_of_fire,if=active_enemies>=3\nactions.havoc+=/channel_demonfire,if=dot.immolate.remains+dot.wither.remains>cast_time&soul_shard<4.5\nactions.havoc+=/conflagrate,if=!talent.backdraft\nactions.havoc+=/dimensional_rift,if=soul_shard<4.7&(charges>2||boss&fight_remains<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",
|
|
},
|
|
},
|
|
["iconStore"] = {
|
|
["minimapPos"] = 293.8839842844971,
|
|
},
|
|
},
|
|
["Default"] = {
|
|
["displays"] = {
|
|
["Interrupts"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = -55.00000381469727,
|
|
},
|
|
["Cooldowns"] = {
|
|
["rel"] = "CENTER",
|
|
["y"] = -280.0000305175781,
|
|
},
|
|
["Primary"] = {
|
|
["rel"] = "CENTER",
|
|
["y"] = -114.6553344726563,
|
|
["x"] = -53,
|
|
},
|
|
["AOE"] = {
|
|
["rel"] = "CENTER",
|
|
["y"] = -113.9077987670898,
|
|
["x"] = -53,
|
|
},
|
|
["Defensives"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = -110.0000076293945,
|
|
},
|
|
},
|
|
["runOnce"] = {
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_70"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_65"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_252"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_71"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_264"] = true,
|
|
["resetAllPotions_20201209"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_102"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_269"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_259"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_250"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_270"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["removeOldThrottles_20241115"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_66"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_72"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_261"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_1473"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_581"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_253"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_1467"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_103"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["enabledArcaneMageOnce_20190309"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_105"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_254"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_63"] = true,
|
|
["forceEnableEnhancedRecheckBoomkin_20210712"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_265"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_267"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_577"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["resetGlobalCooldownSync_20210403"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_268"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_266"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_255"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_251"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_258"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_256"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_257"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_1468"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_260"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_263"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_104"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_64"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_62"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_262"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_73"] = true,
|
|
},
|
|
["specs"] = {
|
|
[62] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["cancel_pom"] = false,
|
|
["check_explosion_range"] = true,
|
|
},
|
|
},
|
|
[1467] = {
|
|
["settings"] = {
|
|
["use_early_chain"] = true,
|
|
["use_clipping"] = false,
|
|
["fire_breath_fixed"] = 0,
|
|
["use_unravel"] = false,
|
|
["use_deep_breath"] = true,
|
|
["dragonrage_pad"] = 0.5,
|
|
["use_verdant_embrace"] = false,
|
|
},
|
|
},
|
|
[63] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["prevent_hardcasts"] = false,
|
|
["check_explosion_range"] = true,
|
|
["pyroblast_pull"] = false,
|
|
},
|
|
},
|
|
[250] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["rt_damage"] = 30,
|
|
["save_blood_shield"] = true,
|
|
["dnd_while_moving"] = true,
|
|
["vb_damage"] = 50,
|
|
["ibf_damage"] = 40,
|
|
["death_strike_pool_amount"] = 65,
|
|
},
|
|
},
|
|
[251] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["dnd_while_moving"] = true,
|
|
["bos_rp"] = 50,
|
|
["ams_usage"] = "damage",
|
|
},
|
|
},
|
|
[252] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["dnd_while_moving"] = true,
|
|
["dps_shell"] = false,
|
|
},
|
|
},
|
|
[1468] = {
|
|
["settings"] = {
|
|
["fire_breath_fixed"] = 0,
|
|
["use_unravel"] = false,
|
|
["use_deep_breath"] = true,
|
|
["spend_essence"] = false,
|
|
},
|
|
},
|
|
[253] = {
|
|
["settings"] = {
|
|
["check_pet_range"] = false,
|
|
["barbed_shot_opener"] = true,
|
|
["mark_any"] = false,
|
|
["pet_healing"] = 0,
|
|
["barbed_shot_grace_period"] = 0.5,
|
|
["avoid_bw_overlap"] = false,
|
|
},
|
|
},
|
|
[254] = {
|
|
["settings"] = {
|
|
["prevent_hardcasts"] = false,
|
|
["trueshot_rapid_fire"] = true,
|
|
["mark_any"] = false,
|
|
["pet_healing"] = 0,
|
|
["lunar_toggle"] = "none",
|
|
},
|
|
},
|
|
[255] = {
|
|
["settings"] = {
|
|
["allow_focus_overcap"] = false,
|
|
["mark_any"] = false,
|
|
["use_harpoon"] = true,
|
|
["pet_healing"] = 0,
|
|
["lunar_toggle"] = "none",
|
|
["manual_kill_shot"] = false,
|
|
},
|
|
},
|
|
[66] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["bosp_filter"] = false,
|
|
["wog_health"] = 40,
|
|
["loh_health"] = 30,
|
|
["ds_damage"] = 60,
|
|
["sentinel_def"] = false,
|
|
["goak_damage"] = 40,
|
|
["ad_damage"] = 40,
|
|
},
|
|
},
|
|
[257] = {
|
|
["settings"] = {
|
|
["sw_death_protection"] = 50,
|
|
},
|
|
},
|
|
[258] = {
|
|
["settings"] = {
|
|
["pad_void_bolt"] = true,
|
|
["sw_death_protection"] = 50,
|
|
["pad_ascended_blast"] = true,
|
|
},
|
|
},
|
|
[259] = {
|
|
["settings"] = {
|
|
["vanish_charges_reserved"] = 0,
|
|
["envenom_pool_pct"] = 50,
|
|
["dot_threshold"] = 7,
|
|
["mfd_points"] = 3,
|
|
["fok_critical_cp_prediction"] = "predict",
|
|
["solo_vanish"] = true,
|
|
["priority_rotation"] = false,
|
|
["max_garrote_spread"] = 10,
|
|
["cooldowns_ttd"] = 0,
|
|
},
|
|
},
|
|
[260] = {
|
|
["settings"] = {
|
|
["vanish_charges_reserved"] = 0,
|
|
["crackshot_lock"] = false,
|
|
["stealth_padding"] = 0.1,
|
|
["use_ld_opener"] = false,
|
|
["check_blade_rush_range"] = true,
|
|
["solo_vanish"] = true,
|
|
["allow_shadowmeld"] = false,
|
|
["never_roll_in_window"] = false,
|
|
["sinister_clash"] = -0.5,
|
|
},
|
|
},
|
|
[261] = {
|
|
["settings"] = {
|
|
["rupture_duration"] = 12,
|
|
["mfd_points"] = 3,
|
|
["solo_vanish"] = true,
|
|
["priority_rotation"] = false,
|
|
["vanish_charges_reserved"] = 0,
|
|
},
|
|
},
|
|
[262] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["purge_icd"] = 12,
|
|
["hostile_dispel"] = false,
|
|
["stack_buffer"] = 1.1,
|
|
["funnel_damage"] = false,
|
|
},
|
|
},
|
|
[581] = {
|
|
["settings"] = {
|
|
["frailty_stacks"] = 2,
|
|
["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,
|
|
},
|
|
},
|
|
[1473] = {
|
|
["settings"] = {
|
|
["use_early_chain"] = false,
|
|
["use_clipping"] = false,
|
|
["fire_breath_fixed"] = 0,
|
|
["manage_source_of_magic"] = false,
|
|
["use_verdant_embrace"] = false,
|
|
["manage_attunement"] = false,
|
|
["use_unravel"] = false,
|
|
["use_deep_breath"] = true,
|
|
["upheaval_rank_1"] = true,
|
|
["skip_boe"] = false,
|
|
},
|
|
},
|
|
[267] = {
|
|
["settings"] = {
|
|
["default_pet"] = "summon_sayaad",
|
|
["low_ttd_dot"] = 11,
|
|
["cleave_apl"] = false,
|
|
["cataclysm_ttd"] = 11,
|
|
},
|
|
},
|
|
[268] = {
|
|
["settings"] = {
|
|
["vivify_percent"] = 65,
|
|
["max_damage"] = true,
|
|
["purify_stagger_maxhp"] = 6,
|
|
["purify_for_celestial"] = true,
|
|
["purify_for_niuzao"] = true,
|
|
["bof_percent"] = 50,
|
|
["eh_percent"] = 65,
|
|
["purify_stagger_currhp"] = 12,
|
|
},
|
|
},
|
|
[269] = {
|
|
["settings"] = {
|
|
["use_diffuse"] = false,
|
|
["check_sck_range"] = false,
|
|
["cjl_capacitor_toggle"] = "none",
|
|
["dynamic_strike_of_the_windlord"] = false,
|
|
["allow_fsk"] = false,
|
|
["tok_damage"] = 1,
|
|
["check_wdp_range"] = false,
|
|
["sef_one_charge"] = false,
|
|
},
|
|
},
|
|
[270] = {
|
|
["settings"] = {
|
|
["aoe_rsk"] = false,
|
|
["single_zen_pulse"] = false,
|
|
["save_faeline"] = false,
|
|
},
|
|
},
|
|
[70] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["sov_damage"] = 20,
|
|
["check_wake_range"] = false,
|
|
["desync_toll"] = false,
|
|
},
|
|
},
|
|
[102] = {
|
|
["settings"] = {
|
|
["vigil_damage"] = 50,
|
|
["starlord_cancel"] = false,
|
|
},
|
|
["enhancedRecheck"] = true,
|
|
},
|
|
[71] = {
|
|
["settings"] = {
|
|
["shockwave_interrupt"] = true,
|
|
["spell_reflection_filter"] = true,
|
|
["heroic_charge"] = false,
|
|
},
|
|
},
|
|
[103] = {
|
|
["settings"] = {
|
|
["regrowth"] = true,
|
|
["frenzy_cp"] = 2,
|
|
["zerk_biteweave"] = false,
|
|
["allow_crit_prediction"] = true,
|
|
["vigil_damage"] = 50,
|
|
["solo_prowl"] = false,
|
|
["use_funnel"] = false,
|
|
["lazy_swipe"] = false,
|
|
["rip_duration"] = 9,
|
|
},
|
|
},
|
|
[72] = {
|
|
["settings"] = {
|
|
["check_ww_range"] = false,
|
|
["charge_min_range"] = 10,
|
|
["t30_bloodthirst_crit"] = 95,
|
|
["shockwave_interrupt"] = true,
|
|
["spell_reflection_filter"] = true,
|
|
["heroic_charge"] = false,
|
|
},
|
|
},
|
|
[104] = {
|
|
["settings"] = {
|
|
["vigil_damage"] = 50,
|
|
["catweave_bear"] = false,
|
|
["maul_anyway"] = true,
|
|
["ironfur_damage_threshold"] = 5,
|
|
["maul_rage"] = 20,
|
|
["max_ironfur"] = 1,
|
|
},
|
|
},
|
|
[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,
|
|
["last_stand_offensively"] = false,
|
|
["shield_wall_amount"] = 50,
|
|
["last_stand_condition"] = false,
|
|
["spell_block_health"] = 75,
|
|
["shield_wall_condition"] = false,
|
|
["shield_wall_health"] = 50,
|
|
["reserve_rage"] = 35,
|
|
["rallying_cry_condition"] = false,
|
|
["victory_rush_health"] = 75,
|
|
["shockwave_interrupt"] = true,
|
|
["last_stand_health"] = 50,
|
|
["rallying_cry_amount"] = 50,
|
|
["overlap_ignore_pain"] = false,
|
|
},
|
|
},
|
|
[105] = {
|
|
["settings"] = {
|
|
["healing_mode"] = false,
|
|
},
|
|
},
|
|
[263] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["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,
|
|
["project_windfury"] = 0,
|
|
},
|
|
},
|
|
[64] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["check_explosion_range"] = true,
|
|
["check_cone_range"] = true,
|
|
["manual_water_jet"] = false,
|
|
["limit_ice_lance"] = false,
|
|
["prevent_hardcasts"] = false,
|
|
},
|
|
},
|
|
[256] = {
|
|
["settings"] = {
|
|
["sw_death_protection"] = 50,
|
|
},
|
|
},
|
|
[577] = {
|
|
["settings"] = {
|
|
["retreat_and_return"] = "off",
|
|
["retreat_filler"] = false,
|
|
["demon_blades_acknowledged"] = false,
|
|
["throw_glaive_charges"] = 0,
|
|
["fel_rush_charges"] = 0,
|
|
["fel_rush_filler"] = true,
|
|
},
|
|
},
|
|
},
|
|
["toggles"] = {
|
|
["mode"] = {
|
|
["value"] = "reactive",
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Windwalker"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewrwithin/profiles/PreRaids/PR_Monk_Windwalker.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250322,
|
|
["spec"] = 269,
|
|
["desc"] = "2025-03-14: SimC Sync\n\n2025-02-28: TWW Season 2 update\n\n2025-02-15: Clarity\n\n2024-12-06: SimC update\n\n2024-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"] = {
|
|
["fallback"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "spinning_crane_kick",
|
|
["description"] = "Fallback",
|
|
["criteria"] = "chi > 5 & combo_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & chi > 3",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & chi > 5",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
},
|
|
["default_cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "spinning_crane_kick",
|
|
["description"] = "2-4 targets",
|
|
["criteria"] = "buff.dance_of_chiji.stack = 2 & combo_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.pressure_point.up & active_enemies < 4 & cooldown.fists_of_fury.remains > 4 ) || ( cooldown.whirling_dragon_punch.remains < 2 & cooldown.fists_of_fury.remains > 1 & buff.dance_of_chiji.stack < 2 )",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.stack = 2 & active_enemies > 3",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.heart_of_the_jade_serpent_cdr.up & ! buff.heart_of_the_jade_serpent_cdr_celestial.up",
|
|
["action"] = "touch_of_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr.up & buff.dance_of_chiji.stack < 2",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dance_of_chiji.stack < 2",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr.up || buff.heart_of_the_jade_serpent_cdr_celestial.up",
|
|
["action"] = "slicing_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.up & cooldown.strike_of_the_windlord.remains & ( ! buff.heart_of_the_jade_serpent_cdr.up || debuff.gale_force.remains < 5 ) & ( talent.xuens_bond.enabled || ! talent.xuens_bond.enabled & buff.invokers_delight.up ) || boss & fight_remains < 15",
|
|
["action"] = "celestial_conduit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 & cooldown.fists_of_fury.remains & ( talent.glory_of_the_dawn.enabled || active_enemies < 3 )",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr_celestial.up",
|
|
["action"] = "fists_of_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr_celestial.up",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.gale_force.enabled & buff.invokers_delight.up & ( buff.bloodlust.up || ! buff.heart_of_the_jade_serpent_cdr_celestial.up )",
|
|
["action"] = "strike_of_the_windlord",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up & buff.bloodlust.up",
|
|
["action"] = "fists_of_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up & buff.bloodlust.up & active_enemies < 3",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.teachings_of_the_monastery.stack = 8 & ( active_enemies < 3 || talent.shadowboxing_treads.enabled )",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.revolving_whirl.enabled || talent.revolving_whirl.enabled & buff.dance_of_chiji.stack < 2 & active_enemies > 2 || active_enemies < 3",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time > 5 & ( cooldown.invoke_xuen_the_white_tiger.remains > 15 || talent.flurry_strikes.enabled ) & ( cooldown.fists_of_fury.remains < 2 || cooldown.celestial_conduit.remains < 10 )",
|
|
["action"] = "strike_of_the_windlord",
|
|
},
|
|
{
|
|
["action"] = "slicing_winds",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.the_emperors_capacitor.stack > 19 & combo_strike & talent.power_of_the_thunder_king.enabled & cooldown.invoke_xuen_the_white_tiger.remains > 10",
|
|
["action"] = "crackling_jade_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.stack = 2",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.flurry_strikes.enabled || talent.xuens_battlegear.enabled || ! talent.xuens_battlegear.enabled & ( cooldown.strike_of_the_windlord.remains > 1 || buff.heart_of_the_jade_serpent_cdr.up || buff.heart_of_the_jade_serpent_cdr_celestial.up ) ) & ( talent.flurry_strikes.enabled || talent.xuens_battlegear.enabled & ( cooldown.invoke_xuen_the_white_tiger.remains > 5 & boss || cooldown.invoke_xuen_the_white_tiger.remains > 9 ) || cooldown.invoke_xuen_the_white_tiger.remains > 10 )",
|
|
["action"] = "fists_of_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & active_enemies < 5 & buff.wisdom_of_the_wall_flurry.up",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.up & buff.chi_energy.stack > 29",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadowboxing_treads.enabled & talent.courageous_impulse.enabled & combo_strike & buff.bok_proc.stack = 2",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.teachings_of_the_monastery.stack = 4 & ! talent.knowledge_of_the_broken_temple.enabled & talent.shadowboxing_treads.enabled & active_enemies < 3",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.up",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadowboxing_treads.enabled & talent.courageous_impulse.enabled & combo_strike & buff.bok_proc.up",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & active_enemies < 5",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & chi.deficit >= 2 & ( ! buff.ordered_elements.up || energy.time_to_max <= gcd.max * 3 )",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains & buff.teachings_of_the_monastery.stack > 3 & cooldown.rising_sun_kick.remains",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.singularly_focused_jade.enabled || talent.jadefire_harmony.enabled",
|
|
["action"] = "jadefire_stomp",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & ! buff.ordered_elements.up & talent.crane_vortex.enabled & active_enemies > 2 & chi > 4",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.ordered_elements.up",
|
|
["action"] = "chi_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & ( buff.ordered_elements.up || buff.bok_proc.up & chi.deficit >= 1 & talent.energy_burst.enabled ) & cooldown.fists_of_fury.remains",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains & ( chi > 2 || energy > 60 || buff.bok_proc.up )",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "jadefire_stomp",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & chi.deficit >= 1",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["action"] = "chi_burst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & talent.hit_combo.enabled",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ordered_elements.up & ! talent.hit_combo.enabled & cooldown.fists_of_fury.remains",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! combo_strike & chi < 3 & ! cooldown.fists_of_fury.remains",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
},
|
|
["aoe_opener"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "aoe opener",
|
|
["action"] = "slicing_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["description"] = "Hekili: Modified to check Hit Combo since you will go pack-to-pack in dungeons (vs. single-encounter sims).",
|
|
["criteria"] = "chi < 6 & ( combo_strike || ! talent.hit_combo.enabled )",
|
|
},
|
|
},
|
|
["default_aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["description"] = ">=5 Targets",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.heart_of_the_jade_serpent_cdr.up & ! buff.heart_of_the_jade_serpent_cdr_celestial.up",
|
|
["action"] = "touch_of_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & ( ( buff.chi_energy.stack > 29 & cooldown.fists_of_fury.remains < 5 ) || ( buff.dance_of_chiji.stack = 2 ) )",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr.up & buff.dance_of_chiji.stack < 2",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dance_of_chiji.stack < 2",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr.up || buff.heart_of_the_jade_serpent_cdr_celestial.up",
|
|
["action"] = "slicing_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.up & cooldown.strike_of_the_windlord.remains & ( ! buff.heart_of_the_jade_serpent_cdr.up || debuff.gale_force.remains < 5 ) & ( talent.xuens_bond.enabled || ! talent.xuens_bond.enabled & buff.invokers_delight.up ) || boss & fight_remains < 15",
|
|
["action"] = "celestial_conduit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.whirling_dragon_punch.remains < 2 & cooldown.fists_of_fury.remains > 1 & buff.dance_of_chiji.stack < 2 || ! buff.storm_earth_and_fire.up & buff.pressure_point.up",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.revolving_whirl.enabled || talent.revolving_whirl.enabled & buff.dance_of_chiji.stack < 2 & active_enemies > 2",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.bok_proc.up & chi < 2 & talent.energy_burst.enabled & energy < 55",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( time > 5 || buff.invokers_delight.up & buff.storm_earth_and_fire.up ) & ( cooldown.invoke_xuen_the_white_tiger.remains > 15 || talent.flurry_strikes.enabled )",
|
|
["action"] = "strike_of_the_windlord",
|
|
},
|
|
{
|
|
["action"] = "slicing_winds",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.teachings_of_the_monastery.stack = 8 & talent.shadowboxing_treads.enabled",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.the_emperors_capacitor.stack > 19 & combo_strike & talent.power_of_the_thunder_king.enabled & cooldown.invoke_xuen_the_white_tiger.remains > 10",
|
|
["action"] = "crackling_jade_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.flurry_strikes.enabled || talent.xuens_battlegear.enabled & ( cooldown.invoke_xuen_the_white_tiger.remains > 5 & boss || cooldown.invoke_xuen_the_white_tiger.remains > 9 ) || cooldown.invoke_xuen_the_white_tiger.remains > 10 )",
|
|
["action"] = "fists_of_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & buff.wisdom_of_the_wall_flurry.up & chi < 6",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & chi > 5",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.up & buff.chi_energy.stack > 29 & cooldown.fists_of_fury.remains < 5",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.pressure_point.up & cooldown.fists_of_fury.remains > 2",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadowboxing_treads.enabled & talent.courageous_impulse.enabled & combo_strike & buff.bok_proc.stack = 2",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.dance_of_chiji.up",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & talent.crane_vortex.enabled & active_enemies > 2",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & buff.ordered_elements.up",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & chi.deficit >= 2 & ( ! buff.ordered_elements.up || energy.time_to_max <= gcd.max * 3 )",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.singularly_focused_jade.enabled || talent.jadefire_harmony.enabled",
|
|
["action"] = "jadefire_stomp",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & ! buff.ordered_elements.up & talent.crane_vortex.enabled & active_enemies > 2 & chi > 4",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & ! cooldown.fists_of_fury.remains & chi < 3",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadowboxing_treads.enabled & talent.courageous_impulse.enabled & combo_strike & buff.bok_proc.up",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & ( chi > 3 || energy > 55 )",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & ( buff.ordered_elements.up || buff.bok_proc.up & chi.deficit >= 1 & talent.energy_burst.enabled ) & cooldown.fists_of_fury.remains",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains & ( chi > 2 || energy > 60 || buff.bok_proc.up )",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "jadefire_stomp",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & chi.deficit >= 1",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["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",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ordered_elements.up & ! talent.hit_combo.enabled & cooldown.fists_of_fury.remains",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! combo_strike & chi < 3 & ! cooldown.fists_of_fury.remains",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "spear_hand_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Use Trinkets",
|
|
["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,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies > 1 & ( ! boss || chi.deficit = 0 || time > 7 || ! talent.celestial_conduit.enabled ) & active_enemies < 5",
|
|
["list_name"] = "default_cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies < 2",
|
|
["list_name"] = "default_st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "fallback",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "chi < chi.max & energy < 55",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.down",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.down",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.down",
|
|
["action"] = "haymaker",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.down",
|
|
["action"] = "rocket_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.down",
|
|
["action"] = "arcane_pulse",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "target.time_to_die > 6 & ( cooldown.rising_sun_kick.remains || active_enemies > 2 || ! talent.ordered_elements.enabled ) & ( prev.invoke_xuen_the_white_tiger || ( talent.celestial_conduit.enabled || ! talent.last_emperors_capacitor.enabled ) & buff.bloodlust.up & ( cooldown.strike_of_the_windlord.remains < 5 || ! talent.strike_of_the_windlord.enabled ) & talent.sequenced_strikes.enabled || buff.invokers_delight.remains > 15 || ( cooldown.strike_of_the_windlord.remains < 5 || ! talent.strike_of_the_windlord.enabled ) & cooldown.storm_earth_and_fire.full_recharge_time < cooldown.invoke_xuen_the_white_tiger.remains & cooldown.fists_of_fury.remains < 5 & ( ! talent.last_emperors_capacitor.enabled || talent.celestial_conduit.enabled ) || talent.last_emperors_capacitor.enabled & buff.the_emperors_capacitor.stack > 17 & cooldown.invoke_xuen_the_white_tiger.remains > cooldown.storm_earth_and_fire.full_recharge_time ) || boss & fight_remains < 30 || buff.invokers_delight.remains > 15 & ( cooldown.rising_sun_kick.remains || active_enemies > 2 || ! talent.ordered_elements.enabled ) || boss & buff.bloodlust.up & ( cooldown.rising_sun_kick.remains || active_enemies > 2 || ! talent.ordered_elements.enabled ) & talent.celestial_conduit.enabled & time > 10",
|
|
["var_name"] = "sef_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( active_enemies = 1 & ( time < 10 || talent.xuens_bond.enabled & talent.celestial_conduit.enabled ) || active_enemies > 1 ) & cooldown.storm_earth_and_fire.ready & ( target.time_to_die > 14 ) & ( 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",
|
|
["var_name"] = "xuen_condition",
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( target.time_to_die > 14 ) & ! cooldown.invoke_xuen_the_white_tiger.remains & ( chi < 5 & ! talent.ordered_elements.enabled || chi < 3 ) & ( combo_strike || ! talent.hit_combo.enabled )",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.xuen_condition",
|
|
["action"] = "invoke_xuen_the_white_tiger",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.sef_condition",
|
|
["action"] = "storm_earth_and_fire",
|
|
},
|
|
{
|
|
["action"] = "touch_of_karma",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.invoke_xuen_the_white_tiger.remains > 15 || ! talent.invoke_xuen_the_white_tiger.enabled & ( ! talent.storm_earth_and_fire.enabled & ( cooldown.strike_of_the_windlord.ready || ! talent.strike_of_the_windlord.enabled & cooldown.fists_of_fury.ready ) || buff.storm_earth_and_fire.remains > 10 ) || boss & fight_remains < 20",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.invoke_xuen_the_white_tiger.remains > 15 || ! talent.invoke_xuen_the_white_tiger.enabled & ( ! talent.storm_earth_and_fire.enabled & ( cooldown.strike_of_the_windlord.ready || ! talent.strike_of_the_windlord.enabled & cooldown.fists_of_fury.ready ) || buff.storm_earth_and_fire.remains > 10 ) || boss & fight_remains < 20",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.invoke_xuen_the_white_tiger.remains > 15 || ! talent.invoke_xuen_the_white_tiger.enabled & ( ! talent.storm_earth_and_fire.enabled & ( cooldown.strike_of_the_windlord.ready || ! talent.strike_of_the_windlord.enabled & cooldown.fists_of_fury.ready ) || buff.storm_earth_and_fire.remains > 10 ) || boss & fight_remains < 20",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.invoke_xuen_the_white_tiger.remains > 15 || ! talent.invoke_xuen_the_white_tiger.enabled & ( ! talent.storm_earth_and_fire.enabled & ( cooldown.strike_of_the_windlord.ready || ! talent.strike_of_the_windlord.enabled & cooldown.fists_of_fury.ready ) || buff.storm_earth_and_fire.remains > 10 ) || boss & fight_remains < 20",
|
|
["action"] = "berserking",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "algethar_puzzle_box",
|
|
["criteria"] = "( pet.xuen_the_white_tiger.active || ! talent.invoke_xuen_the_white_tiger.enabled ) & ! buff.storm_earth_and_fire.up || boss & fight_remains < 25",
|
|
["name"] = "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"] = "trinket2",
|
|
},
|
|
{
|
|
["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"] = "trinket2",
|
|
},
|
|
},
|
|
["normal_opener"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["description"] = "normal opener",
|
|
["criteria"] = "chi < 6 & ( combo_strike || ! talent.hit_combo.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ordered_elements.enabled",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
},
|
|
["default_st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fists_of_fury",
|
|
["description"] = "1 target",
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr_celestial.up || buff.heart_of_the_jade_serpent_cdr.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.pressure_point.up & ! buff.heart_of_the_jade_serpent_cdr.up & buff.heart_of_the_jade_serpent_cdr_celestial.up || buff.invokers_delight.up || buff.bloodlust.up || buff.pressure_point.up & cooldown.fists_of_fury.remains || buff.power_infusion.up",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.heart_of_the_jade_serpent_cdr_celestial.up & ! buff.dance_of_chiji.stack = 2",
|
|
["action"] = "whirling_dragon_punch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heart_of_the_jade_serpent_cdr.up || buff.heart_of_the_jade_serpent_cdr_celestial.up",
|
|
["action"] = "slicing_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_earth_and_fire.up & ( ! buff.heart_of_the_jade_serpent_cdr.up || debuff.gale_force.remains < 5 ) & 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,
|
|
["criteria"] = "buff.dance_of_chiji.stack = 2 & combo_strike",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tiger_palm",
|
|
["description"] = "[Hekili] This Tiger Palm entry specifically allows Hit Combo breakage if you don't have enough Chi for Fists of Fury.",
|
|
["criteria"] = "( talent.energy_burst.enabled & ! buff.bok_proc.up || ! talent.energy_burst.enabled ) & ! buff.ordered_elements.up & ! cooldown.fists_of_fury.remains & chi < 3",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( prev.strike_of_the_windlord || ! buff.heart_of_the_jade_serpent_cdr_celestial.up ) & combo_strike & chi.deficit >= 2 & ! buff.ordered_elements.up",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["action"] = "touch_of_death",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! pet.xuen_the_white_tiger.active & prev.tiger_palm & time < 5 || buff.storm_earth_and_fire.up & talent.ordered_elements.enabled",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.celestial_conduit.enabled & ! buff.invokers_delight.up & ! buff.heart_of_the_jade_serpent_cdr_celestial.up & cooldown.fists_of_fury.remains < 5 & cooldown.invoke_xuen_the_white_tiger.remains > 15 || boss & fight_remains < 12",
|
|
["action"] = "strike_of_the_windlord",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.gale_force.enabled & buff.invokers_delight.up & ( buff.bloodlust.up || ! buff.heart_of_the_jade_serpent_cdr_celestial.up )",
|
|
["action"] = "strike_of_the_windlord",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time > 5 & talent.flurry_strikes.enabled",
|
|
["action"] = "strike_of_the_windlord",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up & buff.bloodlust.up & time > 5",
|
|
["action"] = "fists_of_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.teachings_of_the_monastery.stack > 3 & buff.ordered_elements.up & cooldown.rising_sun_kick.remains > 1 & cooldown.fists_of_fury.remains > 2",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & buff.power_infusion.up & buff.bloodlust.up",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.teachings_of_the_monastery.stack > 4 & cooldown.rising_sun_kick.remains > 1 & cooldown.fists_of_fury.remains > 2",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["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"] = "buff.the_emperors_capacitor.stack > 19 & ! buff.heart_of_the_jade_serpent_cdr.up & ! buff.heart_of_the_jade_serpent_cdr_celestial.up & combo_strike & cooldown.invoke_xuen_the_white_tiger.remains > 10 || buff.the_emperors_capacitor.stack > 15 & ! buff.heart_of_the_jade_serpent_cdr.up & ! buff.heart_of_the_jade_serpent_cdr_celestial.up & combo_strike & ( boss || target.time_to_die > 20 ) & cooldown.invoke_xuen_the_white_tiger.remains < 10 & cooldown.invoke_xuen_the_white_tiger.remains > 2",
|
|
["action"] = "crackling_jade_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.time_to_die > 10",
|
|
["action"] = "slicing_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.xuens_battlegear.enabled || ! talent.xuens_battlegear.enabled & ( cooldown.strike_of_the_windlord.remains > 1 || buff.heart_of_the_jade_serpent_cdr.up || buff.heart_of_the_jade_serpent_cdr_celestial.up ) ) & ( talent.xuens_battlegear.enabled & cooldown.invoke_xuen_the_white_tiger.remains > 5 || cooldown.invoke_xuen_the_white_tiger.remains > 10 ) & ( ! buff.invokers_delight.up || buff.invokers_delight.up & cooldown.strike_of_the_windlord.remains > 4 & cooldown.celestial_conduit.remains ) || fight_remains < 5 || talent.flurry_strikes.enabled",
|
|
["action"] = "fists_of_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "chi > 4 || chi > 2 & energy > 50 || cooldown.fists_of_fury.remains > 2",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled & buff.wisdom_of_the_wall_flurry.up",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & talent.energy_burst.enabled & buff.bok_proc.up & chi < 5 & ( buff.heart_of_the_jade_serpent_cdr.up || buff.heart_of_the_jade_serpent_cdr_celestial.up )",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.bloodlust.up & buff.heart_of_the_jade_serpent_cdr.up & buff.dance_of_chiji.up",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & chi.deficit >= 2 & energy.time_to_max <= gcd.max * 3",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["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,
|
|
["criteria"] = "buff.dance_of_chiji.stack = 2 & combo_strike",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.courageous_impulse.enabled & combo_strike & buff.bok_proc.stack = 2",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & cooldown.rising_sun_kick.remains > 1 & cooldown.fists_of_fury.remains > 2",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["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,
|
|
["criteria"] = "combo_strike & energy.time_to_max <= gcd.max * 3 & talent.flurry_strikes.enabled",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["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,
|
|
["criteria"] = "combo_strike & ( buff.ordered_elements.up || buff.bok_proc.up & chi.deficit >= 1 & talent.energy_burst.enabled ) & cooldown.fists_of_fury.remains",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & cooldown.fists_of_fury.remains & ( chi > 2 || energy > 60 || buff.bok_proc.up )",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["action"] = "jadefire_stomp",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & chi.deficit >= 1",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
{
|
|
["action"] = "chi_burst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_strike & buff.ordered_elements.up & talent.hit_combo.enabled",
|
|
["action"] = "spinning_crane_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ordered_elements.up & ! talent.hit_combo.enabled & cooldown.fists_of_fury.remains",
|
|
["action"] = "blackout_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev.tiger_palm & chi < 3 & ! cooldown.fists_of_fury.remains",
|
|
["action"] = "tiger_palm",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250322,
|
|
["warnings"] = "The import for 'default_cleave' required some automated changes.\nLine 4: Converted 'talent.inner_peace' to 'talent.inner_peace.enabled' (1x).\nLine 4: Converted 'talent.inner_peace' to 'talent.inner_peace.enabled' (1x).\nLine 4: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 4: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 4: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 4: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 9: Converted 'talent.xuens_bond' to 'talent.xuens_bond.enabled' (1x).\nLine 9: Converted 'talent.xuens_bond' to 'talent.xuens_bond.enabled' (1x).\nLine 10: Converted 'talent.glory_of_the_dawn' to 'talent.glory_of_the_dawn.enabled' (1x).\nLine 13: Converted 'talent.gale_force' to 'talent.gale_force.enabled' (1x).\nLine 16: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 17: Converted 'talent.revolving_whirl' to 'talent.revolving_whirl.enabled' (1x).\nLine 17: Converted 'talent.revolving_whirl' to 'talent.revolving_whirl.enabled' (1x).\nLine 18: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 20: Converted 'talent.power_of_the_thunder_king' to 'talent.power_of_the_thunder_king.enabled' (1x).\nLine 22: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 23: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 23: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\nLine 23: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\nLine 23: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 23: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\nLine 24: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 26: Converted 'talent.glory_of_the_dawn' to 'talent.glory_of_the_dawn.enabled' (1x).\nLine 26: Converted 'talent.glory_of_the_dawn' to 'talent.glory_of_the_dawn.enabled' (1x).\nLine 26: Converted 'talent.glory_of_the_dawn' to 'talent.glory_of_the_dawn.enabled' (1x).\nLine 27: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 27: Converted 'talent.courageous_impulse' to 'talent.courageous_impulse.enabled' (1x).\nLine 28: Converted 'talent.knowledge_of_the_broken_temple' to 'talent.knowledge_of_the_broken_temple.enabled' (1x).\nLine 28: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 30: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 30: Converted 'talent.courageous_impulse' to 'talent.courageous_impulse.enabled' (1x).\nLine 31: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 34: Converted 'talent.singularly_focused_jade' to 'talent.singularly_focused_jade.enabled' (1x).\nLine 34: Converted 'talent.jadefire_harmony' to 'talent.jadefire_harmony.enabled' (1x).\nLine 35: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 36: Converted 'talent.crane_vortex' to 'talent.crane_vortex.enabled' (1x).\nLine 38: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 43: Converted 'talent.hit_combo' to 'talent.hit_combo.enabled' (1x).\nLine 44: Converted 'talent.hit_combo' to 'talent.hit_combo.enabled' (1x).\n\nThe import for 'aoe_opener' required some automated changes.\nLine 2: 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\nThe import for 'default' required some automated changes.\nLine 2: Converted 'talent.invoke_xuen' to 'talent.invoke_xuen.enabled' (1x).\nLine 6: Converted 'talent.storm_earth_and_fire' to 'talent.storm_earth_and_fire.enabled' (1x).\nLine 8: Converted 'talent.celestial_conduit' to 'talent.celestial_conduit.enabled' (1x).\nLine 15: Unsupported action 'rocket_barrage'.\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 7: Converted 'talent.xuens_bond' to 'talent.xuens_bond.enabled' (1x).\nLine 7: Converted 'talent.xuens_bond' to 'talent.xuens_bond.enabled' (1x).\nLine 9: Converted 'talent.revolving_whirl' to 'talent.revolving_whirl.enabled' (1x).\nLine 9: Converted 'talent.revolving_whirl' to 'talent.revolving_whirl.enabled' (1x).\nLine 10: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 11: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 13: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 14: Converted 'talent.power_of_the_thunder_king' to 'talent.power_of_the_thunder_king.enabled' (1x).\nLine 15: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 15: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\nLine 16: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 20: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 20: Converted 'talent.courageous_impulse' to 'talent.courageous_impulse.enabled' (1x).\nLine 22: Converted 'talent.crane_vortex' to 'talent.crane_vortex.enabled' (1x).\nLine 23: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 25: Converted 'talent.singularly_focused_jade' to 'talent.singularly_focused_jade.enabled' (1x).\nLine 25: Converted 'talent.jadefire_harmony' to 'talent.jadefire_harmony.enabled' (1x).\nLine 26: Converted 'talent.crane_vortex' to 'talent.crane_vortex.enabled' (1x).\nLine 27: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 29: Converted 'talent.shadowboxing_treads' to 'talent.shadowboxing_treads.enabled' (1x).\nLine 29: Converted 'talent.courageous_impulse' to 'talent.courageous_impulse.enabled' (1x).\nLine 31: 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 '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 5: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 5: Converted 'talent.storm_earth_and_fire' to 'talent.storm_earth_and_fire.enabled' (1x).\nLine 5: Converted 'talent.strike_of_the_windlord' to 'talent.strike_of_the_windlord.enabled' (1x).\nLine 6: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 6: Converted 'talent.storm_earth_and_fire' to 'talent.storm_earth_and_fire.enabled' (1x).\nLine 6: Converted 'talent.strike_of_the_windlord' to 'talent.strike_of_the_windlord.enabled' (1x).\nLine 7: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 7: Converted 'talent.storm_earth_and_fire' to 'talent.storm_earth_and_fire.enabled' (1x).\nLine 7: Converted 'talent.strike_of_the_windlord' to 'talent.strike_of_the_windlord.enabled' (1x).\nLine 8: Converted 'talent.invoke_xuen_the_white_tiger' to 'talent.invoke_xuen_the_white_tiger.enabled' (1x).\nLine 8: Converted 'talent.storm_earth_and_fire' to 'talent.storm_earth_and_fire.enabled' (1x).\nLine 8: Converted 'talent.strike_of_the_windlord' to 'talent.strike_of_the_windlord.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_st' required some automated changes.\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 7: Converted 'talent.inner_peace' to 'talent.inner_peace.enabled' (1x).\nLine 7: Converted 'talent.inner_peace' to 'talent.inner_peace.enabled' (1x).\nLine 7: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 7: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 8: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 8: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 11: Converted 'talent.ordered_elements' to 'talent.ordered_elements.enabled' (1x).\nLine 12: Converted 'talent.celestial_conduit' to 'talent.celestial_conduit.enabled' (1x).\nLine 13: Converted 'talent.gale_force' to 'talent.gale_force.enabled' (1x).\nLine 14: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 17: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 19: Converted 'talent.knowledge_of_the_broken_temple' to 'talent.knowledge_of_the_broken_temple.enabled' (1x).\nLine 22: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\nLine 22: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\nLine 22: Converted 'talent.xuens_battlegear' to 'talent.xuens_battlegear.enabled' (1x).\nLine 22: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 24: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 25: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 28: Converted 'talent.memory_of_the_monastery' to 'talent.memory_of_the_monastery.enabled' (1x).\nLine 32: Converted 'talent.courageous_impulse' to 'talent.courageous_impulse.enabled' (1x).\nLine 34: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 35: Converted 'talent.sequenced_strikes' to 'talent.sequenced_strikes.enabled' (1x).\nLine 35: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 35: Converted 'talent.sequenced_strikes' to 'talent.sequenced_strikes.enabled' (1x).\nLine 35: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 36: Converted 'talent.flurry_strikes' to 'talent.flurry_strikes.enabled' (1x).\nLine 37: Converted 'talent.singularly_focused_jade' to 'talent.singularly_focused_jade.enabled' (1x).\nLine 37: Converted 'talent.jadefire_harmony' to 'talent.jadefire_harmony.enabled' (1x).\nLine 39: Converted 'talent.energy_burst' to 'talent.energy_burst.enabled' (1x).\nLine 44: Converted 'talent.hit_combo' to 'talent.hit_combo.enabled' (1x).\nLine 45: Converted 'talent.hit_combo' to 'talent.hit_combo.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 2: Converted 'talent.ordered_elements' to 'talent.ordered_elements.enabled' (1x).\nLine 2: Converted 'talent.celestial_conduit' to 'talent.celestial_conduit.enabled' (1x).\nLine 2: Converted 'talent.last_emperors_capacitor' to 'talent.last_emperors_capacitor.enabled' (1x).\nLine 2: Converted 'talent.strike_of_the_windlord' to 'talent.strike_of_the_windlord.enabled' (1x).\nLine 2: Converted 'talent.sequenced_strikes' to 'talent.sequenced_strikes.enabled' (1x).\nLine 2: Converted 'talent.strike_of_the_windlord' to 'talent.strike_of_the_windlord.enabled' (1x).\nLine 2: Converted 'talent.last_emperors_capacitor' to 'talent.last_emperors_capacitor.enabled' (1x).\nLine 2: Converted 'talent.celestial_conduit' to 'talent.celestial_conduit.enabled' (1x).\nLine 2: Converted 'talent.last_emperors_capacitor' to 'talent.last_emperors_capacitor.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.celestial_conduit' to 'talent.celestial_conduit.enabled' (1x).\nLine 3: Converted 'talent.xuens_bond' to 'talent.xuens_bond.enabled' (1x).\nLine 3: Converted 'talent.celestial_conduit' to 'talent.celestial_conduit.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\nImported 10 action lists.\n",
|
|
["author"] = "SimC",
|
|
["basedOn"] = "Windwalker",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/monk_windwalker.simc\n## Up to date with SimC: March 11 2025 - 4cd97b4\n\nactions.precombat+=/use_item,name=imperfect_ascendancy_serum\nactions.precombat+=/variable,name=sef_condition,value=target.time_to_die>6&(cooldown.rising_sun_kick.remains||active_enemies>2||!talent.ordered_elements)&(prev.invoke_xuen_the_white_tiger||(talent.celestial_conduit||!talent.last_emperors_capacitor)&buff.bloodlust.up&(cooldown.strike_of_the_windlord.remains<5||!talent.strike_of_the_windlord)&talent.sequenced_strikes||buff.invokers_delight.remains>15||(cooldown.strike_of_the_windlord.remains<5||!talent.strike_of_the_windlord)&cooldown.storm_earth_and_fire.full_recharge_time<cooldown.invoke_xuen_the_white_tiger.remains&cooldown.fists_of_fury.remains<5&(!talent.last_emperors_capacitor||talent.celestial_conduit)||talent.last_emperors_capacitor&buff.the_emperors_capacitor.stack>17&cooldown.invoke_xuen_the_white_tiger.remains>cooldown.storm_earth_and_fire.full_recharge_time)||boss&fight_remains<30||buff.invokers_delight.remains>15&(cooldown.rising_sun_kick.remains||active_enemies>2||!talent.ordered_elements)||boss&buff.bloodlust.up&(cooldown.rising_sun_kick.remains||active_enemies>2||!talent.ordered_elements)&talent.celestial_conduit&time>10\nactions.precombat+=/variable,name=xuen_condition,value=(active_enemies=1&(time<10||talent.xuens_bond&talent.celestial_conduit)||active_enemies>1)&cooldown.storm_earth_and_fire.ready&(target.time_to_die>14)&(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\n\nactions+=/spear_hand_strike\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\n## actions+=/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\nactions+=/call_action_list,name=fallback\nactions+=/arcane_torrent,if=chi<chi.max&energy<55\nactions+=/bag_of_tricks,if=buff.storm_earth_and_fire.down\nactions+=/lights_judgment,if=buff.storm_earth_and_fire.down\nactions+=/haymaker,if=buff.storm_earth_and_fire.down\nactions+=/rocket_barrage,if=buff.storm_earth_and_fire.down\nactions+=/arcane_pulse,if=buff.storm_earth_and_fire.down\n\n# aoe opener\nactions.aoe_opener+=/slicing_winds\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,if=chi<6&(combo_strike||!talent.hit_combo)\n\n## actions.cooldowns=invoke_external_buff,name=power_infusion,if=pet.xuen_the_white_tiger.active&(!buff.bloodlust.up||buff.bloodlust.up&cooldown.strike_of_the_windlord.remains)\n## actions.cooldowns+=/storm_earth_and_fire,if=fight_style.dungeonroute&buff.invokers_delight.remains>15&(active_enemies>2||!talent.ordered_elements||cooldown.rising_sun_kick.remains)\nactions.cooldowns+=/tiger_palm,if=(target.time_to_die>14)&!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,if=variable.xuen_condition\nactions.cooldowns+=/storm_earth_and_fire,if=variable.sef_condition\nactions.cooldowns+=/touch_of_karma\nactions.cooldowns+=/ancestral_call,if=buff.invoke_xuen_the_white_tiger.remains>15||!talent.invoke_xuen_the_white_tiger&(!talent.storm_earth_and_fire&(cooldown.strike_of_the_windlord.ready||!talent.strike_of_the_windlord&cooldown.fists_of_fury.ready)||buff.storm_earth_and_fire.remains>10)||boss&fight_remains<20\nactions.cooldowns+=/blood_fury,if=buff.invoke_xuen_the_white_tiger.remains>15||!talent.invoke_xuen_the_white_tiger&(!talent.storm_earth_and_fire&(cooldown.strike_of_the_windlord.ready||!talent.strike_of_the_windlord&cooldown.fists_of_fury.ready)||buff.storm_earth_and_fire.remains>10)||boss&fight_remains<20\nactions.cooldowns+=/fireblood,if=buff.invoke_xuen_the_white_tiger.remains>15||!talent.invoke_xuen_the_white_tiger&(!talent.storm_earth_and_fire&(cooldown.strike_of_the_windlord.ready||!talent.strike_of_the_windlord&cooldown.fists_of_fury.ready)||buff.storm_earth_and_fire.remains>10)||boss&fight_remains<20\nactions.cooldowns+=/berserking,if=buff.invoke_xuen_the_white_tiger.remains>15||!talent.invoke_xuen_the_white_tiger&(!talent.storm_earth_and_fire&(cooldown.strike_of_the_windlord.ready||!talent.strike_of_the_windlord&cooldown.fists_of_fury.ready)||buff.storm_earth_and_fire.remains>10)||boss&fight_remains<20\n\n# >=5 Targets\nactions.default_aoe+=/tiger_palm,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,if=!buff.heart_of_the_jade_serpent_cdr.up&!buff.heart_of_the_jade_serpent_cdr_celestial.up\nactions.default_aoe+=/spinning_crane_kick,if=combo_strike&((buff.chi_energy.stack>29&cooldown.fists_of_fury.remains<5)||(buff.dance_of_chiji.stack=2))\nactions.default_aoe+=/whirling_dragon_punch,if=buff.heart_of_the_jade_serpent_cdr.up&buff.dance_of_chiji.stack<2\nactions.default_aoe+=/whirling_dragon_punch,if=buff.dance_of_chiji.stack<2\nactions.default_aoe+=/slicing_winds,if=buff.heart_of_the_jade_serpent_cdr.up||buff.heart_of_the_jade_serpent_cdr_celestial.up\nactions.default_aoe+=/celestial_conduit,if=buff.storm_earth_and_fire.up&cooldown.strike_of_the_windlord.remains&(!buff.heart_of_the_jade_serpent_cdr.up||debuff.gale_force.remains<5)&(talent.xuens_bond||!talent.xuens_bond&buff.invokers_delight.up)||boss&fight_remains<15\nactions.default_aoe+=/rising_sun_kick,if=cooldown.whirling_dragon_punch.remains<2&cooldown.fists_of_fury.remains>1&buff.dance_of_chiji.stack<2||!buff.storm_earth_and_fire.up&buff.pressure_point.up\nactions.default_aoe+=/whirling_dragon_punch,if=!talent.revolving_whirl||talent.revolving_whirl&buff.dance_of_chiji.stack<2&active_enemies>2\nactions.default_aoe+=/blackout_kick,if=combo_strike&buff.bok_proc.up&chi<2&talent.energy_burst&energy<55\nactions.default_aoe+=/strike_of_the_windlord,if=(time>5||buff.invokers_delight.up&buff.storm_earth_and_fire.up)&(cooldown.invoke_xuen_the_white_tiger.remains>15||talent.flurry_strikes)\nactions.default_aoe+=/slicing_winds\nactions.default_aoe+=/blackout_kick,if=buff.teachings_of_the_monastery.stack=8&talent.shadowboxing_treads\nactions.default_aoe+=/crackling_jade_lightning,if=buff.the_emperors_capacitor.stack>19&combo_strike&talent.power_of_the_thunder_king&cooldown.invoke_xuen_the_white_tiger.remains>10\nactions.default_aoe+=/fists_of_fury,if=(talent.flurry_strikes||talent.xuens_battlegear&(cooldown.invoke_xuen_the_white_tiger.remains>5&boss||cooldown.invoke_xuen_the_white_tiger.remains>9)||cooldown.invoke_xuen_the_white_tiger.remains>10)\nactions.default_aoe+=/tiger_palm,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,if=combo_strike&chi>5\nactions.default_aoe+=/spinning_crane_kick,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,if=buff.pressure_point.up&cooldown.fists_of_fury.remains>2\nactions.default_aoe+=/blackout_kick,if=talent.shadowboxing_treads&talent.courageous_impulse&combo_strike&buff.bok_proc.stack=2\nactions.default_aoe+=/spinning_crane_kick,if=combo_strike&buff.dance_of_chiji.up\nactions.default_aoe+=/spinning_crane_kick,if=combo_strike&buff.ordered_elements.up&talent.crane_vortex&active_enemies>2\nactions.default_aoe+=/tiger_palm,if=combo_strike&energy.time_to_max<=gcd.max*3&talent.flurry_strikes&buff.ordered_elements.up\nactions.default_aoe+=/tiger_palm,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,if=combo_strike&!buff.ordered_elements.up&talent.crane_vortex&active_enemies>2&chi>4\nactions.default_aoe+=/blackout_kick,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,if=combo_strike&!cooldown.fists_of_fury.remains&chi<3\nactions.default_aoe+=/blackout_kick,if=talent.shadowboxing_treads&talent.courageous_impulse&combo_strike&buff.bok_proc.up\nactions.default_aoe+=/spinning_crane_kick,if=combo_strike&(chi>3||energy>55)\nactions.default_aoe+=/blackout_kick,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,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,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\nactions.default_aoe+=/blackout_kick,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+=/spinning_crane_kick,if=buff.dance_of_chiji.stack=2&combo_strike\nactions.default_cleave+=/rising_sun_kick,if=(buff.pressure_point.up&active_enemies<4&cooldown.fists_of_fury.remains>4)||(cooldown.whirling_dragon_punch.remains<2&cooldown.fists_of_fury.remains>1&buff.dance_of_chiji.stack<2)\nactions.default_cleave+=/spinning_crane_kick,if=combo_strike&buff.dance_of_chiji.stack=2&active_enemies>3\nactions.default_cleave+=/tiger_palm,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,if=!buff.heart_of_the_jade_serpent_cdr.up&!buff.heart_of_the_jade_serpent_cdr_celestial.up\nactions.default_cleave+=/whirling_dragon_punch,if=buff.heart_of_the_jade_serpent_cdr.up&buff.dance_of_chiji.stack<2\nactions.default_cleave+=/whirling_dragon_punch,if=buff.dance_of_chiji.stack<2\nactions.default_cleave+=/slicing_winds,if=buff.heart_of_the_jade_serpent_cdr.up||buff.heart_of_the_jade_serpent_cdr_celestial.up\nactions.default_cleave+=/celestial_conduit,if=buff.storm_earth_and_fire.up&cooldown.strike_of_the_windlord.remains&(!buff.heart_of_the_jade_serpent_cdr.up||debuff.gale_force.remains<5)&(talent.xuens_bond||!talent.xuens_bond&buff.invokers_delight.up)||boss&fight_remains<15\nactions.default_cleave+=/rising_sun_kick,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&cooldown.fists_of_fury.remains&(talent.glory_of_the_dawn||active_enemies<3)\nactions.default_cleave+=/fists_of_fury,if=buff.heart_of_the_jade_serpent_cdr_celestial.up\nactions.default_cleave+=/whirling_dragon_punch,if=buff.heart_of_the_jade_serpent_cdr_celestial.up\nactions.default_cleave+=/strike_of_the_windlord,if=talent.gale_force&buff.invokers_delight.up&(buff.bloodlust.up||!buff.heart_of_the_jade_serpent_cdr_celestial.up)\nactions.default_cleave+=/fists_of_fury,if=buff.power_infusion.up&buff.bloodlust.up\nactions.default_cleave+=/rising_sun_kick,if=buff.power_infusion.up&buff.bloodlust.up&active_enemies<3\nactions.default_cleave+=/blackout_kick,if=buff.teachings_of_the_monastery.stack=8&(active_enemies<3||talent.shadowboxing_treads)\nactions.default_cleave+=/whirling_dragon_punch,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,if=time>5&(cooldown.invoke_xuen_the_white_tiger.remains>15||talent.flurry_strikes)&(cooldown.fists_of_fury.remains<2||cooldown.celestial_conduit.remains<10)\nactions.default_cleave+=/slicing_winds\nactions.default_cleave+=/crackling_jade_lightning,if=buff.the_emperors_capacitor.stack>19&combo_strike&talent.power_of_the_thunder_king&cooldown.invoke_xuen_the_white_tiger.remains>10\nactions.default_cleave+=/spinning_crane_kick,if=combo_strike&buff.dance_of_chiji.stack=2\nactions.default_cleave+=/tiger_palm,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,if=(talent.flurry_strikes||talent.xuens_battlegear||!talent.xuens_battlegear&(cooldown.strike_of_the_windlord.remains>1||buff.heart_of_the_jade_serpent_cdr.up||buff.heart_of_the_jade_serpent_cdr_celestial.up))&(talent.flurry_strikes||talent.xuens_battlegear&(cooldown.invoke_xuen_the_white_tiger.remains>5&boss||cooldown.invoke_xuen_the_white_tiger.remains>9)||cooldown.invoke_xuen_the_white_tiger.remains>10)\nactions.default_cleave+=/tiger_palm,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,if=combo_strike&buff.dance_of_chiji.up&buff.chi_energy.stack>29\nactions.default_cleave+=/rising_sun_kick,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,if=talent.shadowboxing_treads&talent.courageous_impulse&combo_strike&buff.bok_proc.stack=2\nactions.default_cleave+=/blackout_kick,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,if=combo_strike&buff.dance_of_chiji.up\nactions.default_cleave+=/blackout_kick,if=talent.shadowboxing_treads&talent.courageous_impulse&combo_strike&buff.bok_proc.up\nactions.default_cleave+=/tiger_palm,if=combo_strike&energy.time_to_max<=gcd.max*3&talent.flurry_strikes&active_enemies<5\nactions.default_cleave+=/tiger_palm,if=combo_strike&chi.deficit>=2&(!buff.ordered_elements.up||energy.time_to_max<=gcd.max*3)\nactions.default_cleave+=/blackout_kick,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,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,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,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,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,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,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+=/fists_of_fury,if=buff.heart_of_the_jade_serpent_cdr_celestial.up||buff.heart_of_the_jade_serpent_cdr.up\nactions.default_st+=/rising_sun_kick,if=buff.pressure_point.up&!buff.heart_of_the_jade_serpent_cdr.up&buff.heart_of_the_jade_serpent_cdr_celestial.up||buff.invokers_delight.up||buff.bloodlust.up||buff.pressure_point.up&cooldown.fists_of_fury.remains||buff.power_infusion.up\nactions.default_st+=/whirling_dragon_punch,if=!buff.heart_of_the_jade_serpent_cdr_celestial.up&!buff.dance_of_chiji.stack=2\nactions.default_st+=/slicing_winds,if=buff.heart_of_the_jade_serpent_cdr.up||buff.heart_of_the_jade_serpent_cdr_celestial.up\nactions.default_st+=/celestial_conduit,if=buff.storm_earth_and_fire.up&(!buff.heart_of_the_jade_serpent_cdr.up||debuff.gale_force.remains<5)&cooldown.strike_of_the_windlord.remains&(talent.xuens_bond||!talent.xuens_bond&buff.invokers_delight.up)||boss&fight_remains<15\nactions.default_st+=/spinning_crane_kick,if=buff.dance_of_chiji.stack=2&combo_strike\nactions.default_st+=/tiger_palm,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\n# [Hekili] This Tiger Palm entry specifically allows Hit Combo breakage if you don't have enough Chi for Fists of Fury.\nactions.default_st+=/tiger_palm,if=(talent.energy_burst&!buff.bok_proc.up||!talent.energy_burst)&!buff.ordered_elements.up&!cooldown.fists_of_fury.remains&chi<3\nactions.default_st+=/tiger_palm,if=(prev.strike_of_the_windlord||!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,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.celestial_conduit&!buff.invokers_delight.up&!buff.heart_of_the_jade_serpent_cdr_celestial.up&cooldown.fists_of_fury.remains<5&cooldown.invoke_xuen_the_white_tiger.remains>15||boss&fight_remains<12\nactions.default_st+=/strike_of_the_windlord,if=talent.gale_force&buff.invokers_delight.up&(buff.bloodlust.up||!buff.heart_of_the_jade_serpent_cdr_celestial.up)\nactions.default_st+=/strike_of_the_windlord,if=time>5&talent.flurry_strikes\nactions.default_st+=/fists_of_fury,if=buff.power_infusion.up&buff.bloodlust.up&time>5\nactions.default_st+=/blackout_kick,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+=/tiger_palm,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,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+=/crackling_jade_lightning,if=buff.the_emperors_capacitor.stack>19&!buff.heart_of_the_jade_serpent_cdr.up&!buff.heart_of_the_jade_serpent_cdr_celestial.up&combo_strike&cooldown.invoke_xuen_the_white_tiger.remains>10||buff.the_emperors_capacitor.stack>15&!buff.heart_of_the_jade_serpent_cdr.up&!buff.heart_of_the_jade_serpent_cdr_celestial.up&combo_strike&(boss||target.time_to_die>20)&cooldown.invoke_xuen_the_white_tiger.remains<10&cooldown.invoke_xuen_the_white_tiger.remains>2\nactions.default_st+=/slicing_winds,if=target.time_to_die>10\nactions.default_st+=/fists_of_fury,if=(talent.xuens_battlegear||!talent.xuens_battlegear&(cooldown.strike_of_the_windlord.remains>1||buff.heart_of_the_jade_serpent_cdr.up||buff.heart_of_the_jade_serpent_cdr_celestial.up))&(talent.xuens_battlegear&cooldown.invoke_xuen_the_white_tiger.remains>5||cooldown.invoke_xuen_the_white_tiger.remains>10)&(!buff.invokers_delight.up||buff.invokers_delight.up&cooldown.strike_of_the_windlord.remains>4&cooldown.celestial_conduit.remains)||fight_remains<5||talent.flurry_strikes\nactions.default_st+=/rising_sun_kick,if=chi>4||chi>2&energy>50||cooldown.fists_of_fury.remains>2\nactions.default_st+=/tiger_palm,if=combo_strike&energy.time_to_max<=gcd.max*3&talent.flurry_strikes&buff.wisdom_of_the_wall_flurry.up\nactions.default_st+=/blackout_kick,if=combo_strike&talent.energy_burst&buff.bok_proc.up&chi<5&(buff.heart_of_the_jade_serpent_cdr.up||buff.heart_of_the_jade_serpent_cdr_celestial.up)\nactions.default_st+=/spinning_crane_kick,if=combo_strike&buff.bloodlust.up&buff.heart_of_the_jade_serpent_cdr.up&buff.dance_of_chiji.up\nactions.default_st+=/tiger_palm,if=combo_strike&chi.deficit>=2&energy.time_to_max<=gcd.max*3\nactions.default_st+=/blackout_kick,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+=/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+=/spinning_crane_kick,if=buff.dance_of_chiji.stack=2&combo_strike\nactions.default_st+=/blackout_kick,if=talent.courageous_impulse&combo_strike&buff.bok_proc.stack=2\nactions.default_st+=/blackout_kick,if=combo_strike&buff.ordered_elements.up&cooldown.rising_sun_kick.remains>1&cooldown.fists_of_fury.remains>2\nactions.default_st+=/tiger_palm,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,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,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+=/blackout_kick,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,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,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\n\n# Fallback\nactions.fallback=spinning_crane_kick,if=chi>5&combo_strike\nactions.fallback+=/blackout_kick,if=combo_strike&chi>3\nactions.fallback+=/tiger_palm,if=combo_strike&chi>5\n\n# normal opener\nactions.normal_opener+=/tiger_palm,if=chi<6&(combo_strike||!talent.hit_combo)\nactions.normal_opener+=/rising_sun_kick,if=talent.ordered_elements\n\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",
|
|
},
|
|
["Shadow"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250412,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-04-12: SimC Sync\n2025-03-25: Fix precombat Vampiric Touch; disable Ingenious Mana Battery until item is actually implemented\n2025-03-24: Restore addon-specific mindflay/spike insanity buff checks, SimC Update\n2025-03-13: fix invalid references\n2025-03-10: SimC Update\n2025-03-03.1: Fix DP condition logic to match simc\n2025-03-03: Support priest.force_devour_matter\n2025-02-28: TWW Season 2",
|
|
["lists"] = {
|
|
["filler"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Consume empowered fillers",
|
|
["criteria"] = "( buff.mind_spike_insanity.up || buff.mind_flay_insanity.up )",
|
|
["list_name"] = "empowered_filler",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
["caption"] = "|T1386547:0|t",
|
|
["description"] = "Cast Vampiric Touch to proc Unfurling Darkness with Inner Quietus talented",
|
|
["criteria"] = "talent.unfurling_darkness.enabled & buff.unfurling_darkness_cd.remains < execute_time & talent.inner_quietus.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 20 || buff.deathspeaker.up & 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,
|
|
["action"] = "mind_flay",
|
|
["cycle_targets"] = 1,
|
|
["interrupt_if"] = "ticks>=2&cooldown.void_bolt.remains>=gcd.max&gcd.remains<=0",
|
|
["interrupt_immediate"] = "1",
|
|
["criteria"] = "buff.voidform.up & cooldown.void_bolt.remains <= gcd.max * 1.65738",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.empowered_surges.enabled & buff.surge_of_insanity.up || buff.voidform.up & talent.void_eruption.enabled",
|
|
["action"] = "devouring_plague",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
["caption"] = "|T1386547:0|t",
|
|
["description"] = "Cast Vampiric Touch to proc Unfurling Darkness without Inner Quietus talented",
|
|
["criteria"] = "talent.unfurling_darkness.enabled & buff.unfurling_darkness_cd.remains < execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Save up to 20s if adds are coming soon.",
|
|
["criteria"] = "spell_targets > 1",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "empowered_filler",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.holding_crash & talent.void_eruption.enabled & talent.perfected_form.enabled",
|
|
["action"] = "shadow_crash",
|
|
},
|
|
{
|
|
["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,
|
|
["description"] = "Use Shadow Crash while moving as a low-priority action when adds will not spawn in 20 seconds.",
|
|
["criteria"] = "raid_event.adds.in > 20",
|
|
["action"] = "shadow_crash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Shadow Word: Death while moving as a low-priority action",
|
|
["action"] = "shadow_word_death",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Shadow Word: Pain while moving as a low-priority action",
|
|
["action"] = "shadow_word_pain",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["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 mind blasts? Currently only used for Voidweaver.",
|
|
["value"] = "1",
|
|
["var_name"] = "pooling_mindblasts",
|
|
["action"] = "variable",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.void_blast.enabled & ( cooldown.void_torrent.remains <? ( variable.holding_crash * raid_event.adds.in ) ) <= gcd.max * ( 2 + talent.mind_melt.enabled * 2 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
["caption"] = "|T1386547:0|t",
|
|
["description"] = "Consume Unfurling Darkness in the Voidweaver opener",
|
|
["criteria"] = "buff.unfurling_darkness.up & talent.unfurling_darkness.enabled & talent.mind_melt.enabled & talent.void_blast.enabled & buff.mind_melt.stack < 2 & cooldown.mindbender.up & cooldown.dark_ascension.up & time <= 4",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "High priority action to Mind Spike to get to enough Insanity during the opener with Voidweaver. Do not need to do this with the 4pc.",
|
|
["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 & ! set_bonus.tww2_4pc",
|
|
["action"] = "mind_spike",
|
|
},
|
|
{
|
|
["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,
|
|
["description"] = "Use Shadowfiend and Mindbender on cooldown as long as Vampiric Touch and Shadow Word: Pain are active and sync with Dark Ascension",
|
|
["criteria"] = "( dot.shadow_word_pain.ticking & variable.dots_up || action.shadow_crash.in_flight & talent.whispering_shadows.enabled ) & ( fight_remains < 30 || target.time_to_die > 15 ) & ( ! talent.dark_ascension.enabled || cooldown.dark_ascension.remains < gcd.max || fight_remains < 15 )",
|
|
["action"] = "mindbender",
|
|
},
|
|
{
|
|
["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,
|
|
["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",
|
|
["action"] = "mind_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 / gcd.max <= 0.1",
|
|
["action"] = "void_bolt",
|
|
},
|
|
{
|
|
["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 & ( cooldown.dark_ascension.remains >= 12 || ! talent.dark_ascension.enabled || ! talent.void_blast.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "void_bolt",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "Use Void Bolt 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 de-sync with GCD)",
|
|
["criteria"] = "cooldown.void_bolt.remains <= 0.1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
["caption"] = "|T1386547:0|t",
|
|
["description"] = "Cast Vampiric Touch to consume Unfurling Darkness",
|
|
["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).",
|
|
["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,
|
|
["description"] = "Spend your Insanity on Devouring Plague at will if the fight will end in less than 10s",
|
|
["criteria"] = "boss & fight_remains <= duration + 4",
|
|
["action"] = "devouring_plague",
|
|
},
|
|
{
|
|
["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"] = "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",
|
|
},
|
|
{
|
|
["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 & cooldown.mind_blast.full_recharge_time >= 2 & 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"] = "! variable.holding_crash & dot.vampiric_touch.refreshable & ( ! talent.unfurling_darkness.enabled || spell_targets.shadow_crash > 1 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
["caption"] = "|T1386547:0|t",
|
|
["description"] = "Cast Vampiric Touch to proc Unfurling Darkness with Inner Quietus talented",
|
|
["criteria"] = "buff.unfurling_darkness_cd.remains < execute_time & 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"] = "Apply (5 or fewer) Vampiric Touch(es) if the target will live 12 or more seconds",
|
|
["criteria"] = "( dot.vampiric_touch.ticking || ! variable.dots_up ) & 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"] = "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,
|
|
["criteria"] = "buff.voidform.up & talent.perfected_form.enabled & talent.void_eruption.enabled",
|
|
["action"] = "devouring_plague",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "filler",
|
|
},
|
|
},
|
|
["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"] = "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.signet_of_the_priory ) & ( trinket.t1.cooldown.duration >= 20 )",
|
|
["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.signet_of_the_priory ) & ( trinket.t2.cooldown.duration >= 20 )",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["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",
|
|
["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 )",
|
|
["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"] = "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",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.voidform.up & buff.power_infusion.up || buff.dark_ascension.up ) & ( fight_remains >= 320 || buff.bloodlust.up ) || boss & fight_remains <= 30",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up & ( buff.voidform.up || buff.dark_ascension.up ) || boss & fight_remains <= 8",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up & ( buff.voidform.up || buff.dark_ascension.up ) || boss & fight_remains <= 12",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up & ( buff.voidform.up || buff.dark_ascension.up ) || boss & fight_remains <= 15",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up & ( buff.voidform.up || buff.dark_ascension.up ) || boss & fight_remains <= 15",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use <a href='https://www.wowhead.com/spell=10060/power-infusion'>Power Infusion</a> while <a href='https://www.wowhead.com/spell=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>. Sync Power Infusion with Voidform or Dark Ascension",
|
|
["criteria"] = "( buff.voidform.up || buff.dark_ascension.up & ( fight_remains <= 80 || fight_remains >= 140 ) ) & ( ! buff.power_infusion.up || set_bonus.tww2_4pc & buff.power_infusion.remains <= 15 )",
|
|
["action"] = "power_infusion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Make sure Mindbender is active before popping Dark Ascension unless you have insignificant talent points or too many targets",
|
|
["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 || buff.mind_devourer.up & talent.mind_devourer.enabled )",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Make sure Mindbender is active before popping Void Eruption and dump charges of Mind Blast before casting",
|
|
["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 || buff.mind_devourer.up & talent.mind_devourer.enabled )",
|
|
["action"] = "void_eruption",
|
|
},
|
|
{
|
|
["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,
|
|
["description"] = "Use Desperate Prayer to heal up should Shadow Word: Death or other damage bring you below 75%",
|
|
["criteria"] = "health.pct <= 75",
|
|
["action"] = "desperate_prayer",
|
|
},
|
|
},
|
|
["empowered_filler"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mind_spike_insanity",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mind_flay_insanity",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "hyperthread_wristwraps",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "talent.void_blast.enabled & hyperthread_wristwraps.void_blast >= 2 & ! cooldown.mind_blast.up || ! talent.void_blast.enabled & ( ( hyperthread_wristwraps.void_bolt >= 1 || ! talent.void_eruption.enabled ) & hyperthread_wristwraps.void_torrent >= 1 )",
|
|
["action"] = "hyperthread_wristwraps",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "aberrant_spellforge",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "gcd.remains > 0 & buff.aberrant_spellforge.stack <= 4",
|
|
["action"] = "aberrant_spellforge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "neural_synapse_enhancer",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "( buff.power_surge.up || buff.entropic_rift.up || variable.trinket_1_buffs || variable.trinket_2_buffs ) & ( buff.voidform.up || cooldown.void_eruption.remains >= 40 || buff.dark_ascension.up )",
|
|
["action"] = "neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "flarendos_pilot_light",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "gcd.remains > 0 & ( buff.voidform.up || buff.power_infusion.remains >= 10 || buff.dark_ascension.up ) || boss & fight_remains < 20",
|
|
["action"] = "flarendos_pilot_light",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "geargrinders_spare_keys",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "gcd.remains > 0",
|
|
["action"] = "geargrinders_spare_keys",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.power_infusion.remains >= 10 & buff.spymasters_report.stack >= 36 & fight_remains > 240 ) & ( buff.voidform.up || buff.dark_ascension.up || ! talent.dark_ascension.enabled & ! talent.void_eruption.enabled ) || ( ( buff.power_infusion.remains >= 10 & buff.bloodlust.up & buff.spymasters_report.stack >= 10 ) || buff.power_infusion.remains >= 10 & ( boss & fight_remains < 120 ) ) & ( buff.voidform.up || buff.dark_ascension.up || ! talent.dark_ascension.enabled & ! talent.void_eruption.enabled ) || ( boss & fight_remains <= 20 || buff.dark_ascension.up & boss & fight_remains <= 60 || buff.entropic_rift.up & talent.entropic_rift.enabled & boss & fight_remains <= 30 ) & ! buff.spymasters_web.up",
|
|
["name"] = "spymasters_web",
|
|
["action"] = "spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.voidform.up || buff.power_infusion.remains >= 10 || buff.dark_ascension.up || ( talent.void_eruption.enabled & cooldown.void_eruption.remains > 10 ) || equipped.neural_synapse_enhancer & buff.entropic_rift.up ) || boss & fight_remains < 20",
|
|
["name"] = "prized_gladiators_badge_of_ferocity",
|
|
["action"] = "prized_gladiators_badge_of_ferocity",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.voidform.up || buff.power_infusion.remains >= 10 || buff.dark_ascension.up || equipped.neural_synapse_enhancer & buff.entropic_rift.up ) || boss & fight_remains < 20",
|
|
["action"] = "use_items",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250412,
|
|
["warnings"] = "The import for 'trinkets' required some automated changes.\nLine 1: Converted 'hyperthread_wristwraps.void_blast.count' to 'hyperthread_wristwraps.void_blast' (1x).\nLine 1: Converted 'hyperthread_wristwraps.void_bolt.count' to 'hyperthread_wristwraps.void_bolt' (1x).\nLine 1: Converted 'hyperthread_wristwraps.void_torrent.count' to 'hyperthread_wristwraps.void_torrent' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 3: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 3: Converted 'trinket.1.has_buff.intellect' 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.signet_of_the_priory' to 'trinket.t1.is.signet_of_the_priory' (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 4: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 4: Converted 'trinket.2.has_buff.intellect' 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.signet_of_the_priory' to 'trinket.t2.is.signet_of_the_priory' (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'.\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'main' required some automated changes.\nLine 10: 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 11: Converted operations in 'insanity.deficit>16&cooldown.void_bolt.remains%gcd.max<=0.1' to 'insanity.deficit>16&cooldown.void_bolt.remains/gcd.max<=0.1'.\n\nImported 8 action lists.\n",
|
|
["spec"] = 258,
|
|
["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/priest_shadow.simc\n## Up to date with SimC: April 12 2025 - 9b983fb\n\nactions.precombat+=/power_word_fortitude\nactions.precombat+=/shadowform,if=!buff.shadowform.up\nactions.precombat+=/variable,name=trinket_1_buffs,value=(trinket.1.has_buff.intellect||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit||trinket.1.is.signet_of_the_priory)&(trinket.1.cooldown.duration>=20)\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.signet_of_the_priory)&(trinket.2.cooldown.duration>=20)\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\n## actions.precombat+=/use_item,name=ingenious_mana_battery\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\nactions.precombat+=/vampiric_touch,if=(!talent.whispering_shadows||!action.shadow_crash.in_flight)&(!talent.shadow_crash.enabled||spell_targets.shadow_crash>8||!boss)\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\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 behavior 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\n## TODO: Add holding condition for weird fight times to potion with execute\nactions.cds+=/potion,if=(buff.voidform.up&buff.power_infusion.up||buff.dark_ascension.up)&(fight_remains>=320||buff.bloodlust.up)||boss&fight_remains<=30\nactions.cds+=/fireblood,if=buff.power_infusion.up&(buff.voidform.up||buff.dark_ascension.up)||boss&fight_remains<=8\nactions.cds+=/berserking,if=buff.power_infusion.up&(buff.voidform.up||buff.dark_ascension.up)||boss&fight_remains<=12\nactions.cds+=/blood_fury,if=buff.power_infusion.up&(buff.voidform.up||buff.dark_ascension.up)||boss&fight_remains<=15\nactions.cds+=/ancestral_call,if=buff.power_infusion.up&(buff.voidform.up||buff.dark_ascension.up)||boss&fight_remains<=15\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## [Hekili] Nobody gonna do this.\n## actions.cds+=/cancel_buff,name=power_infusion,if=cooldown.power_infusion.up&cooldown.power_infusion.duration>0&set_bonus.tww2_4pc&buff.power_infusion.remains<=2\n## ## actions.cds+=/invoke_external_buff,name=power_infusion,if=(buff.voidform.up||buff.dark_ascension.up||set_bonus.tww2_4pc)&!buff.power_infusion.up\n## actions.cds+=/invoke_external_buff,name=bloodlust,if=buff.power_infusion.up&boss&fight_remains<120||boss&fight_remains<=40\n# Sync Power Infusion with Voidform or Dark Ascension\nactions.cds+=/power_infusion,if=(buff.voidform.up||buff.dark_ascension.up&(fight_remains<=80||fight_remains>=140))&(!buff.power_infusion.up||set_bonus.tww2_4pc&buff.power_infusion.remains<=15)\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||buff.mind_devourer.up&talent.mind_devourer)\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||buff.mind_devourer.up&talent.mind_devourer)\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\nactions.empowered_filler+=/mind_spike_insanity,cycle_targets=1\nactions.empowered_filler+=/mind_flay_insanity,cycle_targets=1\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,if=(buff.mind_spike_insanity.up||buff.mind_flay_insanity.up)\n# [1386547] :: Cast Vampiric Touch to proc Unfurling Darkness with Inner Quietus talented\nactions.filler+=/vampiric_touch,cycle_targets=1,if=talent.unfurling_darkness&buff.unfurling_darkness_cd.remains<execute_time&talent.inner_quietus\nactions.filler+=/shadow_word_death,cycle_targets=1,if=target.health.pct<20||buff.deathspeaker.up&dot.devouring_plague.ticking\nactions.filler+=/shadow_word_death,cycle_targets=1,if=talent.inescapable_torment&pet.fiend.active\n## Its literally a random number over 1.5 but less than 2\nactions.filler+=/mind_flay,cycle_targets=1,if=buff.voidform.up&cooldown.void_bolt.remains<=gcd.max*1.65738,interrupt_immediate=1,interrupt_if=ticks>=2&cooldown.void_bolt.remains>=gcd.max&gcd.remains<=0,interrupt_global=1\nactions.filler+=/devouring_plague,if=talent.empowered_surges&buff.surge_of_insanity.up||buff.voidform.up&talent.void_eruption\n# [1386547] :: Cast Vampiric Touch to proc Unfurling Darkness without Inner Quietus talented\nactions.filler+=/vampiric_touch,cycle_targets=1,if=talent.unfurling_darkness&buff.unfurling_darkness_cd.remains<execute_time\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\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+=/shadow_crash,if=!variable.holding_crash&talent.void_eruption&talent.perfected_form\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 spawn in 20 seconds.\nactions.filler+=/shadow_crash,if=raid_event.adds.in>20\n## [Syrif] - No need to duplicate consecutive entries\n## Use Shadow Word: Death while moving as a low-priority action in execute\n## actions.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\nactions.filler+=/shadow_word_pain,cycle_targets=1\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.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 mind blasts? Currently only used for Voidweaver.\nactions.main+=/variable,name=pooling_mindblasts,op=setif,value=1,value_else=0,if=talent.void_blast&(cooldown.void_torrent.remains<?(variable.holding_crash*raid_event.adds.in))<=gcd.max*(2+talent.mind_melt*2)\n# [1386547] :: Consume Unfurling Darkness in the Voidweaver opener\nactions.main+=/vampiric_touch,cycle_targets=1,if=buff.unfurling_darkness.up&talent.unfurling_darkness&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. Do not need to do this with the 4pc.\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&!set_bonus.tww2_4pc\nactions.main+=/call_action_list,name=cds,if=boss&fight_remains<30||target.time_to_die>15&(!variable.holding_crash||active_enemies>2)\n# Use Shadowfiend and Mindbender on cooldown as long as Vampiric Touch and Shadow Word: Pain are active 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)&(fight_remains<30||target.time_to_die>15)&(!talent.dark_ascension||cooldown.dark_ascension.remains<gcd.max||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\n## actions.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,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,if=insanity.deficit>16&cooldown.void_bolt.remains%gcd.max<=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&(cooldown.dark_ascension.remains>=12||!talent.dark_ascension||!talent.void_blast)\n# Use Void Bolt 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 de-sync with GCD)\nactions.main+=/void_bolt,cycle_targets=1,if=cooldown.void_bolt.remains<=0.1\n# [1386547] :: Cast Vampiric Touch to consume Unfurling Darkness\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,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 optimizations 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=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\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&cooldown.mind_blast.full_recharge_time>=2&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=!variable.holding_crash&dot.vampiric_touch.refreshable&(!talent.unfurling_darkness||spell_targets.shadow_crash>1)\n# [1386547] :: Cast Vampiric Touch to proc Unfurling Darkness with Inner Quietus talented\nactions.main+=/vampiric_touch,cycle_targets=1,if=buff.unfurling_darkness_cd.remains<execute_time&talent.unfurling_darkness&!buff.dark_ascension.up&talent.inner_quietus&active_dot.vampiric_touch<=5\n# Apply (5 or fewer) Vampiric Touch(es) if the target will live 12 or more seconds\nactions.main+=/vampiric_touch,cycle_targets=1,if=(dot.vampiric_touch.ticking||!variable.dots_up)&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# 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+=/devouring_plague,cycle_targets=1,if=buff.voidform.up&talent.perfected_form&talent.void_eruption\nactions.main+=/call_action_list,name=filler\n\nactions.trinkets+=/use_item,use_off_gcd=1,name=hyperthread_wristwraps,if=talent.void_blast&hyperthread_wristwraps.void_blast.count>=2&!cooldown.mind_blast.up||!talent.void_blast&((hyperthread_wristwraps.void_bolt.count>=1||!talent.void_eruption)&hyperthread_wristwraps.void_torrent.count>=1)\nactions.trinkets+=/use_item,use_off_gcd=1,name=aberrant_spellforge,if=gcd.remains>0&buff.aberrant_spellforge.stack<=4\nactions.trinkets+=/use_item,use_off_gcd=1,name=neural_synapse_enhancer,if=(buff.power_surge.up||buff.entropic_rift.up||variable.trinket_1_buffs||variable.trinket_2_buffs)&(buff.voidform.up||cooldown.void_eruption.remains>=40||buff.dark_ascension.up)\nactions.trinkets+=/use_item,use_off_gcd=1,name=flarendos_pilot_light,if=gcd.remains>0&(buff.voidform.up||buff.power_infusion.remains>=10||buff.dark_ascension.up)||boss&fight_remains<20\nactions.trinkets+=/use_item,use_off_gcd=1,name=geargrinders_spare_keys,if=gcd.remains>0\nactions.trinkets+=/use_item,name=spymasters_web,if=(buff.power_infusion.remains>=10&buff.spymasters_report.stack>=36&fight_remains>240)&(buff.voidform.up||buff.dark_ascension.up||!talent.dark_ascension&!talent.void_eruption)||((buff.power_infusion.remains>=10&buff.bloodlust.up&buff.spymasters_report.stack>=10)||buff.power_infusion.remains>=10&(boss&fight_remains<120))&(buff.voidform.up||buff.dark_ascension.up||!talent.dark_ascension&!talent.void_eruption)||(boss&fight_remains<=20||buff.dark_ascension.up&boss&fight_remains<=60||buff.entropic_rift.up&talent.entropic_rift&boss&fight_remains<=30)&!buff.spymasters_web.up\nactions.trinkets+=/use_item,name=prized_gladiators_badge_of_ferocity,if=(buff.voidform.up||buff.power_infusion.remains>=10||buff.dark_ascension.up||(talent.void_eruption&cooldown.void_eruption.remains>10)||equipped.neural_synapse_enhancer&buff.entropic_rift.up)||boss&fight_remains<20\nactions.trinkets+=/use_items,if=(buff.voidform.up||buff.power_infusion.remains>=10||buff.dark_ascension.up||equipped.neural_synapse_enhancer&buff.entropic_rift.up)||boss&fight_remains<20",
|
|
},
|
|
["Unholy"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250430,
|
|
["spec"] = 252,
|
|
["desc"] = "2025-04-30: Soul Reaper\n\n2025-04-25: SimC sync; fix AOE\n\n2025-04-14: Distinguish Abom from Army\n\n2025-04-12: SimC sync",
|
|
["lists"] = {
|
|
["san_fishing"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "death_knight.ams_absorb_percent > 0 & runic_power < 40",
|
|
["action"] = "antimagic_shell",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.infliction_of_sorrow.up",
|
|
["action"] = "wound_spender",
|
|
},
|
|
{
|
|
["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 || set_bonus.tww2_4pc & buff.essence_of_the_blood_queen.at_max_stacks & talent.frenzied_bloodthirst.enabled & ! buff.vampiric_strike.up",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct <= 35 & target.time_to_die > 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,
|
|
["criteria"] = "buff.festering_scythe.up",
|
|
["action"] = "festering_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "festering_strike",
|
|
["criteria"] = "talent.vile_contagion.enabled & cooldown.vile_contagion.remains < 5 & ! debuff.festering_wound.at_max_stacks",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "festering_strike",
|
|
["criteria"] = "death_knight.fwounded_targets = 0 & cooldown.apocalypse.remains < gcd.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wound_spender",
|
|
["criteria"] = "debuff.chains_of_ice_trollbane_slow.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "death_coil",
|
|
["criteria"] = "! variable.pooling_runic_power & active_enemies < variable.epidemic_targets & rune < 4",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & variable.epidemic_targets <= active_enemies & rune < 4",
|
|
["action"] = "epidemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "any_dnd",
|
|
["description"] = "[Hekili] Added fallback use based on time to max charges, this is in case you have target swaps enabled but...aren't swapping targets to apply Festering Wounds.",
|
|
["criteria"] = "! buff.death_and_decay.up & ( ! talent.bursting_sores.enabled & ! talent.vile_contagion.enabled || death_knight.fwounded_targets >= cycle_enemies || full_recharge_time < 2 * gcd.max || death_knight.fwounded_targets >= 8 || active_enemies > 1 & raid_event.adds.remains <= 11 & raid_event.adds.remains > 5 || ! buff.death_and_decay.up & talent.defile.enabled & rune > 3 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "death_coil",
|
|
["criteria"] = "! variable.pooling_runic_power & active_enemies < variable.epidemic_targets & ( buff.sudden_doom.up || death_knight.fwounded_targets = active_enemies || death_knight.fwounded_targets >= 8 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & variable.epidemic_targets <= active_enemies & ( buff.sudden_doom.up || death_knight.fwounded_targets = active_enemies || death_knight.fwounded_targets >= 8 )",
|
|
["action"] = "epidemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "death_coil",
|
|
["criteria"] = "! variable.pooling_runic_power & active_enemies < variable.epidemic_targets",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power",
|
|
["action"] = "epidemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "festering_strike",
|
|
["criteria"] = "death_knight.fwounded_targets < 8 & ! death_knight.fwounded_targets = active_enemies",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wound_spender",
|
|
["criteria"] = "buff.vampiric_strike.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["cds_aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vile_contagion",
|
|
["criteria"] = "debuff.festering_wound.stack >= 4 & variable.adds_remain",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "unholy_assault",
|
|
["criteria"] = "variable.adds_remain & ( debuff.festering_wound.stack >= 2 & cooldown.vile_contagion.remains < 3 || ! talent.vile_contagion.enabled )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.adds_remain & ( 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.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,
|
|
["action"] = "apocalypse",
|
|
["criteria"] = "variable.adds_remain & rune <= 3",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.adds_remain",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
},
|
|
["cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! death_and_decay.ticking & variable.adds_remain & ( cooldown.apocalypse.remains || ! talent.apocalypse.enabled )",
|
|
["action"] = "any_dnd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & talent.improved_death_coil.enabled",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vampiric_strike.up",
|
|
["action"] = "wound_spender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power & ! talent.improved_death_coil.enabled",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "festering_strike",
|
|
["criteria"] = "buff.vampiric_strike.down & ! variable.pop_wounds & debuff.festering_wound.stack < 2 || buff.festering_scythe.react",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "festering_strike",
|
|
["criteria"] = "buff.vampiric_strike.down & cooldown.apocalypse.remains < variable.apoc_timing & debuff.festering_wound.down",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.pop_wounds",
|
|
["action"] = "wound_spender",
|
|
},
|
|
},
|
|
["san_st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! death_and_decay.ticking & talent.unholy_ground.enabled & cooldown.dark_transformation.remains < 5",
|
|
["action"] = "any_dnd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.infliction_of_sorrow.up",
|
|
["action"] = "wound_spender",
|
|
},
|
|
{
|
|
["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 || set_bonus.tww2_4pc & runic_power > 80 || buff.gift_of_the_sanlayn.up & buff.essence_of_the_blood_queen.at_max_stacks & talent.frenzied_bloodthirst.enabled & set_bonus.tww2_4pc & buff.winning_streak_unholy.at_max_stacks & rune <= 3 & buff.essence_of_the_blood_queen.remains > 3",
|
|
["action"] = "death_coil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vampiric_strike.up & debuff.festering_wound.up || buff.gift_of_the_sanlayn.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 & target.time_to_die > 5",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["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.up || 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",
|
|
},
|
|
},
|
|
["aoe_burst"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.festering_scythe.up",
|
|
["action"] = "festering_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "death_coil",
|
|
["criteria"] = "! buff.vampiric_strike.up & 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.up || buff.sudden_doom.up & ( talent.doomed_bidding.enabled & talent.menacing_magus.enabled || talent.rotten_touch.enabled || debuff.death_rot.remains < gcd.max ) || rune < 2 ) || ( rune < 4 || active_enemies < 4 || boss ) & active_enemies < variable.epidemic_targets & buff.gift_of_the_sanlayn.up & gcd.max <= 1.0 & ( fight_remains > buff.dark_transformation.remains * 2 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.vampiric_strike.up & ( ! 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.up || buff.sudden_doom.up & ( buff.a_feast_of_souls.up || debuff.death_rot.remains < gcd.max || debuff.death_rot.stack < 10 ) || rune < 2 ) || ( rune < 4 || boss ) & active_enemies > variable.epidemic_targets & buff.gift_of_the_sanlayn.up & gcd.max <= 1.0 & fight_remains > buff.dark_transformation.remains * 2",
|
|
["action"] = "epidemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wound_spender",
|
|
["criteria"] = "debuff.chains_of_ice_trollbane_slow.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wound_spender",
|
|
["criteria"] = "debuff.festering_wound.up || buff.vampiric_strike.up || buff.death_and_decay.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "death_coil",
|
|
["criteria"] = "active_enemies < variable.epidemic_targets",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.epidemic_targets < active_enemies",
|
|
["action"] = "epidemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "festering_strike",
|
|
["criteria"] = "debuff.festering_wound.stack <= 2",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wound_spender",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct <= 35 & target.time_to_die > 5",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["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 || 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",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.st_planning & ( cooldown.apocalypse.remains < 8 || ! talent.apocalypse.enabled || active_enemies >= 1 ) || boss & fight_remains < 20",
|
|
["action"] = "dark_transformation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.st_planning & ( 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"] = "variable.st_planning || boss & fight_remains < 20",
|
|
["action"] = "apocalypse",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "outbreak",
|
|
["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 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.st_planning & ! 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",
|
|
},
|
|
},
|
|
["san_trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["name"] = "fyralath_the_dreamrender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "treacherous_transmitter",
|
|
["criteria"] = "( active_enemies > 1 || active_enemies = 1 ) & cooldown.dark_transformation.remains < 10",
|
|
["name"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["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",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["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",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["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",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["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",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["criteria"] = "( ! variable.trinket_1_buffs & ! variable.trinket_2_buffs || trinket.t1.cooldown.remains > 20 & ! variable.trinket_2_buffs || trinket.t2.cooldown.remains > 20 & ! variable.trinket_1_buffs || trinket.t1.cooldown.remains > 20 & trinket.t2.cooldown.remains > 20 ) & ( buff.dark_transformation.up & buff.dark_transformation.remains > 10 ) & ( ! talent.raise_abomination.enabled & ! talent.army_of_the_dead.enabled || ! talent.raise_abomination.enabled & talent.army_of_the_dead.enabled & pet.army_ghoul.active || talent.raise_abomination.enabled & pet.abomination.active || ( variable.trinket_1_buffs || variable.trinket_2_buffs || boss & fight_remains < 15 ) )",
|
|
["slot"] = "main_hand",
|
|
},
|
|
},
|
|
["cds_san"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "dark_transformation",
|
|
["description"] = "San'layn Cooldowns",
|
|
["criteria"] = "variable.st_planning & ( talent.apocalypse.enabled & pet.apoc_ghoul.active || ! talent.apocalypse.enabled ) || boss & fight_remains < 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.st_planning & ( buff.dark_transformation.up & buff.dark_transformation.remains < 12 ) || boss & fight_remains < 20",
|
|
["action"] = "unholy_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.st_planning || boss & fight_remains < 20",
|
|
["action"] = "apocalypse",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "outbreak",
|
|
["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 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.st_planning & ! 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",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "mind_freeze",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies = 1",
|
|
["var_name"] = "st_planning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies > 1",
|
|
["var_name"] = "adds_remain",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "apoc_timing",
|
|
["criteria"] = "cooldown.apocalypse.remains < 5 & debuff.festering_wound.down & cooldown.unholy_assault.remains > 5",
|
|
["value_else"] = "0",
|
|
["value"] = "3",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( cooldown.apocalypse.remains > variable.apoc_timing || ! talent.apocalypse.enabled ) & ( debuff.festering_wound.up & cooldown.unholy_assault.remains < 20 & talent.unholy_assault.enabled & active_enemies = 1 || debuff.rotten_touch.up & debuff.festering_wound.up || debuff.festering_wound.stack >= 4 - pet.abomination.active ) || fight_remains < 5 & debuff.festering_wound.up",
|
|
["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"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "san_coil_mult",
|
|
["criteria"] = "buff.essence_of_the_blood_queen.stack >= 4",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "3 + talent.improved_death_coil.enabled + ( talent.frenzied_bloodthirst.enabled * variable.san_coil_mult ) + ( talent.hungering_thirst.enabled & talent.harbinger_of_doom.enabled & buff.sudden_doom.up )",
|
|
["var_name"] = "epidemic_targets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["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,
|
|
["criteria"] = "runic_power < 20 & rune < 2",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.blood_fury.duration + 3 >= pet.gargoyle.remains & pet.gargoyle.active ) || ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 ) & ( pet.army_ghoul.active & pet.army_ghoul.remains <= buff.blood_fury.duration + 3 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= buff.blood_fury.duration + 3 || active_enemies >= 2 & death_and_decay.ticking ) || boss & fight_remains <= buff.blood_fury.duration + 3",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.berserking.duration + 3 >= pet.gargoyle.remains & pet.gargoyle.active ) || ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 ) & ( pet.army_ghoul.active & pet.army_ghoul.remains <= buff.berserking.duration + 3 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= buff.berserking.duration + 3 || active_enemies >= 2 & death_and_decay.ticking ) || boss & fight_remains <= buff.berserking.duration + 3",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unholy_strength.up & ( ! talent.festermight.enabled || buff.festermight.remains < target.time_to_die || buff.unholy_strength.remains < target.time_to_die )",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( 18 >= pet.gargoyle.remains & pet.gargoyle.active ) || ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 ) & ( pet.army_ghoul.active & pet.army_ghoul.remains <= 18 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= 18 || active_enemies >= 2 & death_and_decay.ticking ) || boss & fight_remains <= 18",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 2 || ( rune.deficit >= 5 & runic_power.deficit >= 60 )",
|
|
["action"] = "arcane_pulse",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.fireblood.duration + 3 >= pet.gargoyle.remains & pet.gargoyle.active ) || ( ! talent.summon_gargoyle.enabled || cooldown.summon_gargoyle.remains > 60 ) & ( pet.army_ghoul.active & pet.army_ghoul.remains <= buff.fireblood.duration + 3 || pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= buff.fireblood.duration + 3 || active_enemies >= 2 & death_and_decay.ticking ) || boss & fight_remains <= buff.fireblood.duration + 3",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & ( buff.unholy_strength.up || boss & fight_remains < 5 )",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.st_planning || variable.adds_remain ) & ( ! talent.vampiric_strike.enabled || ( pet.apoc_ghoul.active || ! talent.apocalypse.enabled ) ) || boss & fight_remains < 30",
|
|
["action"] = "raise_abomination",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "summon_gargoyle",
|
|
["criteria"] = "( variable.st_planning || variable.adds_remain ) & ( buff.commander_of_the_dead.up || ! talent.commander_of_the_dead.enabled & active_enemies >= 1 ) || boss & fight_remains < 25",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["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 >= 3",
|
|
["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 = 2",
|
|
["list_name"] = "cds_cleave_san",
|
|
},
|
|
{
|
|
["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 & cooldown.any_dnd.remains < 10 & ! death_and_decay.ticking",
|
|
["strict_if"] = "active_enemies >= 3",
|
|
["list_name"] = "aoe_setup",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies >= 3 & ( death_and_decay.ticking || buff.death_and_decay.up & ( death_knight.fwounded_targets >= ( cycle_enemies * 0.5 ) || talent.vampiric_strike.enabled & active_enemies < 16 ) )",
|
|
["strict_if"] = "active_enemies >= 3",
|
|
["list_name"] = "aoe_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies >= 3 & ! buff.death_and_decay.up",
|
|
["strict_if"] = "active_enemies >= 3",
|
|
["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 + 3",
|
|
["strict_if"] = "active_enemies = 1 & talent.gift_of_the_sanlayn.enabled",
|
|
["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.treacherous_transmitter",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "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 || trinket.t1.is.funhouse_lens || trinket.t1.is.signet_of_the_priory",
|
|
["value_else"] = "trinket.t1.buff_duration",
|
|
["value"] = "trinket.t1.is.treacherous_transmitter * 15 + trinket.t1.is.funhouse_lens * 15 + trinket.t1.is.signet_of_the_priory * 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_duration",
|
|
["criteria"] = "trinket.t2.is.treacherous_transmitter || trinket.t2.is.funhouse_lens || trinket.t2.is.signet_of_the_priory",
|
|
["value_else"] = "trinket.t2.buff_duration",
|
|
["value"] = "trinket.t2.is.treacherous_transmitter * 15 + trinket.t2.is.funhouse_lens * 15 + trinket.t2.is.signet_of_the_priory * 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_1_high_value",
|
|
["criteria"] = "trinket.t1.is.treacherous_transmitter",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_high_value",
|
|
["criteria"] = "trinket.t2.is.treacherous_transmitter",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_1_sync",
|
|
["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",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["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",
|
|
["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 || ! 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 ) ) )",
|
|
["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",
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.festering_scythe.up",
|
|
["action"] = "festering_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "death_coil",
|
|
["criteria"] = "rune < 4 & active_enemies < variable.epidemic_targets & buff.gift_of_the_sanlayn.up & gcd.max <= 1.0 & fight_remains > buff.dark_transformation.remains * 2",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune < 4 & active_enemies > variable.epidemic_targets & buff.gift_of_the_sanlayn.up & gcd.max <= 1.0 & fight_remains > buff.dark_transformation.remains * 2",
|
|
["action"] = "epidemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wound_spender",
|
|
["criteria"] = "debuff.festering_wound.up & buff.death_and_decay.up & talent.bursting_sores.enabled & cooldown.apocalypse.remains > variable.apoc_timing",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "death_coil",
|
|
["criteria"] = "! variable.pooling_runic_power & active_enemies < variable.epidemic_targets",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.pooling_runic_power",
|
|
["action"] = "epidemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wound_spender",
|
|
["criteria"] = "debuff.chains_of_ice_trollbane_slow.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "festering_strike",
|
|
["criteria"] = "cooldown.apocalypse.remains < variable.apoc_timing || buff.festering_scythe.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "festering_strike",
|
|
["criteria"] = "debuff.festering_wound.stack < 2",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wound_spender",
|
|
["criteria"] = "debuff.festering_wound.up & cooldown.apocalypse.remains > gcd.max || buff.vampiric_strike.up & dot.virulent_plague.ticking",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["name"] = "fyralath_the_dreamrender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "treacherous_transmitter",
|
|
["criteria"] = "( active_enemies > 1 || active_enemies = 1 ) & cooldown.dark_transformation.remains < 10",
|
|
["name"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["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",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["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",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["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",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["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",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["criteria"] = "( ! variable.trinket_1_buffs & ! variable.trinket_2_buffs || trinket.t1.cooldown.remains & ! variable.trinket_2_buffs || trinket.t2.cooldown.remains & ! variable.trinket_1_buffs || trinket.t1.cooldown.remains & trinket.t2.cooldown.remains ) & ( pet.apoc_ghoul.active & pet.apoc_ghoul.remains <= 18 || ! talent.apocalypse.enabled & buff.dark_transformation.up ) & ( ( trinket.t1.cooldown.duration = 90 || trinket.t2.cooldown.duration = 90 ) || ! talent.raise_abomination.enabled & ! talent.army_of_the_dead.enabled || ! talent.raise_abomination.enabled & talent.army_of_the_dead.enabled & pet.army_ghoul.active || talent.raise_abomination.enabled & pet.abomination.active )",
|
|
["slot"] = "main_hand",
|
|
},
|
|
},
|
|
["cds_cleave_san"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.death_and_decay.up & ( talent.apocalypse.enabled & pet.apoc_ghoul.active || ! talent.apocalypse.enabled ) || boss & fight_remains < 20 || active_enemies > 1 & raid_event.adds.remains < 20",
|
|
["action"] = "dark_transformation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dark_transformation.up & buff.dark_transformation.remains < 12 || boss & fight_remains < 20 || active_enemies > 1 & raid_event.adds.remains < 20",
|
|
["action"] = "unholy_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "apocalypse",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "outbreak",
|
|
["criteria"] = "( 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 > 6 ) & ( ! talent.raise_abomination.enabled || talent.raise_abomination.enabled & cooldown.raise_abomination.remains > 5 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.gift_of_the_sanlayn.up & ! buff.sudden_doom.react & buff.festermight.up & debuff.festering_wound.stack <= 2 || ! buff.gift_of_the_sanlayn.up & boss & fight_remains < 12",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
},
|
|
["cds_aoe_san"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vile_contagion",
|
|
["criteria"] = "debuff.festering_wound.stack >= 4 & variable.adds_remain",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.adds_remain & ( buff.death_and_decay.up || active_enemies <= 3 )",
|
|
["action"] = "dark_transformation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "unholy_assault",
|
|
["criteria"] = "debuff.festering_wound.stack < 3 & variable.adds_remain & talent.vile_contagion.enabled & debuff.festering_wound.stack <= 2 & cooldown.vile_contagion.remains < 6",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "unholy_assault",
|
|
["criteria"] = "variable.adds_remain & ! talent.vile_contagion.enabled & buff.dark_transformation.up & buff.dark_transformation.remains < 12",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["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 ) & ( ! dot.virulent_plague.ticking & variable.epidemic_targets < active_enemies || ( ! talent.unholy_blight.enabled || talent.unholy_blight.enabled & cooldown.dark_transformation.remains > 5 ) & ( ! talent.raise_abomination.enabled || talent.raise_abomination.enabled & cooldown.raise_abomination.remains > 6 ) )",
|
|
["action"] = "outbreak",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "apocalypse",
|
|
["criteria"] = "variable.adds_remain & rune <= 3",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.adds_remain",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250430,
|
|
["warnings"] = "The import for 'trinkets' required some automated changes.\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.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 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 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 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'.\n\nThe import for 'san_trinkets' required some automated changes.\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 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 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\n\nThe import for '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.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.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 5: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 5: Converted 'trinket.1.is.funhouse_lens' to 'trinket.t1.is.funhouse_lens' (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.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 5: Converted 'trinket.1.is.funhouse_lens' to 'trinket.t1.is.funhouse_lens' (1x).\nLine 5: Converted 'trinket.1.is.signet_of_the_priory' to 'trinket.t1.is.signet_of_the_priory' (1x).\nLine 6: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 6: Converted 'trinket.2.is.funhouse_lens' to 'trinket.t2.is.funhouse_lens' (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.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 6: Converted 'trinket.2.is.funhouse_lens' to 'trinket.t2.is.funhouse_lens' (1x).\nLine 6: Converted 'trinket.2.is.signet_of_the_priory' to 'trinket.t2.is.signet_of_the_priory' (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.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 '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 '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 '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\nImported 16 action lists.\n",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/deathknight_unholy.simc\n## Up to date with SimC: April 22 2025 - 42dc633\n\nactions.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.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||trinket.2.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_1_duration,op=setif,value=trinket.1.is.treacherous_transmitter*15+trinket.1.is.funhouse_lens*15+trinket.1.is.signet_of_the_priory*20,value_else=trinket.1.proc.any_dps.duration,condition=trinket.1.is.treacherous_transmitter||trinket.1.is.funhouse_lens||trinket.1.is.signet_of_the_priory\nactions.precombat+=/variable,name=trinket_2_duration,op=setif,value=trinket.2.is.treacherous_transmitter*15+trinket.2.is.funhouse_lens*15+trinket.2.is.signet_of_the_priory*20,value_else=trinket.2.proc.any_dps.duration,condition=trinket.2.is.treacherous_transmitter||trinket.2.is.funhouse_lens||trinket.2.is.signet_of_the_priory\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\nactions+=/variable,name=st_planning,op=set,value=active_enemies=1\nactions+=/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.down&cooldown.unholy_assault.remains>5\nactions+=/variable,name=pop_wounds,op=set,value=(cooldown.apocalypse.remains>variable.apoc_timing||!talent.apocalypse)&(debuff.festering_wound.up&cooldown.unholy_assault.remains<20&talent.unholy_assault&active_enemies=1||debuff.rotten_touch.up&debuff.festering_wound.up||debuff.festering_wound.stack>=4-pet.abomination.active)||fight_remains<5&debuff.festering_wound.up\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=san_coil_mult,op=setif,value=2,value_else=1,condition=buff.essence_of_the_blood_queen.stack>=4\nactions+=/variable,name=epidemic_targets,value=3+talent.improved_death_coil+(talent.frenzied_bloodthirst*variable.san_coil_mult)+(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))\n## [Syrif] - (variable.st_planning||variable.adds_remain) removed from 3 lines here, too redundant\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,if=(variable.st_planning||variable.adds_remain)&(!talent.vampiric_strike||(pet.apoc_ghoul.active||!talent.apocalypse))||boss&fight_remains<30\nactions+=/summon_gargoyle,use_off_gcd=1,if=(variable.st_planning||variable.adds_remain)&(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>=3\nactions+=/call_action_list,name=cds_aoe,strict=1,if=!talent.vampiric_strike&active_enemies>=2\nactions+=/call_action_list,name=cds_cleave_san,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,strict_if=active_enemies>=3,if=active_enemies>=3&cooldown.any_dnd.remains<10&!death_and_decay.ticking\nactions+=/call_action_list,name=aoe_burst,strict_if=active_enemies>=3,if=active_enemies>=3&(death_and_decay.ticking||buff.death_and_decay.up&(death_knight.fwounded_targets>=(cycle_enemies*0.5)||talent.vampiric_strike&active_enemies<16))\nactions+=/call_action_list,name=aoe,strict_if=active_enemies>=3,if=active_enemies>=3&!buff.death_and_decay.up\nactions+=/run_action_list,name=san_fishing,strict_if=active_enemies=1&talent.gift_of_the_sanlayn,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+3\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+=/death_coil,cycle_targets=1,if=rune<4&active_enemies<variable.epidemic_targets&buff.gift_of_the_sanlayn.up&gcd<=1.0&fight_remains>buff.dark_transformation.remains*2\nactions.aoe+=/epidemic,if=rune<4&active_enemies>variable.epidemic_targets&buff.gift_of_the_sanlayn.up&gcd<=1.0&fight_remains>buff.dark_transformation.remains*2\nactions.aoe+=/wound_spender,cycle_targets=1,if=debuff.festering_wound.up&buff.death_and_decay.up&talent.bursting_sores&cooldown.apocalypse.remains>variable.apoc_timing\nactions.aoe+=/death_coil,cycle_targets=1,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.up&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,cycle_targets=1,if=!buff.vampiric_strike.up&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.up||buff.sudden_doom.up&(talent.doomed_bidding&talent.menacing_magus||talent.rotten_touch||debuff.death_rot.remains<gcd)||rune<2)||(rune<4||active_enemies<4||boss)&active_enemies<variable.epidemic_targets&buff.gift_of_the_sanlayn.up&gcd<=1.0&(fight_remains>buff.dark_transformation.remains*2)\nactions.aoe_burst+=/epidemic,if=!buff.vampiric_strike.up&(!talent.bursting_sores||talent.bursting_sores&death_knight.fwounded_targets<active_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)||rune<2)||(rune<4||boss)&active_enemies>variable.epidemic_targets&buff.gift_of_the_sanlayn.up&gcd<=1.0&fight_remains>buff.dark_transformation.remains*2\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.up||buff.vampiric_strike.up||buff.death_and_decay.up\nactions.aoe_burst+=/death_coil,cycle_targets=1,if=active_enemies<variable.epidemic_targets\nactions.aoe_burst+=/epidemic,if=variable.epidemic_targets<active_enemies\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+=/festering_strike,cycle_targets=1,if=talent.vile_contagion&cooldown.vile_contagion.remains<5&!debuff.festering_wound.at_max_stacks\nactions.aoe_setup+=/festering_strike,cycle_targets=1,if=death_knight.fwounded_targets=0&cooldown.apocalypse.remains<gcd\nactions.aoe_setup+=/wound_spender,cycle_targets=1,if=debuff.chains_of_ice_trollbane_slow.up\nactions.aoe_setup+=/death_coil,cycle_targets=1,if=!variable.pooling_runic_power&active_enemies<variable.epidemic_targets&rune<4\nactions.aoe_setup+=/epidemic,if=!variable.pooling_runic_power&variable.epidemic_targets<=active_enemies&rune<4\n# [Hekili] Added fallback use based on time to max charges; this is in case you have target swaps enabled but...aren't swapping targets to apply Festering Wounds.\nactions.aoe_setup+=/any_dnd,if=!buff.death_and_decay.up&(!talent.bursting_sores&!talent.vile_contagion||death_knight.fwounded_targets>=cycle_enemies||full_recharge_time<2*gcd.max||death_knight.fwounded_targets>=8||active_enemies>1&raid_event.adds.remains<=11&raid_event.adds.remains>5||!buff.death_and_decay.up&talent.defile&rune>3)\nactions.aoe_setup+=/death_coil,cycle_targets=1,if=!variable.pooling_runic_power&active_enemies<variable.epidemic_targets&(buff.sudden_doom.up||death_knight.fwounded_targets=active_enemies||death_knight.fwounded_targets>=8)\nactions.aoe_setup+=/epidemic,if=!variable.pooling_runic_power&variable.epidemic_targets<=active_enemies&(buff.sudden_doom.up||death_knight.fwounded_targets=active_enemies||death_knight.fwounded_targets>=8)\nactions.aoe_setup+=/death_coil,cycle_targets=1,if=!variable.pooling_runic_power&active_enemies<variable.epidemic_targets\nactions.aoe_setup+=/epidemic,if=!variable.pooling_runic_power\nactions.aoe_setup+=/festering_strike,cycle_targets=1,if=death_knight.fwounded_targets<8&!death_knight.fwounded_targets=active_enemies\nactions.aoe_setup+=/wound_spender,cycle_targets=1,if=buff.vampiric_strike.up\n\n## Non-San'layn Cooldowns\nactions.cds+=/dark_transformation,if=variable.st_planning&(cooldown.apocalypse.remains<8||!talent.apocalypse||active_enemies>=1)||boss&fight_remains<20\nactions.cds+=/unholy_assault,if=variable.st_planning&(cooldown.apocalypse.remains<gcd*2||!talent.apocalypse||active_enemies>=2&buff.dark_transformation.up)||boss&fight_remains<20\nactions.cds+=/apocalypse,if=variable.st_planning||boss&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=variable.st_planning&!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+=/vile_contagion,cycle_targets=1,if=debuff.festering_wound.stack>=4&variable.adds_remain\nactions.cds_aoe+=/unholy_assault,cycle_targets=1,if=variable.adds_remain&(debuff.festering_wound.stack>=2&cooldown.vile_contagion.remains<3||!talent.vile_contagion)\nactions.cds_aoe+=/dark_transformation,if=variable.adds_remain&(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.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=variable.adds_remain&rune<=3\nactions.cds_aoe+=/abomination_limb,if=variable.adds_remain\n\n## San'layn AoE Cooldowns\nactions.cds_aoe_san+=/vile_contagion,cycle_targets=1,if=debuff.festering_wound.stack>=4&variable.adds_remain\nactions.cds_aoe_san+=/dark_transformation,if=variable.adds_remain&(buff.death_and_decay.up||active_enemies<=3)\nactions.cds_aoe_san+=/unholy_assault,cycle_targets=1,if=debuff.festering_wound.stack<3&variable.adds_remain&talent.vile_contagion&debuff.festering_wound.stack<=2&cooldown.vile_contagion.remains<6\nactions.cds_aoe_san+=/unholy_assault,cycle_targets=1,if=variable.adds_remain&!talent.vile_contagion&buff.dark_transformation.up&buff.dark_transformation.remains<12\nactions.cds_aoe_san+=/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)&(!dot.virulent_plague.ticking&variable.epidemic_targets<active_enemies||(!talent.unholy_blight||talent.unholy_blight&cooldown.dark_transformation.remains>5)&(!talent.raise_abomination||talent.raise_abomination&cooldown.raise_abomination.remains>6))\nactions.cds_aoe_san+=/apocalypse,cycle_targets=1,if=variable.adds_remain&rune<=3\nactions.cds_aoe_san+=/abomination_limb,if=variable.adds_remain\n\n## San'layn Cleave Cooldowns\nactions.cds_cleave_san+=/dark_transformation,if=buff.death_and_decay.up&(talent.apocalypse&pet.apoc_ghoul.active||!talent.apocalypse)||boss&fight_remains<20||active_enemies>1&raid_event.adds.remains<20\nactions.cds_cleave_san+=/unholy_assault,if=buff.dark_transformation.up&buff.dark_transformation.remains<12||boss&fight_remains<20||active_enemies>1&raid_event.adds.remains<20\nactions.cds_cleave_san+=/apocalypse,cycle_targets=1\nactions.cds_cleave_san+=/outbreak,cycle_targets=1,if=(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>6)&(!talent.raise_abomination||talent.raise_abomination&cooldown.raise_abomination.remains>5)\n## [Syrif] This line may be changed soon\nactions.cds_cleave_san+=/abomination_limb,if=!buff.gift_of_the_sanlayn.up&!buff.sudden_doom.react&buff.festermight.up&debuff.festering_wound.stack<=2||!buff.gift_of_the_sanlayn.up&boss&fight_remains<12\n\n# San'layn Cooldowns\nactions.cds_san+=/dark_transformation,if=variable.st_planning&(talent.apocalypse&pet.apoc_ghoul.active||!talent.apocalypse)||boss&fight_remains<20\nactions.cds_san+=/unholy_assault,if=variable.st_planning&(buff.dark_transformation.up&buff.dark_transformation.remains<12)||boss&fight_remains<20\nactions.cds_san+=/apocalypse,if=variable.st_planning||boss&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=variable.st_planning&!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&variable.adds_remain&(cooldown.apocalypse.remains||!talent.apocalypse)\nactions.cleave+=/death_coil,if=!variable.pooling_runic_power&talent.improved_death_coil\nactions.cleave+=/wound_spender,if=buff.vampiric_strike.up\nactions.cleave+=/death_coil,if=!variable.pooling_runic_power&!talent.improved_death_coil\nactions.cleave+=/festering_strike,cycle_targets=1,if=buff.vampiric_strike.down&!variable.pop_wounds&debuff.festering_wound.stack<2||buff.festering_scythe.react\nactions.cleave+=/festering_strike,cycle_targets=1,if=buff.vampiric_strike.down&cooldown.apocalypse.remains<variable.apoc_timing&debuff.festering_wound.down\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+=/wound_spender,if=buff.infliction_of_sorrow.up\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||set_bonus.tww2_4pc&buff.essence_of_the_blood_queen.at_max_stacks&talent.frenzied_bloodthirst&!buff.vampiric_strike.up\nactions.san_fishing+=/soul_reaper,if=target.health.pct<=35&target.time_to_die>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+=/wound_spender,if=buff.infliction_of_sorrow.up\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||set_bonus.tww2_4pc&runic_power>80||buff.gift_of_the_sanlayn.up&buff.essence_of_the_blood_queen.at_max_stacks&talent.frenzied_bloodthirst&set_bonus.tww2_4pc&buff.winning_streak_unholy.at_max_stacks&rune<=3&buff.essence_of_the_blood_queen.remains>3\nactions.san_st+=/wound_spender,if=buff.vampiric_strike.up&debuff.festering_wound.up||buff.gift_of_the_sanlayn.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&target.time_to_die>5\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.up||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\nactions.san_trinkets+=/use_item,slot=main_hand,if=(!variable.trinket_1_buffs&!variable.trinket_2_buffs||trinket.1.cooldown.remains>20&!variable.trinket_2_buffs||trinket.2.cooldown.remains>20&!variable.trinket_1_buffs||trinket.1.cooldown.remains>20&trinket.2.cooldown.remains>20)&(buff.dark_transformation.up&buff.dark_transformation.remains>10)&(!talent.raise_abomination&!talent.army_of_the_dead||!talent.raise_abomination&talent.army_of_the_dead&pet.army_ghoul.active||talent.raise_abomination&pet.abomination.active||(variable.trinket_1_buffs||variable.trinket_2_buffs||boss&fight_remains<15))\n\n## Single Target Non-San'layn\nactions.st+=/soul_reaper,if=target.health.pct<=35&target.time_to_die>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||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\nactions.trinkets+=/use_item,slot=main_hand,if=(!variable.trinket_1_buffs&!variable.trinket_2_buffs||trinket.1.cooldown.remains&!variable.trinket_2_buffs||trinket.2.cooldown.remains&!variable.trinket_1_buffs||trinket.1.cooldown.remains&trinket.2.cooldown.remains)&(pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=18||!talent.apocalypse&buff.dark_transformation.up)&((trinket.1.cooldown.duration=90||trinket.2.cooldown.duration=90)||!talent.raise_abomination&!talent.army_of_the_dead||!talent.raise_abomination&talent.army_of_the_dead&pet.army_ghoul.active||talent.raise_abomination&pet.abomination.active)",
|
|
["author"] = "SimulationCraft",
|
|
},
|
|
["Frost DK"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250415,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-04-15: Improve Performance\n\n2025-03-25: time_to_die\n\n2025-03-25: Sync with SimC\n\n2025-02-26: Sync with SimC",
|
|
["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"] = "fight_remains > 5 & target.time_to_pct_35 < 5 & target.time_to_die > 5 & ! buff.killing_machine.react",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.rime_buffs",
|
|
["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_die > 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",
|
|
["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,
|
|
["criteria"] = "fight_remains > 5 & target.time_to_pct_35 < 5 & target.time_to_die > 5 & active_enemies = 1 & rune > 2 & ! buff.killing_machine.up",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["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_die > 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",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_1_sync",
|
|
["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_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["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_die > 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"] = "fight_remains > 5 & target.time_to_pct_35 < 5 & target.time_to_die > 5 & active_enemies = 1 & rune > 2",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["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 || active_enemies >= 2",
|
|
["var_name"] = "use_breath",
|
|
},
|
|
{
|
|
["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.breath_of_sindragosa.enabled || buff.breath_of_sindragosa.up ) & ( 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"] = "0",
|
|
["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"] = "main_hand",
|
|
["criteria"] = "buff.pillar_of_frost.up || ( variable.trinket_1_buffs & variable.trinket_2_buffs & ( trinket.t1.cooldown.remains < cooldown.pillar_of_frost.remains || trinket.t2.cooldown.remains < cooldown.pillar_of_frost.remains ) & cooldown.pillar_of_frost.remains > 20 ) || boss & fight_remains < 15",
|
|
["slot"] = "main_hand",
|
|
},
|
|
{
|
|
["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,
|
|
["criteria"] = "( ! talent.breath_of_sindragosa.enabled || buff.breath_of_sindragosa.up ) & ( 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 ) || boss & fight_remains < 25",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "potion",
|
|
["description"] = "Cooldowns",
|
|
},
|
|
{
|
|
["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 < gcd.max * 3 || ( 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 > 10 || ! variable.use_breath ) & 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 ) & ( cooldown.pillar_of_frost.ready & variable.use_breath || 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 ) & variable.fwf_buffs || boss & 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 ) & 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",
|
|
["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 & rune > 2",
|
|
["action"] = "any_dnd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.death_and_decay.up & active_enemies > 1 & fight_remains > 5 & ( buff.pillar_of_frost.up & buff.killing_machine.react & ( talent.enduring_strength.enabled || buff.pillar_of_frost.remains > 5 ) ) & ( active_enemies > 5 || talent.cleaving_strikes.enabled & active_enemies >= 2 )",
|
|
["action"] = "any_dnd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.death_and_decay.up & active_enemies > 1 & fight_remains > 5 & ( ! buff.pillar_of_frost.up & ( cooldown.death_and_decay.charges = 2 & cooldown.pillar_of_frost.remains ) ) & ( active_enemies > 5 || talent.cleaving_strikes.enabled & active_enemies >= 2 )",
|
|
["action"] = "any_dnd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.death_and_decay.up & active_enemies > 1 & fight_remains > 5 & ( ! buff.pillar_of_frost.up & ( cooldown.death_and_decay.charges = 1 & cooldown.pillar_of_frost.remains > ( cooldown.death_and_decay.duration - ( cooldown.death_and_decay.duration * ( cooldown.death_and_decay.charges_fractional % 1 ) ) ) ) ) & ( active_enemies > 5 || talent.cleaving_strikes.enabled & active_enemies >= 2 )",
|
|
["action"] = "any_dnd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.death_and_decay.up & active_enemies > 1 & fight_remains > 5 & ( ! buff.pillar_of_frost.up & ( ! 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,
|
|
["criteria"] = "variable.cooldown_check",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "blood_fury",
|
|
["description"] = "Racial Abilities",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "berserking",
|
|
["criteria"] = "variable.cooldown_check",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cooldown_check",
|
|
["action"] = "arcane_pulse",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cooldown_check",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ancestral_call",
|
|
["criteria"] = "variable.cooldown_check",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fireblood",
|
|
["criteria"] = "variable.cooldown_check",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "talent.cold_heart.enabled & ( ! buff.killing_machine.up || talent.breath_of_sindragosa.enabled ) & ( ( debuff.razorice.stack = 5 || ! death_knight.runeforge.razorice & ! talent.glacial_advance.enabled & ! talent.avalanche.enabled & ! talent.arctic_assault.enabled ) || boss & fight_remains <= gcd.max )",
|
|
["strict_if"] = "talent.cold_heart.enabled",
|
|
["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,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "talent.obliteration.enabled & buff.pillar_of_frost.up & ! buff.breath_of_sindragosa.up",
|
|
["strict_if"] = "talent.obliteration.enabled & buff.pillar_of_frost.up",
|
|
["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"] = 20250415,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 10: 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 11: 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 15: 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 19: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 19: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 19: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 19: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 19: 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 20: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 20: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 20: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 20: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 20: 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 21: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 21: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 21: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 21: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 22: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 22: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 22: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 22: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 23: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 23: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 23: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 23: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 23: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 24: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (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.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 24: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 25: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 25: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 25: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 25: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 49: Converted operations in '!buff.death_and_decay.up&active_enemies>1&fight_remains>5&(!buff.pillar_of_frost.up&(cooldown.death_and_decay.charges=1&cooldown.pillar_of_frost.remains>(cooldown.death_and_decay.duration-(cooldown.death_and_decay.duration*(cooldown.death_and_decay.charges_fractional%%1)))))&(active_enemies>5||talent.cleaving_strikes.enabled&active_enemies>=2)' to '!buff.death_and_decay.up&active_enemies>1&fight_remains>5&(!buff.pillar_of_frost.up&(cooldown.death_and_decay.charges=1&cooldown.pillar_of_frost.remains>(cooldown.death_and_decay.duration-(cooldown.death_and_decay.duration*(cooldown.death_and_decay.charges_fractional%1)))))&(active_enemies>5||talent.cleaving_strikes.enabled&active_enemies>=2)'.\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 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 1: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 1: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 1: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 1: Converted operations in 'trinket.t1.has_use_buff&(talent.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 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted operations in 'trinket.t2.has_use_buff&(talent.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).\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nImported 7 action lists.\n",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/deathknight_frost.simc\n## Up to date with SimC: March 5 2025 - 04347cf\n\n## Evaluates a trinkets cooldown, divided by pillar of frost, empower rune weapon, or breath of sindragosa's cooldown. If it's value has no remainder return 1, else return 0.5.\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=trinket.1.has_use_buff&(talent.pillar_of_frost&!talent.breath_of_sindragosa&(trinket.1.cooldown.duration%%cooldown.pillar_of_frost.duration=0)||talent.breath_of_sindragosa&(cooldown.breath_of_sindragosa.duration%%trinket.1.cooldown.duration=0))\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=trinket.2.has_use_buff&(talent.pillar_of_frost&!talent.breath_of_sindragosa&(trinket.2.cooldown.duration%%cooldown.pillar_of_frost.duration=0)||talent.breath_of_sindragosa&(cooldown.breath_of_sindragosa.duration%%trinket.2.cooldown.duration=0))\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_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=use_breath,value=variable.st_planning||active_enemies>=2\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.breath_of_sindragosa||buff.breath_of_sindragosa.up)&(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=0,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\nactions+=/use_item,slot=main_hand,if=buff.pillar_of_frost.up||(variable.trinket_1_buffs&variable.trinket_2_buffs&(trinket.1.cooldown.remains<cooldown.pillar_of_frost.remains||trinket.2.cooldown.remains<cooldown.pillar_of_frost.remains)&cooldown.pillar_of_frost.remains>20)||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,use_off_gcd=1,if=(!talent.breath_of_sindragosa||buff.breath_of_sindragosa.up)&(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)||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<gcd.max*3||(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>10||!variable.use_breath)&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)&(cooldown.pillar_of_frost.ready&variable.use_breath||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)&variable.fwf_buffs||boss&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)&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\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&rune>2\nactions+=/any_dnd,if=!buff.death_and_decay.up&active_enemies>1&fight_remains>5&(buff.pillar_of_frost.up&buff.killing_machine.react&(talent.enduring_strength||buff.pillar_of_frost.remains>5))&(active_enemies>5||talent.cleaving_strikes&active_enemies>=2)\nactions+=/any_dnd,if=!buff.death_and_decay.up&active_enemies>1&fight_remains>5&(!buff.pillar_of_frost.up&(cooldown.death_and_decay.charges=2&cooldown.pillar_of_frost.remains))&(active_enemies>5||talent.cleaving_strikes&active_enemies>=2)\nactions+=/any_dnd,if=!buff.death_and_decay.up&active_enemies>1&fight_remains>5&(!buff.pillar_of_frost.up&(cooldown.death_and_decay.charges=1&cooldown.pillar_of_frost.remains>(cooldown.death_and_decay.duration-(cooldown.death_and_decay.duration*(cooldown.death_and_decay.charges_fractional%%1)))))&(active_enemies>5||talent.cleaving_strikes&active_enemies>=2)\nactions+=/any_dnd,if=!buff.death_and_decay.up&active_enemies>1&fight_remains>5&(!buff.pillar_of_frost.up&(!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# Racial Abilities\nactions+=/blood_fury,use_off_gcd=1,if=variable.cooldown_check\nactions+=/berserking,use_off_gcd=1,if=variable.cooldown_check\nactions+=/arcane_pulse,if=variable.cooldown_check\nactions+=/lights_judgment,if=variable.cooldown_check\nactions+=/ancestral_call,use_off_gcd=1,if=variable.cooldown_check\nactions+=/fireblood,use_off_gcd=1,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,strict_if=talent.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,strict_if=talent.obliteration&buff.pillar_of_frost.up,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_die>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+=/soul_reaper,if=fight_remains>5&target.time_to_pct_35<5&target.time_to_die>5&active_enemies=1&rune>2\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+=/soul_reaper,if=fight_remains>5&target.time_to_pct_35<5&target.time_to_die>5&active_enemies=1&rune>2&!buff.killing_machine.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_die>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+=/soul_reaper,if=fight_remains>5&target.time_to_pct_35<5&target.time_to_die>5&!buff.killing_machine.react\nactions.single_target+=/howling_blast,if=variable.rime_buffs\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_die>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\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",
|
|
["spec"] = 251,
|
|
},
|
|
["Arcane"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250430,
|
|
["spec"] = 62,
|
|
["desc"] = "2025-04-26: Revise CD opener\n- NOTE: Arcane relies on TotM coming off CD for its other CDs to be used.\n\n2025-03-01: TWW Season 2 update",
|
|
["lists"] = {
|
|
["cd_opener"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.presence_of_mind.up",
|
|
["action"] = "arcane_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.high_voltage.enabled & buff.clearcasting.down",
|
|
["line_cd"] = "10",
|
|
["action"] = "arcane_orb",
|
|
["description"] = "Use Orb for Charges on the opener if you have High Voltage as the Missiles will generate the remaining Charge you need",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_tempo.up & cooldown.evocation.ready & buff.arcane_tempo.remains < gcd.max * 5",
|
|
["line_cd"] = "11",
|
|
["action"] = "arcane_barrage",
|
|
["description"] = "Barrage before Evocation if Tempo will expire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.arcane_surge.remains < ( gcd.max * 3 ) & cooldown.touch_of_the_magi.remains < ( gcd.max * 5 )",
|
|
["action"] = "evocation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_missiles",
|
|
["interrupt_immediate"] = "1",
|
|
["interrupt_global"] = "1",
|
|
["criteria"] = "action.arcane_missiles.time_since > time & ( ( prev_gcd.1.evocation || prev_gcd.1.arcane_surge ) || variable.opener ) & buff.nether_precision.down & ( buff.aether_attunement.down || set_bonus.tww2 > 3 )",
|
|
["line_cd"] = "30",
|
|
["interrupt_if"] = "tick_time>gcd.remains&(buff.aether_attunement.down||(active_enemies>3&(!talent.time_loop||talent.resonance)))",
|
|
["chain"] = "1",
|
|
["description"] = "Use Missiles to get Nether Precision up for your opener and to spend Aether Attunement if you have 4pc S2 set before Surging, clipping logic now applies to Aether Attunement in AOE when you have Time Loop talented and not Resonance.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_surge",
|
|
["description"] = "[Hekili] TODO: How much Arcane Surge CD recovery should we waste if TotM isn't ready?",
|
|
["criteria"] = "cooldown.touch_of_the_magic.remains > 25 || cooldown.touch_of_the_magi.remains < ( action.arcane_surge.execute_time + ( gcd.max * ( buff.arcane_charge.stack = 4 ) ) )",
|
|
},
|
|
},
|
|
["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,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( equipped.gladiators_badge || equipped.signet_of_the_priory || equipped.high_speakers_accretion || equipped.treacherous_transmitter || equipped.imperfect_ascendancy_serum || equipped.quickwick_candlestick || equipped.soulletting_ruby || equipped.funhouse_lens || equipped.house_of_cards || equipped.flarendos_pilot_light || equipped.signet_of_the_priory ) & equipped.spymasters_web & cooldown.evocation.remains < 17 & ( buff.spymasters_report.stack > 35 || ( fight_remains < 90 & buff.spymasters_report.stack > 25 ) )",
|
|
["var_name"] = "spymasters_double_on_use",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "use_items",
|
|
["description"] = "Trinket specific use cases vary, default is just with cooldowns",
|
|
["criteria"] = "( ( prev_gcd.1.arcane_surge & variable.steroid_trinket_equipped ) || ( cooldown.arcane_surge.ready & variable.steroid_trinket_equipped ) || ! variable.steroid_trinket_equipped & variable.nonsteroid_trinket_equipped || ( variable.nonsteroid_trinket_equipped & buff.siphon_storm.remains < 10 & ( cooldown.evocation.remains > 17 || trinket.cooldown.remains > 20 ) ) ) & ! variable.spymasters_double_on_use || ( boss & fight_remains < 20 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "treacherous_transmitter",
|
|
["criteria"] = "buff.spymasters_report.stack < 40",
|
|
["name"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "spymasters_web",
|
|
["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 ) ) || boss & fight_remains < 20 )",
|
|
["name"] = "spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "high_speakers_accretion",
|
|
["criteria"] = "( prev_gcd.1.arcane_surge || prev_gcd.1.evocation || ( buff.siphon_storm.up & variable.opener ) || cooldown.evocation.remains < 4 || boss & fight_remains < 20 ) & ! variable.spymasters_double_on_use",
|
|
["name"] = "high_speakers_accretion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["criteria"] = "( cooldown.evocation.ready || cooldown.arcane_surge.ready || boss & fight_remains < 21 ) & ! variable.spymasters_double_on_use",
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["criteria"] = "( debuff.touch_of_the_magi.remains > 8 & buff.arcane_surge.up ) || ( debuff.touch_of_the_magi.remains > 8 & variable.neural_on_mini )",
|
|
["name"] = "neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["criteria"] = "debuff.touch_of_the_magi.up & variable.opener",
|
|
["var_name"] = "opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_barrage",
|
|
["criteria"] = "fight_remains < 2",
|
|
["line_cd"] = "5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "target.time_to_die > 15 & prev_gcd.1.arcane_barrage & ( action.arcane_barrage.in_flight_remains <= 0.5 || gcd.remains <= 0.5 ) & ( ! talent.arcane_surge.enabled || buff.arcane_surge.up || cooldown.arcane_surge.remains > 30 ) || ( prev_gcd.1.arcane_surge & ( buff.arcane_charge.stack < 4 || buff.nether_precision.down ) ) || ( ! talent.arcane_surge.enabled || cooldown.arcane_surge.remains > 30 ) & cooldown.touch_of_the_magi.ready & buff.arcane_charge.stack < 4 & ! prev_gcd.1.arcane_barrage",
|
|
["var_name"] = "touch_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.touch_condition",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "touch_of_the_magi",
|
|
["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, throws up Touch as soon as possible even without Barraging first if it's ready for miniburn.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "[Hekili] The cd_opener list is for opening CDs, but not specifically start of combat. Sims consistently exit cd_opener with TOTM on CD.",
|
|
["criteria"] = "cooldown.touch_of_the_magi.remains < 2 * gcd.max || cooldown.evocation.remains < 2 * gcd.max || cooldown.arcane_surge.remains < 2 * gcd.max",
|
|
["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",
|
|
["criteria"] = "! talent.arcing_cleave.enabled",
|
|
["var_name"] = "aoe_target_count",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "aoe_list",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["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 || equipped.soulletting_ruby || equipped.funhouse_lens || equipped.house_of_cards || equipped.flarendos_pilot_light || equipped.signet_of_the_priory || equipped.neural_synapse_enhancer",
|
|
["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.treacherous_transmitter || equipped.imperfect_ascendancy_serum || equipped.quickwick_candlestick || equipped.soulletting_ruby || equipped.funhouse_lens || equipped.house_of_cards || equipped.flarendos_pilot_light || equipped.signet_of_the_priory",
|
|
["var_name"] = "neural_on_mini",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "equipped.blastmaster3000 || equipped.ratfang_toxin || equipped.ingenious_mana_battery || equipped.geargrinders_spare_keys || equipped.ringing_ritual_mud || equipped.goo_blin_grenade || equipped.noggenfogger_ultimate_deluxe || equipped.garbagemancers_last_resort || equipped.mad_queens_mandate || equipped.fearbreakers_echo || equipped.mereldars_toll || equipped.gooblin_grenade",
|
|
["var_name"] = "nonsteroid_trinket_equipped",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "ingenious_mana_battery",
|
|
["action"] = "ingenious_mana_battery",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
},
|
|
["sunfury"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shifting_power",
|
|
["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.true_remains > 15 & cooldown.touch_of_the_magi.true_remains > 10 ) & fight_remains > 10 ) & buff.arcane_soul.down & ( buff.intuition.down || ( buff.intuition.up & buff.intuition.remains > cast_time ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.touch_of_the_magi.remains <= gcd.max & buff.nether_precision.up & active_enemies < 4",
|
|
["action"] = "presence_of_mind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_missiles",
|
|
["description"] = "When Arcane Soul is up, use Missiles to generate Nether Precision as needed while also ensuring you end Soul with 3 Clearcasting.",
|
|
["criteria"] = "buff.nether_precision.down & buff.clearcasting.up & buff.arcane_soul.up & buff.arcane_soul.remains > gcd.max * ( 4 - buff.clearcasting.up )",
|
|
["interrupt_if"] = "tick_time>gcd.remains",
|
|
["interrupt_immediate"] = "1",
|
|
["chain"] = "1",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_soul.up",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_barrage",
|
|
["description"] = "Prioritize Tempo and Intuition if they are about to expire, spend Aether Attunement if you have 4pc S2 set before Touch.",
|
|
["criteria"] = "( buff.arcane_tempo.up & buff.arcane_tempo.remains < gcd.max ) || ( buff.intuition.up & buff.intuition.remains < gcd.max )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.orb_barrage.enabled & active_enemies > 1 & buff.arcane_harmony.stack >= 18 & ( ( active_enemies > 3 & ( talent.resonance.enabled || talent.high_voltage.enabled ) ) || buff.nether_precision.down || buff.nether_precision.stack = 1 || ( buff.nether_precision.stack = 2 & buff.clearcasting.stack = 3 ) ) )",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_missiles",
|
|
["chain"] = "1",
|
|
["interrupt_if"] = "tick_time>gcd.remains&(buff.aether_attunement.down||(active_enemies>3&(!talent.time_loop||talent.resonance)))",
|
|
["interrupt_immediate"] = "1",
|
|
["criteria"] = "buff.clearcasting.up & set_bonus.tww2 > 3 & buff.aether_attunement.up & cooldown.touch_of_the_magi.remains < gcd.max * ( 3 - ( 1.5 * ( active_enemies > 3 & ( ! talent.time_loop.enabled || talent.resonance.enabled ) ) ) )",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( debuff.magis_spark_arcane_blast.up & ( ( debuff.magis_spark_arcane_blast.remains < ( cast_time + gcd.max ) ) || active_enemies = 1 || talent.leydrinker.enabled ) ) || buff.leydrinker.up ) & buff.arcane_charge.stack = 4 & ( buff.nether_precision.up || buff.clearcasting.down )",
|
|
["line_cd"] = "2",
|
|
["action"] = "arcane_blast",
|
|
["description"] = "Blast whenever you have the bonus from Leydrinker or Magi's Spark up, don't let spark expire in AOE.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_barrage",
|
|
["description"] = "Barrage into Touch if you have charges when it comes up.",
|
|
["criteria"] = "buff.arcane_charge.stack = 4 & cooldown.touch_of_the_magi.remains < gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_barrage",
|
|
["description"] = "AOE Barrage conditions are optimized for funnel, avoids overcapping Harmony stacks (line below Tempo line above), spending Charges when you have a way to recoup them via High Voltage or Orb while pooling sometimes for Touch with various talent optimizations.",
|
|
["criteria"] = "( talent.high_voltage.enabled & active_enemies > 1 & buff.arcane_charge.stack = 4 & buff.clearcasting.up & buff.nether_precision.stack = 1 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_enemies > 1 & talent.high_voltage.enabled & buff.arcane_charge.stack = 4 & buff.clearcasting.up & buff.aether_attunement.up & buff.glorious_incandescence.down & buff.intuition.down )",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_enemies > 2 & talent.orb_barrage.enabled & talent.high_voltage.enabled & debuff.magis_spark_arcane_blast.down & buff.arcane_charge.stack = 4 & target.health.pct < 35 & talent.arcane_bombardment.enabled & ( buff.nether_precision.up || ( buff.nether_precision.down & buff.clearcasting.down ) ) )",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( active_enemies > 2 || ( active_enemies > 1 & target.health.pct < 35 & talent.arcane_bombardment.enabled ) ) & cooldown.arcane_orb.remains < gcd.max & buff.arcane_charge.stack = 4 & cooldown.touch_of_the_magi.remains > gcd.max * 6 & ( debuff.magis_spark_arcane_blast.down || ! talent.magis_spark.enabled ) & buff.nether_precision.up & ( talent.high_voltage.enabled || buff.nether_precision.stack = 2 || ( buff.nether_precision.stack = 1 & buff.clearcasting.down ) ) )",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_missiles",
|
|
["description"] = "Missiles to recoup Charges, maintain Nether Precisioin, or keep from overcapping Clearcasting with High Voltage or in single target.",
|
|
["criteria"] = "buff.clearcasting.up & ( ( talent.high_voltage.enabled & buff.arcane_charge.stack < 4 ) || buff.nether_precision.down || ( buff.clearcasting.stack = 3 & ( ! talent.high_voltage.enabled || active_enemies = 1 ) ) )",
|
|
["interrupt_if"] = "tick_time>gcd.remains&(buff.aether_attunement.down||(active_enemies>3&(!talent.time_loop||talent.resonance)))",
|
|
["interrupt_immediate"] = "1",
|
|
["chain"] = "1",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_barrage",
|
|
["description"] = "Barrage with Burden if 2-4 targets and you have a way to recoup Charges, however skip this is you have Bauble and don't have High Voltage.",
|
|
["criteria"] = "( buff.arcane_charge.stack = 4 & active_enemies > 1 & active_enemies < 5 & buff.burden_of_power.up & ( ( talent.high_voltage.enabled & buff.clearcasting.up ) || buff.glorious_incandescence.up || buff.intuition.up || ( cooldown.arcane_orb.remains < gcd.max || action.arcane_orb.charges > 0 ) ) ) & ( ! talent.consortiums_bauble.enabled || talent.high_voltage.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_orb",
|
|
["description"] = "Arcane Orb to recover Charges quickly if below 3.",
|
|
["criteria"] = "buff.arcane_charge.stack < 3",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_barrage",
|
|
["description"] = "Barrage with Intuition or Incandescence unless Touch is almost up or you don't have Magi's Spark talented.",
|
|
["criteria"] = "( buff.glorious_incandescence.up & ( cooldown.touch_of_the_magi.remains > 6 || ! talent.magis_spark.enabled ) ) || buff.intuition.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "presence_of_mind",
|
|
["description"] = "In AOE, Presence of Mind is used to build Charges. Arcane Explosion can be used to build your first Charge.",
|
|
["criteria"] = "( buff.arcane_charge.stack = 3 || buff.arcane_charge.stack = 2 ) & active_enemies >= 3",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_charge.stack < 2 & active_enemies > 1",
|
|
["action"] = "arcane_explosion",
|
|
},
|
|
{
|
|
["action"] = "arcane_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_barrage",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["spellslinger_aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "supernova",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( buff.arcane_surge.down & buff.siphon_storm.down & debuff.touch_of_the_magi.down & cooldown.evocation.true_remains > 15 & cooldown.touch_of_the_magi.true_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.true_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,
|
|
["action"] = "arcane_barrage",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_missiles",
|
|
["chain"] = "1",
|
|
["interrupt_if"] = "tick_time>gcd.remains",
|
|
["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,
|
|
["action"] = "presence_of_mind",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.arcane_charge.stack = 4",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.reverberate.enabled || buff.arcane_charge.stack < 2 )",
|
|
["action"] = "arcane_explosion",
|
|
},
|
|
{
|
|
["action"] = "arcane_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_barrage",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["spellslinger"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shifting_power",
|
|
["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, don't cast if it'll conflict with Intuition expiration.",
|
|
["criteria"] = "( ( ( ( ( action.arcane_orb.charges = talent.charged_orb.enabled ) & cooldown.arcane_orb.true_remains ) || cooldown.touch_of_the_magi.true_remains < 23 ) & buff.arcane_surge.down & buff.siphon_storm.down & debuff.touch_of_the_magi.down & ( buff.intuition.down || ( buff.intuition.up & buff.intuition.remains > cast_time ) ) & cooldown.touch_of_the_magi.true_remains > ( 12 + 6 * gcd.max ) ) || ( prev_gcd.1.arcane_barrage & talent.shifting_shards.enabled & ( buff.intuition.down || ( buff.intuition.up & buff.intuition.remains > cast_time ) ) & ( buff.arcane_surge.up || debuff.touch_of_the_magi.up || cooldown.evocation.true_remains < 20 ) ) ) & fight_remains > 10 & ( buff.arcane_tempo.remains > gcd.max * 2.5 || buff.arcane_tempo.down )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cancel_buff",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "prev_gcd.1.arcane_blast & buff.presence_of_mind.stack = 1",
|
|
["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.",
|
|
["buff_name"] = "presence_of_mind",
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "arcane_barrage",
|
|
["description"] = "Barrage if Tempo is expiring, you can Barrage a little earlier if you have Nether Precision.",
|
|
["criteria"] = "( buff.arcane_tempo.up & buff.arcane_tempo.remains < ( gcd.max + ( gcd.max * 2 * ( buff.nether_precision.stack = 1 ) ) ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_barrage",
|
|
["description"] = "Barrage if Intuition is expiring.",
|
|
["criteria"] = "( buff.intuition.up & buff.intuition.remains < gcd.max )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_barrage",
|
|
["description"] = "Barrage if Harmony is over 18 stacks, or 12 with High Voltage and either no Nether Precision or your last stack of it.",
|
|
["criteria"] = "buff.arcane_harmony.stack >= ( 18 - ( 6 * talent.high_voltage.enabled ) ) & ( buff.nether_precision.stack < 2 || active_enemies > 3 & buff.clearcasting.up & talent.high_voltage.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_missiles",
|
|
["description"] = "Use Aether Attunement up before casting Touch if you have S2 4pc equipped to avoid munching.",
|
|
["criteria"] = "buff.aether_attunement.up & cooldown.touch_of_the_magi.remains < gcd.max * 3 & buff.clearcasting.up & set_bonus.tww2 > 3",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_barrage",
|
|
["description"] = "Barrage if Touch is up or will be up while Barrage is in the air.",
|
|
["criteria"] = "cooldown.touch_of_the_magi.remains < gcd.max & variable.touch_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_barrage",
|
|
["description"] = "Barrage in AOE if you can refund Charges through High Voltage as soon as possible if you have Aether Attunement and Nether Precision up.",
|
|
["criteria"] = "talent.high_voltage.enabled & talent.orb_barrage.enabled & buff.arcane_charge.stack > 1 & buff.clearcasting.up & buff.aether_attunement.up & ( buff.nether_precision.stack = 1 || ( buff.nether_precision.up & active_enemies > 1 ) || ( ( buff.nether_precision.up || ( buff.clearcasting.stack < 3 & buff.intuition.down ) ) & active_enemies > 3 ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_missiles",
|
|
["description"] = "Use Clearcasting procs to keep Nether Precision up, if you don't have S2 4pc try to pool Aether Attunement for cooldown windows.",
|
|
["criteria"] = "( buff.clearcasting.up & buff.nether_precision.down & ( ( cooldown.touch_of_the_magi.remains > gcd.max * 7 & cooldown.arcane_surge.remains > gcd.max * 7 ) || buff.clearcasting.stacks > 1 || ! talent.magis_spark.enabled || ( cooldown.touch_of_the_magi.remains < gcd.max * 4 & buff.aether_attunement.down ) || set_bonus.tww2 > 3 ) )",
|
|
["interrupt_if"] = "tick_time>gcd.remains&(buff.aether_attunement.down||(active_enemies>3&(!talent.time_loop||talent.resonance)))",
|
|
["interrupt_immediate"] = "1",
|
|
["chain"] = "1",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_missiles",
|
|
["description"] = "[Hekili] Use Clearcasting procs at end of fight (split from previous AM entry).",
|
|
["criteria"] = "( fight_remains < 5 & buff.clearcasting.up )",
|
|
["interrupt_if"] = "tick_time>gcd.remains&(buff.aether_attunement.down||(active_enemies>3&(!talent.time_loop||talent.resonance)))",
|
|
["interrupt_immediate"] = "1",
|
|
["chain"] = "1",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( debuff.magis_spark_arcane_blast.up & ( ( debuff.magis_spark_arcane_blast.remains < ( cast_time + gcd.max ) ) || active_enemies = 1 || talent.leydrinker.enabled ) ) || buff.leydrinker.up ) & buff.arcane_charge.stack = 4 & ! talent.charged_orb.enabled & active_enemies < 3",
|
|
["line_cd"] = "2",
|
|
["action"] = "arcane_blast",
|
|
["description"] = "Blast whenever you have the bonus from Leydrinker or Magi's Spark up, don't let spark expire in AOE.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_barrage",
|
|
["description"] = "Barrage in AOE with Orb Barrage under some minor restrictions if you can recoup Charges, pooling for Spark as Touch comes off cooldown.",
|
|
["criteria"] = "talent.orb_barrage.enabled & active_enemies > 1 & ( debuff.magis_spark_arcane_blast.down || ! talent.magis_spark.enabled ) & buff.arcane_charge.stack = 4 & ( ( talent.high_voltage.enabled & active_enemies > 2 ) || ( ( cooldown.touch_of_the_magi.remains > gcd.max * 6 || ! talent.magis_spark.enabled ) || ( talent.charged_orb.enabled & cooldown.arcane_orb.charges_fractional > 1.8 ) ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_barrage",
|
|
["description"] = "Barrage in AOE if Orb is up or enemy is in execute range.",
|
|
["criteria"] = "active_enemies > 1 & ( debuff.magis_spark_arcane_blast.down || ! talent.magis_spark.enabled ) & buff.arcane_charge.stack = 4 & ( cooldown.arcane_orb.remains < gcd.max || ( target.health.pct < 35 & talent.arcane_bombardment.enabled ) ) & ( buff.nether_precision.stack = 1 || ( buff.nether_precision.down & talent.high_voltage.enabled ) || ( buff.nether_precision.stack = 2 & target.health.pct < 35 & talent.arcane_bombardment.enabled & talent.high_voltage.enabled ) ) & ( cooldown.touch_of_the_magi.remains > gcd.max * 6 || ( talent.charged_orb.enabled & cooldown.arcane_orb.charges_fractional > 1.8 ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_missiles",
|
|
["description"] = "Missile to refill charges if you have High Voltage and either Aether Attunement or more than one Clearcasting proc.",
|
|
["criteria"] = "talent.high_voltage.enabled & ( buff.clearcasting.stacks > 1 || ( buff.clearcasting.up & buff.aether_attunement.up ) ) & buff.arcane_charge.stack < 3",
|
|
["interrupt_if"] = "tick_time>gcd.remains&(buff.aether_attunement.down||(active_enemies>3&(!talent.time_loop||talent.resonance)))",
|
|
["interrupt_immediate"] = "1",
|
|
["chain"] = "1",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_orb",
|
|
["description"] = "Orb below 3 charges in single target.",
|
|
["criteria"] = "( active_enemies = 1 & buff.arcane_charge.stack < 3 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_orb",
|
|
["description"] = "[Hekili] Orb with 0 charges, 1 charge w/ High Voltage, split from previous entry.",
|
|
["criteria"] = "buff.arcane_charge.stack < 1 + talent.high_voltage.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.intuition.up",
|
|
["action"] = "arcane_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_barrage",
|
|
["description"] = "Barrage in single target if you have High Voltage, last Nether Precision stack, Clearcasting and either Aether or Execute.",
|
|
["criteria"] = "active_enemies = 1 & talent.high_voltage.enabled & buff.arcane_charge.stack = 4 & buff.clearcasting.up & buff.nether_precision.stack = 1 & ( buff.aether_attunement.up || ( target.health.pct < 35 & talent.arcane_bombardment.enabled ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_barrage",
|
|
["description"] = "Barrage if you have orb ready and either Orb Barrage or High Voltage, pool for Spark.",
|
|
["criteria"] = "cooldown.arcane_orb.remains < gcd.max & buff.arcane_charge.stack = 4 & buff.nether_precision.down & talent.orb_barrage.enabled & ( cooldown.touch_of_the_magi.remains > gcd.max * 6 || ! talent.magis_spark.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_barrage",
|
|
["description"] = "Barrage with Orb Barrage or execute if you have orb up and no Nether Precision or no way to get another.",
|
|
["criteria"] = "active_enemies = 1 & ( talent.orb_barrage.enabled || ( target.health.pct < 35 & talent.arcane_bombardment.enabled ) ) & ( cooldown.arcane_orb.remains < gcd.max ) & buff.arcane_charge.stack = 4 & ( cooldown.touch_of_the_magi.remains > gcd.max * 6 || ! talent.magis_spark.enabled ) & ( buff.nether_precision.down || ( buff.nether_precision.stack = 1 & buff.clearcasting.stack = 0 ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_explosion",
|
|
["description"] = "Use Explosion for your first charge or if you have High Voltage you can use it for charge 2 and 3, but at a slightly higher target count.",
|
|
["criteria"] = "active_enemies > 1 & ( ( buff.arcane_charge.stack < 1 & ! talent.high_voltage.enabled ) || ( buff.arcane_charge.stack < 3 & ( buff.clearcasting.down || talent.reverberate.enabled ) ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_explosion",
|
|
["description"] = "Arcane Explosion in single target for your first 2 charges when you have no Clearcasting procs and aren't out of mana.",
|
|
["criteria"] = "active_enemies = 1 & buff.arcane_charge.stack < 2 & buff.clearcasting.down & mana.pct > 10",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "arcane_barrage",
|
|
["description"] = "Barrage in execute if you're at the end of Touch or at the end of Surge windows.",
|
|
["criteria"] = "buff.arcane_charge.stack = 4 & ( ( target.health.pct < 35 & debuff.touch_of_the_magi.remains < ( gcd.max * 1.25 ) & debuff.touch_of_the_magi.remains > action.arcane_barrage.travel_time ) || buff.arcane_surge.remains < gcd.max & buff.arcane_surge.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Nothing else to do? Blast. Out of mana? Barrage.",
|
|
["action"] = "arcane_blast",
|
|
},
|
|
{
|
|
["action"] = "arcane_barrage",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250430,
|
|
["warnings"] = "Imported 6 action lists.\n",
|
|
["profile"] = "## Updated 20250426\n## SimC Build 5996557\n\nactions.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\nactions.precombat+=/variable,name=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||equipped.soulletting_ruby||equipped.funhouse_lens||equipped.house_of_cards||equipped.flarendos_pilot_light||equipped.signet_of_the_priory||equipped.neural_synapse_enhancer\nactions.precombat+=/variable,name=neural_on_mini,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||equipped.soulletting_ruby||equipped.funhouse_lens||equipped.house_of_cards||equipped.flarendos_pilot_light||equipped.signet_of_the_priory\nactions.precombat+=/variable,name=nonsteroid_trinket_equipped,op=set,value=equipped.blastmaster3000||equipped.ratfang_toxin||equipped.ingenious_mana_battery||equipped.geargrinders_spare_keys||equipped.ringing_ritual_mud||equipped.goo_blin_grenade||equipped.noggenfogger_ultimate_deluxe||equipped.garbagemancers_last_resort||equipped.mad_queens_mandate||equipped.fearbreakers_echo||equipped.mereldars_toll||equipped.gooblin_grenade\nactions.precombat+=/use_item,name=ingenious_mana_battery\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\nactions+=/variable,name=spymasters_double_on_use,op=set,value=(equipped.gladiators_badge||equipped.signet_of_the_priory||equipped.high_speakers_accretion||equipped.treacherous_transmitter||equipped.imperfect_ascendancy_serum||equipped.quickwick_candlestick||equipped.soulletting_ruby||equipped.funhouse_lens||equipped.house_of_cards||equipped.flarendos_pilot_light||equipped.signet_of_the_priory)&equipped.spymasters_web&cooldown.evocation.remains<17&(buff.spymasters_report.stack>35||(fight_remains<90&buff.spymasters_report.stack>25))\n# Trinket specific use cases vary, default is just with cooldowns\nactions+=/use_items,if=((prev_gcd.1.arcane_surge&variable.steroid_trinket_equipped)||(cooldown.arcane_surge.ready&variable.steroid_trinket_equipped)||!variable.steroid_trinket_equipped&variable.nonsteroid_trinket_equipped||(variable.nonsteroid_trinket_equipped&buff.siphon_storm.remains<10&(cooldown.evocation.remains>17||trinket.cooldown.remains>20)))&!variable.spymasters_double_on_use||(boss&fight_remains<20)\nactions+=/use_item,name=treacherous_transmitter,if=buff.spymasters_report.stack<40\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=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))||boss&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)&!variable.spymasters_double_on_use\nactions+=/use_item,name=imperfect_ascendancy_serum,if=(cooldown.evocation.ready||cooldown.arcane_surge.ready||boss&fight_remains<21)&!variable.spymasters_double_on_use\nactions+=/use_item,name=neural_synapse_enhancer,if=(debuff.touch_of_the_magi.remains>8&buff.arcane_surge.up)||(debuff.touch_of_the_magi.remains>8&variable.neural_on_mini)\nactions+=/variable,name=opener,op=set,if=debuff.touch_of_the_magi.up&variable.opener,value=0\nactions+=/arcane_barrage,line_cd=5,if=fight_remains<2\nactions+=/variable,name=touch_condition,value=target.time_to_die>15&prev_gcd.1.arcane_barrage&(action.arcane_barrage.in_flight_remains<=0.5||gcd.remains<=0.5)&(!talent.arcane_surge||buff.arcane_surge.up||cooldown.arcane_surge.remains>30)||(prev_gcd.1.arcane_surge&(buff.arcane_charge.stack<4||buff.nether_precision.down))||(!talent.arcane_surge||cooldown.arcane_surge.remains>30)&cooldown.touch_of_the_magi.ready&buff.arcane_charge.stack<4&!prev_gcd.1.arcane_barrage\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, throws up Touch as soon as possible even without Barraging first if it's ready for miniburn.\nactions+=/touch_of_the_magi,use_off_gcd=1,if=variable.touch_condition\n# [Hekili] The cd_opener list is for opening CDs, but not specifically start of combat. Sims consistently exit cd_opener with TOTM on CD.\nactions+=/call_action_list,name=cd_opener,if=cooldown.touch_of_the_magi.remains<2*gcd.max||cooldown.evocation.remains<2*gcd.max||cooldown.arcane_surge.remains<2*gcd.max\n## actions+=/call_action_list,name=sunfury_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\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&buff.clearcasting.down,line_cd=10\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,line_cd=11\nactions.cd_opener+=/evocation,if=cooldown.arcane_surge.remains<(gcd.max*3)&cooldown.touch_of_the_magi.remains<(gcd.max*5)\n# Use Missiles to get Nether Precision up for your opener and to spend Aether Attunement if you have 4pc S2 set before Surging, clipping logic now applies to Aether Attunement in AOE when you have Time Loop talented and not Resonance.\nactions.cd_opener+=/arcane_missiles,if=action.arcane_missiles.time_since>time&((prev_gcd.1.evocation||prev_gcd.1.arcane_surge)||variable.opener)&buff.nether_precision.down&(buff.aether_attunement.down||set_bonus.tww2>3),interrupt_if=tick_time>gcd.remains&(buff.aether_attunement.down||(active_enemies>3&(!talent.time_loop||talent.resonance))),interrupt_immediate=1,interrupt_global=1,chain=1,line_cd=30\n# [Hekili] TODO: How much Arcane Surge CD recovery should we waste if TotM isn't ready?\nactions.cd_opener+=/arcane_surge,if=cooldown.touch_of_the_magic.remains>25||cooldown.touch_of_the_magi.remains<(action.arcane_surge.execute_time+(gcd.max*(buff.arcane_charge.stack=4)))\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, don't cast if it'll conflict with Intuition expiration.\nactions.spellslinger=shifting_power,if=(((((action.arcane_orb.charges=talent.charged_orb)&cooldown.arcane_orb.true_remains)||cooldown.touch_of_the_magi.true_remains<23)&buff.arcane_surge.down&buff.siphon_storm.down&debuff.touch_of_the_magi.down&(buff.intuition.down||(buff.intuition.up&buff.intuition.remains>cast_time))&cooldown.touch_of_the_magi.true_remains>(12+6*gcd.max))||(prev_gcd.1.arcane_barrage&talent.shifting_shards&(buff.intuition.down||(buff.intuition.up&buff.intuition.remains>cast_time))&(buff.arcane_surge.up||debuff.touch_of_the_magi.up||cooldown.evocation.true_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=aaction.presence_of_mind.time_since<0.015\nactions.spellslinger+=/supernova,if=debuff.touch_of_the_magi.remains<=gcd.max&buff.unerring_proficiency.stack=30\n# Barrage if Tempo is expiring; you can Barrage a little earlier if you have Nether Precision.\nactions.spellslinger+=/arcane_barrage,if=(buff.arcane_tempo.up&buff.arcane_tempo.remains<(gcd.max+(gcd.max*2*(buff.nether_precision.stack=1))))\n# Barrage if Intuition is expiring.\nactions.spellslinger+=/arcane_barrage,if=(buff.intuition.up&buff.intuition.remains<gcd.max)\n# Barrage if Harmony is over 18 stacks, or 12 with High Voltage and either no Nether Precision or your last stack of it.\nactions.spellslinger+=/arcane_barrage,if=buff.arcane_harmony.stack>=(18-(6*talent.high_voltage))&(buff.nether_precision.stack<2||active_enemies>3&buff.clearcasting.up&talent.high_voltage)\n# Use Aether Attunement up before casting Touch if you have S2 4pc equipped to avoid munching.\nactions.spellslinger+=/arcane_missiles,if=buff.aether_attunement.up&cooldown.touch_of_the_magi.remains<gcd.max*3&buff.clearcasting.up&set_bonus.tww2>3\n# Barrage if Touch is up or will be up while Barrage is in the air.\nactions.spellslinger+=/arcane_barrage,if=cooldown.touch_of_the_magi.remains<gcd.max&variable.touch_condition\n# Barrage in AOE if you can refund Charges through High Voltage as soon as possible if you have Aether Attunement and Nether Precision up.\nactions.spellslinger+=/arcane_barrage,if=talent.high_voltage&talent.orb_barrage&buff.arcane_charge.stack>1&buff.clearcasting.up&buff.aether_attunement.up&(buff.nether_precision.stack=1||(buff.nether_precision.up&active_enemies>1)||((buff.nether_precision.up||(buff.clearcasting.stack<3&buff.intuition.down))&active_enemies>3))\n# Use Clearcasting procs to keep Nether Precision up, if you don't have S2 4pc try to pool Aether Attunement for cooldown windows.\nactions.spellslinger+=/arcane_missiles,if=(buff.clearcasting.up&buff.nether_precision.down&((cooldown.touch_of_the_magi.remains>gcd.max*7&cooldown.arcane_surge.remains>gcd.max*7)||buff.clearcasting.stacks>1||!talent.magis_spark||(cooldown.touch_of_the_magi.remains<gcd.max*4&buff.aether_attunement.down)||set_bonus.tww2>3)),interrupt_if=tick_time>gcd.remains&(buff.aether_attunement.down||(active_enemies>3&(!talent.time_loop||talent.resonance))),interrupt_immediate=1,interrupt_global=1,chain=1\n# [Hekili] Use Clearcasting procs at end of fight (split from previous AM entry).\nactions.spellslinger+=/arcane_missiles,if=(fight_remains<5&buff.clearcasting.up),interrupt_if=tick_time>gcd.remains&(buff.aether_attunement.down||(active_enemies>3&(!talent.time_loop||talent.resonance))),interrupt_immediate=1,interrupt_global=1,chain=1\n# Blast whenever you have the bonus from Leydrinker or Magi's Spark up, don't let spark expire in AOE.\nactions.spellslinger+=/arcane_blast,if=((debuff.magis_spark_arcane_blast.up&((debuff.magis_spark_arcane_blast.remains<(cast_time+gcd.max))||active_enemies=1||talent.leydrinker))||buff.leydrinker.up)&buff.arcane_charge.stack=4&!talent.charged_orb&active_enemies<3,line_cd=2\n# Barrage in AOE with Orb Barrage under some minor restrictions if you can recoup Charges, pooling for Spark as Touch comes off cooldown.\nactions.spellslinger+=/arcane_barrage,if=talent.orb_barrage&active_enemies>1&(debuff.magis_spark_arcane_blast.down||!talent.magis_spark)&buff.arcane_charge.stack=4&((talent.high_voltage&active_enemies>2)||((cooldown.touch_of_the_magi.remains>gcd.max*6||!talent.magis_spark)||(talent.charged_orb&cooldown.arcane_orb.charges_fractional>1.8)))\n# Barrage in AOE if Orb is up or enemy is in execute range.\nactions.spellslinger+=/arcane_barrage,if=active_enemies>1&(debuff.magis_spark_arcane_blast.down||!talent.magis_spark)&buff.arcane_charge.stack=4&(cooldown.arcane_orb.remains<gcd.max||(target.health.pct<35&talent.arcane_bombardment))&(buff.nether_precision.stack=1||(buff.nether_precision.down&talent.high_voltage)||(buff.nether_precision.stack=2&target.health.pct<35&talent.arcane_bombardment&talent.high_voltage))&(cooldown.touch_of_the_magi.remains>gcd.max*6||(talent.charged_orb&cooldown.arcane_orb.charges_fractional>1.8))\n# Missile to refill charges if you have High Voltage and either Aether Attunement or more than one Clearcasting proc.\nactions.spellslinger+=/arcane_missiles,if=talent.high_voltage&(buff.clearcasting.stacks>1||(buff.clearcasting.up&buff.aether_attunement.up))&buff.arcane_charge.stack<3,interrupt_if=tick_time>gcd.remains&(buff.aether_attunement.down||(active_enemies>3&(!talent.time_loop||talent.resonance))),interrupt_immediate=1,interrupt_global=1,chain=1\n# Orb below 3 charges in single target.\nactions.spellslinger+=/arcane_orb,if=(active_enemies=1&buff.arcane_charge.stack<3)\n# [Hekili] Orb with 0 charges; 1 charge w/ High Voltage; split from previous entry.\nactions.spellslinger+=/arcane_orb,if=buff.arcane_charge.stack<1+talent.high_voltage\nactions.spellslinger+=/arcane_barrage,if=buff.intuition.up\n# Barrage in single target if you have High Voltage, last Nether Precision stack, Clearcasting and either Aether or Execute.\nactions.spellslinger+=/arcane_barrage,if=active_enemies=1&talent.high_voltage&buff.arcane_charge.stack=4&buff.clearcasting.up&buff.nether_precision.stack=1&(buff.aether_attunement.up||(target.health.pct<35&talent.arcane_bombardment))\n# Barrage if you have orb ready and either Orb Barrage or High Voltage, pool for Spark.\nactions.spellslinger+=/arcane_barrage,if=cooldown.arcane_orb.remains<gcd.max&buff.arcane_charge.stack=4&buff.nether_precision.down&talent.orb_barrage&(cooldown.touch_of_the_magi.remains>gcd.max*6||!talent.magis_spark)\n# Barrage with Orb Barrage or execute if you have orb up and no Nether Precision or no way to get another.\nactions.spellslinger+=/arcane_barrage,if=active_enemies=1&(talent.orb_barrage||(target.health.pct<35&talent.arcane_bombardment))&(cooldown.arcane_orb.remains<gcd.max)&buff.arcane_charge.stack=4&(cooldown.touch_of_the_magi.remains>gcd.max*6||!talent.magis_spark)&(buff.nether_precision.down||(buff.nether_precision.stack=1&buff.clearcasting.stack=0))\n# Use Explosion for your first charge or if you have High Voltage you can use it for charge 2 and 3, but at a slightly higher target count.\nactions.spellslinger+=/arcane_explosion,if=active_enemies>1&((buff.arcane_charge.stack<1&!talent.high_voltage)||(buff.arcane_charge.stack<3&(buff.clearcasting.down||talent.reverberate)))\n# Arcane Explosion in single target for your first 2 charges when you have no Clearcasting procs and aren't out of mana.\nactions.spellslinger+=/arcane_explosion,if=active_enemies=1&buff.arcane_charge.stack<2&buff.clearcasting.down&mana.pct>10\n# Barrage in execute if you're at the end of Touch or at the end of Surge windows.\nactions.spellslinger+=/arcane_barrage,if=buff.arcane_charge.stack=4&((target.health.pct<35&debuff.touch_of_the_magi.remains<(gcd.max*1.25)&debuff.touch_of_the_magi.remains>action.arcane_barrage.travel_time)||buff.arcane_surge.remains<gcd.max&buff.arcane_surge.up)\n# Nothing else to do? Blast. Out of mana? Barrage.\nactions.spellslinger+=/arcane_blast\nactions.spellslinger+=/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.true_remains>15&cooldown.touch_of_the_magi.true_remains>10)&fight_remains>10)&buff.arcane_soul.down&(buff.intuition.down||(buff.intuition.up&buff.intuition.remains>cast_time))\n## No one will do this.\n## actions.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=action.presence_of_mind.time_since<0.015\n# When Arcane Soul is up, use Missiles to generate Nether Precision as needed while also ensuring you end Soul with 3 Clearcasting.\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.up),interrupt_if=tick_time>gcd.remains,interrupt_immediate=1,interrupt_global=1,chain=1\nactions.sunfury+=/arcane_barrage,if=buff.arcane_soul.up\n# Prioritize Tempo and Intuition if they are about to expire, spend Aether Attunement if you have 4pc S2 set before Touch.\nactions.sunfury+=/arcane_barrage,if=(buff.arcane_tempo.up&buff.arcane_tempo.remains<gcd.max)||(buff.intuition.up&buff.intuition.remains<gcd.max)\nactions.sunfury+=/arcane_barrage,if=(talent.orb_barrage&active_enemies>1&buff.arcane_harmony.stack>=18&((active_enemies>3&(talent.resonance||talent.high_voltage))||buff.nether_precision.down||buff.nether_precision.stack=1||(buff.nether_precision.stack=2&buff.clearcasting.stack=3)))\nactions.sunfury+=/arcane_missiles,if=buff.clearcasting.up&set_bonus.tww2>3&buff.aether_attunement.up&cooldown.touch_of_the_magi.remains<gcd.max*(3-(1.5*(active_enemies>3&(!talent.time_loop||talent.resonance)))),interrupt_if=tick_time>gcd.remains&(buff.aether_attunement.down||(active_enemies>3&(!talent.time_loop||talent.resonance))),interrupt_immediate=1,interrupt_global=1,chain=1\n# Blast whenever you have the bonus from Leydrinker or Magi's Spark up, don't let spark expire in AOE.\nactions.sunfury+=/arcane_blast,if=((debuff.magis_spark_arcane_blast.up&((debuff.magis_spark_arcane_blast.remains<(cast_time+gcd.max))||active_enemies=1||talent.leydrinker))||buff.leydrinker.up)&buff.arcane_charge.stack=4&(buff.nether_precision.up||buff.clearcasting.down),line_cd=2\n# Barrage into Touch if you have charges when it comes up.\nactions.sunfury+=/arcane_barrage,if=buff.arcane_charge.stack=4&cooldown.touch_of_the_magi.remains<gcd.max\n# AOE Barrage conditions are optimized for funnel, avoids overcapping Harmony stacks (line below Tempo line above), spending Charges when you have a way to recoup them via High Voltage or Orb while pooling sometimes for Touch with various talent optimizations.\nactions.sunfury+=/arcane_barrage,if=(talent.high_voltage&active_enemies>1&buff.arcane_charge.stack=4&buff.clearcasting.up&buff.nether_precision.stack=1)\nactions.sunfury+=/arcane_barrage,if=(active_enemies>1&talent.high_voltage&buff.arcane_charge.stack=4&buff.clearcasting.up&buff.aether_attunement.up&buff.glorious_incandescence.down&buff.intuition.down)\nactions.sunfury+=/arcane_barrage,if=(active_enemies>2&talent.orb_barrage&talent.high_voltage&debuff.magis_spark_arcane_blast.down&buff.arcane_charge.stack=4&target.health.pct<35&talent.arcane_bombardment&(buff.nether_precision.up||(buff.nether_precision.down&buff.clearcasting.down)))\nactions.sunfury+=/arcane_barrage,if=((active_enemies>2||(active_enemies>1&target.health.pct<35&talent.arcane_bombardment))&cooldown.arcane_orb.remains<gcd.max&buff.arcane_charge.stack=4&cooldown.touch_of_the_magi.remains>gcd.max*6&(debuff.magis_spark_arcane_blast.down||!talent.magis_spark)&buff.nether_precision.up&(talent.high_voltage||buff.nether_precision.stack=2||(buff.nether_precision.stack=1&buff.clearcasting.down)))\n# Missiles to recoup Charges, maintain Nether Precisioin, or keep from overcapping Clearcasting with High Voltage or in single target.\nactions.sunfury+=/arcane_missiles,if=buff.clearcasting.up&((talent.high_voltage&buff.arcane_charge.stack<4)||buff.nether_precision.down||(buff.clearcasting.stack=3&(!talent.high_voltage||active_enemies=1))),interrupt_if=tick_time>gcd.remains&(buff.aether_attunement.down||(active_enemies>3&(!talent.time_loop||talent.resonance))),interrupt_immediate=1,interrupt_global=1,chain=1\n# Barrage with Burden if 2-4 targets and you have a way to recoup Charges, however skip this is you have Bauble and don't have High Voltage.\nactions.sunfury+=/arcane_barrage,if=(buff.arcane_charge.stack=4&active_enemies>1&active_enemies<5&buff.burden_of_power.up&((talent.high_voltage&buff.clearcasting.up)||buff.glorious_incandescence.up||buff.intuition.up||(cooldown.arcane_orb.remains<gcd.max||action.arcane_orb.charges>0)))&(!talent.consortiums_bauble||talent.high_voltage)\n# Arcane Orb to recover Charges quickly if below 3.\nactions.sunfury+=/arcane_orb,if=buff.arcane_charge.stack<3\n# Barrage with Intuition or Incandescence unless Touch is almost up or you don't have Magi's Spark talented.\nactions.sunfury+=/arcane_barrage,if=(buff.glorious_incandescence.up&(cooldown.touch_of_the_magi.remains>6||!talent.magis_spark))||buff.intuition.up\n# In AOE, Presence of Mind is used to build Charges. Arcane Explosion can be used to build your first Charge.\nactions.sunfury+=/presence_of_mind,if=(buff.arcane_charge.stack=3||buff.arcane_charge.stack=2)&active_enemies>=3\nactions.sunfury+=/arcane_explosion,if=buff.arcane_charge.stack<2&active_enemies>1\nactions.sunfury+=/arcane_blast\nactions.sunfury+=/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.true_remains>15&cooldown.touch_of_the_magi.true_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.true_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,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<2)\nactions.spellslinger_aoe+=/arcane_blast\nactions.spellslinger_aoe+=/arcane_barrage",
|
|
["author"] = "SimulationCraft",
|
|
},
|
|
["Arms"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250308,
|
|
["author"] = "SimulationCraft",
|
|
["desc"] = "2025-03-08: TWW Season 2 update\n\n2025-02-26: Sync with SimC",
|
|
["lists"] = {
|
|
["slayer_st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= 5 || debuff.colossus_smash.up",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up || buff.avatar.up",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.juggernaut.remains <= gcd.max * 2 & talent.juggernaut.enabled || buff.sudden_death.stack = 2 || buff.sudden_death.remains <= gcd.max * 3 || debuff.marked_for_execution.stack = 3",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.opportunist.up",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.colossus_smash.remains >= gcd.max * 4 || cooldown.warbreaker.remains >= gcd.max * 4 ) || debuff.colossus_smash.remains >= gcd.max * 4",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 8",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "cleave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["colossus_st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > 15",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "demolish",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max * 5",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["colossus_aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.deep_wounds.remains",
|
|
["action"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.rend.remains",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sweeping_strikes",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ravager",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "cleave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unhinged.enabled || talent.merciless_bonegrinder.enabled",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains < 5",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.colossal_might.stack = 10 & ( debuff.colossus_smash.remains >= 2 || cooldown.colossus_smash.remains >= 7 )",
|
|
["action"] = "demolish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.dreadnaught.enabled",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bladestorm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "whirlwind",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["slayer_aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.rend.remains",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "cleave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_death.up & buff.imminent_demise.stack < 3 || buff.juggernaut.remains < 3 & talent.juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "bladestorm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up & ( buff.opportunist.up || talent.dreadnaught.enabled & ! talent.juggernaut.enabled )",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up & debuff.executioners_precision.stack < 2 & talent.executioners_precision.enabled || debuff.marked_for_execution.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.opportunist.up || talent.dreadnaught.enabled",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "whirlwind",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "skullsplitter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["colossus_execute"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 2",
|
|
["action"] = "sweeping_strikes",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max & ! talent.bloodletting.enabled",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.juggernaut.remains <= gcd.max & talent.juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage < 40",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "demolish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.executioners_precision.stack = 2 & ! dot.ravager.remains || ! talent.executioners_precision.enabled || talent.battlelord.enabled & debuff.executioners_precision.stack > 0",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage < 90",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 40 & talent.executioners_precision.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bladestorm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["slayer_execute"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 2",
|
|
["action"] = "sweeping_strikes",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max & ! talent.bloodletting.enabled",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= 5 || debuff.colossus_smash.up",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up || buff.avatar.up",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.remains <= gcd.max",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.juggernaut.remains <= gcd.max * 2 & talent.juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( debuff.executioners_precision.stack = 2 & ( debuff.colossus_smash.remains > 4 || cooldown.colossus_smash.remains > 15 ) ) || ! talent.executioners_precision.enabled",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage <= 40",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.martial_prowess.stack < 2 & buff.opportunist.up & talent.opportunist.enabled & ( talent.bladestorm.enabled || talent.ravager.enabled & rage < 85 )",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains < 2 || debuff.executioners_precision.stack = 2 & ! dot.ravager.remains",
|
|
["action"] = "mortal_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage <= 40 & buff.martial_prowess.stack < 2 & talent.fierce_followthrough.enabled",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time <= 0.5 || movement.distance > 8",
|
|
["action"] = "charge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "gcd.remains = 0 & debuff.colossus_smash.remains > 8 || boss & fight_remains < 25",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.debuff.casting.react",
|
|
["action"] = "pummel",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "variables",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.mortal_strike.remains > 1.5 & rage < 50",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.down & cooldown.mortal_strike.remains",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.down & cooldown.mortal_strike.remains",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > 180 & buff.avatar.up || boss & target.time_to_die < 180 & variable.execute_phase & buff.avatar.up || boss & fight_remains < 20",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demolish.enabled & active_enemies > 2",
|
|
["list_name"] = "colossus_aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["cycle_targets"] = 1,
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demolish.enabled & variable.execute_phase",
|
|
["list_name"] = "colossus_execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demolish.enabled & active_enemies = 2 & ! variable.execute_phase",
|
|
["list_name"] = "colossus_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.demolish.enabled",
|
|
["list_name"] = "colossus_st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.demolish.enabled & active_enemies > 2",
|
|
["list_name"] = "slayer_aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["cycle_targets"] = 1,
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.demolish.enabled & variable.execute_phase",
|
|
["list_name"] = "slayer_execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.demolish.enabled & active_enemies = 2 & ! variable.execute_phase",
|
|
["list_name"] = "slayer_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.demolish.enabled",
|
|
["list_name"] = "slayer_st",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "battle_shout",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["toggle"] = "on",
|
|
["action"] = "battle_stance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_1_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Evaluates a trinkets cooldown, divided by avatar. If it's value has no remainder return 1, else return 0.5.",
|
|
["criteria"] = "trinket.t1.has_use_buff & ( trinket.t1.cooldown.duration % cooldown.avatar.duration = 0 )",
|
|
["var_name"] = "trinket_1_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["criteria"] = "trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration % cooldown.avatar.duration = 0 )",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_stat.any_dps & ! variable.trinket_1_exclude )",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_stat.any_dps & ! variable.trinket_2_exclude )",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / trinket.t2.buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_1_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_2_manual",
|
|
},
|
|
},
|
|
["variables"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies = 1",
|
|
["description"] = "Variables",
|
|
["var_name"] = "st_planning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_enemies > 1",
|
|
["var_name"] = "adds_remain",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( talent.massacre.enabled & target.health.pct < 35 ) || target.health.pct < 20",
|
|
["var_name"] = "execute_phase",
|
|
},
|
|
},
|
|
["slayer_sweep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.rend.remains & ! buff.sweeping_strikes.up",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sweeping_strikes",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sweeping_strikes.up",
|
|
["action"] = "skullsplitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.juggernaut.remains <= gcd.max * 2 || debuff.marked_for_execution.stack = 3 || buff.sudden_death.stack = 2 || buff.sudden_death.remains <= gcd.max * 3",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.colossus_smash.remains >= gcd.max * 4 || cooldown.warbreaker.remains >= gcd.max * 4 ) || debuff.colossus_smash.remains >= gcd.max * 4",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.opportunist.up",
|
|
["action"] = "overpower",
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 8 & buff.sweeping_strikes.down",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 5",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fervor_of_battle.enabled & ! buff.martial_prowess.up",
|
|
["action"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fervor_of_battle.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["description"] = "Trinkets",
|
|
["criteria"] = "( variable.adds_remain || variable.st_planning ) & cooldown.avatar.remains < 3",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! buff.avatar.up & trinket.t1.cast_time > 0 || ! trinket.t1.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || trinket.t1.buff_duration >= fight_remains & boss",
|
|
["description"] = "Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! buff.avatar.up & trinket.t2.cast_time > 0 || ! trinket.t2.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || trinket.t2.buff_duration >= fight_remains & boss",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )",
|
|
["description"] = "If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.trinket_2_buffs & ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) & ! variable.trinket_2_manual & ( ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) || ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["criteria"] = "! equipped.fyralath_the_dreamrender & ! equipped.bestinslots & ( ! variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( ! variable.trinket_2_buffs || trinket.t2.cooldown.remains )",
|
|
["slot"] = "main_hand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "bestinslots",
|
|
["action"] = "bestinslots",
|
|
["criteria"] = "cooldown.avatar.remains > 20 || ( buff.avatar.up & ( ! trinket.t1.has_cooldown & ! trinket.t2.has_cooldown ) )",
|
|
},
|
|
},
|
|
["colossus_sweep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.rend.remains & ! buff.sweeping_strikes.up",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= gcd.max & buff.sweeping_strikes.up",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "thunderous_roar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sweeping_strikes",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "champions_spear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.colossus_smash.ready",
|
|
["action"] = "ravager",
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "colossus_smash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warbreaker",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mortal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.colossus_smash.up",
|
|
["action"] = "demolish",
|
|
},
|
|
{
|
|
["action"] = "overpower",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fervor_of_battle.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fervor_of_battle.enabled",
|
|
["action"] = "cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 8 & buff.sweeping_strikes.down",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rend.remains <= 5",
|
|
["action"] = "rend",
|
|
},
|
|
{
|
|
["action"] = "slam",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250308,
|
|
["warnings"] = "The import for 'slayer_st' required some automated changes.\nLine 8: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 15: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\n\nThe import for 'colossus_aoe' required some automated changes.\nLine 11: Converted 'talent.unhinged' to 'talent.unhinged.enabled' (1x).\nLine 11: Converted 'talent.merciless_bonegrinder' to 'talent.merciless_bonegrinder.enabled' (1x).\nLine 14: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\n\nThe import for 'slayer_aoe' required some automated changes.\nLine 9: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 11: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\nLine 11: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 13: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\nLine 15: Converted 'talent.dreadnaught' to 'talent.dreadnaught.enabled' (1x).\n\nThe import for 'colossus_execute' required some automated changes.\nLine 2: Converted 'talent.bloodletting' to 'talent.bloodletting.enabled' (1x).\nLine 9: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 12: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\nLine 12: Converted 'talent.battlelord' to 'talent.battlelord.enabled' (1x).\nLine 14: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\n\nThe import for 'slayer_execute' required some automated changes.\nLine 2: Converted 'talent.bloodletting' to 'talent.bloodletting.enabled' (1x).\nLine 9: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\nLine 10: Converted 'talent.executioners_precision' to 'talent.executioners_precision.enabled' (1x).\nLine 12: Converted 'talent.opportunist' to 'talent.opportunist.enabled' (1x).\nLine 12: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 12: Converted 'talent.ravager' to 'talent.ravager.enabled' (1x).\nLine 14: Converted 'talent.fierce_followthrough' to 'talent.fierce_followthrough.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 13: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 14: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 15: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 16: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 17: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 18: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 19: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\nLine 20: Converted 'talent.demolish' to 'talent.demolish.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 3: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 4: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted operations in 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%%cooldown.avatar.duration=0)' to 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%cooldown.avatar.duration=0)'.\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted operations in 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%%cooldown.avatar.duration=0)' to 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%cooldown.avatar.duration=0)'.\nLine 7: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 7: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 8: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 8: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 9: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 9: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 9: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 9: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 9: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 9: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 9: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 9: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 9: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 9: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 10: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 11: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\n\nThe import for 'slayer_sweep' required some automated changes.\nLine 17: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 18: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 19: Converted 'talent.juggernaut' to 'talent.juggernaut.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 2: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 3: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 3: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 7: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\n\nThe import for 'colossus_sweep' required some automated changes.\nLine 14: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\nLine 15: Converted 'talent.fervor_of_battle' to 'talent.fervor_of_battle.enabled' (1x).\n\nImported 12 action lists.\n",
|
|
["profile"] = "actions.precombat+=/battle_shout\nactions.precombat+=/battle_stance,toggle=on\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.treacherous_transmitter\n# Evaluates a trinkets cooldown, divided by avatar. If it's value has no remainder return 1, else return 0.5.\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=trinket.1.has_use_buff&(trinket.1.cooldown.duration%%cooldown.avatar.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=trinket.2.has_use_buff&(trinket.2.cooldown.duration%%cooldown.avatar.duration=0)\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_stat.any_dps&!variable.trinket_1_exclude)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_stat.any_dps&!variable.trinket_2_exclude)\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync))\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.algethar_puzzle_box\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.algethar_puzzle_box\n\nactions+=/charge,if=time<=0.5||movement.distance>8\nactions+=/potion,if=gcd.remains=0&debuff.colossus_smash.remains>8||boss&fight_remains<25\nactions+=/pummel,if=target.debuff.casting.react\nactions+=/call_action_list,name=variables\nactions+=/call_action_list,name=trinkets\nactions+=/arcane_torrent,if=cooldown.mortal_strike.remains>1.5&rage<50\nactions+=/lights_judgment,if=debuff.colossus_smash.down&cooldown.mortal_strike.remains\nactions+=/bag_of_tricks,if=debuff.colossus_smash.down&cooldown.mortal_strike.remains\nactions+=/berserking,if=fight_remains>180&buff.avatar.up||boss&target.time_to_die<180&variable.execute_phase&buff.avatar.up||boss&fight_remains<20\nactions+=/blood_fury,if=debuff.colossus_smash.up\nactions+=/fireblood,if=debuff.colossus_smash.up\nactions+=/ancestral_call,if=debuff.colossus_smash.up\n## actions+=/invoke_external_buff,name=power_infusion,if=debuff.colossus_smash.up&fight_remains>=135||variable.execute_phase&buff.avatar.up||fight_remains<=25\nactions+=/run_action_list,name=colossus_aoe,strict=1,if=talent.demolish&active_enemies>2\nactions+=/run_action_list,name=colossus_execute,cycle_targets=1,strict=1,if=talent.demolish&variable.execute_phase\nactions+=/run_action_list,name=colossus_sweep,strict=1,if=talent.demolish&active_enemies=2&!variable.execute_phase\nactions+=/run_action_list,name=colossus_st,strict=1,if=talent.demolish\nactions+=/run_action_list,name=slayer_aoe,strict=1,if=!talent.demolish&active_enemies>2\nactions+=/run_action_list,name=slayer_execute,cycle_targets=1,strict=1,if=!talent.demolish&variable.execute_phase\nactions+=/run_action_list,name=slayer_sweep,strict=1,if=!talent.demolish&active_enemies=2&!variable.execute_phase\nactions+=/run_action_list,name=slayer_st,strict=1,if=!talent.demolish\n\nactions.colossus_aoe+=/cleave,if=!dot.deep_wounds.remains\nactions.colossus_aoe+=/thunder_clap,if=!dot.rend.remains\nactions.colossus_aoe+=/thunderous_roar\nactions.colossus_aoe+=/avatar\nactions.colossus_aoe+=/sweeping_strikes\nactions.colossus_aoe+=/ravager\nactions.colossus_aoe+=/warbreaker\nactions.colossus_aoe+=/champions_spear\nactions.colossus_aoe+=/colossus_smash\nactions.colossus_aoe+=/cleave\nactions.colossus_aoe+=/bladestorm,if=talent.unhinged||talent.merciless_bonegrinder\nactions.colossus_aoe+=/thunder_clap,if=dot.rend.remains<5\nactions.colossus_aoe+=/demolish,if=buff.colossal_might.stack=10&(debuff.colossus_smash.remains>=2||cooldown.colossus_smash.remains>=7)\nactions.colossus_aoe+=/overpower,if=talent.dreadnaught\nactions.colossus_aoe+=/mortal_strike\nactions.colossus_aoe+=/overpower\nactions.colossus_aoe+=/thunder_clap\nactions.colossus_aoe+=/skullsplitter\nactions.colossus_aoe+=/execute\nactions.colossus_aoe+=/bladestorm\nactions.colossus_aoe+=/whirlwind\n\nactions.colossus_execute+=/sweeping_strikes,if=active_enemies=2\nactions.colossus_execute+=/rend,if=dot.rend.remains<=gcd&!talent.bloodletting\nactions.colossus_execute+=/thunderous_roar\nactions.colossus_execute+=/champions_spear\nactions.colossus_execute+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.colossus_execute+=/avatar\nactions.colossus_execute+=/colossus_smash\nactions.colossus_execute+=/warbreaker\nactions.colossus_execute+=/execute,if=buff.juggernaut.remains<=gcd&talent.juggernaut\nactions.colossus_execute+=/skullsplitter,if=rage<40\nactions.colossus_execute+=/demolish,if=debuff.colossus_smash.up\nactions.colossus_execute+=/mortal_strike,if=debuff.executioners_precision.stack=2&!dot.ravager.remains||!talent.executioners_precision||talent.battlelord&debuff.executioners_precision.stack>0\nactions.colossus_execute+=/overpower,if=rage<90\nactions.colossus_execute+=/execute,if=rage>=40&talent.executioners_precision\nactions.colossus_execute+=/overpower\nactions.colossus_execute+=/bladestorm\nactions.colossus_execute+=/execute\n\nactions.colossus_st+=/rend,if=dot.rend.remains<=gcd\nactions.colossus_st+=/thunderous_roar\nactions.colossus_st+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.colossus_st+=/champions_spear\nactions.colossus_st+=/avatar,if=raid_event.adds.in>15\nactions.colossus_st+=/colossus_smash\nactions.colossus_st+=/warbreaker\nactions.colossus_st+=/mortal_strike\nactions.colossus_st+=/demolish\nactions.colossus_st+=/skullsplitter\nactions.colossus_st+=/execute\nactions.colossus_st+=/overpower\nactions.colossus_st+=/rend,if=dot.rend.remains<=gcd*5\nactions.colossus_st+=/slam\n\nactions.colossus_sweep+=/thunder_clap,if=!dot.rend.remains&!buff.sweeping_strikes.up\nactions.colossus_sweep+=/rend,if=dot.rend.remains<=gcd&buff.sweeping_strikes.up\nactions.colossus_sweep+=/thunderous_roar\nactions.colossus_sweep+=/sweeping_strikes\nactions.colossus_sweep+=/champions_spear\nactions.colossus_sweep+=/ravager,if=cooldown.colossus_smash.ready\nactions.colossus_sweep+=/avatar\nactions.colossus_sweep+=/colossus_smash\nactions.colossus_sweep+=/warbreaker\nactions.colossus_sweep+=/mortal_strike\nactions.colossus_sweep+=/demolish,if=debuff.colossus_smash.up\nactions.colossus_sweep+=/overpower\nactions.colossus_sweep+=/execute\nactions.colossus_sweep+=/whirlwind,if=talent.fervor_of_battle\nactions.colossus_sweep+=/cleave,if=talent.fervor_of_battle\nactions.colossus_sweep+=/thunder_clap,if=dot.rend.remains<=8&buff.sweeping_strikes.down\nactions.colossus_sweep+=/rend,if=dot.rend.remains<=5\nactions.colossus_sweep+=/slam\n\nactions.slayer_aoe+=/thunder_clap,if=!dot.rend.remains\nactions.slayer_aoe+=/thunderous_roar\nactions.slayer_aoe+=/avatar\nactions.slayer_aoe+=/champions_spear\nactions.slayer_aoe+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.slayer_aoe+=/warbreaker\nactions.slayer_aoe+=/colossus_smash\nactions.slayer_aoe+=/cleave\nactions.slayer_aoe+=/execute,if=buff.sudden_death.up&buff.imminent_demise.stack<3||buff.juggernaut.remains<3&talent.juggernaut\nactions.slayer_aoe+=/bladestorm\nactions.slayer_aoe+=/overpower,if=buff.sweeping_strikes.up&(buff.opportunist.up||talent.dreadnaught&!talent.juggernaut)\nactions.slayer_aoe+=/mortal_strike,if=buff.sweeping_strikes.up\nactions.slayer_aoe+=/execute,if=buff.sweeping_strikes.up&debuff.executioners_precision.stack<2&talent.executioners_precision||debuff.marked_for_execution.up\nactions.slayer_aoe+=/skullsplitter,if=buff.sweeping_strikes.up\nactions.slayer_aoe+=/overpower,if=buff.opportunist.up||talent.dreadnaught\nactions.slayer_aoe+=/mortal_strike\nactions.slayer_aoe+=/overpower\nactions.slayer_aoe+=/thunder_clap\nactions.slayer_aoe+=/execute\nactions.slayer_aoe+=/whirlwind\nactions.slayer_aoe+=/skullsplitter\nactions.slayer_aoe+=/slam\nactions.slayer_aoe+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_execute+=/sweeping_strikes,if=active_enemies=2\nactions.slayer_execute+=/rend,if=dot.rend.remains<=gcd&!talent.bloodletting\nactions.slayer_execute+=/thunderous_roar\nactions.slayer_execute+=/avatar,if=cooldown.colossus_smash.remains<=5||debuff.colossus_smash.up\nactions.slayer_execute+=/champions_spear,if=debuff.colossus_smash.up||buff.avatar.up\nactions.slayer_execute+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.slayer_execute+=/warbreaker\nactions.slayer_execute+=/colossus_smash\nactions.slayer_execute+=/execute,if=buff.juggernaut.remains<=gcd*2&talent.juggernaut\nactions.slayer_execute+=/bladestorm,if=(debuff.executioners_precision.stack=2&(debuff.colossus_smash.remains>4||cooldown.colossus_smash.remains>15))||!talent.executioners_precision\nactions.slayer_execute+=/skullsplitter,if=rage<=40\nactions.slayer_execute+=/overpower,if=buff.martial_prowess.stack<2&buff.opportunist.up&talent.opportunist&(talent.bladestorm||talent.ravager&rage<85)\nactions.slayer_execute+=/mortal_strike,if=dot.rend.remains<2||debuff.executioners_precision.stack=2&!dot.ravager.remains\nactions.slayer_execute+=/overpower,if=rage<=40&buff.martial_prowess.stack<2&talent.fierce_followthrough\nactions.slayer_execute+=/execute\nactions.slayer_execute+=/overpower\nactions.slayer_execute+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_st+=/rend,if=dot.rend.remains<=gcd\nactions.slayer_st+=/thunderous_roar\nactions.slayer_st+=/avatar,if=cooldown.colossus_smash.remains<=5||debuff.colossus_smash.up\nactions.slayer_st+=/champions_spear,if=debuff.colossus_smash.up||buff.avatar.up\nactions.slayer_st+=/ravager,if=cooldown.colossus_smash.remains<=gcd\nactions.slayer_st+=/colossus_smash\nactions.slayer_st+=/warbreaker\nactions.slayer_st+=/execute,if=buff.juggernaut.remains<=gcd*2&talent.juggernaut||buff.sudden_death.stack=2||buff.sudden_death.remains<=gcd*3||debuff.marked_for_execution.stack=3\nactions.slayer_st+=/overpower,if=buff.opportunist.up\nactions.slayer_st+=/mortal_strike\nactions.slayer_st+=/bladestorm,if=(cooldown.colossus_smash.remains>=gcd*4||cooldown.warbreaker.remains>=gcd*4)||debuff.colossus_smash.remains>=gcd*4\nactions.slayer_st+=/skullsplitter\nactions.slayer_st+=/overpower\nactions.slayer_st+=/rend,if=dot.rend.remains<=8\nactions.slayer_st+=/execute,if=!talent.juggernaut\nactions.slayer_st+=/cleave\nactions.slayer_st+=/slam\nactions.slayer_st+=/storm_bolt,if=buff.bladestorm.up\n\nactions.slayer_sweep+=/thunder_clap,if=!dot.rend.remains&!buff.sweeping_strikes.up\nactions.slayer_sweep+=/thunderous_roar\nactions.slayer_sweep+=/sweeping_strikes\nactions.slayer_sweep+=/rend,if=dot.rend.remains<=gcd\nactions.slayer_sweep+=/champions_spear\nactions.slayer_sweep+=/avatar\nactions.slayer_sweep+=/colossus_smash\nactions.slayer_sweep+=/warbreaker\nactions.slayer_sweep+=/skullsplitter,if=buff.sweeping_strikes.up\nactions.slayer_sweep+=/execute,if=buff.juggernaut.remains<=gcd*2||debuff.marked_for_execution.stack=3||buff.sudden_death.stack=2||buff.sudden_death.remains<=gcd*3\nactions.slayer_sweep+=/bladestorm,if=(cooldown.colossus_smash.remains>=gcd*4||cooldown.warbreaker.remains>=gcd*4)||debuff.colossus_smash.remains>=gcd*4\nactions.slayer_sweep+=/overpower,if=buff.opportunist.up\nactions.slayer_sweep+=/mortal_strike\nactions.slayer_sweep+=/overpower\nactions.slayer_sweep+=/thunder_clap,if=dot.rend.remains<=8&buff.sweeping_strikes.down\nactions.slayer_sweep+=/rend,if=dot.rend.remains<=5\nactions.slayer_sweep+=/cleave,if=talent.fervor_of_battle&!buff.martial_prowess.up\nactions.slayer_sweep+=/whirlwind,if=talent.fervor_of_battle\nactions.slayer_sweep+=/execute,if=!talent.juggernaut\nactions.slayer_sweep+=/slam\nactions.slayer_sweep+=/storm_bolt,if=buff.bladestorm.up\n\n# Trinkets\n## actions.trinkets+=/do_treacherous_transmitter_task\nactions.trinkets+=/use_item,name=treacherous_transmitter,if=(variable.adds_remain||variable.st_planning)&cooldown.avatar.remains<3\n# Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.\nactions.trinkets+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&!variable.trinket_1_manual&(!buff.avatar.up&trinket.1.cast_time>0||!trinket.1.cast_time>0)&buff.avatar.up&(variable.trinket_2_exclude||!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains&boss\nactions.trinkets+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&(!buff.avatar.up&trinket.2.cast_time>0||!trinket.2.cast_time>0)&buff.avatar.up&(variable.trinket_1_exclude||!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains&boss\n# If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.\nactions.trinkets+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)&!variable.trinket_1_manual&(!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs)||(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions.trinkets+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)&!variable.trinket_2_manual&(!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs)||(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions.trinkets+=/use_item,slot=main_hand,if=!equipped.fyralath_the_dreamrender&!equipped.bestinslots&(!variable.trinket_1_buffs||trinket.1.cooldown.remains)&(!variable.trinket_2_buffs||trinket.2.cooldown.remains)\nactions.trinkets+=/use_item,name=bestinslots,if=cooldown.avatar.remains>20||(buff.avatar.up&(!trinket.1.has_cooldown&!trinket.2.has_cooldown))\n\n# Variables\nactions.variables+=/variable,name=st_planning,value=active_enemies=1\nactions.variables+=/variable,name=adds_remain,value=active_enemies>1\nactions.variables+=/variable,name=execute_phase,value=(talent.massacre.enabled&target.health.pct<35)||target.health.pct<20",
|
|
["spec"] = 71,
|
|
},
|
|
["Protection Warrior"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20240926,
|
|
["spec"] = 73,
|
|
["desc"] = "2024-09-26: Spell Block added\n\n2024-09-24: Mitigations and Impeding Victory Fixed\n\n2024-08-15, 09-09: SimC priority updates\n\n2024-07-24: The War Within",
|
|
["profile"] = "actions.precombat+=/battle_stance,toggle=on\nactions.precombat+=/battle_shout\n\nactions+=/pummel\nactions+=/charge,if=time=0||movement.distance>8\nactions+=/use_items\nactions+=/avatar,if=buff.thunder_blast.down||buff.thunder_blast.stack<=2\nactions+=/spell_block,use_off_gcd=1,if=tanking&incoming_magic_damage_5s>spell_block_damage_taken&health.pct<=spell_block_health_pct&!(buff.spell_reflection_defense.up)\nactions+=/shield_wall,use_off_gcd=1,if=tanking&incoming_damage_5s>shield_wall_damage_taken&health.pct<=shield_wall_health_pct&!(buff.shield_wall.up||buff.last_stand.up||buff.rallying_cry.up||buff.potion.up)\nactions+=/blood_fury\nactions+=/berserking\nactions+=/arcane_torrent\nactions+=/lights_judgment\nactions+=/fireblood\nactions+=/ancestral_call\nactions+=/bag_of_tricks\nactions+=/potion,if=buff.avatar.up||buff.avatar.up&target.health.pct<=20\nactions+=/ignore_pain,if=target.health.pct>=20&(rage.deficit<=15&cooldown.shield_slam.ready||rage.deficit<=40&cooldown.shield_charge.ready&talent.champions_bulwark.enabled||rage.deficit<=20&cooldown.shield_charge.ready||rage.deficit<=30&cooldown.demoralizing_shout.ready&talent.booming_voice.enabled||rage.deficit<=20&cooldown.avatar.ready||rage.deficit<=45&cooldown.demoralizing_shout.ready&talent.booming_voice.enabled&buff.last_stand.up&talent.unnerving_focus.enabled||rage.deficit<=30&cooldown.avatar.ready&buff.last_stand.up&talent.unnerving_focus.enabled||rage.deficit<=20||rage.deficit<=40&cooldown.shield_slam.ready&buff.violent_outburst.up&talent.heavy_repercussions.enabled&talent.impenetrable_wall.enabled||rage.deficit<=55&cooldown.shield_slam.ready&buff.violent_outburst.up&buff.last_stand.up&talent.unnerving_focus.enabled&talent.heavy_repercussions.enabled&talent.impenetrable_wall.enabled||rage.deficit<=17&cooldown.shield_slam.ready&talent.heavy_repercussions.enabled||rage.deficit<=18&cooldown.shield_slam.ready&talent.impenetrable_wall.enabled)||(rage>=70||buff.seeing_red.stack=7&rage>=35)&cooldown.shield_slam.remains<=1&buff.shield_block.remains>=4&set_bonus.tier31_2pc,use_off_gcd=1\nactions+=/last_stand,use_off_gcd=1,if=tanking&incoming_damage_5s>last_stand_damage_taken&health.pct<=last_stand_health_pct&!(buff.shield_wall.up||buff.last_stand.up||buff.rallying_cry.up||buff.potion.up)\nactions+=/rallying_cry,if=tanking&incoming_damage_5s>rallying_cry_damage_taken&health.pct<=rallying_cry_health_pct&!(buff.shield_wall.up||buff.last_stand.up||buff.rallying_cry.up||buff.potion.up)\nactions+=/victory_rush,if=health.pct<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"] = 20250310,
|
|
["spec"] = 70,
|
|
["desc"] = "2025-03-10: SimC Update\n\n2025-02-28: TWW Season 2 update\n\n2024-10-29: Efficiency of Finishers (fixed)\n\n2024-09-28: SimC update; HoL fix?\n\n2024-09-10, 09-22: SimC update\n\n2024-08-28: Fix HoL and update from SimC\n\n2024-08-24: Fix Hammer of Light\n\n2024-07-23: The War Within",
|
|
["profile"] = "actions.precombat+=/shield_of_vengeance\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_buff.strength||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_buff.strength||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.crusade.duration=0||cooldown.crusade.duration%%trinket.1.cooldown.duration=0||trinket.1.cooldown.duration%%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.crusade.duration=0||cooldown.crusade.duration%%trinket.2.cooldown.duration=0||trinket.2.cooldown.duration%%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%%trinket.2.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync))\n\nactions+=/rebuke\nactions+=/call_action_list,name=cooldowns\nactions+=/call_action_list,name=generators\n\nactions.cooldowns+=/potion,if=buff.avenging_wrath.up||buff.crusade.up||debuff.execution_sentence.up||boss&fight_remains<30\n## actions.cooldowns+=/invoke_external_buff,name=power_infusion,if=buff.avenging_wrath.up||buff.crusade.up||debuff.execution_sentence.up\nactions.cooldowns+=/lights_judgment,if=spell_targets.lights_judgment>=2||!raid_event.adds.exists||raid_event.adds.in>75||raid_event.adds.up\nactions.cooldowns+=/fireblood,if=buff.avenging_wrath.up||buff.crusade.up&buff.crusade.stack=10||debuff.execution_sentence.up\nactions.cooldowns+=/use_item,slot=trinket1,if=((buff.avenging_wrath.up&cooldown.avenging_wrath.remains>40||buff.crusade.up&buff.crusade.stack=10)&!talent.radiant_glory||talent.radiant_glory&(!talent.execution_sentence&cooldown.wake_of_ashes.remains=0||debuff.execution_sentence.up))&(!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains&boss\nactions.cooldowns+=/use_item,slot=trinket2,if=((buff.avenging_wrath.up&cooldown.avenging_wrath.remains>40||buff.crusade.up&buff.crusade.stack=10)&!talent.radiant_glory||talent.radiant_glory&(!talent.execution_sentence&cooldown.wake_of_ashes.remains=0||debuff.execution_sentence.up))&(!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains&boss\nactions.cooldowns+=/use_item,name=bestinslots,if=((buff.avenging_wrath.up&cooldown.avenging_wrath.remains>40||buff.crusade.up&buff.crusade.stack=10)&!talent.radiant_glory||talent.radiant_glory&(!talent.execution_sentence&cooldown.wake_of_ashes.remains=0||debuff.execution_sentence.up))\nactions.cooldowns+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs||!buff.crusade.up&cooldown.crusade.remains>20||!buff.avenging_wrath.up&cooldown.avenging_wrath.remains>20)\nactions.cooldowns+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs||!buff.crusade.up&cooldown.crusade.remains>20||!buff.avenging_wrath.up&cooldown.avenging_wrath.remains>20)\nactions.cooldowns+=/shield_of_vengeance,if=fight_remains>15&(!talent.execution_sentence||!debuff.execution_sentence.up)&!buff.divine_hammer.up\nactions.cooldowns+=/execution_sentence,if=(!buff.crusade.up&cooldown.crusade.remains>15||buff.crusade.stack=10||cooldown.avenging_wrath.remains<0.75||cooldown.avenging_wrath.remains>15||talent.radiant_glory)&(holy_power>=4&time<5||holy_power>=3&time>5||(holy_power>=2||time<5)&(talent.divine_auxiliary||talent.radiant_glory))&(cooldown.divine_hammer.remains>5||buff.divine_hammer.up||!talent.divine_hammer)&(target.time_to_die>8&!talent.executioners_will||target.time_to_die>12)&cooldown.wake_of_ashes.remains<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,if=buff.hammer_of_light_ready.up||!talent.divine_hammer||buff.divine_hammer.up||cooldown.divine_hammer.remains>10\nactions.finishers+=/divine_hammer,if=!buff.divine_hammer.up\nactions.finishers+=/divine_storm,if=variable.ds_castable&!buff.hammer_of_light_ready.up&(cooldown.divine_hammer.remains||buff.divine_hammer.up||!talent.divine_hammer)&(!talent.crusade||cooldown.crusade.remains>gcd*3||buff.crusade.up&buff.crusade.stack<10||talent.radiant_glory)\nactions.finishers+=/justicars_vengeance,if=(!talent.crusade||cooldown.crusade.remains>gcd*3||buff.crusade.up&buff.crusade.stack<10||talent.radiant_glory)&!buff.hammer_of_light_ready.up&(cooldown.divine_hammer.remains||buff.divine_hammer.up||!talent.divine_hammer)\nactions.finishers+=/templars_verdict,if=(!talent.crusade||cooldown.crusade.remains>gcd*3||buff.crusade.up&buff.crusade.stack<10||talent.radiant_glory)&!buff.hammer_of_light_ready.up&(cooldown.divine_hammer.remains||buff.divine_hammer.up||!talent.divine_hammer)\nactions.finishers+=/variable,name=finished,op=set,value=true\n\nactions.generators+=/variable,name=finished,op=set,value=false\nactions.generators+=/call_action_list,name=finishers,strict=1,if=(holy_power=5||holy_power=4&buff.divine_resonance.up||buff.all_in.up)&cooldown.wake_of_ashes.remains\nactions.generators+=/templar_slash,if=buff.templar_strikes.remains<gcd*2\nactions.generators+=/blade_of_justice,if=!dot.expurgation.ticking&talent.holy_flames&cooldown.divine_toll.remains\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=!variable.finished\nactions.generators+=/templar_slash,if=buff.templar_strikes.remains<gcd&spell_targets.divine_storm>=2\nactions.generators+=/blade_of_justice,if=spell_targets.divine_storm>=2&talent.blade_of_vengeance\nactions.generators+=/hammer_of_wrath,if=(spell_targets.divine_storm<2||!talent.blessed_champion)&buff.blessing_of_anshe.up\nactions.generators+=/templar_strike\nactions.generators+=/judgment\nactions.generators+=/blade_of_justice\nactions.generators+=/hammer_of_wrath,if=(spell_targets.divine_storm<2||!talent.blessed_champion)\nactions.generators+=/templar_slash\nactions.generators+=/crusader_strike\nactions.generators+=/hammer_of_wrath\nactions.generators+=/arcane_torrent",
|
|
["version"] = 20250310,
|
|
["warnings"] = "The import for 'precombat' required some automated changes.\nLine 2: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 2: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 2: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 2: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 2: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 2: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 3: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 3: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 3: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 3: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 3: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.crusade.duration=0||cooldown.crusade.duration%%trinket.t1.cooldown.duration=0||trinket.t1.cooldown.duration%%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.crusade.duration=0||cooldown.crusade.duration%trinket.t1.cooldown.duration=0||trinket.t1.cooldown.duration%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%trinket.t1.cooldown.duration=0)'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.crusade.duration=0||cooldown.crusade.duration%%trinket.t2.cooldown.duration=0||trinket.t2.cooldown.duration%%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.crusade.duration=0||cooldown.crusade.duration%trinket.t2.cooldown.duration=0||trinket.t2.cooldown.duration%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%trinket.t2.cooldown.duration=0)'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 6: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 6: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 6: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 6: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 6: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 6: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'cooldowns' required some automated changes.\nLine 4: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 4: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 4: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 4: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 4: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 5: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 5: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 5: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 6: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 6: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 6: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 8: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 8: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 9: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 10: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 10: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 10: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 10: Converted 'talent.divine_hammer' to 'talent.divine_hammer.enabled' (1x).\nLine 10: Converted 'talent.executioners_will' to 'talent.executioners_will.enabled' (1x).\nLine 11: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 13: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 13: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 13: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 13: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\n\nThe import for 'finishers' required some automated changes.\nLine 1: Converted 'talent.final_verdict' to 'talent.final_verdict.enabled' (1x).\nLine 1: Converted 'talent.tempest_of_the_lightbringer' to 'talent.tempest_of_the_lightbringer.enabled' (1x).\nLine 2: Converted 'talent.divine_hammer' to 'talent.divine_hammer.enabled' (1x).\nLine 4: Converted 'talent.divine_hammer' to 'talent.divine_hammer.enabled' (1x).\nLine 4: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 4: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 5: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.divine_hammer' to 'talent.divine_hammer.enabled' (1x).\nLine 6: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 6: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 6: Converted 'talent.divine_hammer' to 'talent.divine_hammer.enabled' (1x).\n\nThe import for 'generators' required some automated changes.\nLine 4: Converted 'talent.holy_flames' to 'talent.holy_flames.enabled' (1x).\nLine 5: Converted 'talent.lights_guidance' to 'talent.lights_guidance.enabled' (1x).\nLine 5: Converted 'talent.lights_guidance' to 'talent.lights_guidance.enabled' (1x).\nLine 5: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 6: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 9: Converted 'talent.blade_of_vengeance' to 'talent.blade_of_vengeance.enabled' (1x).\nLine 10: Converted 'talent.blessed_champion' to 'talent.blessed_champion.enabled' (1x).\nLine 14: Converted 'talent.blessed_champion' to 'talent.blessed_champion.enabled' (1x).\n\nImported 5 action lists.\n",
|
|
["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,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "false",
|
|
["var_name"] = "finished",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "( holy_power = 5 || holy_power = 4 & buff.divine_resonance.up || buff.all_in.up ) & cooldown.wake_of_ashes.remains",
|
|
["list_name"] = "finishers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.templar_strikes.remains < gcd.max * 2",
|
|
["action"] = "templar_slash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.expurgation.ticking & talent.holy_flames.enabled & cooldown.divine_toll.remains",
|
|
["action"] = "blade_of_justice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.lights_guidance.enabled || holy_power >= 2 & talent.lights_guidance.enabled ) & ( cooldown.avenging_wrath.remains > 6 || cooldown.crusade.remains > 6 || talent.radiant_glory.enabled ) & ( ! talent.execution_sentence.enabled || cooldown.execution_sentence.remains > 4 || target.time_to_die < 8 ) & ( ! raid_event.adds.exists || raid_event.adds.in > 10 || raid_event.adds.up )",
|
|
["action"] = "wake_of_ashes",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "holy_power <= 2 & ( ! raid_event.adds.exists || raid_event.adds.in > 10 || raid_event.adds.up ) & ( cooldown.avenging_wrath.remains > 15 || cooldown.crusade.remains > 15 || talent.radiant_glory.enabled || fight_remains < 8 )",
|
|
["action"] = "divine_toll",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! variable.finished",
|
|
["list_name"] = "finishers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.templar_strikes.remains < gcd.max & spell_targets.divine_storm >= 2",
|
|
["action"] = "templar_slash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.divine_storm >= 2 & talent.blade_of_vengeance.enabled",
|
|
["action"] = "blade_of_justice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( spell_targets.divine_storm < 2 || ! talent.blessed_champion.enabled ) & buff.blessing_of_anshe.up",
|
|
["action"] = "hammer_of_wrath",
|
|
},
|
|
{
|
|
["action"] = "templar_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blade_of_justice",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( spell_targets.divine_storm < 2 || ! talent.blessed_champion.enabled )",
|
|
["action"] = "hammer_of_wrath",
|
|
},
|
|
{
|
|
["action"] = "templar_slash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "crusader_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "hammer_of_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["finishers"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( spell_targets.divine_storm >= 2 || buff.empyrean_power.up || ! talent.final_verdict.enabled & talent.tempest_of_the_lightbringer.enabled ) & ! buff.empyrean_legacy.up & ! ( buff.divine_arbiter.up & buff.divine_arbiter.stack > 24 )",
|
|
["var_name"] = "ds_castable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hammer_of_light_ready.up || ! talent.divine_hammer.enabled || buff.divine_hammer.up || cooldown.divine_hammer.remains > 10",
|
|
["action"] = "hammer_of_light",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.divine_hammer.up",
|
|
["action"] = "divine_hammer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.ds_castable & ! buff.hammer_of_light_ready.up & ( cooldown.divine_hammer.remains || buff.divine_hammer.up || ! talent.divine_hammer.enabled ) & ( ! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 || buff.crusade.up & buff.crusade.stack < 10 || talent.radiant_glory.enabled )",
|
|
["action"] = "divine_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 || buff.crusade.up & buff.crusade.stack < 10 || talent.radiant_glory.enabled ) & ! buff.hammer_of_light_ready.up & ( cooldown.divine_hammer.remains || buff.divine_hammer.up || ! talent.divine_hammer.enabled )",
|
|
["action"] = "justicars_vengeance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 || buff.crusade.up & buff.crusade.stack < 10 || talent.radiant_glory.enabled ) & ! buff.hammer_of_light_ready.up & ( cooldown.divine_hammer.remains || buff.divine_hammer.up || ! talent.divine_hammer.enabled )",
|
|
["action"] = "templars_verdict",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "true",
|
|
["var_name"] = "finished",
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avenging_wrath.up || buff.crusade.up || debuff.execution_sentence.up || boss & fight_remains < 30",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.lights_judgment >= 2 || ! raid_event.adds.exists || raid_event.adds.in > 75 || raid_event.adds.up",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avenging_wrath.up || buff.crusade.up & buff.crusade.stack = 10 || debuff.execution_sentence.up",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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"] = "bestinslots",
|
|
["criteria"] = "( ( buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 40 || buff.crusade.up & buff.crusade.stack = 10 ) & ! talent.radiant_glory.enabled || talent.radiant_glory.enabled & ( ! talent.execution_sentence.enabled & cooldown.wake_of_ashes.remains = 0 || debuff.execution_sentence.up ) )",
|
|
["name"] = "bestinslots",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 ) & ! buff.divine_hammer.up",
|
|
["action"] = "shield_of_vengeance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! buff.crusade.up & cooldown.crusade.remains > 15 || buff.crusade.stack = 10 || cooldown.avenging_wrath.remains < 0.75 || cooldown.avenging_wrath.remains > 15 || talent.radiant_glory.enabled ) & ( holy_power >= 4 & time < 5 || holy_power >= 3 & time > 5 || ( holy_power >= 2 || time < 5 ) & ( talent.divine_auxiliary.enabled || talent.radiant_glory.enabled ) ) & ( cooldown.divine_hammer.remains > 5 || buff.divine_hammer.up || ! talent.divine_hammer.enabled ) & ( target.time_to_die > 8 & ! talent.executioners_will.enabled || target.time_to_die > 12 ) & cooldown.wake_of_ashes.remains < gcd.max",
|
|
["action"] = "execution_sentence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( holy_power >= 4 & time < 5 || holy_power >= 3 & time > 5 || holy_power >= 2 & talent.divine_auxiliary.enabled & ( cooldown.execution_sentence.remains = 0 || cooldown.final_reckoning.remains = 0 ) ) & ( ! raid_event.adds.up || target.time_to_die > 10 )",
|
|
["action"] = "avenging_wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "holy_power >= 5 & time < 5 || holy_power >= 3 & time > 5",
|
|
["action"] = "crusade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( holy_power >= 4 & time < 8 || holy_power >= 3 & time >= 8 || holy_power >= 2 & ( talent.divine_auxiliary.enabled || talent.radiant_glory.enabled ) ) & ( cooldown.avenging_wrath.remains > 10 || cooldown.crusade.remains & ( ! buff.crusade.up || buff.crusade.stack >= 10 ) || talent.radiant_glory.enabled & ( buff.avenging_wrath.up || talent.crusade.enabled & cooldown.wake_of_ashes.remains < gcd.max ) ) & ( ! raid_event.adds.exists || raid_event.adds.up || raid_event.adds.in > 40 )",
|
|
["action"] = "final_reckoning",
|
|
},
|
|
},
|
|
},
|
|
["author"] = "SimC",
|
|
},
|
|
["Discipline"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250424,
|
|
["author"] = "SimC",
|
|
["desc"] = "Healer priorities are DPS-focused only\n\n2025-04-23: Remove PTW\n\n2024-07-30: The War Within",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! buff.twilight_equilibrium_holy_amp.up & ! buff.twilight_equilibrium_shadow_amp.up",
|
|
["var_name"] = "te_none",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.twilight_equilibrium_shadow_amp.up || variable.te_none",
|
|
["var_name"] = "te_shadow",
|
|
["description"] = "Twilight Equilibrium is buffing shadow damage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.twilight_equilibrium_holy_amp.up || variable.te_none",
|
|
["var_name"] = "te_holy",
|
|
["description"] = "Twilight Equilibrium is buffing holy damage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.shadow_covenant.enabled",
|
|
["var_name"] = "long_scov",
|
|
["description"] = "Long Shadow covenant is enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.shadowfiend.up || buff.shadow_covenant.up",
|
|
["var_name"] = "can_enter_scov",
|
|
["description"] = "Ready to start shadow covenant phase",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["description"] = "penance",
|
|
["criteria"] = "talent.dark_indulgence.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
["criteria"] = "talent.shadow_word_death.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
["criteria"] = "talent.shadow_word_death.enabled & talent.death_and_madness.enabled & target.health.pct < 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.mindgames.execute_time",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
["criteria"] = "talent.mindgames.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.divine_star.execute_time",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
["criteria"] = "talent.divine_star.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.halo.execute_time",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
["criteria"] = "talent.halo.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "floor",
|
|
["action"] = "variable",
|
|
["value"] = "( buff.shadow_covenant.duration - variable.shadow_spells_duration_max ) / gcd.max",
|
|
["var_name"] = "max_te_holy",
|
|
["description"] = "(scov duration - shadow spells duration) / GCD time = estimate of holy spells we should need to use during the next scov window Long scov example: (15 - 12) / 1.5 = 2 GCDs to spend on holy spells Short scov example: (7 - 12) / 1.5 = -3.3 GCDs to spend on holy spells (none)",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "remaining_te_holy",
|
|
["description"] = "Counting variable, the number of non-fractional remaining holy casts available",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "variable.max_te_holy",
|
|
["var_name"] = "remaining_te_holy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "TODO: duration_expected is buggy on penance/dark reprimand, using a static reduction as a stand-in for now",
|
|
["value"] = "2",
|
|
["var_name"] = "expected_penance_reduction",
|
|
["action"] = "variable",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.train_of_thought.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["description"] = "Calculate how much cast time worth of shadow spells we have currently available. We use shadow_spells_duration to determine if we have time to weave in any holy spells to proc twilight equilibrium.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["value"] = "2",
|
|
["description"] = "Schism Penance",
|
|
["criteria"] = "cooldown.penance.up || ( ( cooldown.penance.remains - variable.expected_penance_reduction ) < buff.shadow_covenant.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["value"] = "action.mindgames.execute_time",
|
|
["description"] = "Mindgames",
|
|
["criteria"] = "cooldown.mindgames.up || ( cooldown.mindgames.remains_expected < buff.shadow_covenant.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["description"] = "We always get the first SW:D",
|
|
["criteria"] = "cooldown.shadow_word_death.up || ( cooldown.shadow_word_death.remains < buff.shadow_covenant.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["description"] = "Second SW:D only when talented and target health in execute range",
|
|
["criteria"] = "( cooldown.shadow_word_death.up || ( cooldown.shadow_word_death.remains < buff.shadow_covenant.remains ) ) & ( target.health.pct < 20 || target.time_to_pct_20 < cooldown.shadow_word_death.remains ) & talent.death_and_madness.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["value"] = "action.mind_blast.charges * action.mind_blast.execute_time",
|
|
["description"] = "Add any whole charges of mind blast",
|
|
["criteria"] = "action.mind_blast.charges >= 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["description"] = "Add any fractional charges of mindblast that will recharge in time",
|
|
["criteria"] = "( ( action.mind_blast.charges_fractional >= 1 & action.mind_blast.charges_fractional < 2 ) & ( ( ( 1 - ( action.mind_blast.charges_fractional - 1 ) ) * action.mind_blast.recharge_time ) < buff.shadow_covenant.remains ) ) || ( ( action.mind_blast.charges_fractional < 1 ) & ( ( ( 1 - action.mind_blast.charges_fractional ) * action.mind_blast.recharge_time ) < buff.shadow_covenant.remains ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["value"] = "action.divine_star.execute_time",
|
|
["description"] = "Divine Star",
|
|
["criteria"] = "cooldown.divine_star.up || ( cooldown.divine_star.remains < buff.shadow_covenant.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["value"] = "action.halo.execute_time",
|
|
["description"] = "Halo",
|
|
["criteria"] = "cooldown.halo.up || ( cooldown.halo.remains < buff.shadow_covenant.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Determine if we have enough scov time remaining to weave in a twilight equilibrium activation. If we don't have TE talented, always false. Using smite's execution time to represent a worst-case scenario.",
|
|
["value"] = "( buff.shadow_covenant.remains - variable.shadow_spells_duration ) > action.smite.execute_time",
|
|
["var_name"] = "should_te",
|
|
["action"] = "variable",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.twilight_equilibrium.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.shadowfiend.remains + action.shadowfiend.execute_time",
|
|
["var_name"] = "next_penance_time",
|
|
["description"] = "First casts should always be HD prep->covenant->schism->HD dark reprimand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_penance_time",
|
|
["value"] = "gcd.max",
|
|
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
|
|
["criteria"] = "variable.remaining_te_holy > 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "remaining_te_holy",
|
|
["description"] = "Reduce our counting variable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( cooldown.penance.duration - variable.expected_penance_reduction ) < variable.next_penance_time",
|
|
["var_name"] = "can_penance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.next_penance_time + 2",
|
|
["var_name"] = "next_swd_time",
|
|
["description"] = "Shadow Word: Death SW:D is better than other spells if we are in execute phase.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_swd_time",
|
|
["value"] = "gcd.max",
|
|
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
|
|
["criteria"] = "variable.remaining_te_holy > 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "remaining_te_holy",
|
|
["description"] = "Reduce our counting variable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_swd_time",
|
|
["value"] = "action.mindgames.execute_time",
|
|
["description"] = "indgame ette ha W: ren' xecut has n av hattere erception on' av xpiatio",
|
|
["criteria"] = "( ( talent.mindgames.enabled & talent.shattered_perceptions.enabled ) || ( talent.mindgames.enabled & ! talent.expiation.enabled ) ) & target.health.pct >= 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_swd_time",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["description"] = "Mind blast is better than SW:D if we aren't in execute",
|
|
["criteria"] = "target.health.pct >= 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_swd_time",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["description"] = "Second mindblast when talented",
|
|
["criteria"] = "target.health.pct >= 20 & talent.dark_indulgence.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_swd_time",
|
|
["value"] = "action.divine_star.execute_time",
|
|
["description"] = "Divine Star and halo are better than SW:D if we aren't in execute and don't have expiation",
|
|
["criteria"] = "talent.divine_star.enabled & target.health.pct >= 20 & ! talent.expiation.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.halo.execute_time",
|
|
["var_name"] = "next_swd_time",
|
|
["criteria"] = "talent.halo.enabled & target.health.pct >= 20 & ! talent.expiation.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.shadow_word_death.duration_expected < variable.next_swd_time",
|
|
["var_name"] = "can_swd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.next_penance_time + 2",
|
|
["var_name"] = "next_mind_blast_time",
|
|
["description"] = "Mindblast Mindblast is better than other spells if we aren't in execute phase",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mind_blast_time",
|
|
["value"] = "gcd.max",
|
|
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
|
|
["criteria"] = "variable.remaining_te_holy > 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "remaining_te_holy",
|
|
["description"] = "Reduce our counting variable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mind_blast_time",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["description"] = "Add SW:D if we're in execute phase",
|
|
["criteria"] = "target.health.pct < 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mind_blast_time",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["description"] = "Add a second SW:D if we have death and madness",
|
|
["criteria"] = "talent.death_and_madness.enabled & target.health.pct < 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mind_blast_time",
|
|
["value"] = "action.mindgames.execute_time",
|
|
["description"] = "Add mindgames if we have it talented and don't have expiation",
|
|
["criteria"] = "talent.mindgames.enabled & ! talent.expiation.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "TODO: This is a little bit simplistic, requiring both charges of mindblast to be available at the moment the first charge needs to be used. Slight optimization should be possible.",
|
|
["value"] = "( ( action.mind_blast.max_charges - ( action.mind_blast.charges_fractional - 1 ) ) * action.mind_blast.recharge_time ) < variable.next_mind_blast_time",
|
|
["var_name"] = "can_mind_blast",
|
|
["action"] = "variable",
|
|
["value_else"] = "0",
|
|
["criteria"] = "action.mind_blast.charges_fractional >= 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.next_penance_time + 2",
|
|
["var_name"] = "next_mindgames_time",
|
|
["description"] = "Mindgames Mindgames is a better option than other spells if we aren't in execute and don't have expiation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mindgames_time",
|
|
["value"] = "gcd.max",
|
|
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
|
|
["criteria"] = "variable.remaining_te_holy > 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "remaining_te_holy",
|
|
["description"] = "Reduce our counting variable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mindgames_time",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["description"] = "SW:D is better than mindgames in execute phase, or outside of execute phase if we don't have shattered perceptions but do have expiation",
|
|
["criteria"] = "target.health.pct < 20 || ( talent.expiation.enabled & ! talent.shattered_perceptions.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mindgames_time",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["description"] = "Add a second SW:D if we have death and madness",
|
|
["criteria"] = "target.health.pct < 20 & talent.death_and_madness.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mindgames_time",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["description"] = "Mind blast is better than mindgames if we have expiation",
|
|
["criteria"] = "talent.expiation.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mindgames_time",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["description"] = "Second mindblast when talented",
|
|
["criteria"] = "talent.expiation.enabled & talent.dark_indulgence.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.mindgames.duration_expected < variable.next_mindgames_time",
|
|
["var_name"] = "can_mindgames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.next_penance_time + 2",
|
|
["var_name"] = "next_divine_star_time",
|
|
["description"] = "Divine Star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["value"] = "gcd.max",
|
|
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
|
|
["criteria"] = "variable.remaining_te_holy > 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "remaining_te_holy",
|
|
["description"] = "Reduce our counting variable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["description"] = "SW:D is better unless outside of execute phase when expiation is untalented",
|
|
["criteria"] = "target.health.pct < 20 || talent.expiation.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["description"] = "Add a second SW:D if we have death and madness",
|
|
["criteria"] = "target.health.pct < 20 & talent.death_and_madness.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["description"] = "Mind blast is always better",
|
|
["criteria"] = "talent.expiation.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["description"] = "Second mindblast when talented",
|
|
["criteria"] = "talent.dark_indulgence.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["value"] = "action.mindgames.execute_time",
|
|
["description"] = "Mindgames is always better",
|
|
["criteria"] = "talent.mindgames.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.divine_star.duration < variable.next_divine_star_time",
|
|
["var_name"] = "can_divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "talent.shadow_covenant.enabled & cooldown.mindbender.up",
|
|
["list_name"] = "scov_prep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "variable.long_scov & variable.can_enter_scov",
|
|
["list_name"] = "long_scov",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( 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 -- is this even possible anymore?",
|
|
["criteria"] = "! buff.shadow_covenant.up",
|
|
["action"] = "shadowfiend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.shadow_covenant.up",
|
|
["action"] = "mindbender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.shadow_covenant.up",
|
|
["action"] = "voidwraith",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
},
|
|
["scov_prep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Prepare to enter shadow covenant",
|
|
["criteria"] = "cooldown.shadowfiend.remains < cast_time",
|
|
["action"] = "power_word_radiance",
|
|
},
|
|
},
|
|
["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"] = "target.health.pct < 20 & talent.expiation.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "penance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.halo >= 2",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.divine_star >= 2",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 20 & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.expiation.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "mind_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shattered_perceptions.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "mindgames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.expiation.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & ( target.time_to_pct_20 > buff.shadow_covenant.remains )",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "mindgames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "mind_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & ( target.time_to_pct_20 > buff.shadow_covenant.remains )",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_holy ) )",
|
|
["action"] = "smite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "just in case we run out of shadow spells with the above conditions",
|
|
["action"] = "penance",
|
|
},
|
|
{
|
|
["action"] = "mindgames",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mind_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "shadow_word_death",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "divine_star",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "halo",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "smite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250424,
|
|
["warnings"] = "The import for 'default' required some automated changes.\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'.\n\nImported 5 action lists.\n",
|
|
["profile"] = "actions.precombat+=/power_word_fortitude\n\nactions+=/call_action_list,name=cooldowns\nactions+=/variable,name=te_none,op=set,value=!buff.twilight_equilibrium_holy_amp.up&!buff.twilight_equilibrium_shadow_amp.up\n# Twilight Equilibrium is buffing shadow damage\nactions+=/variable,name=te_shadow,op=set,value=buff.twilight_equilibrium_shadow_amp.up||variable.te_none\n# Twilight Equilibrium is buffing holy damage\nactions+=/variable,name=te_holy,op=set,value=buff.twilight_equilibrium_holy_amp.up||variable.te_none\n# Long Shadow covenant is enabled\nactions+=/variable,name=long_scov,op=set,value=talent.shadow_covenant\n# Ready to start shadow covenant phase\nactions+=/variable,name=can_enter_scov,op=set,value=cooldown.shadowfiend.up||buff.shadow_covenant.up\nactions+=/variable,name=shadow_spells_duration_max,op=set,value=0\n## actions+=/variable,name=shadow_spells_duration_max,op=add,value=action.schism.execute_time,if=talent.schism\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=2\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.mind_blast.execute_time\n# penance\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.mind_blast.execute_time,if=talent.dark_indulgence\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.shadow_word_death.execute_time,if=talent.shadow_word_death\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.shadow_word_death.execute_time,if=talent.shadow_word_death&talent.death_and_madness&target.health.pct<20\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.mindgames.execute_time,if=talent.mindgames\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.divine_star.execute_time,if=talent.divine_star\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.halo.execute_time,if=talent.halo\n# (scov duration - shadow spells duration) / GCD time = estimate of holy spells we should need to use during the next scov window Long scov example: (15 - 12) / 1.5 = 2 GCDs to spend on holy spells Short scov example: (7 - 12) / 1.5 = -3.3 GCDs to spend on holy spells (none)\nactions+=/variable,name=max_te_holy,op=floor,value=(buff.shadow_covenant.duration-variable.shadow_spells_duration_max)%gcd.max\n# Counting variable, the number of non-fractional remaining holy casts available\nactions+=/variable,name=remaining_te_holy,op=set,value=0\nactions+=/variable,name=remaining_te_holy,op=add,value=variable.max_te_holy\n# TODO: duration_expected is buggy on penance/dark reprimand, using a static reduction as a stand-in for now\nactions+=/variable,name=expected_penance_reduction,op=setif,condition=talent.train_of_thought,value=2,value_else=0\n# Calculate how much cast time worth of shadow spells we have currently available. We use shadow_spells_duration to determine if we have time to weave in any holy spells to proc twilight equilibrium.\nactions+=/variable,name=shadow_spells_duration,op=set,value=0\n# Schism\n## actions+=/variable,name=shadow_spells_duration,op=add,value=action.schism.execute_time,if=cooldown.schism.up||(cooldown.schism.remains<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+=/shadow_word_pain,if=(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+=/power_word_radiance,if=cooldown.shadowfiend.remains<cast_time\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+=/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 -- is this even possible anymore?\nactions.cooldowns+=/shadowfiend,if=!buff.shadow_covenant.up\nactions.cooldowns+=/mindbender,if=!buff.shadow_covenant.up\nactions.cooldowns+=/voidwraith,if=!buff.shadow_covenant.up\n# hold PI to use with shadow covenant if we have it\nactions.cooldowns+=/power_infusion,if=!talent.shadow_covenant.enabled||(talent.shadow_covenant.enabled&(cooldown.shadowfiend.up||buff.shadow_covenant.up))\n# sync potion with PI\nactions.cooldowns+=/potion,if=buff.power_infusion.up\n# sync trinkets with PI\nactions.cooldowns+=/use_items,if=buff.power_infusion.up||cooldown.power_infusion.remains>=cooldown",
|
|
["spec"] = 256,
|
|
},
|
|
["Elemental"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250505,
|
|
["spec"] = 262,
|
|
["desc"] = "2025-05-05: SimC Sync\n2025-03-27, 04-22: Revise Ascendance/trinket sync logic\n2025-03-24: More Ascendance fixes; pre-sync with incoming SimC changes\n2025-03-14: Remove SimC specific timings for Ascendance\n2025-03-10: SimC update\n2025-02-28: Resync with SimC",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/shaman_elemental.simc\n## Up to date with SimC: April 21 2025 - 53f00ae\n\n# 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\nactions.precombat+=/variable,name=special_trinket1,value=(trinket.1.is.house_of_cards||trinket.1.is.funhouse_lens)&!(trinket.2.has_use_buff||trinket.2.is.funhouse_lens)&talent.first_ascendant\nactions.precombat+=/variable,name=special_trinket2,value=(trinket.2.is.house_of_cards||trinket.2.is.funhouse_lens)&!(trinket.1.has_use_buff||trinket.1.is.funhouse_lens)&talent.first_ascendant\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\n# Spymaster's Web\nactions+=/use_item,slot=trinket1,if=trinket.1.is.spymasters_web&((fight_remains>180&buff.spymasters_report.stack>25||buff.spymasters_report.stack>35||fight_remains<80)&cooldown.ascendance.ready&(buff.fury_of_storms.up||!talent.fury_of_the_storms)&(cooldown.primordial_wave.remains>25||!talent.primordial_wave||spell_targets.chain_lightning>=2)||boss&fight_remains<21)\nactions+=/use_item,slot=trinket2,if=trinket.2.is.spymasters_web&((fight_remains>180&buff.spymasters_report.stack>25||buff.spymasters_report.stack>35||fight_remains<80)&cooldown.ascendance.ready&(buff.fury_of_storms.up||!talent.fury_of_the_storms)&(cooldown.primordial_wave.remains>25||!talent.primordial_wave||spell_targets.chain_lightning>=2)||boss&fight_remains<21)\n# Neural Synapse Enhancer\nactions+=/use_item,name=neural_synapse_enhancer,use_off_gcd=1,if=buff.ascendance.remains>12||cooldown.ascendance.remains>10\n# House of Cards + 2 minute Ascendance\nactions+=/use_item,name=house_of_cards,use_off_gcd=1,if=(variable.special_trinket1||variable.special_trinket2)&buff.ascendance.remains>12||fight_remains<21\n# Funhouse Lens + 2 minute Ascendance\nactions+=/use_item,name=funhouse_lens,use_off_gcd=1,if=(variable.special_trinket1||variable.special_trinket2)&buff.ascendance.remains>12||fight_remains<21\n# Normal trinkets\nactions+=/use_item,slot=trinket1,use_off_gcd=1,if=!trinket.1.is.spymasters_web&!variable.special_trinket1&((buff.fury_of_storms.up||!talent.fury_of_the_storms||cooldown.stormkeeper.remains>10)&(cooldown.primordial_wave.remains>25||!talent.primordial_wave||spell_targets.chain_lightning>=2)&cooldown.ascendance.remains>15||fight_remains<21||buff.ascendance.remains>12)\nactions+=/use_item,slot=trinket2,use_off_gcd=1,if=!trinket.2.is.spymasters_web&!variable.special_trinket2&((buff.fury_of_storms.up||!talent.fury_of_the_storms||cooldown.stormkeeper.remains>10)&(cooldown.primordial_wave.remains>25||!talent.primordial_wave||spell_targets.chain_lightning>=2)&cooldown.ascendance.remains>15||fight_remains<21||buff.ascendance.remains>12)\n# Normal weapons\nactions+=/use_item,slot=main_hand,use_off_gcd=1,if=(buff.fury_of_storms.up||!talent.fury_of_the_storms||cooldown.stormkeeper.remains>10)&(cooldown.primordial_wave.remains>25||!talent.primordial_wave)&cooldown.ascendance.remains>15||buff.ascendance.remains>12\nactions+=/use_item,slot=trinket1,use_off_gcd=1,if=!(trinket.1.has_use_buff||trinket.1.is.funhouse_lens)&(!(trinket.2.has_use_buff||trinket.2.is.funhouse_lens||buff.spymasters_report.stack>25||equipped.neural_synapse_enhancer||equipped.best_in_slots)||cooldown.ascendance.remains>20||(trinket.2.cooldown.remains>20&cooldown.neural_synapse_enhancer.remains>20&cooldown.best_in_slots.remains>20))\nactions+=/use_item,slot=trinket2,use_off_gcd=1,if=!(trinket.2.has_use_buff||trinket.2.is.funhouse_lens)&(!(trinket.1.has_use_buff||trinket.1.is.funhouse_lens||buff.spymasters_report.stack>25||equipped.neural_synapse_enhancer||equipped.best_in_slots)||cooldown.ascendance.remains>20||(trinket.1.cooldown.remains>20&cooldown.neural_synapse_enhancer.remains>20&cooldown.best_in_slots.remains>20))\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,if=buff.ascendance.up||cooldown.ascendance.remains>30\nactions+=/potion,if=buff.bloodlust.up||buff.spymasters_web.up||buff.ascendance.remains>12||fight_remains<31&boss\n# [Hekili] Ascendance/trinket sync logic; revised to recover when a trinket is used *before* Ascendance.\nactions+=/variable,name=ascendance_trinket,value=buff.spymasters_web.up||(trinket.1.has_use_buff&!trinket.1.is.spymasters_web||trinket.1.is.funhouse_lens)&(trinket.1.ready_cooldown||trinket.1.cooldown.remains>20)||(trinket.2.has_use_buff&!trinket.2.is.spymasters_web||trinket.2.is.funhouse_lens)&(trinket.2.ready_cooldown||trinket.2.cooldown.remains>20)||equipped.neural_synapse_enhancer&(cooldown.neural_synapse_enhancer.remains=0||cooldown.neural_synapse_enhancer.remains>20)||equipped.best_in_slots&(cooldown.best_in_slots.remains=0||cooldown.best_in_slots.remains>20)||!trinket.1.has_use_buff&!trinket.2.has_use_buff\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,if=!buff.storm_elemental.up||!talent.echo_of_the_elementals\nactions.aoe+=/stormkeeper\n# Spread Flame shocks for Pwave.\nactions.aoe+=/liquid_magma_totem,if=(cooldown.primordial_wave.remains<5*gcd||!talent.primordial_wave)&(active_dot.flame_shock<=active_enemies-3||active_dot.flame_shock<(active_enemies>?3))&cooldown.ascendance.remains>10\nactions.aoe+=/flame_shock,cycle_targets=1,if=cooldown.primordial_wave.remains<gcd&!dot.flame_shock.ticking&(talent.primordial_wave||spell_targets.chain_lightning<=3)&cooldown.ascendance.remains>10\nactions.aoe+=/primordial_wave,if=active_dot.flame_shock=active_enemies>?6||cooldown.liquid_magma_totem.remains>15||!talent.liquid_magma_totem\nactions.aoe+=/ancestral_swiftness\n# [Hekili] Revised trinket sync to recover when trinket is used before Ascendance.\nactions.aoe+=/ascendance,if=(talent.first_ascendant||fight_remains>200||fight_remains<80||variable.ascendance_trinket)&(buff.fury_of_storms.up||cooldown.stormkeeper.remains>12||!talent.fury_of_the_storms)\n# Surge of Power is strong and should be used. ??\nactions.aoe+=/tempest,cycle_targets=1,if=buff.arc_discharge.stack<2&(buff.surge_of_power.up||!talent.surge_of_power)\nactions.aoe+=/lightning_bolt,if=buff.stormkeeper.up&buff.surge_of_power.up&spell_targets.chain_lightning=2\nactions.aoe+=/chain_lightning,if=active_enemies>=6&buff.surge_of_power.up\nactions.aoe+=/chain_lightning,if=buff.storm_frenzy.stack=2&!talent.surge_of_power&maelstrom<variable.mael_cap-(15+buff.stormkeeper.up*spell_targets.chain_lightning*spell_targets.chain_lightning)\n# Use Lava Surge procs to consume fire part of fusion if you can also buff Earthquake with it.\nactions.aoe+=/lava_burst,cycle_targets=1,if=cooldown_react&buff.lava_surge.up&buff.fusion_of_elements_fire.up&!buff.master_of_the_elements.up&(maelstrom>52-5*talent.eye_of_the_storm&(buff.echoes_of_great_sundering_es.up||!talent.echoes_of_great_sundering))\n# Spend if you are close to cap, Master of the Elements buff is up or Ascendance is about to expire.\nactions.aoe+=/earthquake,if=(maelstrom>variable.mael_cap-10*(spell_targets.chain_lightning+1)||buff.master_of_the_elements.up||buff.ascendance.up&buff.ascendance.remains<3||boss&fight_remains<5)&(buff.echoes_of_great_sundering_es.up||buff.echoes_of_great_sundering_eb.up||!talent.echoes_of_great_sundering&(!talent.elemental_blast||active_enemies>1+talent.tempest))\nactions.aoe+=/elemental_blast,cycle_targets=1,if=(maelstrom>variable.mael_cap-10*(spell_targets.chain_lightning+1)||buff.master_of_the_elements.up||buff.ascendance.up&buff.ascendance.remains<3||boss&fight_remains<5)&(active_enemies<=1+talent.tempest||talent.echoes_of_great_sundering&!buff.echoes_of_great_sundering_eb.up)\nactions.aoe+=/earth_shock,cycle_targets=1,if=(maelstrom>variable.mael_cap-10*(spell_targets.chain_lightning+1)||buff.master_of_the_elements.up||buff.ascendance.up&buff.ascendance.remains<3||boss&fight_remains<5)&talent.echoes_of_great_sundering&!buff.echoes_of_great_sundering_es.up\n# Spend to spread Lightning Rod if Tempest or Stormkeeper is up.\nactions.aoe+=/earthquake,if=talent.lightning_rod&lightning_rod<active_enemies&(buff.stormkeeper.up||buff.tempest.up||!talent.surge_of_power)&(buff.echoes_of_great_sundering_es.up||buff.echoes_of_great_sundering_eb.up||!talent.echoes_of_great_sundering&(!talent.elemental_blast||active_enemies>1+talent.tempest))\nactions.aoe+=/elemental_blast,cycle_targets=1,if=talent.lightning_rod&lightning_rod<active_enemies&(buff.stormkeeper.up||buff.tempest.up||!talent.surge_of_power)&(active_enemies<=1+talent.tempest||talent.echoes_of_great_sundering&!buff.echoes_of_great_sundering_eb.up)\nactions.aoe+=/earth_shock,cycle_targets=1,if=talent.lightning_rod&lightning_rod<active_enemies&(buff.stormkeeper.up||buff.tempest.up||!talent.surge_of_power)&talent.echoes_of_great_sundering&!buff.echoes_of_great_sundering_es.up\n# Use Icefury to proc Fusion of Elements.\nactions.aoe+=/icefury,if=talent.fusion_of_elements&!(buff.fusion_of_elements_nature.up||buff.fusion_of_elements_fire.up)&(active_enemies<=4||!talent.elemental_blast||!talent.echoes_of_great_sundering)\n# [2-3t] Use Lava Surge procs to buff <anything> with MotE on 2-3 targets.\nactions.aoe+=/lava_burst,cycle_targets=1,if=cooldown_react&buff.lava_surge.up&!buff.master_of_the_elements.up&talent.master_of_the_elements&active_enemies<=3\n# [2-3t]{Farseer} Use all Lava bursts to buff spenders, SK_CL and Tempest with MotE on 2-3 targets if not talented into Lightning Rod.\nactions.aoe+=/lava_burst,cycle_targets=1,if=!buff.master_of_the_elements.up&talent.master_of_the_elements&(buff.stormkeeper.up||buff.tempest.up||maelstrom>82-10*talent.eye_of_the_storm||maelstrom>52-5*talent.eye_of_the_storm&(buff.echoes_of_great_sundering_eb.up||!talent.elemental_blast))&active_enemies<=3&!talent.lightning_rod&talent.call_of_the_ancestors\n# [2t] Use all Lava bursts to buff <anything> with MotE on 2 targets.\nactions.aoe+=/lava_burst,cycle_targets=1,if=!buff.master_of_the_elements.up&active_enemies=2\nactions.aoe+=/flame_shock,cycle_targets=1,if=active_dot.flame_shock=0&buff.fusion_of_elements_fire.up&(!talent.elemental_blast||!talent.echoes_of_great_sundering&active_enemies>1+talent.tempest)\n# Spend to buff SK_CL (on 6+) or Tempest with SoP.\nactions.aoe+=/earthquake,if=((buff.stormkeeper.up&spell_targets.chain_lightning>=6||buff.tempest.up)&talent.surge_of_power)&(buff.echoes_of_great_sundering_es.up||buff.echoes_of_great_sundering_eb.up||!talent.echoes_of_great_sundering&(!talent.elemental_blast||active_enemies>1+talent.tempest))\nactions.aoe+=/elemental_blast,cycle_targets=1,if=((buff.stormkeeper.up&active_enemies>=6||buff.tempest.up)&talent.surge_of_power)&(active_enemies<=1+talent.tempest||talent.echoes_of_great_sundering&!buff.echoes_of_great_sundering_eb.up)\nactions.aoe+=/earth_shock,cycle_targets=1,if=((buff.stormkeeper.up&active_enemies>=6||buff.tempest.up)&talent.surge_of_power)&talent.echoes_of_great_sundering&!buff.echoes_of_great_sundering_es.up\nactions.aoe+=/frost_shock,if=buff.icefury_dmg.up&!buff.ascendance.up&!buff.stormkeeper.up&talent.call_of_the_ancestors\nactions.aoe+=/chain_lightning\nactions.aoe+=/flame_shock,moving=1,if=refreshable\nactions.aoe+=/frost_shock,moving=1\n\nactions.single_target+=/fire_elemental\nactions.single_target+=/storm_elemental,if=!buff.storm_elemental.up||!talent.echo_of_the_elementals\n# Just use Stormkeeper.\nactions.single_target+=/stormkeeper,if=!talent.fury_of_the_storms||cooldown.primordial_wave.remains<gcd||!talent.primordial_wave\n# Apply Flame shock if it is not up.\nactions.single_target+=/liquid_magma_totem,if=!dot.flame_shock.ticking&!buff.surge_of_power.up&!buff.master_of_the_elements.up\nactions.single_target+=/flame_shock,if=!dot.flame_shock.ticking&!buff.surge_of_power.up&!buff.master_of_the_elements.up\n# Use Primordial Wave as much as possible.\nactions.single_target+=/primordial_wave\nactions.single_target+=/ancestral_swiftness\n# [Hekili] Revised trinket sync to recover when trinket is used before Ascendance.\nactions.single_target+=/ascendance,if=(talent.first_ascendant||variable.ascendance_trinket)&(buff.fury_of_storms.up||cooldown.stormkeeper.remains>12||!talent.fury_of_the_storms)&(cooldown.primordial_wave.remains>25||!talent.primordial_wave)\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\nactions.single_target+=/tempest,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# Maintain Flame shock if talented into Erupting Lava.\nactions.single_target+=/flame_shock,if=dot.flame_shock.refreshable&!buff.surge_of_power.up&!buff.master_of_the_elements.up&talent.erupting_lava\n# Spend if close to overcaping or MotE buff is up. Friendship ended with Echoes of Great Sundering.\nactions.single_target+=/elemental_blast,if=maelstrom>variable.mael_cap-15||buff.master_of_the_elements.up\nactions.single_target+=/earth_shock,if=maelstrom>variable.mael_cap-15||buff.master_of_the_elements.up\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=!buff.master_of_the_elements.up&(!talent.master_of_the_elements||buff.lava_surge.up||buff.tempest.up||buff.stormkeeper.up||cooldown.lava_burst.charges_fractional>1.8||maelstrom>82-10*talent.eye_of_the_storm||maelstrom>52-5*talent.eye_of_the_storm&(buff.echoes_of_great_sundering_eb.up||!talent.elemental_blast))\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&!talent.master_of_the_elements\nactions.single_target+=/elemental_blast,if=(buff.tempest.up||buff.stormkeeper.up)&talent.surge_of_power&!talent.master_of_the_elements\nactions.single_target+=/earth_shock,if=(buff.tempest.up||buff.stormkeeper.up)&talent.surge_of_power&!talent.master_of_the_elements\nactions.single_target+=/tempest\nactions.single_target+=/lightning_bolt,if=buff.storm_elemental.up&buff.wind_gust.stack<4\n# Use Icefury-empowered Frost Shocks outside of Ascendance.\nactions.single_target+=/frost_shock,if=buff.icefury_dmg.up&!buff.ascendance.up&!buff.stormkeeper.up&talent.call_of_the_ancestors\n# Filler spell. Always available. Always the bottom line.\nactions.single_target+=/lightning_bolt\nactions.single_target+=/flame_shock,moving=1,if=movement.distance>6||refreshable\n# Frost Shock is our movement filler.\nactions.single_target+=/frost_shock,moving=1",
|
|
["version"] = 20250505,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 7: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 8: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 12: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 13: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 15: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 15: Converted 'trinket.1.is.funhouse_lens' to 'trinket.t1.is.funhouse_lens' (1x).\nLine 15: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 15: Converted 'trinket.2.is.funhouse_lens' to 'trinket.t2.is.funhouse_lens' (1x).\nLine 15: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 15: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 16: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 16: Converted 'trinket.2.is.funhouse_lens' to 'trinket.t2.is.funhouse_lens' (1x).\nLine 16: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 16: Converted 'trinket.1.is.funhouse_lens' to 'trinket.t1.is.funhouse_lens' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 20: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 20: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 20: Converted 'trinket.1.is.funhouse_lens' to 'trinket.t1.is.funhouse_lens' (1x).\nLine 20: Converted 'trinket.1.ready_cooldown' to 'trinket.t1.ready_cooldown' (1x).\nLine 20: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 20: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 20: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 20: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 20: Converted 'trinket.2.is.funhouse_lens' to 'trinket.t2.is.funhouse_lens' (1x).\nLine 20: Converted 'trinket.2.ready_cooldown' to 'trinket.t2.ready_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 20: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 20: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 8: Converted 'trinket.1.is.house_of_cards' to 'trinket.t1.is.house_of_cards' (1x).\nLine 8: Converted 'trinket.1.is.funhouse_lens' to 'trinket.t1.is.funhouse_lens' (1x).\nLine 8: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 8: Converted 'trinket.2.is.funhouse_lens' to 'trinket.t2.is.funhouse_lens' (1x).\nLine 9: Converted 'trinket.2.is.house_of_cards' to 'trinket.t2.is.house_of_cards' (1x).\nLine 9: Converted 'trinket.2.is.funhouse_lens' to 'trinket.t2.is.funhouse_lens' (1x).\nLine 9: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 9: Converted 'trinket.1.is.funhouse_lens' to 'trinket.t1.is.funhouse_lens' (1x).\n\nImported 4 action lists.\n",
|
|
["lists"] = {
|
|
["single_target"] = {
|
|
{
|
|
["action"] = "fire_elemental",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.storm_elemental.up || ! talent.echo_of_the_elementals.enabled",
|
|
["action"] = "storm_elemental",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Just use Stormkeeper.",
|
|
["criteria"] = "! talent.fury_of_the_storms.enabled || cooldown.primordial_wave.remains < gcd.max || ! talent.primordial_wave.enabled",
|
|
["action"] = "stormkeeper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Apply Flame shock if it is not up.",
|
|
["criteria"] = "! dot.flame_shock.ticking & ! buff.surge_of_power.up & ! buff.master_of_the_elements.up",
|
|
["action"] = "liquid_magma_totem",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.flame_shock.ticking & ! buff.surge_of_power.up & ! buff.master_of_the_elements.up",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Primordial Wave as much as possible.",
|
|
["action"] = "primordial_wave",
|
|
},
|
|
{
|
|
["action"] = "ancestral_swiftness",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "[Hekili] Revised trinket sync to recover when trinket is used before Ascendance.",
|
|
["criteria"] = "( talent.first_ascendant.enabled || variable.ascendance_trinket ) & ( buff.fury_of_storms.up || cooldown.stormkeeper.remains > 12 || ! talent.fury_of_the_storms.enabled ) & ( cooldown.primordial_wave.remains > 25 || ! talent.primordial_wave.enabled )",
|
|
["action"] = "ascendance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Surge of Power is strong and should be used.??",
|
|
["criteria"] = "buff.surge_of_power.up",
|
|
["action"] = "tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.surge_of_power.up",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_frenzy.stack = 2 & ! talent.surge_of_power.enabled",
|
|
["action"] = "tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use LMT to apply Flame Shock.",
|
|
["criteria"] = "dot.flame_shock.refreshable & ! buff.master_of_the_elements.up",
|
|
["action"] = "liquid_magma_totem",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Maintain Flame shock if talented into Erupting Lava.",
|
|
["criteria"] = "dot.flame_shock.refreshable & ! buff.surge_of_power.up & ! buff.master_of_the_elements.up & talent.erupting_lava.enabled",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Spend if close to overcaping or MotE buff is up. Friendship ended with Echoes of Great Sundering.",
|
|
["criteria"] = "maelstrom > variable.mael_cap - 15 || buff.master_of_the_elements.up",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "maelstrom > variable.mael_cap - 15 || buff.master_of_the_elements.up",
|
|
["action"] = "earth_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Icefury to proc Fusion of Elements.",
|
|
["criteria"] = "! ( buff.fusion_of_elements_nature.up || buff.fusion_of_elements_fire.up )",
|
|
["action"] = "icefury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "! buff.master_of_the_elements.up & ( ! talent.master_of_the_elements.enabled || buff.lava_surge.up || buff.tempest.up || buff.stormkeeper.up || cooldown.lava_burst.charges_fractional > 1.8 || maelstrom > 82 - 10 * talent.eye_of_the_storm.enabled || maelstrom > 52 - 5 * talent.eye_of_the_storm.enabled & ( buff.echoes_of_great_sundering_eb.up || ! talent.elemental_blast.enabled ) )",
|
|
["description"] = "Use Lava Burst to proc Master of the Elements.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 & ! talent.master_of_the_elements.enabled",
|
|
["action"] = "earthquake",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.tempest.up || buff.stormkeeper.up ) & talent.surge_of_power.enabled & ! talent.master_of_the_elements.enabled",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.tempest.up || buff.stormkeeper.up ) & talent.surge_of_power.enabled & ! talent.master_of_the_elements.enabled",
|
|
["action"] = "earth_shock",
|
|
},
|
|
{
|
|
["action"] = "tempest",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_elemental.up & buff.wind_gust.stack < 4",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Icefury-empowered Frost Shocks outside of Ascendance.",
|
|
["criteria"] = "buff.icefury_dmg.up & ! buff.ascendance.up & ! buff.stormkeeper.up & talent.call_of_the_ancestors.enabled",
|
|
["action"] = "frost_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Filler spell. Always available. Always the bottom line.",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["enable_moving"] = true,
|
|
["action"] = "flame_shock",
|
|
["criteria"] = "movement.distance > 6 || refreshable",
|
|
["moving"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["enable_moving"] = true,
|
|
["action"] = "frost_shock",
|
|
["description"] = "Frost Shock is our movement filler.",
|
|
["moving"] = 1,
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["action"] = "fire_elemental",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.storm_elemental.up || ! talent.echo_of_the_elementals.enabled",
|
|
["action"] = "storm_elemental",
|
|
},
|
|
{
|
|
["action"] = "stormkeeper",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Spread Flame shocks for Pwave.",
|
|
["criteria"] = "( cooldown.primordial_wave.remains < 5 * gcd.max || ! talent.primordial_wave.enabled ) & ( active_dot.flame_shock <= active_enemies - 3 || active_dot.flame_shock < ( active_enemies >? 3 ) ) & cooldown.ascendance.remains > 10",
|
|
["action"] = "liquid_magma_totem",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "flame_shock",
|
|
["criteria"] = "cooldown.primordial_wave.remains < gcd.max & ! dot.flame_shock.ticking & ( talent.primordial_wave.enabled || spell_targets.chain_lightning <= 3 ) & cooldown.ascendance.remains > 10",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.flame_shock = active_enemies >? 6 || cooldown.liquid_magma_totem.remains > 15 || ! talent.liquid_magma_totem.enabled",
|
|
["action"] = "primordial_wave",
|
|
},
|
|
{
|
|
["action"] = "ancestral_swiftness",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "[Hekili] Revised trinket sync to recover when trinket is used before Ascendance.",
|
|
["criteria"] = "( talent.first_ascendant.enabled || fight_remains > 200 || fight_remains < 80 || variable.ascendance_trinket ) & ( buff.fury_of_storms.up || cooldown.stormkeeper.remains > 12 || ! talent.fury_of_the_storms.enabled )",
|
|
["action"] = "ascendance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tempest",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "buff.arc_discharge.stack < 2 & ( buff.surge_of_power.up || ! talent.surge_of_power.enabled )",
|
|
["description"] = "Surge of Power is strong and should be used. ??",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.stormkeeper.up & buff.surge_of_power.up & spell_targets.chain_lightning = 2",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 6 & buff.surge_of_power.up",
|
|
["action"] = "chain_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.storm_frenzy.stack = 2 & ! talent.surge_of_power.enabled & maelstrom < variable.mael_cap - ( 15 + buff.stormkeeper.up * spell_targets.chain_lightning * spell_targets.chain_lightning )",
|
|
["action"] = "chain_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "cooldown_react & buff.lava_surge.up & buff.fusion_of_elements_fire.up & ! buff.master_of_the_elements.up & ( maelstrom > 52 - 5 * talent.eye_of_the_storm.enabled & ( buff.echoes_of_great_sundering_es.up || ! talent.echoes_of_great_sundering.enabled ) )",
|
|
["description"] = "Use Lava Surge procs to consume fire part of fusion if you can also buff Earthquake with it.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Spend if you are close to cap, Master of the Elements buff is up or Ascendance is about to expire.",
|
|
["criteria"] = "( maelstrom > variable.mael_cap - 10 * ( spell_targets.chain_lightning + 1 ) || buff.master_of_the_elements.up || buff.ascendance.up & buff.ascendance.remains < 3 || boss & fight_remains < 5 ) & ( buff.echoes_of_great_sundering_es.up || buff.echoes_of_great_sundering_eb.up || ! talent.echoes_of_great_sundering.enabled & ( ! talent.elemental_blast.enabled || active_enemies > 1 + talent.tempest.enabled ) )",
|
|
["action"] = "earthquake",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "elemental_blast",
|
|
["criteria"] = "( maelstrom > variable.mael_cap - 10 * ( spell_targets.chain_lightning + 1 ) || buff.master_of_the_elements.up || buff.ascendance.up & buff.ascendance.remains < 3 || boss & fight_remains < 5 ) & ( active_enemies <= 1 + talent.tempest.enabled || talent.echoes_of_great_sundering.enabled & ! buff.echoes_of_great_sundering_eb.up )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earth_shock",
|
|
["criteria"] = "( maelstrom > variable.mael_cap - 10 * ( spell_targets.chain_lightning + 1 ) || buff.master_of_the_elements.up || buff.ascendance.up & buff.ascendance.remains < 3 || boss & fight_remains < 5 ) & talent.echoes_of_great_sundering.enabled & ! buff.echoes_of_great_sundering_es.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Spend to spread Lightning Rod if Tempest or Stormkeeper is up.",
|
|
["criteria"] = "talent.lightning_rod.enabled & lightning_rod < active_enemies & ( buff.stormkeeper.up || 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 & ( ! talent.elemental_blast.enabled || active_enemies > 1 + talent.tempest.enabled ) )",
|
|
["action"] = "earthquake",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "elemental_blast",
|
|
["criteria"] = "talent.lightning_rod.enabled & lightning_rod < active_enemies & ( buff.stormkeeper.up || buff.tempest.up || ! talent.surge_of_power.enabled ) & ( active_enemies <= 1 + talent.tempest.enabled || talent.echoes_of_great_sundering.enabled & ! buff.echoes_of_great_sundering_eb.up )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earth_shock",
|
|
["criteria"] = "talent.lightning_rod.enabled & lightning_rod < active_enemies & ( buff.stormkeeper.up || buff.tempest.up || ! talent.surge_of_power.enabled ) & talent.echoes_of_great_sundering.enabled & ! buff.echoes_of_great_sundering_es.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Icefury to proc Fusion of Elements.",
|
|
["criteria"] = "talent.fusion_of_elements.enabled & ! ( buff.fusion_of_elements_nature.up || buff.fusion_of_elements_fire.up ) & ( active_enemies <= 4 || ! talent.elemental_blast.enabled || ! talent.echoes_of_great_sundering.enabled )",
|
|
["action"] = "icefury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "cooldown_react & buff.lava_surge.up & ! buff.master_of_the_elements.up & talent.master_of_the_elements.enabled & active_enemies <= 3",
|
|
["description"] = "[2-3t] Use Lava Surge procs to buff <anything> with MotE on 2-3 targets.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "! buff.master_of_the_elements.up & talent.master_of_the_elements.enabled & ( buff.stormkeeper.up || buff.tempest.up || maelstrom > 82 - 10 * talent.eye_of_the_storm.enabled || maelstrom > 52 - 5 * talent.eye_of_the_storm.enabled & ( buff.echoes_of_great_sundering_eb.up || ! talent.elemental_blast.enabled ) ) & active_enemies <= 3 & ! talent.lightning_rod.enabled & talent.call_of_the_ancestors.enabled",
|
|
["description"] = "[2-3t]{Farseer} Use all Lava bursts to buff spenders, SK_CL and Tempest with MotE on 2-3 targets if not talented into Lightning Rod.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_burst",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "! buff.master_of_the_elements.up & active_enemies = 2",
|
|
["description"] = "[2t] Use all Lava bursts to buff <anything> with MotE on 2 targets.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "flame_shock",
|
|
["criteria"] = "active_dot.flame_shock = 0 & buff.fusion_of_elements_fire.up & ( ! talent.elemental_blast.enabled || ! talent.echoes_of_great_sundering.enabled & active_enemies > 1 + talent.tempest.enabled )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Spend to buff SK_CL (on 6+) or Tempest with SoP.",
|
|
["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 & ( ! talent.elemental_blast.enabled || active_enemies > 1 + talent.tempest.enabled ) )",
|
|
["action"] = "earthquake",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "elemental_blast",
|
|
["criteria"] = "( ( buff.stormkeeper.up & active_enemies >= 6 || buff.tempest.up ) & talent.surge_of_power.enabled ) & ( active_enemies <= 1 + talent.tempest.enabled || talent.echoes_of_great_sundering.enabled & ! buff.echoes_of_great_sundering_eb.up )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "earth_shock",
|
|
["criteria"] = "( ( buff.stormkeeper.up & active_enemies >= 6 || buff.tempest.up ) & talent.surge_of_power.enabled ) & talent.echoes_of_great_sundering.enabled & ! buff.echoes_of_great_sundering_es.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icefury_dmg.up & ! buff.ascendance.up & ! buff.stormkeeper.up & talent.call_of_the_ancestors.enabled",
|
|
["action"] = "frost_shock",
|
|
},
|
|
{
|
|
["action"] = "chain_lightning",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["enable_moving"] = true,
|
|
["action"] = "flame_shock",
|
|
["criteria"] = "refreshable",
|
|
["moving"] = 1,
|
|
},
|
|
{
|
|
["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",
|
|
["slot"] = "trinket1",
|
|
["criteria"] = "trinket.t1.is.spymasters_web & ( ( fight_remains > 180 & buff.spymasters_report.stack > 25 || buff.spymasters_report.stack > 35 || fight_remains < 80 ) & cooldown.ascendance.ready & ( buff.fury_of_storms.up || ! talent.fury_of_the_storms.enabled ) & ( cooldown.primordial_wave.remains > 25 || ! talent.primordial_wave.enabled || spell_targets.chain_lightning >= 2 ) || boss & fight_remains < 21 )",
|
|
["description"] = "Spymaster's Web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "trinket.t2.is.spymasters_web & ( ( fight_remains > 180 & buff.spymasters_report.stack > 25 || buff.spymasters_report.stack > 35 || fight_remains < 80 ) & cooldown.ascendance.ready & ( buff.fury_of_storms.up || ! talent.fury_of_the_storms.enabled ) & ( cooldown.primordial_wave.remains > 25 || ! talent.primordial_wave.enabled || spell_targets.chain_lightning >= 2 ) || boss & fight_remains < 21 )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "neural_synapse_enhancer",
|
|
["criteria"] = "buff.ascendance.remains > 12 || cooldown.ascendance.remains > 10",
|
|
["description"] = "Neural Synapse Enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "house_of_cards",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "house_of_cards",
|
|
["criteria"] = "( variable.special_trinket1 || variable.special_trinket2 ) & buff.ascendance.remains > 12 || fight_remains < 21",
|
|
["description"] = "House of Cards + 2 minute Ascendance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "funhouse_lens",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "funhouse_lens",
|
|
["criteria"] = "( variable.special_trinket1 || variable.special_trinket2 ) & buff.ascendance.remains > 12 || fight_remains < 21",
|
|
["description"] = "Funhouse Lens + 2 minute Ascendance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! trinket.t1.is.spymasters_web & ! variable.special_trinket1 & ( ( buff.fury_of_storms.up || ! talent.fury_of_the_storms.enabled || cooldown.stormkeeper.remains > 10 ) & ( cooldown.primordial_wave.remains > 25 || ! talent.primordial_wave.enabled || spell_targets.chain_lightning >= 2 ) & cooldown.ascendance.remains > 15 || fight_remains < 21 || buff.ascendance.remains > 12 )",
|
|
["description"] = "Normal trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! trinket.t2.is.spymasters_web & ! variable.special_trinket2 & ( ( buff.fury_of_storms.up || ! talent.fury_of_the_storms.enabled || cooldown.stormkeeper.remains > 10 ) & ( cooldown.primordial_wave.remains > 25 || ! talent.primordial_wave.enabled || spell_targets.chain_lightning >= 2 ) & cooldown.ascendance.remains > 15 || fight_remains < 21 || buff.ascendance.remains > 12 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "( buff.fury_of_storms.up || ! talent.fury_of_the_storms.enabled || cooldown.stormkeeper.remains > 10 ) & ( cooldown.primordial_wave.remains > 25 || ! talent.primordial_wave.enabled ) & cooldown.ascendance.remains > 15 || buff.ascendance.remains > 12",
|
|
["description"] = "Normal weapons",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! ( trinket.t1.has_use_buff || trinket.t1.is.funhouse_lens ) & ( ! ( trinket.t2.has_use_buff || trinket.t2.is.funhouse_lens || buff.spymasters_report.stack > 25 || equipped.neural_synapse_enhancer || equipped.best_in_slots ) || cooldown.ascendance.remains > 20 || ( trinket.t2.cooldown.remains > 20 & cooldown.neural_synapse_enhancer.remains > 20 & cooldown.best_in_slots.remains > 20 ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! ( trinket.t2.has_use_buff || trinket.t2.is.funhouse_lens ) & ( ! ( trinket.t1.has_use_buff || trinket.t1.is.funhouse_lens || buff.spymasters_report.stack > 25 || equipped.neural_synapse_enhancer || equipped.best_in_slots ) || cooldown.ascendance.remains > 20 || ( trinket.t1.cooldown.remains > 20 & cooldown.neural_synapse_enhancer.remains > 20 & cooldown.best_in_slots.remains > 20 ) )",
|
|
},
|
|
{
|
|
["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,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.spymasters_web.up || ( trinket.t1.has_use_buff & ! trinket.t1.is.spymasters_web || trinket.t1.is.funhouse_lens ) & ( trinket.t1.ready_cooldown || trinket.t1.cooldown.remains > 20 ) || ( trinket.t2.has_use_buff & ! trinket.t2.is.spymasters_web || trinket.t2.is.funhouse_lens ) & ( trinket.t2.ready_cooldown || trinket.t2.cooldown.remains > 20 ) || equipped.neural_synapse_enhancer & ( cooldown.neural_synapse_enhancer.remains = 0 || cooldown.neural_synapse_enhancer.remains > 20 ) || equipped.best_in_slots & ( cooldown.best_in_slots.remains = 0 || cooldown.best_in_slots.remains > 20 ) || ! trinket.t1.has_use_buff & ! trinket.t2.has_use_buff",
|
|
["description"] = "[Hekili] Ascendance/trinket sync logic, revised to recover when a trinket is used *before* Ascendance.",
|
|
["var_name"] = "ascendance_trinket",
|
|
},
|
|
{
|
|
["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,
|
|
["description"] = "Ensure weapon enchant is applied if you've selected Improved Flametongue Weapon.",
|
|
["criteria"] = "talent.improved_flametongue_weapon.enabled",
|
|
["action"] = "flametongue_weapon",
|
|
},
|
|
{
|
|
["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.house_of_cards || trinket.t1.is.funhouse_lens ) & ! ( trinket.t2.has_use_buff || trinket.t2.is.funhouse_lens ) & talent.first_ascendant.enabled",
|
|
["var_name"] = "special_trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( trinket.t2.is.house_of_cards || trinket.t2.is.funhouse_lens ) & ! ( trinket.t1.has_use_buff || trinket.t1.is.funhouse_lens ) & talent.first_ascendant.enabled",
|
|
["var_name"] = "special_trinket2",
|
|
},
|
|
},
|
|
},
|
|
["author"] = "SimulationCraft",
|
|
},
|
|
["Fury"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250308,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-03-08: Sync with SimC\n\n2025-02-28: Additional SimC changes\n\n2025-02-26: Sync with SimC",
|
|
["profile"] = "actions.precombat+=/battle_shout\nactions.precombat+=/berserker_stance,toggle=on\nactions.precombat+=/variable,name=treacherous_transmitter_precombat_cast,value=2\nactions.precombat+=/use_item,name=treacherous_transmitter\nactions.precombat+=/recklessness,if=!equipped.fyralath_the_dreamrender\nactions.precombat+=/avatar\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.treacherous_transmitter\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.treacherous_transmitter\n# Evaluates a trinkets cooldown, divided by avatar or odyns fur. If it's value has no remainder return 1, else return 0.5.\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=trinket.1.has_use_buff&(trinket.1.cooldown.duration%%cooldown.avatar.duration=0||trinket.1.cooldown.duration%%cooldown.odyns_fury.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=trinket.2.has_use_buff&(trinket.2.cooldown.duration%%cooldown.avatar.duration=0||trinket.2.cooldown.duration%%cooldown.odyns_fury.duration=0)\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_stat.any_dps&!variable.trinket_1_exclude)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_stat.any_dps&!variable.trinket_2_exclude)\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync))\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.algethar_puzzle_box\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.algethar_puzzle_box\nactions.precombat+=/variable,name=execute_phase,value=(talent.massacre.enabled&target.health.pct<35)||target.health.pct<20\nactions.precombat+=/variable,name=on_gcd_racials,value=buff.recklessness.down&buff.avatar.down&rage<80&buff.sudden_death.down&!cooldown.bladestorm.ready&(!cooldown.execute.ready||!variable.execute_phase)\n\nactions+=/pummel,if=target.debuff.casting.react\nactions+=/charge,if=time<=0.5||movement.distance>5\nactions+=/heroic_leap,if=movement.distance>25\nactions+=/potion,if=boss&(fight_remains>300||boss&fight_remains<35&buff.recklessness.up||boss&fight_remains<25)\nactions+=/use_item,name=treacherous_transmitter\n\n## Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar.\nactions+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&!variable.trinket_1_manual&(!buff.avatar.up&trinket.1.cast_time>0||!trinket.1.cast_time>0)&buff.avatar.up&(variable.trinket_2_exclude||!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains\nactions+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&(!buff.avatar.up&trinket.2.cast_time>0||!trinket.2.cast_time>0)&buff.avatar.up&(variable.trinket_1_exclude||!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains\n## If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.\nactions+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)&!variable.trinket_1_manual&(!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs)||(trinket.1.cast_time>0&!buff.avatar.up||!trinket.1.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)&!variable.trinket_2_manual&(!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs)||(trinket.2.cast_time>0&!buff.avatar.up||!trinket.2.cast_time>0)||cooldown.avatar.remains_expected>20)\nactions+=/use_item,slot=main_hand,if=!equipped.fyralath_the_dreamrender&!equipped.bestinslots&(!variable.trinket_1_buffs||trinket.1.cooldown.remains)&(!variable.trinket_2_buffs||trinket.2.cooldown.remains)\nactions+=/use_item,name=bestinslots,if=target.time_to_die>120&(cooldown.avatar.remains>20&(trinket.1.cooldown.remains||trinket.2.cooldown.remains)||cooldown.avatar.remains>20&(!trinket.1.has_cooldown||!trinket.2.has_cooldown))||target.time_to_die<=120&target.health.pct<35&cooldown.avatar.remains>85||boss&target.time_to_die<15\nactions+=/lights_judgment,if=buff.recklessness.down&buff.avatar.down&rage<80&buff.sudden_death.down&!cooldown.bladestorm.ready&(!cooldown.execute.ready||!variable.execute_phase)\nactions+=/bag_of_tricks,if=buff.recklessness.down&buff.avatar.down&rage<80&buff.sudden_death.down&!cooldown.bladestorm.ready&(!cooldown.execute.ready||!variable.execute_phase)\nactions+=/berserking,if=buff.recklessness.up\nactions+=/blood_fury\nactions+=/fireblood\nactions+=/ancestral_call\n## actions+=/invoke_external_buff,name=power_infusion,if=buff.avatar.remains>15&fight_remains>=135||variable.execute_phase&buff.avatar.up||fight_remains<=25\nactions+=/run_action_list,name=slayer,strict=1,if=!talent.lightning_strikes\nactions+=/run_action_list,name=thane,strict=1,if=talent.lightning_strikes\n\nactions.slayer+=/recklessness\nactions.slayer+=/avatar,if=cooldown.recklessness.remains\nactions.slayer+=/execute,if=buff.ashen_juggernaut.up&buff.ashen_juggernaut.remains<=gcd\nactions.slayer+=/champions_spear,if=buff.enrage.up&(cooldown.bladestorm.remains>=2||cooldown.bladestorm.remains>=16&debuff.marked_for_execution.stack=3)\nactions.slayer+=/bladestorm,if=buff.enrage.up&(talent.reckless_abandon&cooldown.avatar.remains>=24||talent.anger_management&cooldown.recklessness.remains>=24)\nactions.slayer+=/odyns_fury,if=(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.slayer+=/whirlwind,if=active_enemies>=2&talent.meat_cleaver&buff.meat_cleaver.down\nactions.slayer+=/execute,if=buff.sudden_death.stack=2&buff.sudden_death.remains<7\nactions.slayer+=/execute,if=buff.sudden_death.up&buff.sudden_death.remains<2\nactions.slayer+=/execute,if=buff.sudden_death.up&buff.imminent_demise.stack<3&cooldown.bladestorm.remains<25\nactions.slayer+=/execute,if=debuff.marked_for_execution.up&buff.brutal_finish.up&debuff.overwhelmed.stack<10\nactions.slayer+=/onslaught,if=talent.tenderize&buff.brutal_finish.up\nactions.slayer+=/rampage,if=!buff.enrage.up||buff.slaughtering_strikes.stack>=4\nactions.slayer+=/crushing_blow,if=action.raging_blow.charges=2||buff.brutal_finish.up&(!debuff.champions_might.up||debuff.champions_might.up&debuff.champions_might.remains>gcd)\nactions.slayer+=/thunderous_roar,if=buff.enrage.up&!buff.brutal_finish.up\nactions.slayer+=/execute,if=buff.ashen_juggernaut.up&buff.ashen_juggernaut.remains<3\nactions.slayer+=/execute,if=debuff.marked_for_execution.stack=3\nactions.slayer+=/bloodbath,if=buff.bloodcraze.stack>=1||(talent.uproar&dot.bloodbath_dot.remains<40&talent.bloodborne)||buff.enrage.up&buff.enrage.remains<gcd\nactions.slayer+=/raging_blow,if=buff.brutal_finish.up&buff.slaughtering_strikes.stack<5&(!debuff.champions_might.up||debuff.champions_might.up&debuff.champions_might.remains>gcd)\nactions.slayer+=/rampage,if=action.raging_blow.charges<=1&rage>=100&talent.anger_management&buff.recklessness.down\nactions.slayer+=/bloodthirst,if=target.health.pct<35&talent.vicious_contempt&buff.brutal_finish.up&buff.enrage.up&buff.bloodcraze.stack>=2||active_enemies>=5\nactions.slayer+=/rampage,if=rage>=130\nactions.slayer+=/rampage,if=rage>=115&talent.reckless_abandon&buff.recklessness.up&buff.slaughtering_strikes.stack>=3\nactions.slayer+=/bloodbath,if=(buff.bloodcraze.stack>=4||crit_pct_current>=85)\nactions.slayer+=/crushing_blow\nactions.slayer+=/bloodbath,if=target.health.pct<35&talent.vicious_contempt\nactions.slayer+=/bloodbath\nactions.slayer+=/raging_blow,if=buff.opportunist.up\nactions.slayer+=/bloodthirst,if=target.health.pct<35&talent.vicious_contempt&buff.bloodcraze.stack>=2\nactions.slayer+=/rampage,if=rage>=100&talent.anger_management&buff.recklessness.up\nactions.slayer+=/bloodthirst,if=buff.bloodcraze.stack>=4||crit_pct_current>=85\nactions.slayer+=/raging_blow\nactions.slayer+=/bloodthirst\nactions.slayer+=/execute,if=target.health.pct<35&talent.massacre||target.health.pct<20\nactions.slayer+=/rampage,if=talent.unbridled_ferocity\nactions.slayer+=/rampage\nactions.slayer+=/execute\nactions.slayer+=/onslaught,if=talent.tenderize\nactions.slayer+=/whirlwind,if=talent.improved_whirlwind\nactions.slayer+=/storm_bolt,if=buff.bladestorm.up\n\nactions.thane+=/recklessness\nactions.thane+=/avatar\nactions.thane+=/ravager\nactions.thane+=/thunder_blast,if=buff.enrage.up&talent.meat_cleaver\nactions.thane+=/thunder_clap,if=buff.meat_cleaver.down&talent.meat_cleaver&active_enemies>=2\nactions.thane+=/thunderous_roar,if=buff.enrage.up\nactions.thane+=/champions_spear,if=buff.enrage.up\nactions.thane+=/odyns_fury,if=(buff.enrage.up||talent.titanic_rage)&cooldown.avatar.remains\nactions.thane+=/rampage,if=buff.enrage.down\nactions.thane+=/execute,if=talent.ashen_juggernaut&buff.ashen_juggernaut.remains<=gcd&buff.enrage.up\nactions.thane+=/rampage,if=talent.bladestorm&cooldown.bladestorm.remains<=gcd&!debuff.champions_might.up\nactions.thane+=/bladestorm,if=buff.enrage.up&talent.unhinged\nactions.thane+=/bloodbath,if=buff.bloodcraze.stack>=2\nactions.thane+=/rampage,if=rage>=115&talent.reckless_abandon&buff.recklessness.up&buff.slaughtering_strikes.stack>=3\nactions.thane+=/crushing_blow\nactions.thane+=/bloodbath\nactions.thane+=/onslaught,if=talent.tenderize\nactions.thane+=/rampage\nactions.thane+=/bloodthirst,if=talent.vicious_contempt&target.health.pct<35&buff.bloodcraze.stack>=2||!dot.ravager.remains&buff.bloodcraze.stack>=3||active_enemies>=6\nactions.thane+=/raging_blow\nactions.thane+=/execute,if=talent.ashen_juggernaut\nactions.thane+=/thunder_blast\nactions.thane+=/bloodthirst\nactions.thane+=/execute\nactions.thane+=/thunder_clap",
|
|
["version"] = 20250308,
|
|
["warnings"] = "The import for 'thane' required some automated changes.\nLine 4: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\nLine 5: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\nLine 8: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 10: Converted 'talent.ashen_juggernaut' to 'talent.ashen_juggernaut.enabled' (1x).\nLine 11: Converted 'talent.bladestorm' to 'talent.bladestorm.enabled' (1x).\nLine 12: Converted 'talent.unhinged' to 'talent.unhinged.enabled' (1x).\nLine 14: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 17: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 19: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 21: Converted 'talent.ashen_juggernaut' to 'talent.ashen_juggernaut.enabled' (1x).\n\nThe import for 'slayer' required some automated changes.\nLine 5: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 5: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 6: Converted 'talent.titanic_rage' to 'talent.titanic_rage.enabled' (1x).\nLine 7: Converted 'talent.meat_cleaver' to 'talent.meat_cleaver.enabled' (1x).\nLine 12: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 18: Converted 'talent.uproar' to 'talent.uproar.enabled' (1x).\nLine 18: Converted 'talent.bloodborne' to 'talent.bloodborne.enabled' (1x).\nLine 20: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 21: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 23: Converted 'talent.reckless_abandon' to 'talent.reckless_abandon.enabled' (1x).\nLine 26: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 29: Converted 'talent.vicious_contempt' to 'talent.vicious_contempt.enabled' (1x).\nLine 30: Converted 'talent.anger_management' to 'talent.anger_management.enabled' (1x).\nLine 34: Converted 'talent.massacre' to 'talent.massacre.enabled' (1x).\nLine 35: Converted 'talent.unbridled_ferocity' to 'talent.unbridled_ferocity.enabled' (1x).\nLine 38: Converted 'talent.tenderize' to 'talent.tenderize.enabled' (1x).\nLine 39: Converted 'talent.improved_whirlwind' to 'talent.improved_whirlwind.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 6: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 6: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 6: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 7: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 7: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 7: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 7: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 8: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 8: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 8: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 8: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 9: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 9: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 9: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 9: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 10: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 10: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 11: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 11: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 18: Converted 'talent.lightning_strikes' to 'talent.lightning_strikes.enabled' (1x).\nLine 19: Converted 'talent.lightning_strikes' to 'talent.lightning_strikes.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 7: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 8: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 9: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 9: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 9: Converted operations in 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%%cooldown.avatar.duration=0||trinket.t1.cooldown.duration%%cooldown.odyns_fury.duration=0)' to 'trinket.t1.has_use_buff&(trinket.t1.cooldown.duration%cooldown.avatar.duration=0||trinket.t1.cooldown.duration%cooldown.odyns_fury.duration=0)'.\nLine 10: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 10: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 10: Converted operations in 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%%cooldown.avatar.duration=0||trinket.t2.cooldown.duration%%cooldown.odyns_fury.duration=0)' to 'trinket.t2.has_use_buff&(trinket.t2.cooldown.duration%cooldown.avatar.duration=0||trinket.t2.cooldown.duration%cooldown.odyns_fury.duration=0)'.\nLine 11: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 11: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 12: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 12: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 13: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 13: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 13: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 13: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 13: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 13: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 13: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 13: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 13: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 13: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 14: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 15: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\n\nImported 4 action lists.\n",
|
|
["spec"] = 72,
|
|
["lists"] = {
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "battle_shout",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["toggle"] = "on",
|
|
["action"] = "berserker_stance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["var_name"] = "treacherous_transmitter_precombat_cast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! equipped.fyralath_the_dreamrender",
|
|
["action"] = "recklessness",
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_1_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.treacherous_transmitter",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Evaluates a trinkets cooldown, divided by avatar or odyns fur. If it's value has no remainder return 1, else return 0.5.",
|
|
["criteria"] = "trinket.t1.has_use_buff & ( trinket.t1.cooldown.duration % cooldown.avatar.duration = 0 || trinket.t1.cooldown.duration % cooldown.odyns_fury.duration = 0 )",
|
|
["var_name"] = "trinket_1_sync",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["criteria"] = "trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration % cooldown.avatar.duration = 0 || trinket.t2.cooldown.duration % cooldown.odyns_fury.duration = 0 )",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_stat.any_dps & ! variable.trinket_1_exclude )",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_stat.any_dps & ! variable.trinket_2_exclude )",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / trinket.t2.buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_1_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.algethar_puzzle_box",
|
|
["var_name"] = "trinket_2_manual",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( talent.massacre.enabled & target.health.pct < 35 ) || target.health.pct < 20",
|
|
["var_name"] = "execute_phase",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.recklessness.down & buff.avatar.down & rage < 80 & buff.sudden_death.down & ! cooldown.bladestorm.ready & ( ! cooldown.execute.ready || ! variable.execute_phase )",
|
|
["var_name"] = "on_gcd_racials",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.debuff.casting.react",
|
|
["action"] = "pummel",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time <= 0.5 || movement.distance > 5",
|
|
["action"] = "charge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "movement.distance > 25",
|
|
["action"] = "heroic_leap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & ( fight_remains > 300 || boss & fight_remains < 35 & buff.recklessness.up || boss & fight_remains < 25 )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! buff.avatar.up & trinket.t1.cast_time > 0 || ! trinket.t1.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || trinket.t1.buff_duration >= fight_remains",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! buff.avatar.up & trinket.t2.cast_time > 0 || ! trinket.t2.cast_time > 0 ) & buff.avatar.up & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || trinket.t2.buff_duration >= fight_remains",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) & ! variable.trinket_1_manual & ( ! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs ) || ( trinket.t1.cast_time > 0 & ! buff.avatar.up || ! trinket.t1.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.trinket_2_buffs & ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) & ! variable.trinket_2_manual & ( ! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs ) || ( trinket.t2.cast_time > 0 & ! buff.avatar.up || ! trinket.t2.cast_time > 0 ) || cooldown.avatar.remains_expected > 20 )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["criteria"] = "! equipped.fyralath_the_dreamrender & ! equipped.bestinslots & ( ! variable.trinket_1_buffs || trinket.t1.cooldown.remains ) & ( ! variable.trinket_2_buffs || trinket.t2.cooldown.remains )",
|
|
["slot"] = "main_hand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "bestinslots",
|
|
["action"] = "bestinslots",
|
|
["criteria"] = "target.time_to_die > 120 & ( cooldown.avatar.remains > 20 & ( trinket.t1.cooldown.remains || trinket.t2.cooldown.remains ) || cooldown.avatar.remains > 20 & ( ! trinket.t1.has_cooldown || ! trinket.t2.has_cooldown ) ) || target.time_to_die <= 120 & target.health.pct < 35 & cooldown.avatar.remains > 85 || boss & target.time_to_die < 15",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.recklessness.down & buff.avatar.down & rage < 80 & buff.sudden_death.down & ! cooldown.bladestorm.ready & ( ! cooldown.execute.ready || ! variable.execute_phase )",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.recklessness.down & buff.avatar.down & rage < 80 & buff.sudden_death.down & ! cooldown.bladestorm.ready & ( ! cooldown.execute.ready || ! variable.execute_phase )",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.recklessness.up",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["action"] = "blood_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.lightning_strikes.enabled",
|
|
["list_name"] = "slayer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.lightning_strikes.enabled",
|
|
["list_name"] = "thane",
|
|
},
|
|
},
|
|
["slayer"] = {
|
|
{
|
|
["action"] = "recklessness",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.recklessness.remains",
|
|
["action"] = "avatar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ashen_juggernaut.up & buff.ashen_juggernaut.remains <= gcd.max",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & ( cooldown.bladestorm.remains >= 2 || cooldown.bladestorm.remains >= 16 & debuff.marked_for_execution.stack = 3 )",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & ( talent.reckless_abandon.enabled & cooldown.avatar.remains >= 24 || talent.anger_management.enabled & cooldown.recklessness.remains >= 24 )",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.enrage.up || talent.titanic_rage.enabled ) & cooldown.avatar.remains",
|
|
["action"] = "odyns_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 2 & talent.meat_cleaver.enabled & buff.meat_cleaver.down",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_death.stack = 2 & buff.sudden_death.remains < 7",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_death.up & buff.sudden_death.remains < 2",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_death.up & buff.imminent_demise.stack < 3 & cooldown.bladestorm.remains < 25",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.marked_for_execution.up & buff.brutal_finish.up & debuff.overwhelmed.stack < 10",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled & buff.brutal_finish.up",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.enrage.up || buff.slaughtering_strikes.stack >= 4",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "action.raging_blow.charges = 2 || buff.brutal_finish.up & ( ! debuff.champions_might.up || debuff.champions_might.up & debuff.champions_might.remains > gcd.max )",
|
|
["action"] = "crushing_blow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & ! buff.brutal_finish.up",
|
|
["action"] = "thunderous_roar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ashen_juggernaut.up & buff.ashen_juggernaut.remains < 3",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.marked_for_execution.stack = 3",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bloodcraze.stack >= 1 || ( talent.uproar.enabled & dot.bloodbath_dot.remains < 40 & talent.bloodborne.enabled ) || buff.enrage.up & buff.enrage.remains < gcd.max",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.brutal_finish.up & buff.slaughtering_strikes.stack < 5 & ( ! debuff.champions_might.up || debuff.champions_might.up & debuff.champions_might.remains > gcd.max )",
|
|
["action"] = "raging_blow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "action.raging_blow.charges <= 1 & rage >= 100 & talent.anger_management.enabled & buff.recklessness.down",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 35 & talent.vicious_contempt.enabled & buff.brutal_finish.up & buff.enrage.up & buff.bloodcraze.stack >= 2 || active_enemies >= 5",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 130",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 115 & talent.reckless_abandon.enabled & buff.recklessness.up & buff.slaughtering_strikes.stack >= 3",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.bloodcraze.stack >= 4 || crit_pct_current >= 85 )",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["action"] = "crushing_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 35 & talent.vicious_contempt.enabled",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["action"] = "bloodbath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.opportunist.up",
|
|
["action"] = "raging_blow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 35 & talent.vicious_contempt.enabled & buff.bloodcraze.stack >= 2",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 100 & talent.anger_management.enabled & buff.recklessness.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bloodcraze.stack >= 4 || crit_pct_current >= 85",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["action"] = "raging_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodthirst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 35 & talent.massacre.enabled || target.health.pct < 20",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unbridled_ferocity.enabled",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["action"] = "rampage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.improved_whirlwind.enabled",
|
|
["action"] = "whirlwind",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bladestorm.up",
|
|
["action"] = "storm_bolt",
|
|
},
|
|
},
|
|
["thane"] = {
|
|
{
|
|
["action"] = "recklessness",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avatar",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ravager",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & talent.meat_cleaver.enabled",
|
|
["action"] = "thunder_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.meat_cleaver.down & talent.meat_cleaver.enabled & active_enemies >= 2",
|
|
["action"] = "thunder_clap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "thunderous_roar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up",
|
|
["action"] = "champions_spear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.enrage.up || talent.titanic_rage.enabled ) & cooldown.avatar.remains",
|
|
["action"] = "odyns_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.down",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ashen_juggernaut.enabled & buff.ashen_juggernaut.remains <= gcd.max & buff.enrage.up",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.bladestorm.enabled & cooldown.bladestorm.remains <= gcd.max & ! debuff.champions_might.up",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.enrage.up & talent.unhinged.enabled",
|
|
["action"] = "bladestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bloodcraze.stack >= 2",
|
|
["action"] = "bloodbath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage >= 115 & talent.reckless_abandon.enabled & buff.recklessness.up & buff.slaughtering_strikes.stack >= 3",
|
|
["action"] = "rampage",
|
|
},
|
|
{
|
|
["action"] = "crushing_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodbath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.tenderize.enabled",
|
|
["action"] = "onslaught",
|
|
},
|
|
{
|
|
["action"] = "rampage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.vicious_contempt.enabled & target.health.pct < 35 & buff.bloodcraze.stack >= 2 || ! dot.ravager.remains & buff.bloodcraze.stack >= 3 || active_enemies >= 6",
|
|
["action"] = "bloodthirst",
|
|
},
|
|
{
|
|
["action"] = "raging_blow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ashen_juggernaut.enabled",
|
|
["action"] = "execute",
|
|
},
|
|
{
|
|
["action"] = "thunder_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodthirst",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "execute",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "thunder_clap",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["Restoration Druid"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20250425,
|
|
["spec"] = 105,
|
|
["desc"] = "2025-04-25: Fix target_if; tweak healing",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/druid_restoration.simc\n## Up to date with SimC: March 8 2025 - ccb7c79\n\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\nactions.precombat+=/mark_of_the_wild\nactions.precombat+=/symbiotic_relationship,if=down&active_allies>1\nactions.precombat+=/prowl,if=talent.rake.enabled\nactions.precombat+=/cat_form,if=talent.rake.enabled1\n\nactions+=/skull_bash\nactions+=/berserking\nactions+=/natures_vigil,if=!buff.prowl.up&!buff.shadowmeld.up\nactions+=/call_action_list,name=healing,strict=1,if=settings.healing_mode&buff.prowl.down\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)||boss&fight_remains<46\nactions.cat+=/cat_form,if=talent.convoke_the_spirits.enabled&(active_enemies<=6)&(!buff.cat_form.up&cooldown.convoke_the_spirits.remains<=gcd.max&(buff.heart_of_the_wild.up||cooldown.heart_of_the_wild.remains>60-30*talent.cenarius_guidance.enabled||!talent.heart_of_the_wild.enabled))\nactions.cat+=/convoke_the_spirits,if=(buff.cat_form.up)&(buff.heart_of_the_wild.up||cooldown.heart_of_the_wild.remains>60-30*talent.cenarius_guidance.enabled||!talent.heart_of_the_wild.enabled)\nactions.cat+=/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>5&spell_targets.thrash_cat>4\nactions.cat+=/sunfire,cycle_targets=1,if=(refreshable&target.time_to_die>5)&!prev_gcd.1.cat_form\nactions.cat+=/rake,cycle_targets=1,if=refreshable&(time_to_die>8&!ticking)||(active_dot.rake<1&talent.primal_fury.enabled&talent.master_shapeshifter.enabled&spell_targets.swipe_cat>4)\n# [Hekili] Modified as cooldown.healing and druid.time_spend_healing are not supported.\nactions.cat+=/cat_form,if=!buff.cat_form.up&energy>60&!talent.fluid_form.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<4\nactions.cat+=/sunfire,if=prev_gcd.1.moonfire&remains<duration*0.8\nactions.cat+=/starfire,if=(talent.master_shapeshifter.enabled&(spell_targets.starfire>4||(buff.heart_of_the_wild.up&spell_targets.starfire>5))||(buff.heart_of_the_wild.up&spell_targets.starfire>7))\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&!talent.fluid_form.enabled\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&dot.rip.remains>10)&spell_targets.swipe_cat<4\nactions.cat+=/thrash_cat,cycle_targets=1,if=refreshable&target.time_to_die>5&spell_targets.thrash_cat>2\nactions.cat+=/rake,cycle_targets=1,if=refreshable&time_to_die>10&(!talent.primal_fury.enabled||!talent.master_shapeshifter.enabled||!spell_targets.swipe_cat>4)\nactions.cat+=/swipe_cat,if=active_enemies>2&combo_points<5\nactions.cat+=/thrash_cat,if=refreshable&fight_remains>5\nactions.cat+=/pool_resource,for_next=1\nactions.cat+=/shred,if=energy>60&combo_points<5\nactions.cat+=/ferocious_bite,if=energy>50&combo_points.deficit=0\nactions.cat+=/cat_form,if=!buff.cat_form.up\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",
|
|
["version"] = 20250425,
|
|
["warnings"] = "Imported 4 action lists.\n",
|
|
["author"] = "Makahiki",
|
|
["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 ) || boss & fight_remains < 46",
|
|
["action"] = "heart_of_the_wild",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.convoke_the_spirits.enabled & ( active_enemies <= 6 ) & ( ! buff.cat_form.up & cooldown.convoke_the_spirits.remains <= gcd.max & ( buff.heart_of_the_wild.up || cooldown.heart_of_the_wild.remains > 60 - 30 * talent.cenarius_guidance.enabled || ! talent.heart_of_the_wild.enabled ) )",
|
|
["action"] = "cat_form",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.cat_form.up ) & ( 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,
|
|
["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 )",
|
|
["action"] = "rip",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & target.time_to_die > 5 & spell_targets.thrash_cat > 4",
|
|
["action"] = "thrash_cat",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( refreshable & target.time_to_die > 5 ) & ! prev_gcd.1.cat_form",
|
|
["action"] = "sunfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ( time_to_die > 8 & ! ticking ) || ( active_dot.rake < 1 & talent.primal_fury.enabled & talent.master_shapeshifter.enabled & spell_targets.swipe_cat > 4 )",
|
|
["action"] = "rake",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cat_form",
|
|
["description"] = "[Hekili] Modified as cooldown.healing and druid.time_spend_healing are not supported.",
|
|
["criteria"] = "! buff.cat_form.up & energy > 60 & ! talent.fluid_form.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 < 4",
|
|
["action"] = "moonfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.moonfire & remains < duration * 0.8",
|
|
["action"] = "sunfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.master_shapeshifter.enabled & ( spell_targets.starfire > 4 || ( buff.heart_of_the_wild.up & spell_targets.starfire > 5 ) ) || ( buff.heart_of_the_wild.up & spell_targets.starfire > 7 ) )",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 || ( active_enemies < 8 & ! buff.cat_form.up )",
|
|
["action"] = "starsurge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.cat_form.up & energy > 50 & ! talent.fluid_form.enabled",
|
|
["action"] = "cat_form",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( combo_points > 3 & target.time_to_die < 3 ) || ( combo_points = 5 & energy >= 50 & dot.rip.remains > 10 ) & spell_targets.swipe_cat < 4",
|
|
["action"] = "ferocious_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & target.time_to_die > 5 & spell_targets.thrash_cat > 2",
|
|
["action"] = "thrash_cat",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & time_to_die > 10 & ( ! talent.primal_fury.enabled || ! talent.master_shapeshifter.enabled || ! spell_targets.swipe_cat > 4 )",
|
|
["action"] = "rake",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 & combo_points < 5",
|
|
["action"] = "swipe_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & fight_remains > 5",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy > 60 & combo_points < 5",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy > 50 & combo_points.deficit = 0",
|
|
["action"] = "ferocious_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.cat_form.up",
|
|
["action"] = "cat_form",
|
|
},
|
|
},
|
|
["healing"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rejuvenation",
|
|
["description"] = "On the tank",
|
|
["criteria"] = "active_dot.rejuvenation < 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lifebloom",
|
|
["description"] = "On an ally",
|
|
["criteria"] = "( active_dot.lifebloom < 1 ) || ( active_dot.lifebloom < 2 & buff.lifebloom.up & talent.undergrowth.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lifebloom",
|
|
["description"] = "On yourself",
|
|
["criteria"] = "( active_dot.lifebloom < 2 & buff.lifebloom.down & talent.undergrowth.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "efflorescence",
|
|
["description"] = "Maintain Efflo",
|
|
["criteria"] = "buff.efflorescence.down",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "swiftmend",
|
|
["description"] = "transform into tree",
|
|
["criteria"] = "( active_dot.regrowth + active_dot.wild_growth + active_dot.rejuvenation ) > 1 & talent.reforestation.enabled & buff.reforestation.stack = 3",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wild_growth",
|
|
["description"] = "Always wild growth after swiftmend",
|
|
["criteria"] = "prev.1.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,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "settings.healing_mode & buff.prowl.down",
|
|
["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,
|
|
["criteria"] = "refreshable & target.time_to_die > 5 & talent.improved_sunfire.enabled",
|
|
["action"] = "sunfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & time_to_die > 12",
|
|
["action"] = "moonfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 8",
|
|
["action"] = "starsurge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & target.time_to_die > 7 & active_enemies < 7",
|
|
["action"] = "sunfire",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "down & active_allies > 1",
|
|
["action"] = "symbiotic_relationship",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.rake.enabled",
|
|
["action"] = "prowl",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.rake.enabled1",
|
|
["action"] = "cat_form",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["Devastation"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/engine/class_modules/apl/apl_evoker.cpp",
|
|
["builtIn"] = true,
|
|
["date"] = 20250415.1,
|
|
["spec"] = 1467,
|
|
["desc"] = "2025-04-13: Make Engulf friendly in ST\n\n2025-03-30: SimC Update\n\n2025-03-25: SimC Update\n\n2025-03-10: SimC update (trinket)\n\n2025-03-03: Simc update\n\n2025-02-28: TWW Season 2 update\n\n2024-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",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "active_enemies <= 1 + talent.eternitys_span.enabled || ( variable.can_extend_dr & talent.animosity.enabled || talent.mass_disintegrate.enabled ) & active_enemies > ( 3 + talent.font_of_magic.enabled + 4 * talent.eternitys_span.enabled ) || buff.dragonrage.remains < 1.75 * spell_haste & buff.dragonrage.remains >= 1 * spell_haste & talent.animosity.enabled & variable.can_extend_dr",
|
|
["description"] = "Eternity Surge, use rank most applicable to targets.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "eternity_surge",
|
|
["empower_to"] = "2",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "active_enemies <= 2 + 2 * talent.eternitys_span.enabled || buff.dragonrage.remains < 2.5 * spell_haste & buff.dragonrage.remains >= 1.75 * spell_haste",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "eternity_surge",
|
|
["empower_to"] = "3",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "active_enemies <= 3 + 3 * talent.eternitys_span.enabled || ! talent.font_of_magic.enabled & talent.mass_disintegrate.enabled || buff.dragonrage.remains <= 3.25 * spell_haste & buff.dragonrage.remains >= 2.5 * spell_haste",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "eternity_surge",
|
|
["empower_to"] = "4",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "talent.mass_disintegrate.enabled || active_enemies <= 4 + 4 * talent.eternitys_span.enabled",
|
|
},
|
|
},
|
|
["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 || trinket.t1.is.signet_of_the_priory",
|
|
["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 || trinket.t2.is.signet_of_the_priory",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "equipped.bestinslots",
|
|
["var_name"] = "weapon_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "weapon_sync",
|
|
["criteria"] = "equipped.bestinslots",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "equipped.bestinslots * 5142 * 15",
|
|
["description"] = "Mythic one hardcoded - To Do implement something in simc to just get the value.",
|
|
["var_name"] = "weapon_stat_value",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Decide which trinket to pair with Dragonrage, prefer 2 minute and 1 minute trinkets",
|
|
["criteria"] = "variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % cooldown.dragonrage.duration = 0 || cooldown.dragonrage.duration % trinket.t1.cooldown.duration = 0 || trinket.t1.is.house_of_cards )",
|
|
["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"] = "variable.trinket_2_buffs & ( trinket.t2.cooldown.duration % cooldown.dragonrage.duration = 0 || cooldown.dragonrage.duration % trinket.t2.cooldown.duration = 0 || trinket.t2.is.house_of_cards )",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.belorrelos_the_suncaller || trinket.t1.is.nymues_unraveling_spindle || trinket.t1.is.spymasters_web",
|
|
["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.",
|
|
["var_name"] = "trinket_1_manual",
|
|
},
|
|
{
|
|
["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",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.buff_duration ) * ( variable.trinket_2_sync ) * trinket.t2.has_use_buff ) > ( ( trinket.t1.buff_duration ) * ( variable.trinket_1_sync ) * trinket.t1.has_use_buff )",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_2_buffs || variable.weapon_stat_value * variable.weapon_sync > ( ( ( trinket.t2.buff_duration ) * ( variable.trinket_2_sync ) * trinket.t2.has_use_buff ) <? ( ( trinket.t1.buff_duration ) * ( variable.trinket_1_sync ) * trinket.t1.has_use_buff ) )",
|
|
["value_else"] = "variable.trinket_priority",
|
|
["value"] = "3",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.signet_of_the_priory + 2 * trinket.t2.is.signet_of_the_priory",
|
|
["criteria"] = "equipped.signet_of_the_priory & variable.trinket_priority = 3",
|
|
["var_name"] = "trinket_priority",
|
|
},
|
|
{
|
|
["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"] = "1.0 * spell_haste",
|
|
["description"] = "Rank 1 empower spell cast time",
|
|
["var_name"] = "r1_cast_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "dr_prep_time",
|
|
["default"] = "6",
|
|
["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.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "dr_prep_time_aoe",
|
|
["default"] = "4",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_extend_dr",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_use_empower",
|
|
["default"] = "1",
|
|
["criteria"] = "! talent.animosity.enabled || ! talent.dragonrage.enabled || buff.empowering.up",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Get Some Scarlet Adaptation Prepull",
|
|
["criteria"] = "talent.scarlet_adaptation.enabled",
|
|
["action"] = "verdant_embrace",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.slipstream.enabled & buff.hover.down & cooldown.deep_breath.up",
|
|
["action"] = "hover",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.dragonrage.remains <? ( ( cooldown.eternity_surge.remains - 8 ) >? ( cooldown.fire_breath.remains - 8 ) )",
|
|
["description"] = "Variable that evaluates when next dragonrage is by working out the maximum between the dragonrage cd and your empowers, ignoring CDR effect estimates.",
|
|
["var_name"] = "next_dragonrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "pool_for_id",
|
|
["criteria"] = "talent.imminent_destruction.enabled",
|
|
["default"] = "0",
|
|
["value"] = "cooldown.deep_breath.remains < 7 & essence.deficit >= 1 & ! buff.essence_burst.up & ( raid_event.adds.in >= action.deep_breath.cooldown * 0.4 || talent.melt_armor.enabled & talent.maneuverability.enabled || active_enemies >= 3 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_extend_dr",
|
|
["criteria"] = "talent.animosity.enabled",
|
|
["description"] = "[Edited by Syrif] - animosity_extension returns the number of extensions performed for this dragonrage, use it instead of the complex APL conditions",
|
|
["value"] = "buff.dragonrage.up & ( animosity_extension < 4 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.dragonrage.remains >= gcd.max * variable.dr_prep_time",
|
|
["criteria"] = "! buff.empowering.up & talent.animosity.enabled & talent.dragonrage.enabled",
|
|
["var_name"] = "can_use_empower",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Rupt to make the raidleader happy",
|
|
["action"] = "quell",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["action"] = "unravel",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = false,
|
|
["action"] = "expunge",
|
|
["criteria"] = "debuff.dispellable_poison.up",
|
|
},
|
|
{
|
|
["enabled"] = false,
|
|
["description"] = "[Hekili] No API available for detecting bleeds",
|
|
["action"] = "cauterizing_flame",
|
|
["criteria"] = "debuff.dispellable_poison.up || debuff.dispellable_curse.up || debuff.dispellable_disease.up",
|
|
},
|
|
{
|
|
["enabled"] = false,
|
|
["description"] = "[Hekili] Recommended to link to toggle.interrupts with Show Separately enabled",
|
|
["action"] = "hover",
|
|
["criteria"] = "moving & buff.hover.down",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Delay pot in ST if you are about to SS - mostly relevant for opener where you want DR->FB->SS->rotation",
|
|
["criteria"] = "( ! talent.dragonrage.enabled || buff.dragonrage.up ) & ( ! cooldown.shattering_star.up || debuff.shattering_star_debuff.up || active_enemies >= 2 ) || boss & fight_remains < 35",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 2",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies < 3",
|
|
["list_name"] = "st",
|
|
},
|
|
},
|
|
["green"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Green Spells used to trigger Ancient Flame",
|
|
["action"] = "emerald_blossom",
|
|
},
|
|
{
|
|
["action"] = "verdant_embrace",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shattering_star",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "( cooldown.dragonrage.up & talent.arcane_vigor.enabled || talent.eternitys_span.enabled & active_enemies <= 3 ) & ! talent.engulf.enabled",
|
|
["description"] = "AOE action list, Open with star before DR to save a global and start with a free EB BaumChange 2: Don't do as FS - Neutral",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Spend firestorm procs ASAP",
|
|
["criteria"] = "buff.snapfire.up & ! talent.feed_the_flames.enabled",
|
|
["action"] = "firestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "dot.fire_breath_damage.remains > ( action.engulf.travel_time + 2 * action.engulf.in_flight ) & ( variable.next_dragonrage >= action_cooldown * 1.2 || ! talent.dragonrage.enabled )",
|
|
["var_name"] = "engulf_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "BaumChange 1: Send DB before DR if FS FS FTF - +30k in 5T",
|
|
["criteria"] = "talent.maneuverability.enabled & talent.melt_armor.enabled & ! cooldown.fire_breath.up & ! cooldown.eternity_surge.up || talent.feed_the_flames.enabled & talent.engulf.enabled & talent.imminent_destruction.enabled & ( cooldown.engulf.remains > 4 || ! variable.engulf_condition )",
|
|
["action"] = "deep_breath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Acquire the buff BaumChange #3: Keep it from hardcasting firestorm while the SS debuff is running. I know the condition is garbage but it works - +20k in 5T",
|
|
["criteria"] = "talent.feed_the_flames.enabled & ( ! talent.engulf.enabled || cooldown.engulf.remains > 4 || cooldown.engulf.charges = 0 || ( variable.next_dragonrage <= action_cooldown * 1.2 || ! talent.dragonrage.enabled ) )",
|
|
["action"] = "firestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Grab Irid Red before Dragonrage without griefing extension",
|
|
["strict_if"] = "talent.dragonrage.enabled & ( talent.iridescence.enabled || talent.scorching_embers.enabled ) & ! talent.engulf.enabled",
|
|
["criteria"] = "talent.dragonrage.enabled & cooldown.dragonrage.up & ( talent.iridescence.enabled || talent.scorching_embers.enabled ) & ! talent.engulf.enabled",
|
|
["list_name"] = "fb",
|
|
},
|
|
{
|
|
["action"] = "dragonrage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Tip ES at appropiate target count or when playing Flameshaper otherwise Tip FB",
|
|
["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 ) & ! talent.engulf.enabled )",
|
|
["action"] = "tip_the_scales",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "BaumChange 2: Do as FS - Neutral",
|
|
["criteria"] = "( cooldown.dragonrage.up & talent.arcane_vigor.enabled || talent.eternitys_span.enabled & active_enemies <= 3 ) & talent.engulf.enabled",
|
|
["action"] = "shattering_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.time_to_die >= 32 || active_enemies >= 3 & target.time_to_die >= 15 || boss & fight_remains < 30",
|
|
["action"] = "dragonrage",
|
|
},
|
|
{
|
|
["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",
|
|
["strict"] = 1,
|
|
["criteria"] = "( ! talent.dragonrage.enabled || buff.dragonrage.up || cooldown.dragonrage.remains > variable.dr_prep_time_aoe || ! talent.animosity.enabled || talent.flame_siphon.enabled ) & ( target.time_to_die >= 8 || talent.mass_disintegrate.enabled )",
|
|
["list_name"] = "fb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "( ! talent.dragonrage.enabled || buff.dragonrage.up || cooldown.dragonrage.remains > variable.dr_prep_time_aoe || ! talent.animosity.enabled ) & ( ! buff.jackpot.up || ! set_bonus.tww2_4pc || talent.mass_disintegrate.enabled )",
|
|
["strict_if"] = "( ! talent.dragonrage.enabled || buff.dragonrage.up || cooldown.dragonrage.remains > variable.dr_prep_time_aoe || ! talent.animosity.enabled )",
|
|
["list_name"] = "es",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.dragonrage.up & essence.deficit > 3",
|
|
["action"] = "deep_breath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shattering_star",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "( buff.essence_burst.stack < buff.essence_burst.max_stack & talent.arcane_vigor.enabled || talent.eternitys_span.enabled & active_enemies <= 3 || set_bonus.tww2_4pc & buff.jackpot.stack < 2 ) & ( ! talent.engulf.enabled || cooldown.engulf.remains < 4 || cooldown.engulf.charges > 0 )",
|
|
["description"] = "Send SS when it doesn't overflow EB, without vigor send on CD BaumChange 3: Save SS for Engulf - +20k in 5T",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "engulf",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "variable.engulf_condition",
|
|
["description"] = "[Hekili] Re-revised Fire Breath debuff remaining so that you get back-to-back Engulfs easier.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.charged_blast.stack >= 12 & ( cooldown.dragonrage.remains > gcd.max * 4 || ! talent.dragonrage.enabled )",
|
|
["action"] = "pyre",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "disintegrate",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "buff.mass_disintegrate_stacks.up & talent.mass_disintegrate.enabled & ( ! variable.pool_for_id || buff.mass_disintegrate_stacks.remains <= buff.mass_disintegrate_stacks.stack * ( duration + 0.1 ) )",
|
|
["description"] = "Use Mass Disintegrate if CB wont't overcap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Deep Breath on 2T, unless adds will come before it'll be ready again or if talented ID.",
|
|
["criteria"] = "talent.imminent_destruction.enabled & ! buff.essence_burst.up",
|
|
["action"] = "deep_breath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Pyre 4T+ - 3T+ with Volatility - 12 stacks of CB - Pool CB for DR",
|
|
["criteria"] = "( active_enemies >= 4 - ( buff.imminent_destruction.up ) || talent.volatility.enabled || talent.scorching_embers.enabled & active_dot.fire_breath_damage >= active_enemies * 0.75 ) & ( cooldown.dragonrage.remains > gcd.max * 4 || ! talent.dragonrage.enabled || ! talent.charged_blast.enabled ) & ! variable.pool_for_id & ( ! buff.mass_disintegrate_stacks.up || buff.essence_burst.stack = 2 || buff.essence_burst.stack = 1 & essence >= ( 3 - buff.imminent_destruction.up ) || essence >= ( 5 - buff.imminent_destruction.up * 2 ) )",
|
|
["action"] = "pyre",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "living_flame",
|
|
["cycle_targets"] = 1,
|
|
["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 || cooldown.fire_breath.remains <= gcd.max * 3 & buff.essence_burst.stack < buff.essence_burst.max_stack )",
|
|
["description"] = "Cast LF with leaping flames up if: not playing burnout, burnout is up or the next firebreath is soon.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Yoinked the disintegrate logic from ST",
|
|
["action"] = "disintegrate",
|
|
["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 & ( active_enemies <= 4 || buff.mass_disintegrate_stacks.up )",
|
|
["chain"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "living_flame",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "talent.snapfire.enabled & buff.burnout.up",
|
|
["description"] = "Cast LF with burnout to fish for snapfire procs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Get Ancient Flame as Filler",
|
|
["strict_if"] = "talent.ancient_flame.enabled",
|
|
["criteria"] = "talent.ancient_flame.enabled & ! buff.ancient_flame.up & ! buff.dragonrage.up",
|
|
["list_name"] = "green",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.snapfire.enabled & ! talent.engulfing_blaze.enabled",
|
|
["action"] = "living_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "azure_strike",
|
|
["description"] = "Fallback filler",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["name"] = "spymasters_web",
|
|
["action"] = "spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dragonrage.up || ! talent.dragonrage.enabled || cooldown.dragonrage.remains >= 5",
|
|
["name"] = "neural_synapse_enhancer",
|
|
["action"] = "neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["criteria"] = "buff.dragonrage.up & ( ( variable.trinket_2_buffs & ! cooldown.fire_breath.up & ! cooldown.shattering_star.up & trinket.t2.cooldown.remains ) || buff.tip_the_scales.up & ( ! cooldown.shattering_star.up || talent.engulf.enabled ) & variable.trinket_priority = 1 || ( ! 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",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "buff.dragonrage.up & ( ( variable.trinket_1_buffs & ! cooldown.fire_breath.up & ! cooldown.shattering_star.up & trinket.t1.cooldown.remains ) || buff.tip_the_scales.up & ( ! cooldown.shattering_star.up || talent.engulf.enabled ) & variable.trinket_priority = 2 || ( ! 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",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["criteria"] = "variable.weapon_buffs & ( ( variable.trinket_2_buffs & ( trinket.t2.cooldown.remains || trinket.t2.cooldown.duration <= 20 ) || ! variable.trinket_2_buffs || variable.trinket_2_exclude || variable.trinket_priority = 3 ) & ( variable.trinket_1_buffs & ( trinket.t1.cooldown.remains || trinket.t1.cooldown.duration <= 20 ) || ! variable.trinket_1_buffs || variable.trinket_1_exclude || variable.trinket_priority = 3 ) & ( ! cooldown.fire_breath.up & ! cooldown.shattering_star.up || buff.tip_the_scales.up & ( ! cooldown.shattering_star.up || talent.engulf.enabled ) || ( ! cooldown.fire_breath.up & ! cooldown.shattering_star.up ) || active_enemies >= 3 ) ) & ( variable.next_dragonrage > 20 || ! talent.dragonrage.enabled ) & ( ! buff.dragonrage.up || variable.trinket_priority = 3 || variable.trinket_priority = 1 & trinket.t1.cooldown.remains || variable.trinket_priority = 2 & trinket.t2.cooldown.remains )",
|
|
["slot"] = "main_hand",
|
|
},
|
|
{
|
|
["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.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 ) )",
|
|
["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.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,
|
|
["action"] = "trinket1",
|
|
["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 ) )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["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 ) )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Become a Superior Dragon",
|
|
["action"] = "dragonrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.movement.in < 6 & ! buff.hover.up & gcd.remains >= 0.5 || talent.slipstream.enabled & gcd.remains >= 0.5",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "hover",
|
|
["description"] = "Flap wings",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dragonrage.up & cooldown.fire_breath.remains <= cooldown.eternity_surge.remains",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "tip_the_scales",
|
|
["description"] = "Become a faster dragon (for one empower)",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Dont overcap with Vigor. With TWWS2 this is neutral but it will stay for posterity.",
|
|
["criteria"] = "( buff.essence_burst.stack < buff.essence_burst.max_stack || ! talent.arcane_vigor.enabled )",
|
|
["action"] = "shattering_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "4",
|
|
["criteria"] = "( talent.scorching_embers.enabled & talent.engulf.enabled & action.engulf.usable_in <= duration + 0.5 ) & variable.can_use_empower & cooldown.engulf.full_recharge_time <= cooldown.fire_breath.duration_expected + 4",
|
|
["description"] = "If has scorch and the gulf is gulfable do a four empower unless you could get away with a R1.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "1",
|
|
["criteria"] = "talent.engulf.enabled & talent.fulminous_roar.enabled & variable.can_use_empower",
|
|
["description"] = "Sad Engulf Noises (Fulminous Roar Sucks)",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "2",
|
|
["criteria"] = "variable.can_use_empower & ! buff.dragonrage.up",
|
|
["description"] = "R2 funny breath good default for SC.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["criteria"] = "variable.can_use_empower",
|
|
["empower_to"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "[Hekili] Modified to ignore Ruby Embers if applying it is going to waste the Fire Breath dot.",
|
|
["criteria"] = "( dot.fire_breath_damage.remains > travel_time ) & ( dot.living_flame_damage.remains > travel_time || dot.fire_breath_damage.remains < action.living_flame.cast_time + travel_time + 0.5 || ! talent.ruby_embers.enabled ) & ( dot.enkindle.remains > travel_time || ! talent.enkindle.enabled ) & ( ! talent.iridescence.enabled || buff.iridescence_red.up ) & ( ! talent.scorching_embers.enabled || dot.fire_breath_damage.duration <= 6 || boss & fight_remains <= 30 ) & ( debuff.shattering_star_debuff.remains > travel_time || full_recharge_time < action.shattering_star.usable_in || talent.scorching_embers.enabled )",
|
|
["action"] = "engulf",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "eternity_surge",
|
|
["empower_to"] = "2",
|
|
["criteria"] = "( ! talent.power_swell.enabled || buff.power_swell.remains <= duration || ! talent.mass_disintegrate.enabled ) & active_enemies = 2 & ! talent.eternitys_span.enabled & variable.can_use_empower",
|
|
["description"] = "Why would you do this to yourself. Talent span right meow.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "eternity_surge",
|
|
["empower_to"] = "1",
|
|
["criteria"] = "( ! talent.power_swell.enabled || buff.power_swell.remains <= duration || ! talent.mass_disintegrate.enabled ) & variable.can_use_empower",
|
|
["description"] = "Surge all of eternity and swell power (but not if :engulf:)",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Burnout LF for EB if DR expire soon",
|
|
["criteria"] = "buff.dragonrage.up & buff.dragonrage.remains < ( buff.essence_burst.max_stack - buff.essence_burst.stack ) * gcd.max & buff.burnout.up",
|
|
["action"] = "living_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "AS for EB if DR expire soon",
|
|
["criteria"] = "buff.dragonrage.up & buff.dragonrage.remains < ( buff.essence_burst.max_stack - buff.essence_burst.stack ) * gcd.max",
|
|
["action"] = "azure_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Snappy FS big pump",
|
|
["criteria"] = "buff.snapfire.up || active_enemies >= 2",
|
|
["action"] = "firestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use the Deeper Breath",
|
|
["criteria"] = "talent.imminent_destruction.enabled || talent.melt_armor.enabled || talent.maneuverability.enabled",
|
|
["action"] = "deep_breath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "disintegrate",
|
|
["cycle_targets"] = 1,
|
|
["early_chain_if"] = "ticks_remain<=1&buff.mass_disintegrate_stacks.up",
|
|
["criteria"] = "( raid_event.movement.in > 2 || buff.hover.up ) & buff.mass_disintegrate_stacks.up & talent.mass_disintegrate.enabled & ! variable.pool_for_id",
|
|
["description"] = "Mass Disintegrator pov",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Secret tech (dont leak)",
|
|
["criteria"] = "talent.snapfire.enabled & active_enemies >= 2 & talent.volatility.rank >= 2 & ( ! talent.azure_celerity.enabled || talent.feed_the_flames.enabled )",
|
|
["action"] = "pyre",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "disintegrate",
|
|
["cycle_targets"] = 1,
|
|
["chain"] = "1",
|
|
["criteria"] = "( raid_event.movement.in > 2 || buff.hover.up ) & ! variable.pool_for_id",
|
|
["description"] = "Disintegrator pov",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Get Ancient Flame if you have Engulfing Blaze and nothing interesting is happening",
|
|
["strict_if"] = "talent.ancient_flame.enabled & talent.scarlet_adaptation.enabled & talent.engulfing_blaze.enabled",
|
|
["criteria"] = "talent.ancient_flame.enabled & ! buff.ancient_flame.up & ! buff.shattering_star_debuff.up & talent.scarlet_adaptation.enabled & ! buff.dragonrage.up & ! buff.burnout.up & talent.engulfing_blaze.enabled",
|
|
["list_name"] = "green",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "LF Gooder",
|
|
["criteria"] = "buff.burnout.up || buff.leaping_flames.up || buff.ancient_flame.up",
|
|
["action"] = "living_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "AS Gooder",
|
|
["criteria"] = "active_enemies >= 2 & ! talent.snapfire.enabled",
|
|
["action"] = "azure_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "LF",
|
|
["action"] = "living_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Cry",
|
|
["action"] = "azure_strike",
|
|
},
|
|
},
|
|
["fb"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "2",
|
|
["criteria"] = "talent.scorching_embers.enabled & ( cooldown.engulf.remains <= duration + 0.5 || cooldown.engulf.up ) & talent.engulf.enabled & release.dot_duration <= fight_remains",
|
|
["description"] = "Fire Breath, use rank appropriate to target count/talents.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["criteria"] = "talent.scorching_embers.enabled & ( cooldown.engulf.remains <= duration + 0.5 || cooldown.engulf.up ) & talent.engulf.enabled & ( release.dot_duration <= fight_remains || ! talent.font_of_magic.enabled )",
|
|
["empower_to"] = "3",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["criteria"] = "talent.scorching_embers.enabled & ( cooldown.engulf.remains <= duration + 0.5 || cooldown.engulf.up ) & talent.engulf.enabled & talent.font_of_magic.enabled",
|
|
["empower_to"] = "4",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["criteria"] = "( ( buff.dragonrage.remains < 1.75 * spell_haste & buff.dragonrage.remains >= 1 * spell_haste ) & talent.animosity.enabled & variable.can_extend_dr || active_enemies = 1 ) & release.dot_duration <= fight_remains",
|
|
["empower_to"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["criteria"] = "( ( buff.dragonrage.remains < 2.5 * spell_haste & buff.dragonrage.remains >= 1.75 * spell_haste ) & talent.animosity.enabled & variable.can_extend_dr || talent.scorching_embers.enabled || active_enemies >= 2 ) & release.dot_duration <= fight_remains",
|
|
["empower_to"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["criteria"] = "! talent.font_of_magic.enabled || ( ( buff.dragonrage.remains <= 3.25 * spell_haste & buff.dragonrage.remains >= 2.5 * spell_haste ) & talent.animosity.enabled & variable.can_extend_dr || talent.scorching_embers.enabled ) & release.dot_duration <= fight_remains",
|
|
["empower_to"] = "3",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250415.1,
|
|
["warnings"] = "The 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 1: Converted 'trinket.1.is.signet_of_the_priory' to 'trinket.t1.is.signet_of_the_priory' (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 2: Converted 'trinket.2.is.signet_of_the_priory' to 'trinket.t2.is.signet_of_the_priory' (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 'trinket.1.is.house_of_cards' to 'trinket.t1.is.house_of_cards' (1x).\nLine 6: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.dragonrage.duration=0||cooldown.dragonrage.duration%%trinket.t1.cooldown.duration=0||trinket.t1.is.house_of_cards)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.dragonrage.duration=0||cooldown.dragonrage.duration%trinket.t1.cooldown.duration=0||trinket.t1.is.house_of_cards)'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted 'trinket.2.is.house_of_cards' to 'trinket.t2.is.house_of_cards' (1x).\nLine 7: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.dragonrage.duration=0||cooldown.dragonrage.duration%%trinket.t2.cooldown.duration=0||trinket.t2.is.house_of_cards)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.dragonrage.duration=0||cooldown.dragonrage.duration%trinket.t2.cooldown.duration=0||trinket.t2.is.house_of_cards)'.\nLine 8: Converted 'trinket.1.is.belorrelos_the_suncaller' to 'trinket.t1.is.belorrelos_the_suncaller' (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 9: Converted 'trinket.2.is.belorrelos_the_suncaller' to 'trinket.t2.is.belorrelos_the_suncaller' (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 12: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 12: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 13: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 13: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (1x).\nLine 14: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 14: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 14: Converted 'trinket.2.proc.any_dps.default_value' to 'trinket.t2.proc.any_dps.default_value' (1x).\nLine 14: Converted 'trinket.2.proc.any_dps.default_value' to 'trinket.t2.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 14: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 14: Converted 'trinket.1.proc.any_dps.default_value' to 'trinket.t1.proc.any_dps.default_value' (1x).\nLine 14: Converted 'trinket.1.proc.any_dps.default_value' to 'trinket.t1.has_use_buff' (1x).\nLine 15: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 15: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 15: Converted 'trinket.2.proc.any_dps.default_value' to 'trinket.t2.proc.any_dps.default_value' (1x).\nLine 15: Converted 'trinket.2.proc.any_dps.default_value' to 'trinket.t2.has_use_buff' (1x).\nLine 15: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 15: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 15: Converted 'trinket.1.proc.any_dps.default_value' to 'trinket.t1.proc.any_dps.default_value' (1x).\nLine 15: Converted 'trinket.1.proc.any_dps.default_value' to 'trinket.t1.has_use_buff' (1x).\nLine 16: Converted 'trinket.1.is.signet_of_the_priory' to 'trinket.t1.is.signet_of_the_priory' (1x).\nLine 16: Converted 'trinket.2.is.signet_of_the_priory' to 'trinket.t2.is.signet_of_the_priory' (1x).\nLine 17: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 17: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'trinkets' required some automated changes.\nLine 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 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 3: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.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 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 4: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'trinket.2.cooldown.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.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.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.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.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 '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 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (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.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (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.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (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.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (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.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\n\nImported 8 action lists.\n",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/evoker_devastation.simc\n## Up to date with SimC: March 28 2025 - 74b5dd8\n\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_buff.intellect||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit||trinket.1.is.mirror_of_fractured_tomorrows||trinket.1.is.signet_of_the_priory\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||trinket.2.is.signet_of_the_priory\nactions.precombat+=/variable,name=weapon_buffs,value=equipped.bestinslots\nactions.precombat+=/variable,name=weapon_sync,op=setif,value=1,value_else=0.5,condition=equipped.bestinslots\n# Mythic one hardcoded - To Do implement something in simc to just get the value.\nactions.precombat+=/variable,name=weapon_stat_value,value=equipped.bestinslots*5142*15\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||trinket.1.is.house_of_cards)\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||trinket.2.is.house_of_cards)\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.proc.any_dps.duration)*(variable.trinket_2_sync)*trinket.2.proc.any_dps.default_value)>((trinket.1.proc.any_dps.duration)*(variable.trinket_1_sync)*trinket.1.proc.any_dps.default_value)\nactions.precombat+=/variable,name=trinket_priority,op=setif,if=variable.weapon_buffs,value=3,value_else=variable.trinket_priority,condition=!variable.trinket_1_buffs&!variable.trinket_2_buffs||variable.weapon_stat_value*variable.weapon_sync>(((trinket.2.proc.any_dps.duration)*(variable.trinket_2_sync)*trinket.2.proc.any_dps.default_value)<?((trinket.1.proc.any_dps.duration)*(variable.trinket_1_sync)*trinket.1.proc.any_dps.default_value))\nactions.precombat+=/variable,name=trinket_priority,op=set,value=trinket.1.is.signet_of_the_priory+2*trinket.2.is.signet_of_the_priory,if=equipped.signet_of_the_priory&variable.trinket_priority=3\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,default=6,op=reset\nactions.precombat+=/variable,name=dr_prep_time_aoe,default=4,op=reset\nactions.precombat+=/variable,name=can_extend_dr,default=0,op=reset\n## actions.precombat+=/variable,name=has_external_pi,value=cooldown.invoke_power_infusion_0.duration>0\nactions.precombat+=/variable,name=can_use_empower,value=1,default=1,if=!talent.animosity||!talent.dragonrage||buff.empowering.up\n# Get Some Scarlet Adaptation Prepull\nactions.precombat+=/verdant_embrace,if=talent.scarlet_adaptation\n## [Syrif] - This charge gets refunded pretty early by deep breath when talented into slipstream, but added some extra conditions to stop it from griefing in dungeons\nactions.precombat+=/hover,if=talent.slipstream&buff.hover.down&cooldown.deep_breath.up\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# 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,default=0,op=set,value=cooldown.deep_breath.remains<7&essence.deficit>=1&!buff.essence_burst.up&(raid_event.adds.in>=action.deep_breath.cooldown*0.4||talent.melt_armor&talent.maneuverability||active_enemies>=3)\n# [Edited by Syrif] - animosity_extension returns the number of extensions performed for this dragonrage, use it instead of the complex APL conditions\nactions+=/variable,name=can_extend_dr,if=talent.animosity,op=set,value=buff.dragonrage.up&(animosity_extension<4)\nactions+=/variable,name=can_use_empower,op=set,value=cooldown.dragonrage.remains>=gcd.max*variable.dr_prep_time,if=!buff.empowering.up&talent.animosity&talent.dragonrage\n# Rupt to make the raidleader happy\nactions+=/quell,use_off_gcd=1\nactions+=/unravel\nactions+=/expunge,enabled=0,if=debuff.dispellable_poison.up\n# [Hekili] No API available for detecting bleeds\nactions+=/cauterizing_flame,enabled=0,if=debuff.dispellable_poison.up||debuff.dispellable_curse.up||debuff.dispellable_disease.up\n# [Hekili] Recommended to link to toggle.interrupts with Show Separately enabled\nactions+=/hover,enabled=0,if=moving&buff.hover.down\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=(!talent.dragonrage||buff.dragonrage.up)&(!cooldown.shattering_star.up||debuff.shattering_star_debuff.up||active_enemies>=2)||boss&fight_remains<35\nactions+=/call_action_list,name=trinkets\nactions+=/run_action_list,name=aoe,strict=1,if=active_enemies>2\nactions+=/run_action_list,name=st,strict=1,if=active_enemies<3\n\n# AOE action list; Open with star before DR to save a global and start with a free EB BaumChange 2: Don't do as FS - Neutral\nactions.aoe+=/shattering_star,cycle_targets=1,if=(cooldown.dragonrage.up&talent.arcane_vigor||talent.eternitys_span&active_enemies<=3)&!talent.engulf\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&!talent.feed_the_flames\nactions.aoe+=/variable,name=engulf_condition,value=dot.fire_breath_damage.remains>(action.engulf.travel_time+2*action.engulf.in_flight)&(variable.next_dragonrage>=cooldown*1.2||!talent.dragonrage)\n# BaumChange 1: Send DB before DR if FS FS FTF - +30k in 5T\nactions.aoe+=/deep_breath,if=talent.maneuverability&talent.melt_armor&!cooldown.fire_breath.up&!cooldown.eternity_surge.up||talent.feed_the_flames&talent.engulf&talent.imminent_destruction&(cooldown.engulf.remains>4||!variable.engulf_condition)\n# Acquire the buff BaumChange #3: Keep it from hardcasting firestorm while the SS debuff is running. I know the condition is garbage but it works - +20k in 5T\nactions.aoe+=/firestorm,if=talent.feed_the_flames&(!talent.engulf||cooldown.engulf.remains>4||cooldown.engulf.charges=0||(variable.next_dragonrage<=cooldown*1.2||!talent.dragonrage))\n# Grab Irid Red before Dragonrage without griefing extension\nactions.aoe+=/call_action_list,name=fb,strict_if=talent.dragonrage&(talent.iridescence||talent.scorching_embers)&!talent.engulf,if=talent.dragonrage&cooldown.dragonrage.up&(talent.iridescence||talent.scorching_embers)&!talent.engulf\nactions.aoe+=/dragonrage\n# Tip ES at appropiate target count or when playing Flameshaper otherwise Tip FB\nactions.aoe+=/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)&!talent.engulf)\n# BaumChange 2: Do as FS - Neutral\nactions.aoe+=/shattering_star,if=(cooldown.dragonrage.up&talent.arcane_vigor||talent.eternitys_span&active_enemies<=3)&talent.engulf\nactions.aoe+=/dragonrage,if=target.time_to_die>=32||active_enemies>=3&target.time_to_die>=15||boss&fight_remains<30\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,strict=1,if=(!talent.dragonrage||buff.dragonrage.up||cooldown.dragonrage.remains>variable.dr_prep_time_aoe||!talent.animosity||talent.flame_siphon)&(target.time_to_die>=8||talent.mass_disintegrate)\nactions.aoe+=/call_action_list,name=es,strict_if=(!talent.dragonrage||buff.dragonrage.up||cooldown.dragonrage.remains>variable.dr_prep_time_aoe||!talent.animosity),if=(!talent.dragonrage||buff.dragonrage.up||cooldown.dragonrage.remains>variable.dr_prep_time_aoe||!talent.animosity)&(!buff.jackpot.up||!set_bonus.tww2_4pc||talent.mass_disintegrate)\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 BaumChange 3: Save SS for Engulf - +20k in 5T\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||set_bonus.tww2_4pc&buff.jackpot.stack<2)&(!talent.engulf||cooldown.engulf.remains<4||cooldown.engulf.charges>0)\n# [Hekili] Re-revised Fire Breath debuff remaining so that you get back-to-back Engulfs easier.\nactions.aoe+=/engulf,cycle_targets=1,if=variable.engulf_condition\nactions.aoe+=/pyre,if=buff.charged_blast.stack>=12&(cooldown.dragonrage.remains>gcd.max*4||!talent.dragonrage)\n# Use Mass Disintegrate if CB wont't overcap\nactions.aoe+=/disintegrate,cycle_targets=1,if=buff.mass_disintegrate_stacks.up&talent.mass_disintegrate&(!variable.pool_for_id||buff.mass_disintegrate_stacks.remains<=buff.mass_disintegrate_stacks.stack*(duration+0.1))\n# Use Deep Breath on 2T, unless adds will come before it'll be ready again or if talented ID.\nactions.aoe+=/deep_breath,if=talent.imminent_destruction&!buff.essence_burst.up\n# Pyre 4T+ - 3T+ with Volatility - 12 stacks of CB - Pool CB for DR\nactions.aoe+=/pyre,if=(active_enemies>=4-(buff.imminent_destruction.up)||talent.volatility||talent.scorching_embers&active_dot.fire_breath_damage>=active_enemies*0.75)&(cooldown.dragonrage.remains>gcd.max*4||!talent.dragonrage||!talent.charged_blast)&!variable.pool_for_id&(!buff.mass_disintegrate_stacks.up||buff.essence_burst.stack=2||buff.essence_burst.stack=1&essence>=(3-buff.imminent_destruction.up)||essence>=(5-buff.imminent_destruction.up*2))\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||cooldown.fire_breath.remains<=gcd.max*3&buff.essence_burst.stack<buff.essence_burst.max_stack)\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&(active_enemies<=4||buff.mass_disintegrate_stacks.up)\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,strict_if=talent.ancient_flame,if=talent.ancient_flame&!buff.ancient_flame.up&!buff.dragonrage.up\nactions.aoe+=/living_flame,if=talent.snapfire&!talent.engulfing_blaze\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||(variable.can_extend_dr&talent.animosity||talent.mass_disintegrate)&active_enemies>(3+talent.font_of_magic+4*talent.eternitys_span)||buff.dragonrage.remains<1.75*spell_haste&buff.dragonrage.remains>=1*spell_haste&talent.animosity&variable.can_extend_dr\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&talent.mass_disintegrate||buff.dragonrage.remains<=3.25*spell_haste&buff.dragonrage.remains>=2.5*spell_haste\nactions.es+=/eternity_surge,empower_to=4,cycle_targets=1,if=talent.mass_disintegrate||active_enemies<=4+4*talent.eternitys_span\n\n# Fire Breath, use rank appropriate to target count/talents.\nactions.fb+=/fire_breath,empower_to=2,if=talent.scorching_embers&(cooldown.engulf.remains<=duration+0.5||cooldown.engulf.up)&talent.engulf&release.dot_duration<=fight_remains\nactions.fb+=/fire_breath,empower_to=3,if=talent.scorching_embers&(cooldown.engulf.remains<=duration+0.5||cooldown.engulf.up)&talent.engulf&(release.dot_duration<=fight_remains||!talent.font_of_magic)\nactions.fb+=/fire_breath,empower_to=4,if=talent.scorching_embers&(cooldown.engulf.remains<=duration+0.5||cooldown.engulf.up)&talent.engulf&talent.font_of_magic\nactions.fb+=/fire_breath,empower_to=1,if=((buff.dragonrage.remains<1.75*spell_haste&buff.dragonrage.remains>=1*spell_haste)&talent.animosity&variable.can_extend_dr||active_enemies=1)&release.dot_duration<=fight_remains\nactions.fb+=/fire_breath,empower_to=2,if=((buff.dragonrage.remains<2.5*spell_haste&buff.dragonrage.remains>=1.75*spell_haste)&talent.animosity&variable.can_extend_dr||talent.scorching_embers||active_enemies>=2)&release.dot_duration<=fight_remains\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.animosity&variable.can_extend_dr||talent.scorching_embers)&release.dot_duration<=fight_remains\n\n# Green Spells used to trigger Ancient Flame\nactions.green+=/emerald_blossom\nactions.green+=/verdant_embrace\n\n# Become a Superior Dragon\nactions.st+=/dragonrage\n# Flap wings\nactions.st+=/hover,use_off_gcd=1,if=raid_event.movement.in<6&!buff.hover.up&gcd.remains>=0.5||talent.slipstream&gcd.remains>=0.5\n# Become a faster dragon (for one empower)\nactions.st+=/tip_the_scales,use_off_gcd=1,if=buff.dragonrage.up&cooldown.fire_breath.remains<=cooldown.eternity_surge.remains\n# Dont overcap with Vigor. With TWWS2 this is neutral but it will stay for posterity.\nactions.st+=/shattering_star,if=(buff.essence_burst.stack<buff.essence_burst.max_stack||!talent.arcane_vigor)\n# If has scorch and the gulf is gulfable do a four empower unless you could get away with a R1.\nactions.st+=/fire_breath,empower_to=4,if=(talent.scorching_embers&talent.engulf&action.engulf.usable_in<=duration+0.5)&variable.can_use_empower&cooldown.engulf.full_recharge_time<=cooldown.fire_breath.duration_expected+4\n# Sad Engulf Noises (Fulminous Roar Sucks)\nactions.st+=/fire_breath,empower_to=1,if=talent.engulf&talent.fulminous_roar&variable.can_use_empower\n# R2 funny breath good default for SC.\nactions.st+=/fire_breath,empower_to=2,if=variable.can_use_empower&!buff.dragonrage.up\nactions.st+=/fire_breath,empower_to=1,if=variable.can_use_empower\n# [Hekili] Modified to ignore Ruby Embers if applying it is going to waste the Fire Breath dot.\nactions.st+=/engulf,if=(dot.fire_breath_damage.remains>travel_time)&(dot.living_flame_damage.remains>travel_time||dot.fire_breath_damage.remains<action.living_flame.cast_time+travel_time+0.5||!talent.ruby_embers)&(dot.enkindle.remains>travel_time||!talent.enkindle)&(!talent.iridescence||buff.iridescence_red.up)&(!talent.scorching_embers||dot.fire_breath_damage.duration<=6||boss&fight_remains<=30)&(debuff.shattering_star_debuff.remains>travel_time||full_recharge_time<action.shattering_star.usable_in||talent.scorching_embers)\n# Why would you do this to yourself. Talent span right meow.\nactions.st+=/eternity_surge,empower_to=2,if=(!talent.power_swell||buff.power_swell.remains<=duration||!talent.mass_disintegrate)&active_enemies=2&!talent.eternitys_span&variable.can_use_empower\n# Surge all of eternity and swell power (but not if :engulf:)\nactions.st+=/eternity_surge,empower_to=1,if=(!talent.power_swell||buff.power_swell.remains<=duration||!talent.mass_disintegrate)&variable.can_use_empower\n# Burnout LF for EB if DR expire soon\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\n# AS for EB if DR expire soon\nactions.st+=/azure_strike,if=buff.dragonrage.up&buff.dragonrage.remains<(buff.essence_burst.max_stack-buff.essence_burst.stack)*gcd.max\n# Snappy FS big pump\nactions.st+=/firestorm,if=buff.snapfire.up||active_enemies>=2\n# Use the Deeper Breath\nactions.st+=/deep_breath,if=talent.imminent_destruction||talent.melt_armor||talent.maneuverability\n# Mass Disintegrator pov\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&!variable.pool_for_id\n# Secret tech (dont leak)\nactions.st+=/pyre,if=talent.snapfire&active_enemies>=2&talent.volatility.rank>=2&(!talent.azure_celerity||talent.feed_the_flames)\n# Disintegrator pov\nactions.st+=/disintegrate,cycle_targets=1,chain=1,if=(raid_event.movement.in>2||buff.hover.up)&!variable.pool_for_id\n# Get Ancient Flame if you have Engulfing Blaze and nothing interesting is happening\nactions.st+=/call_action_list,name=green,strict_if=talent.ancient_flame&talent.scarlet_adaptation&talent.engulfing_blaze,if=talent.ancient_flame&!buff.ancient_flame.up&!buff.shattering_star_debuff.up&talent.scarlet_adaptation&!buff.dragonrage.up&!buff.burnout.up&talent.engulfing_blaze\n# LF Gooder\nactions.st+=/living_flame,if=buff.burnout.up||buff.leaping_flames.up||buff.ancient_flame.up\n# AS Gooder\nactions.st+=/azure_strike,if=active_enemies>=2&!talent.snapfire\n# LF\nactions.st+=/living_flame\n# Cry\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)\nactions.trinkets+=/use_item,name=neural_synapse_enhancer,if=buff.dragonrage.up||!talent.dragonrage||cooldown.dragonrage.remains>=5\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)||buff.tip_the_scales.up&(!cooldown.shattering_star.up||talent.engulf)&variable.trinket_priority=1||(!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)||buff.tip_the_scales.up&(!cooldown.shattering_star.up||talent.engulf)&variable.trinket_priority=2||(!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\nactions.trinkets+=/use_item,slot=main_hand,if=variable.weapon_buffs&((variable.trinket_2_buffs&(trinket.2.cooldown.remains||trinket.2.cooldown.duration<=20)||!variable.trinket_2_buffs||variable.trinket_2_exclude||variable.trinket_priority=3)&(variable.trinket_1_buffs&(trinket.1.cooldown.remains||trinket.1.cooldown.duration<=20)||!variable.trinket_1_buffs||variable.trinket_1_exclude||variable.trinket_priority=3)&(!cooldown.fire_breath.up&!cooldown.shattering_star.up||buff.tip_the_scales.up&(!cooldown.shattering_star.up||talent.engulf)||(!cooldown.fire_breath.up&!cooldown.shattering_star.up)||active_enemies>=3))&(variable.next_dragonrage>20||!talent.dragonrage)&(!buff.dragonrage.up||variable.trinket_priority=3||variable.trinket_priority=1&trinket.1.cooldown.remains||variable.trinket_priority=2&trinket.2.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.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",
|
|
},
|
|
["Guardian"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250314,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-03-14: SimC Sync\n\n2024-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,
|
|
["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 )",
|
|
["action"] = "moonfire",
|
|
["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_bear",
|
|
["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.up & buff.tooth_and_claw.remains < 1 + gcd.max ) & variable.if_build = 1",
|
|
["action"] = "raze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.if_build = 0 & ( buff.tooth_and_claw.stack > 1 || buff.tooth_and_claw.up & buff.tooth_and_claw.remains < 1 + gcd.max || buff.vicious_cycle_maul.stack = 3 )",
|
|
["action"] = "raze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 5 & talent.lunar_calling.enabled",
|
|
["action"] = "thrash_bear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "ironfur",
|
|
["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 & ! 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",
|
|
["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.up & buff.tooth_and_claw.remains < 1 + gcd.max ) & active_enemies <= 5 & ! talent.raze.enabled ) || ( ( buff.tooth_and_claw.stack > 1 || buff.tooth_and_claw.up & buff.tooth_and_claw.remains < 1 + gcd.max ) & active_enemies = 1 & talent.raze.enabled ) || ( ( buff.tooth_and_claw.stack > 1 || buff.tooth_and_claw.up & 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",
|
|
["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",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.cat_form.up & ! dot.rip.ticking & active_enemies < 3",
|
|
["action"] = "rip",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rip.ticking & combo_points > 4 & active_enemies < 3",
|
|
["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"] = "bestinslots",
|
|
["criteria"] = "buff.incarnation_guardian_of_ursoc.up || buff.berserk_bear.up",
|
|
["name"] = "bestinslots",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tome_of_lights_devotion",
|
|
["criteria"] = "buff.inner_resilience.up",
|
|
["name"] = "tome_of_lights_devotion",
|
|
},
|
|
{
|
|
["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",
|
|
["value"] = "1",
|
|
["value_else"] = "0",
|
|
["criteria"] = "talent.thorns_of_iron.enabled & talent.ursocs_endurance.enabled",
|
|
},
|
|
{
|
|
["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"] = 20250314,
|
|
["warnings"] = "Imported 4 action lists.\n",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/druid_guardian.simc\n## Up to date with SimC: March 8 2025 - ccb7c79\n\nactions.precombat+=/mark_of_the_wild\nactions.precombat+=/variable,name=if_build,value=1,value_else=0,if=talent.thorns_of_iron.enabled&talent.ursocs_endurance.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,name=bestinslots,if=buff.incarnation_guardian_of_ursoc.up||buff.berserk_bear.up\nactions+=/use_item,name=tome_of_lights_devotion,if=buff.inner_resilience.up\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.up&buff.tooth_and_claw.remains<1+gcd)&variable.if_build=1\nactions.bear+=/raze,if=variable.if_build=0&(buff.tooth_and_claw.stack>1||buff.tooth_and_claw.up&buff.tooth_and_claw.remains<1+gcd||buff.vicious_cycle_maul.stack=3)\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&!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\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.up&buff.tooth_and_claw.remains<1+gcd)&active_enemies<=5&!talent.raze.enabled)||((buff.tooth_and_claw.stack>1||buff.tooth_and_claw.up&buff.tooth_and_claw.remains<1+gcd)&active_enemies=1&talent.raze.enabled)||((buff.tooth_and_claw.stack>1||buff.tooth_and_claw.up&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\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\nactions.bear+=/rip,if=buff.cat_form.up&!dot.rip.ticking&active_enemies<3\nactions.bear+=/ferocious_bite,if=dot.rip.ticking&combo_points>4&active_enemies<3\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"] = 20250405,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-04-05: SimC Sync\n2025-03-01: TWW Season 2 update\n2024-12-22: Spymasters improvement\n2024-11-03, 11-17, 11-22, 12-06: SimC update\n2024-10-06, 10-21, 10-29: SimC update\n2024-09-24: Comet Storm\n2024-09-01, 09-08, 09-22: SimC update\n2024-08-22: SimC priority update\n2024-07-29: The War Within",
|
|
["lists"] = {
|
|
["cleave_ff"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.deaths_chill.enabled & buff.icy_veins.remains > 9 & ( buff.deaths_chill.stack < 4 || buff.deaths_chill.stack = 4 & ! 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"] = "prev_gcd.1.glacial_spike & ! prev_off_gcd.freeze",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.icicles.stack < 5 || ! talent.glacial_spike.enabled ) & remaining_winters_chill = 0 & debuff.winters_chill.down & ( prev_gcd.1.frostfire_bolt || prev_gcd.1.comet_storm )",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.icicles.stack < 5 || ! talent.glacial_spike.enabled ) & buff.excess_fire.up & buff.excess_frost.up",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["action"] = "comet_storm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "frozen_orb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.freezing_rain.up & talent.ice_caller.enabled",
|
|
["action"] = "blizzard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stack = 5",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill = 1",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frostfire_empowerment.up & ! buff.excess_fire.up",
|
|
["action"] = "frostfire_bolt",
|
|
},
|
|
{
|
|
["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 )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.up || remaining_winters_chill",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["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.up & ( 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 >= 15 )",
|
|
["action"] = "cone_of_cold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable & ( prev_gcd.1.glacial_spike || ! talent.glacial_spike.enabled )",
|
|
["action"] = "freeze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill = 0 & debuff.winters_chill.down & prev_gcd.1.glacial_spike",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["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"] = "talent.unerring_proficiency.enabled & time - action.cone_of_cold.last_used < 10 & time - action.cone_of_cold.last_used > 7",
|
|
["action"] = "ice_nova",
|
|
},
|
|
{
|
|
["action"] = "frozen_orb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ice_caller.enabled || talent.freezing_rain.enabled",
|
|
["action"] = "blizzard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.deaths_chill.enabled & buff.icy_veins.remains > 9 & ( buff.deaths_chill.stack < 12 || buff.deaths_chill.stack = 12 & ! action.frostbolt.in_flight )",
|
|
["action"] = "frostbolt",
|
|
},
|
|
{
|
|
["action"] = "comet_storm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.splintering_ray.enabled & remaining_winters_chill & buff.icy_veins.down",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stack = 5 & ( cooldown.flurry.up || remaining_winters_chill || freezable & cooldown.ice_nova.ready )",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.icy_veins.remains > 10 & ( fight_remains + 15 > cooldown.icy_veins.remains )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.up || remaining_winters_chill",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill = 0 & debuff.winters_chill.down",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["action"] = "frostbolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "movement",
|
|
},
|
|
},
|
|
["st_ff"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.icicles.stack < 5 || ! talent.glacial_spike.enabled ) & remaining_winters_chill = 0 & debuff.winters_chill.down & ( prev_gcd.1.glacial_spike || prev_gcd.1.frostfire_bolt || prev_gcd.1.comet_storm )",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.icicles.stack < 5 || ! talent.glacial_spike.enabled ) & buff.excess_fire.up & buff.excess_frost.up",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["action"] = "comet_storm",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stack = 5",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill = 1",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["action"] = "frozen_orb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["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 )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.up || 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.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"] = "talent.coldest_snap.enabled & prev_gcd.1.comet_storm",
|
|
["action"] = "cone_of_cold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable & ( prev_gcd.1.glacial_spike || prev_gcd.1.comet_storm & time - action.cone_of_cold.last_used > 8 )",
|
|
["action"] = "freeze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable & ! prev_off_gcd.freeze & ( prev_gcd.1.glacial_spike & remaining_winters_chill = 0 & debuff.winters_chill.down || prev_gcd.1.comet_storm & time - action.cone_of_cold.last_used > 8 )",
|
|
["action"] = "ice_nova",
|
|
},
|
|
{
|
|
["action"] = "frozen_orb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.excess_fire.stack = 2 & cooldown.comet_storm.up",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.ice_caller.enabled || talent.freezing_rain.enabled",
|
|
["action"] = "blizzard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.cone_of_cold.remains > 10 || cooldown.cone_of_cold.ready",
|
|
["action"] = "comet_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.splintering_ray.enabled & remaining_winters_chill",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stack = 5",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.excess_fire.up & buff.excess_frost.up",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill = 0 & debuff.winters_chill.down",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frostfire_empowerment.up & ! buff.excess_fire.up",
|
|
["action"] = "frostfire_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.icy_veins.remains > 10 & cooldown.frozen_orb.remains > 10 & ( ! talent.comet_storm.enabled || cooldown.comet_storm.remains > 10 )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.up || remaining_winters_chill",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["action"] = "frostfire_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "movement",
|
|
},
|
|
},
|
|
["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,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "arcane_intellect",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mirror_image",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "12",
|
|
["criteria"] = "equipped.treacherous_transmitter",
|
|
["var_name"] = "treacherous_transmitter_precombat_cast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = false,
|
|
["name"] = "ingenious_mana_battery",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 3",
|
|
["action"] = "blizzard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies <= 2",
|
|
["action"] = "frostbolt",
|
|
},
|
|
},
|
|
["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",
|
|
},
|
|
},
|
|
["st_ss"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.winters_chill.down & remaining_winters_chill = 0 & ( prev_gcd.1.glacial_spike || prev_gcd.1.frostbolt )",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill & buff.icy_veins.down",
|
|
["action"] = "comet_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.icy_veins.remains > 30 || buff.icy_veins.up )",
|
|
["action"] = "frozen_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.flurry",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stack = 5 & ( cooldown.flurry.up || remaining_winters_chill )",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.icy_veins.remains > 10 & ! cooldown.flurry.up & ( fight_remains + 15 > cooldown.icy_veins.remains )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.up || 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 & ( boss & 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"] = "time > 10",
|
|
["name"] = "ratfang_toxin",
|
|
["action"] = "ratfang_toxin",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies <= 2 || prev_gcd.1.comet_storm || boss & fight_remains < 20",
|
|
["name"] = "neural_synapse_enhancer",
|
|
["action"] = "neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["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,
|
|
},
|
|
},
|
|
["cleave_ss"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.glacial_spike & ! prev_off_gcd.freeze",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable & prev_gcd.1.glacial_spike",
|
|
["action"] = "freeze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "freezable & ! prev_off_gcd.freeze & remaining_winters_chill = 0 & debuff.winters_chill.down & prev_gcd.1.glacial_spike",
|
|
["action"] = "ice_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.winters_chill.down & remaining_winters_chill = 0 & prev_gcd.1.frostbolt",
|
|
["action"] = "flurry",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.stack = 2",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remaining_winters_chill & buff.icy_veins.down",
|
|
["action"] = "comet_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.icy_veins.remains > 30 || buff.icy_veins.up )",
|
|
["action"] = "frozen_orb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.flurry & buff.icy_veins.down",
|
|
["action"] = "ray_of_frost",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.icicles.stack = 5 & ( cooldown.flurry.up || remaining_winters_chill || freezable & cooldown.ice_nova.ready )",
|
|
["action"] = "glacial_spike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.icy_veins.remains > 10 & ! cooldown.flurry.up & ( fight_remains + 15 > cooldown.icy_veins.remains )",
|
|
["action"] = "shifting_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.deaths_chill.enabled & buff.icy_veins.remains > 9 & ( buff.deaths_chill.stack < 6 || buff.deaths_chill.stack = 6 & ! action.frostbolt.in_flight )",
|
|
["action"] = "frostbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.freezing_rain.enabled & talent.ice_caller.enabled",
|
|
["action"] = "blizzard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fingers_of_frost.up || remaining_winters_chill",
|
|
["action"] = "ice_lance",
|
|
},
|
|
{
|
|
["action"] = "frostbolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "movement",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250405,
|
|
["warnings"] = "The import for 'precombat' required some automated changes.\nLine 5: Unsupported use_item action [ ingenious_mana_battery]; entry disabled.\n\nThe import for 'cds' required some automated changes.\nLine 2: Converted 'trinket.treacherous_transmitter.cooldown.remains' to 'cooldown.treacherous_transmitter.remains'.\n\nImported 10 action lists.\n",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/mage_frost.simc\n## Up to date with SimC: March 21 2025 - 19f3b05\n\nactions.precombat+=/arcane_intellect\nactions.precombat+=/mirror_image\nactions.precombat+=/variable,name=treacherous_transmitter_precombat_cast,value=12,if=equipped.treacherous_transmitter\nactions.precombat+=/use_item,name=treacherous_transmitter\nactions.precombat+=/use_item,name=ingenious_mana_battery\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+=/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+=/cone_of_cold,if=talent.coldest_snap&prev_gcd.1.comet_storm\nactions.aoe_ff+=/freeze,if=freezable&(prev_gcd.1.glacial_spike||prev_gcd.1.comet_storm&time-action.cone_of_cold.last_used>8)\nactions.aoe_ff+=/ice_nova,if=freezable&!prev_off_gcd.freeze&(prev_gcd.1.glacial_spike&remaining_winters_chill=0&debuff.winters_chill.down||prev_gcd.1.comet_storm&time-action.cone_of_cold.last_used>8)\nactions.aoe_ff+=/frozen_orb\nactions.aoe_ff+=/ice_lance,if=buff.excess_fire.stack=2&cooldown.comet_storm.up\nactions.aoe_ff+=/blizzard,if=talent.ice_caller||talent.freezing_rain\nactions.aoe_ff+=/comet_storm,if=cooldown.cone_of_cold.remains>10||cooldown.cone_of_cold.ready\nactions.aoe_ff+=/ray_of_frost,if=talent.splintering_ray&remaining_winters_chill\nactions.aoe_ff+=/glacial_spike,if=buff.icicles.stack=5\nactions.aoe_ff+=/flurry,if=buff.excess_fire.up&buff.excess_frost.up\nactions.aoe_ff+=/flurry,if=remaining_winters_chill=0&debuff.winters_chill.down\nactions.aoe_ff+=/frostfire_bolt,if=buff.frostfire_empowerment.up&!buff.excess_fire.up\nactions.aoe_ff+=/shifting_power,if=cooldown.icy_veins.remains>10&cooldown.frozen_orb.remains>10&(!talent.comet_storm||cooldown.comet_storm.remains>10)\nactions.aoe_ff+=/ice_lance,if=buff.fingers_of_frost.up||remaining_winters_chill\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.up&(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>=15)\nactions.aoe_ss+=/freeze,if=freezable&(prev_gcd.1.glacial_spike||!talent.glacial_spike)\nactions.aoe_ss+=/flurry,if=remaining_winters_chill=0&debuff.winters_chill.down&prev_gcd.1.glacial_spike\nactions.aoe_ss+=/ice_nova,if=freezable&!prev_off_gcd.freeze&prev_gcd.1.glacial_spike&remaining_winters_chill=0&debuff.winters_chill.down\nactions.aoe_ss+=/ice_nova,if=talent.unerring_proficiency&time-action.cone_of_cold.last_used<10&time-action.cone_of_cold.last_used>7\nactions.aoe_ss+=/frozen_orb\nactions.aoe_ss+=/blizzard,if=talent.ice_caller||talent.freezing_rain\nactions.aoe_ss+=/frostbolt,if=talent.deaths_chill&buff.icy_veins.remains>9&(buff.deaths_chill.stack<12||buff.deaths_chill.stack=12&!action.frostbolt.in_flight)\nactions.aoe_ss+=/comet_storm\nactions.aoe_ss+=/ray_of_frost,if=talent.splintering_ray&remaining_winters_chill&buff.icy_veins.down\nactions.aoe_ss+=/glacial_spike,if=buff.icicles.stack=5&(cooldown.flurry.up||remaining_winters_chill||freezable&cooldown.ice_nova.ready)\nactions.aoe_ss+=/shifting_power,if=cooldown.icy_veins.remains>10&(fight_remains+15>cooldown.icy_veins.remains)\nactions.aoe_ss+=/ice_lance,if=buff.fingers_of_frost.up||remaining_winters_chill\nactions.aoe_ss+=/flurry,if=remaining_winters_chill=0&debuff.winters_chill.down\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&(boss&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+=/use_item,name=ratfang_toxin,if=time>10\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_item,name=neural_synapse_enhancer,if=active_enemies<=2||prev_gcd.1.comet_storm||boss&fight_remains<20\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+=/frostfire_bolt,if=talent.deaths_chill&buff.icy_veins.remains>9&(buff.deaths_chill.stack<4||buff.deaths_chill.stack=4&!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=prev_gcd.1.glacial_spike&!prev_off_gcd.freeze\nactions.cleave_ff+=/flurry,if=(buff.icicles.stack<5||!talent.glacial_spike)&remaining_winters_chill=0&debuff.winters_chill.down&(prev_gcd.1.frostfire_bolt||prev_gcd.1.comet_storm)\nactions.cleave_ff+=/flurry,if=(buff.icicles.stack<5||!talent.glacial_spike)&buff.excess_fire.up&buff.excess_frost.up\nactions.cleave_ff+=/comet_storm\nactions.cleave_ff+=/frozen_orb\nactions.cleave_ff+=/blizzard,if=buff.freezing_rain.up&talent.ice_caller\nactions.cleave_ff+=/glacial_spike,if=buff.icicles.stack=5\nactions.cleave_ff+=/ray_of_frost,if=remaining_winters_chill=1\nactions.cleave_ff+=/frostfire_bolt,if=buff.frostfire_empowerment.up&!buff.excess_fire.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)\nactions.cleave_ff+=/ice_lance,if=buff.fingers_of_frost.up||remaining_winters_chill\nactions.cleave_ff+=/frostfire_bolt\nactions.cleave_ff+=/call_action_list,name=movement\n\nactions.cleave_ss+=/flurry,if=prev_gcd.1.glacial_spike&!prev_off_gcd.freeze\nactions.cleave_ss+=/freeze,if=freezable&prev_gcd.1.glacial_spike\nactions.cleave_ss+=/ice_nova,if=freezable&!prev_off_gcd.freeze&remaining_winters_chill=0&debuff.winters_chill.down&prev_gcd.1.glacial_spike\nactions.cleave_ss+=/flurry,if=debuff.winters_chill.down&remaining_winters_chill=0&prev_gcd.1.frostbolt\nactions.cleave_ss+=/ice_lance,if=buff.fingers_of_frost.stack=2\nactions.cleave_ss+=/comet_storm,if=remaining_winters_chill&buff.icy_veins.down\nactions.cleave_ss+=/frozen_orb,if=(cooldown.icy_veins.remains>30||buff.icy_veins.up)\nactions.cleave_ss+=/ray_of_frost,if=prev_gcd.1.flurry&buff.icy_veins.down\nactions.cleave_ss+=/glacial_spike,if=buff.icicles.stack=5&(cooldown.flurry.up||remaining_winters_chill||freezable&cooldown.ice_nova.ready)\nactions.cleave_ss+=/shifting_power,if=cooldown.icy_veins.remains>10&!cooldown.flurry.up&(fight_remains+15>cooldown.icy_veins.remains)\nactions.cleave_ss+=/frostbolt,if=talent.deaths_chill&buff.icy_veins.remains>9&(buff.deaths_chill.stack<6||buff.deaths_chill.stack=6&!action.frostbolt.in_flight)\nactions.cleave_ss+=/blizzard,if=talent.freezing_rain&talent.ice_caller\nactions.cleave_ss+=/ice_lance,if=buff.fingers_of_frost.up||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+=/flurry,if=(buff.icicles.stack<5||!talent.glacial_spike)&remaining_winters_chill=0&debuff.winters_chill.down&(prev_gcd.1.glacial_spike||prev_gcd.1.frostfire_bolt||prev_gcd.1.comet_storm)\nactions.st_ff+=/flurry,if=(buff.icicles.stack<5||!talent.glacial_spike)&buff.excess_fire.up&buff.excess_frost.up\nactions.st_ff+=/comet_storm\nactions.st_ff+=/glacial_spike,if=buff.icicles.stack=5\nactions.st_ff+=/ray_of_frost,if=remaining_winters_chill=1\nactions.st_ff+=/frozen_orb\nactions.st_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)\nactions.st_ff+=/ice_lance,if=buff.fingers_of_frost.up||remaining_winters_chill\nactions.st_ff+=/frostfire_bolt\nactions.st_ff+=/call_action_list,name=movement\n\nactions.st_ss+=/flurry,if=debuff.winters_chill.down&remaining_winters_chill=0&(prev_gcd.1.glacial_spike||prev_gcd.1.frostbolt)\nactions.st_ss+=/comet_storm,if=remaining_winters_chill&buff.icy_veins.down\nactions.st_ss+=/frozen_orb,if=(cooldown.icy_veins.remains>30||buff.icy_veins.up)\nactions.st_ss+=/ray_of_frost,if=prev_gcd.1.flurry\nactions.st_ss+=/glacial_spike,if=buff.icicles.stack=5&(cooldown.flurry.up||remaining_winters_chill)\nactions.st_ss+=/shifting_power,if=cooldown.icy_veins.remains>10&!cooldown.flurry.up&(fight_remains+15>cooldown.icy_veins.remains)\nactions.st_ss+=/ice_lance,if=buff.fingers_of_frost.up||remaining_winters_chill\nactions.st_ss+=/frostbolt\nactions.st_ss+=/call_action_list,name=movement",
|
|
["spec"] = 64,
|
|
},
|
|
["Fire"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250303,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-03-03: TWW Season 2 update\n\n2024-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,
|
|
["use_while_casting"] = 1,
|
|
["action"] = "variable",
|
|
["use_off_gcd"] = 1,
|
|
["op"] = "set",
|
|
["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",
|
|
["value"] = "firestarter.remains",
|
|
["use_off_gcd"] = 1,
|
|
["description"] = "Delay Combustion for after Firestarter unless variable.firestarter_combustion is set.",
|
|
["var_name"] = "time_to_combustion",
|
|
},
|
|
{
|
|
["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",
|
|
["value"] = "( buff.sun_kings_blessing.max_stack - buff.sun_kings_blessing.stack ) * ( 3 * gcd.max )",
|
|
["use_off_gcd"] = 1,
|
|
["description"] = "Delay Combustion until SKB is ready during Firestarter",
|
|
["var_name"] = "time_to_combustion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["action"] = "variable",
|
|
["op"] = "max",
|
|
["criteria"] = "equipped.gladiators_badge & cooldown.gladiators_badge.remains - 20 < variable.time_to_combustion",
|
|
["value"] = "cooldown.gladiators_badge.remains",
|
|
["use_off_gcd"] = 1,
|
|
["description"] = "Delay Combustion for Gladiators Badge, unless it would be delayed longer than 20 seconds.",
|
|
["var_name"] = "time_to_combustion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "max",
|
|
["action"] = "variable",
|
|
["use_off_gcd"] = 1,
|
|
["var_name"] = "time_to_combustion",
|
|
["use_while_casting"] = 1,
|
|
["description"] = "Delay Combustion until Combustion expires if it's up.",
|
|
["value"] = "buff.combustion.remains",
|
|
},
|
|
{
|
|
["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",
|
|
["value"] = "raid_event.adds.in",
|
|
["use_off_gcd"] = 1,
|
|
["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.",
|
|
["var_name"] = "time_to_combustion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["action"] = "variable",
|
|
["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",
|
|
["description"] = "Raid Events: Always use Combustion with vulnerability raid events, override any delays listed above to make sure it gets used here.",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["action"] = "variable",
|
|
["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",
|
|
["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.",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
},
|
|
["firestarter_fire_blasts"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["use_while_casting"] = 1,
|
|
["description"] = "While casting Fireball or Pyroblast, convert Heating Up to a Hot Streak!",
|
|
["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 )",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
},
|
|
["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,
|
|
["description"] = "The War Within S1 On-Use items with special use timings",
|
|
["name"] = "treacherous_transmitter",
|
|
["criteria"] = "variable.time_to_combustion < 10 || boss & fight_remains < 25",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["criteria"] = "variable.time_to_combustion < 3",
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "gladiators_badge",
|
|
["criteria"] = "variable.time_to_combustion > action_cooldown - 5",
|
|
["name"] = "gladiators_badge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "The War Within S2 On-use items",
|
|
["name"] = "neural_synapse_enhancer",
|
|
["criteria"] = "buff.combustion.remains > 7 || fight_remains < 15",
|
|
["action"] = "neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.item_cutoff_active",
|
|
["action"] = "use_items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["description"] = "Pool as many Fire Blasts as possible for Combustion. This variable is no longer used, and a hardcoded value is assigned instead.",
|
|
["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"] = "legacy_fire_blast_pooling",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "variable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["description"] = "Hardcoded value for fireblast pooling",
|
|
["use_while_casting"] = 1,
|
|
["value"] = "variable.time_to_combustion <= 8",
|
|
["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,
|
|
["action"] = "variable",
|
|
["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",
|
|
["description"] = "Adjust the variable that controls Fire Blast usage to save Fire Blasts while Searing Touch is active with Sun King's Blessing.",
|
|
["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,
|
|
["description"] = "Avoid capping Fire Blast charges while channeling Shifting Power",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "variable.time_to_combustion > 0 & buff.combustion.down",
|
|
["list_name"] = "standard_rotation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ice_nova",
|
|
["description"] = "Ice Nova can be used during movement when Searing Touch is not active.",
|
|
["criteria"] = "! scorch_execute.active",
|
|
},
|
|
{
|
|
["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"] = "5 * ( talent.quickflame.enabled || talent.flame_patch.enabled ) + 6 * talent.firefall.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"] = "5 * ( talent.quickflame.enabled || talent.flame_patch.enabled ) + 6 * talent.firefall.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_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,
|
|
["action"] = "flamestrike",
|
|
["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",
|
|
},
|
|
{
|
|
["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"] = "! talent.unleashed_inferno.enabled & talent.isothermic_core.enabled & buff.combustion.down & cooldown.combustion.remains < cast_time",
|
|
["action"] = "meteor",
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "fireball",
|
|
["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",
|
|
},
|
|
{
|
|
["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.unleashed_inferno.enabled & 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,
|
|
["use_while_casting"] = 1,
|
|
["criteria"] = "! variable.fire_blast_pooling & ( ! improved_scorch.active || action.scorch.executing || debuff.improved_scorch.remains > 4 * gcd.max ) & ( buff.fury_of_the_sun_king.down || action.pyroblast.executing ) & buff.combustion.up & ! buff.hot_streak.up & hot_streak_spells_in_flight + buff.heating_up.up * ( gcd.remains > 0 ) < 2",
|
|
["use_off_gcd"] = 1,
|
|
["description"] = "Fire Blast usage for a standard combustion",
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fury_of_the_sun_king.up",
|
|
["description"] = "Cancelaura HT if SKB is ready",
|
|
["buff_name"] = "hyperthermia",
|
|
["action"] = "cancel_buff",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "flamestrike",
|
|
["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 )",
|
|
},
|
|
{
|
|
["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"] = "improved_scorch.active & debuff.improved_scorch.remains < 3 * gcd.max",
|
|
["action"] = "scorch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "flamestrike",
|
|
["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 )",
|
|
},
|
|
{
|
|
["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"] = "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.",
|
|
["action"] = "phoenix_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frostfire_empowerment.up",
|
|
["action"] = "fireball",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.combustion.remains > cast_time & cast_time >= gcd.max",
|
|
["action"] = "scorch",
|
|
},
|
|
{
|
|
["action"] = "fireball",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["active_talents"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "meteor",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "dragons_breath",
|
|
["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 )",
|
|
},
|
|
},
|
|
["standard_rotation"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= variable.hot_streak_flamestrike & ( buff.hot_streak.up || buff.hyperthermia.up )",
|
|
["action"] = "flamestrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unleashed_inferno.enabled & buff.excess_fire.stack < 2",
|
|
["action"] = "meteor",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_streak.up || buff.hyperthermia.up",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= variable.skb_flamestrike & buff.fury_of_the_sun_king.up & buff.fury_of_the_sun_king.expiration_delay_remains = 0",
|
|
["action"] = "flamestrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "improved_scorch.active & debuff.improved_scorch.remains < 3 * gcd.max & ! prev_gcd.1.scorch",
|
|
["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 Sunfury 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"] = "buff.hyperthermia.up & charges_fractional > 1.5 & buff.heating_up.up",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "fire_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.scorch & buff.heating_up.up & scorch_execute.active & active_enemies < variable.hot_streak_flamestrike",
|
|
["action"] = "pyroblast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frostfire_empowerment.up",
|
|
["action"] = "fireball",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.heat_shimmer.up & ( talent.scald.enabled || talent.improved_scorch.enabled ) & active_enemies < variable.combustion_flamestrike",
|
|
["action"] = "scorch",
|
|
},
|
|
{
|
|
["action"] = "phoenix_flames",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["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 & ! ( talent.unleashed_inferno.enabled & talent.frostfire_bolt.enabled ) || 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,
|
|
["action"] = "flamestrike",
|
|
["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"] = "fireball",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "hyperthread_wristwraps",
|
|
["criteria"] = "hyperthread_wristwraps.fire_blast >= 2 & action.fire_blast.charges = 0",
|
|
["name"] = "hyperthread_wristwraps",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250303,
|
|
["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 13: 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 16: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 18: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 18: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 18: Converted 'talent.alexstraszas_fury' to 'talent.alexstraszas_fury.enabled' (1x).\nLine 21: 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.firefall' to 'talent.firefall.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.firefall' to 'talent.firefall.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 2: Converted 'talent.unleashed_inferno' to 'talent.unleashed_inferno.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 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).\nLine 15: Converted 'talent.unleashed_inferno' to 'talent.unleashed_inferno.enabled' (1x).\nLine 15: Converted 'talent.frostfire_bolt' to 'talent.frostfire_bolt.enabled' (1x).\n\nThe import for 'combustion_phase' required some automated changes.\nLine 5: Converted 'talent.unleashed_inferno' to 'talent.unleashed_inferno.enabled' (1x).\nLine 5: Converted 'talent.isothermic_core' to 'talent.isothermic_core.enabled' (1x).\nLine 6: Converted 'talent.sun_kings_blessing' to 'talent.sun_kings_blessing.enabled' (1x).\nLine 6: Converted 'talent.flame_accelerant' to 'talent.flame_accelerant.enabled' (1x).\nLine 9: Converted 'talent.isothermic_core' to 'talent.isothermic_core.enabled' (1x).\nLine 9: Converted 'talent.unleashed_inferno' to 'talent.unleashed_inferno.enabled' (1x).\nLine 9: Converted 'talent.isothermic_core' to 'talent.isothermic_core.enabled' (1x).\nLine 12: Converted 'talent.hyperthermia' to 'talent.hyperthermia.enabled' (1x).\nLine 21: Converted 'talent.scald' to 'talent.scald.enabled' (1x).\nLine 21: Converted 'talent.improved_scorch' to 'talent.improved_scorch.enabled' (1x).\n\nImported 8 action lists.\n",
|
|
["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=5*(talent.quickflame||talent.flame_patch)+6*talent.firefall+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=5*(talent.quickflame||talent.flame_patch)+6*talent.firefall+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\n# The War Within S2 On-use items\nactions+=/use_item,name=neural_synapse_enhancer,if=buff.combustion.remains>7||fight_remains<15\nactions+=/use_items,if=!variable.item_cutoff_active\n# Pool as many Fire Blasts as possible for Combustion. This variable is no longer used, and a hardcoded value is assigned instead.\nactions+=/variable,use_off_gcd=1,use_while_casting=1,name=legacy_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\n# Hardcoded value for fireblast pooling\nactions+=/variable,use_off_gcd=1,use_while_casting=1,name=fire_blast_pooling,value=variable.time_to_combustion<=8\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\nactions.combustion_cooldowns+=/use_item,name=hyperthread_wristwraps,if=hyperthread_wristwraps.fire_blast>=2&action.fire_blast.charges=0\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+=/meteor,if=!talent.unleashed_inferno&talent.isothermic_core&buff.combustion.down&cooldown.combustion.remains<cast_time\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.unleashed_inferno&talent.isothermic_core&action.meteor.in_flight)\n# Fire Blast usage for a standard combustion\nactions.combustion_phase+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=!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.up*(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=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+=/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\nactions.combustion_phase+=/fireball,if=buff.frostfire_empowerment.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)\nactions.standard_rotation+=/meteor,if=talent.unleashed_inferno&buff.excess_fire.stack<2\nactions.standard_rotation+=/pyroblast,if=buff.hot_streak.up||buff.hyperthermia.up\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&debuff.improved_scorch.remains<3*gcd.max&!prev_gcd.1.scorch\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 Sunfury 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)))\nactions.standard_rotation+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=buff.hyperthermia.up&charges_fractional>1.5&buff.heating_up.up\nactions.standard_rotation+=/pyroblast,if=prev_gcd.1.scorch&buff.heating_up.up&scorch_execute.active&active_enemies<variable.hot_streak_flamestrike\nactions.standard_rotation+=/fireball,if=buff.frostfire_empowerment.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\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&!(talent.unleashed_inferno&talent.frostfire_bolt)||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",
|
|
["spec"] = 63,
|
|
},
|
|
["Augmentation"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/evoker_augmentation.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250428,
|
|
["spec"] = 1473,
|
|
["desc"] = "2025-04-28: Bypass Time Skip syntax issue\n\n2025-04-25: Fix BoE; Upheaval usage for Chronowarden\n\n2025-04-23: Fix previous import\n\n2025-04-14: SimC Sync\n\n2025-03-02: TWW Season 2 update\n\n2024-12-06: SimC update\n\n2024-10-23: 11.0.5",
|
|
["lists"] = {
|
|
["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,
|
|
},
|
|
},
|
|
["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"] = "set",
|
|
["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 & talent.breath_of_eons.enabled || cooldown.deep_breath.remains < 8 & ! talent.breath_of_eons.enabled ) & 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 ) & ( solo & buff.prescience.remains < gcd.max * 2 || active_dot.prescience < active_allies ) & ( ! talent.anachronism.enabled || buff.essence_burst.stack < buff.essence_burst.max_stack || time <= 10 )",
|
|
["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"] = "( buff.ebon_might_self.remains - action.ebon_might.cast_time ) <= buff.ebon_might_self.duration * variable.ebon_might_pandemic_threshold & ( variable.eons_remains > 0 || ! talent.breath_of_eons.enabled & cooldown.deep_breath.remains > 0 || talent.overlord.enabled & ! talent.breath_of_eons.enabled & cooldown.deep_breath.up ) & ( ! buff.imminent_destruction.up || buff.ebon_might_self.remains <= gcd.max )",
|
|
["action"] = "ebon_might",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.threads_of_fate.enabled & ( prev_gcd.1.breath_of_eons || prev_gcd.1.deep_breath || boss & fight_remains <= 30 )",
|
|
["action"] = "tip_the_scales",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "empowering.fire_breath || ( ( raid_event.adds.remains > 13 || raid_event.adds.in > 20 || evoker.allied_cds_up > 0 || ! raid_event.adds.exists ) & ( variable.eons_remains >= variable.hold_empower_for || ! talent.breath_of_eons.enabled || variable.eons_remains = 0 ) & ( ! talent.overlord.enabled || active_enemies = 1 || talent.breath_of_eons.enabled || cooldown.deep_breath.remains <= gcd.max || cooldown.deep_breath.remains >= 25 ) )",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "fb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.overlord.enabled & buff.mass_eruption_stacks.up || ! talent.overlord.enabled || ! talent.mass_eruption.enabled || active_enemies = 1",
|
|
["action"] = "deep_breath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "upheaval",
|
|
["criteria"] = "empowering.upheaval || 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 || ! talent.breath_of_eons.enabled & talent.overlord.enabled & active_enemies > 1 & cooldown.deep_breath.up & ! buff.mass_eruption_stacks.up ) & ( cooldown.breath_of_eons.remains >= variable.hold_empower_for || ! talent.breath_of_eons.enabled || talent.wingleader.enabled & cooldown.breath_of_eons.remains >= variable.hold_empower_for ) & ( buff.essence_burst.stack < buff.essence_burst.max_stack || ! set_bonus.tww2_4pc & ! talent.rockfall.enabled || ! buff.essence_burst.up )",
|
|
["empower_to"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.wingleader.enabled & fight_remains >= 15 & ! variable.wingleader_force_timings & ( time % 240 <= 190 & time % 240 >= 3 ) || boss & fight_remains <= 30",
|
|
["action"] = "breath_of_eons",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( cooldown.ebon_might.remains <= 4 || buff.ebon_might_self.up ) & fight_remains > 15 || boss & fight_remains < 30 ) || boss & evoker.allied_cds_up > 0 || boss & fight_remains <= 15 & ( talent.imminent_destruction.enabled || talent.melt_armor.enabled )",
|
|
["action"] = "breath_of_eons",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "evoker.allied_cds_up > 0 & ( ( cooldown.ebon_might.remains <= 4 || buff.ebon_might_self.up ) & fight_remains > 15 || boss & fight_remains < 30 ) & ! boss",
|
|
["action"] = "breath_of_eons",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.fire_breath.remains >? 20",
|
|
["var_name"] = "fire_breath_cdr",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.upheaval.remains >? 20",
|
|
["var_name"] = "upheaval_cdr",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.fire_breath_cdr + variable.upheaval_cdr >= 30 & ( cooldown.breath_of_eons.remains >= 20 & talent.breath_of_eons.enabled || ! talent.breath_of_eons.enabled & cooldown.deep_breath.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 & ( buff.imminent_destruction.up || essence.deficit <= 2 || buff.essence_burst.up || variable.ebon_might_pandemic_threshold > 0 )",
|
|
["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 ) & ( ! trinket.t1.is.flarendos_pilot_light )",
|
|
["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 ) & ( ! trinket.t2.is.flarendos_pilot_light )",
|
|
["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,
|
|
},
|
|
},
|
|
["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"] = "max_empower",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "fight_remains > 4 & talent.font_of_magic.enabled & ( buff.ebon_might_self.remains > cast_time ) || empowering.fire_breath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["empower_to"] = "3",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "fight_remains > 8 & ( talent.font_of_magic.enabled & set_bonus.tww2_2pc & talent.molten_embers.enabled )",
|
|
},
|
|
},
|
|
["items"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["name"] = "nymues_unraveling_spindle",
|
|
["action"] = "nymues_unraveling_spindle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "aberrant_spellforge",
|
|
["action"] = "aberrant_spellforge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & trinket.t2.is.flarendos_pilot_light || ! variable.trinket_2_buffs & ! variable.trinket_2_manual & trinket.t1.is.flarendos_pilot_light",
|
|
["name"] = "flarendos_pilot_light",
|
|
["action"] = "flarendos_pilot_light",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.breath_of_eons.remains <= 10 & talent.wingleader.enabled || boss & fight_remains <= 15",
|
|
["name"] = "treacherous_transmitter",
|
|
["action"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["name"] = "spymasters_web",
|
|
["action"] = "spymasters_web",
|
|
},
|
|
{
|
|
["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 || ! talent.breath_of_eons.enabled & buff.ebon_might_self.up & active_enemies >= 1 ) || 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 || ! talent.breath_of_eons.enabled & buff.ebon_might_self.up & active_enemies >= 1 ) || 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 || ! talent.breath_of_eons.enabled || 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 || ! talent.breath_of_eons.enabled || 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 || ! talent.breath_of_eons.enabled || 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 || ! talent.breath_of_eons.enabled || trinket.t1.cooldown.duration = 0 || variable.trinket_1_exclude ) & ( ! variable.trinket_2_ogcd_cast )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "bestinslots",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "bestinslots",
|
|
["criteria"] = "buff.ebon_might_self.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "gcd.remains >= gcd.max * 0.6 & ! equipped.bestinslots",
|
|
["description"] = "Use on use weapons",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250428,
|
|
["warnings"] = "The import for 'default' required some automated changes.\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 16: Converted operations in 'talent.wingleader.enabled&fight_remains>=15&!variable.wingleader_force_timings&(time%%240<=190&time%%240>=3)||boss&fight_remains<=30' to 'talent.wingleader.enabled&fight_remains>=15&!variable.wingleader_force_timings&(time%240<=190&time%240>=3)||boss&fight_remains<=30'.\n\nThe import for 'precombat' required some automated changes.\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 12: Converted 'trinket.1.is.flarendos_pilot_light' to 'trinket.t1.is.flarendos_pilot_light' (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 13: Converted 'trinket.2.is.flarendos_pilot_light' to 'trinket.t2.is.flarendos_pilot_light' (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 'trinket.2.is.flarendos_pilot_light' to 'trinket.t2.is.flarendos_pilot_light' (1x).\nLine 3: Converted 'trinket.1.is.flarendos_pilot_light' to 'trinket.t1.is.flarendos_pilot_light' (1x).\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (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.is.spymasters_web' to 'trinket.t2.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 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.up' to 'trinket.t2.cooldown.up' (1x).\nLine 6: Converted 'trinket.2.cooldown.up' to 'trinket.t2.cooldown.up'.\nLine 6: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 7: Converted 'trinket.1.cooldown.up' to 'trinket.t1.cooldown.up' (1x).\nLine 7: Converted 'trinket.1.cooldown.up' to 'trinket.t1.cooldown.up'.\nLine 7: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 7: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 8: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (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 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.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (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 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 10: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (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 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 11: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (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'.\n\nImported 6 action lists.\n",
|
|
["author"] = "Saeldur (Icy-Veins); SimC",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/evoker_augmentation.simc\n## Up to date with SimC: April 12 2025 - 72033f9\n\nactions.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)&(!trinket.1.is.flarendos_pilot_light)\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)&(!trinket.2.is.flarendos_pilot_light)\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=set,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&talent.breath_of_eons||cooldown.deep_breath.remains<8&!talent.breath_of_eons)&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)&(solo&buff.prescience.remains<gcd.max*2||active_dot.prescience<active_allies)&(!talent.anachronism||buff.essence_burst.stack<buff.essence_burst.max_stack||time<=10)\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)&(!talent.anachronism||buff.essence_burst.stack<buff.essence_burst.max_stack||time<=5)\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+=/ebon_might,if=(buff.ebon_might_self.remains-action.ebon_might.cast_time)<=buff.ebon_might_self.duration*variable.ebon_might_pandemic_threshold&(variable.eons_remains>0||!talent.breath_of_eons&cooldown.deep_breath.remains>0||talent.overlord&!talent.breath_of_eons&cooldown.deep_breath.up)&(!buff.imminent_destruction.up||buff.ebon_might_self.remains<=gcd.max)\nactions+=/call_action_list,name=items\nactions+=/run_action_list,name=opener_filler,if=variable.opener_delay>0&boss\n## [Syrif] - Don't actually recommend the lust\n## actions+=/fury_of_the_aspects,if=talent.time_convergence&!buff.time_convergence_intellect.up&(essence>=2||buff.essence_burst.react)\nactions+=/tip_the_scales,if=talent.threads_of_fate&(prev_gcd.1.breath_of_eons||prev_gcd.1.deep_breath||boss&fight_remains<=30)\nactions+=/call_action_list,name=fb,if=empowering.fire_breath||((raid_event.adds.remains>13||raid_event.adds.in>20||evoker.allied_cds_up>0||!raid_event.adds.exists)&(variable.eons_remains>=variable.hold_empower_for||!talent.breath_of_eons||variable.eons_remains=0)&(!talent.overlord||active_enemies=1||talent.breath_of_eons||cooldown.deep_breath.remains<=gcd.max||cooldown.deep_breath.remains>=25))\nactions+=/deep_breath,if=talent.overlord&buff.mass_eruption_stacks.up||!talent.overlord||!talent.mass_eruption||active_enemies=1\nactions+=/upheaval,empower_to=1,if=empowering.upheaval||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||!talent.breath_of_eons&talent.overlord&active_enemies>1&cooldown.deep_breath.up&!buff.mass_eruption_stacks.up)&(cooldown.breath_of_eons.remains>=variable.hold_empower_for||!talent.breath_of_eons||talent.wingleader&cooldown.breath_of_eons.remains>=variable.hold_empower_for)&(buff.essence_burst.stack<buff.essence_burst.max_stack||!set_bonus.tww2_4pc&!talent.rockfall||!buff.essence_burst.up)\nactions+=/breath_of_eons,if=talent.wingleader&fight_remains>=15&!variable.wingleader_force_timings&(time%%240<=190&time%%240>=3)||boss&fight_remains<=30\nactions+=/breath_of_eons,if=((cooldown.ebon_might.remains<=4||buff.ebon_might_self.up)&fight_remains>15||boss&fight_remains<30)||boss&evoker.allied_cds_up>0||boss&fight_remains<=15&(talent.imminent_destruction||talent.melt_armor)\nactions+=/breath_of_eons,if=evoker.allied_cds_up>0&((cooldown.ebon_might.remains<=4||buff.ebon_might_self.up)&fight_remains>15||boss&fight_remains<30)&!boss\nactions+=/variable,name=fire_breath_cdr,value=cooldown.fire_breath.remains>?20\nactions+=/variable,name=upheaval_cdr,value=cooldown.upheaval.remains>?20\nactions+=/time_skip,if=variable.fire_breath_cdr+variable.upheaval_cdr>=30&(cooldown.breath_of_eons.remains>=20&talent.breath_of_eons||!talent.breath_of_eons&cooldown.deep_breath.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)\n## [Syrif] - Don't recommend these utility spells for a self buff\n## actions+=/time_spiral,if=talent.time_convergence&!buff.time_convergence_intellect.up&(essence>=2||buff.essence_burst.react) \n## actions+=/oppressing_roar,if=talent.time_convergence&!buff.time_convergence_intellect.up&(essence>=2||buff.essence_burst.react)\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&(buff.imminent_destruction.up||essence.deficit<=2||buff.essence_burst.up||variable.ebon_might_pandemic_threshold>0)\nactions+=/blistering_scales,if=active_dot.blistering_scales=0&buff.ebon_might_self.down\nactions+=/run_action_list,name=filler\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=max,cycle_targets=1,if=fight_remains>4&talent.font_of_magic&(buff.ebon_might_self.remains>cast_time)||empowering.fire_breath\nactions.fb+=/fire_breath,empower_to=3,cycle_targets=1,if=fight_remains>8&(talent.font_of_magic&set_bonus.tww2_2pc&talent.molten_embers)\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=flarendos_pilot_light,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&trinket.2.is.flarendos_pilot_light||!variable.trinket_2_buffs&!variable.trinket_2_manual&trinket.1.is.flarendos_pilot_light\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||!talent.breath_of_eons&buff.ebon_might_self.up&active_enemies>=1)||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||!talent.breath_of_eons&buff.ebon_might_self.up&active_enemies>=1)||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||!talent.breath_of_eons||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||!talent.breath_of_eons||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||!talent.breath_of_eons||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||!talent.breath_of_eons||trinket.1.cooldown.duration=0||variable.trinket_1_exclude)&(!variable.trinket_2_ogcd_cast)\nactions.items+=/use_item,name=bestinslots,use_off_gcd=1,if=buff.ebon_might_self.up\n# Use on use weapons\nactions.items+=/use_item,slot=main_hand,use_off_gcd=1,if=gcd.remains>=gcd.max*0.6&!equipped.bestinslots\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"] = 20250319,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-03-19: SimC Update c8cb5fc\n\n2025-03-14: Add missing change from previous SimC update\n\n2025-03-10: SimC update, add barb shot opener option\n\n2025-02-28: TWW Season 2 update\n\n2025-02-17: Preliminary 11.1 APL\n\n2024-11-03: SimC updates\n\n2024-10-26: SimC updates\n\n2024-10-23: 11.0.5\n\n2024-09-22: SimC update\n\n2024-08-22: SimC update\n\n2024-08-01: Respect Hunter's Mark setting\n\n2024-07-27: Add Call of the Wild talent checks; use Counter Shot; use Hunter's Mark\n\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "counter_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "tranquilizing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.health_pct < pet_healing",
|
|
["action"] = "mend_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies < 2 || ! talent.beast_cleave.enabled & active_enemies < 3",
|
|
["list_name"] = "st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies > 2 || talent.beast_cleave.enabled & active_enemies > 1",
|
|
["list_name"] = "cleave",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "summon_pet",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! trinket.t2.has_cooldown || trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff || ! trinket.t1.is.mirror_of_fractured_tomorrows & ( trinket.t2.is.mirror_of_fractured_tomorrows || trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) ) || ! trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) )",
|
|
["var_name"] = "trinket_1_stronger",
|
|
["description"] = "Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! variable.trinket_1_stronger",
|
|
["var_name"] = "trinket_2_stronger",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "[Syrif] - Lets users choose whether to follow guide behaviour or sim behaviour",
|
|
["criteria"] = "settings.barbed_shot_opener",
|
|
["action"] = "barbed_shot",
|
|
},
|
|
},
|
|
["cleave"] = {
|
|
{
|
|
["action"] = "bestial_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.huntmasters_call.enabled & buff.huntmasters_call.stack = 2",
|
|
["action"] = "dire_beast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.beast_cleave.remains & buff.withering_fire.up",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "full_recharge_time < gcd.max || charges_fractional >= cooldown.kill_command.charges_fractional || talent.call_of_the_wild.enabled & cooldown.call_of_the_wild.ready || howl_summon.ready & full_recharge_time < 8",
|
|
["action"] = "barbed_shot",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.beast_cleave.down & ( ! talent.bloody_frenzy.enabled || cooldown.call_of_the_wild.remains )",
|
|
["action"] = "multishot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.beast_cleave.up",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["action"] = "call_of_the_wild",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodshed",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadow_hounds.enabled || talent.dire_cleave.enabled",
|
|
["action"] = "dire_beast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.thundering_hooves.enabled",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.black_arrow.enabled & ( talent.barbed_scales.enabled || talent.savagery.enabled ) || set_bonus.tww2 >= 2 || boss & fight_remains < 9",
|
|
["action"] = "barbed_shot",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus.time_to_max < gcd.max * 2 || buff.hogstrider.stack > 3",
|
|
["action"] = "cobra_shot",
|
|
},
|
|
{
|
|
["action"] = "dire_beast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( focus + focus.regen + 30 ) < focus.max",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 16",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 16",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 9",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & ! talent.bloodshed.enabled & buff.bestial_wrath.up || boss & fight_remains < 31",
|
|
["action"] = "potion",
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.huntmasters_call.enabled",
|
|
["action"] = "dire_beast",
|
|
},
|
|
{
|
|
["action"] = "bestial_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.withering_fire.up",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "full_recharge_time < gcd.max || charges_fractional >= cooldown.kill_command.charges_fractional || talent.call_of_the_wild.enabled & cooldown.call_of_the_wild.ready || howl_summon.ready & full_recharge_time < 8",
|
|
["action"] = "barbed_shot",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "call_of_the_wild",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodshed",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "kill_command",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "black_arrow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.thundering_hooves.enabled",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["action"] = "cobra_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "dire_beast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "arcane_pulse",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( focus + focus.regen + 15 ) < focus.max",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.call_of_the_wild.enabled & ( prev_gcd.1.call_of_the_wild ) || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ( ! talent.call_of_the_wild.enabled & ! talent.bloodshed.enabled ) & ( buff.bestial_wrath.up || cooldown.bestial_wrath.remains_guess < 5 )",
|
|
["var_name"] = "sync_ready",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.call_of_the_wild.enabled & buff.call_of_the_wild.up || talent.bloodshed.enabled & prev_gcd.1.bloodshed || ( ! talent.call_of_the_wild.enabled & ! talent.bloodshed.enabled ) & buff.bestial_wrath.up",
|
|
["var_name"] = "sync_active",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "sync_remains",
|
|
["value"] = "cooldown.bestial_wrath.remains_guess",
|
|
["value_else"] = "cooldown.call_of_the_wild.remains || cooldown.bloodshed.remains",
|
|
["criteria"] = "! talent.call_of_the_wild.enabled & ! talent.bloodshed.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "trinket.t1.has_use_buff & ( variable.sync_ready & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) || ! variable.sync_ready & ( variable.trinket_1_stronger & ( variable.sync_remains > trinket.t1.cooldown.duration / 3 & boss & fight_remains > trinket.t1.cooldown.duration + 20 || trinket.t2.has_use_buff & trinket.t2.cooldown.remains > variable.sync_remains - 15 & trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 45 > fight_remains & boss ) || variable.trinket_2_stronger & ( trinket.t2.cooldown.remains & ( trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains >= 20 || trinket.t2.cooldown.remains - 5 >= variable.sync_remains & ( variable.sync_remains > trinket.t1.cooldown.duration / 3 || trinket.t1.cooldown.duration < fight_remains & boss & ( variable.sync_remains + trinket.t1.cooldown.duration > fight_remains ) ) ) || trinket.t2.cooldown.ready & variable.sync_remains > 20 & variable.sync_remains < trinket.t2.cooldown.duration / 3 ) ) ) || ! trinket.t1.has_use_buff & ( trinket.t1.cast_time = 0 || ! variable.sync_active ) & ( ! trinket.t2.has_use_buff & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) || trinket.t2.has_use_buff & ( ! variable.sync_active & variable.sync_remains > 20 || trinket.t2.cooldown.remains > 20 ) ) || boss & fight_remains < 25 & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "trinket.t2.has_use_buff & ( variable.sync_ready & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) || ! variable.sync_ready & ( variable.trinket_2_stronger & ( variable.sync_remains > trinket.t2.cooldown.duration / 3 & boss & fight_remains > trinket.t2.cooldown.duration + 20 || trinket.t1.has_use_buff & trinket.t1.cooldown.remains > variable.sync_remains - 15 & trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 45 > fight_remains & boss ) || variable.trinket_1_stronger & ( trinket.t1.cooldown.remains & ( trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains >= 20 || trinket.t1.cooldown.remains - 5 >= variable.sync_remains & ( variable.sync_remains > trinket.t2.cooldown.duration / 3 || trinket.t2.cooldown.duration < fight_remains & boss & ( variable.sync_remains + trinket.t2.cooldown.duration > fight_remains ) ) ) || trinket.t1.cooldown.ready & variable.sync_remains > 20 & variable.sync_remains < trinket.t1.cooldown.duration / 3 ) ) ) || ! trinket.t2.has_use_buff & ( trinket.t2.cast_time = 0 || ! variable.sync_active ) & ( ! trinket.t1.has_use_buff & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) || trinket.t1.has_use_buff & ( ! variable.sync_active & variable.sync_remains > 20 || trinket.t1.cooldown.remains > 20 ) ) || boss & fight_remains < 25 & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains )",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250319,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 7: Converted 'talent.beast_cleave' to 'talent.beast_cleave.enabled' (1x).\nLine 8: Converted 'talent.beast_cleave' to 'talent.beast_cleave.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\n\nThe import for 'trinkets' required some automated changes.\nLine 1: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 1: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 1: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 1: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 2: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 2: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 2: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 2: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 3: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 3: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted operations in 'trinket.t1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.t1.cooldown.duration%3&boss&fight_remains>trinket.t1.cooldown.duration+20||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-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).\nLine 5: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 1: Converted 'talent.huntmasters_call' to 'talent.huntmasters_call.enabled' (1x).\nLine 4: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 9: Converted 'talent.thundering_hooves' to 'talent.thundering_hooves.enabled' (1x).\n\nThe import for 'cleave' required some automated changes.\nLine 2: Converted 'talent.huntmasters_call' to 'talent.huntmasters_call.enabled' (1x).\nLine 4: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 5: Converted 'talent.bloody_frenzy' to 'talent.bloody_frenzy.enabled' (1x).\nLine 9: Converted 'talent.shadow_hounds' to 'talent.shadow_hounds.enabled' (1x).\nLine 9: Converted 'talent.dire_cleave' to 'talent.dire_cleave.enabled' (1x).\nLine 10: Converted 'talent.thundering_hooves' to 'talent.thundering_hooves.enabled' (1x).\nLine 12: Converted 'talent.black_arrow' to 'talent.black_arrow.enabled' (1x).\nLine 12: Converted 'talent.barbed_scales' to 'talent.barbed_scales.enabled' (1x).\nLine 12: Converted 'talent.savagery' to 'talent.savagery.enabled' (1x).\n\nImported 6 action lists.\n",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/hunter_beast_mastery.simc\n## Up to date with SimC: March 18 2025 - c8cb5fc\n\nactions.precombat+=/summon_pet\n# Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.\nactions.precombat+=/variable,name=trinket_1_stronger,value=!trinket.2.has_cooldown||trinket.1.has_use_buff&(!trinket.2.has_use_buff||!trinket.1.is.mirror_of_fractured_tomorrows&(trinket.2.is.mirror_of_fractured_tomorrows||trinket.2.cooldown.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\n# [Syrif] - Lets users choose whether to follow guide behaviour or sim behaviour\nactions.precombat+=/barbed_shot,if=settings.barbed_shot_opener\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&!talent.bloodshed&buff.bestial_wrath.up||boss&fight_remains<31\n\nactions.cleave+=/bestial_wrath\nactions.cleave+=/dire_beast,if=talent.huntmasters_call&buff.huntmasters_call.stack=2\nactions.cleave+=/black_arrow,if=buff.beast_cleave.remains&buff.withering_fire.up\nactions.cleave+=/barbed_shot,cycle_targets=1,if=full_recharge_time<gcd||charges_fractional>=cooldown.kill_command.charges_fractional||talent.call_of_the_wild&cooldown.call_of_the_wild.ready||howl_summon.ready&full_recharge_time<8\nactions.cleave+=/multishot,if=buff.beast_cleave.down&(!talent.bloody_frenzy||cooldown.call_of_the_wild.remains)\nactions.cleave+=/black_arrow,if=buff.beast_cleave.up\nactions.cleave+=/call_of_the_wild\nactions.cleave+=/bloodshed\nactions.cleave+=/dire_beast,if=talent.shadow_hounds||talent.dire_cleave\nactions.cleave+=/explosive_shot,if=talent.thundering_hooves\nactions.cleave+=/kill_command,cycle_targets=1\nactions.cleave+=/barbed_shot,cycle_targets=1,if=buff.call_of_the_wild.up||talent.black_arrow&(talent.barbed_scales||talent.savagery)||set_bonus.tww2>=2||boss&fight_remains<9\nactions.cleave+=/lights_judgment,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.cleave+=/cobra_shot,if=focus.time_to_max<gcd*2||buff.hogstrider.stack>3\nactions.cleave+=/dire_beast\nactions.cleave+=/explosive_shot\nactions.cleave+=/bag_of_tricks,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.cleave+=/arcane_torrent,if=(focus+focus.regen+30)<focus.max\n\nactions.st+=/dire_beast,if=talent.huntmasters_call\nactions.st+=/bestial_wrath\nactions.st+=/black_arrow,if=buff.withering_fire.up\nactions.st+=/barbed_shot,cycle_targets=1,if=full_recharge_time<gcd||charges_fractional>=cooldown.kill_command.charges_fractional||talent.call_of_the_wild&cooldown.call_of_the_wild.ready||howl_summon.ready&full_recharge_time<8\nactions.st+=/call_of_the_wild\nactions.st+=/bloodshed\nactions.st+=/kill_command\nactions.st+=/black_arrow\nactions.st+=/explosive_shot,if=talent.thundering_hooves\nactions.st+=/lights_judgment,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/cobra_shot\nactions.st+=/dire_beast\nactions.st+=/bag_of_tricks,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/arcane_pulse,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/arcane_torrent,if=(focus+focus.regen+15)<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/blob/thewarwithin/ActionPriorityLists/rogue_assassination.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250412,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-04-12: Something something time travelling variables\n2025-04-08: Sync with SimC\n2025-03-25: Sync with SimC\n2025-03-25: Sync with SimC\n2025-03-14: Sync with SimC (new trinket line)\n2025-03-08: Sync with SimC\n2025-03-01: Sync with SimC",
|
|
["lists"] = {
|
|
["stealthed"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
["description"] = "Stealthed Actions",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! debuff.deathstalkers_mark.up & talent.deathstalkers_mark.enabled & combo_points < variable.effective_spend_cp & ( dot.rupture.ticking || variable.single_target || ! talent.subterfuge.enabled )",
|
|
["action"] = "ambush",
|
|
["description"] = "Apply Deathstalkers Mark if it has fallen off or waiting for Rupture in AoE",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.kingsbane.enabled & dot.kingsbane.ticking & dot.kingsbane.remains < 8 & ( ! 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 || buff.darkest_night.up & combo_points = 7 )",
|
|
["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 & variable.single_target & ( debuff.deathstalkers_mark.up || buff.cold_blood.up || buff.darkest_night.up & combo_points = 7 )",
|
|
["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"] = "stealthed.improved_garrote & ( remains < 12 || pmultiplier <= 1 || ( buff.indiscriminate_carnage.up & active_dot.garrote < spell_targets.fan_of_knives ) ) & ! variable.single_target & target.time_to_die - remains > 2 & combo_points.deficit > 2 - buff.darkest_night.up * 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 & debuff.deathmark.up & dot.kingsbane.remains <= 6 + 3 * talent.subterfuge.rank",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points >= variable.effective_spend_cp & refreshable & pmultiplier <= persistent_multiplier & ! buff.darkest_night.up & ! talent.amplifying_poison.enabled",
|
|
["action"] = "crimson_tempest",
|
|
["description"] = "Maintain Crimson Tempest unless it would remove a stronger cast",
|
|
},
|
|
},
|
|
["shiv"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! debuff.shiv.up & dot.garrote.ticking & dot.rupture.ticking & spell_targets.fan_of_knives <= 5",
|
|
["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 & ! debuff.shiv.up & dot.garrote.ticking & dot.rupture.ticking & spell_targets.fan_of_knives >= 4 & dot.crimson_tempest.ticking & ( target.health.pct <= 35 & talent.zoldyck_recipe.enabled || cooldown.shiv.charges_fractional >= 1.9 )",
|
|
["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"] = "buff.darkest_night.up & combo_points >= variable.effective_spend_cp & buff.lingering_darkness.up",
|
|
["action"] = "shiv",
|
|
["description"] = "Shiv for big Darkest Night Envenom during Lingering Darkness",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.lightweight_shiv.enabled & variable.shiv_kingsbane_condition & ( dot.kingsbane.ticking & dot.kingsbane.remains < 8 || cooldown.kingsbane.remains <= 1 & cooldown.shiv.charges_fractional >= 1.7 )",
|
|
["action"] = "shiv",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.deathmark.up & talent.arterial_precision.enabled & ! debuff.shiv.up & dot.garrote.ticking & dot.rupture.ticking",
|
|
["action"] = "shiv",
|
|
["description"] = "Fallback shiv for arterial during deathmark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! debuff.deathmark.up & ! talent.kingsbane.enabled & variable.shiv_condition & ( dot.crimson_tempest.ticking || talent.amplifying_poison.enabled ) & ( ( ( talent.lightweight_shiv.enabled + 1 ) - cooldown.shiv.charges_fractional ) * 30 < cooldown.deathmark.remains ) & raid_event.adds.in > 20",
|
|
["action"] = "shiv",
|
|
["description"] = "Fallback if no special cases apply",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
{
|
|
["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"] = "debuff.deathmark.up",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
},
|
|
["aoe_dot"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "combo_points >= variable.effective_spend_cp",
|
|
["description"] = "AoE Damage over time abilities 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",
|
|
},
|
|
{
|
|
["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 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 > ( 7 + ( talent.dashing_scoundrel.enabled * 5 ) + ( variable.regen_saturated * 6 ) ) & ! buff.darkest_night.up",
|
|
["description"] = "Rupture upkeep in AoE to reach energy/scent saturation or to spread for damage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rupture",
|
|
["criteria"] = "variable.dot_finisher_condition & refreshable & ( ! dot.kingsbane.ticking || buff.cold_blood.up ) & variable.regen_saturated & target.time_to_die > ( 7 + ( talent.dashing_scoundrel.enabled * 5 ) + ( variable.regen_saturated * 6 ) ) & ! 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 & ! cooldown.deathmark.ready || dot.deathmark.ticking || boss & fight_remains <= 22",
|
|
["description"] = "Special Case Trinkets",
|
|
["var_name"] = "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,
|
|
["name"] = "junkmaestros_mega_magnet",
|
|
["action"] = "junkmaestros_mega_magnet",
|
|
["criteria"] = "cooldown.deathmark.remains >= 30 & ! dot.deathmark.ticking & ! debuff.shiv.up & ( ! talent.deathstalkers_mark.enabled || buff.lingering_darkness.up & buff.junkmaestros_mega_magnet.stack > 5 ) || boss & fight_remains <= 10",
|
|
},
|
|
{
|
|
["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 || dot.kingsbane.ticking ) || ( variable.trinket_sync_slot = 2 & ! trinket.t2.cooldown.ready & cooldown.deathmark.remains > 20 ) ) || ! variable.trinket_sync_slot || boss & fight_remains <= 20",
|
|
["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 || dot.kingsbane.ticking ) || ( variable.trinket_sync_slot = 1 & ! trinket.t1.cooldown.ready & cooldown.deathmark.remains > 20 ) ) || ! variable.trinket_sync_slot || boss & fight_remains <= 20",
|
|
},
|
|
},
|
|
["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"] = "active_enemies = 1",
|
|
["description"] = "Pooling Setup, check for cooldowns",
|
|
["var_name"] = "single_target",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "dot.kingsbane.ticking || debuff.shiv.up",
|
|
["var_name"] = "in_cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.kingsbane.enabled & 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 || buff.darkest_night.up || ( energy.pct >= ( 80 - 10 * talent.vicious_venoms.rank - 30 * talent.amplifying_poison.enabled ) ) || ( charges_fractional > 1.8 || boss ) & fight_remains <= 20",
|
|
["description"] = "Pooling Condition all together - [Syrif] - This is where upper_limit_energy is written out",
|
|
["var_name"] = "not_pooling",
|
|
},
|
|
{
|
|
["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,
|
|
["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",
|
|
["var_name"] = "trinket_sync_slot",
|
|
["criteria"] = "trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff || trinket.t1.cooldown.duration >= trinket.t2.cooldown.duration ) & ! trinket.t2.is.treacherous_transmitter || trinket.t1.is.treacherous_transmitter || trinket.t1.is.house_of_cards",
|
|
["description"] = "Check which trinket slots have Stat Values",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["criteria"] = "trinket.t2.has_use_buff & ( ! trinket.t1.has_use_buff || trinket.t2.cooldown.duration > trinket.t1.cooldown.duration ) & ! trinket.t1.is.treacherous_transmitter || trinket.t2.is.treacherous_transmitter || trinket.t2.is.house_of_cards",
|
|
["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 )",
|
|
["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"] = "( buff.clear_the_witnesses.up & ( spell_targets.fan_of_knives >= 2 - ( buff.lingering_darkness.up || ! talent.vicious_venoms.enabled ) ) ) || ( spell_targets.fan_of_knives >= 3 - ( talent.momentum_of_despair.enabled & talent.thrown_precision.enabled ) + talent.vicious_venoms.enabled + talent.blindside.enabled )",
|
|
["description"] = "Check if we should be using a filler",
|
|
["var_name"] = "fok_target_count",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "combo_points <= variable.effective_spend_cp & ! variable.cd_soon || variable.not_pooling || active_enemies > 1",
|
|
["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"] = "buff.darkest_night.up & combo_points = 6 & ( ! talent.vicious_venoms.enabled || spell_targets.fan_of_knives >= 2 )",
|
|
["action"] = "fan_of_knives",
|
|
["description"] = "Fan of Knives at 6cp for Darkest Night",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.use_filler & ! toggle.funnel & variable.fok_target_count",
|
|
["action"] = "fan_of_knives",
|
|
["description"] = "Fan of Knives at 3+ targets, accounting for various edge cases",
|
|
},
|
|
{
|
|
["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 if not using Fan of Knives",
|
|
},
|
|
{
|
|
["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"] = "cooldown.kingsbane.remains <= 2 & buff.envenom.up",
|
|
["var_name"] = "deathmark_kingsbane_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "dot.rupture.ticking & ( variable.deathmark_kingsbane_condition || spell_targets.fan_of_knives > 1 & buff.slice_and_dice.remains > 5 || ! talent.kingsbane.enabled & dot.crimson_tempest.ticking ) & ! debuff.deathmark.up & variable.deathmark_ma_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 || spell_targets.fan_of_knives > 1 ) & ( cooldown.deathmark.remains >= 50 || dot.deathmark.ticking ) || boss & fight_remains <= 15",
|
|
["action"] = "kingsbane",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.thistle_tea.up & debuff.shiv.remains >= 6 || ! buff.thistle_tea.up & dot.kingsbane.ticking & dot.kingsbane.remains <= 6 || ! buff.thistle_tea.up & fight_remains <= cooldown.thistle_tea.charges * 6",
|
|
["action"] = "thistle_tea",
|
|
["description"] = "Use with shiv or in niche cases at the end of Kingsbane if not already up",
|
|
},
|
|
{
|
|
["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"] = 20250412,
|
|
["warnings"] = "The import for 'items' required some automated changes.\nLine 7: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 7: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 8: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 8: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\n\nThe import for 'precombat' required some automated changes.\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.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.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 2: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 2: Converted 'trinket.1.is.house_of_cards' to 'trinket.t1.is.house_of_cards' (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.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 3: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 3: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 3: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 3: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 3: Converted 'trinket.2.is.house_of_cards' to 'trinket.t2.is.house_of_cards' (1x).\n\nImported 11 action lists.\n",
|
|
["spec"] = 259,
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/rogue_assassination.simc\n## Up to date with SimC: April 7 2025 - 0307d7f\n\nactions.precombat+=/apply_poison\n# Check which trinket slots have Stat Values\nactions.precombat+=/variable,name=trinket_sync_slot,value=1,if=trinket.1.has_use_buff&(!trinket.2.has_use_buff||trinket.1.cooldown.duration>=trinket.2.cooldown.duration)&!trinket.2.is.treacherous_transmitter||trinket.1.is.treacherous_transmitter||trinket.1.is.house_of_cards\nactions.precombat+=/variable,name=trinket_sync_slot,value=2,if=trinket.2.has_use_buff&(!trinket.1.has_use_buff||trinket.2.cooldown.duration>trinket.1.cooldown.duration)&!trinket.1.is.treacherous_transmitter||trinket.2.is.treacherous_transmitter||trinket.2.is.house_of_cards\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=single_target,value=active_enemies=1\nactions+=/variable,name=in_cooldowns,value=dot.kingsbane.ticking||debuff.shiv.up\n## [Syrif] - This variable is flattened into variable.not_pooling to ensure timeliness\n## actions+=/variable,name=upper_limit_energy,value=energy.pct>=(80-10*talent.vicious_venoms.rank-30*talent.amplifying_poison)\n# Checking for cooldowns soon\nactions+=/variable,name=cd_soon,value=talent.kingsbane&cooldown.kingsbane.remains<3&!cooldown.kingsbane.ready\n# Pooling Condition all together - [Syrif] - This is where upper_limit_energy is written out\nactions+=/variable,name=not_pooling,value=variable.in_cooldowns||buff.darkest_night.up||(energy.pct>=(80-10*talent.vicious_venoms.rank-30*talent.amplifying_poison))||(charges_fractional>1.8||boss)&fight_remains<=20\n## Check what the maximum Scent of Blood stacks is currently\n## actions+=/variable,name=scent_effective_max_stacks,value=(spell_targets.fan_of_knives*talent.scent_of_blood.rank*2)>?20\n# We are Scent Saturated when our stack count is hitting the maximum\nactions+=/variable,name=scent_saturation,value=buff.scent_of_blood.stack>=((spell_targets.fan_of_knives*talent.scent_of_blood.rank*2)>?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# AoE Damage over time abilities Helper Variable to check basic finisher conditions\nactions.aoe_dot+=/variable,name=dot_finisher_condition,value=combo_points>=variable.effective_spend_cp\n# Crimson Tempest on 2+ Targets\nactions.aoe_dot+=/crimson_tempest,if=spell_targets>=2&variable.dot_finisher_condition&refreshable&target.time_to_die-remains>6\n# Garrote upkeep 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 in AoE to reach energy/scent saturation or to spread for damage\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>(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&target.time_to_die>(7+(talent.dashing_scoundrel*5)+(variable.regen_saturated*6))&!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=cooldown.kingsbane.remains<=2&buff.envenom.up\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=dot.rupture.ticking&(variable.deathmark_kingsbane_condition||spell_targets.fan_of_knives>1&buff.slice_and_dice.remains>5||!talent.kingsbane&dot.crimson_tempest.ticking)&!debuff.deathmark.up&variable.deathmark_ma_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||spell_targets.fan_of_knives>1)&(cooldown.deathmark.remains>=50||dot.deathmark.ticking)||boss&fight_remains<=15\n# Use with shiv or in niche cases at the end of Kingsbane if not already up\nactions.cds+=/thistle_tea,if=!buff.thistle_tea.up&debuff.shiv.remains>=6||!buff.thistle_tea.up&dot.kingsbane.ticking&dot.kingsbane.remains<=6||!buff.thistle_tea.up&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# Maintain Crimson Tempest unless it would remove a stronger cast\nactions.core_dot+=/crimson_tempest,if=combo_points>=variable.effective_spend_cp&refreshable&pmultiplier<=persistent_multiplier&!buff.darkest_night.up&!talent.amplifying_poison\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)\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=fok_target_count,value=(buff.clear_the_witnesses.up&(spell_targets.fan_of_knives>=2-(buff.lingering_darkness.up||!talent.vicious_venoms)))||(spell_targets.fan_of_knives>=3-(talent.momentum_of_despair&talent.thrown_precision)+talent.vicious_venoms+talent.blindside)\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 6cp for Darkest Night\nactions.direct+=/fan_of_knives,if=buff.darkest_night.up&combo_points=6&(!talent.vicious_venoms||spell_targets.fan_of_knives>=2)\n# Fan of Knives at 3+ targets, accounting for various edge cases\nactions.direct+=/fan_of_knives,if=variable.use_filler&!toggle.funnel&variable.fok_target_count\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 if not using Fan of Knives\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&!cooldown.deathmark.ready||dot.deathmark.ticking||boss&fight_remains<=22\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\nactions.items+=/use_item,name=junkmaestros_mega_magnet,if=cooldown.deathmark.remains>=30&!dot.deathmark.ticking&!debuff.shiv.up&(!talent.deathstalkers_mark||buff.lingering_darkness.up&buff.junkmaestros_mega_magnet.stack>5)||boss&fight_remains<=10\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||dot.kingsbane.ticking)||(variable.trinket_sync_slot=2&!trinket.2.cooldown.ready&cooldown.deathmark.remains>20))||!variable.trinket_sync_slot||boss&fight_remains<=20\nactions.items+=/use_items,slots=trinket2,if=(variable.trinket_sync_slot=2&(debuff.deathmark.up||dot.kingsbane.ticking)||(variable.trinket_sync_slot=1&!trinket.1.cooldown.ready&cooldown.deathmark.remains>20))||!variable.trinket_sync_slot||boss&fight_remains<=20\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=debuff.deathmark.up\n\n# Shiv conditions\nactions.shiv+=/variable,name=shiv_condition,value=!debuff.shiv.up&dot.garrote.ticking&dot.rupture.ticking&spell_targets.fan_of_knives<=5\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&!debuff.shiv.up&dot.garrote.ticking&dot.rupture.ticking&spell_targets.fan_of_knives>=4&dot.crimson_tempest.ticking&(target.health.pct<=35&talent.zoldyck_recipe||cooldown.shiv.charges_fractional>=1.9)\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)\n# Shiv for big Darkest Night Envenom during Lingering Darkness\nactions.shiv+=/shiv,if=buff.darkest_night.up&combo_points>=variable.effective_spend_cp&buff.lingering_darkness.up\nactions.shiv+=/shiv,if=talent.lightweight_shiv.enabled&variable.shiv_kingsbane_condition&(dot.kingsbane.ticking&dot.kingsbane.remains<8||cooldown.kingsbane.remains<=1&cooldown.shiv.charges_fractional>=1.7)\n# Fallback shiv for arterial during deathmark\nactions.shiv+=/shiv,if=debuff.deathmark.up&talent.arterial_precision&!debuff.shiv.up&dot.garrote.ticking&dot.rupture.ticking\n# Fallback if no special cases apply\nactions.shiv+=/shiv,if=!debuff.deathmark.up&!talent.kingsbane&variable.shiv_condition&(dot.crimson_tempest.ticking||talent.amplifying_poison)&(((talent.lightweight_shiv+1)-cooldown.shiv.charges_fractional)*30<cooldown.deathmark.remains)&raid_event.adds.in>20\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\nactions.stealthed+=/pool_resource,for_next=1\n# Apply Deathstalkers Mark if it has fallen off or waiting for Rupture in AoE\nactions.stealthed+=/ambush,if=!debuff.deathstalkers_mark.up&talent.deathstalkers_mark&combo_points<variable.effective_spend_cp&(dot.rupture.ticking||variable.single_target||!talent.subterfuge)\n# Make sure to have Shiv up during Kingsbane as a final check [Hekili] with Lightweight Shiv only\nactions.stealthed+=/shiv,if=talent.kingsbane&dot.kingsbane.ticking&dot.kingsbane.remains<8&(!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||buff.darkest_night.up&combo_points=7)\n# Envenom during Master Assassin in single target\nactions.stealthed+=/envenom,if=effective_combo_points>=variable.effective_spend_cp&buff.master_assassin_aura.up&variable.single_target&(debuff.deathstalkers_mark.up||buff.cold_blood.up||buff.darkest_night.up&combo_points=7)\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=stealthed.improved_garrote&(remains<12||pmultiplier<=1||(buff.indiscriminate_carnage.up&active_dot.garrote<spell_targets.fan_of_knives))&!variable.single_target&target.time_to_die-remains>2&combo_points.deficit>2-buff.darkest_night.up*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&debuff.deathmark.up&dot.kingsbane.remains<=6+3*talent.subterfuge.rank\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",
|
|
},
|
|
["Balance"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/druid_balance.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250506,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-05-06: SimC Sync\n2025-04-25: SimC Sync\n2025-03-30: SimC Sync\n2025-03-14: SimC Sync (trinket conditions)\n2025-03-13: Trinket fixes\n2025-03-08: Replace variables with eclipse metatable expressions\n2025-03-05: Remove bear form stuff for now\n2025-03-02: TWW Season 2 update\n2025-02-06: Revert (or edit) workarounds for wrath opener\n2024-01-25: SimC update\n2024-12-22: Spymasters improvement\n2024-11-05: SimC update (Sunfire)\n2024-10-29: Fix AOE Eclipse\n2024-10-26: SimC update, adjustments for leveling\n2024-10-23: SimC update\n2024-10-22: 11.0.5\n2024-10-06, 10-11, 10-21: SimC update\n2024-09-28, 09-29: SimC update\n2024-09-01, 09-04, 09-08, 09-10, 09-15, 09-21: SimC update\n2024-08-11: Mark of the Wild\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "solar_beam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wrath",
|
|
["description"] = "[Edited] Trigger Lunar Eclipse if we failed to precast Wrath x2",
|
|
["criteria"] = "time < 2 & eclipse.lunar_in_1",
|
|
},
|
|
{
|
|
["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",
|
|
["description"] = "VARIABLES",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.ca_inc.full_recharge_time <? 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"] = "( ! talent.whirling_stars.enabled || ! talent.convoke_the_spirits.enabled || cooldown.convoke_the_spirits.remains < gcd.max * 2 || fight_remains < cooldown.convoke_the_spirits.remains + 3 || cooldown.convoke_the_spirits.remains > cooldown.ca_inc.full_recharge_time + 15 * talent.control_of_the_dream.enabled ) & ( variable.on_use_trinket = 0 || ( variable.on_use_trinket = 1 || variable.on_use_trinket = 3 ) & ( trinket.t1.cooldown.remains > cooldown.ca_inc.full_recharge_time + ( 15 * talent.control_of_the_dream.enabled ) || ! talent.convoke_the_spirits.enabled & hero_tree.elunes_chosen & trinket.t1.cooldown.remains > cooldown.ca_inc.full_recharge_time - cooldown.ca_inc.duration || talent.convoke_the_spirits.enabled & ( cooldown.convoke_the_spirits.remains < 3 & ( ceil ( ( fight_remains - 10 ) / cooldown.convoke_the_spirits.duration ) > ceil ( ( fight_remains - trinket.t1.cooldown.remains - 10 ) / cooldown.convoke_the_spirits.duration ) ) || cooldown.convoke_the_spirits.remains > trinket.t1.cooldown.remains & cooldown.ca_inc.full_recharge_time - cooldown.ca_inc.duration < trinket.t1.cooldown.remains + 15 ) || trinket.t1.cooldown.remains + 6 > fight_remains || trinket.t1.cooldown.ready ) || variable.on_use_trinket = 2 & ( trinket.t2.cooldown.remains > cooldown.ca_inc.full_recharge_time + ( 15 * talent.control_of_the_dream.enabled ) || ! talent.convoke_the_spirits.enabled & hero_tree.elunes_chosen & trinket.t1.cooldown.remains > cooldown.ca_inc.full_recharge_time - cooldown.ca_inc.duration || talent.convoke_the_spirits.enabled & ( cooldown.convoke_the_spirits.remains < 3 & ( ceil ( ( fight_remains - 10 ) / cooldown.convoke_the_spirits.duration ) > ceil ( ( fight_remains - trinket.t2.cooldown.remains - 10 ) / cooldown.convoke_the_spirits.duration ) ) || cooldown.convoke_the_spirits.remains > trinket.t2.cooldown.remains & cooldown.ca_inc.full_recharge_time - cooldown.ca_inc.duration < trinket.t2.cooldown.remains + 15 ) || trinket.t2.cooldown.remains + 6 > fight_remains || trinket.t2.cooldown.ready ) ) & cooldown.ca_inc.remains < gcd.max & ! buff.ca_inc.up",
|
|
["var_name"] = "pre_cd_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.pre_cd_condition & ( fight_remains < ( 15 + 5 * talent.incarnation_chosen_of_elune.enabled ) * ( 1 - talent.whirling_stars.enabled * 0.2 ) || target.time_to_die > 10 & ( ! hero_tree.keeper_of_the_grove || buff.harmony_of_the_grove.up ) )",
|
|
["var_name"] = "cd_condition",
|
|
},
|
|
{
|
|
["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,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.lunar_calling.enabled || spell_targets.starfire > 3 - ( talent.umbral_intensity.rank || talent.soul_of_the_forest.enabled )",
|
|
["var_name"] = "enter_lunar",
|
|
["description"] = "[Syrif] - Variable replaced with eclipse metatable expression",
|
|
},
|
|
{
|
|
["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,
|
|
["name"] = "spymasters_web",
|
|
["action"] = "spymasters_web",
|
|
["criteria"] = "variable.cd_condition & ( buff.spymasters_report.stack > 29 || boss & fight_remains < cooldown.ca_inc.duration ) || boss & fight_remains < 20",
|
|
["description"] = "ITEMS",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "treacherous_transmitter",
|
|
["criteria"] = "( ( cooldown.force_of_nature.remains < 3 & ( trinket.t1.is.spymasters_web || trinket.t2.is.spymasters_web ) & buff.spymasters_report.stack >= 29 ) || ( cooldown.convoke_the_spirits.remains < 2 & cooldown.ca_inc.ready & cooldown.force_of_nature.remains < 3 & buff.spymasters_report.stack <= 29 || fight_remains < 20 || fight_remains < variable.ca_effective_cd & ( buff.harmony_of_the_grove.up || cooldown.convoke_the_spirits.ready ) ) )",
|
|
["name"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.no_cd_talent || boss & 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 & variable.ca_effective_cd > 20 || variable.on_use_trinket = 0",
|
|
["var_name"] = "generic_trinket_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! trinket.t1.is.spymasters_web & ! trinket.t1.is.imperfect_ascendancy_serum & ! trinket.t1.is.treacherous_transmitter & ! trinket.t1.is.soulletting_ruby & ( variable.on_use_trinket != 1 & variable.on_use_trinket != 3 & trinket.t2.cooldown.remains > 20 || boss & fight_remains < ( 20 + 20 * ( trinket.t2.has_use & trinket.t2.cooldown.remains < 25 ) ) || variable.generic_trinket_condition )",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! trinket.t2.is.spymasters_web & ! trinket.t2.is.imperfect_ascendancy_serum & ! trinket.t2.is.treacherous_transmitter & ! trinket.t2.is.soulletting_ruby & ( variable.on_use_trinket < 2 & trinket.t1.cooldown.remains > 20 || variable.on_use_trinket = 3 & trinket.t1.cooldown.remains > 20 & ( ! hero_tree.keeper_of_the_grove || buff.harmony_of_the_grove.up || ceil ( ( fight_remains - 15 ) / trinket.t2.cooldown.duration ) > ceil ( ( fight_remains - cooldown.force_of_nature.remains - 15 ) / trinket.t2.cooldown.duration ) ) || boss & fight_remains < ( 20 + 20 * ( trinket.t1.has_use & trinket.t1.cooldown.remains < 25 ) ) || variable.generic_trinket_condition )",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "bestinslots",
|
|
["criteria"] = "hero_tree.keeper_of_the_grove & buff.harmony_of_the_grove.up || hero_tree.elunes_chosen & ( cooldown.ca_inc.full_recharge_time > 20 || buff.ca_inc.up )",
|
|
["name"] = "bestinslots",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["criteria"] = "variable.on_use_trinket = 1 & ! trinket.t1.cooldown.ready & ( buff.harmony_of_the_grove.up || hero_tree.elunes_chosen ) || ! trinket.t1.has_use_buff & ( buff.harmony_of_the_grove.up || hero_tree.elunes_chosen )",
|
|
["name"] = "neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["criteria"] = "variable.on_use_trinket = 2 & ! trinket.t2.cooldown.ready & ( buff.harmony_of_the_grove.up || hero_tree.elunes_chosen ) || ! trinket.t2.has_use_buff & ( buff.harmony_of_the_grove.up || hero_tree.elunes_chosen )",
|
|
["name"] = "neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains <= 30",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.no_cd_talent || boss & fight_remains < 15",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["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",
|
|
["var_name"] = "on_use_trinket",
|
|
["value"] = "1",
|
|
["value_else"] = "0",
|
|
["criteria"] = "trinket.t1.has_use_buff & ! trinket.t1.is.ovinaxs_mercurial_egg & ! trinket.t1.is.spymasters_web",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "on_use_trinket",
|
|
["value"] = "2",
|
|
["value_else"] = "0",
|
|
["criteria"] = "trinket.t2.has_use_buff & ! trinket.t2.is.ovinaxs_mercurial_egg & ! trinket.t2.is.spymasters_web",
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "wrath",
|
|
["description"] = "[edited] This handles the wrath opener based on the state of eclipse",
|
|
["criteria"] = "eclipse.lunar_in",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.stellar_flare.enabled & hero_tree.elunes_chosen",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["action"] = "stellar_flare",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wrath",
|
|
["description"] = "AOE",
|
|
["criteria"] = "variable.enter_lunar & eclipse.in_eclipse & eclipse.remains < cast_time & ! variable.cd_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.enter_lunar & eclipse.in_eclipse & eclipse.remains < cast_time & ! variable.cd_condition",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "astral_power.deficit <= variable.passive_asp + 6",
|
|
["action"] = "starfall",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "moonfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ( target.time_to_die - remains ) > 6 - ( spell_targets / 2 )",
|
|
["action"] = "sunfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "moonfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.enter_lunar & ( eclipse.in_none || eclipse.remains < cast_time ) & ! variable.pre_cd_condition",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.enter_lunar & ( eclipse.in_none || eclipse.remains < cast_time )",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["action"] = "stellar_flare",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.pre_cd_condition || 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 || fight_remains < cooldown.convoke_the_spirits.remains + cooldown.convoke_the_spirits.duration + 5 ) & ( variable.on_use_trinket = 0 || ( variable.on_use_trinket = 1 || variable.on_use_trinket = 3 ) & ( trinket.t1.cooldown.remains > 5 + 15 * talent.control_of_the_dream.enabled || cooldown.ca_inc.remains > 20 || trinket.t1.cooldown.ready ) || variable.on_use_trinket = 2 & ( trinket.t2.cooldown.remains > 5 + 15 * talent.control_of_the_dream.enabled || cooldown.ca_inc.remains > 20 || trinket.t2.cooldown.ready ) ) & ( fight_remains > action_cooldown + 5 || 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 & fight_remains > cooldown.convoke_the_spirits.remains + 6",
|
|
["action"] = "force_of_nature",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "eclipse.in_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 & ! buff.dreamstate.up",
|
|
["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,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! prev_gcd.1.wild_mushroom & ! dot.fungal_growth.ticking",
|
|
["action"] = "wild_mushroom",
|
|
},
|
|
{
|
|
["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 > ( 3 - ( talent.umbral_intensity.enabled || talent.soul_of_the_forest.enabled ) )",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["action"] = "wrath",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "warrior_of_elune",
|
|
["description"] = "ST",
|
|
["criteria"] = "talent.lunar_calling.enabled || ! talent.lunar_calling.enabled & eclipse.remains <= 7",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.enter_lunar & eclipse.in_eclipse & eclipse.remains < cast_time & ! variable.cd_condition",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.enter_lunar & eclipse.in_eclipse & eclipse.remains < cast_time & ! variable.cd_condition",
|
|
["action"] = "starfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "remains < 3 || refreshable & ( hero_tree.keeper_of_the_grove & cooldown.force_of_nature.ready || ! hero_tree.keeper_of_the_grove & variable.cd_condition )",
|
|
["action"] = "sunfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & remains < 3 & ( ! talent.treants_of_the_moon.enabled || cooldown.force_of_nature.remains > 3 & ! buff.harmony_of_the_grove.up )",
|
|
["action"] = "moonfire",
|
|
["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 & ( eclipse.in_none || eclipse.remains < cast_time )",
|
|
["action"] = "wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.enter_lunar & ( eclipse.in_none || 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"] = "variable.pre_cd_condition || 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 || fight_remains < cooldown.convoke_the_spirits.remains + cooldown.convoke_the_spirits.duration + 5 ) & ( variable.on_use_trinket = 0 || ( variable.on_use_trinket = 1 || variable.on_use_trinket = 3 ) & ( trinket.t1.cooldown.remains > 5 + 15 * talent.control_of_the_dream.enabled || cooldown.ca_inc.remains > 20 || trinket.t1.cooldown.ready ) || variable.on_use_trinket = 2 & ( trinket.t2.cooldown.remains > 5 + 15 * talent.control_of_the_dream.enabled || cooldown.ca_inc.remains > 20 || trinket.t2.cooldown.ready ) ) & ( fight_remains > action_cooldown + 5 || 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 & 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,
|
|
["criteria"] = "refreshable",
|
|
["action"] = "sunfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ( ! talent.treants_of_the_moon.enabled || cooldown.force_of_nature.remains > 3 & ! buff.harmony_of_the_grove.up )",
|
|
["action"] = "moonfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ( target.time_to_die - remains - target.unit > 7 + spell_targets )",
|
|
["action"] = "stellar_flare",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["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,
|
|
["name"] = "spymasters_web",
|
|
["action"] = "spymasters_web",
|
|
["criteria"] = "variable.cd_condition & ( buff.spymasters_report.stack > 29 || boss & fight_remains < cooldown.ca_inc.duration )",
|
|
["description"] = "PRE_CD",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_condition",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.cd_condition",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250506,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 3: 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 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 6: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 6: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 6: Converted operations in '(!talent.whirling_stars.enabled||!talent.convoke_the_spirits.enabled||cooldown.convoke_the_spirits.remains<gcd.max*2||fight_remains<cooldown.convoke_the_spirits.remains+3||cooldown.convoke_the_spirits.remains>cooldown.ca_inc.full_recharge_time+15*talent.control_of_the_dream.enabled)&(variable.on_use_trinket=0||(variable.on_use_trinket=1||variable.on_use_trinket=3)&(trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream.enabled)||!talent.convoke_the_spirits.enabled&hero_tree.elunes_chosen&trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits.enabled&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)%cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.t1.cooldown.remains-10)%cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.t1.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.t1.cooldown.remains+15)||trinket.t1.cooldown.remains+6>fight_remains||trinket.t1.cooldown.ready)||variable.on_use_trinket=2&(trinket.t2.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream.enabled)||!talent.convoke_the_spirits.enabled&hero_tree.elunes_chosen&trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits.enabled&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)%cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.t2.cooldown.remains-10)%cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.t2.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.t2.cooldown.remains+15)||trinket.t2.cooldown.remains+6>fight_remains||trinket.t2.cooldown.ready))&cooldown.ca_inc.remains<gcd.max&!buff.ca_inc.up' to '(!talent.whirling_stars.enabled||!talent.convoke_the_spirits.enabled||cooldown.convoke_the_spirits.remains<gcd.max*2||fight_remains<cooldown.convoke_the_spirits.remains+3||cooldown.convoke_the_spirits.remains>cooldown.ca_inc.full_recharge_time+15*talent.control_of_the_dream.enabled)&(variable.on_use_trinket=0||(variable.on_use_trinket=1||variable.on_use_trinket=3)&(trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream.enabled)||!talent.convoke_the_spirits.enabled&hero_tree.elunes_chosen&trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits.enabled&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)/cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.t1.cooldown.remains-10)/cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.t1.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.t1.cooldown.remains+15)||trinket.t1.cooldown.remains+6>fight_remains||trinket.t1.cooldown.ready)||variable.on_use_trinket=2&(trinket.t2.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream.enabled)||!talent.convoke_the_spirits.enabled&hero_tree.elunes_chosen&trinket.t1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits.enabled&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)/cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.t2.cooldown.remains-10)/cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.t2.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.t2.cooldown.remains+15)||trinket.t2.cooldown.remains+6>fight_remains||trinket.t2.cooldown.ready))&cooldown.ca_inc.remains<gcd.max&!buff.ca_inc.up'.\nLine 13: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 13: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 14: Converted operations in 'variable.no_cd_talent||boss&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&variable.ca_effective_cd>20||variable.on_use_trinket=0' to 'variable.no_cd_talent||boss&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&variable.ca_effective_cd>20||variable.on_use_trinket=0'.\nLine 15: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 15: Converted 'trinket.1.is.imperfect_ascendancy_serum' to 'trinket.t1.is.imperfect_ascendancy_serum' (1x).\nLine 15: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 15: Converted 'trinket.1.is.soulletting_ruby' to 'trinket.t1.is.soulletting_ruby' (1x).\nLine 15: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 15: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 15: Converted 'trinket.2.has_use' to 'trinket.t2.has_use' (1x).\nLine 15: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 15: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 16: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 16: Converted 'trinket.2.is.imperfect_ascendancy_serum' to 'trinket.t2.is.imperfect_ascendancy_serum' (1x).\nLine 16: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 16: Converted 'trinket.2.is.soulletting_ruby' to 'trinket.t2.is.soulletting_ruby' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 16: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 16: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\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.1.has_use' to 'trinket.t1.has_use' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 16: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 16: Converted operations in '!trinket.t2.is.spymasters_web&!trinket.t2.is.imperfect_ascendancy_serum&!trinket.t2.is.treacherous_transmitter&!trinket.t2.is.soulletting_ruby&(variable.on_use_trinket<2&trinket.t1.cooldown.remains>20||variable.on_use_trinket=3&trinket.t1.cooldown.remains>20&(!hero_tree.keeper_of_the_grove||buff.harmony_of_the_grove.up||ceil((fight_remains-15)%trinket.t2.cooldown.duration)>ceil((fight_remains-cooldown.force_of_nature.remains-15)%trinket.t2.cooldown.duration))||boss&fight_remains<(20+20*(trinket.t1.has_use&trinket.t1.cooldown.remains<25))||variable.generic_trinket_condition)' to '!trinket.t2.is.spymasters_web&!trinket.t2.is.imperfect_ascendancy_serum&!trinket.t2.is.treacherous_transmitter&!trinket.t2.is.soulletting_ruby&(variable.on_use_trinket<2&trinket.t1.cooldown.remains>20||variable.on_use_trinket=3&trinket.t1.cooldown.remains>20&(!hero_tree.keeper_of_the_grove||buff.harmony_of_the_grove.up||ceil((fight_remains-15)/trinket.t2.cooldown.duration)>ceil((fight_remains-cooldown.force_of_nature.remains-15)/trinket.t2.cooldown.duration))||boss&fight_remains<(20+20*(trinket.t1.has_use&trinket.t1.cooldown.remains<25))||variable.generic_trinket_condition)'.\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'.\nLine 18: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 19: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 19: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 19: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 5: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.1.is.ovinaxs_mercurial_egg' to 'trinket.t1.is.ovinaxs_mercurial_egg' (1x).\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 6: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.2.is.ovinaxs_mercurial_egg' to 'trinket.t2.is.ovinaxs_mercurial_egg' (1x).\nLine 6: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\n\nThe import for 'aoe' required some automated changes.\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 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.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 10: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 10: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 10: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\n\nThe import for 'st' required some automated changes.\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.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 12: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 12: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 12: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 12: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 12: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\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",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/druid_balance.simc\n## Up to date with SimC: April 27 - 603b5f7\n\nactions.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\n## [Syrif] - Edited the below 2 variables to better match SimC's intention\nactions.precombat+=/variable,name=on_use_trinket,op=add,if=trinket.1.has_use_buff&!trinket.1.is.ovinaxs_mercurial_egg&!trinket.1.is.spymasters_web,value=1,value_else=0\nactions.precombat+=/variable,name=on_use_trinket,op=add,if=trinket.2.has_use_buff&!trinket.2.is.ovinaxs_mercurial_egg&!trinket.2.is.spymasters_web,value=2,value_else=0\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\n# [edited] This handles the wrath opener based on the state of eclipse\nactions.precombat+=/wrath,if=eclipse.lunar_in\nactions.precombat+=/starfire,if=!talent.stellar_flare&hero_tree.elunes_chosen\nactions.precombat+=/stellar_flare\n\nactions+=/solar_beam\n# [Edited] Trigger Lunar Eclipse if we failed to precast Wrath x2\nactions+=/wrath,if=time<2&eclipse.lunar_in_1\n# VARIABLES\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.full_recharge_time<?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=pre_cd_condition,value=(!talent.whirling_stars||!talent.convoke_the_spirits||cooldown.convoke_the_spirits.remains<gcd.max*2||fight_remains<cooldown.convoke_the_spirits.remains+3||cooldown.convoke_the_spirits.remains>cooldown.ca_inc.full_recharge_time+15*talent.control_of_the_dream)&(variable.on_use_trinket=0||(variable.on_use_trinket=1||variable.on_use_trinket=3)&(trinket.1.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream)||!talent.convoke_the_spirits&hero_tree.elunes_chosen&trinket.1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)%cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.1.cooldown.remains-10)%cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.1.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.1.cooldown.remains+15)||trinket.1.cooldown.remains+6>fight_remains||trinket.1.cooldown.ready)||variable.on_use_trinket=2&(trinket.2.cooldown.remains>cooldown.ca_inc.full_recharge_time+(15*talent.control_of_the_dream)||!talent.convoke_the_spirits&hero_tree.elunes_chosen&trinket.1.cooldown.remains>cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration||talent.convoke_the_spirits&(cooldown.convoke_the_spirits.remains<3&(ceil((fight_remains-10)%cooldown.convoke_the_spirits.duration)>ceil((fight_remains-trinket.2.cooldown.remains-10)%cooldown.convoke_the_spirits.duration))||cooldown.convoke_the_spirits.remains>trinket.2.cooldown.remains&cooldown.ca_inc.full_recharge_time-cooldown.ca_inc.duration<trinket.2.cooldown.remains+15)||trinket.2.cooldown.remains+6>fight_remains||trinket.2.cooldown.ready))&cooldown.ca_inc.remains<gcd.max&!buff.ca_inc.up\nactions+=/variable,name=cd_condition,value=variable.pre_cd_condition&(fight_remains<(15+5*talent.incarnation_chosen_of_elune)*(1-talent.whirling_stars*0.2)||target.time_to_die>10&(!hero_tree.keeper_of_the_grove||buff.harmony_of_the_grove.up))\nactions+=/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)\n# [Syrif] - Variable replaced with eclipse metatable expression\n## actions+=/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>3-(talent.umbral_intensity.rank||talent.soul_of_the_forest)\nactions+=/variable,name=boat_stacks,value=buff.balance_of_all_things_arcane.stack+buff.balance_of_all_things_nature.stack\n# ITEMS\nactions+=/use_item,name=spymasters_web,if=variable.cd_condition&(buff.spymasters_report.stack>29||boss&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=((cooldown.force_of_nature.remains<3&(trinket.1.is.spymasters_web||trinket.2.is.spymasters_web)&buff.spymasters_report.stack>=29)||(cooldown.convoke_the_spirits.remains<2&cooldown.ca_inc.ready&cooldown.force_of_nature.remains<3&buff.spymasters_report.stack<=29||fight_remains<20||fight_remains<variable.ca_effective_cd&(buff.harmony_of_the_grove.up||cooldown.convoke_the_spirits.ready)))\nactions+=/variable,name=generic_trinket_condition,value=variable.no_cd_talent||boss&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&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&!trinket.1.is.soulletting_ruby&(variable.on_use_trinket!=1&variable.on_use_trinket!=3&trinket.2.cooldown.remains>20||boss&fight_remains<(20+20*(trinket.2.has_use&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&!trinket.2.is.soulletting_ruby&(variable.on_use_trinket<2&trinket.1.cooldown.remains>20||variable.on_use_trinket=3&trinket.1.cooldown.remains>20&(!hero_tree.keeper_of_the_grove||buff.harmony_of_the_grove.up||ceil((fight_remains-15)%trinket.2.cooldown.duration)>ceil((fight_remains-cooldown.force_of_nature.remains-15)%trinket.2.cooldown.duration))||boss&fight_remains<(20+20*(trinket.1.has_use&trinket.1.cooldown.remains<25))||variable.generic_trinket_condition)\nactions+=/use_item,name=bestinslots,if=hero_tree.keeper_of_the_grove&buff.harmony_of_the_grove.up||hero_tree.elunes_chosen&(cooldown.ca_inc.full_recharge_time>20||buff.ca_inc.up)\nactions+=/use_item,name=neural_synapse_enhancer,if=variable.on_use_trinket=1&!trinket.1.cooldown.ready&(buff.harmony_of_the_grove.up||hero_tree.elunes_chosen)||!trinket.1.has_use_buff&(buff.harmony_of_the_grove.up||hero_tree.elunes_chosen)\nactions+=/use_item,name=neural_synapse_enhancer,if=variable.on_use_trinket=2&!trinket.2.cooldown.ready&(buff.harmony_of_the_grove.up||hero_tree.elunes_chosen)||!trinket.2.has_use_buff&(buff.harmony_of_the_grove.up||hero_tree.elunes_chosen)\nactions+=/potion,if=boss&fight_remains<=30\n## PI & RUN APL\n## actions+=/invoke_external_buff,name=power_infusion,if=variable.cd_condition\nactions+=/berserking,if=variable.no_cd_talent||boss&fight_remains<15\nactions+=/run_action_list,name=aoe,strict=1,if=spell_targets>1\nactions+=/run_action_list,name=st\n\n# AOE\nactions.aoe+=/wrath,if=variable.enter_lunar&eclipse.in_eclipse&eclipse.remains<cast_time&!variable.cd_condition\nactions.aoe+=/starfire,if=!variable.enter_lunar&eclipse.in_eclipse&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&(eclipse.in_none||eclipse.remains<cast_time)\n## actions.aoe+=/starfire,if=cooldown.ca_inc.remains>cast_time+gcd.max&!variable.enter_lunar&(eclipse.in_none||eclipse.remains<cast_time)\nactions.aoe+=/wrath,if=variable.enter_lunar&(eclipse.in_none||eclipse.remains<cast_time)&!variable.pre_cd_condition\nactions.aoe+=/starfire,if=!variable.enter_lunar&(eclipse.in_none||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=variable.pre_cd_condition||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||fight_remains<cooldown.convoke_the_spirits.remains+cooldown.convoke_the_spirits.duration+5)&(variable.on_use_trinket=0||(variable.on_use_trinket=1||variable.on_use_trinket=3)&(trinket.1.cooldown.remains>5+15*talent.control_of_the_dream||cooldown.ca_inc.remains>20||trinket.1.cooldown.ready)||variable.on_use_trinket=2&(trinket.2.cooldown.remains>5+15*talent.control_of_the_dream||cooldown.ca_inc.remains>20||trinket.2.cooldown.ready))&(fight_remains>cooldown+5||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&fight_remains>cooldown.convoke_the_spirits.remains+6\nactions.aoe+=/fury_of_elune,if=eclipse.in_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&!buff.dreamstate.up\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,if=!prev_gcd.1.wild_mushroom&!dot.fungal_growth.ticking\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>(3-(talent.umbral_intensity||talent.soul_of_the_forest))\nactions.aoe+=/wrath\n\n# PRE_CD\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||buff.harmony_of_the_grove.up&(buff.spymasters_report.stack>29||!trinket.1.is.spymasters_web||!trinket.2.is.spymasters_web)\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\n\n# ST\nactions.st+=/warrior_of_elune,if=talent.lunar_calling||!talent.lunar_calling&eclipse.remains<=7\nactions.st+=/wrath,if=variable.enter_lunar&eclipse.in_eclipse&eclipse.remains<cast_time&!variable.cd_condition\nactions.st+=/starfire,if=!variable.enter_lunar&eclipse.in_eclipse&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&(eclipse.in_none||eclipse.remains<cast_time)\nactions.st+=/starfire,if=!variable.enter_lunar&(eclipse.in_none||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=variable.pre_cd_condition||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||fight_remains<cooldown.convoke_the_spirits.remains+cooldown.convoke_the_spirits.duration+5)&(variable.on_use_trinket=0||(variable.on_use_trinket=1||variable.on_use_trinket=3)&(trinket.1.cooldown.remains>5+15*talent.control_of_the_dream||cooldown.ca_inc.remains>20||trinket.1.cooldown.ready)||variable.on_use_trinket=2&(trinket.2.cooldown.remains>5+15*talent.control_of_the_dream||cooldown.ca_inc.remains>20||trinket.2.cooldown.ready))&(fight_remains>cooldown+5||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&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+=/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",
|
|
["spec"] = 102,
|
|
},
|
|
["Survival"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/hunter_survival.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250505,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-05-05: SimC Update\n2025-04-13: Support pet revive, captions, calling specific pets.\n2025-04-06: SimC Update + boar_charge\n2025-03-21: Simc Update (howl_summon_ready --> howl_summon.ready)\n2025-03-10: SimC Update (howl_summon_ready)\n2025-02-28: TWW Season 2 update\n2025-02-17: Preliminary 11.1 APL\n2024-09-22, 10-21: SimC update\n2024-08-24, 09-08: SimC priority update\n2024-08-12: Fix Kill Command usage in AOE with maxed Focus\n2024-08-01: Respect Hunter's Mark setting\n2024-07-27: Minor sim update; use Hunter's Mark\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["sentst"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.lunar_storm_cooldown.remains",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 )",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains",
|
|
["action"] = "spearhead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.tip_of_the_spear.stack < 1",
|
|
["action"] = "kill_command",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.coordinated_assault.up",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.lunar_storm_cooldown.remains > full_recharge_time - gcd.max ) & ( buff.tip_of_the_spear.stack > 0 & cooldown.wildfire_bomb.charges_fractional > 1.7 || cooldown.wildfire_bomb.charges_fractional > 1.9 ) || ( talent.bombardier.enabled & cooldown.coordinated_assault.remains < 2 * gcd.max )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.bombardier.enabled || talent.bombardier.enabled & cooldown.wildfire_bomb.charges_fractional < 1",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack < 1 & cooldown.flanking_strike.remains < gcd.max",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max & ( ! buff.relentless_primal_ferocity.up || ( buff.relentless_primal_ferocity.up & ( buff.tip_of_the_spear.stack < 2 || focus < 30 ) ) )",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.remains < gcd.max & buff.mongoose_fury.stack > 0",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & buff.lunar_storm_cooldown.remains > full_recharge_time & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.in > 15 )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.remains",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "kill_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.contagious_reagents.enabled",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "SENTINEL || DEFAULT SINGLE TARGET ACTIONLIST.",
|
|
["criteria"] = "! buff.lunar_storm_cooldown.remains",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 )",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains",
|
|
["action"] = "spearhead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.tip_of_the_spear.stack < 1",
|
|
["action"] = "kill_command",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.coordinated_assault.up",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.lunar_storm_cooldown.remains > full_recharge_time - gcd.max ) & ( buff.tip_of_the_spear.stack > 0 & cooldown.wildfire_bomb.charges_fractional > 1.7 || cooldown.wildfire_bomb.charges_fractional > 1.9 ) || ( talent.bombardier.enabled & cooldown.coordinated_assault.remains < 2 * gcd.max )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.bombardier.enabled || talent.bombardier.enabled & cooldown.wildfire_bomb.charges_fractional < 1",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack < 1 & cooldown.flanking_strike.remains < gcd.max",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max & ( ! buff.relentless_primal_ferocity.up || ( buff.relentless_primal_ferocity.up & ( buff.tip_of_the_spear.stack < 2 || focus < 30 ) ) )",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.remains < gcd.max & buff.mongoose_fury.stack > 0",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & buff.lunar_storm_cooldown.remains > full_recharge_time & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.in > 15 )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.remains",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "kill_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.contagious_reagents.enabled",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "muzzle",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "tranquilizing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.health_pct < pet_healing",
|
|
["action"] = "mend_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies < 3 & talent.howl_of_the_pack_leader.enabled",
|
|
["list_name"] = "plst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 2 & talent.howl_of_the_pack_leader.enabled",
|
|
["list_name"] = "plcleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies < 3 & ! talent.howl_of_the_pack_leader.enabled",
|
|
["list_name"] = "sentst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 2 & ! talent.howl_of_the_pack_leader.enabled",
|
|
["list_name"] = "sentcleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Kill Command if there's nothing else to press",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bag_of_tricks",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "summon_pet",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "algethar_puzzle_box",
|
|
["action"] = "algethar_puzzle_box",
|
|
},
|
|
},
|
|
["plcleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains",
|
|
["action"] = "spearhead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.up & buff.strike_it_rich.remains < gcd.max || buff.hogstrider.remains & boar_charge.remains > 0 || buff.hogstrider.remains < gcd.max & buff.hogstrider.up || buff.hogstrider.remains & buff.strike_it_rich.remains",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "wildfire_bomb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.howl_of_the_pack_leader_wyvern.remains || buff.howl_of_the_pack_leader_boar.remains || buff.howl_of_the_pack_leader_bear.remains )",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack = 2 || buff.tip_of_the_spear.stack = 1",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max || charges_fractional > 1.5",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.deathblow.remains & talent.sic_em.enabled",
|
|
["action"] = "kill_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "COOLDOWNS ACTIONLIST",
|
|
["criteria"] = "settings.use_harpoon & prev.kill_command",
|
|
["action"] = "harpoon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled || time_to_die < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 25 || buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "gcd.remains > gcd.max - 0.1",
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains || cooldown.spearhead.remains",
|
|
["action"] = "use_items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.distance >= 6",
|
|
["action"] = "aspect_of_the_eagle",
|
|
},
|
|
},
|
|
["plst"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "PACK LEADER || SINGLE TARGET ACTIONLIST.",
|
|
["criteria"] = "( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 ) || ( buff.howl_of_the_pack_leader_wyvern.remains || buff.howl_of_the_pack_leader_boar.remains || buff.howl_of_the_pack_leader_bear.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains & cooldown.coordinated_assault.remains < gcd.max",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains",
|
|
["action"] = "spearhead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.serpent_sting.ticking & target.time_to_die > 12 & ( ! talent.contagious_reagents.enabled || active_dot.serpent_sting = 0 )",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.contagious_reagents.enabled & active_dot.serpent_sting < active_enemies & dot.serpent_sting.remains",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.tip_of_the_spear.stack < 1",
|
|
["action"] = "kill_command",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "raptor_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.in > 40 )",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "wildfire_bomb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max & ( ! buff.relentless_primal_ferocity.up || ( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 || focus < 30 ) )",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 2",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.contagious_reagents.enabled",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "kill_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["sentcleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "SENTINEL || DEFAULT AOE ACTIONLIST",
|
|
["criteria"] = "! buff.lunar_storm_cooldown.remains",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & cooldown.wildfire_bomb.charges_fractional > 1.7 || cooldown.wildfire_bomb.charges_fractional > 1.9 || ( talent.bombardier.enabled & cooldown.coordinated_assault.remains < 2 * gcd.max ) || talent.butchery.enabled & cooldown.butchery.remains < gcd.max",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.up & buff.strike_it_rich.remains < gcd.max",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.bombardier.enabled || talent.bombardier.enabled & cooldown.wildfire_bomb.charges_fractional < 1",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.tip_of_the_spear.stack = 2 || buff.tip_of_the_spear.stack = 1 )",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.deathblow.remains & talent.sic_em.enabled",
|
|
["action"] = "kill_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.contagious_reagents.enabled",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250505,
|
|
["warnings"] = "Imported 7 action lists.\n",
|
|
["spec"] = 255,
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/hunter_survival.simc\n## Up to date with SimC: April 26 2025 - 739316d\n\nactions.precombat+=/summon_pet\nactions.precombat+=/use_item,name=imperfect_ascendancy_serum\nactions.precombat+=/hunters_mark,if=(settings.mark_any||target.is_boss)&active_dot.hunters_mark=0&target.time_to_pct_80>20\nactions.precombat+=/use_item,name=algethar_puzzle_box\n\nactions+=/muzzle\nactions+=/tranquilizing_shot\nactions+=/hunters_mark,if=(settings.mark_any||target.is_boss)&active_dot.hunters_mark=0&target.time_to_pct_80>20\nactions+=/mend_pet,if=pet.health_pct<pet_healing\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=plst,strict=1,if=active_enemies<3&talent.howl_of_the_pack_leader\nactions+=/call_action_list,name=plcleave,strict=1,if=active_enemies>2&talent.howl_of_the_pack_leader\nactions+=/call_action_list,name=sentst,strict=1,if=active_enemies<3&!talent.howl_of_the_pack_leader\nactions+=/call_action_list,name=sentcleave,strict=1,if=active_enemies>2&!talent.howl_of_the_pack_leader\n# Use Kill Command if there's nothing else to press\nactions+=/kill_command,cycle_targets=1\nactions+=/arcane_torrent\nactions+=/bag_of_tricks\nactions+=/lights_judgment\n\n# COOLDOWNS ACTIONLIST\nactions.cds+=/harpoon,if=settings.use_harpoon&prev.kill_command\nactions.cds+=/blood_fury,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\n## actions.cds+=/invoke_external_buff,name=power_infusion,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/ancestral_call,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/fireblood,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/berserking,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault||time_to_die<13\nactions.cds+=/potion,if=boss&fight_remains<25||buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/use_item,name=imperfect_ascendancy_serum,use_off_gcd=1,if=gcd.remains>gcd.max-0.1\nactions.cds+=/use_items,if=cooldown.coordinated_assault.remains||cooldown.spearhead.remains\nactions.cds+=/aspect_of_the_eagle,if=target.distance>=6\n\n#PACK LEADER || AOE ACTIONLIST\nactions.plcleave+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.plcleave+=/raptor_bite,cycle_targets=1,if=buff.strike_it_rich.up&buff.strike_it_rich.remains<gcd||buff.hogstrider.remains&boar_charge.remains>0||buff.hogstrider.remains<gcd&buff.hogstrider.up||buff.hogstrider.remains&buff.strike_it_rich.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\nactions.plcleave+=/kill_command,cycle_targets=1,if=(buff.howl_of_the_pack_leader_wyvern.remains||buff.howl_of_the_pack_leader_boar.remains||buff.howl_of_the_pack_leader_bear.remains)\nactions.plcleave+=/flanking_strike,if=buff.tip_of_the_spear.stack=2||buff.tip_of_the_spear.stack=1\nactions.plcleave+=/butchery\nactions.plcleave+=/coordinated_assault\nactions.plcleave+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0\nactions.plcleave+=/explosive_shot\nactions.plcleave+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max||charges_fractional>1.5\nactions.plcleave+=/kill_shot,if=buff.deathblow.remains&talent.sic_em\nactions.plcleave+=/raptor_bite,cycle_targets=1\n\n# PACK LEADER || SINGLE TARGET ACTIONLIST.\nactions.plst+=/kill_command,cycle_targets=1,if=(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1)||(buff.howl_of_the_pack_leader_wyvern.remains||buff.howl_of_the_pack_leader_boar.remains||buff.howl_of_the_pack_leader_bear.remains)\nactions.plst+=/explosive_shot,if=cooldown.coordinated_assault.remains&cooldown.coordinated_assault.remains<gcd\nactions.plst+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.plst+=/flanking_strike,if=buff.tip_of_the_spear.stack>0\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+=/kill_command,if=buff.strike_it_rich.remains&buff.tip_of_the_spear.stack<1\nactions.plst+=/raptor_bite,if=buff.strike_it_rich.remains&buff.tip_of_the_spear.stack>0\nactions.plst+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.in>40)\nactions.plst+=/coordinated_assault\nactions.plst+=/wildfire_bomb\nactions.plst+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max&(!buff.relentless_primal_ferocity.up||(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1||focus<30))\nactions.plst+=/explosive_shot,if=active_enemies=2\nactions.plst+=/raptor_bite,cycle_targets=1,if=!talent.contagious_reagents\nactions.plst+=/raptor_bite,cycle_targets=1\nactions.plst+=/kill_shot\nactions.plst+=/explosive_shot\n\n# SENTINEL || DEFAULT AOE ACTIONLIST\nactions.sentcleave+=/wildfire_bomb,if=!buff.lunar_storm_cooldown.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+=/raptor_bite,cycle_targets=1,if=buff.strike_it_rich.up&buff.strike_it_rich.remains<gcd\nactions.sentcleave+=/butchery\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_command,cycle_targets=1,if=focus+cast_regen<focus.max\nactions.sentcleave+=/explosive_shot\nactions.sentcleave+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0\nactions.sentcleave+=/kill_shot,if=buff.deathblow.remains&talent.sic_em\nactions.sentcleave+=/raptor_bite,cycle_targets=1,if=!talent.contagious_reagents\nactions.sentcleave+=/raptor_bite,cycle_targets=1\n\n#SENTINEL || DEFAULT SINGLE TARGET ACTIONLIST.\nactions.sentst=wildfire_bomb,if=!buff.lunar_storm_cooldown.remains\nactions.sentst+=/kill_command,cycle_targets=1,if=(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1)\nactions.sentst+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.sentst+=/flanking_strike,if=buff.tip_of_the_spear.stack>0\nactions.sentst+=/kill_command,if=buff.strike_it_rich.remains&buff.tip_of_the_spear.stack<1\nactions.sentst+=/mongoose_bite,if=buff.strike_it_rich.remains&buff.coordinated_assault.up\nactions.sentst+=/wildfire_bomb,if=(buff.lunar_storm_cooldown.remains>full_recharge_time-gcd)&(buff.tip_of_the_spear.stack>0&cooldown.wildfire_bomb.charges_fractional>1.7||cooldown.wildfire_bomb.charges_fractional>1.9)||(talent.bombardier&cooldown.coordinated_assault.remains<2*gcd)\nactions.sentst+=/butchery\nactions.sentst+=/coordinated_assault,if=!talent.bombardier||talent.bombardier&cooldown.wildfire_bomb.charges_fractional<1\nactions.sentst+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0\nactions.sentst+=/kill_command,cycle_targets=1,if=buff.tip_of_the_spear.stack<1&cooldown.flanking_strike.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||focus<30)))\nactions.sentst+=/mongoose_bite,if=buff.mongoose_fury.remains<gcd&buff.mongoose_fury.stack>0\nactions.sentst+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0&buff.lunar_storm_cooldown.remains>full_recharge_time&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.in>15)\nactions.sentst+=/mongoose_bite,if=buff.mongoose_fury.remains\nactions.sentst+=/explosive_shot\nactions.sentst+=/kill_shot\nactions.sentst+=/raptor_bite,cycle_targets=1,if=!talent.contagious_reagents\nactions.sentst+=/raptor_bite,cycle_targets=1\n\n# SENTINEL || DEFAULT SINGLE TARGET ACTIONLIST.\nactions.sentst+=/wildfire_bomb,if=!buff.lunar_storm_cooldown.remains\nactions.sentst+=/kill_command,cycle_targets=1,if=(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1)\nactions.sentst+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.sentst+=/flanking_strike,if=buff.tip_of_the_spear.stack>0\nactions.sentst+=/kill_command,if=buff.strike_it_rich.remains&buff.tip_of_the_spear.stack<1\nactions.sentst+=/mongoose_bite,if=buff.strike_it_rich.remains&buff.coordinated_assault.up\nactions.sentst+=/wildfire_bomb,if=(buff.lunar_storm_cooldown.remains>full_recharge_time-gcd)&(buff.tip_of_the_spear.stack>0&cooldown.wildfire_bomb.charges_fractional>1.7||cooldown.wildfire_bomb.charges_fractional>1.9)||(talent.bombardier&cooldown.coordinated_assault.remains<2*gcd)\nactions.sentst+=/butchery\nactions.sentst+=/coordinated_assault,if=!talent.bombardier||talent.bombardier&cooldown.wildfire_bomb.charges_fractional<1\nactions.sentst+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0\nactions.sentst+=/kill_command,cycle_targets=1,if=buff.tip_of_the_spear.stack<1&cooldown.flanking_strike.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||focus<30)))\nactions.sentst+=/mongoose_bite,if=buff.mongoose_fury.remains<gcd&buff.mongoose_fury.stack>0\nactions.sentst+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0&buff.lunar_storm_cooldown.remains>full_recharge_time&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.in>15)\nactions.sentst+=/mongoose_bite,if=buff.mongoose_fury.remains\nactions.sentst+=/explosive_shot\nactions.sentst+=/kill_shot\nactions.sentst+=/raptor_bite,cycle_targets=1,if=!talent.contagious_reagents\nactions.sentst+=/raptor_bite,cycle_targets=1",
|
|
},
|
|
["Demonology"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/dragonflight/engine/class_modules/apl/warlock.cpp",
|
|
["builtIn"] = true,
|
|
["date"] = 20250302,
|
|
["spec"] = 266,
|
|
["desc"] = "2025-03-02: Sync with SimC",
|
|
["lists"] = {
|
|
["items"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ! pet.demonic_tyrant.active & trinket.t1.cast_time > 0 || ! trinket.t1.cast_time > 0 ) & ( pet.demonic_tyrant.active || ! talent.summon_demonic_tyrant.enabled || variable.trinket_priority = 2 & cooldown.summon_demonic_tyrant.remains > 20 & ! pet.demonic_tyrant.active & trinket.t2.cooldown.remains < cooldown.summon_demonic_tyrant.remains + 5 ) & ( variable.trinket_2_exclude || ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 & ! variable.trinket_2_manual ) || variable.trinket_1_buff_duration >= fight_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ! pet.demonic_tyrant.active & trinket.t2.cast_time > 0 || ! trinket.t2.cast_time > 0 ) & ( pet.demonic_tyrant.active || ! talent.summon_demonic_tyrant.enabled || variable.trinket_priority = 1 & cooldown.summon_demonic_tyrant.remains > 20 & ! pet.demonic_tyrant.active & trinket.t1.cooldown.remains < cooldown.summon_demonic_tyrant.remains + 5 ) & ( variable.trinket_1_exclude || ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 & ! variable.trinket_1_manual ) || variable.trinket_2_buff_duration >= fight_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_1_manual & ( ( variable.damage_trinket_priority = 1 || trinket.t2.cooldown.remains ) & ( trinket.t1.cast_time > 0 & ! pet.demonic_tyrant.active || ! trinket.t1.cast_time > 0 ) || ( time < 20 & variable.trinket_2_buffs ) || cooldown.summon_demonic_tyrant.remains_expected > 20 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! variable.trinket_2_buffs & ! variable.trinket_2_manual & ( ( variable.damage_trinket_priority = 2 || trinket.t1.cooldown.remains ) & ( trinket.t2.cast_time > 0 & ! pet.demonic_tyrant.active || ! trinket.t2.cast_time > 0 ) || ( time < 20 & variable.trinket_1_buffs ) || cooldown.summon_demonic_tyrant.remains_expected > 20 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "spymasters_web",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "spymasters_web",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["criteria"] = "pet.demonic_tyrant.active & gcd.remains > 0 || fight_remains <= 30",
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "! variable.trinket_1_buffs & ( variable.damage_trinket_priority = 1 || trinket.t2.cooldown.remains )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.trinket_2_buffs & ( variable.damage_trinket_priority = 2 || trinket.t1.cooldown.remains )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! equipped.neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "neural_synapse_enhancer",
|
|
["criteria"] = "( pet.demonic_tyrant.active || fight_remains <= 15 ) & ! variable.trinket_1_buffs & ! variable.trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "neural_synapse_enhancer",
|
|
["criteria"] = "( pet.demonic_tyrant.active || fight_remains <= 15 || trinket.t2.cooldown.remains > cooldown.summon_demonic_tyrant.remains ) & variable.trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "neural_synapse_enhancer",
|
|
["criteria"] = "( pet.demonic_tyrant.active || fight_remains <= 15 || trinket.t1.cooldown.remains > cooldown.summon_demonic_tyrant.remains ) & variable.trinket_1_buffs",
|
|
},
|
|
},
|
|
["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,
|
|
["criteria"] = "boss & fight_remains < 30",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "fight_end",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "time < variable.first_tyrant_time",
|
|
["list_name"] = "opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < gcd.max * 14",
|
|
["action"] = "call_action_list",
|
|
["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,
|
|
["action"] = "demonbolt",
|
|
["criteria"] = "buff.demonic_core.up & ( ! talent.doom.enabled || buff.demonic_core.stack > 1 || debuff.doom.remains > 10 || debuff.doom.down ) & ( ( ( ! talent.fel_invocation.enabled || cooldown.soul_strike.remains > gcd.max * 2 ) & soul_shard < 4 ) ) & ! prev_gcd.1.demonbolt & ! variable.pool_cores_for_tyrant",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "demonbolt",
|
|
["criteria"] = "buff.demonic_core.stack >= 3 - ( talent.doom.enabled & debuff.doom.down ) * 2 & soul_shard <= 3 & ! variable.pool_cores_for_tyrant",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonic_core.stack < 3 & cooldown.summon_demonic_tyrant.remains > 25 & ! buff.demonic_power.up",
|
|
["action"] = "power_siphon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "demonic_strength",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "bilescourge_bombers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ( cooldown.demonic_strength.remains || ! talent.demonic_strength.enabled )",
|
|
["action"] = "guillotine",
|
|
},
|
|
{
|
|
["action"] = "ruination",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.infernal_bolt.remains > cast_time & buff.infernal_bolt.remains < 2 * gcd.max || soul_shard < 3 & cooldown.summon_demonic_tyrant.remains > 20",
|
|
["action"] = "infernal_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "two_cast_imps > 0 & variable.impl & ! prev_gcd.1.implosion & ( active_enemies > 3 || active_enemies <= 3 & last_cast_imps > 0 )",
|
|
["action"] = "implosion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.diabolic_ritual_remains > gcd.max & variable.diabolic_ritual_remains < gcd.max + gcd.max & buff.demonic_core.up & soul_shard <= 3",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.diabolic_ritual_remains > gcd.max & variable.diabolic_ritual_remains < soul_shard_deficit * cast_time + gcd.max & soul_shard < 5",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( soul_shard > 2 & ( cooldown.call_dreadstalkers.remains > gcd.max * 4 || buff.demonic_calling.remains - gcd.max > cooldown.call_dreadstalkers.remains ) & cooldown.summon_demonic_tyrant.remains > 17 ) || soul_shard = 5 || soul_shard = 4 & talent.fel_invocation.enabled ) & ( active_enemies = 1 )",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard > 2 & ! ( active_enemies = 1 )",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "demonbolt",
|
|
["criteria"] = "active_enemies < 4 & buff.demonic_core.stack > 1 & ( ( soul_shard < 4 & ! talent.soul_strike.enabled || cooldown.soul_strike.remains > gcd.max * 2 & talent.fel_invocation.enabled ) || soul_shard < 3 ) & ! variable.pool_cores_for_tyrant",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonic_core.up & buff.tyrant.up & soul_shard < 3",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonic_core.stack > 1 & soul_shard < 4",
|
|
["action"] = "demonbolt",
|
|
},
|
|
{
|
|
["action"] = "infernal_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! pet.tyrant.active & cooldown.tyrant_remains > 15 & active_enemies > 1",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["action"] = "shadow_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ( cooldown.demonic_strength.remains || ! talent.demonic_strength.enabled ) & talent.fel_sunder.enabled",
|
|
["action"] = "felstorm",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time > 0 & ! pet.alive & ! buff.grimoire_of_sacrifice.up",
|
|
["action"] = "fel_domination",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! pet.alive & ! buff.grimoire_of_sacrifice.up",
|
|
["action"] = "summon_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "12",
|
|
["description"] = "Sets the expected Tyrant Setup on pull to take a total 12 seconds long",
|
|
["var_name"] = "first_tyrant_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "first_tyrant_time",
|
|
["criteria"] = "talent.grimoire_felguard.enabled",
|
|
["description"] = "Accounts for the execution time of Grimoire Felguard in the setup of Tyrant on Pull",
|
|
["value"] = "action.grimoire_felguard.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "first_tyrant_time",
|
|
["criteria"] = "talent.summon_vilefiend.enabled",
|
|
["description"] = "Accounts for the execution time of Vilefiend in the the setup of Tyrant on Pull",
|
|
["value"] = "action.summon_vilefiend.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "first_tyrant_time",
|
|
["criteria"] = "talent.grimoire_felguard.enabled || talent.summon_vilefiend.enabled",
|
|
["description"] = "Accounts for the execution time of both Grimoire Felguard and Vilefiend in the tyrant Setup on Pull",
|
|
["value"] = "gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "action.summon_demonic_tyrant.execute_time + action.shadow_bolt.execute_time",
|
|
["description"] = "Accounts for Tyrant own Cast Time and an additional Shadowbolt cast time",
|
|
["var_name"] = "first_tyrant_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "min",
|
|
["action"] = "variable",
|
|
["value"] = "10",
|
|
["description"] = "Sets an absolute minimun of 10s for the First Tyrant Setup",
|
|
["var_name"] = "first_tyrant_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "in_opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff",
|
|
["description"] = "Defines if the the Trinket 1 is a buff Trinket in the trinket logic",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff",
|
|
["description"] = "Defines if the the Trinket 2 is a buff Trinket in the trinket logic",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["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 dont want to use in combat",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.spymasters_web || trinket.t1.is.imperfect_ascendancy_serum",
|
|
["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.imperfect_ascendancy_serum",
|
|
["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.buff_duration + ( trinket.t1.is.mirror_of_fractured_tomorrows * 20 )",
|
|
["description"] = "Defines the Duration of the buff or an expected time for value of the trinket",
|
|
["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"] = "Defines the Duration of the buff or an expected time for value of the trinket",
|
|
["var_name"] = "trinket_2_buff_duration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Trinket Automatic Logic for Trinket 1",
|
|
["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 )",
|
|
["value"] = "1",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["var_name"] = "trinket_1_sync",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Trinket Automatic Logic for Trinket 2",
|
|
["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 )",
|
|
["value"] = "1",
|
|
["action"] = "variable",
|
|
["value_else"] = "0.5",
|
|
["var_name"] = "trinket_2_sync",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Automatic Logic in case of 2 Buff Trinkets",
|
|
["criteria"] = "! variable.trinket_1_buffs & ! variable.trinket_2_buffs & trinket.t2.ilvl > trinket.t1.ilvl",
|
|
["value"] = "2",
|
|
["action"] = "variable",
|
|
["value_else"] = "1",
|
|
["var_name"] = "damage_trinket_priority",
|
|
},
|
|
{
|
|
["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 / 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 ) ) )",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
{
|
|
["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,
|
|
},
|
|
},
|
|
["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",
|
|
["criteria"] = "pet.demonic_tyrant.active",
|
|
["var_name"] = "in_opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "impl",
|
|
["criteria"] = "active_enemies > 1 + ( talent.sacrificed_souls.enabled )",
|
|
["description"] = "Defines the viability of Implosion when Tyrant is down",
|
|
["value"] = "buff.tyrant.down",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "impl",
|
|
["criteria"] = "active_enemies > 2 + ( talent.sacrificed_souls.enabled ) & active_enemies < 5 + ( talent.sacrificed_souls.enabled )",
|
|
["description"] = "Defines the Viability of Implosion while Tyrant is Up",
|
|
["value"] = "buff.tyrant.remains < 6",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["var_name"] = "impl",
|
|
["criteria"] = "active_enemies > 4 + ( talent.sacrificed_souls.enabled )",
|
|
["description"] = "Defines the Viability of Implosion while Tyrant is Up",
|
|
["value"] = "buff.tyrant.remains < 8",
|
|
},
|
|
{
|
|
["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",
|
|
["description"] = "Restricts Demonic Core usage for the sake of having 2 or more Demonic Cores on Tyrant Setup",
|
|
["var_name"] = "pool_cores_for_tyrant",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.diabolic_ritual_mother_of_chaos.remains",
|
|
["criteria"] = "buff.diabolic_ritual_mother_of_chaos.up",
|
|
["var_name"] = "diabolic_ritual_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.diabolic_ritual_overlord.remains",
|
|
["criteria"] = "buff.diabolic_ritual_overlord.up",
|
|
["var_name"] = "diabolic_ritual_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.diabolic_ritual_pit_lord.remains",
|
|
["criteria"] = "buff.diabolic_ritual_pit_lord.up",
|
|
["var_name"] = "diabolic_ritual_remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2 * spell_haste * 6 + 0.58 + time",
|
|
["criteria"] = "prev_gcd.1.hand_of_guldan & buff.dreadstalkers.up & cooldown.summon_demonic_tyrant.remains < 13 & variable.imp_despawn = 0",
|
|
["var_name"] = "imp_despawn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ( cooldown.demonic_strength.remains || ! talent.demonic_strength.enabled ) & talent.fel_sunder.enabled",
|
|
["action"] = "felstorm",
|
|
},
|
|
},
|
|
["tyrant"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["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 ) )",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "racials",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn & variable.imp_despawn < time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & ( prev_gcd.1.hand_of_guldan || prev_gcd.1.ruination ) & ( variable.imp_despawn & variable.imp_despawn < time + gcd.max + action.summon_demonic_tyrant.cast_time || soul_shard < 2 )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < 15 & ( time < variable.first_tyrant_time || cooldown.summon_demonic_tyrant.remains > ( action.summon_demonic_tyrant.cast_time + 2 * gcd.max ) )",
|
|
["action"] = "power_siphon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dreadstalkers.remains > gcd.max + action.summon_demonic_tyrant.cast_time & ( soul_shard = 5 || variable.imp_despawn )",
|
|
["action"] = "ruination",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.infernal_bolt.remains > cast_time & buff.infernal_bolt.remains < 2 * gcd.max || ! buff.demonic_core.up ) & variable.imp_despawn > time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & soul_shard < 3",
|
|
["action"] = "infernal_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.call_dreadstalkers & soul_shard < 4 & buff.demonic_core.stack < 4",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.2.call_dreadstalkers & prev_gcd.1.shadow_bolt & buff.bloodlust.up & soul_shard < 5",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.summon_vilefiend & ( buff.demonic_calling.down || prev_gcd.2.grimoire_felguard )",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.grimoire_felguard & buff.demonic_core.stack < 3 & buff.demonic_calling.remains > gcd.max * 3",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn > time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & ! buff.demonic_core.up & buff.demonic_art_pit_lord.up & variable.imp_despawn < time + gcd.max * 5 + action.summon_demonic_tyrant.cast_time",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn > time + gcd.max + action.summon_demonic_tyrant.cast_time & variable.imp_despawn < time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & buff.dreadstalkers.remains > gcd.max + action.summon_demonic_tyrant.cast_time & soul_shard > 1",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.demonic_core.up & variable.imp_despawn > time + gcd.max * 2 + action.summon_demonic_tyrant.cast_time & variable.imp_despawn < time + gcd.max * 4 + action.summon_demonic_tyrant.cast_time & soul_shard < 3 & buff.dreadstalkers.remains > gcd.max * 2 + action.summon_demonic_tyrant.cast_time",
|
|
["action"] = "shadow_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < 17 - 2 * gcd.max & cooldown.summon_vilefiend.remains < 15 - 2 * gcd.max & cooldown.call_dreadstalkers.remains < 12 - 2 * gcd.max",
|
|
["action"] = "grimoire_felguard",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < 15 - 2 * gcd.max & ( buff.grimoire_felguard.up || cooldown.grimoire_felguard.remains > 15 || ! talent.grimoire_felguard.enabled ) & ( buff.dreadstalkers.up || cooldown.call_dreadstalkers.remains < 15 - 2 * gcd.max || ! talent.call_dreadstalkers.enabled )",
|
|
["action"] = "summon_vilefiend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_demonic_tyrant.remains < 12 - 2 * gcd.max & ( buff.vilefiend.up || cooldown.summon_vilefiend.remains < 12 - 2 * gcd.max || ! talent.summon_vilefiend.enabled )",
|
|
["action"] = "call_dreadstalkers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ( variable.imp_despawn & variable.imp_despawn < time + gcd.max * 2.5 + cast_time ) || ( buff.wild_imps.stack > 9 & soul_shards < 2 ) ) & buff.dreadstalkers.up & ( buff.vilefiend.up || ! talent.summon_vilefiend.enabled ) ) || ( buff.dreadstalkers.up & buff.dreadstalkers.remains < gcd.max * 2 + cast_time & ( ( buff.vilefiend.up & buff.vilefiend.remains > 2 * gcd.max ) || ! talent.summon_vilefiend.enabled ) & ( ( buff.grimoire_felguard.up & buff.grimoire_felguard.remains > 2 * gcd.max ) || ! talent.grimoire_felguard.enabled || cooldown.grimoire_felguard.remains > 20 ) )",
|
|
["action"] = "summon_demonic_tyrant",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.imp_despawn || buff.dreadstalkers.remains ) & soul_shard >= 3 || soul_shard = 5",
|
|
["action"] = "hand_of_guldan",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn & soul_shard < 3",
|
|
["action"] = "infernal_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "demonbolt",
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.imp_despawn || soul_shard = 5 & cooldown.summon_vilefiend.remains > gcd.max * 3",
|
|
["action"] = "ruination",
|
|
},
|
|
{
|
|
["action"] = "shadow_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "infernal_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["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,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250302,
|
|
["warnings"] = "The import for 'items' required some automated changes.\nLine 1: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 1: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 1: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 1: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 1: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'talent.summon_demonic_tyrant' to 'talent.summon_demonic_tyrant.enabled' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 2: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 2: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 3: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 4: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 5: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 7: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 7: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 8: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 9: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 12: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 12: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 13: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 13: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\n\nThe import for 'default' required some automated changes.\nLine 12: Converted 'talent.doom' to 'talent.doom.enabled' (1x).\nLine 12: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\nLine 12: Converted 'pet.felguard.cooldown.soul_strike.remains' to 'cooldown.soul_strike.remains' (1x).\nLine 13: Converted 'talent.doom' to 'talent.doom.enabled' (1x).\nLine 17: Converted 'talent.demonic_strength' to 'talent.demonic_strength.enabled' (1x).\nLine 23: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\nLine 25: Converted 'talent.soul_strike' to 'talent.soul_strike.enabled' (1x).\nLine 25: Converted 'pet.felguard.cooldown.soul_strike.remains' to 'cooldown.soul_strike.remains' (1x).\nLine 25: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\nLine 31: Converted 'talent.demonic_strength' to 'talent.demonic_strength.enabled' (1x).\nLine 31: Converted 'talent.fel_sunder' to 'talent.fel_sunder.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 10: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 11: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 12: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 13: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 14: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 14: Converted 'trinket.1.is.imperfect_ascendancy_serum' to 'trinket.t1.is.imperfect_ascendancy_serum' (1x).\nLine 15: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 15: Converted 'trinket.2.is.imperfect_ascendancy_serum' to 'trinket.t2.is.imperfect_ascendancy_serum' (1x).\nLine 16: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 16: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 16: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 17: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 17: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 17: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 18: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 18: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%trinket.t1.cooldown.duration=0)'.\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 19: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 19: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%trinket.t2.cooldown.duration=0)'.\nLine 20: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 20: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nLine 21: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 21: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 21: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 21: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 21: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 21: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 21: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 21: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 21: Converted 'trinket.1.ilvl' to 'trinket.t1.ilvl' (1x).\nLine 21: Converted 'trinket.2.ilvl' to 'trinket.t2.ilvl' (1x).\nLine 21: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%variable.trinket_2_buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>(((trinket.t1.cooldown.duration%variable.trinket_1_buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))*(1+((trinket.t1.ilvl-trinket.t2.ilvl)%100)))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/variable.trinket_2_buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>(((trinket.t1.cooldown.duration/variable.trinket_1_buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))*(1+((trinket.t1.ilvl-trinket.t2.ilvl)/100)))'.\n\nThe import for 'variables' required some automated changes.\nLine 11: Converted 'talent.demonic_strength' to 'talent.demonic_strength.enabled' (1x).\nLine 11: Converted 'talent.fel_sunder' to 'talent.fel_sunder.enabled' (1x).\n\nThe import for 'tyrant' required some automated changes.\nLine 14: Converted 'talent.grimoire_felguard' to 'talent.grimoire_felguard.enabled' (1x).\nLine 14: Converted 'talent.call_dreadstalkers' to 'talent.call_dreadstalkers.enabled' (1x).\nLine 15: Converted 'talent.summon_vilefiend' to 'talent.summon_vilefiend.enabled' (1x).\n\nThe import for 'opener' required some automated changes.\nLine 1: Converted 'talent.fel_invocation' to 'talent.fel_invocation.enabled' (1x).\n\nImported 8 action lists.\n",
|
|
["profile"] = "actions.precombat+=/fel_domination,if=time>0&!pet.alive&!buff.grimoire_of_sacrifice.up\nactions.precombat+=/summon_pet,if=!pet.alive&!buff.grimoire_of_sacrifice.up\n# Sets the expected Tyrant Setup on pull to take a total 12 seconds long\nactions.precombat+=/variable,name=first_tyrant_time,op=set,value=12\n# Accounts for the execution time of Grimoire Felguard in the setup of Tyrant on Pull\nactions.precombat+=/variable,name=first_tyrant_time,op=add,value=action.grimoire_felguard.execute_time,if=talent.grimoire_felguard.enabled\n# Accounts for the execution time of Vilefiend in the the setup of Tyrant on Pull\nactions.precombat+=/variable,name=first_tyrant_time,op=add,value=action.summon_vilefiend.execute_time,if=talent.summon_vilefiend.enabled\n# Accounts for the execution time of both Grimoire Felguard and Vilefiend in the tyrant Setup on Pull\nactions.precombat+=/variable,name=first_tyrant_time,op=add,value=gcd.max,if=talent.grimoire_felguard.enabled||talent.summon_vilefiend.enabled\n# Accounts for Tyrant own Cast Time and an additional Shadowbolt cast time\nactions.precombat+=/variable,name=first_tyrant_time,op=sub,value=action.summon_demonic_tyrant.execute_time+action.shadow_bolt.execute_time\n# Sets an absolute minimun of 10s for the First Tyrant Setup\nactions.precombat+=/variable,name=first_tyrant_time,op=min,value=10\nactions.precombat+=/variable,name=in_opener,op=set,value=1\n# Defines if the the Trinket 1 is a buff Trinket in the trinket logic\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff\n# Defines if the the Trinket 2 is a buff Trinket in the trinket logic\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff\n# For On Use Trinkets on slot 1 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell\n# For On Use Trinkets on slot 2 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell\n# Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.spymasters_web||trinket.1.is.imperfect_ascendancy_serum\n# Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.spymasters_web||trinket.2.is.imperfect_ascendancy_serum\n# Defines the Duration of the buff or an expected time for value of the trinket\nactions.precombat+=/variable,name=trinket_1_buff_duration,value=trinket.1.proc.any_dps.duration+(trinket.1.is.mirror_of_fractured_tomorrows*20)\n# Defines the Duration of the buff or an expected time for value of the trinket\nactions.precombat+=/variable,name=trinket_2_buff_duration,value=trinket.2.proc.any_dps.duration+(trinket.2.is.mirror_of_fractured_tomorrows*20)\n# Trinket Automatic Logic for Trinket 1\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.1.cooldown.duration=0)\n# Trinket Automatic Logic for Trinket 2\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.summon_demonic_tyrant.duration=0||cooldown.summon_demonic_tyrant.duration%%trinket.2.cooldown.duration=0)\n# Automatic Logic in case of 2 Buff Trinkets\nactions.precombat+=/variable,name=damage_trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&!variable.trinket_2_buffs&trinket.2.ilvl>trinket.1.ilvl\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%variable.trinket_2_buff_duration)*(1.5+trinket.2.has_buff.intellect)*(variable.trinket_2_sync))>(((trinket.1.cooldown.duration%variable.trinket_1_buff_duration)*(1.5+trinket.1.has_buff.intellect)*(variable.trinket_1_sync))*(1+((trinket.1.ilvl-trinket.2.ilvl)%100)))\nactions.precombat+=/power_siphon\nactions.precombat+=/lights_judgment\nactions.precombat+=/demonbolt,if=!buff.power_siphon.up||soul_shards.deficit>1\nactions.precombat+=/shadow_bolt\n\nactions+=/axe_toss\nactions+=/call_action_list,name=variables\nactions+=/potion,if=buff.tyrant.remains>10\nactions+=/variable,name=check_racials,op=set,value=pet.demonic_tyrant.active||boss&fight_remains<22\nactions+=/call_action_list,name=racials,if=variable.check_racials,use_off_gcd=1\nactions+=/call_action_list,name=items,use_off_gcd=1\n## actions+=/invoke_external_buff,name=power_infusion,if=fight_remains<15||pet.demonic_tyrant.active&fight_remains<100||fight_remains<25||(pet.demonic_tyrant.active||!talent.summon_demonic_tyrant&buff.dreadstalkers.up)\nactions+=/call_action_list,name=fight_end,if=boss&fight_remains<30\nactions+=/call_action_list,name=opener,strict=1,if=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=buff.demonic_core.up&(!talent.doom||buff.demonic_core.stack>1||debuff.doom.remains>10||debuff.doom.down)&(((!talent.fel_invocation||pet.felguard.cooldown.soul_strike.remains>gcd.max*2)&soul_shard<4))&!prev_gcd.1.demonbolt&!variable.pool_cores_for_tyrant\nactions+=/demonbolt,cycle_targets=1,if=buff.demonic_core.stack>=3-(talent.doom&debuff.doom.down)*2&soul_shard<=3&!variable.pool_cores_for_tyrant\nactions+=/power_siphon,if=buff.demonic_core.stack<3&cooldown.summon_demonic_tyrant.remains>25&!buff.demonic_power.up\nactions+=/demonic_strength,if=active_enemies>1\nactions+=/bilescourge_bombers,if=active_enemies>1\nactions+=/guillotine,if=active_enemies>1&(cooldown.demonic_strength.remains||!talent.demonic_strength)\nactions+=/ruination\nactions+=/infernal_bolt,if=buff.infernal_bolt.remains>cast_time&buff.infernal_bolt.remains<2*gcd.max||soul_shard<3&cooldown.summon_demonic_tyrant.remains>20\nactions+=/implosion,if=two_cast_imps>0&variable.impl&!prev_gcd.1.implosion&(active_enemies>3||active_enemies<=3&last_cast_imps>0)\nactions+=/demonbolt,if=variable.diabolic_ritual_remains>gcd.max&variable.diabolic_ritual_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=active_enemies<4&buff.demonic_core.stack>1&((soul_shard<4&!talent.soul_strike||pet.felguard.cooldown.soul_strike.remains>gcd.max*2&talent.fel_invocation)||soul_shard<3)&!variable.pool_cores_for_tyrant\nactions+=/demonbolt,if=buff.demonic_core.up&buff.tyrant.up&soul_shard<3\nactions+=/demonbolt,if=buff.demonic_core.stack>1&soul_shard<4\nactions+=/infernal_bolt\nactions+=/lights_judgment,if=!pet.tyrant.active&cooldown.tyrant_remains>15&active_enemies>1\nactions+=/shadow_bolt\nactions+=/felstorm,if=active_enemies>1&(cooldown.demonic_strength.remains||!talent.demonic_strength)&talent.fel_sunder\n\nactions.fight_end+=/grimoire_felguard,if=fight_remains<20\nactions.fight_end+=/ruination\nactions.fight_end+=/implosion,if=fight_remains<2*gcd.max&!prev_gcd.1.implosion\nactions.fight_end+=/demonbolt,if=fight_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,name=mirror_of_fractured_tomorrows,if=trinket.1.is.mirror_of_fractured_tomorrows&variable.trinket_priority=2||trinket.2.is.mirror_of_fractured_tomorrows&variable.trinket_priority=1\nactions.items+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(variable.damage_trinket_priority=1||trinket.2.cooldown.remains)\nactions.items+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(variable.damage_trinket_priority=2||trinket.1.cooldown.remains)\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,if=!equipped.neural_synapse_enhancer\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(pet.demonic_tyrant.active||fight_remains<=15)&!variable.trinket_1_buffs&!variable.trinket_2_buffs\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(pet.demonic_tyrant.active||fight_remains<=15||trinket.2.cooldown.remains>cooldown.summon_demonic_tyrant.remains)&variable.trinket_2_buffs\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(pet.demonic_tyrant.active||fight_remains<=15||trinket.1.cooldown.remains>cooldown.summon_demonic_tyrant.remains)&variable.trinket_1_buffs\n\nactions.opener+=/grimoire_felguard,if=soul_shard>=5-talent.fel_invocation\nactions.opener+=/summon_vilefiend,if=soul_shard=5\nactions.opener+=/shadow_bolt,if=soul_shard<5&cooldown.call_dreadstalkers.up\nactions.opener+=/call_dreadstalkers,if=soul_shard=5\nactions.opener+=/ruination\n\nactions.racials+=/berserking,use_off_gcd=1\nactions.racials+=/blood_fury\nactions.racials+=/fireblood\nactions.racials+=/ancestral_call\n\nactions.tyrant+=/call_action_list,name=racials,if=!variable.check_racials&(variable.imp_despawn&variable.imp_despawn<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.5+cast_time)||(buff.wild_imps.stack>9&soul_shards<2))&buff.dreadstalkers.up&(buff.vilefiend.up||!talent.summon_vilefiend.enabled))||(buff.dreadstalkers.up&buff.dreadstalkers.remains<gcd.max*2+cast_time&((buff.vilefiend.up&buff.vilefiend.remains>2*gcd.max)||!talent.summon_vilefiend.enabled)&((buff.grimoire_felguard.up&buff.grimoire_felguard.remains>2*gcd.max)||!talent.grimoire_felguard.enabled||cooldown.grimoire_felguard.remains>20))\nactions.tyrant+=/hand_of_guldan,if=(variable.imp_despawn||buff.dreadstalkers.remains)&soul_shard>=3||soul_shard=5\nactions.tyrant+=/infernal_bolt,if=variable.imp_despawn&soul_shard<3\nactions.tyrant+=/demonbolt,cycle_targets=1,if=variable.imp_despawn&buff.demonic_core.up&soul_shard<4||prev_gcd.1.call_dreadstalkers&soul_shard<4&buff.demonic_core.stack=4||buff.demonic_core.stack=4&soul_shard<4||buff.demonic_core.stack>=2&cooldown.power_siphon.remains<5\nactions.tyrant+=/ruination,if=variable.imp_despawn||soul_shard=5&cooldown.summon_vilefiend.remains>gcd.max*3\nactions.tyrant+=/shadow_bolt\nactions.tyrant+=/infernal_bolt\n\nactions.variables+=/variable,name=next_tyrant_cd,op=set,value=cooldown.summon_demonic_tyrant.remains_expected\nactions.variables+=/variable,name=in_opener,op=set,value=0,if=pet.demonic_tyrant.active\n## Handled internally [Hekili]\n## Sets an expected duration of valid Wild Imps on a tyrant Setup for the sake of casting Tyrant before expiration of Imps\n## actions.variables+=/variable,name=imp_despawn,op=set,value=2*spell_haste*6+0.58+time,if=prev_gcd.1.hand_of_guldan&buff.dreadstalkers.up&cooldown.summon_demonic_tyrant.remains<13&variable.imp_despawn=0\n## Checks the Wild Imps in a Tyrant Setup alongside Dreadstalkers for the sake of casting Tyrant before Expiration Dreadstalkers or Imps\n## actions.variables+=/variable,name=imp_despawn,op=max,value=buff.dreadstalkers.remains+time,if=variable.imp_despawn\n## Checks The Wild Imps in a Tyrant Setup alongside Grimoire Felguard for the sake of casting Tyrant before Expiration of Grimoire Felguard or Imps\n## actions.variables+=/variable,name=imp_despawn,op=max,value=buff.grimoire_felguard.remains+time,if=variable.imp_despawn&buff.grimoire_felguard.up\n## actions.variables+=/variable,name=imp_despawn,op=set,value=0,if=buff.tyrant.up\n# Defines the viability of Implosion when Tyrant is down\nactions.variables+=/variable,name=impl,op=set,value=buff.tyrant.down,if=active_enemies>1+(talent.sacrificed_souls.enabled)\n# Defines the Viability of Implosion while Tyrant is Up\nactions.variables+=/variable,name=impl,op=set,value=buff.tyrant.remains<6,if=active_enemies>2+(talent.sacrificed_souls.enabled)&active_enemies<5+(talent.sacrificed_souls.enabled)\n# Defines the Viability of Implosion while Tyrant is Up\nactions.variables+=/variable,name=impl,op=set,value=buff.tyrant.remains<8,if=active_enemies>4+(talent.sacrificed_souls.enabled)\n# Restricts Demonic Core usage for the sake of having 2 or more Demonic Cores on Tyrant Setup\nactions.variables+=/variable,name=pool_cores_for_tyrant,op=set,value=cooldown.summon_demonic_tyrant.remains<20&variable.next_tyrant_cd<20&(buff.demonic_core.stack<=2||!buff.demonic_core.up)&cooldown.summon_vilefiend.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\nactions.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\nactions.variables+=/felstorm,if=active_enemies>1&(cooldown.demonic_strength.remains||!talent.demonic_strength)&talent.fel_sunder",
|
|
["author"] = "SimC",
|
|
},
|
|
["Mistweaver"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20250329,
|
|
["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,
|
|
["criteria"] = "time_to_max_charges <= gcd.max",
|
|
["action"] = "renewing_mist",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "variable.tea_up",
|
|
["list_name"] = "focus_tea",
|
|
},
|
|
{
|
|
["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,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.tea_of_plenty_rsk.up || buff.tea_of_plenty_em.up || buff.tea_of_plenty_eh.up || buff.tea_of_serenity_em.up || buff.tea_of_serenity_rm.up || buff.tea_of_serenity_v.up || buff.thunder_focus_tea.up",
|
|
["var_name"] = "tea_up",
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["action"] = "thunder_focus_tea",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.jade_empowerment.up & buff.jadefire_teachings.up",
|
|
["action"] = "crackling_jade_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.zen_pulse.up",
|
|
["action"] = "vivify",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "settings.aoe_rsk",
|
|
["action"] = "rising_sun_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "settings.aoe_rsk",
|
|
["action"] = "rushing_wind_kick",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.celestial_conduit.enabled & ! talent.xuens_guidance.enabled ) || active_enemies >= 4",
|
|
["action"] = "spinning_crane_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,
|
|
},
|
|
},
|
|
["focus_tea"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid || buff.tea_of_serenity_rm.up",
|
|
["action"] = "renewing_mist",
|
|
},
|
|
{
|
|
["action"] = "rising_sun_kick",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tea_of_plenty_eh.up",
|
|
["action"] = "expel_harm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tea_of_serenity_v.up",
|
|
["action"] = "vivify",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tea_of_serenity_em.up || buff.tea_of_plenty_em.up",
|
|
["action"] = "enveloping_mist",
|
|
},
|
|
},
|
|
["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"] = "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"] = 20250329,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 13: Converted 'talent.awakened_jadefire' to 'talent.awakened_jadefire.enabled' (1x).\nLine 13: Converted 'talent.jadefire_teachings' to 'talent.jadefire_teachings.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 6: Converted 'talent.celestial_conduit' to 'talent.celestial_conduit.enabled' (1x).\nLine 6: Converted 'talent.xuens_guidance' to 'talent.xuens_guidance.enabled' (1x).\nLine 8: Converted 'talent.rushing_wind_kick' to 'talent.rushing_wind_kick.enabled' (1x).\n\nThe import for 'crane' required some automated changes.\nLine 1: Converted 'talent.ancient_teachings' to 'talent.ancient_teachings.enabled' (1x).\nLine 2: Unsupported action 'essence_font'.\nLine 2: Converted 'talent.ancient_teachings' to 'talent.ancient_teachings.enabled' (1x).\nLine 3: Converted 'talent.ancient_teachings' to 'talent.ancient_teachings.enabled' (1x).\nLine 7: Converted 'talent.awakened_jadefire' to 'talent.awakened_jadefire.enabled' (1x).\nLine 7: Converted 'talent.rushing_wind_kick' to 'talent.rushing_wind_kick.enabled' (1x).\nLine 8: Converted 'talent.ancient_concordance' to 'talent.ancient_concordance.enabled' (1x).\nLine 8: Converted 'talent.awakened_jadefire' to 'talent.awakened_jadefire.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\nImported 6 action lists.\n",
|
|
["profile"] = "actions.precombat+=/potion\nactions.precombat+=/chi_burst\nactions.precombat+=/variable,name=tea_up,value=buff.tea_of_plenty_rsk.up||buff.tea_of_plenty_em.up||buff.tea_of_plenty_eh.up||buff.tea_of_serenity_em.up||buff.tea_of_serenity_rm.up||buff.tea_of_serenity_v.up||buff.thunder_focus_tea.up\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+=/renewing_mist,if=time_to_max_charges<=gcd.max\nactions+=/call_action_list,name=focus_tea,if=variable.tea_up\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\n\nactions.focus_tea+=/renewing_mist,if=raid||buff.tea_of_serenity_rm.up\nactions.focus_tea+=/rising_sun_kick\n## only use these 3 if their rng buffs are up, don't spend real focus tea\nactions.focus_tea+=/expel_harm,if=buff.tea_of_plenty_eh.up\nactions.focus_tea+=/vivify,if=buff.tea_of_serenity_v.up\nactions.focus_tea+=/enveloping_mist,if=buff.tea_of_serenity_em.up||buff.tea_of_plenty_em.up\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\nactions.aoe+=/crackling_jade_lightning,if=buff.jade_empowerment.up&buff.jadefire_teachings.up\nactions.aoe+=/vivify,if=buff.zen_pulse.up\nactions.aoe+=/rising_sun_kick,if=settings.aoe_rsk\nactions.aoe+=/rushing_wind_kick,if=settings.aoe_rsk\nactions.aoe+=/spinning_crane_kick,if=(talent.celestial_conduit&!talent.xuens_guidance)||active_enemies>=4\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\n\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",
|
|
},
|
|
["Enhancement"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/dragonflight/engine/class_modules/sc_shaman.cpp",
|
|
["builtIn"] = true,
|
|
["date"] = 20250505,
|
|
["spec"] = 263,
|
|
["desc"] = "2025-05-05: SimC Update\n2025-04-17: Tweak/fix AOE MW spenders\n2025-04-16: Use upcoming priority; tweak Primordial Storm\n2025-04-15: Improve efficiency\n2025-04-13: Implement (some) Ashen Catalyst CDR\n + Add (disabled) utility entries to default\n2025-04-10: Use Primordial Storm before the buff falls off, even without Maelstrom/Legacy of the Frost Witch\n2025-03-10: SimC update\n2025-02-28: SimC update\n2025-02-26: Voltaic Blaze is fully distinct from Flame Shock\n + Revised Primordial Storm check for Elemental Blast / Totemic ST\n2025-02-25: Resync with SimC",
|
|
["lists"] = {
|
|
["single"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Single target action priority list",
|
|
["strict_if"] = "time <= 18",
|
|
["criteria"] = "time <= 18 & ( cooldown.doom_winds.remains = 0 || cooldown.sundering.remains = 0 || ! buff.hot_hand.up )",
|
|
["list_name"] = "single_open",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.maelstrom_weapon.stack >= 10 || buff.primordial_storm.remains <= 4 & buff.maelstrom_weapon.stack >= 5 )",
|
|
["action"] = "primordial_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking & ( talent.ashen_catalyst.enabled || talent.primordial_wave.enabled || talent.lashing_flames.enabled )",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 16 || cooldown.doom_winds.remains > 15 || cooldown.doom_winds.remains < 7 || buff.winning_streak.stack = 1 & buff.maelstrom_weapon.stack > 7",
|
|
["action"] = "feral_spirit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.thorims_invocation.enabled & buff.maelstrom_weapon.stack > 0 & ti_lightning_bolt",
|
|
["action"] = "windstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.legacy_of_the_frost_witch.enabled || buff.legacy_of_the_frost_witch.up ) & ( cooldown.feral_spirit.remains > 30 || cooldown.feral_spirit.remains < 2 )",
|
|
["action"] = "doom_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.flame_shock.ticking & ( raid_event.adds.in > action.primordial_wave.cooldown || raid_event.adds.in < 6 )",
|
|
["action"] = "primordial_wave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( dot.flame_shock.ticking || ! talent.primordial_wave.enabled || ! talent.ashen_catalyst.enabled )",
|
|
["action"] = "ascendance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.thorims_invocation.enabled & buff.maelstrom_weapon.stack > 0 & ti_lightning_bolt",
|
|
["action"] = "windstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ! talent.overflowing_maelstrom.enabled & buff.maelstrom_weapon.stack >= 5 ) || ( buff.maelstrom_weapon.stack >= 9 ) ) & charges_fractional >= 1.8",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.tempest.stack = buff.tempest.max_stack & ( tempest_mael_count > 30 || buff.awakening_storms.stack = 3 ) & buff.maelstrom_weapon.stack >= 9 )",
|
|
["action"] = "tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 9 & ! buff.primordial_storm.up & buff.arc_discharge.stack > 1",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ! talent.overflowing_maelstrom.enabled & buff.maelstrom_weapon.stack >= 5 ) || ( buff.maelstrom_weapon.stack >= 9 ) )",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 9",
|
|
["action"] = "tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 9",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.hot_hand.up & ( buff.ashen_catalyst.stack = buff.ashen_catalyst.max_stack ) ) || ( dot.flame_shock.remains <= 2 & ! talent.voltaic_blaze.enabled ) || ( talent.lashing_flames.enabled & ( debuff.lashing_flames.down ) )",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.doom_winds.up & buff.electrostatic_wager.stack > 1 ) || buff.electrostatic_wager.stack > 8",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.doom_winds.up || buff.stormblast.stack > 0",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unrelenting_storms.enabled & talent.alpha_wolf.enabled & alpha_wolf_min_remains = 0",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_hand.up",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "set_bonus.tww2_4pc",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["action"] = "voltaic_blaze",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "stormstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.elemental_assault.enabled & talent.molten_assault.enabled & dot.flame_shock.ticking",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["action"] = "ice_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & ! buff.primordial_storm.up",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hailstorm.up",
|
|
["action"] = "frost_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in >= action.sundering.cooldown",
|
|
["action"] = "sundering",
|
|
},
|
|
{
|
|
["action"] = "crash_lightning",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "frost_shock",
|
|
["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 || boss & 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,
|
|
["action"] = "primordial_wave",
|
|
["criteria"] = "! buff.primordial_wave.up",
|
|
["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,
|
|
["action"] = "flame_shock",
|
|
["criteria"] = "refreshable & ( talent.fire_nova.enabled || talent.primordial_wave.enabled ) & ( active_dot.flame_shock < active_enemies ) & active_dot.flame_shock < 6",
|
|
["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",
|
|
},
|
|
},
|
|
["aoe_open"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Multi target opener priority list",
|
|
["criteria"] = "! ticking",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.electrostatic_wager.stack > 9 & buff.doom_winds.up ) || ! buff.crash_lightning.up",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.flame_shock < active_enemies & active_dot.flame_shock < 3",
|
|
["action"] = "voltaic_blaze",
|
|
},
|
|
{
|
|
["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 < 3",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.maelstrom_weapon.stack >= 4 ) & dot.flame_shock.ticking & ( active_dot.flame_shock >= active_enemies || active_dot.flame_shock = 6 )",
|
|
["action"] = "primordial_wave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 16 || buff.maelstrom_weapon.stack >= 9",
|
|
["action"] = "feral_spirit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 9 || boss & fight_remains < 9",
|
|
["action"] = "doom_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( dot.flame_shock.ticking || ! talent.molten_assault.enabled ) & ti_chain_lightning & ( buff.legacy_of_the_frost_witch.up || ! talent.legacy_of_the_frost_witch.enabled ) & ! buff.doom_winds.up || boss & fight_remains < 16",
|
|
["action"] = "ascendance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.maelstrom_weapon.stack >= 9 ) & ( buff.legacy_of_the_frost_witch.up || ! talent.legacy_of_the_frost_witch.enabled )",
|
|
["action"] = "primordial_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tempest",
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 9 & buff.arc_discharge.down",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.electrostatic_wager.stack > 4 )",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "windstrike",
|
|
["criteria"] = "talent.thorims_invocation.enabled & ti_chain_lightning",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "chain_lightning",
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & ( ! buff.primordial_storm.up || ! buff.legacy_of_the_frost_witch.up ) & buff.doom_winds.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "chain_lightning",
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 9 & ( ! buff.primordial_storm.up || ! buff.legacy_of_the_frost_witch.up )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.converging_storms.stack = 6 & buff.stormblast.stack > 1",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["action"] = "crash_lightning",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "voltaic_blaze",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "stormstrike",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["single_totemic_open"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Single target opener priority list for the Totemic hero talent tree",
|
|
["criteria"] = "! ticking",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! pet.surging_totem.active & talent.lashing_flames.enabled & debuff.lashing_flames.down",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["action"] = "surging_totem",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "primordial_wave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.legacy_of_the_frost_witch.enabled || buff.legacy_of_the_frost_witch.up || fight_remains < 16",
|
|
["action"] = "feral_spirit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.legacy_of_the_frost_witch.enabled || buff.legacy_of_the_frost_witch.up || boss & fight_remains < 9",
|
|
["action"] = "doom_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.maelstrom_weapon.stack >= 10 ) & ( buff.legacy_of_the_frost_witch.up || ! talent.legacy_of_the_frost_witch.enabled )",
|
|
["action"] = "primordial_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_hand.up",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.doom_winds.up & buff.legacy_of_the_frost_witch.up",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.legacy_of_the_frost_witch.up",
|
|
["action"] = "sundering",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack = 10",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack = 10",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["action"] = "stormstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lava_lash",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["single_totemic"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Single target action priority list for the Totemic hero talent tree",
|
|
["strict_if"] = "time < 20",
|
|
["criteria"] = "time < 20 & ( cooldown.doom_winds.remains = 0 || cooldown.sundering.remains = 0 || ! buff.hot_hand.up )",
|
|
["list_name"] = "single_totemic_open",
|
|
},
|
|
{
|
|
["action"] = "surging_totem",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "ti_lightning_bolt & pet.surging_totem.remains > 4 & ( buff.totemic_rebound.stack >= 3 || buff.maelstrom_weapon.stack > 0 )",
|
|
["action"] = "ascendance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking & ( talent.ashen_catalyst.enabled || talent.primordial_wave.enabled )",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_hand.up",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 16 || ( ( cooldown.doom_winds.remains > 23 || cooldown.doom_winds.remains < 7 || buff.winning_streak.stack = 1 & buff.maelstrom_weapon.stack > 7 ) & ( cooldown.primordial_wave.remains < 20 || buff.primordial_storm.up || ! talent.primordial_storm.enabled ) )",
|
|
["action"] = "feral_spirit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.flame_shock.ticking & ( raid_event.adds.in > action.primordial_wave.cooldown ) || raid_event.adds.in < 6",
|
|
["action"] = "primordial_wave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.legacy_of_the_frost_witch.enabled || buff.legacy_of_the_frost_witch.up",
|
|
["action"] = "doom_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.maelstrom_weapon.stack >= 10 ) & ( ( cooldown.doom_winds.remains >= buff.primordial_storm.remains ) || buff.doom_winds.up || ! talent.doom_winds.enabled || ( buff.primordial_storm.remains < 2 * gcd.max ) )",
|
|
["action"] = "primordial_storm",
|
|
},
|
|
{
|
|
["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.thorims_invocation.enabled & buff.maelstrom_weapon.stack > 0 & ti_lightning_bolt",
|
|
["action"] = "windstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.legacy_of_the_frost_witch.up & ( ( cooldown.ascendance.remains >= 10 & talent.ascendance.enabled ) || ! talent.ascendance.enabled ) & pet.surging_totem.active & buff.totemic_rebound.stack >= 3 & ! buff.ascendance.up",
|
|
["action"] = "sundering",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unrelenting_storms.enabled & talent.alpha_wolf.enabled & alpha_wolf_min_remains = 0",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.thorims_invocation.enabled & buff.maelstrom_weapon.stack >= 10 & buff.whirling_air.down",
|
|
["action"] = "lava_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.maelstrom_weapon.stack >= 10 ) & ( buff.primordial_storm.down || buff.primordial_storm.remains > 4 )",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.doom_winds.up & buff.legacy_of_the_frost_witch.up",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.maelstrom_weapon.stack >= 10 ) & ( buff.primordial_storm.down || buff.primordial_storm.remains > 4 )",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.electrostatic_wager.stack > 4",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.doom_winds.up || buff.stormblast.stack > 1",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.whirling_fire.up || buff.ashen_catalyst.stack >= 8",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["action"] = "windstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "stormstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lava_lash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "set_bonus.tww2_4pc",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["action"] = "voltaic_blaze",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unrelenting_storms.enabled",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.ice_strike.up",
|
|
["action"] = "ice_strike",
|
|
},
|
|
{
|
|
["action"] = "crash_lightning",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "frost_shock",
|
|
["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",
|
|
},
|
|
},
|
|
["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"] = false,
|
|
["action"] = "lightning_lasso",
|
|
["criteria"] = "! target.is_boss & debuff.casting.up & debuff.casting.v2 = 0 & debuff.casting.remains > gcd.remains & debuff.casting.remains < gcd.remains + gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = false,
|
|
["action"] = "thunderstorm",
|
|
["criteria"] = "talent.thundershock.enabled & ! target.is_boss & debuff.casting.up & debuff.casting.v2 = 0 & debuff.casting.remains > gcd.remains & debuff.casting.remains < gcd.remains + gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = false,
|
|
["action"] = "capacitor_totem",
|
|
["criteria"] = "! target.is_boss & debuff.casting.up & debuff.casting.v2 = 0 & debuff.casting.remains > gcd.remains & debuff.casting.remains < gcd.remains + gcd.max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "purge",
|
|
["criteria"] = "buff.dispellable_magic.up",
|
|
["line_cd"] = "settings.purge_icd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dispellable_magic.up",
|
|
["action"] = "greater_purge",
|
|
},
|
|
{
|
|
["enabled"] = false,
|
|
["action"] = "poison_cleansing_totem",
|
|
["criteria"] = "buff.dispellable_poison.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "elementium_pocket_anvil",
|
|
["name"] = "elementium_pocket_anvil",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "algethar_puzzle_box",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "algethar_puzzle_box",
|
|
["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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["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 ) )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["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 ) )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "beacon_to_the_beyond",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "beacon_to_the_beyond",
|
|
["criteria"] = "( ! buff.ascendance.up & ! buff.feral_spirit.up & ! buff.doom_winds.up ) || boss & ( fight_remains % 150 <= 5 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "manic_grieftorch",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "manic_grieftorch",
|
|
["criteria"] = "( ! buff.ascendance.up & ! buff.feral_spirit.up & ! buff.doom_winds.up ) || boss & ( fight_remains % 120 <= 5 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "house_of_cards",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "house_of_cards",
|
|
["criteria"] = "buff.ascendance.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "funhouse_lens",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "funhouse_lens",
|
|
["criteria"] = "buff.ascendance.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "! variable.trinket1_is_weird & ! trinket.t1.has_use_buff",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.trinket2_is_weird & ! trinket.t2.has_use_buff",
|
|
["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,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.skyfury.down || active_dot.skyfury < group_members",
|
|
["action"] = "skyfury",
|
|
},
|
|
{
|
|
["action"] = "lightning_shield",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.elemental_orbit.enabled & buff.earth_shield.down",
|
|
["action"] = "earth_shield",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Multi target action priority list",
|
|
["criteria"] = "talent.elemental_spirits.enabled || talent.alpha_wolf.enabled",
|
|
["action"] = "feral_spirit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "time < 15",
|
|
["list_name"] = "aoe_open",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.molten_assault.enabled & ! ticking",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( dot.flame_shock.ticking || ! talent.molten_assault.enabled ) & ti_chain_lightning || boss & fight_remains < 1",
|
|
["action"] = "ascendance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tempest",
|
|
["criteria"] = "! buff.arc_discharge.stack >= 1 & ( ( buff.maelstrom_weapon.stack = buff.maelstrom_weapon.max_stack & ! talent.raging_maelstrom.enabled ) || ( buff.maelstrom_weapon.stack >= 9 ) ) || ( buff.maelstrom_weapon.stack >= 5 & ( tempest_mael_count > 30 ) )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 16 || cooldown.doom_winds.remains > 15 || cooldown.doom_winds.remains < 7 || buff.winning_streak.stack = 1 & buff.maelstrom_weapon.stack > 7",
|
|
["action"] = "feral_spirit",
|
|
},
|
|
{
|
|
["action"] = "doom_winds",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.flame_shock.ticking & ( active_dot.flame_shock >= active_enemies || active_dot.flame_shock = 6 )",
|
|
["action"] = "primordial_wave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.maelstrom_weapon.stack >= 10 ) & ( buff.doom_winds.up || ! talent.doom_winds.enabled || ( cooldown.doom_winds.remains > buff.primordial_storm.remains ) || ( buff.primordial_storm.remains < 2 * gcd.max ) )",
|
|
["action"] = "primordial_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.crash_lightning.up || ( buff.maelstrom_weapon.stack < 10 & buff.tempest.up ) || buff.arc_discharge.down",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "windstrike",
|
|
["criteria"] = "talent.thorims_invocation.enabled & buff.maelstrom_weapon.stack > 0 & ti_chain_lightning",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.converging_storms.enabled & talent.alpha_wolf.enabled",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.converging_storms.stack = 6 & buff.stormblast.stack > 0 & buff.legacy_of_the_frost_witch.up & buff.maelstrom_weapon.stack <= 8",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack <= 8",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack <= 8",
|
|
["action"] = "voltaic_blaze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "chain_lightning",
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & ! buff.primordial_storm.up & ( cooldown.crash_lightning.remains >= 1 || ! talent.alpha_wolf.enabled )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["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.stormblast.enabled & talent.stormflurry.enabled",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["action"] = "voltaic_blaze",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "lava_lash",
|
|
["criteria"] = "talent.lashing_flames.enabled || talent.molten_assault.enabled & dot.flame_shock.ticking",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "flame_shock",
|
|
["criteria"] = "( talent.fire_nova.enabled || talent.primordial_wave.enabled ) & ( active_dot.flame_shock < active_enemies ) & active_dot.flame_shock < 6",
|
|
["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",
|
|
["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,
|
|
["action"] = "chain_lightning",
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & ! buff.primordial_storm.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.hailstorm.enabled",
|
|
["action"] = "frost_shock",
|
|
},
|
|
},
|
|
["aoe_totemic_open"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking & ! ( active_dot.flame_shock >= active_enemies || active_dot.flame_shock = 6 )",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! pet.surging_totem.active & ! ( active_dot.flame_shock >= active_enemies || active_dot.flame_shock = 6 )",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["action"] = "surging_totem",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.swirling_maelstrom.enabled & dot.flame_shock.ticking & ( active_dot.flame_shock >= active_enemies || active_dot.flame_shock = 6 )",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["action"] = "feral_spirit",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.flame_shock.ticking & ( active_dot.flame_shock >= active_enemies || active_dot.flame_shock = 6 )",
|
|
["action"] = "primordial_wave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.maelstrom_weapon.stack >= 10 ) & ( cooldown.doom_winds.remains > 3 ) & ( buff.doom_winds.remains <= gcd.max || ! buff.doom_winds.up & cooldown.doom_winds.remains > 15 ) || buff.primordial_storm.remains < 3 * gcd.max",
|
|
["action"] = "primordial_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 10 & ! buff.legacy_of_the_frost_witch.up & cooldown.doom_winds.remains = 0",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.legacy_of_the_frost_witch.enabled || buff.legacy_of_the_frost_witch.up",
|
|
["action"] = "doom_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.electrostatic_wager.stack > 9 & buff.doom_winds.up ) || ! buff.crash_lightning.up",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_hand.up",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.legacy_of_the_frost_witch.up || ( buff.earthen_weapon.stack >= 2 & buff.primordial_storm.up )",
|
|
["action"] = "sundering",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.legacy_of_the_frost_witch.up & buff.whirling_fire.up )",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.earthen_weapon.stack >= 2 & buff.primordial_storm.up & buff.doom_winds.up )",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 10",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 10",
|
|
["action"] = "chain_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hailstorm.enabled & buff.hailstorm.up & pet.searing_totem.active",
|
|
["action"] = "frost_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.searing_totem.active & dot.flame_shock.ticking & ( active_dot.flame_shock >= active_enemies || active_dot.flame_shock = 6 )",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["action"] = "ice_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack < 10 & ! buff.legacy_of_the_frost_witch.up",
|
|
["action"] = "stormstrike",
|
|
},
|
|
{
|
|
["action"] = "lava_lash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hailstorm.enabled & buff.hailstorm.up & pet.searing_totem.active",
|
|
["action"] = "frost_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.crashing_storms.enabled",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.flame_shock.ticking & ( active_dot.flame_shock >= active_enemies || active_dot.flame_shock = 6 )",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hailstorm.enabled & buff.hailstorm.up",
|
|
["action"] = "frost_shock",
|
|
},
|
|
{
|
|
["action"] = "crash_lightning",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hailstorm.enabled & ! buff.ice_strike.up",
|
|
["action"] = "ice_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & ! buff.primordial_storm.up",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & ! buff.primordial_storm.up",
|
|
["action"] = "chain_lightning",
|
|
},
|
|
{
|
|
["action"] = "stormstrike",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["single_open"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Single target opener priority list",
|
|
["criteria"] = "! ticking",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.flame_shock < 3 & ! buff.ascendance.up",
|
|
["action"] = "voltaic_blaze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.maelstrom_weapon.stack >= 4 ) & dot.flame_shock.ticking & ( active_dot.flame_shock >= active_enemies || active_dot.flame_shock = 6 )",
|
|
["action"] = "primordial_wave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.legacy_of_the_frost_witch.enabled || buff.legacy_of_the_frost_witch.up || fight_remains < 16",
|
|
["action"] = "feral_spirit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.legacy_of_the_frost_witch.enabled || buff.legacy_of_the_frost_witch.up || boss & fight_remains < 9",
|
|
["action"] = "doom_winds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.legacy_of_the_frost_witch.enabled || buff.legacy_of_the_frost_witch.up || boss & fight_remains < 16",
|
|
["action"] = "ascendance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.maelstrom_weapon.stack >= 10 ) & ( buff.legacy_of_the_frost_witch.up || ! talent.legacy_of_the_frost_witch.enabled )",
|
|
["action"] = "primordial_storm",
|
|
},
|
|
{
|
|
["action"] = "windstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5",
|
|
["action"] = "tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5",
|
|
["action"] = "lightning_bolt",
|
|
},
|
|
{
|
|
["action"] = "stormstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "set_bonus.tww2_4pc",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["action"] = "voltaic_blaze",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.elemental_assault.enabled & talent.molten_assault.enabled & dot.flame_shock.ticking",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["action"] = "ice_strike",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["aoe_totemic"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "time <= 16 & ( cooldown.doom_winds.remains = 0 || cooldown.sundering.remains = 0 || ! buff.hot_hand.up )",
|
|
["strict_if"] = "time <= 16",
|
|
["list_name"] = "aoe_totemic_open",
|
|
},
|
|
{
|
|
["action"] = "surging_totem",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "ti_chain_lightning",
|
|
["action"] = "ascendance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.crashing_storms.enabled & ( active_enemies >= 15 - 5 * talent.unruly_winds.enabled )",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 16 || ( ( cooldown.doom_winds.remains > 15 || cooldown.doom_winds.remains < 7 || buff.winning_streak.stack = 1 & buff.maelstrom_weapon.stack > 7 ) & ( cooldown.primordial_wave.remains < 2 || buff.primordial_storm.up || ! talent.primordial_storm.enabled ) )",
|
|
["action"] = "feral_spirit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.maelstrom_weapon.stack >= 10 ) & ( cooldown.doom_winds.remains > 3 ) & ( buff.doom_winds.remains <= 3 || ! buff.doom_winds.up & cooldown.doom_winds.remains > 15 || buff.earthen_weapon.stack >= 4 ) || buff.primordial_storm.remains < 3 * gcd.max",
|
|
["action"] = "primordial_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking & ( talent.ashen_catalyst.enabled || talent.primordial_wave.enabled ) & ( active_dot.flame_shock < active_enemies || active_dot.flame_shock < 6 )",
|
|
["action"] = "flame_shock",
|
|
},
|
|
{
|
|
["action"] = "doom_winds",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.flame_shock.ticking & ( active_dot.flame_shock >= active_enemies || active_dot.flame_shock = 6 )",
|
|
["action"] = "primordial_wave",
|
|
},
|
|
{
|
|
["action"] = "windstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hot_hand.up",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.electrostatic_wager.stack > 8",
|
|
["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"] = "buff.maelstrom_weapon.stack >= 10 & buff.electrostatic_wager.stack > 4 & ! buff.cl_crash_lightning.up & buff.doom_winds.up",
|
|
["action"] = "chain_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 10",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 10 & ( buff.primordial_storm.down || buff.primordial_storm.remains > gcd.max * 4 )",
|
|
["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 )",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["action"] = "voltaic_blaze",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( dot.flame_shock.ticking & ( active_dot.flame_shock >= active_enemies || active_dot.flame_shock = 6 ) ) & pet.searing_totem.active",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.molten_assault.enabled & dot.flame_shock.ticking",
|
|
["action"] = "lava_lash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hailstorm.enabled & buff.hailstorm.up & pet.searing_totem.active",
|
|
["action"] = "frost_shock",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.crashing_storms.enabled",
|
|
["action"] = "crash_lightning",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.flame_shock.ticking & ( active_dot.flame_shock >= active_enemies || active_dot.flame_shock = 6 )",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hailstorm.enabled & buff.hailstorm.up",
|
|
["action"] = "frost_shock",
|
|
},
|
|
{
|
|
["action"] = "crash_lightning",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hailstorm.enabled & ! buff.ice_strike.up",
|
|
["action"] = "ice_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & ( buff.primordial_storm.down || buff.primordial_storm.remains > gcd.max * 4 )",
|
|
["action"] = "elemental_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.maelstrom_weapon.stack >= 5 & ( buff.primordial_storm.down || buff.primordial_storm.remains > gcd.max * 4 )",
|
|
["action"] = "chain_lightning",
|
|
},
|
|
{
|
|
["action"] = "stormstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["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 >= active_enemies )",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["action"] = "voltaic_blaze",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["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"] = "active_dot.flame_shock >= 3",
|
|
["action"] = "fire_nova",
|
|
},
|
|
{
|
|
["action"] = "ice_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lava_lash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "crash_lightning",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking",
|
|
["action"] = "flame_shock",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250505,
|
|
["warnings"] = "The import for 'precombat' required some automated changes.\nLine 6: Converted 'trinket.1.is.algethar_puzzle_box' to 'trinket.t1.is.algethar_puzzle_box' (1x).\nLine 6: Converted 'trinket.1.is.manic_grieftorch' to 'trinket.t1.is.manic_grieftorch' (1x).\nLine 6: Converted 'trinket.1.is.elementium_pocket_anvil' to 'trinket.t1.is.elementium_pocket_anvil' (1x).\nLine 6: Converted 'trinket.1.is.beacon_to_the_beyond' to 'trinket.t1.is.beacon_to_the_beyond' (1x).\nLine 7: Converted 'trinket.2.is.algethar_puzzle_box' to 'trinket.t2.is.algethar_puzzle_box' (1x).\nLine 7: Converted 'trinket.2.is.manic_grieftorch' to 'trinket.t2.is.manic_grieftorch' (1x).\nLine 7: Converted 'trinket.2.is.elementium_pocket_anvil' to 'trinket.t2.is.elementium_pocket_anvil' (1x).\nLine 7: Converted 'trinket.2.is.beacon_to_the_beyond' to 'trinket.t2.is.beacon_to_the_beyond' (1x).\nLine 8: 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 '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 10: 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 11: Converted 'trinket.1.has_use_buff' to 'trinket.t1.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.buff.any.duration' to 'trinket.t1.buff.any.duration' (1x).\nLine 11: Converted 'trinket.1.buff.any.duration' to 'trinket.t1.buff_duration' (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 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 12: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 12: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 12: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 12: Converted 'trinket.2.buff.any.duration' to 'trinket.t2.buff.any.duration' (1x).\nLine 12: Converted 'trinket.2.buff.any.duration' to 'trinket.t2.buff_duration' (1x).\nLine 12: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 12: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 12: Converted 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 13: 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 14: 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 17: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 18: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 19: 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 20: 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 21: 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 22: 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\nImported 11 action lists.\n",
|
|
["profile"] = "actions.precombat+=/windfury_weapon\nactions.precombat+=/flametongue_weapon\nactions.precombat+=/skyfury,if=buff.skyfury.down||active_dot.skyfury<group_members\nactions.precombat+=/lightning_shield\nactions.precombat+=/earth_shield,if=talent.elemental_orbit&buff.earth_shield.down\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+=/lightning_lasso,enabled=0,if=!target.is_boss&debuff.casting.up&debuff.casting.v2=0&debuff.casting.remains>gcd.remains&debuff.casting.remains<gcd.remains+gcd.max\nactions+=/thunderstorm,enabled=0,if=talent.thundershock.enabled&!target.is_boss&debuff.casting.up&debuff.casting.v2=0&debuff.casting.remains>gcd.remains&debuff.casting.remains<gcd.remains+gcd.max\nactions+=/capacitor_totem,enabled=0,if=!target.is_boss&debuff.casting.up&debuff.casting.v2=0&debuff.casting.remains>gcd.remains&debuff.casting.remains<gcd.remains+gcd.max\nactions+=/purge,line_cd=settings.purge_icd,if=buff.dispellable_magic.up\nactions+=/greater_purge,if=buff.dispellable_magic.up\nactions+=/poison_cleansing_totem,enabled=0,if=buff.dispellable_poison.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,name=house_of_cards,use_off_gcd=1,if=buff.ascendance.up\nactions+=/use_item,name=funhouse_lens,use_off_gcd=1,if=buff.ascendance.up\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\n# Multi target action priority list\nactions.aoe+=/feral_spirit,if=talent.elemental_spirits.enabled||talent.alpha_wolf.enabled\nactions.aoe+=/call_action_list,name=aoe_open,strict=1,if=time<15\nactions.aoe+=/flame_shock,if=talent.molten_assault.enabled&!ticking\nactions.aoe+=/ascendance,if=(dot.flame_shock.ticking||!talent.molten_assault.enabled)&ti_chain_lightning||boss&fight_remains<1\nactions.aoe+=/tempest,cycle_targets=1,if=!buff.arc_discharge.stack>=1&((buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack&!talent.raging_maelstrom.enabled)||(buff.maelstrom_weapon.stack>=9))||(buff.maelstrom_weapon.stack>=5&(tempest_mael_count>30))\nactions.aoe+=/feral_spirit,if=fight_remains<16||cooldown.doom_winds.remains>15||cooldown.doom_winds.remains<7||buff.winning_streak.stack=1&buff.maelstrom_weapon.stack>7\nactions.aoe+=/doom_winds\nactions.aoe+=/primordial_wave,if=dot.flame_shock.ticking&(active_dot.flame_shock>=active_enemies||active_dot.flame_shock=6)\nactions.aoe+=/primordial_storm,if=(buff.maelstrom_weapon.stack>=10)&(buff.doom_winds.up||!talent.doom_winds.enabled||(cooldown.doom_winds.remains>buff.primordial_storm.remains)||(buff.primordial_storm.remains<2*gcd))\nactions.aoe+=/crash_lightning,if=!buff.crash_lightning.up||(buff.maelstrom_weapon.stack<10&buff.tempest.up)||buff.arc_discharge.down\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.converging_storms.enabled&talent.alpha_wolf.enabled\nactions.aoe+=/stormstrike,if=buff.converging_storms.stack=6&buff.stormblast.stack>0&buff.legacy_of_the_frost_witch.up&buff.maelstrom_weapon.stack<=8\nactions.aoe+=/crash_lightning,if=buff.maelstrom_weapon.stack<=8\nactions.aoe+=/voltaic_blaze,if=buff.maelstrom_weapon.stack<=8\nactions.aoe+=/chain_lightning,cycle_targets=1,if=buff.maelstrom_weapon.stack>=5&!buff.primordial_storm.up&(cooldown.crash_lightning.remains>=1||!talent.alpha_wolf.enabled)\nactions.aoe+=/fire_nova,if=active_dot.flame_shock=6||(active_dot.flame_shock>=4&active_dot.flame_shock>=active_enemies)\nactions.aoe+=/stormstrike,if=talent.stormblast.enabled&talent.stormflurry.enabled\nactions.aoe+=/voltaic_blaze\nactions.aoe+=/lava_lash,cycle_targets=1,if=talent.lashing_flames.enabled||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=(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\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+=/chain_lightning,cycle_targets=1,if=buff.maelstrom_weapon.stack>=5&!buff.primordial_storm.up\nactions.aoe+=/flame_shock,if=!ticking\nactions.aoe+=/frost_shock,if=!talent.hailstorm.enabled\n\n# Multi target opener priority list\nactions.aoe_open+=/flame_shock,if=!ticking\nactions.aoe_open+=/crash_lightning,if=(buff.electrostatic_wager.stack>9&buff.doom_winds.up)||!buff.crash_lightning.up\nactions.aoe_open+=/voltaic_blaze,if=active_dot.flame_shock<active_enemies&active_dot.flame_shock<3\nactions.aoe_open+=/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<3\nactions.aoe_open+=/primordial_wave,if=(buff.maelstrom_weapon.stack>=4)&dot.flame_shock.ticking&(active_dot.flame_shock>=active_enemies||active_dot.flame_shock=6)\nactions.aoe_open+=/feral_spirit,if=fight_remains<16||buff.maelstrom_weapon.stack>=9\nactions.aoe_open+=/doom_winds,if=buff.maelstrom_weapon.stack>=9||boss&fight_remains<9\nactions.aoe_open+=/ascendance,if=(dot.flame_shock.ticking||!talent.molten_assault.enabled)&ti_chain_lightning&(buff.legacy_of_the_frost_witch.up||!talent.legacy_of_the_frost_witch.enabled)&!buff.doom_winds.up||boss&fight_remains<16\nactions.aoe_open+=/primordial_storm,if=(buff.maelstrom_weapon.stack>=9)&(buff.legacy_of_the_frost_witch.up||!talent.legacy_of_the_frost_witch.enabled)\nactions.aoe_open+=/tempest,cycle_targets=1,if=buff.maelstrom_weapon.stack>=9&buff.arc_discharge.down\nactions.aoe_open+=/crash_lightning,if=(buff.electrostatic_wager.stack>4)\nactions.aoe_open+=/windstrike,cycle_targets=1,if=talent.thorims_invocation.enabled&ti_chain_lightning\nactions.aoe_open+=/chain_lightning,cycle_targets=1,if=buff.maelstrom_weapon.stack>=5&(!buff.primordial_storm.up||!buff.legacy_of_the_frost_witch.up)&buff.doom_winds.up\nactions.aoe_open+=/chain_lightning,cycle_targets=1,if=buff.maelstrom_weapon.stack>=9&(!buff.primordial_storm.up||!buff.legacy_of_the_frost_witch.up)\nactions.aoe_open+=/stormstrike,if=buff.converging_storms.stack=6&buff.stormblast.stack>1\nactions.aoe_open+=/crash_lightning\nactions.aoe_open+=/voltaic_blaze\nactions.aoe_open+=/stormstrike\n\n## Multi target action priority list for the Totemic hero talent tree\nactions.aoe_totemic+=/call_action_list,name=aoe_totemic_open,strict_if=time<=16,if=time<=16&(cooldown.doom_winds.remains=0||cooldown.sundering.remains=0||!buff.hot_hand.up)\nactions.aoe_totemic+=/surging_totem\nactions.aoe_totemic+=/ascendance,if=ti_chain_lightning\nactions.aoe_totemic+=/crash_lightning,if=talent.crashing_storms.enabled&(active_enemies>=15-5*talent.unruly_winds.enabled)\nactions.aoe_totemic+=/feral_spirit,if=fight_remains<16||((cooldown.doom_winds.remains>15||cooldown.doom_winds.remains<7||buff.winning_streak.stack=1&buff.maelstrom_weapon.stack>7)&(cooldown.primordial_wave.remains<2||buff.primordial_storm.up||!talent.primordial_storm.enabled))\nactions.aoe_totemic+=/primordial_storm,if=(buff.maelstrom_weapon.stack>=10)&(cooldown.doom_winds.remains>3)&(buff.doom_winds.remains<=3||!buff.doom_winds.up&cooldown.doom_winds.remains>15||buff.earthen_weapon.stack>=4)||buff.primordial_storm.remains<3*gcd.max\nactions.aoe_totemic+=/flame_shock,if=!ticking&(talent.ashen_catalyst.enabled||talent.primordial_wave.enabled)&(active_dot.flame_shock<active_enemies||active_dot.flame_shock<6)\nactions.aoe_totemic+=/doom_winds\nactions.aoe_totemic+=/primordial_wave,if=dot.flame_shock.ticking&(active_dot.flame_shock>=active_enemies||active_dot.flame_shock=6)\nactions.aoe_totemic+=/windstrike\nactions.aoe_totemic+=/lava_lash,if=buff.hot_hand.up\nactions.aoe_totemic+=/crash_lightning,if=buff.electrostatic_wager.stack>8\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+=/chain_lightning,if=buff.maelstrom_weapon.stack>=10&buff.electrostatic_wager.stack>4&!buff.cl_crash_lightning.up&buff.doom_winds.up\nactions.aoe_totemic+=/elemental_blast,if=buff.maelstrom_weapon.stack>=10\nactions.aoe_totemic+=/chain_lightning,if=buff.maelstrom_weapon.stack>=10&(buff.primordial_storm.down||buff.primordial_storm.remains>gcd.max*4)\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+=/voltaic_blaze\nactions.aoe_totemic+=/fire_nova,if=(dot.flame_shock.ticking&(active_dot.flame_shock>=active_enemies||active_dot.flame_shock=6))&pet.searing_totem.active\nactions.aoe_totemic+=/lava_lash,if=talent.molten_assault.enabled&dot.flame_shock.ticking\nactions.aoe_totemic+=/frost_shock,if=talent.hailstorm.enabled&buff.hailstorm.up&pet.searing_totem.active\nactions.aoe_totemic+=/crash_lightning,if=talent.crashing_storms.enabled\nactions.aoe_totemic+=/fire_nova,if=dot.flame_shock.ticking&(active_dot.flame_shock>=active_enemies||active_dot.flame_shock=6)\nactions.aoe_totemic+=/frost_shock,if=talent.hailstorm.enabled&buff.hailstorm.up\nactions.aoe_totemic+=/crash_lightning\nactions.aoe_totemic+=/ice_strike,if=talent.hailstorm.enabled&!buff.ice_strike.up\nactions.aoe_totemic+=/elemental_blast,if=buff.maelstrom_weapon.stack>=5&(buff.primordial_storm.down||buff.primordial_storm.remains>gcd.max*4)\nactions.aoe_totemic+=/chain_lightning,if=buff.maelstrom_weapon.stack>=5&(buff.primordial_storm.down||buff.primordial_storm.remains>gcd.max*4)\nactions.aoe_totemic+=/stormstrike\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>=active_enemies)\nactions.aoe_totemic+=/voltaic_blaze\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+=/fire_nova,if=active_dot.flame_shock>=3\nactions.aoe_totemic+=/ice_strike\nactions.aoe_totemic+=/lava_lash\nactions.aoe_totemic+=/crash_lightning\nactions.aoe_totemic+=/flame_shock,if=!ticking\n\n## Multi target opener priority list for the Totemic hero talent tree\nactions.aoe_totemic_open+=/flame_shock,if=!ticking&!(active_dot.flame_shock>=active_enemies||active_dot.flame_shock=6)\nactions.aoe_totemic_open+=/lava_lash,if=!pet.surging_totem.active&!(active_dot.flame_shock>=active_enemies||active_dot.flame_shock=6)\nactions.aoe_totemic_open+=/surging_totem\nactions.aoe_totemic_open+=/fire_nova,if=talent.swirling_maelstrom.enabled&dot.flame_shock.ticking&(active_dot.flame_shock>=active_enemies||active_dot.flame_shock=6)\nactions.aoe_totemic_open+=/feral_spirit\nactions.aoe_totemic_open+=/primordial_wave,if=dot.flame_shock.ticking&(active_dot.flame_shock>=active_enemies||active_dot.flame_shock=6)\nactions.aoe_totemic_open+=/primordial_storm,if=(buff.maelstrom_weapon.stack>=10)&(cooldown.doom_winds.remains>3)&(buff.doom_winds.remains<=gcd.max||!buff.doom_winds.up&cooldown.doom_winds.remains>15)||buff.primordial_storm.remains<3*gcd.max\nactions.aoe_totemic_open+=/elemental_blast,if=buff.maelstrom_weapon.stack>=10&!buff.legacy_of_the_frost_witch.up&cooldown.doom_winds.remains=0\nactions.aoe_totemic_open+=/doom_winds,if=!talent.legacy_of_the_frost_witch.enabled||buff.legacy_of_the_frost_witch.up\nactions.aoe_totemic_open+=/crash_lightning,if=(buff.electrostatic_wager.stack>9&buff.doom_winds.up)||!buff.crash_lightning.up\nactions.aoe_totemic_open+=/lava_lash,if=buff.hot_hand.up\nactions.aoe_totemic_open+=/sundering,if=buff.legacy_of_the_frost_witch.up||(buff.earthen_weapon.stack>=2&buff.primordial_storm.up)\nactions.aoe_totemic_open+=/lava_lash,if=(buff.legacy_of_the_frost_witch.up&buff.whirling_fire.up)\nactions.aoe_totemic_open+=/crash_lightning,if=(buff.earthen_weapon.stack>=2&buff.primordial_storm.up&buff.doom_winds.up)\nactions.aoe_totemic_open+=/elemental_blast,if=buff.maelstrom_weapon.stack>=10\nactions.aoe_totemic_open+=/chain_lightning,if=buff.maelstrom_weapon.stack>=10\nactions.aoe_totemic_open+=/frost_shock,if=talent.hailstorm.enabled&buff.hailstorm.up&pet.searing_totem.active\nactions.aoe_totemic_open+=/fire_nova,if=pet.searing_totem.active&dot.flame_shock.ticking&(active_dot.flame_shock>=active_enemies||active_dot.flame_shock=6)\nactions.aoe_totemic_open+=/ice_strike\nactions.aoe_totemic_open+=/stormstrike,if=buff.maelstrom_weapon.stack<10&!buff.legacy_of_the_frost_witch.up\nactions.aoe_totemic_open+=/lava_lash\nactions.aoe_totemic_open+=/frost_shock,if=talent.hailstorm.enabled&buff.hailstorm.up&pet.searing_totem.active\nactions.aoe_totemic_open+=/crash_lightning,if=talent.crashing_storms.enabled\nactions.aoe_totemic_open+=/fire_nova,if=dot.flame_shock.ticking&(active_dot.flame_shock>=active_enemies||active_dot.flame_shock=6)\nactions.aoe_totemic_open+=/frost_shock,if=talent.hailstorm.enabled&buff.hailstorm.up\nactions.aoe_totemic_open+=/crash_lightning\nactions.aoe_totemic_open+=/ice_strike,if=talent.hailstorm.enabled&!buff.ice_strike.up\nactions.aoe_totemic_open+=/elemental_blast,if=buff.maelstrom_weapon.stack>=5&!buff.primordial_storm.up\nactions.aoe_totemic_open+=/chain_lightning,if=buff.maelstrom_weapon.stack>=5&!buff.primordial_storm.up\nactions.aoe_totemic_open+=/stormstrike\n\n## Funnel action priority list\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||boss&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\n\n# Single target action priority list\nactions.single=call_action_list,name=single_open,strict_if=time<=18,if=time<=18&(cooldown.doom_winds.remains=0||cooldown.sundering.remains=0||!buff.hot_hand.up)\nactions.single+=/primordial_storm,if=(buff.maelstrom_weapon.stack>=10||buff.primordial_storm.remains<=4&buff.maelstrom_weapon.stack>=5)\nactions.single+=/flame_shock,if=!ticking&(talent.ashen_catalyst.enabled||talent.primordial_wave.enabled||talent.lashing_flames.enabled)\nactions.single+=/feral_spirit,if=fight_remains<16||cooldown.doom_winds.remains>15||cooldown.doom_winds.remains<7||buff.winning_streak.stack=1&buff.maelstrom_weapon.stack>7\nactions.single+=/windstrike,if=talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>0&ti_lightning_bolt\nactions.single+=/doom_winds,if=(!talent.legacy_of_the_frost_witch.enabled||buff.legacy_of_the_frost_witch.up)&(cooldown.feral_spirit.remains>30||cooldown.feral_spirit.remains<2)\nactions.single+=/primordial_wave,if=dot.flame_shock.ticking&(raid_event.adds.in>action.primordial_wave.cooldown||raid_event.adds.in<6)\nactions.single+=/ascendance,if=(dot.flame_shock.ticking||!talent.primordial_wave.enabled||!talent.ashen_catalyst.enabled)\nactions.single+=/windstrike,if=talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>0&ti_lightning_bolt\nactions.single+=/elemental_blast,if=((!talent.overflowing_maelstrom.enabled&buff.maelstrom_weapon.stack>=5)||(buff.maelstrom_weapon.stack>=9))&charges_fractional>=1.8\nactions.single+=/tempest,if=(buff.tempest.stack=buff.tempest.max_stack&(tempest_mael_count>30||buff.awakening_storms.stack=3)&buff.maelstrom_weapon.stack>=9)\nactions.single+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=9&!buff.primordial_storm.up&buff.arc_discharge.stack>1\nactions.single+=/elemental_blast,if=((!talent.overflowing_maelstrom.enabled&buff.maelstrom_weapon.stack>=5)||(buff.maelstrom_weapon.stack>=9))\nactions.single+=/tempest,if=buff.maelstrom_weapon.stack>=9\nactions.single+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=9\nactions.single+=/lava_lash,if=(buff.hot_hand.up&(buff.ashen_catalyst.stack=buff.ashen_catalyst.max_stack))||(dot.flame_shock.remains<=2&!talent.voltaic_blaze.enabled)||(talent.lashing_flames.enabled&(debuff.lashing_flames.down))\nactions.single+=/crash_lightning,if=(buff.doom_winds.up&buff.electrostatic_wager.stack>1)||buff.electrostatic_wager.stack>8\nactions.single+=/stormstrike,if=buff.doom_winds.up||buff.stormblast.stack>0\nactions.single+=/crash_lightning,if=talent.unrelenting_storms.enabled&talent.alpha_wolf.enabled&alpha_wolf_min_remains=0\nactions.single+=/lava_lash,if=buff.hot_hand.up\nactions.single+=/crash_lightning,if=set_bonus.tww2_4pc\nactions.single+=/voltaic_blaze\nactions.single+=/stormstrike\nactions.single+=/lava_lash,if=talent.elemental_assault.enabled&talent.molten_assault.enabled&dot.flame_shock.ticking\nactions.single+=/ice_strike\nactions.single+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=5&!buff.primordial_storm.up\nactions.single+=/frost_shock,if=buff.hailstorm.up\nactions.single+=/flame_shock,if=!ticking\nactions.single+=/sundering,if=raid_event.adds.in>=action.sundering.cooldown\nactions.single+=/crash_lightning\nactions.single+=/frost_shock\nactions.single+=/fire_nova,if=active_dot.flame_shock\nactions.single+=/earth_elemental\nactions.single+=/flame_shock,if=settings.filler_shock\n\n# Single target opener priority list\nactions.single_open=flame_shock,if=!ticking\nactions.single_open+=/voltaic_blaze,if=active_dot.flame_shock<3&!buff.ascendance.up\nactions.single_open+=/primordial_wave,if=(buff.maelstrom_weapon.stack>=4)&dot.flame_shock.ticking&(active_dot.flame_shock>=active_enemies||active_dot.flame_shock=6)\nactions.single_open+=/feral_spirit,if=!talent.legacy_of_the_frost_witch.enabled||buff.legacy_of_the_frost_witch.up||fight_remains<16\nactions.single_open+=/doom_winds,if=!talent.legacy_of_the_frost_witch.enabled||buff.legacy_of_the_frost_witch.up||boss&fight_remains<9\nactions.single_open+=/ascendance,if=!talent.legacy_of_the_frost_witch.enabled||buff.legacy_of_the_frost_witch.up||boss&fight_remains<16\nactions.single_open+=/primordial_storm,if=(buff.maelstrom_weapon.stack>=10)&(buff.legacy_of_the_frost_witch.up||!talent.legacy_of_the_frost_witch.enabled)\nactions.single_open+=/windstrike\nactions.single_open+=/elemental_blast,if=buff.maelstrom_weapon.stack>=5\nactions.single_open+=/tempest,if=buff.maelstrom_weapon.stack>=5\nactions.single_open+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=5\nactions.single_open+=/stormstrike\nactions.single_open+=/crash_lightning,if=set_bonus.tww2_4pc\nactions.single_open+=/voltaic_blaze\nactions.single_open+=/lava_lash,if=talent.elemental_assault.enabled&talent.molten_assault.enabled&dot.flame_shock.ticking\nactions.single_open+=/ice_strike\n\n# Single target action priority list for the Totemic hero talent tree\nactions.single_totemic=call_action_list,name=single_totemic_open,strict_if=time<20,if=time<20&(cooldown.doom_winds.remains=0||cooldown.sundering.remains=0||!buff.hot_hand.up)\nactions.single_totemic+=/surging_totem\nactions.single_totemic+=/ascendance,if=ti_lightning_bolt&pet.surging_totem.remains>4&(buff.totemic_rebound.stack>=3||buff.maelstrom_weapon.stack>0)\nactions.single_totemic+=/flame_shock,if=!ticking&(talent.ashen_catalyst.enabled||talent.primordial_wave.enabled)\nactions.single_totemic+=/lava_lash,if=buff.hot_hand.up\nactions.single_totemic+=/feral_spirit,if=fight_remains<16||((cooldown.doom_winds.remains>23||cooldown.doom_winds.remains<7||buff.winning_streak.stack=1&buff.maelstrom_weapon.stack>7)&(cooldown.primordial_wave.remains<20||buff.primordial_storm.up||!talent.primordial_storm.enabled))\nactions.single_totemic+=/primordial_wave,if=dot.flame_shock.ticking&(raid_event.adds.in>action.primordial_wave.cooldown)||raid_event.adds.in<6\nactions.single_totemic+=/doom_winds,if=!talent.legacy_of_the_frost_witch.enabled||buff.legacy_of_the_frost_witch.up\nactions.single_totemic+=/primordial_storm,if=(buff.maelstrom_weapon.stack>=10)&((cooldown.doom_winds.remains>=buff.primordial_storm.remains)||buff.doom_winds.up||!talent.doom_winds.enabled||(buff.primordial_storm.remains<2*gcd))\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+=/windstrike,if=talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>0&ti_lightning_bolt\nactions.single_totemic+=/sundering,if=buff.legacy_of_the_frost_witch.up&((cooldown.ascendance.remains>=10&talent.ascendance.enabled)||!talent.ascendance.enabled)&pet.surging_totem.active&buff.totemic_rebound.stack>=3&!buff.ascendance.up\nactions.single_totemic+=/crash_lightning,if=talent.unrelenting_storms.enabled&talent.alpha_wolf.enabled&alpha_wolf_min_remains=0\nactions.single_totemic+=/lava_burst,if=!talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>=10&buff.whirling_air.down\nactions.single_totemic+=/elemental_blast,if=(buff.maelstrom_weapon.stack>=10)&(buff.primordial_storm.down||buff.primordial_storm.remains>4)\nactions.single_totemic+=/stormstrike,if=buff.doom_winds.up&buff.legacy_of_the_frost_witch.up\nactions.single_totemic+=/lightning_bolt,if=(buff.maelstrom_weapon.stack>=10)&(buff.primordial_storm.down||buff.primordial_storm.remains>4)\nactions.single_totemic+=/crash_lightning,if=buff.electrostatic_wager.stack>4\nactions.single_totemic+=/stormstrike,if=buff.doom_winds.up||buff.stormblast.stack>1\nactions.single_totemic+=/lava_lash,if=buff.whirling_fire.up||buff.ashen_catalyst.stack>=8\nactions.single_totemic+=/windstrike\nactions.single_totemic+=/stormstrike\nactions.single_totemic+=/lava_lash\nactions.single_totemic+=/crash_lightning,if=set_bonus.tww2_4pc\nactions.single_totemic+=/voltaic_blaze\nactions.single_totemic+=/crash_lightning,if=talent.unrelenting_storms.enabled\nactions.single_totemic+=/ice_strike,if=!buff.ice_strike.up\nactions.single_totemic+=/crash_lightning\nactions.single_totemic+=/frost_shock\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\n# Single target opener priority list for the Totemic hero talent tree\nactions.single_totemic_open=flame_shock,if=!ticking\nactions.single_totemic_open+=/lava_lash,if=!pet.surging_totem.active&talent.lashing_flames.enabled&debuff.lashing_flames.down\nactions.single_totemic_open+=/surging_totem\nactions.single_totemic_open+=/primordial_wave\nactions.single_totemic_open+=/feral_spirit,if=!talent.legacy_of_the_frost_witch.enabled||buff.legacy_of_the_frost_witch.up||fight_remains<16\nactions.single_totemic_open+=/doom_winds,if=!talent.legacy_of_the_frost_witch.enabled||buff.legacy_of_the_frost_witch.up||boss&fight_remains<9\nactions.single_totemic_open+=/primordial_storm,if=(buff.maelstrom_weapon.stack>=10)&(buff.legacy_of_the_frost_witch.up||!talent.legacy_of_the_frost_witch.enabled)\nactions.single_totemic_open+=/lava_lash,if=buff.hot_hand.up\nactions.single_totemic_open+=/stormstrike,if=buff.doom_winds.up&buff.legacy_of_the_frost_witch.up\nactions.single_totemic_open+=/sundering,if=buff.legacy_of_the_frost_witch.up\nactions.single_totemic_open+=/elemental_blast,if=buff.maelstrom_weapon.stack=10\nactions.single_totemic_open+=/lightning_bolt,if=buff.maelstrom_weapon.stack=10\nactions.single_totemic_open+=/stormstrike\nactions.single_totemic_open+=/lava_lash",
|
|
["author"] = "SimC",
|
|
},
|
|
["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",
|
|
},
|
|
["Vengeance"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250303,
|
|
["spec"] = 581,
|
|
["desc"] = "2025-03-03: Fixes for Aldrachi Reaver.\n\n2024-10-29: 11.0.5\n\n2024-10-21: SimC update, increase defensiveness a bit\n\n2024-09-22: SimC update\n\n2024-09-12: Reimplement Demonsurge\n\n2024-09-10: SimC update\n\n2024-09-09: Tweak variable names to be consistent for FS vs. AR; fix wait loop\n\n2024-09-01, 09-08: SimC update\n\n2024-07-23: The War Within",
|
|
["profile"] = "actions.precombat+=/variable,name=single_target,value=spell_targets.spirit_bomb=1\nactions.precombat+=/variable,name=small_aoe,value=spell_targets.spirit_bomb>=2&spell_targets.spirit_bomb<=5\nactions.precombat+=/variable,name=big_aoe,value=spell_targets.spirit_bomb>=6\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff||(trinket.1.has_buff.agility||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit)\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff||(trinket.2.has_buff.agility||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit)\nactions.precombat+=/arcane_torrent\nactions.precombat+=/sigil_of_flame,if=hero_tree.aldrachi_reaver||(hero_tree.felscarred&talent.student_of_suffering)\nactions.precombat+=/immolation_aura\n\nactions+=/disrupt\nactions+=/demon_spikes,use_off_gcd=1,if=!buff.demon_spikes.up&(tanking||time<5)\nactions+=/variable,name=num_spawnable_souls,op=reset,default=0\nactions+=/variable,name=num_spawnable_souls,op=max,value=1,if=talent.soul_sigils&cooldown.sigil_of_flame.up\nactions+=/variable,name=num_spawnable_souls,op=max,value=2,if=talent.fracture&cooldown.fracture.charges_fractional>=1&!buff.metamorphosis.up\nactions+=/variable,name=num_spawnable_souls,op=max,value=3,if=talent.fracture&cooldown.fracture.charges_fractional>=1&buff.metamorphosis.up\nactions+=/variable,name=num_spawnable_souls,op=add,value=1,if=talent.soul_carver&(cooldown.soul_carver.remains>(cooldown.soul_carver.duration-3))\nactions+=/infernal_strike,use_off_gcd=1\nactions+=/run_action_list,name=ar,strict=1,if=!hero_tree.felscarred\nactions+=/run_action_list,name=fs,strict=1,if=hero_tree.felscarred\n\nactions.ar+=/variable,name=spb_threshold,op=setif,condition=talent.fiery_demise&dot.fiery_brand.ticking,value=(variable.single_target*5)+(variable.small_aoe*5)+(variable.big_aoe*4),value_else=(variable.single_target*5)+(variable.small_aoe*5)+(variable.big_aoe*4)\nactions.ar+=/variable,name=can_spb,op=setif,condition=talent.spirit_bomb,value=soul_fragments>=variable.spb_threshold,value_else=0\nactions.ar+=/variable,name=can_spb_soon,op=setif,condition=talent.spirit_bomb,value=soul_fragments>=variable.spb_threshold,value_else=0\nactions.ar+=/variable,name=can_spb_one_gcd,op=setif,condition=talent.spirit_bomb,value=(soul_fragments+variable.num_spawnable_souls)>=variable.spb_threshold,value_else=0\n## [Hekili] Move `double_rm_expires` variable from `rg_sequence` to here to prevent an unused variable warning.\nactions.ar+=/variable,name=double_rm_expires,value=time+action.fracture.execute_time+20,if=!buff.glaive_flurry.up&buff.rending_strike.up\nactions.ar+=/variable,name=double_rm_remains,op=setif,condition=(variable.double_rm_expires-time)>0,value=variable.double_rm_expires-time,value_else=0\nactions.ar+=/variable,name=trigger_overflow,op=set,value=0,if=!buff.glaive_flurry.up&!buff.rending_strike.up&!prev_gcd.1.reavers_glaive\nactions.ar+=/variable,name=rg_enhance_cleave,op=setif,condition=variable.trigger_overflow||(spell_targets.spirit_bomb>=4)||(fight_remains<10||target.time_to_die<10),value=1,value_else=0\nactions.ar+=/variable,name=souls_before_next_rg_sequence,value=soul_fragments+buff.art_of_the_glaive.stack\nactions.ar+=/variable,name=souls_before_next_rg_sequence,op=add,value=(1.1*(1+stat.haste))*(variable.double_rm_remains-(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max)))\nactions.ar+=/variable,name=souls_before_next_rg_sequence,op=add,value=3+talent.soul_sigils,if=cooldown.sigil_of_spite.remains<(variable.double_rm_remains-gcd.max-(2-talent.soul_sigils))\nactions.ar+=/variable,name=souls_before_next_rg_sequence,op=add,value=3,if=cooldown.soul_carver.remains<(variable.double_rm_remains-gcd.max)\nactions.ar+=/variable,name=souls_before_next_rg_sequence,op=add,value=3,if=cooldown.soul_carver.remains<(variable.double_rm_remains-gcd.max-3)\nactions.ar+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs||(variable.trinket_1_buffs&((buff.rending_strike.up&buff.glaive_flurry.up)||(prev_gcd.1.reavers_glaive)||(buff.thrill_of_the_fight_damage.remains>8)||(buff.reavers_glaive.up&cooldown.the_hunt.remains<5)))\nactions.ar+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs||(variable.trinket_2_buffs&((buff.rending_strike.up&buff.glaive_flurry.up)||(prev_gcd.1.reavers_glaive)||(buff.thrill_of_the_fight_damage.remains>8)||(buff.reavers_glaive.up&cooldown.the_hunt.remains<5)))\nactions.ar+=/potion,use_off_gcd=1,if=(buff.rending_strike.up&buff.glaive_flurry.up)||prev_gcd.1.reavers_glaive\n##actions.ar+=/call_action_list,name=externals,if=(buff.rending_strike.up&buff.glaive_flurry.up)||prev_gcd.1.reavers_glaive\nactions.ar+=/run_action_list,name=rg_sequence,strict=1,if=buff.glaive_flurry.up||buff.rending_strike.up||prev_gcd.1.reavers_glaive\nactions.ar+=/metamorphosis,use_off_gcd=1,if=time<5||cooldown.fel_devastation.remains>=20\nactions.ar+=/the_hunt,if=!buff.reavers_glaive.up&(buff.art_of_the_glaive.stack+soul_fragments)<20\nactions.ar+=/spirit_bomb,if=variable.can_spb&(soul_fragments>2||prev_gcd.1.sigil_of_spite||prev_gcd.1.soul_carver||(spell_targets.spirit_bomb>=4&talent.fallout&cooldown.immolation_aura.remains<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)))\n## [Hekili] Only call `ar_execute` on boss fights.\nactions.ar+=/call_action_list,name=ar_execute,if=boss&(fight_remains<10||target.time_to_die<10)\nactions.ar+=/soul_cleave,if=!buff.reavers_glaive.up&(variable.double_rm_remains<=(execute_time+(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))&(soul_fragments<3&((buff.art_of_the_glaive.stack+soul_fragments)>=20))\nactions.ar+=/spirit_bomb,if=!buff.reavers_glaive.up&(variable.double_rm_remains<=(execute_time+(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))&((buff.art_of_the_glaive.stack+soul_fragments)>=20)\nactions.ar+=/bulk_extraction,if=!buff.reavers_glaive.up&(variable.double_rm_remains<=(execute_time+(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))&((buff.art_of_the_glaive.stack+(spell_targets>?5))>=20)\nactions.ar+=/reavers_glaive,if=(fury+(variable.rg_enhance_cleave*25)+(talent.keen_engagement*20))>=30&((!buff.thrill_of_the_fight_attack_speed.up||(variable.double_rm_remains<=(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))||(spell_targets.spirit_bomb>=4))&!(buff.rending_strike.up||buff.glaive_flurry.up)\nactions.ar+=/call_action_list,name=rg_prep,if=(fury+(variable.rg_enhance_cleave*25)+(talent.keen_engagement*20))<30&((!buff.thrill_of_the_fight_attack_speed.up||(variable.double_rm_remains<=(action.reavers_glaive.execute_time+action.fracture.execute_time+action.soul_cleave.execute_time+gcd.remains+(0.5*gcd.max))))||(spell_targets.spirit_bomb>=4))\nactions.ar+=/fiery_brand,if=(!talent.fiery_demise&active_dot.fiery_brand=0)||(talent.down_in_flames&(full_recharge_time<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+=/call_action_list,name=rg_sequence_filler,if=(fury<30&((!variable.rg_enhance_cleave&buff.glaive_flurry.up&buff.rending_strike.up)||(variable.rg_enhance_cleave&!buff.rending_strike.up)))||(action.fracture.charges_fractional<1&((variable.rg_enhance_cleave&buff.rending_strike.up&buff.glaive_flurry.up)||(!variable.rg_enhance_cleave&!buff.glaive_flurry.up)))\nactions.rg_sequence+=/fracture,if=((variable.rg_enhance_cleave&buff.rending_strike.up&buff.glaive_flurry.up)||(!variable.rg_enhance_cleave&!buff.glaive_flurry.up))\nactions.rg_sequence+=/shear,if=((variable.rg_enhance_cleave&buff.rending_strike.up&buff.glaive_flurry.up)||(!variable.rg_enhance_cleave&!buff.glaive_flurry.up))\nactions.rg_sequence+=/soul_cleave,if=((!variable.rg_enhance_cleave&buff.glaive_flurry.up&buff.rending_strike.up)||(variable.rg_enhance_cleave&!buff.rending_strike.up))\n## [Hekili] Fall-through actions in case the \"wrong\" sequence of empowered spells was cast.\nactions.rg_sequence+=/fracture,if=buff.rending_strike.up&!buff.glaive_flurry.up\nactions.rg_sequence+=/shear,if=buff.rending_strike.up&!buff.glaive_flurry.up\nactions.rg_sequence+=/soul_cleave,if=!buff.rending_strike.up&buff.glaive_flurry.up\n\nactions.rg_sequence_filler+=/felblade\nactions.rg_sequence_filler+=/fracture,if=!buff.rending_strike.up\n## actions.rg_sequence_filler+=/wait,sec=0.1,if=action.fracture.charges_fractional>=0.8&((variable.rg_enhance_cleave&buff.rending_strike.up&buff.glaive_flurry.up)||(!variable.rg_enhance_cleave&!buff.glaive_flurry.up))\nactions.rg_sequence_filler+=/sigil_of_flame\nactions.rg_sequence_filler+=/sigil_of_spite\nactions.rg_sequence_filler+=/soul_carver\nactions.rg_sequence_filler+=/fel_devastation\nactions.rg_sequence_filler+=/throw_glaive",
|
|
["version"] = 20250303,
|
|
["warnings"] = "The import for 'rg_prep' required some automated changes.\nLine 2: Converted 'talent.unhindered_assault' to 'talent.unhindered_assault.enabled' (1x).\n\nThe import for 'fs' required some automated changes.\nLine 1: Converted 'talent.aura_of_pain' to 'talent.aura_of_pain.enabled' (1x).\nLine 1: Converted operations in '(action.sigil_of_flame.crit_pct+(talent.aura_of_pain.enabled*6))%100' to '(action.sigil_of_flame.crit_pct+(talent.aura_of_pain.enabled*6))/100'.\nLine 1: Converted 'talent.volatile_flameblood' to 'talent.volatile_flameblood.enabled' (1x).\nLine 3: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 8: Converted 'talent.flames_of_fury' to 'talent.flames_of_fury.enabled' (1x).\nLine 11: Converted 'talent.volatile_flameblood' to 'talent.volatile_flameblood.enabled' (1x).\nLine 13: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 14: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 15: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 16: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 17: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 18: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 19: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 20: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 22: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 25: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\nLine 26: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 27: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 28: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 28: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 29: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 29: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 30: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 30: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 31: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 31: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 31: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 31: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 32: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 32: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 32: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 32: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 34: Converted 'talent.fallout' to 'talent.fallout.enabled' (1x).\nLine 34: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 35: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 37: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 37: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\nLine 45: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 45: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 45: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 45: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 46: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 46: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 47: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 48: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\n\nThe import for 'fel_dev' required some automated changes.\nLine 3: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\n\nThe import for 'rg_overflow' required some automated changes.\nLine 3: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 4: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\n\nThe import for 'metamorphosis' required some automated changes.\nLine 4: Converted 'talent.illuminated_sigils' to 'talent.illuminated_sigils.enabled' (1x).\nLine 4: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 6: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 6: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 6: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 6: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 7: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nLine 7: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 8: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 11: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 12: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 17: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 18: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 19: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 4: Converted 'talent.soul_sigils' to 'talent.soul_sigils.enabled' (1x).\nLine 5: Converted 'talent.fracture' to 'talent.fracture.enabled' (1x).\nLine 6: Converted 'talent.fracture' to 'talent.fracture.enabled' (1x).\nLine 7: Converted 'talent.soul_carver' to 'talent.soul_carver.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.agility' to 'trinket.t1.has_buff.agility' (1x).\nLine 4: Converted 'trinket.1.has_buff.agility' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 4: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 4: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 4: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 4: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.agility' to 'trinket.t2.has_buff.agility' (1x).\nLine 5: Converted 'trinket.2.has_buff.agility' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 5: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 5: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 5: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 5: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\nLine 7: Converted 'talent.student_of_suffering' to 'talent.student_of_suffering.enabled' (1x).\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'meta_prep' required some automated changes.\nLine 2: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 2: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\n\nThe import for 'ar' required some automated changes.\nLine 1: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 2: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 3: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 4: Converted 'talent.spirit_bomb' to 'talent.spirit_bomb.enabled' (1x).\nLine 11: Converted 'talent.soul_sigils' to 'talent.soul_sigils.enabled' (1x).\nLine 11: Converted 'talent.soul_sigils' to 'talent.soul_sigils.enabled' (1x).\nLine 20: Converted 'talent.fallout' to 'talent.fallout.enabled' (1x).\nLine 22: Converted 'talent.ascending_flame' to 'talent.ascending_flame.enabled' (1x).\nLine 22: Converted 'talent.quickened_sigils' to 'talent.quickened_sigils.enabled' (1x).\nLine 28: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 29: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 30: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 30: Converted 'talent.down_in_flames' to 'talent.down_in_flames.enabled' (1x).\nLine 30: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 34: Converted 'talent.unhindered_assault' to 'talent.unhindered_assault.enabled' (1x).\nLine 39: Converted 'talent.unhindered_assault' to 'talent.unhindered_assault.enabled' (1x).\n\nThe import for 'fel_dev_prep' required some automated changes.\nLine 3: Converted 'talent.fiery_demise' to 'talent.fiery_demise.enabled' (1x).\nLine 5: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\nLine 6: Converted 'talent.cycle_of_binding' to 'talent.cycle_of_binding.enabled' (1x).\n\nThe import for 'ar_execute' required some automated changes.\nLine 2: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\nLine 3: Converted 'talent.keen_engagement' to 'talent.keen_engagement.enabled' (1x).\n\nImported 14 action lists.\n",
|
|
["lists"] = {
|
|
["rg_prep"] = {
|
|
{
|
|
["action"] = "felblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vengeful_retreat",
|
|
["criteria"] = "! cooldown.felblade.up & talent.unhindered_assault.enabled",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "immolation_aura",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fracture",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["fs"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( action.sigil_of_flame.crit_pct + ( talent.aura_of_pain.enabled * 6 ) ) / 100",
|
|
["criteria"] = "active_dot.sigil_of_flame > 0 & talent.volatile_flameblood.enabled",
|
|
["var_name"] = "crit_pct",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2 + ( 2 * gcd.max )",
|
|
["var_name"] = "fel_dev_sequence_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "gcd.max",
|
|
["criteria"] = "talent.fiery_demise.enabled & cooldown.fiery_brand.up",
|
|
["var_name"] = "fel_dev_sequence_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "gcd.max",
|
|
["criteria"] = "cooldown.sigil_of_flame.up || cooldown.sigil_of_flame.remains < variable.fel_dev_sequence_time",
|
|
["var_name"] = "fel_dev_sequence_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "gcd.max",
|
|
["criteria"] = "cooldown.immolation_aura.up || cooldown.immolation_aura.remains < variable.fel_dev_sequence_time",
|
|
["var_name"] = "fel_dev_sequence_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "2.5 * floor ( ( buff.student_of_suffering.remains >? variable.fel_dev_sequence_time ) )",
|
|
["criteria"] = "talent.student_of_suffering.enabled & ( buff.student_of_suffering.remains > 1 || prev_gcd.1.sigil_of_flame )",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "30 + ( 2 * talent.flames_of_fury.enabled * spell_targets.sigil_of_flame )",
|
|
["criteria"] = "( cooldown.sigil_of_flame.remains < variable.fel_dev_sequence_time )",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "8",
|
|
["criteria"] = "cooldown.immolation_aura.remains < variable.fel_dev_sequence_time",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "2 * floor ( ( buff.immolation_aura.remains >? variable.fel_dev_sequence_time ) )",
|
|
["criteria"] = "buff.immolation_aura.remains > 1",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "7.5 * variable.crit_pct * floor ( ( buff.immolation_aura.remains >? variable.fel_dev_sequence_time ) )",
|
|
["criteria"] = "talent.volatile_flameblood.enabled & buff.immolation_aura.remains > 1",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "22",
|
|
["criteria"] = "talent.darkglare_boon.enabled",
|
|
["var_name"] = "fel_dev_passive_fury_gen",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "spbomb_threshold",
|
|
["criteria"] = "talent.fiery_demise.enabled & dot.fiery_brand.ticking",
|
|
["value_else"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
["value"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spbomb",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
["value_else"] = "0",
|
|
["value"] = "soul_fragments >= variable.spbomb_threshold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spbomb_soon",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
["value_else"] = "0",
|
|
["value"] = "soul_fragments >= variable.spbomb_threshold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spbomb_one_gcd",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
["value_else"] = "0",
|
|
["value"] = "( soul_fragments + variable.num_spawnable_souls ) >= variable.spbomb_threshold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "spburst_threshold",
|
|
["criteria"] = "talent.fiery_demise.enabled & dot.fiery_brand.ticking",
|
|
["value_else"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
["value"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spburst",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
["value_else"] = "0",
|
|
["value"] = "soul_fragments >= variable.spburst_threshold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spburst_soon",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
["value_else"] = "0",
|
|
["value"] = "soul_fragments >= variable.spburst_threshold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spburst_one_gcd",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
["value_else"] = "0",
|
|
["value"] = "( soul_fragments + variable.num_spawnable_souls ) >= variable.spburst_threshold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "meta_prep_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.fiery_brand.execute_time",
|
|
["criteria"] = "talent.fiery_demise.enabled & cooldown.fiery_brand.up",
|
|
["var_name"] = "meta_prep_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.sigil_of_flame.execute_time * action.sigil_of_flame.charges",
|
|
["var_name"] = "meta_prep_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "dont_soul_cleave",
|
|
["criteria"] = "buff.metamorphosis.up & buff.demonsurge_hardcast.up",
|
|
["value_else"] = "( cooldown.fel_devastation.remains < ( gcd.max * 3 ) & ( ( fury + variable.fel_dev_passive_fury_gen ) < 120 ) || ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) ) )",
|
|
["value"] = "buff.demonsurge_spirit_burst.up || ( buff.metamorphosis.remains < ( gcd.max * 2 ) & ( ( fury + variable.fel_dev_passive_fury_gen ) < 120 || ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "fiery_brand_back_before_meta",
|
|
["criteria"] = "talent.down_in_flames.enabled",
|
|
["value_else"] = "( cooldown.fiery_brand.duration <= cooldown.metamorphosis.remains )",
|
|
["value"] = "charges >= max_charges || ( charges_fractional >= 1 & cooldown.fiery_brand.full_recharge_time <= gcd.remains + execute_time ) || ( charges_fractional >= 1 & ( ( 1 - ( charges_fractional - 1 ) ) * cooldown.fiery_brand.duration ) <= cooldown.metamorphosis.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "hold_sof_for_meta",
|
|
["criteria"] = "talent.illuminated_sigils.enabled",
|
|
["value_else"] = "cooldown.sigil_of_flame.duration > cooldown.metamorphosis.remains",
|
|
["value"] = "( charges_fractional >= 1 & ( ( 1 - ( charges_fractional - 1 ) ) * cooldown.sigil_of_flame.duration ) > cooldown.metamorphosis.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "hold_sof_for_fel_dev",
|
|
["criteria"] = "talent.illuminated_sigils.enabled",
|
|
["value_else"] = "cooldown.sigil_of_flame.duration > cooldown.fel_devastation.remains",
|
|
["value"] = "( charges_fractional >= 1 & ( ( 1 - ( charges_fractional - 1 ) ) * cooldown.sigil_of_flame.duration ) > cooldown.fel_devastation.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "hold_sof_for_student",
|
|
["criteria"] = "talent.student_of_suffering.enabled",
|
|
["value_else"] = "0",
|
|
["value"] = "prev_gcd.1.sigil_of_flame || ( buff.student_of_suffering.remains > ( 4 - talent.quickened_sigils.enabled ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "hold_sof_for_dot",
|
|
["criteria"] = "talent.ascending_flame.enabled",
|
|
["value_else"] = "prev_gcd.1.sigil_of_flame || ( dot.sigil_of_flame.remains > ( 4 - talent.quickened_sigils.enabled ) )",
|
|
["value"] = "0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( talent.illuminated_sigils.enabled & time < ( 2 - talent.quickened_sigils.enabled ) )",
|
|
["var_name"] = "hold_sof_for_precombat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "! variable.trinket_1_buffs || ( variable.trinket_1_buffs & ( ( buff.metamorphosis.up & buff.demonsurge_hardcast.up ) || ( buff.metamorphosis.up & ! buff.demonsurge_hardcast.up & cooldown.metamorphosis.remains < 10 ) || ( cooldown.metamorphosis.remains > trinket.t1.cooldown.duration ) || ( variable.trinket_2_buffs & trinket.t2.cooldown.remains < cooldown.metamorphosis.remains ) ) )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.trinket_2_buffs || ( variable.trinket_2_buffs & ( ( buff.metamorphosis.up & buff.demonsurge_hardcast.up ) || ( buff.metamorphosis.up & ! buff.demonsurge_hardcast.up & cooldown.metamorphosis.remains < 10 ) || ( cooldown.metamorphosis.remains > trinket.t2.cooldown.duration ) || ( variable.trinket_1_buffs & trinket.t1.cooldown.remains < cooldown.metamorphosis.remains ) ) )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time < 4",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ( cooldown.metamorphosis.up & prev_gcd.1.sigil_of_flame ) & ! ( talent.fallout.enabled & talent.spirit_bomb.enabled & spell_targets.spirit_bomb >= 3 & ( ( buff.metamorphosis.up & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( ! buff.metamorphosis.up & ( variable.can_spbomb || variable.can_spbomb_soon ) ) ) ) & ! ( buff.metamorphosis.up & buff.demonsurge_hardcast.up )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.student_of_suffering.enabled & ! variable.hold_sof_for_dot & ! variable.hold_sof_for_precombat",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.hold_sof_for_precombat & ( charges = max_charges || ( ! variable.hold_sof_for_student & ! variable.hold_sof_for_dot & ! variable.hold_sof_for_meta & ! variable.hold_sof_for_fel_dev ) )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.fiery_brand = 0 & ( ! talent.fiery_demise.enabled || ( ( talent.down_in_flames.enabled & charges >= max_charges ) || variable.fiery_brand_back_before_meta ) )",
|
|
["action"] = "fiery_brand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 20",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "fs_execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.up & ! buff.demonsurge_hardcast.up & ( buff.demonsurge_soul_sunder.up || buff.demonsurge_spirit_burst.up )",
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "fel_dev",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "buff.metamorphosis.up & buff.demonsurge_hardcast.up",
|
|
["list_name"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.demonsurge_hardcast.up & ( cooldown.fel_devastation.up || ( cooldown.fel_devastation.remains <= ( gcd.max * 3 ) ) )",
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "fel_dev_prep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.metamorphosis.remains <= variable.meta_prep_time ) & ! cooldown.fel_devastation.up & ! cooldown.fel_devastation.remains < 10 & ! buff.demonsurge_soul_sunder.up & ! buff.demonsurge_spirit_burst.up",
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "meta_prep",
|
|
},
|
|
{
|
|
["action"] = "the_hunt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( cooldown.sigil_of_spite.remains < execute_time || cooldown.soul_carver.remains < execute_time ) & cooldown.fel_devastation.remains < ( execute_time + gcd.max ) & fury < 50 )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.fiery_demise.enabled || talent.fiery_demise.enabled & dot.fiery_brand.ticking ) & ( ( ! talent.spirit_bomb.enabled || variable.single_target ) || ( talent.spirit_bomb.enabled & ! prev_gcd.1.sigil_of_spite & ( ( soul_fragments + 3 <= 5 & fury >= 40 ) || ( soul_fragments = 0 & fury >= 15 ) ) ) )",
|
|
["action"] = "soul_carver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.cycle_of_binding.enabled || ( cooldown.sigil_of_spite.duration < ( cooldown.metamorphosis.remains + 18 ) ) ) & ( ! talent.spirit_bomb.enabled || ( fury >= 80 & ( variable.can_spbomb || variable.can_spbomb_soon ) ) || ( soul_fragments <= ( 2 - talent.soul_sigils.rank ) ) )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst & talent.fiery_demise.enabled & dot.fiery_brand.ticking & cooldown.fel_devastation.remains >= ( gcd.max * 3 )",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spbomb & talent.fiery_demise.enabled & dot.fiery_brand.ticking & cooldown.fel_devastation.remains >= ( gcd.max * 3 )",
|
|
["action"] = "spirit_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.single_target & ! variable.dont_soul_cleave",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.single_target & ! variable.dont_soul_cleave",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst & cooldown.fel_devastation.remains >= ( gcd.max * 3 )",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spbomb & cooldown.fel_devastation.remains >= ( gcd.max * 3 )",
|
|
["action"] = "spirit_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( fury < 40 & ( ( buff.metamorphosis.up & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( ! buff.metamorphosis.up & ( variable.can_spbomb || variable.can_spbomb_soon ) ) ) ) )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( fury < 40 & ( ( buff.metamorphosis.up & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( ! buff.metamorphosis.up & ( variable.can_spbomb || variable.can_spbomb_soon ) ) ) ) || ( buff.metamorphosis.up & variable.can_spburst_one_gcd ) || ( ! buff.metamorphosis.up & variable.can_spbomb_one_gcd ) )",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit >= 40",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.dont_soul_cleave",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.dont_soul_cleave",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
{
|
|
["action"] = "fracture",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "throw_glaive",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["ar_execute"] = {
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "metamorphosis",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) >= 30 & ! ( buff.rending_strike.up || buff.glaive_flurry.up )",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reavers_glaive.up & ( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) < 30",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "rg_prep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.reavers_glaive.up",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets >= 3 & buff.art_of_the_glaive.stack >= 20",
|
|
["action"] = "bulk_extraction",
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fiery_brand",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sigil_of_spite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soul_carver",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fel_devastation",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["fel_dev"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge_spirit_burst.up & ( variable.can_spburst || soul_fragments >= 4 || ( buff.metamorphosis.remains < ( gcd.max * 2 ) ) )",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge_soul_sunder.up & ( ! buff.demonsurge_spirit_burst.up || ( buff.metamorphosis.remains < ( gcd.max * 2 ) ) )",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.cycle_of_binding.enabled || ( cooldown.sigil_of_spite.duration < ( cooldown.metamorphosis.remains + 18 ) ) ) & ( soul_fragments <= 2 & buff.demonsurge_spirit_burst.up )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_fragments <= 2 & ! prev_gcd.1.sigil_of_spite & buff.demonsurge_spirit_burst.up",
|
|
["action"] = "soul_carver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_fragments <= 2 & buff.demonsurge_spirit_burst.up",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge_spirit_burst.up || buff.demonsurge_soul_sunder.up",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge_spirit_burst.up || buff.demonsurge_soul_sunder.up",
|
|
["action"] = "fracture",
|
|
},
|
|
},
|
|
["fel_dev_prep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "potion",
|
|
["criteria"] = "prev_gcd.1.fiery_brand",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.hold_sof_for_precombat & ! variable.hold_sof_for_student & ! variable.hold_sof_for_dot",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fiery_demise.enabled & ( ( fury + variable.fel_dev_passive_fury_gen ) >= 120 ) & ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) & active_dot.fiery_brand = 0 & ( ( cooldown.metamorphosis.remains < ( execute_time + action.fel_devastation.execute_time + ( gcd.max * 2 ) ) ) || variable.fiery_brand_back_before_meta )",
|
|
["action"] = "fiery_brand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( fury + variable.fel_dev_passive_fury_gen ) >= 120 ) & ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 )",
|
|
["action"] = "fel_devastation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.cycle_of_binding.enabled || ( cooldown.sigil_of_spite.duration < ( cooldown.metamorphosis.remains + 18 ) ) ) & ( soul_fragments <= 1 || ( ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) & action.fracture.charges_fractional < 1 ) )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.cycle_of_binding.enabled || cooldown.metamorphosis.remains > 20 ) & ( soul_fragments <= 1 || ( ! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) & action.fracture.charges_fractional < 1 ) ) & ! prev_gcd.1.sigil_of_spite & ! prev_gcd.2.sigil_of_spite",
|
|
["action"] = "soul_carver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( fury + variable.fel_dev_passive_fury_gen ) < 120 & ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ( variable.can_spburst || variable.can_spburst_soon || soul_fragments >= 4 ) || ( fury + variable.fel_dev_passive_fury_gen ) < 120",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["action"] = "felblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fracture",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fel_devastation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( fury + variable.fel_dev_passive_fury_gen ) >= 150 )",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
{
|
|
["action"] = "throw_glaive",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["fs_execute"] = {
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "metamorphosis",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "the_hunt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fiery_brand",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sigil_of_spite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soul_carver",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fel_devastation",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["ar"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "spb_threshold",
|
|
["criteria"] = "talent.fiery_demise.enabled & dot.fiery_brand.ticking",
|
|
["value_else"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
["value"] = "( variable.single_target * 5 ) + ( variable.small_aoe * 5 ) + ( variable.big_aoe * 4 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spb",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
["value_else"] = "0",
|
|
["value"] = "soul_fragments >= variable.spb_threshold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spb_soon",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
["value_else"] = "0",
|
|
["value"] = "soul_fragments >= variable.spb_threshold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "can_spb_one_gcd",
|
|
["criteria"] = "talent.spirit_bomb.enabled",
|
|
["value_else"] = "0",
|
|
["value"] = "( soul_fragments + variable.num_spawnable_souls ) >= variable.spb_threshold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "time + action.fracture.execute_time + 20",
|
|
["criteria"] = "! buff.glaive_flurry.up & buff.rending_strike.up",
|
|
["var_name"] = "double_rm_expires",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "double_rm_remains",
|
|
["criteria"] = "( variable.double_rm_expires - time ) > 0",
|
|
["value_else"] = "0",
|
|
["value"] = "variable.double_rm_expires - time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["criteria"] = "! buff.glaive_flurry.up & ! buff.rending_strike.up & ! prev_gcd.1.reavers_glaive",
|
|
["var_name"] = "trigger_overflow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "rg_enhance_cleave",
|
|
["criteria"] = "variable.trigger_overflow || ( spell_targets.spirit_bomb >= 4 ) || ( fight_remains < 10 || target.time_to_die < 10 )",
|
|
["value_else"] = "0",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "soul_fragments + buff.art_of_the_glaive.stack",
|
|
["var_name"] = "souls_before_next_rg_sequence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "( 1.1 * ( 1 + stat.haste ) ) * ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) )",
|
|
["var_name"] = "souls_before_next_rg_sequence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "3 + talent.soul_sigils.enabled",
|
|
["criteria"] = "cooldown.sigil_of_spite.remains < ( variable.double_rm_remains - gcd.max - ( 2 - talent.soul_sigils.enabled ) )",
|
|
["var_name"] = "souls_before_next_rg_sequence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "3",
|
|
["criteria"] = "cooldown.soul_carver.remains < ( variable.double_rm_remains - gcd.max )",
|
|
["var_name"] = "souls_before_next_rg_sequence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "3",
|
|
["criteria"] = "cooldown.soul_carver.remains < ( variable.double_rm_remains - gcd.max - 3 )",
|
|
["var_name"] = "souls_before_next_rg_sequence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "! variable.trinket_1_buffs || ( variable.trinket_1_buffs & ( ( buff.rending_strike.up & buff.glaive_flurry.up ) || ( prev_gcd.1.reavers_glaive ) || ( buff.thrill_of_the_fight_damage.remains > 8 ) || ( buff.reavers_glaive.up & cooldown.the_hunt.remains < 5 ) ) )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "! variable.trinket_2_buffs || ( variable.trinket_2_buffs & ( ( buff.rending_strike.up & buff.glaive_flurry.up ) || ( prev_gcd.1.reavers_glaive ) || ( buff.thrill_of_the_fight_damage.remains > 8 ) || ( buff.reavers_glaive.up & cooldown.the_hunt.remains < 5 ) ) )",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "potion",
|
|
["criteria"] = "( buff.rending_strike.up & buff.glaive_flurry.up ) || prev_gcd.1.reavers_glaive",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "buff.glaive_flurry.up || buff.rending_strike.up || prev_gcd.1.reavers_glaive",
|
|
["list_name"] = "rg_sequence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "metamorphosis",
|
|
["criteria"] = "time < 5 || cooldown.fel_devastation.remains >= 20",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.reavers_glaive.up & ( buff.art_of_the_glaive.stack + soul_fragments ) < 20",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spb & ( soul_fragments > 2 || prev_gcd.1.sigil_of_spite || prev_gcd.1.soul_carver || ( spell_targets.spirit_bomb >= 4 & talent.fallout.enabled & cooldown.immolation_aura.remains < gcd.max ) )",
|
|
["action"] = "spirit_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( spell_targets.spirit_bomb >= 4 ) || ( ! buff.reavers_glaive.up || ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + gcd.max ) ) )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.ascending_flame.enabled || ( ! prev_gcd.1.sigil_of_flame & dot.sigil_of_flame.remains < ( 4 - talent.quickened_sigils.enabled ) ) ) & ( ! buff.reavers_glaive.up || ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + gcd.max ) ) )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reavers_glaive.up & spell_targets.spirit_bomb < 4 & debuff.reavers_mark.up & ( variable.double_rm_remains > ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) & ( ! buff.thrill_of_the_fight_damage.up || ( buff.thrill_of_the_fight_damage.remains < ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) > ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) & ( ( variable.souls_before_next_rg_sequence >= 20 ) || ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + cooldown.the_hunt.remains + action.the_hunt.execute_time ) ) )",
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "rg_overflow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & ( fight_remains < 10 || target.time_to_die < 10 )",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "ar_execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.reavers_glaive.up & ( variable.double_rm_remains <= ( execute_time + ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( soul_fragments < 3 & ( ( buff.art_of_the_glaive.stack + soul_fragments ) >= 20 ) )",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.reavers_glaive.up & ( variable.double_rm_remains <= ( execute_time + ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( ( buff.art_of_the_glaive.stack + soul_fragments ) >= 20 )",
|
|
["action"] = "spirit_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.reavers_glaive.up & ( variable.double_rm_remains <= ( execute_time + ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) & ( ( buff.art_of_the_glaive.stack + ( spell_targets >? 5 ) ) >= 20 )",
|
|
["action"] = "bulk_extraction",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) >= 30 & ( ( ! buff.thrill_of_the_fight_attack_speed.up || ( variable.double_rm_remains <= ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) || ( spell_targets.spirit_bomb >= 4 ) ) & ! ( buff.rending_strike.up || buff.glaive_flurry.up )",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) < 30 & ( ( ! buff.thrill_of_the_fight_attack_speed.up || ( variable.double_rm_remains <= ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) || ( spell_targets.spirit_bomb >= 4 ) )",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "rg_prep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.fiery_demise.enabled & active_dot.fiery_brand = 0 ) || ( talent.down_in_flames.enabled & ( full_recharge_time < gcd.max ) ) || ( talent.fiery_demise.enabled & active_dot.fiery_brand = 0 & ( buff.reavers_glaive.up || cooldown.the_hunt.remains < 5 || buff.art_of_the_glaive.stack >= 15 || buff.thrill_of_the_fight_damage.remains > 5 ) )",
|
|
["action"] = "fiery_brand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.thrill_of_the_fight_damage.up || ( fury >= 80 & ( variable.can_spb || variable.can_spb_soon ) ) || ( ( soul_fragments + buff.art_of_the_glaive.stack + ( ( 1.1 * ( 1 + raw_haste_pct ) ) * ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) ) < 20 )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spb",
|
|
["action"] = "spirit_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.can_spb || variable.can_spb_soon ) & fury < 40",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vengeful_retreat",
|
|
["criteria"] = "( variable.can_spb || variable.can_spb_soon ) & fury < 40 & ! cooldown.felblade.up & talent.unhindered_assault.enabled",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.can_spb || variable.can_spb_soon || variable.can_spb_one_gcd ) & fury < 40",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.thrill_of_the_fight_damage.up || ( ( soul_fragments + buff.art_of_the_glaive.stack + ( ( 1.1 * ( 1 + raw_haste_pct ) ) * ( variable.double_rm_remains - ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) ) ) ) < 20 )",
|
|
["action"] = "soul_carver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.metamorphosis.up & ( ( variable.double_rm_remains > ( ( action.reavers_glaive.execute_time + action.fracture.execute_time + action.soul_cleave.execute_time + gcd.remains + ( 0.5 * gcd.max ) ) + 2 ) ) || ( spell_targets.spirit_bomb >= 4 ) ) & ( ( action.fracture.full_recharge_time < ( 2 + gcd.max ) ) || ( ! variable.single_target & buff.thrill_of_the_fight_damage.up ) )",
|
|
["action"] = "fel_devastation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.fel_devastation.remains < gcd.max & fury < 50",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vengeful_retreat",
|
|
["criteria"] = "cooldown.fel_devastation.remains < gcd.max & fury < 50 & ! cooldown.felblade.up & talent.unhindered_assault.enabled",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.fel_devastation.remains < gcd.max & fury < 50",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( full_recharge_time < gcd.max ) || buff.metamorphosis.up || variable.can_spb || variable.can_spb_soon || buff.warblades_hunger.stack >= 5",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_fragments >= 1",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets >= 3",
|
|
["action"] = "bulk_extraction",
|
|
},
|
|
{
|
|
["action"] = "fracture",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soul_cleave",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "shear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "felblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "throw_glaive",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["metamorphosis"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains < ( gcd.max * 3 )",
|
|
["action"] = "fel_desolation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury < 50 & ( buff.metamorphosis.remains < ( gcd.max * 3 ) ) & cooldown.fel_desolation.up",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury < 50 & ! cooldown.felblade.up & ( buff.metamorphosis.remains < ( gcd.max * 3 ) ) & cooldown.fel_desolation.up",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.illuminated_sigils.enabled & talent.cycle_of_binding.enabled & charges = max_charges",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["action"] = "immolation_aura",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.student_of_suffering.enabled & ( talent.ascending_flame.enabled || ( ! talent.ascending_flame.enabled & ! prev_gcd.1.sigil_of_doom & ( dot.sigil_of_doom.remains < ( 4 - talent.quickened_sigils.enabled ) ) ) )",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.student_of_suffering.enabled & ! prev_gcd.1.sigil_of_flame & ! prev_gcd.1.sigil_of_doom & ( buff.student_of_suffering.remains < ( 4 - talent.quickened_sigils.enabled ) )",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains < ( ( 2 - talent.quickened_sigils.enabled ) + ( charges * gcd.max ) )",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_fragments <= 3 & ( soul_fragments >= 2 || prev_gcd.1.sigil_of_spite )",
|
|
["action"] = "fel_desolation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( cooldown.sigil_of_spite.remains < execute_time || cooldown.soul_carver.remains < execute_time ) & cooldown.fel_desolation.remains < ( execute_time + gcd.max ) & fury < 50 )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.spirit_bomb.enabled || ( variable.single_target & ! buff.demonsurge_spirit_burst.up ) ) || ( ( ( soul_fragments + 3 ) <= 6 ) & fury >= 40 & ! prev_gcd.1.sigil_of_spite )",
|
|
["action"] = "soul_carver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.spirit_bomb.enabled || ( fury >= 80 & ( variable.can_spburst || variable.can_spburst_soon ) ) || ( soul_fragments <= ( 2 - talent.soul_sigils.rank ) )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst & buff.demonsurge_spirit_burst.up",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["action"] = "fel_desolation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "the_hunt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge_soul_sunder.up & ! buff.demonsurge_spirit_burst.up & ! variable.can_spburst_one_gcd",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst & ( talent.fiery_demise.enabled & dot.fiery_brand.ticking || variable.big_aoe ) & buff.metamorphosis.remains > ( gcd.max * 2 )",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury < 40 & ( variable.can_spburst || variable.can_spburst_soon ) & ( buff.demonsurge_spirit_burst.up || talent.fiery_demise.enabled & dot.fiery_brand.ticking || variable.big_aoe )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury < 40 & ( variable.can_spburst || variable.can_spburst_soon || variable.can_spburst_one_gcd ) & ( buff.demonsurge_spirit_burst.up || talent.fiery_demise.enabled & dot.fiery_brand.ticking || variable.big_aoe )",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst_one_gcd & ( buff.demonsurge_spirit_burst.up || variable.big_aoe ) & ! prev_gcd.1.fracture",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.single_target & ! variable.dont_soul_cleave",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.can_spburst & buff.metamorphosis.remains > ( gcd.max * 2 )",
|
|
["action"] = "spirit_burst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit >= 40",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.dont_soul_cleave & ! ( variable.big_aoe & ( variable.can_spburst || variable.can_spburst_soon ) )",
|
|
["action"] = "soul_sunder",
|
|
},
|
|
{
|
|
["action"] = "felblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! prev_gcd.1.fracture",
|
|
["action"] = "fracture",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "disrupt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "demon_spikes",
|
|
["criteria"] = "! buff.demon_spikes.up & ( tanking || time < 5 )",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "num_spawnable_souls",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "max",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["criteria"] = "talent.soul_sigils.enabled & cooldown.sigil_of_flame.up",
|
|
["var_name"] = "num_spawnable_souls",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "max",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["criteria"] = "talent.fracture.enabled & cooldown.fracture.charges_fractional >= 1 & ! buff.metamorphosis.up",
|
|
["var_name"] = "num_spawnable_souls",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "max",
|
|
["action"] = "variable",
|
|
["value"] = "3",
|
|
["criteria"] = "talent.fracture.enabled & cooldown.fracture.charges_fractional >= 1 & buff.metamorphosis.up",
|
|
["var_name"] = "num_spawnable_souls",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["criteria"] = "talent.soul_carver.enabled & ( cooldown.soul_carver.remains > ( cooldown.soul_carver.duration - 3 ) )",
|
|
["var_name"] = "num_spawnable_souls",
|
|
},
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "infernal_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! hero_tree.felscarred",
|
|
["list_name"] = "ar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "hero_tree.felscarred",
|
|
["list_name"] = "fs",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "spell_targets.spirit_bomb = 1",
|
|
["var_name"] = "single_target",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "spell_targets.spirit_bomb >= 2 & spell_targets.spirit_bomb <= 5",
|
|
["var_name"] = "small_aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "spell_targets.spirit_bomb >= 6",
|
|
["var_name"] = "big_aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || ( trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff )",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || ( trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff )",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hero_tree.aldrachi_reaver || ( hero_tree.felscarred & talent.student_of_suffering.enabled )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["action"] = "immolation_aura",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["rg_sequence_filler"] = {
|
|
{
|
|
["action"] = "felblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.rending_strike.up",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sigil_of_spite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soul_carver",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fel_devastation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "throw_glaive",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["rg_sequence"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( fury < 30 & ( ( ! variable.rg_enhance_cleave & buff.glaive_flurry.up & buff.rending_strike.up ) || ( variable.rg_enhance_cleave & ! buff.rending_strike.up ) ) ) || ( action.fracture.charges_fractional < 1 & ( ( variable.rg_enhance_cleave & buff.rending_strike.up & buff.glaive_flurry.up ) || ( ! variable.rg_enhance_cleave & ! buff.glaive_flurry.up ) ) )",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "rg_sequence_filler",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( variable.rg_enhance_cleave & buff.rending_strike.up & buff.glaive_flurry.up ) || ( ! variable.rg_enhance_cleave & ! buff.glaive_flurry.up ) )",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( variable.rg_enhance_cleave & buff.rending_strike.up & buff.glaive_flurry.up ) || ( ! variable.rg_enhance_cleave & ! buff.glaive_flurry.up ) )",
|
|
["action"] = "shear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ! variable.rg_enhance_cleave & buff.glaive_flurry.up & buff.rending_strike.up ) || ( variable.rg_enhance_cleave & ! buff.rending_strike.up ) )",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up & ! buff.glaive_flurry.up",
|
|
["action"] = "fracture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up & ! buff.glaive_flurry.up",
|
|
["action"] = "shear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.rending_strike.up & buff.glaive_flurry.up",
|
|
["action"] = "soul_cleave",
|
|
},
|
|
},
|
|
["meta_prep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "metamorphosis",
|
|
["criteria"] = "cooldown.sigil_of_flame.charges < 1",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fiery_demise.enabled & ( ( talent.down_in_flames.enabled & charges >= max_charges ) || active_dot.fiery_brand = 0 )",
|
|
["action"] = "fiery_brand",
|
|
},
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["rg_overflow"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "trigger_overflow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "rg_enhance_cleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) >= 30 & ! buff.rending_strike.up & ! buff.glaive_flurry.up",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( fury + ( variable.rg_enhance_cleave * 25 ) + ( talent.keen_engagement.enabled * 20 ) ) < 30",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "rg_prep",
|
|
},
|
|
},
|
|
},
|
|
["author"] = "SimC",
|
|
},
|
|
["Feral"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/druid_feral.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250425.1,
|
|
["spec"] = 103,
|
|
["desc"] = "2025-04-25: SimC Update; fix 'wait'\n\n2025-03-13: Generators at 5 combo point workaround\n\n2025-02-28: TWW Season 2 update\n\n2024-10-22: 11.0.5",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/druid_feral.simc\n## Up to date with SimC: April 12 2025 - d935a4a\n\nactions.precombat+=/mark_of_the_wild\nactions.precombat+=/prowl,if=!buff.prowl.up\nactions.precombat+=/cat_form,if=!buff.cat_form.up\n# check if trinket slot contains a stat on use (variable is just kept in case of things like mirror not working with has_use_buff)\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff&!trinket.1.is.imperfect_ascendancy_serum&!trinket.1.is.ovinaxs_mercurial_egg&!trinket.1.is.concoction_kiss_of_death\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff&!trinket.2.is.imperfect_ascendancy_serum&!trinket.2.is.ovinaxs_mercurial_egg&!trinket.2.is.concoction_kiss_of_death\n# if we are playing 2 minute convoke, we prefer 2 minute on-use over 3 minute on-use even without berserk: heart of the lion\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=talent.convoke_the_spirits&!talent.ashamanes_guidance&variable.trinket_1_buffs&(trinket.1.cooldown.duration%%120=0||120%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=talent.convoke_the_spirits&!talent.ashamanes_guidance&variable.trinket_2_buffs&(trinket.1.cooldown.duration%%120=0||120%%trinket.1.cooldown.duration=0)\n# if we aren't playing 2 minute convoke, then we can sync 3 minute cds with berserk sans hotl\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=!(talent.convoke_the_spirits&!talent.ashamanes_guidance)&variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%%trinket.1.cooldown.duration=0||trinket.1.cooldown.duration%%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=!(talent.convoke_the_spirits&!talent.ashamanes_guidance)&variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.bs_inc.duration=0||cooldown.bs_inc.duration%%trinket.2.cooldown.duration=0||trinket.2.cooldown.duration%%cooldown.convoke_the_spirits.duration=0||cooldown.convoke_the_spirits.duration%%trinket.2.cooldown.duration=0)\n# prioritize trinkets that line-up with cds->main-stat on uses->longer cd trinkets->shorter duration trinkets\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.agility)*(1.2+trinket.2.has_buff.mastery)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.agility)*(1.2+trinket.1.has_buff.mastery)*(variable.trinket_1_sync))\n\nactions+=/prowl,if=buff.bs_inc.down&!buff.prowl.up\nactions+=/cat_form,if=!buff.cat_form.up&!talent.fluid_form\nactions+=/skull_bash\nactions+=/soothe\n## Line up <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&hero_tree.wildstalker)&(boss&fight_remains<=15||(cooldown.bs_inc.remains>20&fight_remains>5)||(cooldown.bs_inc.ready&fight_remains>12||boss))\nactions+=/rake,cycle_targets=1,if=buff.shadowmeld.up||buff.prowl.up\nactions+=/natures_vigil,if=variable.regrowth&health.percent<70&(buff.bs_inc.up||buff.tigers_fury.up)\nactions+=/renewal,if=variable.regrowth&health.percent<70\nactions+=/adaptive_swarm,cycle_targets=1,if=dot.adaptive_swarm_damage.stack<3&(!dot.adaptive_swarm_damage.ticking||dot.adaptive_swarm_damage.remains<2)&!action.adaptive_swarm.in_flight&(spell_targets=1||!talent.unbridled_swarm)&(dot.rip.ticking||hero_tree.druid_of_the_claw)\nactions+=/adaptive_swarm,cycle_targets=1,if=buff.cat_form.up&dot.adaptive_swarm_damage.stack<3&talent.unbridled_swarm.enabled&spell_targets.swipe_cat>1&dot.rip.ticking\nactions+=/ferocious_bite,if=buff.apex_predators_craving.up&!(variable.need_bt&active_bt_triggers=2)\nactions+=/call_action_list,name=cooldown,strict=1,if=dot.rip.ticking\n# keep using this archaic 'nonsense' for veinripper because its better idk ill fix soon tm\nactions+=/rip,if=talent.veinripper&spell_targets=1&hero_tree.wildstalker&!(talent.raging_fury&talent.veinripper)&(buff.bloodtalons.up||!talent.bloodtalons)&(dot.rip.remains<5&buff.tigers_fury.remains>10&combo_points>=3||((buff.tigers_fury.remains<3&combo_points=5)||buff.tigers_fury.remains<=1)&buff.tigers_fury.up&combo_points>=3&remains<cooldown.tigers_fury.remains)\n# fix to work with veinripper idk\nactions+=/rip,if=!talent.veinripper&spell_targets=1&hero_tree.wildstalker&buff.tigers_fury.up&(buff.bloodtalons.up||!talent.bloodtalons)&(combo_points>=3&refreshable&cooldown.tigers_fury.remains>25||buff.tigers_fury.remains<5&variable.rip_duration>cooldown.tigers_fury.remains&cooldown.tigers_fury.remains>=dot.rip.remains)\nactions+=/call_action_list,name=builder,if=(buff.bs_inc.up&!buff.ravage.up&!buff.coiled_to_spring.up&hero_tree.druid_of_the_claw&talent.coiled_to_spring&spell_targets<=2)||buff.bloodtalons.stack=0&active_bt_triggers=2\nactions+=/wait,sec=cooldown.tigers_fury.remains,if=combo_points=5&cooldown.tigers_fury.remains<3&spell_targets=1\nactions+=/call_action_list,name=finisher,if=combo_points=5\n## [Syrif] - combo_points<5 added to stop from sending generators inappropriately\nactions+=/call_action_list,name=builder,if=spell_targets.swipe_cat=1&combo_points<5\nactions+=/call_action_list,name=aoe_builder,if=spell_targets.swipe_cat>=2&combo_points<5\nactions+=/regrowth,if=buff.predatory_swiftness.up&variable.regrowth&selection_time>gcd.max\n\n# maintain thrash highest prio\nactions.aoe_builder+=/thrash_cat,if=refreshable&!talent.thrashing_claws&!(variable.need_bt&buff.bt_thrash.up)\n# avoid capping brs charges. Also send brutal slashes/ws swipe in aoe, even if we need to proc bloodtalons, during berserk.\nactions.aoe_builder+=/brutal_slash,cycle_targets=1,if=(cooldown.brutal_slash.full_recharge_time<4||time_to_die<4||raid_event.adds.remains<4||(buff.bs_inc.up&spell_targets>=3-hero_tree.druid_of_the_claw))&!(variable.need_bt&buff.bt_swipe.up&(buff.bs_inc.down||spell_targets<3-hero_tree.druid_of_the_claw))\nactions.aoe_builder+=/swipe_cat,if=talent.wild_slashes&(time_to_die<4||raid_event.adds.remains<4||buff.bs_inc.up&spell_targets>=3-hero_tree.druid_of_the_claw)&!(variable.need_bt&buff.bt_swipe.up&(buff.bs_inc.down||spell_targets<3-hero_tree.druid_of_the_claw))\n# with wild slashes we swipe at 5+ targets over raking/moonfire\nactions.aoe_builder+=/swipe_cat,if=time_to_die<4||(talent.wild_slashes&spell_targets.swipe_cat>4&!(variable.need_bt&buff.bt_swipe.up))\nactions.aoe_builder+=/prowl,if=dot.rake.refreshable||dot.rake.pmultiplier<1.4&!(variable.need_bt&buff.bt_rake.up)&action.rake.ready&gcd.remains=0&!buff.sudden_ambush.up&!variable.cc_capped\nactions.aoe_builder+=/shadowmeld,if=dot.rake.refreshable||dot.rake.pmultiplier<1.4&!(variable.need_bt&buff.bt_rake.up)&action.rake.ready&!buff.sudden_ambush.up&!buff.prowl.up&!variable.cc_capped\n# dcr rake > moonfire\nactions.aoe_builder+=/rake,cycle_targets=1,if=refreshable&talent.doubleclawed_rake&!(variable.need_bt&buff.bt_rake.up)&!variable.cc_capped\n# at 3t with wild slashes, swipe is better than moonfiring/st rake\nactions.aoe_builder+=/swipe_cat,if=talent.wild_slashes&spell_targets.swipe_cat>2&!(variable.need_bt&buff.bt_swipe.up)\n# if wildstalker make sure you have at least one rake up\nactions.aoe_builder+=/rake,cycle_targets=1,if=!dot.rake.ticking&hero_tree.wildstalker\n# li moonfire is better than non-dcr rake in aoe if we already have 1 rake\nactions.aoe_builder+=/moonfire_cat,cycle_targets=1,if=refreshable&!(variable.need_bt&buff.bt_moonfire.up)&!variable.cc_capped\nactions.aoe_builder+=/rake,cycle_targets=1,if=refreshable&!(variable.need_bt&buff.bt_rake.up)&!variable.cc_capped\n# fillers\nactions.aoe_builder+=/brutal_slash,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.aoe_builder+=/swipe_cat,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.aoe_builder+=/shred,if=!buff.sudden_ambush.up&!variable.easy_swipe&!(variable.need_bt&buff.bt_shred.up)\nactions.aoe_builder+=/thrash_cat,if=!talent.thrashing_claws&!(variable.need_bt&buff.bt_thrash.up)\n# fallback bt actions\nactions.aoe_builder+=/rake,cycle_targets=1,if=talent.doubleclawed_rake&buff.sudden_ambush.up&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/moonfire_cat,cycle_targets=1,if=variable.need_bt&buff.bt_moonfire.down\nactions.aoe_builder+=/rake,cycle_targets=1,if=buff.sudden_ambush.up&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/shred,if=variable.need_bt&buff.bt_shred.down&!variable.easy_swipe\nactions.aoe_builder+=/rake,cycle_targets=1,if=dot.rake.pmultiplier<1.6&variable.need_bt&buff.bt_rake.down\nactions.aoe_builder+=/thrash_cat,if=variable.need_bt&buff.bt_shred.down\n\nactions.builder+=/prowl,if=gcd.remains=0&energy>=35&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)*!(variable.need_bt&buff.bt_rake.up)&buff.tigers_fury.up&!buff.shadowmeld.up\nactions.builder+=/shadowmeld,if=gcd.remains=0&energy>=35&!buff.sudden_ambush.up&(dot.rake.refreshable||dot.rake.pmultiplier<1.4)*!(variable.need_bt&buff.bt_rake.up)&buff.tigers_fury.up&!buff.prowl.up\n# upgrade to stealth rakes, otherwise refresh in pandemic. Delay rake as long as possible if it would downgrade\nactions.builder+=/rake,if=((refreshable&persistent_multiplier>=dot.rake.pmultiplier||dot.rake.remains<3.5)||buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier)&!(variable.need_bt&buff.bt_rake.up)&(hero_tree.wildstalker||!buff.bs_inc.up)\n# bt check is due to the overcap line, comes up with convoke/apex bites\nactions.builder+=/shred,if=buff.sudden_ambush.up&buff.bs_inc.up&!(variable.need_bt&buff.bt_shred.up&active_bt_triggers=2)\nactions.builder+=/brutal_slash,if=cooldown.brutal_slash.full_recharge_time<4&!(variable.need_bt&buff.bt_swipe.up)\nactions.builder+=/moonfire_cat,if=refreshable\nactions.builder+=/thrash_cat,if=refreshable&!talent.thrashing_claws&!buff.bs_inc.up\nactions.builder+=/shred,if=buff.clearcasting.up&!(variable.need_bt&buff.bt_shred.up)\n# pool energy if we need to refresh dot in the next 1.5s [Hekili] TODO: Sim character to see how frequently this fires, determine if `wait` value should be adjusted.\nactions.builder+=/pool_resource,if=variable.dot_refresh_soon&energy.deficit>70&!variable.need_bt&!buff.bs_inc.up&cooldown.tigers_fury.remains>3\nactions.builder+=/brutal_slash,if=!(variable.need_bt&buff.bt_swipe.up)\nactions.builder+=/shred,if=!(variable.need_bt&buff.bt_shred.up)\nactions.builder+=/rake,if=refreshable\nactions.builder+=/thrash_cat,if=refreshable&!talent.thrashing_claws\nactions.builder+=/swipe_cat,if=variable.need_bt&buff.bt_swipe.down\n# clip rake for bt if it wont downgrade its snapshot\nactions.builder+=/rake,if=variable.need_bt&buff.bt_rake.down&persistent_multiplier>=dot.rake.pmultiplier\nactions.builder+=/moonfire_cat,if=variable.need_bt&buff.bt_moonfire.down\nactions.builder+=/thrash_cat,if=variable.need_bt&buff.bt_thrash.down\n\nactions.cooldown+=/incarnation,if=fight_remains>17||boss\n# non-stat on use trinkets get used on cooldown, so long as it wont interfere with a stat on-use trinket\nactions.cooldown+=/use_item,slot=trinket1,if=trinket.1.has_use_damage&(trinket.2.cooldown.remains>20&(!trinket.1.is.junkmaestros_mega_magnet||cooldown.bestinslots.remains>20||!equipped.bestinslots)||!trinket.2.has_use_buff&(cooldown.bestinslots.remains>20||!equipped.bestinslots)||cooldown.tigers_fury.remains<25&cooldown.tigers_fury.remains>20)||boss&fight_remains<5\nactions.cooldown+=/use_item,slot=trinket2,if=trinket.2.has_use_damage&(trinket.1.cooldown.remains>20&(!trinket.2.is.junkmaestros_mega_magnet||cooldown.bestinslots.remains>20||!equipped.bestinslots)||!trinket.1.has_use_buff&(cooldown.bestinslots.remains>20||!equipped.bestinslots)||cooldown.tigers_fury.remains<25&cooldown.tigers_fury.remains>20)||boss&fight_remains<5\n# berserk with tigers fury\nactions.cooldown+=/berserk,if=buff.tigers_fury.up&(fight_remains>12||boss)\nactions.cooldown+=/berserking,if=buff.bs_inc.up\n# todo make last set of cds line up again now that we know potions.remains is the syntax\nactions.cooldown+=/potion,if=buff.bs_inc.up||boss&fight_remains<32||(!variable.lastzerk&variable.lastconvoke&cooldown.convoke_the_spirits.remains<10)\n# non trinket gear-on-uses have variable rules on whether or not they trigger the trinket shared CD. For the cases they do we will need specific APL entries. For now just use on cooldown.\nactions.cooldown+=/use_items\n# stat on-use trinkets, prefers trinket with higher priority.\nactions.cooldown+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&(buff.bs_inc.up||((buff.tigers_fury.up&cooldown.tigers_fury.remains>25)&(cooldown.convoke_the_spirits.remains<6||(variable.trinket_2_buffs&cooldown.convoke_the_spirits.remains-trinket.2.cooldown.remains>0)||!talent.convoke_the_spirits&cooldown.bs_inc.remains-trinket.2.cooldown.remains>0)))&(!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains&boss\nactions.cooldown+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&(buff.bs_inc.up||((buff.tigers_fury.up&cooldown.tigers_fury.remains>25)&(cooldown.convoke_the_spirits.remains<6||(variable.trinket_1_buffs&cooldown.convoke_the_spirits.remains-trinket.1.cooldown.remains>0)||!talent.convoke_the_spirits&cooldown.bs_inc.remains-trinket.1.cooldown.remains>0)))&(!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains&boss\n## actions.cooldown+=/do_treacherous_transmitter_task,if=buff.tigers_fury.up||fight_remains<22\nactions.cooldown+=/feral_frenzy,if=combo_points<=1+buff.bs_inc.up&(buff.tigers_fury.up||!talent.savage_fury||!hero_tree.wildstalker||boss&fight_remains<cooldown.tigers_fury.remains)\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+=/pool_resource,for_next=1\nactions.finisher+=/ferocious_bite,cycle_targets=1,if=buff.bs_inc.up\n\n# what rips new duration would be if applied in current state\nactions.variable+=/variable,name=rip_duration,value=((4+(4*combo_points))*(1-(0.2*talent.circle_of_life_and_death))*(1+(0.25*talent.veinripper)))+(variable.rip_max_pandemic_duration>?dot.rip.remains)\nactions.variable+=/variable,name=rip_max_pandemic_duration,value=((4+(4*combo_points))*(1-(0.2*talent.circle_of_life_and_death))*(1+(0.25*talent.veinripper)))*0.3\n# this returns true if we have a dot nearing pandemic range\nactions.variable+=/variable,name=dot_refresh_soon,value=(!talent.thrashing_claws&(dot.thrash_cat.remains-dot.thrash_cat.duration*0.3<=2))||(talent.lunar_inspiration&(dot.moonfire_cat.remains-dot.moonfire_cat.duration*0.3<=2))||((dot.rake.pmultiplier<1.6||buff.sudden_ambush.up)&(dot.rake.remains-dot.rake.duration*0.3<=2))\n# try to proc bt if we have 1 or 0 sacks of bloodtalons\nactions.variable+=/variable,name=need_bt,value=talent.bloodtalons&buff.bloodtalons.stack<=1\n# capped on clearcasting stacks\nactions.variable+=/variable,name=cc_capped,value=buff.clearcasting.stack=(1+talent.moment_of_clarity)\n# checks if theres exactly 1 convoke remaining in sim\nactions.variable+=/variable,name=lastconvoke,value=(cooldown.convoke_the_spirits.remains+cooldown.convoke_the_spirits.duration)>fight_remains&cooldown.convoke_the_spirits.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\n# track moonfire snapshot\nactions.variable+=/variable,name=moonfire_snapshotted,value=buff.tigers_fury.up,op=set,if=prev.lunar_inspiration",
|
|
["version"] = 20250425.1,
|
|
["warnings"] = "The 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 '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 '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 '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 '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 '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 2: Converted 'trinket.1.is.junkmaestros_mega_magnet' to 'trinket.t1.is.junkmaestros_mega_magnet' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\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 3: Converted 'trinket.2.is.junkmaestros_mega_magnet' to 'trinket.t2.is.junkmaestros_mega_magnet' (1x).\nLine 3: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (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.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 '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).\n\nImported 7 action lists.\n",
|
|
["author"] = "SimC",
|
|
["lists"] = {
|
|
["aoe_builder"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! talent.thrashing_claws.enabled & ! ( variable.need_bt & buff.bt_thrash.up )",
|
|
["action"] = "thrash_cat",
|
|
["description"] = "maintain thrash highest prio",
|
|
},
|
|
{
|
|
["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,
|
|
["criteria"] = "time_to_die < 4 || ( talent.wild_slashes.enabled & spell_targets.swipe_cat > 4 & ! ( variable.need_bt & buff.bt_swipe.up ) )",
|
|
["action"] = "swipe_cat",
|
|
["description"] = "with wild slashes we swipe at 5+ targets over raking/moonfire",
|
|
},
|
|
{
|
|
["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,
|
|
["criteria"] = "talent.wild_slashes.enabled & spell_targets.swipe_cat > 2 & ! ( variable.need_bt & buff.bt_swipe.up )",
|
|
["action"] = "swipe_cat",
|
|
["description"] = "at 3t with wild slashes, swipe is better than moonfiring/st rake",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rake",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "! dot.rake.ticking & hero_tree.wildstalker",
|
|
["description"] = "if wildstalker make sure you have at least one rake up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "moonfire_cat",
|
|
["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 if we already have 1 rake",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rake",
|
|
["criteria"] = "refreshable & ! ( variable.need_bt & buff.bt_rake.up ) & ! variable.cc_capped",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ( variable.need_bt & buff.bt_swipe.up )",
|
|
["action"] = "brutal_slash",
|
|
["description"] = "fillers",
|
|
},
|
|
{
|
|
["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"] = "moonfire_cat",
|
|
["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 & hero_tree.wildstalker ) & ( 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,
|
|
["criteria"] = "talent.veinripper.enabled & 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",
|
|
["description"] = "keep using this archaic 'nonsense' for veinripper because its better idk ill fix soon tm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.veinripper.enabled & spell_targets = 1 & hero_tree.wildstalker & buff.tigers_fury.up & ( buff.bloodtalons.up || ! talent.bloodtalons.enabled ) & ( combo_points >= 3 & refreshable & cooldown.tigers_fury.remains > 25 || buff.tigers_fury.remains < 5 & variable.rip_duration > cooldown.tigers_fury.remains & cooldown.tigers_fury.remains >= dot.rip.remains )",
|
|
["action"] = "rip",
|
|
["description"] = "fix to work with veinripper idk",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.bs_inc.up & ! buff.ravage.up & ! buff.coiled_to_spring.up & hero_tree.druid_of_the_claw & talent.coiled_to_spring.enabled & spell_targets <= 2 ) || buff.bloodtalons.stack = 0 & active_bt_triggers = 2",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "builder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["sec"] = "cooldown.tigers_fury.remains",
|
|
["action"] = "wait",
|
|
["criteria"] = "combo_points = 5 & cooldown.tigers_fury.remains < 3 & spell_targets = 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points = 5",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "finisher",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.swipe_cat = 1 & combo_points < 5",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "builder",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.swipe_cat >= 2 & combo_points < 5",
|
|
["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 )",
|
|
["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"] = "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 )",
|
|
["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"] = "! ( 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 ) )",
|
|
["var_name"] = "trinket_priority",
|
|
["action"] = "variable",
|
|
["value_else"] = "1",
|
|
["value"] = "2",
|
|
},
|
|
},
|
|
["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,
|
|
["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 ) & ( hero_tree.wildstalker || ! buff.bs_inc.up )",
|
|
["action"] = "rake",
|
|
["description"] = "upgrade to stealth rakes, otherwise refresh in pandemic. Delay rake as long as possible if it would downgrade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.sudden_ambush.up & buff.bs_inc.up & ! ( variable.need_bt & buff.bt_shred.up & active_bt_triggers = 2 )",
|
|
["action"] = "shred",
|
|
["description"] = "bt check is due to the overcap line, comes up with convoke/apex bites",
|
|
},
|
|
{
|
|
["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"] = "moonfire_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! talent.thrashing_claws.enabled & ! buff.bs_inc.up",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.clearcasting.up & ! ( variable.need_bt & buff.bt_shred.up )",
|
|
["action"] = "shred",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.dot_refresh_soon & energy.deficit > 70 & ! variable.need_bt & ! buff.bs_inc.up & cooldown.tigers_fury.remains > 3",
|
|
["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.",
|
|
},
|
|
{
|
|
["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"] = "refreshable",
|
|
["action"] = "rake",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! talent.thrashing_claws.enabled",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_swipe.down",
|
|
["action"] = "swipe_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_rake.down & persistent_multiplier >= dot.rake.pmultiplier",
|
|
["action"] = "rake",
|
|
["description"] = "clip rake for bt if it wont downgrade its snapshot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_moonfire.down",
|
|
["action"] = "moonfire_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.need_bt & buff.bt_thrash.down",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
},
|
|
["variable"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( ( 4 + ( 4 * combo_points ) ) * ( 1 - ( 0.2 * talent.circle_of_life_and_death.enabled ) ) * ( 1 + ( 0.25 * talent.veinripper.enabled ) ) ) + ( variable.rip_max_pandemic_duration >? dot.rip.remains )",
|
|
["description"] = "what rips new duration would be if applied in current state",
|
|
["var_name"] = "rip_duration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( ( 4 + ( 4 * combo_points ) ) * ( 1 - ( 0.2 * talent.circle_of_life_and_death.enabled ) ) * ( 1 + ( 0.25 * talent.veinripper.enabled ) ) ) * 0.3",
|
|
["var_name"] = "rip_max_pandemic_duration",
|
|
},
|
|
{
|
|
["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",
|
|
["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 & ( ! trinket.t1.is.junkmaestros_mega_magnet || cooldown.bestinslots.remains > 20 || ! equipped.bestinslots ) || ! trinket.t2.has_use_buff & ( cooldown.bestinslots.remains > 20 || ! equipped.bestinslots ) || cooldown.tigers_fury.remains < 25 & cooldown.tigers_fury.remains > 20 ) || boss & fight_remains < 5",
|
|
["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 & ( ! trinket.t2.is.junkmaestros_mega_magnet || cooldown.bestinslots.remains > 20 || ! equipped.bestinslots ) || ! trinket.t1.has_use_buff & ( cooldown.bestinslots.remains > 20 || ! equipped.bestinslots ) || cooldown.tigers_fury.remains < 25 & cooldown.tigers_fury.remains > 20 ) || boss & fight_remains < 5",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tigers_fury.up & ( fight_remains > 12 || boss )",
|
|
["action"] = "berserk",
|
|
["description"] = "berserk with tigers fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bs_inc.up",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bs_inc.up || boss & fight_remains < 32 || ( ! variable.lastzerk & variable.lastconvoke & cooldown.convoke_the_spirits.remains < 10 )",
|
|
["action"] = "potion",
|
|
["description"] = "todo make last set of cds line up again now that we know potions.remains is the syntax",
|
|
},
|
|
{
|
|
["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 & ( buff.tigers_fury.up || ! talent.savage_fury.enabled || ! hero_tree.wildstalker || boss & fight_remains < cooldown.tigers_fury.remains )",
|
|
["action"] = "feral_frenzy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["description"] = "always line up convoke with berserk if you can",
|
|
},
|
|
},
|
|
["finisher"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["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.",
|
|
},
|
|
{
|
|
["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,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "ferocious_bite",
|
|
["criteria"] = "buff.bs_inc.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["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",
|
|
["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,
|
|
["action"] = "fire_breath",
|
|
["criteria"] = "fight_remains > 14 + cast_time",
|
|
["empower_to"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["criteria"] = "fight_remains > 8 + cast_time",
|
|
["empower_to"] = "2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["criteria"] = "fight_remains > 2 + cast_time",
|
|
["empower_to"] = "3",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "fire_breath",
|
|
["criteria"] = "empowering.fire_breath || fight_remains > cast_time",
|
|
["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,
|
|
},
|
|
},
|
|
},
|
|
["author"] = "Kahekili",
|
|
},
|
|
["Havoc"] = {
|
|
["source"] = "SimulationCraft",
|
|
["builtIn"] = true,
|
|
["date"] = 20250413,
|
|
["spec"] = 577,
|
|
["desc"] = "2025-04-13: Save Reaver's Glaive even if we'll waste Art of the Glaive stacks\n\n2025-04-06: Flex Openers\n\n2025-03-14: Sync with SimC\n\n2025-03-01: Sync with SimC\n\n2025-02-26: (minor) Sync with SimC",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/demonhunter_havoc.simc\n## Up to date with SimC: March 9 2025 - 91f125a\n\nactions.precombat+=/variable,name=trinket1_steroids,value=trinket.1.is.improvised_seaforium_pacemaker\nactions.precombat+=/variable,name=trinket2_steroids,value=trinket.2.is.improvised_seaforium_pacemaker\n# Blacklist for trinkets to hold trinket cooldowns for Initiative and Necessary Strike line-up outside standard trinket implementation\nactions.precombat+=/variable,name=trinket1_crit,value=trinket.1.is.mad_queens_mandate||trinket.1.is.junkmaestros_mega_magnet||trinket.1.is.geargrinders_spare_keys||trinket.1.is.ravenous_honey_buzzer||trinket.1.is.grim_codex\nactions.precombat+=/variable,name=trinket2_crit,value=trinket.2.is.mad_queens_mandate||trinket.2.is.junkmaestros_mega_magnet||trinket.2.is.geargrinders_spare_keys||trinket.2.is.ravenous_honey_buzzer||trinket.2.is.grim_codex\nactions.precombat+=/variable,name=rg_ds,default=0,op=reset\nactions.precombat+=/sigil_of_flame\nactions.precombat+=/immolation_aura\n\nactions+=/disrupt\n## [Hekili] `retarget_auto_attack` is not implemented.\n### Spread Burning Wounds for uptime in multitarget scenarios\n## actions+=/retarget_auto_attack,line_cd=1,target_if=min:debuff.burning_wound.remains,if=talent.burning_wound&talent.demon_blades&active_dot.burning_wound<(spell_targets>?3)\n## actions+=/retarget_auto_attack,line_cd=1,target_if=min:!target.is_boss,if=talent.burning_wound&talent.demon_blades&active_dot.burning_wound=(spell_targets>?3)\n# Fury generated per second\nactions+=/variable,name=fury_gen,op=set,value=talent.demon_blades*(1%(2.6*attack_haste)*((talent.demonsurge&buff.metamorphosis.up)*3+12))+buff.immolation_aura.stack*6+buff.tactical_retreat.up*10\n# Tier 33 tier set check for trinket lineups withs Necessary Sacrifice\nactions+=/variable,name=tier33_4piece,value=(buff.initiative.up||!talent.initiative)&(buff.necessary_sacrifice.up||!set_bonus.thewarwithin_season_2_4pc)\n# Double on use trinket holding for using a stat cooldown trinket and an on use damage trinket\nactions+=/variable,name=double_on_use,value=!equipped.signet_of_the_priory&!equipped.house_of_cards||(trinket.1.is.house_of_cards||trinket.1.is.signet_of_the_priory)&trinket.1.cooldown.remains>20||(trinket.2.is.house_of_cards||trinket.2.is.signet_of_the_priory)&trinket.2.cooldown.remains>20\n# Use to determine if we traversed either of the opener lists.\nactions.ar+=/variable,name=opened,value=false\n# Separate actionlists for each hero tree\nactions+=/run_action_list,name=ar,strict=1,if=hero_tree.aldrachi_reaver\n## [Syrif] - Fallback for people levelling\nactions+=/run_action_list,name=fs,strict=1,if=!hero_tree.aldrachi_reaver\n\n\n# Aldrachi Reaver\nactions.ar=variable,name=rg_inc,op=set,value=buff.rending_strike.down&buff.glaive_flurry.up&cooldown.blade_dance.up&gcd.remains=0||variable.rg_inc&prev_gcd.1.death_sweep\n## [Hekili] `pick_up_fragment` is not implemented.\n## actions.ar+=/pick_up_fragment,use_off_gcd=1,if=fury<=90\nactions.ar+=/variable,name=fel_barrage,op=set,value=talent.fel_barrage&(cooldown.fel_barrage.remains<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.ar+=/chaos_strike,if=buff.rending_strike.up&buff.glaive_flurry.up&(variable.rg_ds=2||active_enemies>2)&time>10\nactions.ar+=/annihilation,if=buff.rending_strike.up&buff.glaive_flurry.up&(variable.rg_ds=2||active_enemies>2)\n## [Hekili] Remove `action.reavers_glaive.last_used` check that prevented using Reaver's Glaive after the opener.\nactions.ar+=/reavers_glaive,if=buff.glaive_flurry.down&buff.rending_strike.down&buff.thrill_of_the_fight_damage.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&debuff.essence_break.down&(buff.art_of_the_glaive.stack>3||buff.metamorphosis.remains>2||cooldown.eye_beam.remains<10||fight_remains<10)\nactions.ar+=/reavers_glaive,if=buff.glaive_flurry.down&buff.rending_strike.down&buff.thrill_of_the_fight_damage.remains<4&(buff.thrill_of_the_fight_damage.up||!prev_gcd.1.death_sweep||!variable.rg_inc)&active_enemies>2||boss&fight_remains<10\nactions.ar+=/call_action_list,name=ar_cooldown\n## [Hekili] No performance loss in sims changing from Run Action List to Call Action List; checking CDs toggle will help keep cromulent.\nactions.ar+=/call_action_list,name=ar_opener,if=time<15&toggle.cooldowns&(cooldown.eye_beam.up||cooldown.metamorphosis.up||talent.essence_break&cooldown.essence_break.up)\nactions.ar+=/sigil_of_spite,if=debuff.essence_break.down&(!talent.reavers_mark||active_dot.reavers_mark>0||debuff.reavers_mark.remains>=2-talent.quickened_sigils)\nactions.ar+=/run_action_list,name=ar_fel_barrage,if=variable.fel_barrage&raid_event.adds.up\nactions.ar+=/immolation_aura,if=active_enemies>2&talent.ragefire&(!talent.fel_barrage||cooldown.fel_barrage.remains>recharge_time)&debuff.essence_break.down&(buff.metamorphosis.down||buff.metamorphosis.remains>5)\nactions.ar+=/immolation_aura,if=active_enemies>2&talent.ragefire&raid_event.adds.up&raid_event.adds.remains<15&raid_event.adds.remains>5&debuff.essence_break.down\n## [Syrif] - Rework trinket conditions to work with existing metatable structure\nactions.ar+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&(cooldown.eye_beam.remains>15&gcd.remains<0.3||gcd.remains<0.2&cooldown.eye_beam.remains<=gcd.remains&cooldown.metamorphosis.remains>10)&(!variable.trinket1_steroids&!variable.trinket2_steroids||variable.trinket1_steroids&trinket.t1.has_stat.any_dps&trinket.t1.has_cooldown&(trinket.t1.cooldown.remains<gcd.max*3||trinket.t1.cooldown.remains>30)||variable.trinket2_steroids&trinket.t2.has_stat.any_dps&trinket.t1.has_cooldown&(trinket.t2.cooldown.remains<gcd.max*3||trinket.t1.cooldown.remains>30))&time>20&(!talent.inertia&buff.unbound_chaos.down||buff.inertia_trigger.down&buff.metamorphosis.down)\nactions.ar+=/run_action_list,name=ar_fel_barrage,if=variable.fel_barrage||!talent.demon_blades&talent.fel_barrage&(buff.fel_barrage.up||cooldown.fel_barrage.up)&buff.metamorphosis.down\nactions.ar+=/felblade,if=!talent.inertia&active_enemies=1&buff.unbound_chaos.up&buff.initiative.up&debuff.essence_break.down&buff.metamorphosis.down\nactions.ar+=/felblade,if=buff.inertia_trigger.up&talent.inertia&cooldown.eye_beam.remains<=0.5&(cooldown.metamorphosis.remains&talent.looks_can_kill||active_enemies>1)\nactions.ar+=/run_action_list,name=ar_meta,if=buff.metamorphosis.up\nactions.ar+=/felblade,if=buff.inertia_trigger.up&talent.inertia&buff.inertia.down&cooldown.blade_dance.remains<4&(cooldown.eye_beam.remains>5&cooldown.eye_beam.remains>buff.unbound_chaos.remains||cooldown.eye_beam.remains<=gcd.max&cooldown.vengeful_retreat.remains<=gcd.max+1)\n## [Hekili] Note that, with procs, you can get back-to-back Immolation Auras here and that's consistent with the sim: https://www.raidbots.com/simbot/report/d2c3niKvdSVyDbQdsaDsrB/simc\n## actions.ar+=/immolation_aura,if=time<15&active_enemies=1&talent.a_fire_inside&talent.burning_wound&buff.metamorphosis.down\nactions.ar+=/immolation_aura,if=talent.a_fire_inside&talent.burning_wound&full_recharge_time<gcd.max*2&(raid_event.adds.in>full_recharge_time||active_enemies>desired_targets)\nactions.ar+=/immolation_aura,if=active_enemies>desired_targets&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>full_recharge_time)\nactions.ar+=/immolation_aura,if=fight_remains<15&cooldown.blade_dance.remains&talent.ragefire\n## [Syrif] - Rework trinket conditions to work with existing metatable structure\nactions.ar+=/eye_beam,if=(cooldown.blade_dance.remains<7||raid_event.adds.up)&(!variable.trinket1_steroids&!variable.trinket2_steroids||variable.trinket1_steroids&trinket.t1.has_stat.any_dps&trinket.t1.has_cooldown&(trinket.t1.cooldown.remains<gcd.max*3||trinket.t1.cooldown.remains>30)||variable.trinket2_steroids&trinket.t2.has_stat.any_dps&trinket.t1.has_cooldown&(trinket.t2.cooldown.remains<gcd.max*3||trinket.t1.cooldown.remains>30))||boss&fight_remains<10\nactions.ar+=/blade_dance,if=cooldown.eye_beam.remains>=gcd.max*3&buff.rending_strike.down\nactions.ar+=/chaos_strike,if=buff.rending_strike.up\nactions.ar+=/sigil_of_flame,if=active_enemies>3||debuff.essence_break.down\nactions.ar+=/felblade,if=fury.deficit>=40+variable.fury_gen*0.5&!buff.inertia_trigger.up\nactions.ar+=/glaive_tempest,if=active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>10\nactions.ar+=/chaos_strike,if=debuff.essence_break.up\nactions.ar+=/throw_glaive,if=active_enemies>1&talent.furious_throws&(!talent.screaming_brutality||charges=2||full_recharge_time<cooldown.blade_dance.remains)\nactions.ar+=/chaos_strike,if=cooldown.eye_beam.remains>gcd.max*2||fury>80\nactions.ar+=/felblade,if=active_enemies=1&!talent.a_fire_inside&debuff.essence_break.down\nactions.ar+=/immolation_aura,if=raid_event.adds.in>full_recharge_time||active_enemies>desired_targets&active_enemies>2\nactions.ar+=/sigil_of_flame,if=buff.out_of_range.down&debuff.essence_break.down&(!talent.fel_barrage||cooldown.fel_barrage.remains>25||active_enemies=1&!raid_event.adds.exists)\nactions.ar+=/demons_bite\nactions.ar+=/throw_glaive,if=buff.unbound_chaos.down&recharge_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.ar+=/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.ar+=/arcane_torrent,if=buff.out_of_range.down&debuff.essence_break.down&fury<100\n\nactions.ar_cooldown+=/metamorphosis,if=(((cooldown.eye_beam.remains>=20||talent.cycle_of_hatred&cooldown.eye_beam.remains>=13)&(!talent.essence_break||debuff.essence_break.up)&buff.fel_barrage.down&(raid_event.adds.in>40||(raid_event.adds.remains>8||!talent.fel_barrage)&active_enemies>2)||!talent.chaotic_transformation||boss&fight_remains<30)&buff.inner_demon.down&(!talent.restless_hunter&cooldown.blade_dance.remains>gcd.max*3||prev_gcd.1.death_sweep))&!talent.inertia&!talent.essence_break&(variable.opened||time>15)\nactions.ar_cooldown+=/metamorphosis,if=(cooldown.blade_dance.remains&((prev_gcd.1.death_sweep||prev_gcd.2.death_sweep||prev_gcd.3.death_sweep||buff.metamorphosis.up&buff.metamorphosis.remains<gcd.max)&cooldown.eye_beam.remains&(!talent.essence_break||debuff.essence_break.up||talent.shattered_destiny)&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)&(variable.opened||time>15)\nactions.ar_cooldown+=/potion,if=boss&fight_remains<35||(buff.metamorphosis.up||debuff.essence_break.up)&time>10\n## [Hekili] `invoke_external_buff` is not implemented.\n## actions.ar_cooldown+=/invoke_external_buff,name=power_infusion,if=buff.metamorphosis.up||boss&fight_remains<=20\nactions.ar_cooldown+=/variable,name=special_trinket,op=set,value=equipped.mad_queens_mandate||equipped.treacherous_transmitter||equipped.skardyns_grace||equipped.signet_of_the_priory||equipped.junkmaestros_mega_magnet||equipped.geargrinders_spare_keys||equipped.mister_locknstalk||equipped.ravenous_honey_buzzer||equipped.grim_codex\nactions.ar_cooldown+=/use_item,name=mad_queens_mandate,if=((!talent.initiative||buff.initiative.up||time>5)&(buff.metamorphosis.remains>5||buff.metamorphosis.down)&(trinket.1.is.mad_queens_mandate&(trinket.2.cooldown.duration<10||trinket.2.cooldown.remains>10||!trinket.2.has_buff.any)||trinket.2.is.mad_queens_mandate&(trinket.1.cooldown.duration<10||trinket.1.cooldown.remains>10||!trinket.1.has_buff.any))&fight_remains>120||boss&fight_remains<10&fight_remains<buff.metamorphosis.remains)&debuff.essence_break.down||fight_remains<5\nactions.ar_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.ar_cooldown+=/use_item,name=skardyns_grace,if=(!equipped.mad_queens_mandate||fight_remains>25||trinket.2.is.skardyns_grace&trinket.1.cooldown.remains>fight_remains||trinket.1.is.skardyns_grace&trinket.2.cooldown.remains>fight_remains||trinket.1.cooldown.duration<10||trinket.2.cooldown.duration<10)&buff.metamorphosis.up\nactions.ar_cooldown+=/use_item,name=house_of_cards,if=(cooldown.eye_beam.up||buff.metamorphosis.up)||boss&fight_remains<20\nactions.ar_cooldown+=/use_item,name=signet_of_the_priory,if=time<20&(!talent.inertia||buff.inertia.up)||buff.metamorphosis.up&time>20||boss&fight_remains<20\nactions.ar_cooldown+=/use_item,name=junkmaestros_mega_magnet,if=variable.tier33_4piece&variable.double_on_use||fight_remains<20\nactions.ar_cooldown+=/use_item,name=geargrinders_spare_keys,if=variable.tier33_4piece&variable.double_on_use||fight_remains<20\nactions.ar_cooldown+=/use_item,name=grim_codex,if=variable.tier33_4piece&variable.double_on_use||boss&fight_remains<10\nactions.ar_cooldown+=/use_item,name=ravenous_honey_buzzer,if=(variable.tier33_4piece&(buff.inertia.down&(cooldown.essence_break.remains&debuff.essence_break.down||!talent.essence_break))&(trinket.1.is.ravenous_honey_buzzer&(trinket.2.cooldown.duration<10||trinket.2.cooldown.remains>10||!trinket.2.has_buff.any)||trinket.2.is.ravenous_honey_buzzer&(trinket.1.cooldown.duration<10||trinket.1.cooldown.remains>10||!trinket.1.has_buff.any))&fight_remains>120||boss&fight_remains<10&fight_remains<buff.metamorphosis.remains)||fight_remains<5\n## [Hekili] `do_treacherous_transmitter_task` is not implemented.\n## actions.ar_cooldown+=/do_treacherous_transmitter_task,if=cooldown.eye_beam.remains>15||cooldown.eye_beam.remains<5||boss&fight_remains<20\nactions.ar_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||boss&fight_remains<25)&!trinket.1.is.mister_locknstalk&!variable.trinket1_crit&!trinket.1.is.skardyns_grace&!trinket.1.is.treacherous_transmitter&(!variable.special_trinket||trinket.2.cooldown.remains>20)\nactions.ar_cooldown+=/use_item,slot=trinket2,if=((cooldown.eye_beam.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||boss&fight_remains<25)&!trinket.2.is.mister_locknstalk&!variable.trinket2_crit&!trinket.2.is.skardyns_grace&!trinket.2.is.treacherous_transmitter&(!variable.special_trinket||trinket.1.cooldown.remains>20)\nactions.ar_cooldown+=/the_hunt,if=debuff.essence_break.down&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>90)&(!talent.reavers_mark||debuff.reavers_mark.up)&buff.reavers_glaive.down&(buff.metamorphosis.remains>5||buff.metamorphosis.down)&(!talent.initiative||buff.initiative.up||time>5)&time>5&(!talent.inertia&buff.unbound_chaos.down||buff.inertia_trigger.down)\nactions.ar_cooldown+=/sigil_of_spite,if=debuff.essence_break.down&(!talent.reavers_mark||active_dot.reavers_mark>0||debuff.reavers_mark.remains>=2-talent.quickened_sigils)&cooldown.blade_dance.remains&time>15\n\nactions.ar_fel_barrage+=/variable,name=generator_up,op=set,value=cooldown.felblade.remains<gcd.max||cooldown.sigil_of_flame.remains<gcd.max\nactions.ar_fel_barrage+=/variable,name=gcd_drain,op=set,value=gcd.max*32\nactions.ar_fel_barrage+=/annihilation,if=buff.inner_demon.up\nactions.ar_fel_barrage+=/eye_beam,if=buff.fel_barrage.down&(active_enemies>1&raid_event.adds.up||raid_event.adds.in>40)\nactions.ar_fel_barrage+=/essence_break,if=buff.fel_barrage.down&buff.metamorphosis.up\nactions.ar_fel_barrage+=/death_sweep,if=buff.fel_barrage.down\nactions.ar_fel_barrage+=/immolation_aura,if=(active_enemies>2||buff.fel_barrage.up)&(cooldown.eye_beam.remains>recharge_time+3)\nactions.ar_fel_barrage+=/glaive_tempest,if=buff.fel_barrage.down&active_enemies>1\nactions.ar_fel_barrage+=/blade_dance,if=buff.fel_barrage.down\nactions.ar_fel_barrage+=/fel_barrage,if=fury>100&(raid_event.adds.in>90||raid_event.adds.in<gcd.max||raid_event.adds.remains>4&active_enemies>2)\nactions.ar_fel_barrage+=/felblade,if=buff.inertia_trigger.up&buff.fel_barrage.up\nactions.ar_fel_barrage+=/sigil_of_flame,if=fury.deficit>40&buff.fel_barrage.up\nactions.ar_fel_barrage+=/felblade,if=buff.fel_barrage.up&fury.deficit>40\nactions.ar_fel_barrage+=/death_sweep,if=fury-variable.gcd_drain-35>0&(buff.fel_barrage.remains<3||variable.generator_up||fury>80||variable.fury_gen>18)\nactions.ar_fel_barrage+=/glaive_tempest,if=fury-variable.gcd_drain-30>0&(buff.fel_barrage.remains<3||variable.generator_up||fury>80||variable.fury_gen>18)\nactions.ar_fel_barrage+=/blade_dance,if=fury-variable.gcd_drain-35>0&(buff.fel_barrage.remains<3||variable.generator_up||fury>80||variable.fury_gen>18)\nactions.ar_fel_barrage+=/arcane_torrent,if=fury.deficit>40&buff.fel_barrage.up\nactions.ar_fel_barrage+=/the_hunt,if=fury>40&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>80)\nactions.ar_fel_barrage+=/annihilation,if=fury-variable.gcd_drain-40>20&(buff.fel_barrage.remains<3||variable.generator_up||fury>80||variable.fury_gen>18)\nactions.ar_fel_barrage+=/chaos_strike,if=fury-variable.gcd_drain-40>20&(cooldown.fel_barrage.remains&cooldown.fel_barrage.remains<10&fury>100||buff.fel_barrage.up&(buff.fel_barrage.remains*variable.fury_gen-buff.fel_barrage.remains*32)>0)\nactions.ar_fel_barrage+=/demons_bite\n\nactions.ar_meta+=/death_sweep,if=buff.metamorphosis.remains<gcd.max||debuff.essence_break.up\n## [Hekili] For future consideration, APL revisions that produce better results than using the ar_opener action list in AOE scenarios.\n## actions.ar_meta+=/death_sweep,line_cd=15,if=time<15&cooldown.annihilation.remains&(cooldown.eye_beam.up||cooldown.metamorphosis.up||talent.essence_break&cooldown.essence_break.up)\nactions.ar_meta+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&(variable.opened||time>15||cooldown.death_sweep.remains)&(cooldown.metamorphosis.remains&(!talent.essence_break||cooldown.essence_break.remains<=0.6||cooldown.essence_break.remains>10)||cooldown.metamorphosis.up&talent.essence_break&cooldown.essence_break.remains<=0.6&buff.inner_demon.down&cooldown.blade_dance.remains<=gcd.max+0.5||talent.restless_hunter)&cooldown.eye_beam.remains&(!talent.inertia&buff.unbound_chaos.down||buff.inertia_trigger.down)\nactions.ar_meta+=/felblade,if=talent.inertia&buff.inertia_trigger.up&cooldown.essence_break.remains<=1&cooldown.blade_dance.remains<=gcd.max*2&cooldown.metamorphosis.remains<=gcd.max*3\nactions.ar_meta+=/essence_break,if=fury>=30&talent.restless_hunter&cooldown.metamorphosis.up&(talent.inertia&buff.inertia.up||!talent.inertia)&cooldown.blade_dance.remains<=gcd.max\nactions.ar_meta+=/annihilation,if=buff.metamorphosis.remains<gcd.max||debuff.essence_break.remains&debuff.essence_break.remains<0.5&cooldown.blade_dance.remains||buff.inner_demon.up&cooldown.essence_break.up&cooldown.metamorphosis.up\nactions.ar_meta+=/felblade,if=buff.inertia_trigger.up&talent.inertia&cooldown.metamorphosis.remains&(cooldown.eye_beam.remains<=0.5||cooldown.essence_break.remains<=0.5||cooldown.blade_dance.remains<=5.5||buff.initiative.remains<gcd.remains)\n## [Syrif] - Combine 2 fel rush lines\nactions.ar_meta+=/fel_rush,if=buff.inertia_trigger.up&talent.inertia&((cooldown.metamorphosis.remains&active_enemies>2)||(cooldown.blade_dance.remains<gcd.max*3&cooldown.metamorphosis.remains&active_enemies>2))\nactions.ar_meta+=/immolation_aura,if=charges=2&active_enemies>1&debuff.essence_break.down\nactions.ar_meta+=/annihilation,if=buff.inner_demon.up&(cooldown.eye_beam.remains<gcd.max*3&cooldown.blade_dance.remains||cooldown.metamorphosis.remains<gcd.max*3)\nactions.ar_meta+=/essence_break,if=time<20&buff.thrill_of_the_fight_damage.remains>gcd.max*4&buff.metamorphosis.remains>=gcd.max*2&cooldown.metamorphosis.up&cooldown.death_sweep.remains<=gcd.max&buff.inertia.up\nactions.ar_meta+=/essence_break,if=fury>20&(cooldown.blade_dance.remains<gcd.max*3||cooldown.blade_dance.up)&(buff.unbound_chaos.down&!talent.inertia||buff.inertia.up)&buff.out_of_range.remains<gcd.max&(!talent.shattered_destiny||cooldown.eye_beam.remains>4)||boss&fight_remains<10\nactions.ar_meta+=/death_sweep\nactions.ar_meta+=/eye_beam,if=debuff.essence_break.down&buff.inner_demon.down\nactions.ar_meta+=/glaive_tempest,if=debuff.essence_break.down&(cooldown.blade_dance.remains>gcd.max*2||fury>60)&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>10)\nactions.ar_meta+=/sigil_of_flame,if=active_enemies>2&debuff.essence_break.down\nactions.ar_meta+=/throw_glaive,if=talent.soulscar&talent.furious_throws&active_enemies>1&debuff.essence_break.down&(charges=2||full_recharge_time<cooldown.blade_dance.remains)\n## [Hekili] `soul_fragments` is not implemented.\n## actions.ar_meta+=/annihilation,if=cooldown.blade_dance.remains||fury>60||soul_fragments.total>0||buff.metamorphosis.remains<5&cooldown.felblade.up\nactions.ar_meta+=/annihilation,if=cooldown.blade_dance.remains||fury>60||buff.metamorphosis.remains<5&cooldown.felblade.up\nactions.ar_meta+=/sigil_of_flame,if=buff.metamorphosis.remains>5&buff.out_of_range.down\nactions.ar_meta+=/felblade,if=fury.deficit>40&!buff.inertia_trigger.up\nactions.ar_meta+=/sigil_of_flame,if=debuff.essence_break.down&buff.out_of_range.down\nactions.ar_meta+=/immolation_aura,if=buff.out_of_range.down&recharge_time<(cooldown.eye_beam.remains<?buff.metamorphosis.remains)&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>full_recharge_time)\nactions.ar_meta+=/annihilation\nactions.ar_meta+=/fel_rush,if=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.ar_meta+=/demons_bite\n\nactions.ar_opener+=/potion\nactions.ar_opener+=/the_hunt,if=buff.reavers_glaive.down&buff.glaive_flurry.down&buff.rending_strike.down\nactions.ar_opener+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&time>4&buff.metamorphosis.up&(!talent.inertia||buff.inertia_trigger.down)&buff.inner_demon.down&cooldown.blade_dance.remains&gcd.remains<0.1\nactions.ar_opener+=/annihilation,if=buff.rending_strike.up&buff.thrill_of_the_fight_damage.down\nactions.ar_opener+=/felblade,if=!talent.inertia&talent.unbound_chaos&buff.unbound_chaos.up&buff.initiative.up&debuff.essence_break.down&active_enemies<=2\nactions.ar_opener+=/fel_rush,if=!talent.inertia&talent.unbound_chaos&buff.unbound_chaos.up&buff.initiative.up&debuff.essence_break.down&active_enemies>2\nactions.ar_opener+=/annihilation,if=talent.inner_demon&buff.inner_demon.up&cooldown.essence_break.up\nactions.ar_opener+=/essence_break,if=(buff.inertia.up||!talent.inertia)&buff.metamorphosis.up&cooldown.blade_dance.remains<=gcd.max&(!talent.reavers_mark||active_dot.reavers_mark>0||debuff.reavers_mark.remains>=2-talent.quickened_sigils)\nactions.ar_opener+=/felblade,if=buff.inertia_trigger.up&talent.inertia&talent.restless_hunter&cooldown.essence_break.up&cooldown.metamorphosis.up&buff.metamorphosis.up&cooldown.blade_dance.remains<=gcd.max\nactions.ar_opener+=/felblade,if=talent.inertia&buff.inertia_trigger.up&(buff.inertia.down&buff.metamorphosis.up)&debuff.essence_break.down&active_enemies<=2\nactions.ar_opener+=/fel_rush,if=talent.inertia&buff.inertia_trigger.up&(buff.inertia.down&buff.metamorphosis.up)&debuff.essence_break.down&(cooldown.felblade.remains||active_enemies>2)\nactions.ar_opener+=/felblade,if=talent.inertia&buff.inertia_trigger.up&buff.metamorphosis.up&cooldown.metamorphosis.remains&debuff.essence_break.down\nactions.ar_opener+=/the_hunt,if=(buff.metamorphosis.up&hero_tree.aldrachi_reaver&talent.shattered_destiny||!talent.shattered_destiny&hero_tree.aldrachi_reaver||hero_tree.felscarred)&(!talent.initiative||talent.inertia||buff.initiative.up||time>5)\nactions.ar_opener+=/felblade,if=fury<40&buff.inertia_trigger.down&debuff.essence_break.down\nactions.ar_opener+=/reavers_glaive,if=debuff.reavers_mark.down&debuff.essence_break.down\nactions.ar_opener+=/chaos_strike,if=buff.rending_strike.up&active_enemies>2\nactions.ar_opener+=/blade_dance,if=buff.glaive_flurry.up&active_enemies>2\nactions.ar_opener+=/immolation_aura,if=talent.a_fire_inside&talent.burning_wound&buff.metamorphosis.down\nactions.ar_opener+=/metamorphosis,if=buff.metamorphosis.up&cooldown.blade_dance.remains>gcd.max*2&buff.inner_demon.down&(!talent.restless_hunter||prev_gcd.1.death_sweep)&(cooldown.essence_break.remains||!talent.essence_break)\nactions.ar_opener+=/sigil_of_spite,if=(!talent.reavers_mark||active_dot.reavers_mark>0||debuff.reavers_mark.up)&(cooldown.eye_beam.remains&cooldown.metamorphosis.remains)\nactions.ar_opener+=/eye_beam,if=buff.metamorphosis.down||debuff.essence_break.down&buff.inner_demon.down&(cooldown.blade_dance.remains||talent.essence_break&cooldown.essence_break.up)\nactions.ar_opener+=/essence_break,if=cooldown.blade_dance.remains<gcd.max&!hero_tree.felscarred&!talent.shattered_destiny&buff.metamorphosis.up||cooldown.eye_beam.remains&cooldown.metamorphosis.remains\nactions.ar_opener+=/death_sweep\nactions.ar_opener+=/annihilation\nactions.ar_opener+=/demons_bite\nactions.ar_opener+=/variable,name=opened,value=true\n\n# Fel-Scarred\n## [Hekili] `pick_up_fragments` is not implemented.\n## actions.fs=pick_up_fragment,use_off_gcd=1,if=fury.deficit>=30\nactions.fs+=/call_action_list,name=fs_cooldown\nactions.fs+=/call_action_list,name=fs_opener,if=time<15&toggle.cooldowns&(cooldown.eye_beam.up||cooldown.metamorphosis.up||talent.essence_break&cooldown.essence_break.up||buff.demonsurge.stack<3+talent.student_of_suffering+talent.a_fire_inside)\nactions.fs+=/felblade,if=talent.unbound_chaos&buff.unbound_chaos.up&!talent.inertia&active_enemies<=2&(talent.student_of_suffering&cooldown.eye_beam.remains-gcd.max*2<=buff.unbound_chaos.remains||hero_tree.aldrachi_reaver)\nactions.fs+=/fel_rush,if=talent.unbound_chaos&buff.unbound_chaos.up&!talent.inertia&active_enemies>3&(talent.student_of_suffering&cooldown.eye_beam.remains-gcd.max*2<=buff.unbound_chaos.remains)\nactions.fs+=/run_action_list,name=fs_meta,if=buff.metamorphosis.up\nactions.fs+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&(cooldown.eye_beam.remains>15&gcd.remains<0.3||gcd.remains<0.2&cooldown.eye_beam.remains<=gcd.remains&(cooldown.metamorphosis.remains>10||cooldown.blade_dance.remains<gcd.max*3))&(!talent.student_of_suffering||cooldown.sigil_of_flame.remains)&(cooldown.essence_break.remains<=gcd.max*2&talent.student_of_suffering&cooldown.sigil_of_flame.remains||cooldown.essence_break.remains>=18||!talent.student_of_suffering)&(cooldown.metamorphosis.remains>10||hero_tree.aldrachi_reaver)&time>20\nactions.fs+=/sigil_of_flame,if=talent.student_of_suffering&cooldown.eye_beam.remains<=gcd.max&(cooldown.essence_break.remains<gcd.max*3)&(cooldown.metamorphosis.remains>10||cooldown.blade_dance.remains<gcd.max*2)\nactions.fs+=/eye_beam,if=(!talent.initiative||buff.initiative.up||cooldown.vengeful_retreat.remains>=10||cooldown.metamorphosis.up)&(cooldown.blade_dance.remains<7||raid_event.adds.up)||boss&fight_remains<10\nactions.fs+=/blade_dance,if=cooldown.eye_beam.remains>=gcd.max*4||debuff.essence_break.up\nactions.fs+=/chaos_strike,if=debuff.essence_break.up\nactions.fs+=/immolation_aura,if=talent.a_fire_inside&talent.isolated_prey&talent.flamebound&active_enemies=1&cooldown.eye_beam.remains>=gcd.max\nactions.fs+=/felblade,if=fury.deficit>40+variable.fury_gen*(0.5%gcd.max)&(cooldown.vengeful_retreat.remains>=action.felblade.cooldown+0.5&talent.inertia&active_enemies=1||!talent.inertia||hero_tree.aldrachi_reaver||cooldown.essence_break.remains)&cooldown.metamorphosis.remains&cooldown.eye_beam.remains>=0.5+gcd.max*(talent.student_of_suffering&cooldown.sigil_of_flame.remains<=gcd.max)\nactions.fs+=/chaos_strike,if=cooldown.eye_beam.remains>=gcd.max*4||(fury>=70-30*(talent.student_of_suffering&(cooldown.sigil_of_flame.remains<=gcd.max||cooldown.sigil_of_flame.up))-buff.chaos_theory.up*20-variable.fury_gen)\nactions.fs+=/immolation_aura,if=raid_event.adds.in>full_recharge_time&cooldown.eye_beam.remains>=gcd.max*(1+talent.student_of_suffering&(cooldown.sigil_of_flame.remains<=gcd.max||cooldown.sigil_of_flame.up))||active_enemies>desired_targets&active_enemies>2\nactions.fs+=/felblade,if=buff.out_of_range.down&buff.inertia_trigger.down&cooldown.eye_beam.remains>=gcd.max*(1+talent.student_of_suffering&(cooldown.sigil_of_flame.remains<=gcd.max||cooldown.sigil_of_flame.up))\nactions.fs+=/sigil_of_flame,if=buff.out_of_range.down&debuff.essence_break.down&!talent.student_of_suffering&(!talent.fel_barrage||cooldown.fel_barrage.remains>25||(active_enemies=1&!raid_event.adds.exists))\nactions.fs+=/throw_glaive,if=recharge_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.fs+=/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.fs+=/arcane_torrent,if=buff.out_of_range.down&debuff.essence_break.down&fury<100\n\nactions.fs_cooldown+=/metamorphosis,if=((cooldown.eye_beam.remains>=20&(!talent.essence_break||debuff.essence_break.up)&buff.fel_barrage.down&(raid_event.adds.in>40||(raid_event.adds.remains>8||!talent.fel_barrage)&active_enemies>2)||!talent.chaotic_transformation||boss&fight_remains<30)&buff.inner_demon.down&(!talent.restless_hunter&cooldown.blade_dance.remains>gcd.max*3||prev_gcd.1.death_sweep))&!talent.inertia&!talent.essence_break&(hero_tree.aldrachi_reaver||buff.demonsurge_death_sweep.down)&(variable.opened||time>15)\nactions.fs_cooldown+=/metamorphosis,if=(cooldown.blade_dance.remains&(buff.metamorphosis.up&cooldown.eye_beam.remains&(!talent.essence_break||debuff.essence_break.up||talent.shattered_destiny||hero_tree.felscarred)&buff.fel_barrage.down&(raid_event.adds.in>40||(raid_event.adds.remains>8||!talent.fel_barrage)&active_enemies>2)||!talent.chaotic_transformation||boss&fight_remains<30)&(buff.inner_demon.down&(!talent.restless_hunter||prev_gcd.1.death_sweep)))&(talent.inertia||talent.essence_break)&(hero_tree.aldrachi_reaver||(buff.demonsurge_death_sweep.down&buff.metamorphosis.up||buff.metamorphosis.remains<gcd.max)&(buff.demonsurge_annihilation.down))&(variable.opened||time>15)\nactions.fs_cooldown+=/potion,if=boss&fight_remains<35||buff.metamorphosis.up||debuff.essence_break.up\n## [Hekili] `invoke_external_buff` is not implemented.\n## actions.fs_cooldown+=/invoke_external_buff,name=power_infusion,if=buff.metamorphosis.up||boss&fight_remains<=20\nactions.fs_cooldown+=/variable,name=special_trinket,op=set,value=equipped.mad_queens_mandate||equipped.treacherous_transmitter||equipped.skardyns_grace||equipped.signet_of_the_priory||equipped.junkmaestros_mega_magnet||equipped.geargrinders_spare_keys||equipped.mister_locknstalk||equipped.ravenous_honey_buzzer\nactions.fs_cooldown+=/use_item,name=mad_queens_mandate,if=((!talent.initiative||buff.initiative.up||time>5)&(buff.metamorphosis.remains>5||buff.metamorphosis.down)&(trinket.1.is.mad_queens_mandate&(trinket.2.cooldown.duration<10||trinket.2.cooldown.remains>10||!trinket.2.has_buff.any)||trinket.2.is.mad_queens_mandate&(trinket.1.cooldown.duration<10||trinket.1.cooldown.remains>10||!trinket.1.has_buff.any))&fight_remains>120||boss&fight_remains<10&fight_remains<buff.metamorphosis.remains)&debuff.essence_break.down||fight_remains<5\nactions.fs_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.fs_cooldown+=/use_item,name=skardyns_grace,if=(!equipped.mad_queens_mandate||fight_remains>25||trinket.2.is.skardyns_grace&trinket.1.cooldown.remains>fight_remains||trinket.1.is.skardyns_grace&trinket.2.cooldown.remains>fight_remains||trinket.1.cooldown.duration<10||trinket.2.cooldown.duration<10)&buff.metamorphosis.up\nactions.fs_cooldown+=/use_item,name=signet_of_the_priory,if=time<20&(!talent.inertia||buff.inertia.up)||(buff.metamorphosis.up&cooldown.essence_break.up||boss&fight_remains<20)&time>20\nactions.fs_cooldown+=/use_item,name=junkmaestros_mega_magnet,if=buff.initiative.up\nactions.fs_cooldown+=/use_item,name=geargrinders_spare_keys,if=buff.initiative.up\n## [Hekili] `do_treacherous_transmitter` is not implemented.\n## actions.fs_cooldown+=/do_treacherous_transmitter_task,if=cooldown.eye_beam.remains>15||cooldown.eye_beam.remains<5||boss&fight_remains<20\nactions.fs_cooldown+=/use_item,slot=trinket1,if=((cooldown.eye_beam.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||boss&fight_remains<25)&!trinket.1.is.skardyns_grace&!trinket.1.is.mad_queens_mandate&!trinket.1.is.treacherous_transmitter&(!variable.special_trinket||trinket.2.cooldown.remains>20)\nactions.fs_cooldown+=/use_item,slot=trinket2,if=((cooldown.eye_beam.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||boss&fight_remains<25)&!trinket.2.is.skardyns_grace&!trinket.2.is.mad_queens_mandate&!trinket.2.is.treacherous_transmitter&(!variable.special_trinket||trinket.1.cooldown.remains>20)\nactions.fs_cooldown+=/the_hunt,if=debuff.essence_break.down&(active_dot.reavers_mark>0||debuff.reavers_mark.up||!talent.reavers_mark)&buff.reavers_glaive.down&(buff.metamorphosis.remains>5||buff.metamorphosis.down)&(!talent.initiative||buff.initiative.up||time>5)&time>5&(!talent.inertia&buff.unbound_chaos.down||buff.inertia_trigger.down)&(hero_tree.aldrachi_reaver||buff.metamorphosis.down)||boss&fight_remains<=30\nactions.fs_cooldown+=/sigil_of_spite,if=debuff.essence_break.down&cooldown.blade_dance.remains&(variable.opened||time>15)\n\nactions.fs_meta=death_sweep,if=buff.metamorphosis.remains<gcd.max||debuff.essence_break.up||prev_gcd.1.metamorphosis\nactions.fs_meta+=/sigil_of_doom,if=talent.student_of_suffering&buff.demonsurge_sigil_of_doom.down&debuff.essence_break.down&(talent.student_of_suffering&((talent.essence_break&cooldown.essence_break.remains>30-gcd.max||cooldown.essence_break.remains<=gcd.max+talent.inertia&(cooldown.vengeful_retreat.remains<=gcd||buff.initiative.up)+gcd.max*(cooldown.eye_beam.remains<=gcd.max))||(!talent.essence_break&(cooldown.eye_beam.remains>=10||cooldown.eye_beam.remains<=gcd.max))))\nactions.fs_meta+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&(gcd.remains<0.3||talent.inertia&cooldown.eye_beam.remains>gcd.remains&(buff.cycle_of_hatred.stack=2||buff.cycle_of_hatred.stack=3))&(cooldown.metamorphosis.remains&(buff.demonsurge_annihilation.down&buff.demonsurge_death_sweep.down)||talent.restless_hunter&(!hero_tree.felscarred||buff.demonsurge_annihilation.down))&(!talent.inertia&buff.unbound_chaos.down||buff.inertia_trigger.down)&(!talent.essence_break||cooldown.essence_break.remains>18||cooldown.essence_break.remains<=gcd.remains+talent.inertia*1.5&(!talent.student_of_suffering||(buff.student_of_suffering.up||cooldown.sigil_of_flame.remains>5)))&(cooldown.eye_beam.remains>5||cooldown.eye_beam.remains<=gcd.remains||cooldown.eye_beam.up)\nactions.fs_meta+=/death_sweep,if=hero_tree.felscarred&talent.essence_break&buff.demonsurge_death_sweep.up&(buff.inertia.up&(cooldown.essence_break.remains>buff.inertia.remains||!talent.essence_break)||cooldown.metamorphosis.remains<=5&buff.inertia_trigger.down||buff.inertia.up&buff.demonsurge_abyssal_gaze.up)||talent.inertia&buff.inertia_trigger.down&cooldown.vengeful_retreat.remains>=gcd.max&buff.inertia.down\nactions.fs_meta+=/annihilation,if=buff.metamorphosis.remains<gcd.max&cooldown.blade_dance.remains<buff.metamorphosis.remains||debuff.essence_break.remains&debuff.essence_break.remains<0.5||talent.restless_hunter&(buff.demonsurge_annihilation.up||hero_tree.aldrachi_reaver&buff.inner_demon.up)&cooldown.essence_break.up&cooldown.metamorphosis.up\nactions.fs_meta+=/annihilation,if=(hero_tree.felscarred&buff.demonsurge_annihilation.up&talent.restless_hunter)&(cooldown.eye_beam.remains<gcd.max*3&cooldown.blade_dance.remains||cooldown.metamorphosis.remains<gcd.max*3)\nactions.fs_meta+=/felblade,if=buff.inertia_trigger.up&talent.inertia&debuff.essence_break.down&cooldown.metamorphosis.remains&(!hero_tree.felscarred||cooldown.eye_beam.remains)&(cooldown.blade_dance.remains<=5.5&(talent.essence_break&cooldown.essence_break.remains<=0.5||!talent.essence_break||cooldown.essence_break.remains>=buff.inertia_trigger.remains&cooldown.blade_dance.remains<=4.5&(cooldown.blade_dance.remains||cooldown.blade_dance.remains<=0.5))||buff.metamorphosis.remains<=5.5+talent.shattered_destiny*2)\nactions.fs_meta+=/fel_rush,if=buff.inertia_trigger.up&talent.inertia&debuff.essence_break.down&cooldown.metamorphosis.remains&(!hero_tree.felscarred||cooldown.eye_beam.remains)&(active_enemies>2||hero_tree.felscarred)&(cooldown.felblade.remains&cooldown.essence_break.remains<=0.6)\nactions.fs_meta+=/annihilation,if=buff.inner_demon.up&cooldown.blade_dance.remains&(cooldown.eye_beam.remains<gcd.max*3||cooldown.metamorphosis.remains<gcd.max*3)\nactions.fs_meta+=/essence_break,if=fury>20&(cooldown.metamorphosis.remains>10||cooldown.blade_dance.remains<gcd.max*2)&(buff.inertia_trigger.down||buff.inertia.up&buff.inertia.remains>=gcd.max*3||!talent.inertia)&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)&(!buff.cycle_of_hatred.stack=3||buff.initiative.up)||fight_remains<5\nactions.fs_meta+=/sigil_of_doom,if=cooldown.blade_dance.remains&debuff.essence_break.down&(cooldown.eye_beam.remains>=20||cooldown.eye_beam.remains<=gcd.max)&(!talent.student_of_suffering||buff.demonsurge_sigil_of_doom.up)\nactions.fs_meta+=/immolation_aura,if=buff.demonsurge.up&debuff.essence_break.down&buff.demonsurge_consuming_fire.up&cooldown.blade_dance.remains>=gcd.max&cooldown.eye_beam.remains>=gcd.max&fury.deficit>10+variable.fury_gen\nactions.fs_meta+=/eye_beam,if=debuff.essence_break.down&buff.inner_demon.down\nactions.fs_meta+=/abyssal_gaze,if=debuff.essence_break.down&buff.inner_demon.down&(buff.cycle_of_hatred.stack<4||cooldown.essence_break.remains>=20-gcd.max*talent.student_of_suffering||cooldown.sigil_of_flame.remains&talent.student_of_suffering||cooldown.essence_break.remains<=gcd.max)\nactions.fs_meta+=/death_sweep,if=cooldown.essence_break.remains>=gcd.max*2+talent.student_of_suffering*gcd.max||debuff.essence_break.up||!talent.essence_break\n## [Hekili] `soul_fragments` is not implemented.\n## actions.fs_meta+=/annihilation,if=cooldown.blade_dance.remains||fury>60||soul_fragments.total>0||buff.metamorphosis.remains<5\nactions.fs_meta+=/annihilation,if=cooldown.blade_dance.remains||fury>60||buff.metamorphosis.remains<5\nactions.fs_meta+=/immolation_aura,if=buff.out_of_range.down&recharge_time<(cooldown.eye_beam.remains<?buff.metamorphosis.remains)&(active_enemies>=desired_targets+raid_event.adds.count||raid_event.adds.in>full_recharge_time)\nactions.fs_meta+=/felblade,if=(buff.out_of_range.down||fury.deficit>40+variable.fury_gen*(0.5%gcd.max))&!buff.inertia_trigger.up\nactions.fs_meta+=/annihilation\nactions.fs_meta+=/throw_glaive,if=buff.unbound_chaos.down&recharge_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.fs_meta+=/fel_rush,if=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.fs_meta+=/demons_bite\n\nactions.fs_opener=potion,if=buff.initiative.up||!talent.initiative\nactions.fs_opener+=/felblade,if=cooldown.the_hunt.up&!talent.a_fire_inside&fury<40\nactions.fs_opener+=/the_hunt,if=talent.inertia||buff.initiative.up||!talent.initiative\nactions.fs_opener+=/felblade,if=talent.inertia&buff.inertia_trigger.up&active_enemies=1&buff.metamorphosis.up&cooldown.metamorphosis.up&cooldown.essence_break.up&buff.inner_demon.down&buff.demonsurge_annihilation.down\nactions.fs_opener+=/fel_rush,if=talent.inertia&buff.inertia_trigger.up&(cooldown.felblade.remains||active_enemies>1)&buff.metamorphosis.up&cooldown.metamorphosis.up&cooldown.essence_break.up&buff.inner_demon.down&buff.demonsurge_annihilation.down\nactions.fs_opener+=/essence_break,if=buff.metamorphosis.up&(!talent.inertia||buff.inertia.up)&buff.inner_demon.down&buff.demonsurge_annihilation.down\nactions.fs_opener+=/vengeful_retreat,use_off_gcd=1,if=talent.initiative&time>4&buff.metamorphosis.up&(!talent.inertia||buff.inertia_trigger.down)&talent.essence_break&buff.inner_demon.down&(buff.initiative.down||gcd.remains<0.1)&cooldown.blade_dance.remains\nactions.fs_opener+=/felblade,if=talent.inertia&buff.inertia_trigger.up&hero_tree.felscarred&debuff.essence_break.down&talent.essence_break&cooldown.metamorphosis.remains&active_enemies<=2&cooldown.sigil_of_flame.remains\nactions.fs_opener+=/sigil_of_doom,if=(buff.inner_demon.down||buff.out_of_range.up)&debuff.essence_break.down\nactions.fs_opener+=/annihilation,if=(buff.inner_demon.up||buff.demonsurge_annihilation.up)&(cooldown.metamorphosis.up||!talent.essence_break&cooldown.blade_dance.remains)\nactions.fs_opener+=/death_sweep,if=hero_tree.felscarred&buff.demonsurge_death_sweep.up&!talent.restless_hunter\nactions.fs_opener+=/annihilation,if=hero_tree.felscarred&buff.demonsurge_annihilation.up&(!talent.essence_break||buff.inner_demon.up)\nactions.fs_opener+=/immolation_aura,if=talent.a_fire_inside&talent.burning_wound&buff.metamorphosis.down\nactions.fs_opener+=/felblade,if=fury<40&debuff.essence_break.down&buff.inertia_trigger.down&cooldown.metamorphosis.up\nactions.fs_opener+=/metamorphosis,if=buff.metamorphosis.up&buff.inner_demon.down&buff.demonsurge_annihilation.down&cooldown.blade_dance.remains\nactions.fs_opener+=/eye_beam,if=buff.metamorphosis.down||debuff.essence_break.down&buff.inner_demon.down&(cooldown.blade_dance.remains||talent.essence_break&cooldown.essence_break.up)&(!talent.a_fire_inside||action.immolation_aura.charges=0)\nactions.fs_opener+=/abyssal_gaze,if=debuff.essence_break.down&buff.inner_demon.down\nactions.fs_opener+=/death_sweep\nactions.fs_opener+=/annihilation\nactions.fs_opener+=/demons_bite\nactions.fs_opener+=/variable,name=opened,value=true",
|
|
["version"] = 20250413,
|
|
["warnings"] = "The import for 'fs_cooldown' required some automated changes.\nLine 5: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 5: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 5: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.2.is.skardyns_grace' to 'trinket.t2.is.skardyns_grace' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.1.is.skardyns_grace' to 'trinket.t1.is.skardyns_grace' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 11: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 11: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 11: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 11: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_use_buff' (1x).\nLine 11: Converted 'trinket.1.is.skardyns_grace' to 'trinket.t1.is.skardyns_grace' (1x).\nLine 11: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 11: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 11: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 12: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 12: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 12: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 12: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (1x).\nLine 12: Converted 'trinket.2.is.skardyns_grace' to 'trinket.t2.is.skardyns_grace' (1x).\nLine 12: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 12: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 12: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 12: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nThe following auras were used in the action list but were not found in the addon database:\n - any\n\nThe import for 'fs' required some automated changes.\nLine 12: Converted operations in 'fury.deficit>40+variable.fury_gen*(0.5%gcd.max)&(cooldown.vengeful_retreat.remains>=action.felblade.cooldown+0.5&talent.inertia.enabled&active_enemies=1||!talent.inertia.enabled||hero_tree.aldrachi_reaver||cooldown.essence_break.remains)&cooldown.metamorphosis.remains&cooldown.eye_beam.remains>=0.5+gcd.max*(talent.student_of_suffering.enabled&cooldown.sigil_of_flame.remains<=gcd.max)' to 'fury.deficit>40+variable.fury_gen*(0.5/gcd.max)&(cooldown.vengeful_retreat.remains>=action.felblade.cooldown+0.5&talent.inertia.enabled&active_enemies=1||!talent.inertia.enabled||hero_tree.aldrachi_reaver||cooldown.essence_break.remains)&cooldown.metamorphosis.remains&cooldown.eye_beam.remains>=0.5+gcd.max*(talent.student_of_suffering.enabled&cooldown.sigil_of_flame.remains<=gcd.max)'.\n\nThe import for 'precombat' required some automated changes.\nLine 1: Converted 'trinket.1.is.improvised_seaforium_pacemaker' to 'trinket.t1.is.improvised_seaforium_pacemaker' (1x).\nLine 2: Converted 'trinket.2.is.improvised_seaforium_pacemaker' to 'trinket.t2.is.improvised_seaforium_pacemaker' (1x).\nLine 3: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 3: Converted 'trinket.1.is.junkmaestros_mega_magnet' to 'trinket.t1.is.junkmaestros_mega_magnet' (1x).\nLine 3: Converted 'trinket.1.is.geargrinders_spare_keys' to 'trinket.t1.is.geargrinders_spare_keys' (1x).\nLine 3: Converted 'trinket.1.is.ravenous_honey_buzzer' to 'trinket.t1.is.ravenous_honey_buzzer' (1x).\nLine 3: Converted 'trinket.1.is.grim_codex' to 'trinket.t1.is.grim_codex' (1x).\nLine 4: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 4: Converted 'trinket.2.is.junkmaestros_mega_magnet' to 'trinket.t2.is.junkmaestros_mega_magnet' (1x).\nLine 4: Converted 'trinket.2.is.geargrinders_spare_keys' to 'trinket.t2.is.geargrinders_spare_keys' (1x).\nLine 4: Converted 'trinket.2.is.ravenous_honey_buzzer' to 'trinket.t2.is.ravenous_honey_buzzer' (1x).\nLine 4: Converted 'trinket.2.is.grim_codex' to 'trinket.t2.is.grim_codex' (1x).\n\nThe import for 'default' required some automated changes.\nLine 2: Converted operations in 'talent.demon_blades.enabled*(1%(2.6*attack_haste)*((talent.demonsurge.enabled&buff.metamorphosis.up)*3+12))+buff.immolation_aura.stack*6+buff.tactical_retreat.up*10' to 'talent.demon_blades.enabled*(1/(2.6*attack_haste)*((talent.demonsurge.enabled&buff.metamorphosis.up)*3+12))+buff.immolation_aura.stack*6+buff.tactical_retreat.up*10'.\nLine 4: Converted 'trinket.1.is.house_of_cards' to 'trinket.t1.is.house_of_cards' (1x).\nLine 4: Converted 'trinket.1.is.signet_of_the_priory' to 'trinket.t1.is.signet_of_the_priory' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.2.is.house_of_cards' to 'trinket.t2.is.house_of_cards' (1x).\nLine 4: Converted 'trinket.2.is.signet_of_the_priory' to 'trinket.t2.is.signet_of_the_priory' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\n\nThe import for 'ar_cooldown' required some automated changes.\nLine 5: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 5: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 5: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 5: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 5: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.is.mad_queens_mandate' to 'trinket.t1.is.mad_queens_mandate' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 6: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 6: Converted 'trinket.2.is.mad_queens_mandate' to 'trinket.t2.is.mad_queens_mandate' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.2.is.skardyns_grace' to 'trinket.t2.is.skardyns_grace' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'trinket.1.is.skardyns_grace' to 'trinket.t1.is.skardyns_grace' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 7: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 13: Converted 'trinket.1.is.ravenous_honey_buzzer' to 'trinket.t1.is.ravenous_honey_buzzer' (1x).\nLine 13: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 13: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 13: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 13: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 13: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 13: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (1x).\nLine 13: Converted 'trinket.2.is.ravenous_honey_buzzer' to 'trinket.t2.is.ravenous_honey_buzzer' (1x).\nLine 13: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 13: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 13: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 13: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 13: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 13: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 14: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_buff.any' (1x).\nLine 14: Converted 'trinket.1.has_buff.any' to 'trinket.t1.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.is.mister_locknstalk' to 'trinket.t1.is.mister_locknstalk' (1x).\nLine 14: Converted 'trinket.1.is.skardyns_grace' to 'trinket.t1.is.skardyns_grace' (1x).\nLine 14: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (1x).\nLine 14: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 14: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 15: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 15: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 15: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_buff.any' (1x).\nLine 15: Converted 'trinket.2.has_buff.any' to 'trinket.t2.has_use_buff' (1x).\nLine 15: Converted 'trinket.2.is.mister_locknstalk' to 'trinket.t2.is.mister_locknstalk' (1x).\nLine 15: Converted 'trinket.2.is.skardyns_grace' to 'trinket.t2.is.skardyns_grace' (1x).\nLine 15: Converted 'trinket.2.is.treacherous_transmitter' to 'trinket.t2.is.treacherous_transmitter' (1x).\nLine 15: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 15: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nThe following auras were used in the action list but were not found in the addon database:\n - any\n\nThe import for 'fs_meta' required some automated changes.\nLine 18: Converted operations in '(buff.out_of_range.down||fury.deficit>40+variable.fury_gen*(0.5%gcd.max))&!buff.inertia_trigger.up' to '(buff.out_of_range.down||fury.deficit>40+variable.fury_gen*(0.5/gcd.max))&!buff.inertia_trigger.up'.\n\nThe import for 'ar' required some automated changes.\nLine 14: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 14: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 14: Converted 'trinket.t2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 14: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 23: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 23: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 23: Converted 'trinket.t2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 23: Converted 'trinket.t1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\n\nImported 11 action lists.\n",
|
|
["author"] = "SimC",
|
|
["lists"] = {
|
|
["fs_cooldown"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( cooldown.eye_beam.remains >= 20 & ( ! talent.essence_break.enabled || debuff.essence_break.up ) & buff.fel_barrage.down & ( raid_event.adds.in > 40 || ( raid_event.adds.remains > 8 || ! talent.fel_barrage.enabled ) & active_enemies > 2 ) || ! talent.chaotic_transformation.enabled || boss & fight_remains < 30 ) & buff.inner_demon.down & ( ! talent.restless_hunter.enabled & cooldown.blade_dance.remains > gcd.max * 3 || prev_gcd.1.death_sweep ) ) & ! talent.inertia.enabled & ! talent.essence_break.enabled & ( hero_tree.aldrachi_reaver || buff.demonsurge_death_sweep.down ) & ( variable.opened || time > 15 )",
|
|
["action"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.blade_dance.remains & ( buff.metamorphosis.up & cooldown.eye_beam.remains & ( ! talent.essence_break.enabled || debuff.essence_break.up || talent.shattered_destiny.enabled || hero_tree.felscarred ) & buff.fel_barrage.down & ( raid_event.adds.in > 40 || ( raid_event.adds.remains > 8 || ! talent.fel_barrage.enabled ) & active_enemies > 2 ) || ! talent.chaotic_transformation.enabled || boss & fight_remains < 30 ) & ( buff.inner_demon.down & ( ! talent.restless_hunter.enabled || prev_gcd.1.death_sweep ) ) ) & ( talent.inertia.enabled || talent.essence_break.enabled ) & ( hero_tree.aldrachi_reaver || ( buff.demonsurge_death_sweep.down & buff.metamorphosis.up || buff.metamorphosis.remains < gcd.max ) & ( buff.demonsurge_annihilation.down ) ) & ( variable.opened || time > 15 )",
|
|
["action"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 35 || buff.metamorphosis.up || debuff.essence_break.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "equipped.mad_queens_mandate || equipped.treacherous_transmitter || equipped.skardyns_grace || equipped.signet_of_the_priory || equipped.junkmaestros_mega_magnet || equipped.geargrinders_spare_keys || equipped.mister_locknstalk || equipped.ravenous_honey_buzzer",
|
|
["var_name"] = "special_trinket",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "mad_queens_mandate",
|
|
["action"] = "mad_queens_mandate",
|
|
["criteria"] = "( ( ! talent.initiative.enabled || buff.initiative.up || time > 5 ) & ( buff.metamorphosis.remains > 5 || buff.metamorphosis.down ) & ( trinket.t1.is.mad_queens_mandate & ( trinket.t2.cooldown.duration < 10 || trinket.t2.cooldown.remains > 10 || ! trinket.t2.has_use_buff ) || trinket.t2.is.mad_queens_mandate & ( trinket.t1.cooldown.duration < 10 || trinket.t1.cooldown.remains > 10 || ! trinket.t1.has_use_buff ) ) & fight_remains > 120 || boss & fight_remains < 10 & fight_remains < buff.metamorphosis.remains ) & debuff.essence_break.down || fight_remains < 5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "skardyns_grace",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "signet_of_the_priory",
|
|
["action"] = "signet_of_the_priory",
|
|
["criteria"] = "time < 20 & ( ! talent.inertia.enabled || buff.inertia.up ) || ( buff.metamorphosis.up & cooldown.essence_break.up || boss & fight_remains < 20 ) & time > 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "junkmaestros_mega_magnet",
|
|
["action"] = "junkmaestros_mega_magnet",
|
|
["criteria"] = "buff.initiative.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "geargrinders_spare_keys",
|
|
["action"] = "geargrinders_spare_keys",
|
|
["criteria"] = "buff.initiative.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( cooldown.eye_beam.remains < gcd.max & active_enemies > 1 || buff.metamorphosis.up ) & ( raid_event.adds.in > trinket.t1.cooldown.duration - 15 || raid_event.adds.remains > 8 ) || ! trinket.t1.has_use_buff || boss & fight_remains < 25 ) & ! trinket.t1.is.skardyns_grace & ! trinket.t1.is.mad_queens_mandate & ! trinket.t1.is.treacherous_transmitter & ( ! variable.special_trinket || trinket.t2.cooldown.remains > 20 )",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( cooldown.eye_beam.remains < gcd.max & active_enemies > 1 || buff.metamorphosis.up ) & ( raid_event.adds.in > trinket.t2.cooldown.duration - 15 || raid_event.adds.remains > 8 ) || ! trinket.t2.has_use_buff || boss & fight_remains < 25 ) & ! trinket.t2.is.skardyns_grace & ! trinket.t2.is.mad_queens_mandate & ! trinket.t2.is.treacherous_transmitter & ( ! variable.special_trinket || trinket.t1.cooldown.remains > 20 )",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & ( active_dot.reavers_mark > 0 || debuff.reavers_mark.up || ! talent.reavers_mark.enabled ) & buff.reavers_glaive.down & ( buff.metamorphosis.remains > 5 || buff.metamorphosis.down ) & ( ! talent.initiative.enabled || buff.initiative.up || time > 5 ) & time > 5 & ( ! talent.inertia.enabled & buff.unbound_chaos.down || buff.inertia_trigger.down ) & ( hero_tree.aldrachi_reaver || buff.metamorphosis.down ) || boss & fight_remains <= 30",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & cooldown.blade_dance.remains & ( variable.opened || time > 15 )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
},
|
|
["fs"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Fel-Scarred",
|
|
["list_name"] = "fs_cooldown",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "time < 15 & toggle.cooldowns & ( cooldown.eye_beam.up || cooldown.metamorphosis.up || talent.essence_break.enabled & cooldown.essence_break.up || buff.demonsurge.stack < 3 + talent.student_of_suffering.enabled + talent.a_fire_inside.enabled )",
|
|
["list_name"] = "fs_opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unbound_chaos.enabled & buff.unbound_chaos.up & ! talent.inertia.enabled & active_enemies <= 2 & ( talent.student_of_suffering.enabled & cooldown.eye_beam.remains - gcd.max * 2 <= buff.unbound_chaos.remains || hero_tree.aldrachi_reaver )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unbound_chaos.enabled & buff.unbound_chaos.up & ! talent.inertia.enabled & active_enemies > 3 & ( talent.student_of_suffering.enabled & cooldown.eye_beam.remains - gcd.max * 2 <= buff.unbound_chaos.remains )",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "buff.metamorphosis.up",
|
|
["list_name"] = "fs_meta",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "talent.initiative.enabled & ( cooldown.eye_beam.remains > 15 & gcd.remains < 0.3 || gcd.remains < 0.2 & cooldown.eye_beam.remains <= gcd.remains & ( cooldown.metamorphosis.remains > 10 || cooldown.blade_dance.remains < gcd.max * 3 ) ) & ( ! talent.student_of_suffering.enabled || cooldown.sigil_of_flame.remains ) & ( cooldown.essence_break.remains <= gcd.max * 2 & talent.student_of_suffering.enabled & cooldown.sigil_of_flame.remains || cooldown.essence_break.remains >= 18 || ! talent.student_of_suffering.enabled ) & ( cooldown.metamorphosis.remains > 10 || hero_tree.aldrachi_reaver ) & time > 20",
|
|
["action"] = "vengeful_retreat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.student_of_suffering.enabled & cooldown.eye_beam.remains <= gcd.max & ( cooldown.essence_break.remains < gcd.max * 3 ) & ( cooldown.metamorphosis.remains > 10 || cooldown.blade_dance.remains < gcd.max * 2 )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.initiative.enabled || buff.initiative.up || cooldown.vengeful_retreat.remains >= 10 || cooldown.metamorphosis.up ) & ( cooldown.blade_dance.remains < 7 || raid_event.adds.up ) || boss & fight_remains < 10",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.eye_beam.remains >= gcd.max * 4 || debuff.essence_break.up",
|
|
["action"] = "blade_dance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.up",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.a_fire_inside.enabled & talent.isolated_prey.enabled & talent.flamebound.enabled & active_enemies = 1 & cooldown.eye_beam.remains >= gcd.max",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit > 40 + variable.fury_gen * ( 0.5 / gcd.max ) & ( cooldown.vengeful_retreat.remains >= action.felblade.cooldown + 0.5 & talent.inertia.enabled & active_enemies = 1 || ! talent.inertia.enabled || hero_tree.aldrachi_reaver || cooldown.essence_break.remains ) & cooldown.metamorphosis.remains & cooldown.eye_beam.remains >= 0.5 + gcd.max * ( talent.student_of_suffering.enabled & cooldown.sigil_of_flame.remains <= gcd.max )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.eye_beam.remains >= gcd.max * 4 || ( fury >= 70 - 30 * ( talent.student_of_suffering.enabled & ( cooldown.sigil_of_flame.remains <= gcd.max || cooldown.sigil_of_flame.up ) ) - buff.chaos_theory.up * 20 - variable.fury_gen )",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > full_recharge_time & cooldown.eye_beam.remains >= gcd.max * ( 1 + talent.student_of_suffering.enabled & ( cooldown.sigil_of_flame.remains <= gcd.max || cooldown.sigil_of_flame.up ) ) || active_enemies > desired_targets & active_enemies > 2",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.out_of_range.down & buff.inertia_trigger.down & cooldown.eye_beam.remains >= gcd.max * ( 1 + talent.student_of_suffering.enabled & ( cooldown.sigil_of_flame.remains <= gcd.max || cooldown.sigil_of_flame.up ) )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.out_of_range.down & debuff.essence_break.down & ! talent.student_of_suffering.enabled & ( ! talent.fel_barrage.enabled || cooldown.fel_barrage.remains > 25 || ( active_enemies = 1 & ! raid_event.adds.exists ) )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1",
|
|
["action"] = "throw_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.down & recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & active_enemies > 1",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.out_of_range.down & debuff.essence_break.down & fury < 100",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
["fs_opener"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.initiative.up || ! talent.initiative.enabled",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.the_hunt.up & ! talent.a_fire_inside.enabled & fury < 40",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled || buff.initiative.up || ! talent.initiative.enabled",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & active_enemies = 1 & buff.metamorphosis.up & cooldown.metamorphosis.up & cooldown.essence_break.up & buff.inner_demon.down & buff.demonsurge_annihilation.down",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & ( cooldown.felblade.remains || active_enemies > 1 ) & buff.metamorphosis.up & cooldown.metamorphosis.up & cooldown.essence_break.up & buff.inner_demon.down & buff.demonsurge_annihilation.down",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.up & ( ! talent.inertia.enabled || buff.inertia.up ) & buff.inner_demon.down & buff.demonsurge_annihilation.down",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "talent.initiative.enabled & time > 4 & buff.metamorphosis.up & ( ! talent.inertia.enabled || buff.inertia_trigger.down ) & talent.essence_break.enabled & buff.inner_demon.down & ( buff.initiative.down || gcd.remains < 0.1 ) & cooldown.blade_dance.remains",
|
|
["action"] = "vengeful_retreat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & hero_tree.felscarred & debuff.essence_break.down & talent.essence_break.enabled & cooldown.metamorphosis.remains & active_enemies <= 2 & cooldown.sigil_of_flame.remains",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.inner_demon.down || buff.out_of_range.up ) & debuff.essence_break.down",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.inner_demon.up || buff.demonsurge_annihilation.up ) & ( cooldown.metamorphosis.up || ! talent.essence_break.enabled & cooldown.blade_dance.remains )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hero_tree.felscarred & buff.demonsurge_death_sweep.up & ! talent.restless_hunter.enabled",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hero_tree.felscarred & buff.demonsurge_annihilation.up & ( ! talent.essence_break.enabled || buff.inner_demon.up )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.a_fire_inside.enabled & talent.burning_wound.enabled & buff.metamorphosis.down",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury < 40 & debuff.essence_break.down & buff.inertia_trigger.down & cooldown.metamorphosis.up",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.up & buff.inner_demon.down & buff.demonsurge_annihilation.down & cooldown.blade_dance.remains",
|
|
["action"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.down || debuff.essence_break.down & buff.inner_demon.down & ( cooldown.blade_dance.remains || talent.essence_break.enabled & cooldown.essence_break.up ) & ( ! talent.a_fire_inside.enabled || action.immolation_aura.charges = 0 )",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & buff.inner_demon.down",
|
|
["action"] = "abyssal_gaze",
|
|
},
|
|
{
|
|
["action"] = "death_sweep",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "annihilation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "demons_bite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "true",
|
|
["var_name"] = "opened",
|
|
},
|
|
},
|
|
["ar"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "false",
|
|
["var_name"] = "opened",
|
|
["description"] = "Use to determine if we traversed either of the opener lists.",
|
|
},
|
|
{
|
|
["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",
|
|
["description"] = "Aldrachi Reaver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.fel_barrage.enabled & ( cooldown.fel_barrage.remains < gcd.max * 7 & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in < gcd.max * 7 || raid_event.adds.in > 90 ) & ( cooldown.metamorphosis.remains || active_enemies > 2 ) || buff.fel_barrage.up ) & ! ( active_enemies = 1 & ! raid_event.adds.exists )",
|
|
["var_name"] = "fel_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up & buff.glaive_flurry.up & ( variable.rg_ds = 2 || active_enemies > 2 ) & time > 10",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up & buff.glaive_flurry.up & ( variable.rg_ds = 2 || active_enemies > 2 )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.glaive_flurry.down & buff.rending_strike.down & buff.thrill_of_the_fight_damage.remains < gcd.max * 4 + ( variable.rg_ds = 2 ) + ( cooldown.the_hunt.remains < gcd.max * 3 ) * 3 + ( cooldown.eye_beam.remains < gcd.max * 3 & talent.shattered_destiny.enabled ) * 3 & ( variable.rg_ds = 0 || variable.rg_ds = 1 & cooldown.blade_dance.up || variable.rg_ds = 2 & cooldown.blade_dance.remains ) & ( buff.thrill_of_the_fight_damage.up || ! prev_gcd.1.death_sweep || ! variable.rg_inc ) & active_enemies < 3 & debuff.essence_break.down & ( buff.art_of_the_glaive.stack > 3 || buff.metamorphosis.remains > 2 || cooldown.eye_beam.remains < 10 || fight_remains < 10 )",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.glaive_flurry.down & buff.rending_strike.down & buff.thrill_of_the_fight_damage.remains < 4 & ( buff.thrill_of_the_fight_damage.up || ! prev_gcd.1.death_sweep || ! variable.rg_inc ) & active_enemies > 2 || boss & fight_remains < 10",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "ar_cooldown",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "time < 15 & toggle.cooldowns & ( cooldown.eye_beam.up || cooldown.metamorphosis.up || talent.essence_break.enabled & cooldown.essence_break.up )",
|
|
["list_name"] = "ar_opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & ( ! talent.reavers_mark.enabled || active_dot.reavers_mark > 0 || debuff.reavers_mark.remains >= 2 - talent.quickened_sigils.enabled )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "variable.fel_barrage & raid_event.adds.up",
|
|
["list_name"] = "ar_fel_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 & talent.ragefire.enabled & ( ! talent.fel_barrage.enabled || cooldown.fel_barrage.remains > recharge_time ) & debuff.essence_break.down & ( buff.metamorphosis.down || buff.metamorphosis.remains > 5 )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 & talent.ragefire.enabled & raid_event.adds.up & raid_event.adds.remains < 15 & raid_event.adds.remains > 5 & debuff.essence_break.down",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "talent.initiative.enabled & ( cooldown.eye_beam.remains > 15 & gcd.remains < 0.3 || gcd.remains < 0.2 & cooldown.eye_beam.remains <= gcd.remains & cooldown.metamorphosis.remains > 10 ) & ( ! variable.trinket1_steroids & ! variable.trinket2_steroids || variable.trinket1_steroids & trinket.t1.has_stat.any_dps & trinket.t1.has_cooldown & ( trinket.t1.cooldown.remains < gcd.max * 3 || trinket.t1.cooldown.remains > 30 ) || variable.trinket2_steroids & trinket.t2.has_stat.any_dps & trinket.t1.has_cooldown & ( trinket.t2.cooldown.remains < gcd.max * 3 || trinket.t1.cooldown.remains > 30 ) ) & time > 20 & ( ! talent.inertia.enabled & buff.unbound_chaos.down || buff.inertia_trigger.down & buff.metamorphosis.down )",
|
|
["action"] = "vengeful_retreat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "variable.fel_barrage || ! talent.demon_blades.enabled & talent.fel_barrage.enabled & ( buff.fel_barrage.up || cooldown.fel_barrage.up ) & buff.metamorphosis.down",
|
|
["list_name"] = "ar_fel_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.inertia.enabled & active_enemies = 1 & buff.unbound_chaos.up & buff.initiative.up & debuff.essence_break.down & buff.metamorphosis.down",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & cooldown.eye_beam.remains <= 0.5 & ( cooldown.metamorphosis.remains & talent.looks_can_kill.enabled || active_enemies > 1 )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "buff.metamorphosis.up",
|
|
["list_name"] = "ar_meta",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & buff.inertia.down & cooldown.blade_dance.remains < 4 & ( cooldown.eye_beam.remains > 5 & cooldown.eye_beam.remains > buff.unbound_chaos.remains || cooldown.eye_beam.remains <= gcd.max & cooldown.vengeful_retreat.remains <= gcd.max + 1 )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.a_fire_inside.enabled & talent.burning_wound.enabled & full_recharge_time < gcd.max * 2 & ( raid_event.adds.in > full_recharge_time || active_enemies > desired_targets )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > desired_targets & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > full_recharge_time )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains < 15 & cooldown.blade_dance.remains & talent.ragefire.enabled",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.blade_dance.remains < 7 || raid_event.adds.up ) & ( ! variable.trinket1_steroids & ! variable.trinket2_steroids || variable.trinket1_steroids & trinket.t1.has_stat.any_dps & trinket.t1.has_cooldown & ( trinket.t1.cooldown.remains < gcd.max * 3 || trinket.t1.cooldown.remains > 30 ) || variable.trinket2_steroids & trinket.t2.has_stat.any_dps & trinket.t1.has_cooldown & ( trinket.t2.cooldown.remains < gcd.max * 3 || trinket.t1.cooldown.remains > 30 ) ) || boss & fight_remains < 10",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.eye_beam.remains >= gcd.max * 3 & buff.rending_strike.down",
|
|
["action"] = "blade_dance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 3 || debuff.essence_break.down",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit >= 40 + variable.fury_gen * 0.5 & ! buff.inertia_trigger.up",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > 10",
|
|
["action"] = "glaive_tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.up",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & talent.furious_throws.enabled & ( ! talent.screaming_brutality.enabled || charges = 2 || full_recharge_time < cooldown.blade_dance.remains )",
|
|
["action"] = "throw_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.eye_beam.remains > gcd.max * 2 || fury > 80",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & ! talent.a_fire_inside.enabled & debuff.essence_break.down",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > full_recharge_time || active_enemies > desired_targets & active_enemies > 2",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.out_of_range.down & debuff.essence_break.down & ( ! talent.fel_barrage.enabled || cooldown.fel_barrage.remains > 25 || active_enemies = 1 & ! raid_event.adds.exists )",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["action"] = "demons_bite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.down & recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1",
|
|
["action"] = "throw_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.down & recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & active_enemies > 1",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.out_of_range.down & debuff.essence_break.down & fury < 100",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
["ar_meta"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains < gcd.max || debuff.essence_break.up",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "talent.initiative.enabled & ( variable.opened || time > 15 || cooldown.death_sweep.remains ) & ( cooldown.metamorphosis.remains & ( ! talent.essence_break.enabled || cooldown.essence_break.remains <= 0.6 || cooldown.essence_break.remains > 10 ) || cooldown.metamorphosis.up & talent.essence_break.enabled & cooldown.essence_break.remains <= 0.6 & buff.inner_demon.down & cooldown.blade_dance.remains <= gcd.max + 0.5 || talent.restless_hunter.enabled ) & cooldown.eye_beam.remains & ( ! talent.inertia.enabled & buff.unbound_chaos.down || buff.inertia_trigger.down )",
|
|
["action"] = "vengeful_retreat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & cooldown.essence_break.remains <= 1 & cooldown.blade_dance.remains <= gcd.max * 2 & cooldown.metamorphosis.remains <= gcd.max * 3",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury >= 30 & talent.restless_hunter.enabled & cooldown.metamorphosis.up & ( talent.inertia.enabled & buff.inertia.up || ! talent.inertia.enabled ) & cooldown.blade_dance.remains <= gcd.max",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains < gcd.max || debuff.essence_break.remains & debuff.essence_break.remains < 0.5 & cooldown.blade_dance.remains || buff.inner_demon.up & cooldown.essence_break.up & cooldown.metamorphosis.up",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & cooldown.metamorphosis.remains & ( cooldown.eye_beam.remains <= 0.5 || cooldown.essence_break.remains <= 0.5 || cooldown.blade_dance.remains <= 5.5 || buff.initiative.remains < gcd.remains )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & ( ( cooldown.metamorphosis.remains & active_enemies > 2 ) || ( cooldown.blade_dance.remains < gcd.max * 3 & cooldown.metamorphosis.remains & active_enemies > 2 ) )",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges = 2 & active_enemies > 1 & debuff.essence_break.down",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inner_demon.up & ( cooldown.eye_beam.remains < gcd.max * 3 & cooldown.blade_dance.remains || cooldown.metamorphosis.remains < gcd.max * 3 )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time < 20 & buff.thrill_of_the_fight_damage.remains > gcd.max * 4 & buff.metamorphosis.remains >= gcd.max * 2 & cooldown.metamorphosis.up & cooldown.death_sweep.remains <= gcd.max & buff.inertia.up",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury > 20 & ( cooldown.blade_dance.remains < gcd.max * 3 || cooldown.blade_dance.up ) & ( buff.unbound_chaos.down & ! talent.inertia.enabled || buff.inertia.up ) & buff.out_of_range.remains < gcd.max & ( ! talent.shattered_destiny.enabled || cooldown.eye_beam.remains > 4 ) || boss & fight_remains < 10",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["action"] = "death_sweep",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & buff.inner_demon.down",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & ( cooldown.blade_dance.remains > gcd.max * 2 || fury > 60 ) & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > 10 )",
|
|
["action"] = "glaive_tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 & debuff.essence_break.down",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.soulscar.enabled & talent.furious_throws.enabled & active_enemies > 1 & debuff.essence_break.down & ( charges = 2 || full_recharge_time < cooldown.blade_dance.remains )",
|
|
["action"] = "throw_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.blade_dance.remains || fury > 60 || buff.metamorphosis.remains < 5 & cooldown.felblade.up",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains > 5 & buff.out_of_range.down",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit > 40 & ! buff.inertia_trigger.up",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & buff.out_of_range.down",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.out_of_range.down & recharge_time < ( cooldown.eye_beam.remains <? buff.metamorphosis.remains ) & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > full_recharge_time )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["action"] = "annihilation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["action"] = "demons_bite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "disrupt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.demon_blades.enabled * ( 1 / ( 2.6 * attack_haste ) * ( ( talent.demonsurge.enabled & buff.metamorphosis.up ) * 3 + 12 ) ) + buff.immolation_aura.stack * 6 + buff.tactical_retreat.up * 10",
|
|
["var_name"] = "fury_gen",
|
|
["description"] = "Fury generated per second",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( buff.initiative.up || ! talent.initiative.enabled ) & ( buff.necessary_sacrifice.up || ! set_bonus.thewarwithin_season_2_4pc )",
|
|
["var_name"] = "tier33_4piece",
|
|
["description"] = "Tier 33 tier set check for trinket lineups withs Necessary Sacrifice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! equipped.signet_of_the_priory & ! equipped.house_of_cards || ( trinket.t1.is.house_of_cards || trinket.t1.is.signet_of_the_priory ) & trinket.t1.cooldown.remains > 20 || ( trinket.t2.is.house_of_cards || trinket.t2.is.signet_of_the_priory ) & trinket.t2.cooldown.remains > 20",
|
|
["var_name"] = "double_on_use",
|
|
["description"] = "Double on use trinket holding for using a stat cooldown trinket and an on use damage trinket",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["description"] = "Separate actionlists for each hero tree",
|
|
["strict"] = 1,
|
|
["criteria"] = "hero_tree.aldrachi_reaver",
|
|
["list_name"] = "ar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! hero_tree.aldrachi_reaver",
|
|
["list_name"] = "fs",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.improvised_seaforium_pacemaker",
|
|
["var_name"] = "trinket1_steroids",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.improvised_seaforium_pacemaker",
|
|
["var_name"] = "trinket2_steroids",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.mad_queens_mandate || trinket.t1.is.junkmaestros_mega_magnet || trinket.t1.is.geargrinders_spare_keys || trinket.t1.is.ravenous_honey_buzzer || trinket.t1.is.grim_codex",
|
|
["var_name"] = "trinket1_crit",
|
|
["description"] = "Blacklist for trinkets to hold trinket cooldowns for Initiative and Necessary Strike line-up outside standard trinket implementation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.mad_queens_mandate || trinket.t2.is.junkmaestros_mega_magnet || trinket.t2.is.geargrinders_spare_keys || trinket.t2.is.ravenous_honey_buzzer || trinket.t2.is.grim_codex",
|
|
["var_name"] = "trinket2_crit",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "rg_ds",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["action"] = "sigil_of_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "immolation_aura",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["ar_opener"] = {
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reavers_glaive.down & buff.glaive_flurry.down & buff.rending_strike.down",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "talent.initiative.enabled & time > 4 & buff.metamorphosis.up & ( ! talent.inertia.enabled || buff.inertia_trigger.down ) & buff.inner_demon.down & cooldown.blade_dance.remains & gcd.remains < 0.1",
|
|
["action"] = "vengeful_retreat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up & buff.thrill_of_the_fight_damage.down",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.inertia.enabled & talent.unbound_chaos.enabled & buff.unbound_chaos.up & buff.initiative.up & debuff.essence_break.down & active_enemies <= 2",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.inertia.enabled & talent.unbound_chaos.enabled & buff.unbound_chaos.up & buff.initiative.up & debuff.essence_break.down & active_enemies > 2",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inner_demon.enabled & buff.inner_demon.up & cooldown.essence_break.up",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.inertia.up || ! talent.inertia.enabled ) & buff.metamorphosis.up & cooldown.blade_dance.remains <= gcd.max & ( ! talent.reavers_mark.enabled || active_dot.reavers_mark > 0 || debuff.reavers_mark.remains >= 2 - talent.quickened_sigils.enabled )",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & talent.restless_hunter.enabled & cooldown.essence_break.up & cooldown.metamorphosis.up & buff.metamorphosis.up & cooldown.blade_dance.remains <= gcd.max",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & ( buff.inertia.down & buff.metamorphosis.up ) & debuff.essence_break.down & active_enemies <= 2",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & ( buff.inertia.down & buff.metamorphosis.up ) & debuff.essence_break.down & ( cooldown.felblade.remains || active_enemies > 2 )",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.inertia.enabled & buff.inertia_trigger.up & buff.metamorphosis.up & cooldown.metamorphosis.remains & debuff.essence_break.down",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.metamorphosis.up & hero_tree.aldrachi_reaver & talent.shattered_destiny.enabled || ! talent.shattered_destiny.enabled & hero_tree.aldrachi_reaver || hero_tree.felscarred ) & ( ! talent.initiative.enabled || talent.inertia.enabled || buff.initiative.up || time > 5 )",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury < 40 & buff.inertia_trigger.down & debuff.essence_break.down",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.reavers_mark.down & debuff.essence_break.down",
|
|
["action"] = "reavers_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.rending_strike.up & active_enemies > 2",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.glaive_flurry.up & active_enemies > 2",
|
|
["action"] = "blade_dance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.a_fire_inside.enabled & talent.burning_wound.enabled & buff.metamorphosis.down",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.up & cooldown.blade_dance.remains > gcd.max * 2 & buff.inner_demon.down & ( ! talent.restless_hunter.enabled || prev_gcd.1.death_sweep ) & ( cooldown.essence_break.remains || ! talent.essence_break.enabled )",
|
|
["action"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.reavers_mark.enabled || active_dot.reavers_mark > 0 || debuff.reavers_mark.up ) & ( cooldown.eye_beam.remains & cooldown.metamorphosis.remains )",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.down || debuff.essence_break.down & buff.inner_demon.down & ( cooldown.blade_dance.remains || talent.essence_break.enabled & cooldown.essence_break.up )",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.blade_dance.remains < gcd.max & ! hero_tree.felscarred & ! talent.shattered_destiny.enabled & buff.metamorphosis.up || cooldown.eye_beam.remains & cooldown.metamorphosis.remains",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["action"] = "death_sweep",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "annihilation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "demons_bite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "true",
|
|
["var_name"] = "opened",
|
|
},
|
|
},
|
|
["ar_fel_barrage"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.felblade.remains < gcd.max || cooldown.sigil_of_flame.remains < gcd.max",
|
|
["var_name"] = "generator_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "gcd.max * 32",
|
|
["var_name"] = "gcd_drain",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inner_demon.up",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.down & ( active_enemies > 1 & raid_event.adds.up || raid_event.adds.in > 40 )",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.down & buff.metamorphosis.up",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.down",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_enemies > 2 || buff.fel_barrage.up ) & ( cooldown.eye_beam.remains > recharge_time + 3 )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.down & active_enemies > 1",
|
|
["action"] = "glaive_tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.down",
|
|
["action"] = "blade_dance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury > 100 & ( raid_event.adds.in > 90 || raid_event.adds.in < gcd.max || raid_event.adds.remains > 4 & active_enemies > 2 )",
|
|
["action"] = "fel_barrage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & buff.fel_barrage.up",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit > 40 & buff.fel_barrage.up",
|
|
["action"] = "sigil_of_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.fel_barrage.up & fury.deficit > 40",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury - variable.gcd_drain - 35 > 0 & ( buff.fel_barrage.remains < 3 || variable.generator_up || fury > 80 || variable.fury_gen > 18 )",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury - variable.gcd_drain - 30 > 0 & ( buff.fel_barrage.remains < 3 || variable.generator_up || fury > 80 || variable.fury_gen > 18 )",
|
|
["action"] = "glaive_tempest",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury - variable.gcd_drain - 35 > 0 & ( buff.fel_barrage.remains < 3 || variable.generator_up || fury > 80 || variable.fury_gen > 18 )",
|
|
["action"] = "blade_dance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury.deficit > 40 & buff.fel_barrage.up",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury > 40 & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > 80 )",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury - variable.gcd_drain - 40 > 20 & ( buff.fel_barrage.remains < 3 || variable.generator_up || fury > 80 || variable.fury_gen > 18 )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury - variable.gcd_drain - 40 > 20 & ( cooldown.fel_barrage.remains & cooldown.fel_barrage.remains < 10 & fury > 100 || buff.fel_barrage.up & ( buff.fel_barrage.remains * variable.fury_gen - buff.fel_barrage.remains * 32 ) > 0 )",
|
|
["action"] = "chaos_strike",
|
|
},
|
|
{
|
|
["action"] = "demons_bite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["fs_meta"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains < gcd.max || debuff.essence_break.up || prev_gcd.1.metamorphosis",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.student_of_suffering.enabled & buff.demonsurge_sigil_of_doom.down & debuff.essence_break.down & ( talent.student_of_suffering.enabled & ( ( talent.essence_break.enabled & cooldown.essence_break.remains > 30 - gcd.max || cooldown.essence_break.remains <= gcd.max + talent.inertia.enabled & ( cooldown.vengeful_retreat.remains <= gcd.max || buff.initiative.up ) + gcd.max * ( cooldown.eye_beam.remains <= gcd.max ) ) || ( ! talent.essence_break.enabled & ( cooldown.eye_beam.remains >= 10 || cooldown.eye_beam.remains <= gcd.max ) ) ) )",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "talent.initiative.enabled & ( gcd.remains < 0.3 || talent.inertia.enabled & cooldown.eye_beam.remains > gcd.remains & ( buff.cycle_of_hatred.stack = 2 || buff.cycle_of_hatred.stack = 3 ) ) & ( cooldown.metamorphosis.remains & ( buff.demonsurge_annihilation.down & buff.demonsurge_death_sweep.down ) || talent.restless_hunter.enabled & ( ! hero_tree.felscarred || buff.demonsurge_annihilation.down ) ) & ( ! talent.inertia.enabled & buff.unbound_chaos.down || buff.inertia_trigger.down ) & ( ! talent.essence_break.enabled || cooldown.essence_break.remains > 18 || cooldown.essence_break.remains <= gcd.remains + talent.inertia.enabled * 1.5 & ( ! talent.student_of_suffering.enabled || ( buff.student_of_suffering.up || cooldown.sigil_of_flame.remains > 5 ) ) ) & ( cooldown.eye_beam.remains > 5 || cooldown.eye_beam.remains <= gcd.remains || cooldown.eye_beam.up )",
|
|
["action"] = "vengeful_retreat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "hero_tree.felscarred & talent.essence_break.enabled & buff.demonsurge_death_sweep.up & ( buff.inertia.up & ( cooldown.essence_break.remains > buff.inertia.remains || ! talent.essence_break.enabled ) || cooldown.metamorphosis.remains <= 5 & buff.inertia_trigger.down || buff.inertia.up & buff.demonsurge_abyssal_gaze.up ) || talent.inertia.enabled & buff.inertia_trigger.down & cooldown.vengeful_retreat.remains >= gcd.max & buff.inertia.down",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.metamorphosis.remains < gcd.max & cooldown.blade_dance.remains < buff.metamorphosis.remains || debuff.essence_break.remains & debuff.essence_break.remains < 0.5 || talent.restless_hunter.enabled & ( buff.demonsurge_annihilation.up || hero_tree.aldrachi_reaver & buff.inner_demon.up ) & cooldown.essence_break.up & cooldown.metamorphosis.up",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( hero_tree.felscarred & buff.demonsurge_annihilation.up & talent.restless_hunter.enabled ) & ( cooldown.eye_beam.remains < gcd.max * 3 & cooldown.blade_dance.remains || cooldown.metamorphosis.remains < gcd.max * 3 )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & debuff.essence_break.down & cooldown.metamorphosis.remains & ( ! hero_tree.felscarred || cooldown.eye_beam.remains ) & ( cooldown.blade_dance.remains <= 5.5 & ( talent.essence_break.enabled & cooldown.essence_break.remains <= 0.5 || ! talent.essence_break.enabled || cooldown.essence_break.remains >= buff.inertia_trigger.remains & cooldown.blade_dance.remains <= 4.5 & ( cooldown.blade_dance.remains || cooldown.blade_dance.remains <= 0.5 ) ) || buff.metamorphosis.remains <= 5.5 + talent.shattered_destiny.enabled * 2 )",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inertia_trigger.up & talent.inertia.enabled & debuff.essence_break.down & cooldown.metamorphosis.remains & ( ! hero_tree.felscarred || cooldown.eye_beam.remains ) & ( active_enemies > 2 || hero_tree.felscarred ) & ( cooldown.felblade.remains & cooldown.essence_break.remains <= 0.6 )",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.inner_demon.up & cooldown.blade_dance.remains & ( cooldown.eye_beam.remains < gcd.max * 3 || cooldown.metamorphosis.remains < gcd.max * 3 )",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fury > 20 & ( cooldown.metamorphosis.remains > 10 || cooldown.blade_dance.remains < gcd.max * 2 ) & ( buff.inertia_trigger.down || buff.inertia.up & buff.inertia.remains >= gcd.max * 3 || ! talent.inertia.enabled ) & buff.out_of_range.remains < gcd.max & ( ! talent.shattered_destiny.enabled || cooldown.eye_beam.remains > 4 ) & ( ! hero_tree.felscarred || active_enemies > 1 || cooldown.metamorphosis.remains > 5 & cooldown.eye_beam.remains ) & ( ! buff.cycle_of_hatred.stack = 3 || buff.initiative.up ) || fight_remains < 5",
|
|
["action"] = "essence_break",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.blade_dance.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains >= 20 || cooldown.eye_beam.remains <= gcd.max ) & ( ! talent.student_of_suffering.enabled || buff.demonsurge_sigil_of_doom.up )",
|
|
["action"] = "sigil_of_doom",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.demonsurge.up & debuff.essence_break.down & buff.demonsurge_consuming_fire.up & cooldown.blade_dance.remains >= gcd.max & cooldown.eye_beam.remains >= gcd.max & fury.deficit > 10 + variable.fury_gen",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & buff.inner_demon.down",
|
|
["action"] = "eye_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & buff.inner_demon.down & ( buff.cycle_of_hatred.stack < 4 || cooldown.essence_break.remains >= 20 - gcd.max * talent.student_of_suffering.enabled || cooldown.sigil_of_flame.remains & talent.student_of_suffering.enabled || cooldown.essence_break.remains <= gcd.max )",
|
|
["action"] = "abyssal_gaze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.essence_break.remains >= gcd.max * 2 + talent.student_of_suffering.enabled * gcd.max || debuff.essence_break.up || ! talent.essence_break.enabled",
|
|
["action"] = "death_sweep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.blade_dance.remains || fury > 60 || buff.metamorphosis.remains < 5",
|
|
["action"] = "annihilation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.out_of_range.down & recharge_time < ( cooldown.eye_beam.remains <? buff.metamorphosis.remains ) & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > full_recharge_time )",
|
|
["action"] = "immolation_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.out_of_range.down || fury.deficit > 40 + variable.fury_gen * ( 0.5 / gcd.max ) ) & ! buff.inertia_trigger.up",
|
|
["action"] = "felblade",
|
|
},
|
|
{
|
|
["action"] = "annihilation",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.unbound_chaos.down & recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1",
|
|
["action"] = "throw_glaive",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "recharge_time < cooldown.eye_beam.remains & debuff.essence_break.down & ( cooldown.eye_beam.remains > 8 || charges_fractional > 1.01 ) & buff.out_of_range.down & active_enemies > 1",
|
|
["action"] = "fel_rush",
|
|
},
|
|
{
|
|
["action"] = "demons_bite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["ar_cooldown"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( ( cooldown.eye_beam.remains >= 20 || talent.cycle_of_hatred.enabled & cooldown.eye_beam.remains >= 13 ) & ( ! talent.essence_break.enabled || debuff.essence_break.up ) & buff.fel_barrage.down & ( raid_event.adds.in > 40 || ( raid_event.adds.remains > 8 || ! talent.fel_barrage.enabled ) & active_enemies > 2 ) || ! talent.chaotic_transformation.enabled || boss & fight_remains < 30 ) & buff.inner_demon.down & ( ! talent.restless_hunter.enabled & cooldown.blade_dance.remains > gcd.max * 3 || prev_gcd.1.death_sweep ) ) & ! talent.inertia.enabled & ! talent.essence_break.enabled & ( variable.opened || time > 15 )",
|
|
["action"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.blade_dance.remains & ( ( prev_gcd.1.death_sweep || prev_gcd.2.death_sweep || prev_gcd.3.death_sweep || buff.metamorphosis.up & buff.metamorphosis.remains < gcd.max ) & cooldown.eye_beam.remains & ( ! talent.essence_break.enabled || debuff.essence_break.up || talent.shattered_destiny.enabled ) & buff.fel_barrage.down & ( raid_event.adds.in > 40 || ( raid_event.adds.remains > 8 || ! talent.fel_barrage.enabled ) & active_enemies > 2 ) || ! talent.chaotic_transformation.enabled || boss & fight_remains < 30 ) & ( buff.inner_demon.down & ( buff.rending_strike.down || ! talent.restless_hunter.enabled || prev_gcd.1.death_sweep ) ) ) & ( talent.inertia.enabled || talent.essence_break.enabled ) & ( variable.opened || time > 15 )",
|
|
["action"] = "metamorphosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 35 || ( buff.metamorphosis.up || debuff.essence_break.up ) & time > 10",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "equipped.mad_queens_mandate || equipped.treacherous_transmitter || equipped.skardyns_grace || equipped.signet_of_the_priory || equipped.junkmaestros_mega_magnet || equipped.geargrinders_spare_keys || equipped.mister_locknstalk || equipped.ravenous_honey_buzzer || equipped.grim_codex",
|
|
["var_name"] = "special_trinket",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "mad_queens_mandate",
|
|
["action"] = "mad_queens_mandate",
|
|
["criteria"] = "( ( ! talent.initiative.enabled || buff.initiative.up || time > 5 ) & ( buff.metamorphosis.remains > 5 || buff.metamorphosis.down ) & ( trinket.t1.is.mad_queens_mandate & ( trinket.t2.cooldown.duration < 10 || trinket.t2.cooldown.remains > 10 || ! trinket.t2.has_use_buff ) || trinket.t2.is.mad_queens_mandate & ( trinket.t1.cooldown.duration < 10 || trinket.t1.cooldown.remains > 10 || ! trinket.t1.has_use_buff ) ) & fight_remains > 120 || boss & fight_remains < 10 & fight_remains < buff.metamorphosis.remains ) & debuff.essence_break.down || fight_remains < 5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "treacherous_transmitter",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "skardyns_grace",
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "house_of_cards",
|
|
["action"] = "house_of_cards",
|
|
["criteria"] = "( cooldown.eye_beam.up || buff.metamorphosis.up ) || boss & fight_remains < 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "signet_of_the_priory",
|
|
["action"] = "signet_of_the_priory",
|
|
["criteria"] = "time < 20 & ( ! talent.inertia.enabled || buff.inertia.up ) || buff.metamorphosis.up & time > 20 || boss & fight_remains < 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "junkmaestros_mega_magnet",
|
|
["action"] = "junkmaestros_mega_magnet",
|
|
["criteria"] = "variable.tier33_4piece & variable.double_on_use || fight_remains < 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "geargrinders_spare_keys",
|
|
["action"] = "geargrinders_spare_keys",
|
|
["criteria"] = "variable.tier33_4piece & variable.double_on_use || fight_remains < 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "grim_codex",
|
|
["action"] = "grim_codex",
|
|
["criteria"] = "variable.tier33_4piece & variable.double_on_use || boss & fight_remains < 10",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "ravenous_honey_buzzer",
|
|
["action"] = "ravenous_honey_buzzer",
|
|
["criteria"] = "( variable.tier33_4piece & ( buff.inertia.down & ( cooldown.essence_break.remains & debuff.essence_break.down || ! talent.essence_break.enabled ) ) & ( trinket.t1.is.ravenous_honey_buzzer & ( trinket.t2.cooldown.duration < 10 || trinket.t2.cooldown.remains > 10 || ! trinket.t2.has_use_buff ) || trinket.t2.is.ravenous_honey_buzzer & ( trinket.t1.cooldown.duration < 10 || trinket.t1.cooldown.remains > 10 || ! trinket.t1.has_use_buff ) ) & fight_remains > 120 || boss & fight_remains < 10 & fight_remains < buff.metamorphosis.remains ) || fight_remains < 5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( cooldown.eye_beam.remains < gcd.max & active_enemies > 1 || buff.metamorphosis.up ) & ( raid_event.adds.in > trinket.t1.cooldown.duration - 15 || raid_event.adds.remains > 8 ) || ! trinket.t1.has_use_buff || boss & fight_remains < 25 ) & ! trinket.t1.is.mister_locknstalk & ! variable.trinket1_crit & ! trinket.t1.is.skardyns_grace & ! trinket.t1.is.treacherous_transmitter & ( ! variable.special_trinket || trinket.t2.cooldown.remains > 20 )",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( cooldown.eye_beam.remains < gcd.max & active_enemies > 1 || buff.metamorphosis.up ) & ( raid_event.adds.in > trinket.t2.cooldown.duration - 15 || raid_event.adds.remains > 8 ) || ! trinket.t2.has_use_buff || boss & fight_remains < 25 ) & ! trinket.t2.is.mister_locknstalk & ! variable.trinket2_crit & ! trinket.t2.is.skardyns_grace & ! trinket.t2.is.treacherous_transmitter & ( ! variable.special_trinket || trinket.t1.cooldown.remains > 20 )",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & ( active_enemies >= desired_targets + raid_event.adds.count || raid_event.adds.in > 90 ) & ( ! talent.reavers_mark.enabled || debuff.reavers_mark.up ) & buff.reavers_glaive.down & ( buff.metamorphosis.remains > 5 || buff.metamorphosis.down ) & ( ! talent.initiative.enabled || buff.initiative.up || time > 5 ) & time > 5 & ( ! talent.inertia.enabled & buff.unbound_chaos.down || buff.inertia_trigger.down )",
|
|
["action"] = "the_hunt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.essence_break.down & ( ! talent.reavers_mark.enabled || active_dot.reavers_mark > 0 || debuff.reavers_mark.remains >= 2 - talent.quickened_sigils.enabled ) & cooldown.blade_dance.remains & time > 15",
|
|
["action"] = "sigil_of_spite",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["Affliction"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250303,
|
|
["spec"] = 265,
|
|
["desc"] = "2025-03-03: Sync with SimC",
|
|
["profile"] = "actions.precombat=fel_domination,if=time>0&!pet.alive\nactions.precombat+=/summon_pet\nactions.precombat+=/variable,name=cleave_apl,value=toggle.funnel\n# Used to set Trinket in slot 1 as Buff Trinkets for the automatic logic\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff\n# Used to set Trinkets in slot 2 as Buff Trinkets for the automatic logic\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff\n# Automatic Logic for Buff Trinkets in Trinket Slot 1\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.1.cooldown.duration=0)\n# Automatic Logic for Buff Trinkets in Trinket Slot 2\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.2.cooldown.duration=0)\n# Sets a specific Trinkets in Slot 1 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.spymasters_web||trinket.1.is.aberrant_spellforge\n# Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic\nactions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.spymasters_web||trinket.2.is.aberrant_spellforge\n# For On Use Trinkets on slot 1 with on use effects you dont want to use in combat\nactions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell\n# For On Use Trinkets on Slot 2 with on use effects you don't want to use in combat\nactions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell\n# Sets the duration of Trinket 1 in the automatic logic\nactions.precombat+=/variable,name=trinket_1_buff_duration,value=trinket.1.proc.any_dps.duration+(trinket.1.is.mirror_of_fractured_tomorrows*20)\n# Sets the duration of Trinket 2 in the automatic logic\nactions.precombat+=/variable,name=trinket_2_buff_duration,value=trinket.2.proc.any_dps.duration+(trinket.2.is.mirror_of_fractured_tomorrows*20)\n# Automatic Logic in case of 2 On Use Buff Trinkets\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%variable.trinket_2_buff_duration)*(1+0.5*trinket.2.has_buff.intellect)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.1.has_buff.intellect)*(variable.trinket_1_sync))\nactions.precombat+=/grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice.enabled\nactions.precombat+=/seed_of_corruption,if=spell_targets.seed_of_corruption_aoe>2||spell_targets.seed_of_corruption_aoe>1&talent.demonic_soul\nactions.precombat+=/haunt\n\nactions+=/spell_lock\nactions+=/call_action_list,name=variables\nactions+=/call_action_list,name=ogcd\nactions+=/call_action_list,name=items\n# This entry is manually translated and will differ from SIMC, but maintains the same functionality.\nactions+=/call_action_list,name=cleave,if=active_enemies=2||active_enemies>2&variable.cleave_apl\nactions+=/call_action_list,name=aoe,if=active_enemies>2\nactions+=/call_action_list,name=end_of_fight\nactions+=/agony,if=(!talent.vile_taint||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,if=!equipped.neural_synapse_enhancer\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(prev_gcd.1.soul_rot||boss&fight_remains<=15)&!variable.trinket_1_buffs&!variable.trinket_2_buffs\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(prev_gcd.1.soul_rot||boss&fight_remains<=15||cooldown.soul_rot.remains>=45)&trinket.2.cooldown.remains&variable.trinket_2_buffs\nactions.items+=/use_item,use_off_gcd=1,slot=main_hand,name=neural_synapse_enhancer,if=(prev_gcd.1.soul_rot||boss&fight_remains<=15||cooldown.soul_rot.remains>=45)&trinket.1.cooldown.remains&variable.trinket_1_buffs\n\nactions.ogcd+=/potion,if=variable.cds_active||fight_remains<32||prev_gcd.1.soul_rot&time<20\nactions.ogcd+=/berserking,if=variable.cds_active||fight_remains<14||prev_gcd.1.soul_rot&time<20\nactions.ogcd+=/blood_fury,if=variable.cds_active||fight_remains<17||prev_gcd.1.soul_rot&time<20\n## actions.ogcd+=/invoke_external_buff,name=power_infusion,if=variable.cds_active\nactions.ogcd+=/fireblood,if=variable.cds_active||fight_remains<10||prev_gcd.1.soul_rot&time<20\nactions.ogcd+=/ancestral_call,if=variable.cds_active||fight_remains<17||prev_gcd.1.soul_rot&time<20\n\nactions.variables+=/variable,name=ps_up,op=set,value=!talent.phantom_singularity||dot.phantom_singularity.up\nactions.variables+=/variable,name=vt_up,op=set,value=!talent.vile_taint||dot.vile_taint_dot.up\nactions.variables+=/variable,name=vt_ps_up,op=set,value=(!talent.vile_taint&!talent.phantom_singularity)||dot.vile_taint_dot.up||dot.phantom_singularity.up\nactions.variables+=/variable,name=sr_up,op=set,value=!talent.soul_rot||dot.soul_rot.up\nactions.variables+=/variable,name=cd_dots_up,op=set,value=variable.ps_up&variable.vt_up&variable.sr_up\nactions.variables+=/variable,name=has_cds,op=set,value=talent.phantom_singularity||talent.vile_taint||talent.soul_rot||talent.summon_darkglare\nactions.variables+=/variable,name=cds_active,op=set,value=!variable.has_cds||(variable.cd_dots_up&(!talent.summon_darkglare||cooldown.summon_darkglare.remains>20||pet.darkglare.remains))\nactions.variables+=/variable,name=min_vt,op=reset,if=variable.min_vt\nactions.variables+=/variable,name=min_ps,op=reset,if=variable.min_ps",
|
|
["version"] = 20250303,
|
|
["warnings"] = "The import for 'cleave' required some automated changes.\nLine 2: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 2: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 4: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 4: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 5: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 7: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 9: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 13: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 14: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 15: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 15: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 16: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 17: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 17: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 17: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 18: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 19: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 19: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 19: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 19: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 20: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 20: Converted 'talent.nightfall' to 'talent.nightfall.enabled' (1x).\nLine 20: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 20: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 21: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'variables' required some automated changes.\nLine 1: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 2: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 3: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 3: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 4: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 6: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 6: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 6: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 6: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 7: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\n\nThe import for 'se_maintenance' required some automated changes.\nLine 1: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 1: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 2: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\n\nThe import for 'items' required some automated changes.\nLine 2: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 3: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 4: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Unsupported use_item action [ time_thiefs_gambit]; entry disabled.\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 6: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 6: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 6: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 7: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 7: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 7: Converted 'talent.summon_darkglare' to 'talent.summon_darkglare.enabled' (1x).\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 10: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 11: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\n\nThe import for 'opener_cleave_se' required some automated changes.\nLine 1: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 1: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 8: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 8: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 8: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 9: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 9: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 10: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 10: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 10: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 11: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 11: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 11: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 12: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 12: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 12: Converted 'talent.absolute_corruption' to 'talent.absolute_corruption.enabled' (1x).\nLine 14: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 15: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 16: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 17: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 18: Converted 'talent.soul_rot' to 'talent.soul_rot.enabled' (1x).\nLine 22: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 23: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 23: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 24: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 25: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 25: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 25: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 27: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 28: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 28: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 28: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 28: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 29: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 29: Converted 'talent.nightfall' to 'talent.nightfall.enabled' (1x).\nLine 29: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 29: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 30: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%trinket.t1.cooldown.duration=0)'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.soul_rot.duration=0||cooldown.soul_rot.duration%trinket.t2.cooldown.duration=0)'.\nLine 8: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 8: Converted 'trinket.1.is.aberrant_spellforge' to 'trinket.t1.is.aberrant_spellforge' (1x).\nLine 9: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 9: Converted 'trinket.2.is.aberrant_spellforge' to 'trinket.t2.is.aberrant_spellforge' (1x).\nLine 10: Converted 'trinket.1.is.ruby_whelp_shell' to 'trinket.t1.is.ruby_whelp_shell' (1x).\nLine 11: Converted 'trinket.2.is.ruby_whelp_shell' to 'trinket.t2.is.ruby_whelp_shell' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 12: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 13: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 14: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 16: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 4: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 4: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 9: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 9: Converted 'talent.vile_taint' to 'talent.vile_taint.enabled' (1x).\nLine 9: Converted 'talent.phantom_singularity' to 'talent.phantom_singularity.enabled' (1x).\nLine 12: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 12: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 13: Converted 'talent.seed_of_corruption' to 'talent.seed_of_corruption.enabled' (1x).\nLine 14: Converted 'talent.seed_of_corruption' to 'talent.seed_of_corruption.enabled' (1x).\nLine 16: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 17: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 18: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 18: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 19: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 20: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 21: Converted 'talent.oblivion' to 'talent.oblivion.enabled' (1x).\nLine 22: Converted 'talent.tormented_crescendo' to 'talent.tormented_crescendo.enabled' (1x).\nLine 22: Converted 'talent.nightfall' to 'talent.nightfall.enabled' (1x).\nLine 23: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 23: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 24: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 24: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 24: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 25: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\n\nThe import for 'end_of_fight' required some automated changes.\nLine 1: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 3: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 3: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\n\nThe import for 'cleave_se_maintenance' required some automated changes.\nLine 1: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 1: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\nLine 1: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 1: Converted 'talent.demonic_soul' to 'talent.demonic_soul.enabled' (1x).\nLine 2: Converted 'talent.shadow_embrace' to 'talent.shadow_embrace.enabled' (1x).\nLine 2: Converted 'talent.drain_soul' to 'talent.drain_soul.enabled' (1x).\n\nImported 11 action lists.\n",
|
|
["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,
|
|
["action"] = "spymasters_web",
|
|
["criteria"] = "variable.cd_dots_up & ( buff.spymasters_report.stack >= 38 || boss & fight_remains <= 80 || talent.drain_soul.enabled & target.health.pct < 20 ) || boss & fight_remains < 20",
|
|
["name"] = "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 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "main_hand",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "! equipped.neural_synapse_enhancer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "neural_synapse_enhancer",
|
|
["criteria"] = "( prev_gcd.1.soul_rot || boss & fight_remains <= 15 ) & ! variable.trinket_1_buffs & ! variable.trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "neural_synapse_enhancer",
|
|
["criteria"] = "( prev_gcd.1.soul_rot || boss & fight_remains <= 15 || cooldown.soul_rot.remains >= 45 ) & trinket.t2.cooldown.remains & variable.trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "neural_synapse_enhancer",
|
|
["slot"] = "main_hand",
|
|
["use_off_gcd"] = 1,
|
|
["name"] = "neural_synapse_enhancer",
|
|
["criteria"] = "( prev_gcd.1.soul_rot || boss & fight_remains <= 15 || cooldown.soul_rot.remains >= 45 ) & trinket.t1.cooldown.remains & variable.trinket_1_buffs",
|
|
},
|
|
},
|
|
["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",
|
|
},
|
|
},
|
|
["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,
|
|
},
|
|
},
|
|
["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",
|
|
},
|
|
},
|
|
["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",
|
|
},
|
|
},
|
|
["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",
|
|
},
|
|
},
|
|
["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",
|
|
},
|
|
["Blood"] = {
|
|
["source"] = "SimulationCraft",
|
|
["builtIn"] = true,
|
|
["date"] = 20250429,
|
|
["spec"] = 250,
|
|
["desc"] = "2025-04-29: Resync with SimC",
|
|
["lists"] = {
|
|
["high_prio_actions.default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blood_tap",
|
|
["criteria"] = "( rune <= 2 & rune.time_to_3 > gcd.max & charges_fractional >= 1.8 )",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blood_tap",
|
|
["criteria"] = "( rune <= 1 & rune.time_to_3 > gcd.max )",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "raise_dead",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bone_shield.remains < gcd.max * 2",
|
|
["action"] = "deaths_caress",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coagulopathy.up & buff.coagulopathy.remains <= gcd.max * 2",
|
|
["action"] = "death_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.death_and_decay.up",
|
|
["action"] = "any_dnd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.blood_plague.remains < gcd.max * 2",
|
|
["action"] = "blood_boil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & ( target.time_to_pct_35 < 5 ) & target.time_to_die > ( dot.soul_reaper.remains + 5 ) & ( ! hero_tree.sanlayn || pet.dancing_rune_weapon.remains < 5 )",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "rune_tap",
|
|
["criteria"] = "rune > 3",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
},
|
|
["san_cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.dancing_rune_weapon.up",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
{
|
|
["action"] = "dancing_rune_weapon",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.death_and_decay.up & buff.bone_shield.stack > 5 & cooldown.dancing_rune_weapon.remains > 15",
|
|
["action"] = "bonestorm",
|
|
},
|
|
{
|
|
["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",
|
|
["action"] = "tombstone",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "mind_freeze",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tome_of_lights_devotion",
|
|
["criteria"] = "buff.inner_resilience.up",
|
|
["name"] = "tome_of_lights_devotion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "bestinslots",
|
|
["action"] = "bestinslots",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["action"] = "use_items",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dancing_rune_weapon.up",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dancing_rune_weapon.up",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dancing_rune_weapon.up",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dancing_rune_weapon.up",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.dancing_rune_weapon.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & incoming_damage_5s >= vb_damage & ! ( buff.dancing_rune_weapon.up || buff.icebound_fortitude.up )",
|
|
["action"] = "vampiric_blood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "15 + ( 10 * talent.relish_in_blood.enabled ) + ( 3 * talent.runic_attenuation.enabled ) + ( spell_targets.heart_strike * talent.heartbreaker.enabled * 2 )",
|
|
["var_name"] = "rp_deficit_threshold",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blood_tap",
|
|
["criteria"] = "( rune <= 2 & rune.time_to_3 > gcd.max & charges_fractional >= 1.8 )",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blood_tap",
|
|
["criteria"] = "( rune <= 1 & rune.time_to_3 > gcd.max )",
|
|
["use_off_gcd"] = 1,
|
|
},
|
|
{
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "raise_dead",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bone_shield.remains < gcd.max * 2",
|
|
["action"] = "deaths_caress",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coagulopathy.up & buff.coagulopathy.remains <= gcd.max * 2",
|
|
["action"] = "death_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.death_and_decay.up",
|
|
["action"] = "any_dnd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.blood_plague.remains < gcd.max * 2",
|
|
["action"] = "blood_boil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & ( target.time_to_pct_35 < 5 ) & target.time_to_die > ( dot.soul_reaper.remains + 5 ) & ( ! hero_tree.sanlayn || pet.dancing_rune_weapon.remains < 5 )",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["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,
|
|
["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 & rune > 3 & ! ( buff.dancing_rune_weapon.up || buff.vampiric_blood.up || buff.icebound_fortitude.up )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "hero_tree.sanlayn & buff.dancing_rune_weapon.up",
|
|
["list_name"] = "san_drw",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "hero_tree.sanlayn",
|
|
["list_name"] = "san_cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "hero_tree.sanlayn",
|
|
["list_name"] = "sanlayn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! hero_tree.sanlayn",
|
|
["list_name"] = "db_cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! hero_tree.sanlayn",
|
|
["list_name"] = "deathbringer",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "deaths_caress",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "7",
|
|
["var_name"] = "bone_shield_refresh_value",
|
|
},
|
|
},
|
|
["db_cds"] = {
|
|
{
|
|
["action"] = "reapers_mark",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "dancing_rune_weapon",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bone_shield.stack >= 5 & ( ! talent.shattering_bone.enabled || death_and_decay.ticking )",
|
|
["action"] = "bonestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bone_shield.stack >= 8 & ( ! talent.shattering_bone.enabled || death_and_decay.ticking ) & cooldown.dancing_rune_weapon.remains >= 25",
|
|
["action"] = "tombstone",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.dancing_rune_weapon.up",
|
|
["action"] = "abomination_limb",
|
|
},
|
|
},
|
|
["deathbringer"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit < variable.rp_deficit_threshold + ( pet.dancing_rune_weapon.active * 3 ) + ( talent.everlasting_bond.enabled * 3 )",
|
|
["action"] = "death_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.exterminate.up",
|
|
["action"] = "marrowrend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bone_shield.stack < 6 & ! dot.bonestorm.ticking",
|
|
["action"] = "marrowrend",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.dancing_rune_weapon.active & ! drw.bp_ticking",
|
|
["action"] = "blood_boil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reaper_of_souls.up & cooldown.dancing_rune_weapon.remains",
|
|
["action"] = "soul_reaper",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.dancing_rune_weapon.up & active_enemies <= 2 & buff.coagulopathy.remains > 3",
|
|
["action"] = "blooddrinker",
|
|
},
|
|
{
|
|
["action"] = "death_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "consumption",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges_fractional >= 1.5",
|
|
["action"] = "blood_boil",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune >= 1 || rune.time_to_2 < gcd.max",
|
|
["action"] = "heart_strike",
|
|
},
|
|
{
|
|
["action"] = "blood_boil",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "heart_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit > 20",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bone_shield.stack < 11",
|
|
["action"] = "deaths_caress",
|
|
},
|
|
},
|
|
["san_drw"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.death_and_decay.up & buff.bone_shield.stack > 5",
|
|
["action"] = "bonestorm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( active_enemies = 1 || buff.luck_of_the_draw.up ) & runic_power.deficit < variable.rp_deficit_threshold",
|
|
["action"] = "death_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! drw.bp_ticking",
|
|
["action"] = "blood_boil",
|
|
},
|
|
{
|
|
["action"] = "heart_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "death_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "consumption",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blood_boil",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["sanlayn"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.infliction_of_sorrow.up",
|
|
["action"] = "heart_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vampiric_strike.up",
|
|
["action"] = "heart_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.dancing_rune_weapon.up & active_enemies <= 2 & buff.coagulopathy.remains > 3",
|
|
["action"] = "blooddrinker",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "runic_power.deficit < variable.rp_deficit_threshold",
|
|
["action"] = "death_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.bonestorm.ticking & buff.bone_shield.stack < variable.bone_shield_refresh_value & runic_power.deficit > 20",
|
|
["action"] = "marrowrend",
|
|
},
|
|
{
|
|
["action"] = "death_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rune > 1",
|
|
["action"] = "heart_strike",
|
|
},
|
|
{
|
|
["action"] = "consumption",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blood_boil",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "heart_strike",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250429,
|
|
["warnings"] = "Imported 8 action lists.\n",
|
|
["author"] = "SimC",
|
|
["profile"] = "actions.precombat+=/deaths_caress\nactions.precombat+=/variable,name=bone_shield_refresh_value,value=7\n\nactions+=/mind_freeze\nactions+=/use_item,name=tome_of_lights_devotion,if=buff.inner_resilience.up\nactions+=/use_item,name=bestinslots,use_off_gcd=1\nactions+=/use_items\nactions+=/blood_fury,if=buff.dancing_rune_weapon.up\nactions+=/berserking,if=buff.dancing_rune_weapon.up\nactions+=/ancestral_call,if=buff.dancing_rune_weapon.up\nactions+=/fireblood,if=buff.dancing_rune_weapon.up\nactions+=/potion,if=buff.dancing_rune_weapon.up\nactions+=/vampiric_blood,if=tanking&incoming_damage_5s>=vb_damage&!(buff.dancing_rune_weapon.up||buff.icebound_fortitude.up)\nactions+=/variable,name=rp_deficit_threshold,value=15+(10*talent.relish_in_blood.enabled)+(3*talent.runic_attenuation.enabled)+(spell_targets.heart_strike*talent.heartbreaker.enabled*2)\nactions+=/blood_tap,use_off_gcd=1,if=(rune<=2&rune.time_to_3>gcd.max&charges_fractional>=1.8)\nactions+=/blood_tap,use_off_gcd=1,if=(rune<=1&rune.time_to_3>gcd.max)\nactions+=/raise_dead,use_off_gcd=1\nactions+=/deaths_caress,if=buff.bone_shield.remains<gcd.max*2\nactions+=/death_strike,if=buff.coagulopathy.up&buff.coagulopathy.remains<=gcd.max*2\nactions+=/any_dnd,if=!buff.death_and_decay.up\nactions+=/blood_boil,if=dot.blood_plague.remains<gcd.max*2\nactions+=/soul_reaper,if=active_enemies=1&(target.time_to_pct_35<5)&target.time_to_die>(dot.soul_reaper.remains+5)&(!hero_tree.sanlayn||pet.dancing_rune_weapon.remains<5)\n# Use Icebound Fortitude if you're taking sufficient damage and you don't have Dancing Rune Weapon or Vampiric Blood up.\nactions+=/icebound_fortitude,if=tanking&incoming_damage_5s>=ibf_damage&!(buff.dancing_rune_weapon.up||buff.vampiric_blood.up)\n# Use 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&rune>3&!(buff.dancing_rune_weapon.up||buff.vampiric_blood.up||buff.icebound_fortitude.up)\nactions+=/run_action_list,name=san_drw,strict=1,if=hero_tree.sanlayn&buff.dancing_rune_weapon.up\nactions+=/call_action_list,name=san_cds,strict=1,if=hero_tree.sanlayn\nactions+=/run_action_list,name=sanlayn,strict=1,if=hero_tree.sanlayn\nactions+=/call_action_list,name=db_cds,strict=1,if=!hero_tree.sanlayn\nactions+=/run_action_list,name=deathbringer,strict=1,if=!hero_tree.sanlayn\n\nactions.db_cds=reapers_mark\nactions.db_cds+=/dancing_rune_weapon\nactions.db_cds+=/bonestorm,if=buff.bone_shield.stack>=5&(!talent.shattering_bone.enabled||death_and_decay.ticking)\nactions.db_cds+=/tombstone,if=buff.bone_shield.stack>=8&(!talent.shattering_bone.enabled||death_and_decay.ticking)&cooldown.dancing_rune_weapon.remains>=25\nactions.db_cds+=/abomination_limb,if=!buff.dancing_rune_weapon.up\n\nactions.deathbringer=death_strike,if=runic_power.deficit<variable.rp_deficit_threshold+(pet.dancing_rune_weapon.active*3)+(talent.everlasting_bond*3)\nactions.deathbringer+=/marrowrend,if=buff.exterminate.up\nactions.deathbringer+=/marrowrend,if=buff.bone_shield.stack<6&!dot.bonestorm.ticking\nactions.deathbringer+=/blood_boil,if=pet.dancing_rune_weapon.active&!drw.bp_ticking\nactions.deathbringer+=/soul_reaper,if=buff.reaper_of_souls.up&cooldown.dancing_rune_weapon.remains\nactions.deathbringer+=/blooddrinker,if=!buff.dancing_rune_weapon.up&active_enemies<=2&buff.coagulopathy.remains>3\nactions.deathbringer+=/death_strike\nactions.deathbringer+=/consumption\nactions.deathbringer+=/blood_boil,if=charges_fractional>=1.5\nactions.deathbringer+=/heart_strike,if=rune>=1||rune.time_to_2<gcd\nactions.deathbringer+=/blood_boil\nactions.deathbringer+=/heart_strike\nactions.deathbringer+=/arcane_torrent,if=runic_power.deficit>20\nactions.deathbringer+=/deaths_caress,if=buff.bone_shield.stack<11\n\nactions.high_prio_actions=blood_tap,use_off_gcd=1,if=(rune<=2&rune.time_to_3>gcd.max&charges_fractional>=1.8)\nactions.high_prio_actions+=/blood_tap,use_off_gcd=1,if=(rune<=1&rune.time_to_3>gcd.max)\nactions.high_prio_actions+=/raise_dead,use_off_gcd=1\nactions.high_prio_actions+=/deaths_caress,if=buff.bone_shield.remains<gcd.max*2\nactions.high_prio_actions+=/death_strike,if=buff.coagulopathy.up&buff.coagulopathy.remains<=gcd.max*2\nactions.high_prio_actions+=/any_dnd,if=!buff.death_and_decay.up\nactions.high_prio_actions+=/blood_boil,if=dot.blood_plague.remains<gcd.max*2\nactions.high_prio_actions+=/soul_reaper,if=active_enemies=1&(target.time_to_pct_35<5)&target.time_to_die>(dot.soul_reaper.remains+5)&(!hero_tree.sanlayn||pet.dancing_rune_weapon.remains<5)\nactions.high_prio_actions+=/rune_tap,use_off_gcd=1,if=rune>3\n\nactions.san_cds=abomination_limb,if=!buff.dancing_rune_weapon.up\nactions.san_cds+=/dancing_rune_weapon\nactions.san_cds+=/bonestorm,if=buff.death_and_decay.up&buff.bone_shield.stack>5&cooldown.dancing_rune_weapon.remains>15\nactions.san_cds+=/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\n\nactions.san_drw=bonestorm,if=buff.death_and_decay.up&buff.bone_shield.stack>5\nactions.san_drw+=/death_strike,if=(active_enemies=1||buff.luck_of_the_draw.up)&runic_power.deficit<variable.rp_deficit_threshold\nactions.san_drw+=/blood_boil,if=!drw.bp_ticking\nactions.san_drw+=/heart_strike\nactions.san_drw+=/death_strike\nactions.san_drw+=/consumption\nactions.san_drw+=/blood_boil\n\nactions.sanlayn=heart_strike,if=buff.infliction_of_sorrow.up\nactions.sanlayn+=/heart_strike,if=buff.vampiric_strike.up\nactions.sanlayn+=/blooddrinker,if=!buff.dancing_rune_weapon.up&active_enemies<=2&buff.coagulopathy.remains>3\nactions.sanlayn+=/death_strike,if=runic_power.deficit<variable.rp_deficit_threshold\nactions.sanlayn+=/marrowrend,if=!dot.bonestorm.ticking&buff.bone_shield.stack<variable.bone_shield_refresh_value&runic_power.deficit>20\nactions.sanlayn+=/death_strike\nactions.sanlayn+=/heart_strike,if=rune>1\nactions.sanlayn+=/consumption\nactions.sanlayn+=/blood_boil\nactions.sanlayn+=/heart_strike",
|
|
},
|
|
["Marksmanship"] = {
|
|
["source"] = "# https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250330,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-03-30: SimC Update\n2025-03-21: SimC Update\n2025-03-10: SimC Update\n2025-03-02: Delete Salvo\n2025-02-28: TWW Season 2 update\n2025-02-17: Preliminary 11.1 APL\n2024-10-29: SimC update\n2024-10-23: 11.0.5\n2024-09-10, 09-15: SimC update\n2024-08-15, 22: SimC update\n2024-08-11: Steady Focus only if talented\n2024-08-09: Updates from SimC\n2024-08-01: Use Hunter's Mark setting\n2024-07-27: Minor sim update; use Hunter's Mark\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["trickshots"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.double_tap.enabled",
|
|
["action"] = "volley",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.trueshot_ready",
|
|
["action"] = "trueshot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "multishot",
|
|
["cycle_Targets"] = "1",
|
|
["criteria"] = "buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down ) || buff.trick_shots.down",
|
|
["description"] = "Swap targets to spend Precise Shots from No Scope after applying Spotter's Mark already to the primary target.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "For Double Tap, lower Volley in priority until Trueshot has already triggered Double Tap.",
|
|
["criteria"] = "talent.double_tap.enabled & buff.double_tap.down",
|
|
["action"] = "volley",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Always cast Black Arrow with Trick Shots up for Bleak Powder.",
|
|
["criteria"] = "buff.trick_shots.up",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Prioritize Aimed Shot a bit higher than Rapid Fire if it's close to charge capping and Bulletstorm is up.",
|
|
["criteria"] = "( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & buff.trick_shots.up & buff.bulletstorm.up & full_recharge_time < gcd.max",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With Sentinel, hold Rapid Fire for up to 1/3 of its cooldown to trigger Lunar Storm as soon as possible.",
|
|
["criteria"] = "buff.trick_shots.up & ( ! hero_tree.sentinel || buff.lunar_storm_cooldown.remains > action_cooldown / 3 || buff.lunar_storm_cooldown.down )",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With Precision Detonation, wait until a follow up Aimed Shot would not waste Precise Shots to cast. Require Lock and Load active if using the 4pc.",
|
|
["criteria"] = "talent.precision_detonation.enabled & ( buff.lock_and_load.up || ! set_bonus.thewarwithin_season_2_4pc ) & ( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up )",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Aimed Shot if we've spent Precise Shots to trigger Spotter's Mark and Moving Target. With No Scope this means Precise Shots could be up when Aimed Shot is cast.",
|
|
["criteria"] = "( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & buff.trick_shots.up",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "steady_shot",
|
|
},
|
|
{
|
|
["action"] = "multishot",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "counter_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "tranquilizing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.trueshot.ready & ( ( ! raid_event.adds.exists || raid_event.adds.count = 1 ) & ( ! talent.bullseye.enabled || fight_remains > cooldown.trueshot.duration_guess + buff.trueshot.duration / 2 || buff.bullseye.stack = buff.bullseye.max_stack ) & ( ! trinket.t1.has_use_buff || trinket.t1.cooldown.remains > 30 || trinket.t1.cooldown.ready ) & ( ! trinket.t2.has_use_buff || trinket.t2.cooldown.remains > 30 || trinket.t2.cooldown.ready ) || raid_event.adds.exists & ( ! raid_event.adds.up & ( raid_event.adds.duration + raid_event.adds.in < 25 || raid_event.adds.in > 60 ) || raid_event.adds.up & raid_event.adds.remains > 10 ) || boss & fight_remains < 25 )",
|
|
["var_name"] = "trueshot_ready",
|
|
["description"] = "Determine if it is a good time to use Trueshot. Raid event optimization takes priority so usage is saved for multiple targets as long as it won't delay over half its duration. Otherwise allow for small delays to line up buff effect trinkets, and when using Bullseye, delay the last usage of the fight for max stacks.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.health_pct < pet_healing",
|
|
["action"] = "mend_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies < 3 || ! talent.trick_shots.enabled",
|
|
["list_name"] = "st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 2",
|
|
["list_name"] = "trickshots",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unbreakable_bond.enabled",
|
|
["action"] = "summon_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! trinket.t2.has_cooldown || trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff || ! trinket.t1.is.mirror_of_fractured_tomorrows & ( trinket.t2.is.mirror_of_fractured_tomorrows || trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) ) || ! trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) )",
|
|
["var_name"] = "trinket_1_stronger",
|
|
["description"] = "Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! variable.trinket_1_stronger",
|
|
["var_name"] = "trinket_2_stronger",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 || active_enemies = 2 & ! talent.volley.enabled",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["action"] = "steady_shot",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.trueshot_ready",
|
|
["var_name"] = "sync_ready",
|
|
["description"] = "True if effects that are desirable to sync a trinket buff with are ready.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.trueshot.up",
|
|
["var_name"] = "sync_active",
|
|
["description"] = "True if effecs that are desirable to sync a trinket buff with are active.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.trueshot.remains_guess",
|
|
["var_name"] = "sync_remains",
|
|
["description"] = "Time until the effects that are desirable to sync a trinket buff with will be ready.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["description"] = "Uses buff effect trinkets with cooldowns and is willing to delay usage up to half the trinket cooldown if it won't lose a usage in the fight. Fills in downtime with weaker buff effects if they won't also be saved for later cooldowns (happens if it won't delay over half the trinket cooldown and a stronger trinket won't be up in time) or damage effects if they won't inferfere with any buff effect usage. Intended to be slot-agnostic so that any order of the same trinket pair should result in the same usage.",
|
|
["criteria"] = "trinket.t1.has_use_buff & ( variable.sync_ready & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) || ! variable.sync_ready & ( variable.trinket_1_stronger & ( variable.sync_remains > trinket.t1.cooldown.duration / 3 & fight_remains > trinket.t1.cooldown.duration + 20 || trinket.t2.has_use_buff & trinket.t2.cooldown.remains > variable.sync_remains - 15 & trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 45 > fight_remains ) || variable.trinket_2_stronger & ( trinket.t2.cooldown.remains & ( trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains >= 20 || trinket.t2.cooldown.remains - 5 >= variable.sync_remains & ( variable.sync_remains > trinket.t1.cooldown.duration / 3 || trinket.t1.cooldown.duration < fight_remains & ( variable.sync_remains + trinket.t1.cooldown.duration > fight_remains ) ) ) || trinket.t2.cooldown.ready & variable.sync_remains > 20 & variable.sync_remains < trinket.t2.cooldown.duration / 3 ) ) ) || ! trinket.t1.has_use_buff & ( trinket.t1.cast_time = 0 || ! variable.sync_active ) & ( ! trinket.t2.has_use_buff & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) || trinket.t2.has_use_buff & ( variable.sync_remains > 20 || trinket.t2.cooldown.remains > 20 ) ) || boss & fight_remains < 25 & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "trinket.t2.has_use_buff & ( variable.sync_ready & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) || ! variable.sync_ready & ( variable.trinket_2_stronger & ( variable.sync_remains > trinket.t2.cooldown.duration / 3 & fight_remains > trinket.t2.cooldown.duration + 20 || trinket.t1.has_use_buff & trinket.t1.cooldown.remains > variable.sync_remains - 15 & trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 45 > fight_remains ) || variable.trinket_1_stronger & ( trinket.t1.cooldown.remains & ( trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains >= 20 || trinket.t1.cooldown.remains - 5 >= variable.sync_remains & ( variable.sync_remains > trinket.t2.cooldown.duration / 3 || trinket.t2.cooldown.duration < fight_remains & ( variable.sync_remains + trinket.t2.cooldown.duration > fight_remains ) ) ) || trinket.t1.cooldown.ready & variable.sync_remains > 20 & variable.sync_remains < trinket.t1.cooldown.duration / 3 ) ) ) || ! trinket.t2.has_use_buff & ( trinket.t2.cast_time = 0 || ! variable.sync_active ) & ( ! trinket.t1.has_use_buff & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) || trinket.t1.has_use_buff & ( variable.sync_remains > 20 || trinket.t1.cooldown.remains > 20 ) ) || boss & fight_remains < 25 & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains )",
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Hold Volley for up to its whole cooldown for multiple target situations, also make sure Rapid Fire will be available to stack extra Bullestorm stacks during it without Aspect of the Hydra.",
|
|
["criteria"] = "! talent.double_tap.enabled & ( talent.aspect_of_the_hydra.enabled || active_enemies = 1 || buff.precise_shots.down & ( cooldown.rapid_fire.remains + action.rapid_fire.execute_time < 6 || ! talent.bulletstorm.enabled ) ) & ( ! raid_event.adds.exists || raid_event.adds.in > action_cooldown || active_enemies > 1 )",
|
|
["action"] = "volley",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Prioritize Rapid Fire to trigger Lunar Storm or to stack extra Bulletstorm when Volley Trick Shots is up without Aspect of the Hydra.",
|
|
["criteria"] = "hero_tree.sentinel & buff.lunar_storm_cooldown.down || ! talent.aspect_of_the_hydra.enabled & talent.bulletstorm.enabled & active_enemies > 1 & buff.trick_shots.up & ( buff.precise_shots.down || ! talent.no_scope.enabled )",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.trueshot_ready",
|
|
["action"] = "trueshot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Prioritize 4pc double bonus by casting Explosive Shot and following up with Aimed Shot when Lock and Load is up, as long as Precise Shots would not be wasted.",
|
|
["criteria"] = "talent.precision_detonation.enabled & set_bonus.thewarwithin_season_2_4pc & ( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & buff.lock_and_load.up",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.precision_detonation.enabled & set_bonus.thewarwithin_season_2_4pc & ( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & buff.lock_and_load.up",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "For Double Tap, lower Volley in priority until Trueshot has already triggered Double Tap.",
|
|
["criteria"] = "talent.double_tap.enabled & buff.double_tap.down",
|
|
["action"] = "volley",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "black_arrow",
|
|
["cycle_Targets"] = "1",
|
|
["criteria"] = "talent.headshot.enabled & buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down ) || ! talent.headshot.enabled & buff.razor_fragments.up",
|
|
["description"] = "Kill Shot/Black Arrow become the primary Precise Shot spenders for Headshot builds. For all Precise Shot spenders, skip to Aimed Shot if both Spotter's Mark and Moving Target are already up.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["cycle_Targets"] = "1",
|
|
["action"] = "kill_shot",
|
|
["criteria"] = "talent.headshot.enabled & buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down ) || ! talent.headshot.enabled & buff.razor_fragments.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "multishot",
|
|
["cycle_Targets"] = "1",
|
|
["criteria"] = "buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down ) & active_enemies > 1 & ! talent.aspect_of_the_hydra.enabled & ( talent.symphonic_arsenal.enabled || talent.small_game_hunter.enabled )",
|
|
["description"] = "With either Symphonic Arsenal or Small Game Hunter, Multi-Shot can be used as the Precise Shots spender on 2 targets without Aspect of the Hydra.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["cycle_Targets"] = "1",
|
|
["action"] = "arcane_shot",
|
|
["criteria"] = "buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "aimed_shot",
|
|
["cycle_Targets"] = "1",
|
|
["criteria"] = "( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & full_recharge_time < action.rapid_fire.execute_time + cast_time & ( ! talent.bulletstorm.enabled || buff.bulletstorm.up ) & talent.windrunner_quiver.enabled",
|
|
["description"] = "Prioritize Aimed Shot a bit higher than Rapid Fire if it's close to charge capping and Bulletstorm is up.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With Sentinel, hold Rapid Fire for up to 1/3 of its cooldown to trigger Lunar Storm as soon as possible. Don't reset Bulletstorm if it's been stacked over 10 unless it can be re-stacked over 10.",
|
|
["criteria"] = "( ! hero_tree.sentinel || buff.lunar_storm_cooldown.remains > action_cooldown / 3 ) & ( ! talent.bulletstorm.enabled || buff.bulletstorm.stack <= 10 || talent.aspect_of_the_hydra.enabled & active_enemies > 1 )",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "aimed_shot",
|
|
["cycle_Targets"] = "1",
|
|
["criteria"] = "buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up",
|
|
["description"] = "Aimed Shot if we've spent Precise Shots to trigger Spotter's Mark and Moving Target. With No Scope this means Precise Shots could be up when Aimed Shot is cast.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! set_bonus.thewarwithin_season_2_4pc || ! talent.precision_detonation.enabled",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.headshot.enabled",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Steady Shot is our only true filler due to the Aimed Shot cdr.",
|
|
["action"] = "steady_shot",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || boss & fight_remains < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 16",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 16",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 9",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up & ( buff.bloodlust.up || target.health.pct < 20 ) || boss & fight_remains < 31",
|
|
["action"] = "potion",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250330,
|
|
["warnings"] = "The import for 'trickshots' required some automated changes.\nLine 1: Converted 'talent.double_tap' to 'talent.double_tap.enabled' (1x).\nLine 4: Converted 'talent.double_tap' to 'talent.double_tap.enabled' (1x).\nLine 7: Converted operations in 'buff.trick_shots.up&(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>action_cooldown%3||buff.lunar_storm_cooldown.down)' to 'buff.trick_shots.up&(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>action_cooldown/3||buff.lunar_storm_cooldown.down)'.\nLine 8: Converted 'talent.precision_detonation' to 'talent.precision_detonation.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'talent.bullseye' to 'talent.bullseye.enabled' (1x).\nLine 3: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 3: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 3: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 3: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 3: Converted operations in 'cooldown.trueshot.ready&((!raid_event.adds.exists||raid_event.adds.count=1)&(!talent.bullseye.enabled||fight_remains>cooldown.trueshot.duration_guess+buff.trueshot.duration%2||buff.bullseye.stack=buff.bullseye.max_stack)&(!trinket.t1.has_use_buff||trinket.t1.cooldown.remains>30||trinket.t1.cooldown.ready)&(!trinket.t2.has_use_buff||trinket.t2.cooldown.remains>30||trinket.t2.cooldown.ready)||raid_event.adds.exists&(!raid_event.adds.up&(raid_event.adds.duration+raid_event.adds.in<25||raid_event.adds.in>60)||raid_event.adds.up&raid_event.adds.remains>10)||boss&fight_remains<25)' to 'cooldown.trueshot.ready&((!raid_event.adds.exists||raid_event.adds.count=1)&(!talent.bullseye.enabled||fight_remains>cooldown.trueshot.duration_guess+buff.trueshot.duration/2||buff.bullseye.stack=buff.bullseye.max_stack)&(!trinket.t1.has_use_buff||trinket.t1.cooldown.remains>30||trinket.t1.cooldown.ready)&(!trinket.t2.has_use_buff||trinket.t2.cooldown.remains>30||trinket.t2.cooldown.ready)||raid_event.adds.exists&(!raid_event.adds.up&(raid_event.adds.duration+raid_event.adds.in<25||raid_event.adds.in>60)||raid_event.adds.up&raid_event.adds.remains>10)||boss&fight_remains<25)'.\nLine 8: Converted 'talent.trick_shots' to 'talent.trick_shots.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 1: Converted 'talent.unbreakable_bond' to 'talent.unbreakable_bond.enabled' (1x).\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'talent.volley' to 'talent.volley.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 1: Converted 'talent.double_tap' to 'talent.double_tap.enabled' (1x).\nLine 1: Converted 'talent.aspect_of_the_hydra' to 'talent.aspect_of_the_hydra.enabled' (1x).\nLine 1: Converted 'talent.bulletstorm' to 'talent.bulletstorm.enabled' (1x).\nLine 2: Converted 'talent.aspect_of_the_hydra' to 'talent.aspect_of_the_hydra.enabled' (1x).\nLine 2: Converted 'talent.bulletstorm' to 'talent.bulletstorm.enabled' (1x).\nLine 2: Converted 'talent.no_scope' to 'talent.no_scope.enabled' (1x).\nLine 4: Converted 'talent.precision_detonation' to 'talent.precision_detonation.enabled' (1x).\nLine 5: Converted 'talent.precision_detonation' to 'talent.precision_detonation.enabled' (1x).\nLine 6: Converted 'talent.double_tap' to 'talent.double_tap.enabled' (1x).\nLine 7: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\nLine 7: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\nLine 8: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\nLine 8: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\nLine 9: Converted 'talent.aspect_of_the_hydra' to 'talent.aspect_of_the_hydra.enabled' (1x).\nLine 9: Converted 'talent.symphonic_arsenal' to 'talent.symphonic_arsenal.enabled' (1x).\nLine 9: Converted 'talent.small_game_hunter' to 'talent.small_game_hunter.enabled' (1x).\nLine 11: Converted 'talent.bulletstorm' to 'talent.bulletstorm.enabled' (1x).\nLine 11: Converted 'talent.windrunner_quiver' to 'talent.windrunner_quiver.enabled' (1x).\nLine 12: Converted 'talent.bulletstorm' to 'talent.bulletstorm.enabled' (1x).\nLine 12: Converted 'talent.aspect_of_the_hydra' to 'talent.aspect_of_the_hydra.enabled' (1x).\nLine 12: Converted operations in '(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>action_cooldown%3)&(!talent.bulletstorm.enabled||buff.bulletstorm.stack<=10||talent.aspect_of_the_hydra.enabled&active_enemies>1)' to '(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>action_cooldown/3)&(!talent.bulletstorm.enabled||buff.bulletstorm.stack<=10||talent.aspect_of_the_hydra.enabled&active_enemies>1)'.\nLine 14: Converted 'talent.precision_detonation' to 'talent.precision_detonation.enabled' (1x).\nLine 15: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted operations in 'trinket.t1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.t1.cooldown.duration%3&fight_remains>trinket.t1.cooldown.duration+20||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-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",
|
|
["spec"] = 254,
|
|
["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/hunter_marksmanship.simc\n## Up to date with SimC: March 28 2025 - 9b7cf47\n\nactions.precombat+=/summon_pet,if=talent.unbreakable_bond\n# Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.\nactions.precombat+=/variable,name=trinket_1_stronger,value=!trinket.2.has_cooldown||trinket.1.has_use_buff&(!trinket.2.has_use_buff||!trinket.1.is.mirror_of_fractured_tomorrows&(trinket.2.is.mirror_of_fractured_tomorrows||trinket.2.cooldown.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+=/aimed_shot,if=active_enemies=1||active_enemies=2&!talent.volley\nactions.precombat+=/steady_shot\n\nactions+=/counter_shot\nactions+=/tranquilizing_shot\n# Determine if it is a good time to use Trueshot. Raid event optimization takes priority so usage is saved for multiple targets as long as it won't delay over half its duration. Otherwise allow for small delays to line up buff effect trinkets, and when using Bullseye, delay the last usage of the fight for max stacks.\nactions+=/variable,name=trueshot_ready,value=cooldown.trueshot.ready&((!raid_event.adds.exists||raid_event.adds.count=1)&(!talent.bullseye||fight_remains>cooldown.trueshot.duration_guess+buff.trueshot.duration%2||buff.bullseye.stack=buff.bullseye.max_stack)&(!trinket.1.has_use_buff||trinket.1.cooldown.remains>30||trinket.1.cooldown.ready)&(!trinket.2.has_use_buff||trinket.2.cooldown.remains>30||trinket.2.cooldown.ready)||raid_event.adds.exists&(!raid_event.adds.up&(raid_event.adds.duration+raid_event.adds.in<25||raid_event.adds.in>60)||raid_event.adds.up&raid_event.adds.remains>10)||boss&fight_remains<25)\nactions+=/mend_pet,if=pet.health_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\n\n# Hold Volley for up to its whole cooldown for multiple target situations, also make sure Rapid Fire will be available to stack extra Bullestorm stacks during it without Aspect of the Hydra.\nactions.st+=/volley,if=!talent.double_tap&(talent.aspect_of_the_hydra||active_enemies=1||buff.precise_shots.down&(cooldown.rapid_fire.remains+action.rapid_fire.execute_time<6||!talent.bulletstorm))&(!raid_event.adds.exists||raid_event.adds.in>cooldown||active_enemies>1)\n## [Syrif] - Using lunar_storm_cooldown.down is better for us than lunar_storm_ready.up, prediction-wise\n# Prioritize Rapid Fire to trigger Lunar Storm or to stack extra Bulletstorm when Volley Trick Shots is up without Aspect of the Hydra.\nactions.st+=/rapid_fire,if=hero_tree.sentinel&buff.lunar_storm_cooldown.down||!talent.aspect_of_the_hydra&talent.bulletstorm&active_enemies>1&buff.trick_shots.up&(buff.precise_shots.down||!talent.no_scope)\nactions.st+=/trueshot,if=variable.trueshot_ready\n# Prioritize 4pc double bonus by casting Explosive Shot and following up with Aimed Shot when Lock and Load is up, as long as Precise Shots would not be wasted.\nactions.st+=/explosive_shot,if=talent.precision_detonation&set_bonus.thewarwithin_season_2_4pc&(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&buff.lock_and_load.up\nactions.st+=/aimed_shot,if=talent.precision_detonation&set_bonus.thewarwithin_season_2_4pc&(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&buff.lock_and_load.up\n# For Double Tap, lower Volley in priority until Trueshot has already triggered Double Tap.\nactions.st+=/volley,if=talent.double_tap&buff.double_tap.down\n# Kill Shot/Black Arrow become the primary Precise Shot spenders for Headshot builds. For all Precise Shot spenders, skip to Aimed Shot if both Spotter's Mark and Moving Target are already up.\nactions.st+=/black_arrow,cycle_Targets=1,if=talent.headshot&buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)||!talent.headshot&buff.razor_fragments.up\nactions.st+=/kill_shot,cycle_Targets=1,if=talent.headshot&buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)||!talent.headshot&buff.razor_fragments.up\n# With either Symphonic Arsenal or Small Game Hunter, Multi-Shot can be used as the Precise Shots spender on 2 targets without Aspect of the Hydra.\nactions.st+=/multishot,cycle_Targets=1,if=buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)&active_enemies>1&!talent.aspect_of_the_hydra&(talent.symphonic_arsenal||talent.small_game_hunter)\nactions.st+=/arcane_shot,cycle_Targets=1,if=buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)\n# Prioritize Aimed Shot a bit higher than Rapid Fire if it's close to charge capping and Bulletstorm is up.\nactions.st+=/aimed_shot,cycle_Targets=1,if=(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&full_recharge_time<action.rapid_fire.execute_time+cast_time&(!talent.bulletstorm||buff.bulletstorm.up)&talent.windrunner_quiver\n# With Sentinel, hold Rapid Fire for up to 1/3 of its cooldown to trigger Lunar Storm as soon as possible. Don't reset Bulletstorm if it's been stacked over 10 unless it can be re-stacked over 10.\nactions.st+=/rapid_fire,if=(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>cooldown%3)&(!talent.bulletstorm||buff.bulletstorm.stack<=10||talent.aspect_of_the_hydra&active_enemies>1)\n# Aimed Shot if we've spent Precise Shots to trigger Spotter's Mark and Moving Target. With No Scope this means Precise Shots could be up when Aimed Shot is cast.\nactions.st+=/aimed_shot,cycle_Targets=1,if=buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up\nactions.st+=/explosive_shot,if=!set_bonus.thewarwithin_season_2_4pc||!talent.precision_detonation\nactions.st+=/black_arrow,if=!talent.headshot\n# Steady Shot is our only true filler due to the Aimed Shot cdr.\nactions.st+=/steady_shot\n\nactions.trickshots+=/volley,if=!talent.double_tap\nactions.trickshots+=/trueshot,if=variable.trueshot_ready\n# Swap targets to spend Precise Shots from No Scope after applying Spotter's Mark already to the primary target.\nactions.trickshots+=/multishot,cycle_Targets=1,if=buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)||buff.trick_shots.down\n# For Double Tap, lower Volley in priority until Trueshot has already triggered Double Tap.\nactions.trickshots+=/volley,if=talent.double_tap&buff.double_tap.down\n# Always cast Black Arrow with Trick Shots up for Bleak Powder.\nactions.trickshots+=/black_arrow,if=buff.trick_shots.up\n# Prioritize Aimed Shot a bit higher than Rapid Fire if it's close to charge capping and Bulletstorm is up.\nactions.trickshots+=/aimed_shot,if=(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&buff.trick_shots.up&buff.bulletstorm.up&full_recharge_time<gcd\n## [Syrif] - Using lunar_storm_cooldown.down is better for us than lunar_storm_ready.up, prediction-wise\n# With Sentinel, hold Rapid Fire for up to 1/3 of its cooldown to trigger Lunar Storm as soon as possible.\nactions.trickshots+=/rapid_fire,if=buff.trick_shots.up&(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>cooldown%3||buff.lunar_storm_cooldown.down)\n# With Precision Detonation, wait until a follow up Aimed Shot would not waste Precise Shots to cast. Require Lock and Load active if using the 4pc.\nactions.trickshots+=/explosive_shot,if=talent.precision_detonation&(buff.lock_and_load.up||!set_bonus.thewarwithin_season_2_4pc)&(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)\n# Aimed Shot if we've spent Precise Shots to trigger Spotter's Mark and Moving Target. With No Scope this means Precise Shots could be up when Aimed Shot is cast.\nactions.trickshots+=/aimed_shot,if=(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&buff.trick_shots.up\nactions.trickshots+=/explosive_shot\nactions.trickshots+=/steady_shot,if=focus+cast_regen<focus.max\nactions.trickshots+=/multishot\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)",
|
|
},
|
|
["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",
|
|
["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",
|
|
["spec"] = 268,
|
|
},
|
|
["Destruction"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250303,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-03-03: Sync with SimC",
|
|
["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,
|
|
["action"] = "trinket1",
|
|
["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 )",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["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 )",
|
|
["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",
|
|
["criteria"] = "havoc_active",
|
|
["var_name"] = "havoc_immo_time",
|
|
},
|
|
{
|
|
["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 )",
|
|
["default"] = "1",
|
|
["var_name"] = "pooling_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.pooling_condition || pet.infernal.active & soul_shard >= 3",
|
|
["default"] = "1",
|
|
["var_name"] = "pooling_condition_cb",
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "immolate",
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wither",
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies <= 4 & ( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled )",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies <= 4 & havoc_remains <= gcd.max * 3",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cast_time < havoc_remains & ( ( ! talent.improved_chaos_bolt.enabled & active_enemies <= 2 ) || ( talent.improved_chaos_bolt.enabled & ( ( talent.wither.enabled & talent.inferno.enabled & active_enemies <= 2 ) || ( talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 4 ) || ( ! talent.wither.enabled & talent.inferno.enabled & active_enemies <= 3 ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 5 ) ) ) )",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies >= 3",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time & soul_shard < 4.5",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.backdraft.enabled",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard < 4.7 & ( charges > 2 || boss & fight_remains < cooldown.dimensional_rift.duration )",
|
|
["action"] = "dimensional_rift",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cast_time < havoc_remains",
|
|
["action"] = "incinerate",
|
|
},
|
|
},
|
|
["cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "havoc_active & havoc_remains > gcd.max",
|
|
["list_name"] = "havoc",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.havoc.remains <= 5 || talent.mayhem.enabled",
|
|
["var_name"] = "pool_soul_shards",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled )",
|
|
["action"] = "malevolence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "havoc",
|
|
["criteria"] = "( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled ) & target.time_to_die > 8",
|
|
["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,
|
|
["action"] = "wither",
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wither",
|
|
["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",
|
|
["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,
|
|
["action"] = "immolate",
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "summon_infernal",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.diabolic_ritual.enabled & ( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains - 2 - ! variable.disable_cb_2t * action.chaos_bolt.cast_time - variable.disable_cb_2t * gcd.max ) <= 0 )",
|
|
["action"] = "incinerate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.pooling_condition & ! talent.wither.enabled & buff.rain_of_chaos.up",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.allow_rof_2t_spender >= 1 & ! talent.wither.enabled & talent.pyrogenics.enabled & debuff.pyrogenics.remains <= gcd.max & ( ! talent.rain_of_chaos.enabled || cooldown.summon_infernal.remains >= gcd.max * 3 ) & variable.pooling_condition",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.do_rof_2t & variable.pooling_condition & ( cooldown.summon_infernal.remains >= gcd.max * 3 || ! talent.rain_of_chaos.enabled )",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard <= 4 & talent.mayhem.enabled",
|
|
["action"] = "soul_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.disable_cb_2t & variable.pooling_condition_cb & ( cooldown.summon_infernal.remains >= gcd.max * 3 || soul_shard > 4 || ! talent.rain_of_chaos.enabled )",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["action"] = "dimensional_rift",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "infernal_bolt",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "time_to_max_charges < 2 * gcd.max || boss & fight_remains < gcd.max * charges",
|
|
["action"] = "conflagrate",
|
|
},
|
|
{
|
|
["action"] = "incinerate",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.summon_infernal.remains >= 55 & soul_shard < 4.7 & ( active_enemies <= 3 + active_dot.wither || time > 30 )",
|
|
["action"] = "malevolence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "demonic_art",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["sec"] = "( ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) )",
|
|
["action"] = "wait",
|
|
["criteria"] = "( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) < gcd.max * 0.25 ) & soul_shard > 2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( diabolic_ritual & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) <= action.incinerate.cast_time & ( buff.diabolic_ritual_mother_of_chaos.remains + buff.diabolic_ritual_overlord.remains + buff.diabolic_ritual_pit_lord.remains ) > gcd.max * 0.25 )",
|
|
["action"] = "incinerate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "havoc_active & havoc_remains > gcd.max & active_enemies < ( 5 + ! talent.wither.enabled ) & ( ! cooldown.summon_infernal.up || ! talent.summon_infernal.enabled )",
|
|
["list_name"] = "havoc",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard < 4.7 & ( charges > 2 || boss & fight_remains < cooldown.dimensional_rift.duration )",
|
|
["action"] = "dimensional_rift",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.inferno.enabled & soul_shard >= ( 4.5 - 0.1 * ( active_dot.immolate + active_dot.wither ) ) || soul_shard >= ( 3.5 - 0.1 * ( active_dot.immolate + active_dot.wither ) ) || buff.ritual_of_ruin.up",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wither",
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time & talent.raging_demonfire.enabled",
|
|
["action"] = "channel_demonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( buff.malevolence.up & ( ( talent.cataclysm.enabled & active_enemies <= 10 ) || ( talent.inferno.enabled & active_enemies <= 6 ) ) ) || ( talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 6 ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 4 ) || active_enemies <= 3 ) & ( ( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled ) || fight_remains <= 8 )",
|
|
["action"] = "shadowburn",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadowburn",
|
|
["criteria"] = "( ( buff.malevolence.up & ( ( talent.cataclysm.enabled & active_enemies <= 10 ) || ( talent.inferno.enabled & active_enemies <= 6 ) ) ) || ( talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 6 ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 4 ) || active_enemies <= 3 ) & ( ( cooldown.shadowburn.full_recharge_time <= gcd.max * 3 || debuff.eradication.remains <= gcd.max & talent.eradication.enabled & ! action.chaos_bolt.in_flight & ! talent.diabolic_ritual.enabled ) & ( talent.conflagration_of_chaos.enabled || talent.blistering_atrophy.enabled ) & time_to_die < 5 || boss & fight_remains <= 8 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "ruination",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.infernal.active & talent.rain_of_chaos.enabled",
|
|
["action"] = "rain_of_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "soul_fire",
|
|
["criteria"] = "( buff.decimation.up ) & ! talent.raging_demonfire.enabled & havoc_active",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "soul_fire",
|
|
["criteria"] = "buff.decimation.up & active_dot.immolate <= 4",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "soul_shard < 2.5",
|
|
["action"] = "infernal_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( soul_shard > 3.5 - ( 0.1 * active_enemies ) & ! talent.rain_of_fire.enabled ) || ( ! talent.wither.enabled & talent.cataclysm.enabled & active_enemies <= 3 )",
|
|
["action"] = "chaos_bolt",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > 15 || talent.wither.enabled",
|
|
["action"] = "cataclysm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "havoc",
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "wither",
|
|
["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",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "immolate",
|
|
["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",
|
|
["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,
|
|
["action"] = "immolate",
|
|
["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 ) )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "immolate",
|
|
["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 ) )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "dimensional_rift",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "soul_fire",
|
|
["criteria"] = "buff.decimation.up",
|
|
["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",
|
|
["description"] = "Automatic Logic for Buff Trinkets in Trinket Slot 1",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff",
|
|
["description"] = "Automatic Logic for Buff Trinkets in Trinket Slot 2",
|
|
["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.summon_infernal.duration = 0 || cooldown.summon_infernal.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.summon_infernal.duration = 0 || cooldown.summon_infernal.duration % trinket.t2.cooldown.duration = 0 )",
|
|
["value_else"] = "0.5",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.is.spymasters_web",
|
|
["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",
|
|
["description"] = "Sets a specific Trinkets in Slot 1 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.whispering_incarnate_icon",
|
|
["description"] = "Sets a specific Trinkets in Slot 2 to follow an APL line and not the automatic logic",
|
|
["var_name"] = "trinket_1_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.is.whispering_incarnate_icon",
|
|
["description"] = "For On Use Trinkets on slot 2 with on use effects you dont want to use in combat",
|
|
["var_name"] = "trinket_2_exclude",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.buff_duration",
|
|
["description"] = "Sets the duration of the trinket in the automatic logic",
|
|
["var_name"] = "trinket_1_buff_duration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.buff_duration",
|
|
["description"] = "Sets the duration of the trinket in the automatic logic",
|
|
["var_name"] = "trinket_2_buff_duration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Automatic Logic in case both Trinkets are on use buffs",
|
|
["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,
|
|
["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",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "channel_demonfire",
|
|
["description"] = "[Hekili] Don't use without Immolate/Wither active.",
|
|
["criteria"] = "dot.immolate.remains + dot.wither.remains > cast_time",
|
|
},
|
|
{
|
|
["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"] = 20250303,
|
|
["warnings"] = "The import for 'items' required some automated changes.\nLine 2: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 2: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 3: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\n\nThe import for 'variables' required some automated changes.\nLine 2: Converted 'talent.secrets_of_the_coven' to 'talent.secrets_of_the_coven.enabled' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted operations in '((floor((fight_remains%trinket.t1.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(floor((fight_remains%trinket.t1.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)%trinket.t1.cooldown.duration)+1))||((floor((fight_remains%trinket.t1.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%%trinket.t1.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_1_buff_duration)>0)))&cooldown.summon_infernal.remains>20' to '((floor((fight_remains/trinket.t1.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(floor((fight_remains/trinket.t1.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)/trinket.t1.cooldown.duration)+1))||((floor((fight_remains/trinket.t1.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%trinket.t1.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_1_buff_duration)>0)))&cooldown.summon_infernal.remains>20'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted operations in '((floor((fight_remains%trinket.t2.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(floor((fight_remains%trinket.t2.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)%trinket.t2.cooldown.duration)+1))||((floor((fight_remains%trinket.t2.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))%cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%%trinket.t2.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_2_buff_duration)>0)))&cooldown.summon_infernal.remains>20' to '((floor((fight_remains/trinket.t2.cooldown.duration)+1)!=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(floor((fight_remains/trinket.t2.cooldown.duration)+1))!=(floor(((fight_remains-cooldown.summon_infernal.remains)/trinket.t2.cooldown.duration)+1))||((floor((fight_remains/trinket.t2.cooldown.duration)+1)=floor((fight_remains+(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains))/cooldown.summon_infernal.duration))&(((fight_remains-cooldown.summon_infernal.remains%trinket.t2.cooldown.duration)-cooldown.summon_infernal.remains-variable.trinket_2_buff_duration)>0)))&cooldown.summon_infernal.remains>20'.\n\nThe import for 'default' required some automated changes.\nLine 11: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 11: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 12: Converted 'talent.roaring_blaze' to 'talent.roaring_blaze.enabled' (1x).\nLine 13: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 13: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 13: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 13: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 15: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 16: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 17: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 17: Converted 'talent.shadowburn' to 'talent.shadowburn.enabled' (1x).\nLine 18: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 18: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 19: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 19: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 20: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 20: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 20: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 21: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 21: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 21: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 21: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 21: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 23: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 24: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 5: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%trinket.t1.cooldown.duration=0)'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 7: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 7: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.summon_infernal.duration=0||cooldown.summon_infernal.duration%trinket.t2.cooldown.duration=0)'.\nLine 8: Converted 'trinket.1.is.spymasters_web' to 'trinket.t1.is.spymasters_web' (1x).\nLine 9: Converted 'trinket.2.is.spymasters_web' to 'trinket.t2.is.spymasters_web' (1x).\nLine 10: Converted 'trinket.1.is.whispering_incarnate_icon' to 'trinket.t1.is.whispering_incarnate_icon' (1x).\nLine 11: Converted 'trinket.2.is.whispering_incarnate_icon' to 'trinket.t2.is.whispering_incarnate_icon' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 12: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 13: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 14: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.2.has_buff.intellect' to 'trinket.t2.has_use_buff' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 14: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_buff.intellect' (1x).\nLine 14: Converted 'trinket.1.has_buff.intellect' to 'trinket.t1.has_use_buff' (1x).\nLine 14: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/variable.trinket_2_buff_duration)*(1+0.5*trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/variable.trinket_1_buff_duration)*(1+0.5*trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nLine 16: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 16: Converted 'talent.improved_chaos_bolt' to 'talent.improved_chaos_bolt.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 5: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 7: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 8: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 9: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 10: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 10: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 10: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 10: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 10: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 10: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 10: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 10: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 10: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 10: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 11: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 11: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 11: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 11: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 11: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 11: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 11: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 13: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 14: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 17: Converted 'talent.rain_of_fire' to 'talent.rain_of_fire.enabled' (1x).\nLine 17: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 17: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 18: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 19: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 19: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 19: Converted 'talent.malevolence' to 'talent.malevolence.enabled' (1x).\nLine 20: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 21: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 21: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 21: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 24: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 26: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 26: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 27: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 27: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 31: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\n\nThe import for 'cleave' required some automated changes.\nLine 2: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 3: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 7: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 7: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 8: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 8: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 10: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 10: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 10: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 10: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 12: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 13: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 14: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 15: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 15: Converted 'talent.shadowburn' to 'talent.shadowburn.enabled' (1x).\nLine 17: Converted 'talent.raging_demonfire' to 'talent.raging_demonfire.enabled' (1x).\nLine 17: Converted 'talent.internal_combustion' to 'talent.internal_combustion.enabled' (1x).\nLine 18: Converted 'talent.roaring_blaze' to 'talent.roaring_blaze.enabled' (1x).\nLine 19: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 19: Converted 'talent.soul_fire' to 'talent.soul_fire.enabled' (1x).\nLine 19: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 21: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 22: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 23: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 23: Converted 'talent.pyrogenics' to 'talent.pyrogenics.enabled' (1x).\nLine 23: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 24: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\nLine 25: Converted 'talent.mayhem' to 'talent.mayhem.enabled' (1x).\nLine 26: Converted 'talent.rain_of_chaos' to 'talent.rain_of_chaos.enabled' (1x).\n\nThe import for 'havoc' required some automated changes.\nLine 1: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\nLine 3: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 6: Converted 'talent.eradication' to 'talent.eradication.enabled' (1x).\nLine 6: Converted 'talent.diabolic_ritual' to 'talent.diabolic_ritual.enabled' (1x).\nLine 6: Converted 'talent.conflagration_of_chaos' to 'talent.conflagration_of_chaos.enabled' (1x).\nLine 6: Converted 'talent.blistering_atrophy' to 'talent.blistering_atrophy.enabled' (1x).\nLine 8: Converted 'talent.improved_chaos_bolt' to 'talent.improved_chaos_bolt.enabled' (1x).\nLine 8: Converted 'talent.improved_chaos_bolt' to 'talent.improved_chaos_bolt.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.inferno' to 'talent.inferno.enabled' (1x).\nLine 8: Converted 'talent.wither' to 'talent.wither.enabled' (1x).\nLine 8: Converted 'talent.cataclysm' to 'talent.cataclysm.enabled' (1x).\nLine 11: Converted 'talent.backdraft' to 'talent.backdraft.enabled' (1x).\n\nThe import for 'ogcd' required some automated changes.\nLine 1: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 2: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 3: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 4: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\nLine 5: Converted 'talent.summon_infernal' to 'talent.summon_infernal.enabled' (1x).\n\nImported 8 action lists.\n",
|
|
["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)\n# [Hekili] Don't use without Immolate/Wither active.\nactions+=/channel_demonfire,if=dot.immolate.remains+dot.wither.remains>cast_time\nactions+=/dimensional_rift\nactions+=/infernal_bolt\nactions+=/conflagrate,if=time_to_max_charges<2*gcd.max||boss&fight_remains<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+!talent.wither)&(!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&active_enemies<=10)||(talent.inferno&active_enemies<=6)))||(talent.wither&talent.cataclysm&active_enemies<=6)||(!talent.wither&talent.cataclysm&active_enemies<=4)||active_enemies<=3)&((cooldown.shadowburn.full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)||fight_remains<=8)\nactions.aoe+=/shadowburn,cycle_targets=1,if=((buff.malevolence.up&((talent.cataclysm&active_enemies<=10)||(talent.inferno&active_enemies<=6)))||(talent.wither&talent.cataclysm&active_enemies<=6)||(!talent.wither&talent.cataclysm&active_enemies<=4)||active_enemies<=3)&((cooldown.shadowburn.full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)&time_to_die<5||boss&fight_remains<=8)\nactions.aoe+=/ruination\nactions.aoe+=/rain_of_fire,if=pet.infernal.active&talent.rain_of_chaos\nactions.aoe+=/soul_fire,cycle_targets=1,if=(buff.decimation.up)&!talent.raging_demonfire&havoc_active\nactions.aoe+=/soul_fire,cycle_targets=1,if=buff.decimation.up&active_dot.immolate<=4\nactions.aoe+=/infernal_bolt,if=soul_shard<2.5\nactions.aoe+=/chaos_bolt,if=(soul_shard>3.5-(0.1*active_enemies)&!talent.rain_of_fire)||(!talent.wither&talent.cataclysm&active_enemies<=3)\nactions.aoe+=/cataclysm,if=raid_event.adds.in>15||talent.wither\nactions.aoe+=/havoc,cycle_targets=1,if=(!cooldown.summon_infernal.up||!talent.summon_infernal||(talent.inferno&active_enemies>4))&target.time_to_die>8&(cooldown.malevolence.remains>15||!talent.malevolence)||time<5\nactions.aoe+=/wither,cycle_targets=1,if=dot.wither.refreshable&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.wither.remains)&(!talent.raging_demonfire||cooldown.channel_demonfire.remains>remains||time<5)&active_dot.wither<=cycle_enemies&target.time_to_die>18\nactions.aoe+=/immolate,cycle_targets=1,if=dot.immolate.refreshable&(!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.immolate.remains)&(!talent.raging_demonfire||cooldown.channel_demonfire.remains>remains||time<5)&(active_dot.immolate<=6&!(talent.diabolic_ritual&talent.inferno)||active_dot.immolate<=4)&target.time_to_die>18\nactions.aoe+=/call_action_list,name=ogcd\nactions.aoe+=/summon_infernal\nactions.aoe+=/rain_of_fire,if=debuff.pyrogenics.down&active_enemies<=4&!talent.diabolic_ritual\nactions.aoe+=/channel_demonfire,if=dot.immolate.remains+dot.wither.remains>cast_time\nactions.aoe+=/immolate,cycle_targets=1,if=dot.immolate.refreshable&((((!talent.cataclysm.enabled||cooldown.cataclysm.remains>dot.immolate.remains))||cycle_enemies>active_dot.immolate)&target.time_to_die>10&!havoc_active&!(talent.diabolic_ritual&talent.inferno))\nactions.aoe+=/immolate,cycle_targets=1,if=dot.immolate.refreshable&((variable.havoc_immo_time<5.4||(dot.immolate.remains<2&dot.immolate.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,if=dot.immolate.remains+dot.wither.remains>cast_time\nactions.cleave+=/dimensional_rift\nactions.cleave+=/infernal_bolt\nactions.cleave+=/conflagrate,if=time_to_max_charges<2*gcd.max||boss&fight_remains<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=active_enemies<=4&(cooldown.shadowburn.full_recharge_time<=gcd.max*3||debuff.eradication.remains<=gcd.max&talent.eradication&!action.chaos_bolt.in_flight&!talent.diabolic_ritual)&(talent.conflagration_of_chaos||talent.blistering_atrophy)\nactions.havoc+=/shadowburn,if=active_enemies<=4&havoc_remains<=gcd.max*3\nactions.havoc+=/chaos_bolt,if=cast_time<havoc_remains&((!talent.improved_chaos_bolt&active_enemies<=2)||(talent.improved_chaos_bolt&((talent.wither&talent.inferno&active_enemies<=2)||(talent.wither&talent.cataclysm&active_enemies<=4)||(!talent.wither&talent.inferno&active_enemies<=3)||(!talent.wither&talent.cataclysm&active_enemies<=5))))\nactions.havoc+=/rain_of_fire,if=active_enemies>=3\nactions.havoc+=/channel_demonfire,if=dot.immolate.remains+dot.wither.remains>cast_time&soul_shard<4.5\nactions.havoc+=/conflagrate,if=!talent.backdraft\nactions.havoc+=/dimensional_rift,if=soul_shard<4.7&(charges>2||boss&fight_remains<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",
|
|
},
|
|
["Subtlety"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/rogue_subtlety.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250406,
|
|
["spec"] = 261,
|
|
["desc"] = "2025-04-06: SimC Sync\n2025-03-25: SimC Sync\n2025-03-06: Workaround for rupture spam re: Flagellation cooldown\n2025-03-01: Sync with SimC",
|
|
["lists"] = {
|
|
["build"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Combo Point Builder",
|
|
["criteria"] = "buff.shadow_dance.up & ! used_for_danse || ! variable.stealth & buff.shadow_blades.up",
|
|
["action"] = "backstab",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.shadow_dance.up & ! used_for_danse || ! variable.stealth & buff.shadow_blades.up",
|
|
["action"] = "gloomblade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.find_weakness.remains <= 2 & active_enemies = 2 & talent.unseen_blade.enabled || ! used_for_danse & ! talent.premeditation.enabled",
|
|
["action"] = "shadowstrike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.lingering_darkness.up || talent.deathstalkers_mark.enabled & cooldown.shadow_blades.remains >= 32 & active_enemies >= 3 || talent.unseen_blade.enabled & buff.symbols_of_death.up & active_enemies >= 4",
|
|
["action"] = "shuriken_tornado",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.clear_the_witnesses.up & ( active_enemies >= 2 || ! buff.symbols_of_death.up )",
|
|
["action"] = "shuriken_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.deathstalkers_mark.enabled & ! debuff.deathstalkers_mark.up & active_enemies >= 3 & ( buff.shadow_blades.up || buff.premeditation.up || talent.the_rotten.enabled )",
|
|
["action"] = "shadowstrike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.deathstalkers_mark.enabled & active_enemies >= ( 2 + 3 * buff.shadow_dance.up )",
|
|
["action"] = "shuriken_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unseen_blade.enabled & ( buff.flawless_form.up & active_enemies >= 3 & ! variable.stealth || buff.the_rotten.stack = 1 & active_enemies >= 7 & buff.shadow_dance.up )",
|
|
["action"] = "shuriken_storm",
|
|
},
|
|
{
|
|
["action"] = "shadowstrike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points.deficit >= 3",
|
|
["action"] = "goremaws_bite",
|
|
},
|
|
{
|
|
["action"] = "gloomblade",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "backstab",
|
|
["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.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 || active_enemies <= 2 )",
|
|
["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.shadow_blades.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,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Cooldowns",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Racials",
|
|
["criteria"] = "variable.racial_sync",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "treacherous_transmitter",
|
|
["description"] = "Items (Trinkets)",
|
|
["criteria"] = "cooldown.flagellation.remains <= 2 || boss & fight_remains <= 15",
|
|
["name"] = "treacherous_transmitter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "dot.rupture.ticking & buff.flagellation_buff.up",
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.lingering_darkness.enabled || buff.lingering_darkness.up || equipped.treacherous_transmitter ) & ( ! equipped.treacherous_transmitter || cooldown.treacherous_transmitter.remains > 20 ) || boss & fight_remains <= 15",
|
|
["name"] = "mad_queens_mandate",
|
|
["action"] = "mad_queens_mandate",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.trinket_sync_slot = 1 & ( buff.shadow_blades.up || boss & fight_remains <= 20 ) || ( variable.trinket_sync_slot = 2 & ( ! trinket.t2.cooldown.ready & cooldown.shadow_blades.remains > 20 ) ) || ! variable.trinket_sync_slot )",
|
|
["slots"] = "trinket1",
|
|
["action"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( variable.trinket_sync_slot = 2 & ( buff.shadow_blades.up || boss & fight_remains <= 20 ) || ( variable.trinket_sync_slot = 1 & ( ! trinket.t1.cooldown.ready & cooldown.shadow_blades.remains > 20 ) ) || ! variable.trinket_sync_slot )",
|
|
["slots"] = "trinket2",
|
|
["action"] = "trinket2",
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Combo Point Builder",
|
|
["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",
|
|
["var_name"] = "priority_rotation",
|
|
["description"] = "Swap to priority rotation if the variable is enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "trinket_sync_slot",
|
|
["criteria"] = "trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff || trinket.t1.is.treacherous_transmitter || trinket.t1.cooldown.duration >= trinket.t2.cooldown.duration )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["var_name"] = "trinket_sync_slot",
|
|
["criteria"] = "trinket.t2.has_use_buff & ( ! trinket.t1.has_use_buff || trinket.t2.cooldown.duration > trinket.t1.cooldown.duration )",
|
|
},
|
|
{
|
|
["action"] = "stealth",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["finish"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["criteria"] = "! toggle.cooldowns",
|
|
["var_name"] = "cooldowns_soon",
|
|
["value"] = "false",
|
|
["action"] = "variable",
|
|
["value_else"] = "cooldown.shadow_blades.remains <= 13 & cooldown.flagellation.remains < 10 & ( dot.rupture.remains < ( cooldown.shadow_blades.remains + buff.shadow_blades.duration ) )",
|
|
["description"] = "[Syrif] - This variable prevents rupture spam when CDs are toggled off, or otherwise desynced due to dungeon gameplay environment ",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.secret",
|
|
["action"] = "secret_technique",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Maintenance Finisher",
|
|
["criteria"] = "! variable.skip_rupture & ( ! dot.rupture.ticking || refreshable ) & target.time_to_die - remains > 6",
|
|
["action"] = "rupture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.skip_rupture & ! variable.priority_rotation & target.time_to_die >= ( 2 * combo_points ) & refreshable & active_enemies >= 2",
|
|
["action"] = "rupture",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "[Syrif] Uses Hekili-specific variable as a workaround",
|
|
["criteria"] = "talent.unseen_blade.enabled & variable.cooldowns_soon & dot.rupture.remains < fight_remains",
|
|
["action"] = "rupture",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Direct Damage Finisher",
|
|
["criteria"] = "debuff.fazed.up & cooldown.flagellation.remains >= 20",
|
|
["action"] = "coup_de_grace",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.priority_rotation & variable.maintenance & ( ( ( active_enemies >= 2 & talent.deathstalkers_mark.enabled & ( ! buff.darkest_night.up || buff.shadow_dance.up & active_enemies >= 5 ) ) || talent.unseen_blade.enabled & active_enemies >= 7 ) || action.coup_de_grace.ready )",
|
|
["action"] = "black_powder",
|
|
},
|
|
{
|
|
["action"] = "eviscerate",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Cooldowns",
|
|
["criteria"] = "cooldown.secret_technique.up & buff.shadow_dance.up & combo_points >= 6 & variable.secret & ( ! talent.flagellation.enabled || buff.flagellation_persist.up )",
|
|
["action"] = "cold_blood",
|
|
},
|
|
{
|
|
["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 & ( ! talent.flagellation.enabled || cooldown.flagellation.remains >= 30 - 15 * ! talent.death_perception.enabled & cooldown.secret_technique.remains < 8 || ! talent.death_perception.enabled ) || boss & fight_remains <= 15 & ( raid || buff.symbols_of_death.down ) )",
|
|
["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 & cooldown.shadow_blades.remains <= 3 || boss & fight_remains <= 25",
|
|
["action"] = "flagellation",
|
|
},
|
|
},
|
|
["stealth_cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Shadow Dance, Vanish, Shadowmeld",
|
|
["criteria"] = "variable.shd_cp & variable.maintenance & cooldown.secret_technique.remains <= 24 & ( buff.symbols_of_death.remains >= 6 || buff.shadow_blades.remains >= 6 ) || boss & fight_remains <= 10",
|
|
["action"] = "shadow_dance",
|
|
},
|
|
{
|
|
["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",
|
|
},
|
|
},
|
|
["fill"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "This list usually contains Cooldowns with neglectable impact that causes global cooldowns",
|
|
["criteria"] = "energy.deficit >= 15 + energy.regen",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["action"] = "arcane_pulse",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bag_of_tricks",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250406,
|
|
["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_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.is.treacherous_transmitter' to 'trinket.t1.is.treacherous_transmitter' (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_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.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'.\n\nThe import for 'finish' required some automated changes.\nLine 5: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\nLine 7: Converted 'talent.deathstalkers_mark' to 'talent.deathstalkers_mark.enabled' (1x).\nLine 7: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\n\nThe import for 'cds' required some automated changes.\nLine 1: Converted 'talent.flagellation' to 'talent.flagellation.enabled' (1x).\nLine 3: Converted 'talent.flagellation' to 'talent.flagellation.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 3: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\nLine 3: Converted 'talent.premeditation' to 'talent.premeditation.enabled' (1x).\nLine 4: Converted 'talent.deathstalkers_mark' to 'talent.deathstalkers_mark.enabled' (1x).\nLine 4: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\nLine 6: Converted 'talent.deathstalkers_mark' to 'talent.deathstalkers_mark.enabled' (1x).\nLine 6: Converted 'talent.the_rotten' to 'talent.the_rotten.enabled' (1x).\nLine 7: Converted 'talent.deathstalkers_mark' to 'talent.deathstalkers_mark.enabled' (1x).\nLine 8: Converted 'talent.unseen_blade' to 'talent.unseen_blade.enabled' (1x).\n\nImported 7 action lists.\n",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/rogue_subtlety.simc\n## Up to date with SimC: April 5 2025 - ed7963f\n\nactions.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_use_buff&(!trinket.2.has_use_buff||trinket.1.is.treacherous_transmitter||trinket.1.cooldown.duration>=trinket.2.cooldown.duration)\nactions.precombat+=/variable,name=trinket_sync_slot,value=2,if=trinket.2.has_use_buff&(!trinket.1.has_use_buff||trinket.2.cooldown.duration>trinket.1.cooldown.duration)\nactions.precombat+=/stealth\n\n\nactions+=/stealth\nactions+=/kick\nactions+=/variable,name=stealth,value=buff.shadow_dance.up||buff.stealth.up||buff.vanish.up\n## [Syrif] -Replaced below variable with active_enemies\n## actions+=/variable,name=targets,value=spell_targets.shuriken_storm\nactions+=/variable,name=skip_rupture,value=buff.shadow_dance.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||active_enemies<=2)\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.shadow_blades.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&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&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+=/backstab,if=buff.shadow_dance.up&!used_for_danse||!variable.stealth&buff.shadow_blades.up\nactions.build+=/gloomblade,if=buff.shadow_dance.up&!used_for_danse||!variable.stealth&buff.shadow_blades.up\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_tornado,if=buff.lingering_darkness.up||talent.deathstalkers_mark&cooldown.shadow_blades.remains>=32&active_enemies>=3||talent.unseen_blade&(!variable.stealth||active_enemies>=3)&(buff.symbols_of_death.up||!raid_event.adds.up)\nactions.build+=/shuriken_storm,if=buff.clear_the_witnesses.up&(active_enemies>=2||!buff.symbols_of_death.up)\nactions.build+=/shadowstrike,cycle_targets=1,if=talent.deathstalkers_mark&!debuff.deathstalkers_mark.up&active_enemies>=3&(buff.shadow_blades.up||buff.premeditation.up||talent.the_rotten)\nactions.build+=/shuriken_storm,if=talent.deathstalkers_mark&active_enemies>=(2+3*buff.shadow_dance.up)\nactions.build+=/shuriken_storm,if=talent.unseen_blade&(buff.flawless_form.up&active_enemies>=3&!variable.stealth||buff.the_rotten.stack=1&active_enemies>=6&buff.shadow_dance.up)\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&(!talent.flagellation||buff.flagellation_persist.up)\nactions.cds+=/potion,if=buff.bloodlust.up||boss&fight_remains<30||buff.flagellation_buff.up\n## [Syrif] - Workaround to stop symbols wasteful spam in dungeons\nactions.cds+=/symbols_of_death,if=(buff.symbols_of_death.remains<=3&variable.maintenance&(active_enemies>=3||!buff.flagellation_buff.up||dot.rupture.remains>=30)&(!talent.flagellation||cooldown.flagellation.remains>=30-15*!talent.death_perception&cooldown.secret_technique.remains<8||!talent.death_perception)||boss&fight_remains<=15&(raid||buff.symbols_of_death.down))\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&cooldown.shadow_blades.remains<=3||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\n# [Syrif] - This variable prevents rupture spam when CDs are toggled off, or otherwise desynced due to dungeon gameplay environment \nactions.finish+=/variable,name=cooldowns_soon,op=setif,condition=!toggle.cooldowns,value=false,value_else=cooldown.shadow_blades.remains<=13&cooldown.flagellation.remains<10&(dot.rupture.remains<(cooldown.shadow_blades.remains+buff.shadow_blades.duration))\nactions.finish+=/secret_technique,if=variable.secret\n# Maintenance Finisher\nactions.finish+=/rupture,if=!variable.skip_rupture&(!dot.rupture.ticking||refreshable||buff.flagellation_buff.up&!buff.symbols_of_death.up&active_enemies<=2)&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# [Syrif] Uses Hekili-specific variable as a workaround\nactions.finish+=/rupture,if=talent.unseen_blade&variable.cooldowns_soon&active_enemies>=3&dot.rupture.remains<fight_remains\n# Direct Damage Finisher\nactions.finish+=/coup_de_grace,if=debuff.fazed.up&cooldown.flagellation.remains>=20||fight_remains<=10\nactions.finish+=/black_powder,if=!variable.priority_rotation&variable.maintenance&(((active_enemies>=2&talent.deathstalkers_mark&(!buff.darkest_night.up||buff.shadow_dance.up&active_enemies>=5))||talent.unseen_blade&fw_targets>=5)||action.coup_de_grace.ready&active_enemies>=3)\nactions.finish+=/eviscerate,if=cooldown.flagellation.remains>=10||active_enemies>=3\n\n# Shadow Dance, Vanish, Shadowmeld\nactions.stealth_cds+=/shadow_dance,if=variable.shd_cp&variable.maintenance&(cooldown.secret_technique.remains<=24||talent.the_first_dance&buff.shadow_blades.up)&(buff.symbols_of_death.remains>=6||buff.shadow_blades.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",
|
|
["author"] = "SimC",
|
|
},
|
|
["Outlaw"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/rogue_outlaw.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250425,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-04-25: SimC Update\n2025-04-12: SimC Update\n2025-04-06: SimC Update - No more Coup de Grace Bug\n2025-03-23: SimC Update\n2025-03-15: SimC update\n2025-01-02: Apply missed SimC updates (thanks IIeTpoc).\n2024-10-23: 11.0.5\n2024-09-08, 09-10, 09-15: SimC update\n2024-09-03: Poisons\n2024-08-25, 09-01: SimC rtb_reroll tweak\n2024-08-22: Respect LD Opener setting\n2024-08-15: Major revisions from SimC\n2024-08-09: Update finisher conditions from SimC\n2024-08-06: Respect Vanish CD when considering BtE with Crackshot\n2024-07-28: The War Within",
|
|
["lists"] = {
|
|
["finish"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
["description"] = "Finishers",
|
|
},
|
|
{
|
|
["action"] = "killing_spree",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "coup_de_grace",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.ruthless_precision.up || buff.between_the_eyes.remains < 4 || ! talent.mean_streak.enabled ) & ( ! buff.greenskins_wickers.up || ! talent.greenskins_wickers.enabled )",
|
|
["action"] = "between_the_eyes",
|
|
["description"] = "Use Between the Eyes outside of Stealth to maintain the buff, or with Ruthless Precision active, or to proc Greenskins Wickers if not active. Trickster builds can also send BtE on cooldown.",
|
|
},
|
|
{
|
|
["action"] = "cold_blood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "dispatch",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["vanish_usage_off_meta"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["action"] = "vanish",
|
|
["description"] = "Flex Vanish usage for builds lacking one of the mandatory stealth talents. APL support for these builds is considered limited.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.underhanded_upper_hand.enabled & talent.crackshot.enabled & variable.finish_condition",
|
|
["action"] = "vanish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "vanish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["action"] = "vanish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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",
|
|
["action"] = "vanish",
|
|
},
|
|
},
|
|
["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"] = "( 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,
|
|
["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 & talent.keep_it_rolling.enabled & talent.loaded_dice.enabled & buff.adrenaline_rush.down",
|
|
["description"] = "Builds with Keep it Rolling+Loaded Dice 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.adrenaline_rush.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",
|
|
["description"] = "Stealth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
["description"] = "Ensure Crackshot BtE is not skipped because of low energy.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.finish_condition & talent.crackshot.enabled & ( ! buff.shadowmeld.up || stealthed.rogue )",
|
|
["action"] = "between_the_eyes",
|
|
["description"] = "High priority Between the Eyes for Crackshot, except not directly out of Shadowmeld.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.finish_condition",
|
|
["action"] = "dispatch",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.crackshot.enabled & talent.fan_the_hammer.rank >= 2 & buff.opportunity.stack >= 6 & ( buff.broadside.up & combo_points <= 1 || buff.greenskins_wickers.up )",
|
|
["action"] = "pistol_shot",
|
|
["description"] = "2 Fan the Hammer Crackshot builds can consume Opportunity in stealth with max stacks, Broadside, and 1 CP, or with Greenskins active.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hidden_opportunity.enabled",
|
|
["action"] = "ambush",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.adrenaline_rush.up & ( ! variable.finish_condition || ! talent.improved_adrenaline_rush.enabled )",
|
|
["action"] = "adrenaline_rush",
|
|
["description"] = "Cooldowns Maintain Adrenaline Rush if it is not active. Use at low CPs with Improved AR.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.adrenaline_rush.up & talent.improved_adrenaline_rush.enabled & combo_points <= 2",
|
|
["action"] = "adrenaline_rush",
|
|
["description"] = "If using Improved AR, recast AR if it is already active at low CPs.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points < cp_max_spend || talent.fan_the_hammer.rank > 1",
|
|
["action"] = "ghostly_strike",
|
|
["description"] = "High priority Ghostly Strike as it is off-gcd. 1 FTH builds prefer to not use it at max CPs.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( trinket.t1.is.scroll_of_momentum || trinket.t2.is.scroll_of_momentum ) & buff.full_momentum.up",
|
|
["action"] = "sprint",
|
|
["description"] = "Sprint to further benefit from Scroll of Momentum trinket.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets >= 2 & buff.blade_flurry.remains < gcd.max",
|
|
["action"] = "blade_flurry",
|
|
["description"] = "Maintain Blade Flurry on 2+ targets.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rtb_buffs_normal >= 5 & rtb_buffs = 6",
|
|
["action"] = "keep_it_rolling",
|
|
["description"] = "With a natural 5 buff roll, use Keep it Rolling when you obtain the remaining buff from Count the Odds.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rtb_buffs >= 4 & rtb_buffs_normal <= 2",
|
|
["action"] = "keep_it_rolling",
|
|
["description"] = "Without a natural 5 buff roll, use Keep it Rolling at any 4+ buffs.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rtb_buffs >= 3 & rtb_buffs_normal <= 2 & buff.broadside.up & buff.ruthless_precision.up & buff.true_bearing.up",
|
|
["action"] = "keep_it_rolling",
|
|
["description"] = "Without a natural 5 buff roll, use Keep it Rolling at 3 buffs if you have the combination of Ruthless Precision + Broadside + True Bearing.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( buff.broadside.remains > 39 ) + ( buff.ruthless_precision.remains > 39 ) + ( buff.true_bearing.remains > 39 ) + ( buff.grand_melee.remains > 39 ) + ( buff.buried_treasure.remains > 39 ) + ( buff.skull_and_crossbones.remains > 39 )",
|
|
["description"] = "Variable that counts how many buffs are ahead of RtB's pandemic range, which is only possible by using KIR.",
|
|
["var_name"] = "buffs_above_pandemic",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rtb_buffs = 0",
|
|
["action"] = "roll_the_bones",
|
|
["description"] = "Maintain Roll the Bones: cast without any buffs.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "set_bonus.tww2_4pc & rtb_buffs_will_lose <= 1 & ( variable.buffs_above_pandemic < 5 || rtb_buffs_max_remains < 42 )",
|
|
["action"] = "roll_the_bones",
|
|
["description"] = "With TWW2 set, recast Roll the Bones if we will roll away between 0-1 buffs. If KIR was recently used on a natural 5 buff, then wait until all buffs are below around 41s remaining.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "set_bonus.tww2_4pc & ( rtb_buffs <= 2 || ( rtb_buffs_max_remains < 11 || ! talent.keep_it_rolling.enabled ) & rtb_buffs_will_lose < 5 & talent.supercharger.enabled )",
|
|
["action"] = "roll_the_bones",
|
|
["description"] = "With TWW2 set, recast Roll the Bones with at most 2 buffs active regardless of duration. Supercharger builds will also roll if we will lose between 0-4 buffs, but KIR Supercharger builds wait until they are all below 11s remaining.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! set_bonus.tww2_4pc & ( rtb_buffs_will_lose <= buff.loaded_dice.up || talent.supercharger.enabled & buff.loaded_dice.up & rtb_buffs <= 2 || talent.hidden_opportunity.enabled & buff.loaded_dice.up & rtb_buffs <= 2 & ! buff.broadside.up & ! buff.ruthless_precision.up & ! buff.true_bearing.up )",
|
|
["action"] = "roll_the_bones",
|
|
["description"] = "Without TWW2 set or Sleight of Hand, recast Roll the Bones to override 1 buff into 2 buffs with Loaded Dice, or reroll any 2 buffs with Loaded Dice+Supercharger. Hidden Opportunity builds can also reroll 2 buffs with Loaded Dice to try for BS/RP/TB.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["description"] = "Trinkets that should not be used during stealth and have higher priority than entering stealth.",
|
|
["criteria"] = "! stealthed.all || boss & fight_remains <= 22",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "mad_queens_mandate",
|
|
["action"] = "mad_queens_mandate",
|
|
["criteria"] = "! stealthed.all || boss & fight_remains <= 5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.underhanded_upper_hand.enabled & talent.subterfuge.enabled & buff.adrenaline_rush.up & ! stealthed.all & buff.adrenaline_rush.remains < 2 & cooldown.adrenaline_rush.remains > 30",
|
|
["action"] = "vanish",
|
|
["description"] = "If necessary, standard builds prioritize using Vanish at any CP to prevent Adrenaline Rush downtime.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["description"] = "If not at risk of losing Adrenaline Rush, run finishers to use Killing Spree or Coup de Grace as a higher priority than Vanish.",
|
|
["criteria"] = "! stealthed.all & ( cooldown.killing_spree.ready & talent.killing_spree.enabled || buff.escalating_blade.stack >= 4 ) & variable.finish_condition",
|
|
["list_name"] = "finish",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "If not at risk of losing Adrenaline Rush, call flexible Vanish rules to be used at finisher CPs.",
|
|
["criteria"] = "! stealthed.all & talent.crackshot.enabled & talent.underhanded_upper_hand.enabled & talent.subterfuge.enabled & buff.adrenaline_rush.up & variable.finish_condition",
|
|
["list_name"] = "vanish_usage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! stealthed.all & ( ! talent.underhanded_upper_hand.enabled || ! talent.crackshot.enabled || ! talent.subterfuge.enabled )",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "vanish_usage_off_meta",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.finish_condition & ! cooldown.vanish.ready & ! stealthed.all",
|
|
["action"] = "shadowmeld",
|
|
["description"] = "Generic catch-all for Shadowmeld. Technically, usage in DungeonSlice or DungeonRoute sims could mirror Vanish usage on packs.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy.base_time_to_max > 4 & ! stealthed.all",
|
|
["action"] = "blade_rush",
|
|
["description"] = "Use Blade Rush at minimal energy outside of stealth.",
|
|
},
|
|
{
|
|
["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,
|
|
["name"] = "junkmaestros_mega_magnet",
|
|
["description"] = "Let the magnet trinket stack up just so it does not disrupt a 2nd on-use trinket.",
|
|
["criteria"] = "buff.between_the_eyes.up & buff.junkmaestros_mega_magnet.stack > 25 || boss & fight_remains < 5",
|
|
["action"] = "junkmaestros_mega_magnet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.between_the_eyes.up || trinket.t1.has_stat.any_dps || boss & fight_remains <= 20",
|
|
["description"] = "Default conditions for usable items.",
|
|
["slots"] = "trinket1",
|
|
["action"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["slots"] = "trinket2",
|
|
["action"] = "trinket2",
|
|
["criteria"] = "buff.between_the_eyes.up || trinket.t2.has_stat.any_dps || boss & fight_remains <= 20",
|
|
},
|
|
},
|
|
["vanish_usage"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.killing_spree.enabled & ! cooldown.between_the_eyes.ready & buff.ruthless_precision.remains > 4 & ( cooldown.keep_it_rolling.remains > 150 & rtb_buffs_normal > 0 || ! talent.keep_it_rolling.enabled )",
|
|
["action"] = "vanish",
|
|
["description"] = "Flex Vanish usage for standard builds. Without Killing Spree, attempt to hold Vanish for when BtE is on cooldown and Ruthless Precision is active. Also with Keep it Rolling, hold Vanish if we haven't done the first roll after KIR yet.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.killing_spree.enabled & supercharge_1",
|
|
["action"] = "vanish",
|
|
["description"] = "Supercharger builds that do not use Killing Spree should also Vanish if Supercharger becomes active.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.killing_spree.remains > 30",
|
|
["action"] = "vanish",
|
|
["description"] = "Builds with Killing Spree can freely Vanish if KS is not up soon.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.vanish.full_recharge_time < 15 || boss & fight_remains < 8",
|
|
["action"] = "vanish",
|
|
["description"] = "Vanish if about to cap on charges or sim duration is ending.",
|
|
},
|
|
},
|
|
["build"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.blade_flurry.ready & talent.deft_maneuvers.enabled & spell_targets >= 5 & ( combo_points <= 2 - buff.broadside.up || ! buff.adrenaline_rush.up )",
|
|
["description"] = "Builders With Deft Maneuvers, build CPs with Blade Flurry at 5+ targets, only at 2 CPs or lower (1 CP with Broadside) unless AR isn't active.",
|
|
["var_name"] = "deft_condition",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hidden_opportunity.enabled & buff.audacity.up",
|
|
["action"] = "ambush",
|
|
["description"] = "High priority Ambush for Hidden Opportunity builds.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.disorienting_strikes.up & ! stealthed.all & ( buff.escalating_blade.stack > 2 & buff.opportunity.stack < buff.opportunity.max_stack || ! talent.hidden_opportunity.enabled ) & buff.escalating_blade.stack < 4",
|
|
["action"] = "sinister_strike",
|
|
["description"] = "Trickster builds should prioritize Sinister Strike during Disorienting Strikes. HO builds prefer to do this only at 3 Escalating Blade stacks and not at max Opportunity stacks.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fan_the_hammer.enabled & talent.audacity.enabled & talent.hidden_opportunity.enabled & buff.opportunity.up & ! buff.audacity.up",
|
|
["action"] = "pistol_shot",
|
|
["description"] = "With Audacity + Hidden Opportunity + Fan the Hammer, consume Opportunity to proc Audacity any time Ambush is not available.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.deft_condition & ( talent.fan_the_hammer.rank = 1 || ! talent.nimble_flurry.enabled & ! talent.surprising_strikes.enabled )",
|
|
["action"] = "blade_flurry",
|
|
["description"] = "With Fatebound or 1 rank in Fan the Hammer, and without Hidden Opportunity, build CP with Blade Flurry as a higher priority than Opportunity procs.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.fan_the_hammer.rank = 2 & buff.opportunity.up & ( buff.opportunity.stack >= buff.opportunity.max_stack || buff.opportunity.remains < 2 )",
|
|
["action"] = "pistol_shot",
|
|
["description"] = "With 2 ranks in Fan the Hammer, consume Opportunity as if at max stacks or if it will expire.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["action"] = "pistol_shot",
|
|
["description"] = "With Fan the Hammer, consume Opportunity if it will not overcap CPs, or with 1 CP at minimum.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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 )",
|
|
["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.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.deft_condition",
|
|
["action"] = "blade_flurry",
|
|
["description"] = "With Hidden Opportunity or 2 ranks in Fan the Hammer, building CPs with Blade Flurry is lower priority than Opportunity procs and Ambush.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! stealthed.all",
|
|
["action"] = "coup_de_grace",
|
|
["description"] = "Use Coup de Grace at low CP if Sinister Strike would otherwise be used.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
["description"] = "Fallback pooling just so Sinister Strike is never casted if Ambush is available for Hidden Opportunity builds.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.hidden_opportunity.enabled",
|
|
["action"] = "ambush",
|
|
},
|
|
{
|
|
["action"] = "sinister_strike",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250425,
|
|
["warnings"] = "The import for 'vanish_usage' required some automated changes.\nLine 2: Converted 'buff.supercharge_1.up' to 'supercharge_1' (1x).\nThe following auras were used in the action list but were not found in the addon database:\n - supercharge_1\n\nThe import for 'cds' required some automated changes.\nLine 4: Converted 'trinket.1.is.scroll_of_momentum' to 'trinket.t1.is.scroll_of_momentum' (1x).\nLine 4: Converted 'trinket.2.is.scroll_of_momentum' to 'trinket.t2.is.scroll_of_momentum' (1x).\nLine 28: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 29: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\n\nImported 8 action lists.\n",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/rogue_outlaw.simc\n## Up to date with SimC: April 16 2025 - b23bf5e\n\nactions.precombat+=/apply_poison\nactions.precombat+=/use_item,name=imperfect_ascendancy_serum\nactions.precombat+=/stealth,precombat_seconds=2\n# Builds with Keep it Rolling+Loaded Dice 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&talent.keep_it_rolling&talent.loaded_dice&buff.adrenaline_rush.down\nactions.precombat+=/roll_the_bones,precombat_seconds=2,if=buff.adrenaline_rush.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\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))\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 With Deft Maneuvers, build CPs with Blade Flurry at 5+ targets, only at 2 CPs or lower (1 CP with Broadside) unless AR isn't active.\nactions.build+=/variable,name=deft_condition,value=cooldown.blade_flurry.ready&talent.deft_maneuvers&spell_targets>=5&(combo_points<=2-buff.broadside.up||!buff.adrenaline_rush.up)\n# High priority Ambush for Hidden Opportunity builds.\nactions.build+=/ambush,if=talent.hidden_opportunity&buff.audacity.up\n# Trickster builds should prioritize Sinister Strike during Disorienting Strikes. HO builds prefer to do this only at 3 Escalating Blade stacks and not at max Opportunity stacks.\nactions.build+=/sinister_strike,if=buff.disorienting_strikes.up&!stealthed.all&(buff.escalating_blade.stack>2&buff.opportunity.stack<buff.opportunity.max_stack||!talent.hidden_opportunity)&buff.escalating_blade.stack<4\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 Fatebound or 1 rank in Fan the Hammer, and without Hidden Opportunity, build CP with Blade Flurry as a higher priority than Opportunity procs.\nactions.build+=/blade_flurry,if=variable.deft_condition&(talent.fan_the_hammer.rank=1||!talent.nimble_flurry&!talent.surprising_strikes)\n# With 2 ranks in Fan the Hammer, consume Opportunity as if at max stacks or if it will expire.\nactions.build+=/pistol_shot,if=talent.fan_the_hammer.rank=2&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# With Hidden Opportunity or 2 ranks in Fan the Hammer, building CPs with Blade Flurry is lower priority than Opportunity procs and Ambush.\nactions.build+=/blade_flurry,if=variable.deft_condition\n# Use Coup de Grace at low CP if Sinister Strike would otherwise be used.\nactions.build+=/coup_de_grace,if=!stealthed.all\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 Maintain Adrenaline Rush if it is not active. Use at low CPs with Improved AR.\nactions.cds+=/adrenaline_rush,if=!buff.adrenaline_rush.up&(!variable.finish_condition||!talent.improved_adrenaline_rush)\n# If using Improved AR, recast AR if it is already active at low CPs.\nactions.cds+=/adrenaline_rush,if=buff.adrenaline_rush.up&talent.improved_adrenaline_rush&combo_points<=2\n# High priority Ghostly Strike as it is off-gcd. 1 FTH builds prefer to not use it at max CPs.\nactions.cds+=/ghostly_strike,if=combo_points<cp_max_spend||talent.fan_the_hammer.rank>1\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 a natural 5 buff roll, use Keep it Rolling when you obtain the remaining buff from Count the Odds.\nactions.cds+=/keep_it_rolling,if=rtb_buffs.normal>=5&rtb_buffs=6\n# Without a natural 5 buff roll, use Keep it Rolling at any 4+ buffs.\nactions.cds+=/keep_it_rolling,if=rtb_buffs>=4&rtb_buffs.normal<=2\n# Without a natural 5 buff roll, use Keep it Rolling at 3 buffs if you have the combination of Ruthless Precision + Broadside + True Bearing.\nactions.cds+=/keep_it_rolling,if=rtb_buffs>=3&rtb_buffs.normal<=2&buff.broadside.up&buff.ruthless_precision.up&buff.true_bearing.up\n# Variable that counts how many buffs are ahead of RtB's pandemic range, which is only possible by using KIR.\nactions.cds+=/variable,name=buffs_above_pandemic,value=(buff.broadside.remains>39)+(buff.ruthless_precision.remains>39)+(buff.true_bearing.remains>39)+(buff.grand_melee.remains>39)+(buff.buried_treasure.remains>39)+(buff.skull_and_crossbones.remains>39)\n# Maintain Roll the Bones: cast without any buffs.\nactions.cds+=/roll_the_bones,if=rtb_buffs=0\n# With TWW2 set, recast Roll the Bones if we will roll away between 0-1 buffs. If KIR was recently used on a natural 5 buff, then wait until all buffs are below around 41s remaining.\nactions.cds+=/roll_the_bones,if=set_bonus.tww2_4pc&rtb_buffs.will_lose<=1&(variable.buffs_above_pandemic<5||rtb_buffs.max_remains<42)\n# With TWW2 set, recast Roll the Bones with at most 2 buffs active regardless of duration. Supercharger builds will also roll if we will lose between 0-4 buffs, but KIR Supercharger builds wait until they are all below 11s remaining.\nactions.cds+=/roll_the_bones,if=set_bonus.tww2_4pc&(rtb_buffs<=2||(rtb_buffs.max_remains<11||!talent.keep_it_rolling)&rtb_buffs.will_lose<5&talent.supercharger)\n# Without TWW2 set or Sleight of Hand, recast Roll the Bones to override 1 buff into 2 buffs with Loaded Dice, or reroll any 2 buffs with Loaded Dice+Supercharger. Hidden Opportunity builds can also reroll 2 buffs with Loaded Dice to try for BS/RP/TB.\nactions.cds+=/roll_the_bones,if=!set_bonus.tww2_4pc&(rtb_buffs.will_lose<=buff.loaded_dice.up||talent.supercharger&buff.loaded_dice.up&rtb_buffs<=2||talent.hidden_opportunity&buff.loaded_dice.up&rtb_buffs<=2&!buff.broadside.up&!buff.ruthless_precision.up&!buff.true_bearing.up)\n# Trinkets that should not be used during stealth and have higher priority than entering stealth.\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# If necessary, standard builds prioritize using Vanish at any CP to prevent Adrenaline Rush downtime.\nactions.cds+=/vanish,if=talent.underhanded_upper_hand&talent.subterfuge&buff.adrenaline_rush.up&!stealthed.all&buff.adrenaline_rush.remains<2&cooldown.adrenaline_rush.remains>30\n# If not at risk of losing Adrenaline Rush, run finishers to use Killing Spree or Coup de Grace as a higher priority than Vanish.\nactions.cds+=/run_action_list,name=finish,if=!stealthed.all&(cooldown.killing_spree.ready&talent.killing_spree||buff.escalating_blade.stack>=4)&variable.finish_condition\n# If not at risk of losing Adrenaline Rush, call flexible Vanish rules to be used at finisher CPs.\nactions.cds+=/call_action_list,name=vanish_usage,if=!stealthed.all&talent.crackshot&talent.underhanded_upper_hand&talent.subterfuge&buff.adrenaline_rush.up&variable.finish_condition\nactions.cds+=/call_action_list,name=vanish_usage_off_meta,if=!stealthed.all&(!talent.underhanded_upper_hand||!talent.crackshot||!talent.subterfuge)\n# Generic catch-all for Shadowmeld. Technically, usage in DungeonSlice or DungeonRoute sims could mirror Vanish usage on packs.\nactions.cds+=/shadowmeld,if=variable.finish_condition&!cooldown.vanish.ready&!stealthed.all\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\n# Let the magnet trinket stack up just so it does not disrupt a 2nd on-use trinket.\nactions.cds+=/use_item,name=junkmaestros_mega_magnet,if=buff.between_the_eyes.up&buff.junkmaestros_mega_magnet.stack>25||boss&fight_remains<5\n# Default conditions for usable items.\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\nactions.finish=pool_resource,for_next=1\nactions.finish+=/killing_spree\nactions.finish+=/coup_de_grace\n# Use Between the Eyes outside of Stealth to maintain the buff, or with Ruthless Precision active, or to proc Greenskins Wickers if not active. Trickster builds can also send BtE on cooldown.\nactions.finish+=/between_the_eyes,if=(buff.ruthless_precision.up||buff.between_the_eyes.remains<4||!talent.mean_streak)&(!buff.greenskins_wickers.up||!talent.greenskins_wickers)\nactions.finish+=/cold_blood\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 1 CP, 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# Flex Vanish usage for standard builds. Without Killing Spree, attempt to hold Vanish for when BtE is on cooldown and Ruthless Precision is active. Also with Keep it Rolling, hold Vanish if we haven't done the first roll after KIR yet.\nactions.vanish_usage+=/vanish,if=!talent.killing_spree&!cooldown.between_the_eyes.ready&buff.ruthless_precision.remains>4&(cooldown.keep_it_rolling.remains>150&rtb_buffs.normal>0||!talent.keep_it_rolling)\n# Supercharger builds that do not use Killing Spree should also Vanish if Supercharger becomes active.\nactions.vanish_usage+=/vanish,if=!talent.killing_spree&buff.supercharge_1.up\n# Builds with Killing Spree can freely Vanish if KS is not up soon.\nactions.vanish_usage+=/vanish,if=cooldown.killing_spree.remains>30\n# Vanish if about to cap on charges or sim duration is ending.\nactions.vanish_usage+=/vanish,if=cooldown.vanish.full_recharge_time<15||boss&fight_remains<8\n\n# Flex Vanish usage for builds lacking one of the mandatory stealth talents. APL support for these builds is considered limited.\nactions.vanish_usage_off_meta+=/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)\nactions.vanish_usage_off_meta+=/vanish,if=!talent.underhanded_upper_hand&talent.crackshot&variable.finish_condition\nactions.vanish_usage_off_meta+=/vanish,if=!talent.underhanded_upper_hand&!talent.crackshot&talent.hidden_opportunity&!buff.audacity.up&buff.opportunity.stack<buff.opportunity.max_stack&variable.ambush_condition\nactions.vanish_usage_off_meta+=/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)\nactions.vanish_usage_off_meta+=/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",
|
|
["basedOn"] = "Outlaw",
|
|
["spec"] = 260,
|
|
},
|
|
["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",
|
|
["lists"] = {
|
|
["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,
|
|
},
|
|
},
|
|
["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",
|
|
["criteria"] = "movement.distance > 6",
|
|
["moving"] = 1,
|
|
},
|
|
{
|
|
["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,
|
|
["action"] = "flame_shock",
|
|
["criteria"] = "active_enemies < 3 & refreshable",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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"] = "lava_burst",
|
|
},
|
|
{
|
|
["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,
|
|
},
|
|
},
|
|
["unleash"] = {
|
|
{
|
|
["action"] = "downpour",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "wellspring",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "riptide",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["author"] = "Hekili",
|
|
},
|
|
["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_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,
|
|
},
|
|
},
|
|
["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,
|
|
},
|
|
},
|
|
["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,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "power_word_fortitude",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["divine_favor_chastise_prep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "empyreal_exec_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "apotheosis_exec_time: Store how long Apotheosis will take to execute",
|
|
["value"] = "action.apotheosis.execute_time",
|
|
["var_name"] = "apotheosis_exec_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",
|
|
},
|
|
},
|
|
["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,
|
|
},
|
|
},
|
|
["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",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["Protection Paladin"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250425,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-04-25: Fix BoSP filter\n\n2025-04-05: SimC Sync\n\n2025-02-02: Ardent Defender updated\n\n2024-10-11, 10-21, 11-22, 11-25: Update from SimC\n\n2024-09-08: Restore mitigation action list\n\n2024-09-02, 09-04, 09-08: SimC update\n\n2024-08-11, 22: Update from SimC\n\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "rebuke",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "mitigation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "standard",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "devotion_aura",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "consecration",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["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",
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.lights_judgment >= 2 || ! raid_event.adds.exists || raid_event.adds.in > 75 || raid_event.adds.up",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["action"] = "avenging_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avenging_wrath.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.avenging_wrath.remains < 15 || ( time > 10 ) )",
|
|
["action"] = "moment_of_glory",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.shield_of_the_righteous >= 3",
|
|
["action"] = "divine_toll",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avenging_wrath.up || cooldown.avenging_wrath.remains <= 30",
|
|
["action"] = "bastion_of_light",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avenging_wrath.remains > 8",
|
|
["action"] = "fireblood",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tome_of_lights_devotion",
|
|
["criteria"] = "buff.inner_resilience.up",
|
|
["name"] = "tome_of_lights_devotion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "( variable.trinket_sync_slot = 1 & ( buff.avenging_wrath.up || fight_remains <= 40 ) || ( variable.trinket_sync_slot = 2 & ( ! trinket.t2.cooldown.ready || ! buff.avenging_wrath.up ) ) || ! variable.trinket_sync_slot )",
|
|
["slots"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "( variable.trinket_sync_slot = 2 & ( buff.avenging_wrath.up || fight_remains <= 40 ) || ( variable.trinket_sync_slot = 1 & ( ! trinket.t1.cooldown.ready || ! buff.avenging_wrath.up ) ) || ! variable.trinket_sync_slot )",
|
|
["slots"] = "trinket2",
|
|
},
|
|
},
|
|
["standard"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "judgment",
|
|
["criteria"] = "charges >= 2 || full_recharge_time <= gcd.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hammer_of_light_free.remains < 2 || buff.shake_the_heavens.remains < 1 || ! buff.shake_the_heavens.up || cooldown.eye_of_tyr.remains < 1.5 || fight_remains < 2",
|
|
["action"] = "hammer_of_light",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( hpg_to_2dawn = 5 || ! talent.of_dusk_and_dawn.enabled ) & talent.lights_guidance.enabled",
|
|
["action"] = "eye_of_tyr",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( hpg_to_2dawn = 1 || buff.blessing_of_dawn.stack > 0 ) & talent.lights_guidance.enabled",
|
|
["action"] = "eye_of_tyr",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.righteous_protector.enabled || cooldown.righteous_protector_icd.remains = 0 ) & ! buff.hammer_of_light_ready.up",
|
|
["action"] = "shield_of_the_righteous",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shield_of_the_righteous",
|
|
["description"] = "during luck of the draw(TWW2 4P)spam sotr as much as possible without wasting icd where possible",
|
|
["criteria"] = "! buff.hammer_of_light_ready.up & ( buff.luck_of_the_draw.up & ( ( holy_power + judgment_holy_power >= 5 ) || ( ! talent.righteous_protector.enabled || cooldown.righteous_protector_icd.remains = 0 ) ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shield_of_the_righteous",
|
|
["description"] = "outside of luck of the draw, pool holy power as much as possible to be able to enter luck of the draw windows with more holy power",
|
|
["criteria"] = "! buff.hammer_of_light_ready.up & set_bonus.thewarwithin_season_2_4pc & ( ( holy_power + judgment_holy_power > 5 ) || ( holy_power + judgment_holy_power >= 5 & cooldown.righteous_protector_icd.remains = 0 ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! set_bonus.thewarwithin_season_2_4pc & ( ! talent.righteous_protector.enabled || cooldown.righteous_protector_icd.remains = 0 ) & ! buff.hammer_of_light_ready.up",
|
|
["action"] = "shield_of_the_righteous",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["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,
|
|
["criteria"] = "buff.divine_guidance.stack = 5",
|
|
["action"] = "consecration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_armament = sacred_weapon & ( ! buff.sacred_weapon.up || ( buff.sacred_weapon.remains < 6 & ! buff.avenging_wrath.up & cooldown.avenging_wrath.remains <= 30 ) )",
|
|
["action"] = "holy_armaments",
|
|
},
|
|
{
|
|
["action"] = "hammer_of_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "divine_toll",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.refining_fire.enabled",
|
|
["action"] = "avengers_shield",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "judgment",
|
|
["criteria"] = "buff.avenging_wrath.up & talent.hammer_and_anvil.enabled",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_armament = holy_bulwark & charges = 2",
|
|
["action"] = "holy_armaments",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "judgment",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.shake_the_heavens.up & talent.shake_the_heavens.enabled",
|
|
["action"] = "avengers_shield",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 3 ) || buff.shake_the_heavens.up",
|
|
["action"] = "hammer_of_the_righteous",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 3 ) || buff.shake_the_heavens.up",
|
|
["action"] = "blessed_hammer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 2 ) || buff.shake_the_heavens.up",
|
|
["action"] = "crusader_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.lights_guidance.enabled",
|
|
["action"] = "avengers_shield",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! consecration.up",
|
|
["action"] = "consecration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.inmost_light.enabled & raid_event.adds.in >= 45 || spell_targets.shield_of_the_righteous >= 3 ) & ! talent.lights_deliverance.enabled",
|
|
["action"] = "eye_of_tyr",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_armament = holy_bulwark",
|
|
["action"] = "holy_armaments",
|
|
},
|
|
{
|
|
["action"] = "blessed_hammer",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "hammer_of_the_righteous",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "crusader_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.shining_light_free.up & ( talent.blessed_assurance.enabled || ( talent.lights_guidance.enabled & cooldown.hammerfall_icd.remains = 0 ) )",
|
|
["action"] = "word_of_glory",
|
|
},
|
|
{
|
|
["action"] = "avengers_shield",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.lights_deliverance.enabled",
|
|
["action"] = "eye_of_tyr",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.shining_light_free.up",
|
|
["action"] = "word_of_glory",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "holy_power < 5",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["action"] = "consecration",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["mitigation"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & buff.shield_of_the_righteous.down & ( holy_power.deficit = 0 || buff.divine_purpose.up )",
|
|
["action"] = "shield_of_the_righteous",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blessing_of_spellwarding",
|
|
["description"] = "[Hekili] Recommend BoSP if the filter is enabled in spec options. Custom priorities can use BoSP with or without this feature.",
|
|
["criteria"] = "settings.bosp_filter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "health.pct < wog_health & ( holy_power.deficit = 0 || buff.divine_purpose.up || buff.shining_light_free.up )",
|
|
["action"] = "word_of_glory",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.final_stand.enabled & tanking & incoming_damage_5s > ds_damage & ! ( buff.ardent_defender.up || buff.guardian_of_ancient_kings.up || buff.divine_shield.up || buff.potion.up )",
|
|
["action"] = "divine_shield",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & incoming_damage_5s > goak_damage & ! ( buff.ardent_defender.up || buff.guardian_of_ancient_kings.up || buff.divine_shield.up || buff.potion.up )",
|
|
["action"] = "guardian_of_ancient_kings",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "defensive_sentinel & tanking & incoming_damage_5s > goak_damage & ! ( buff.ardent_defender.up || buff.guardian_of_ancient_kings.up || buff.divine_shield.up || buff.potion.up )",
|
|
["action"] = "sentinel",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & incoming_damage_5s > ad_damage & ! ( buff.ardent_defender.up || buff.guardian_of_ancient_kings.up || buff.divine_shield.up || buff.potion.up )",
|
|
["action"] = "ardent_defender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "health.pct < loh_health",
|
|
["action"] = "lay_on_hands",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250425,
|
|
["warnings"] = "The import for 'precombat' required some automated changes.\nLine 5: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 5: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 5: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 6: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 6: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 6: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 2: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 2: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 3: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 3: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\n\nImported 6 action lists.\n",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/paladin_protection.simc\n## Up to date with SimC: March 13 2025 - a8d374d\n\n## actions.precombat+=/rite_of_sanctification\n## actions.precombat+=/rite_of_adjuration\nactions.precombat+=/devotion_aura\nactions.precombat+=/lights_judgment\nactions.precombat+=/arcane_torrent\nactions.precombat+=/consecration\nactions.precombat+=/variable,name=trinket_sync_slot,value=1,if=trinket.1.has_cooldown&trinket.1.has_stat.any_dps&(!trinket.2.has_stat.any_dps||trinket.1.cooldown.duration>=trinket.2.cooldown.duration)||!trinket.2.has_cooldown\nactions.precombat+=/variable,name=trinket_sync_slot,value=2,if=trinket.2.has_cooldown&trinket.2.has_stat.any_dps&(!trinket.1.has_stat.any_dps||trinket.2.cooldown.duration>trinket.1.cooldown.duration)||!trinket.1.has_cooldown\n\nactions+=/rebuke\nactions+=/call_action_list,name=mitigation\nactions+=/call_action_list,name=cooldowns\nactions+=/call_action_list,name=trinkets\nactions+=/call_action_list,name=standard\n\nactions.cooldowns+=/lights_judgment,if=spell_targets.lights_judgment>=2||!raid_event.adds.exists||raid_event.adds.in>75||raid_event.adds.up\nactions.cooldowns+=/avenging_wrath\nactions.cooldowns+=/potion,if=buff.avenging_wrath.up\nactions.cooldowns+=/moment_of_glory,if=(buff.avenging_wrath.remains<15||(time>10))\nactions.cooldowns+=/divine_toll,if=spell_targets.shield_of_the_righteous>=3\nactions.cooldowns+=/bastion_of_light,if=buff.avenging_wrath.up||cooldown.avenging_wrath.remains<=30\n## actions.cooldowns+=/invoke_external_buff,name=power_infusion,if=buff.avenging_wrath.up\nactions.cooldowns+=/fireblood,if=buff.avenging_wrath.remains>8\n\nactions.mitigation+=/shield_of_the_righteous,if=tanking&buff.shield_of_the_righteous.down&(holy_power.deficit=0||buff.divine_purpose.up)\n# [Hekili] Recommend BoSP if the filter is enabled in spec options. Custom priorities can use BoSP with or without this feature.\nactions.mitigation+=/blessing_of_spellwarding,if=settings.bosp_filter\nactions.mitigation+=/word_of_glory,if=health.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>ad_damage&!(buff.ardent_defender.up||buff.guardian_of_ancient_kings.up||buff.divine_shield.up||buff.potion.up)\nactions.mitigation+=/lay_on_hands,if=health.pct<loh_health\n\nactions.standard+=/judgment,cycle_targets=1,if=charges>=2||full_recharge_time<=gcd.max\nactions.standard+=/hammer_of_light,if=buff.hammer_of_light_free.remains<2||buff.shake_the_heavens.remains<1||!buff.shake_the_heavens.up||cooldown.eye_of_tyr.remains<1.5||fight_remains<2\nactions.standard+=/eye_of_tyr,if=(hpg_to_2dawn=5||!talent.of_dusk_and_dawn.enabled)&talent.lights_guidance.enabled\nactions.standard+=/eye_of_tyr,if=(hpg_to_2dawn=1||buff.blessing_of_dawn.stack>0)&talent.lights_guidance.enabled\nactions.standard+=/shield_of_the_righteous,if=(!talent.righteous_protector.enabled||cooldown.righteous_protector_icd.remains=0)&!buff.hammer_of_light_ready.up\n# during luck of the draw(TWW2 4P)spam sotr as much as possible without wasting icd where possible\nactions.standard+=/shield_of_the_righteous,if=!buff.hammer_of_light_ready.up&(buff.luck_of_the_draw.up&((holy_power+judgment_holy_power>=5)||(!talent.righteous_protector.enabled||cooldown.righteous_protector_icd.remains=0)))\n# outside of luck of the draw, pool holy power as much as possible to be able to enter luck of the draw windows with more holy power\nactions.standard+=/shield_of_the_righteous,if=!buff.hammer_of_light_ready.up&set_bonus.thewarwithin_season_2_4pc&((holy_power+judgment_holy_power>5)||(holy_power+judgment_holy_power>=5&cooldown.righteous_protector_icd.remains=0))\nactions.standard+=/shield_of_the_righteous,if=!set_bonus.thewarwithin_season_2_4pc&(!talent.righteous_protector.enabled||cooldown.righteous_protector_icd.remains=0)&!buff.hammer_of_light_ready.up\nactions.standard+=/judgment,cycle_targets=1,if=spell_targets.shield_of_the_righteous>3&buff.bulwark_of_righteous_fury.stack>=3&holy_power<3\nactions.standard+=/avengers_shield,if=!buff.bulwark_of_righteous_fury.up&talent.bulwark_of_righteous_fury.enabled&spell_targets.shield_of_the_righteous>=3\nactions.standard+=/hammer_of_the_righteous,if=buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<3&!buff.avenging_wrath.up\nactions.standard+=/blessed_hammer,if=buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<3&!buff.avenging_wrath.up\nactions.standard+=/crusader_strike,if=buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<2&!buff.avenging_wrath.up\n## redundant line: actions.standard+=/judgment,cycle_targets=1,if=charges>=2||full_recharge_time<=gcd.max\nactions.standard+=/consecration,if=buff.divine_guidance.stack=5\nactions.standard+=/holy_armaments,if=next_armament=sacred_weapon&(!buff.sacred_weapon.up||(buff.sacred_weapon.remains<6&!buff.avenging_wrath.up&cooldown.avenging_wrath.remains<=30))\nactions.standard+=/hammer_of_wrath\nactions.standard+=/divine_toll\nactions.standard+=/avengers_shield,if=talent.refining_fire.enabled\nactions.standard+=/judgment,cycle_targets=1,if=buff.avenging_wrath.up&talent.hammer_and_anvil.enabled\nactions.standard+=/holy_armaments,if=next_armament=holy_bulwark&charges=2\nactions.standard+=/judgment,cycle_targets=1\nactions.standard+=/avengers_shield,if=!buff.shake_the_heavens.up&talent.shake_the_heavens.enabled\nactions.standard+=/hammer_of_the_righteous,if=(buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<3)||buff.shake_the_heavens.up\nactions.standard+=/blessed_hammer,if=(buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<3)||buff.shake_the_heavens.up\nactions.standard+=/crusader_strike,if=(buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<2)||buff.shake_the_heavens.up\nactions.standard+=/avengers_shield,if=!talent.lights_guidance.enabled\nactions.standard+=/consecration,if=!consecration.up\nactions.standard+=/eye_of_tyr,if=(talent.inmost_light.enabled&raid_event.adds.in>=45||spell_targets.shield_of_the_righteous>=3)&!talent.lights_deliverance.enabled\nactions.standard+=/holy_armaments,if=next_armament=holy_bulwark\nactions.standard+=/blessed_hammer\nactions.standard+=/hammer_of_the_righteous\nactions.standard+=/crusader_strike\nactions.standard+=/word_of_glory,if=buff.shining_light_free.up&(talent.blessed_assurance.enabled||(talent.lights_guidance.enabled&cooldown.hammerfall_icd.remains=0))\nactions.standard+=/avengers_shield\nactions.standard+=/eye_of_tyr,if=!talent.lights_deliverance.enabled\nactions.standard+=/word_of_glory,if=buff.shining_light_free.up\nactions.standard+=/arcane_torrent,if=holy_power<5\nactions.standard+=/consecration\n\nactions.trinkets+=/use_item,name=tome_of_lights_devotion,if=buff.inner_resilience.up\nactions.trinkets+=/use_items,slots=trinket1,if=(variable.trinket_sync_slot=1&(buff.avenging_wrath.up||fight_remains<=40)||(variable.trinket_sync_slot=2&(!trinket.2.cooldown.ready||!buff.avenging_wrath.up))||!variable.trinket_sync_slot)\nactions.trinkets+=/use_items,slots=trinket2,if=(variable.trinket_sync_slot=2&(buff.avenging_wrath.up||fight_remains<=40)||(variable.trinket_sync_slot=1&(!trinket.1.cooldown.ready||!buff.avenging_wrath.up))||!variable.trinket_sync_slot)",
|
|
["spec"] = 66,
|
|
},
|
|
},
|
|
["iconStore"] = {
|
|
["minimapPos"] = 72.94312203537753,
|
|
},
|
|
},
|
|
["Quillikan - Deathwing"] = {
|
|
["runOnce"] = {
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
},
|
|
["specs"] = {
|
|
[255] = {
|
|
["maxRefresh"] = 10,
|
|
["custom2Name"] = "Custom 2",
|
|
["throttleRefresh"] = false,
|
|
["settings"] = {
|
|
["use_harpoon"] = true,
|
|
["ca_vop_overlap"] = false,
|
|
},
|
|
["aoe"] = 2,
|
|
["gcdSync"] = true,
|
|
["damageDots"] = false,
|
|
["throttleTime"] = false,
|
|
["enabled"] = true,
|
|
["debuffPadding"] = 0,
|
|
["maxTime"] = 33,
|
|
["custom1Name"] = "Custom 1",
|
|
["damage"] = true,
|
|
["package"] = "Survival",
|
|
["cycle"] = false,
|
|
["cycle_min"] = 6,
|
|
["nameplateRange"] = 8,
|
|
["potion"] = "unbridled_fury",
|
|
["nameplates"] = true,
|
|
["potionsReset"] = 20180919.1,
|
|
["damageExpiration"] = 8,
|
|
["buffPadding"] = 0,
|
|
["damageRange"] = 0,
|
|
},
|
|
[254] = {
|
|
["maxRefresh"] = 10,
|
|
["custom2Name"] = "Custom 2",
|
|
["throttleRefresh"] = false,
|
|
["settings"] = {
|
|
["trueshot_vop_overlap"] = false,
|
|
},
|
|
["aoe"] = 3,
|
|
["gcdSync"] = true,
|
|
["damageDots"] = false,
|
|
["throttleTime"] = false,
|
|
["enabled"] = true,
|
|
["debuffPadding"] = 0,
|
|
["maxTime"] = 33,
|
|
["custom1Name"] = "Custom 1",
|
|
["damage"] = true,
|
|
["package"] = "Marksmanship",
|
|
["cycle"] = false,
|
|
["cycle_min"] = 6,
|
|
["nameplateRange"] = 8,
|
|
["potion"] = "unbridled_fury",
|
|
["nameplates"] = false,
|
|
["potionsReset"] = 20180919.1,
|
|
["damageExpiration"] = 6,
|
|
["buffPadding"] = 0,
|
|
["damageRange"] = 0,
|
|
},
|
|
[253] = {
|
|
["maxRefresh"] = 10,
|
|
["custom2Name"] = "Custom 2",
|
|
["throttleRefresh"] = false,
|
|
["settings"] = {
|
|
["barbed_shot_grace_period"] = 0.5,
|
|
["aspect_vop_overlap"] = false,
|
|
},
|
|
["aoe"] = 3,
|
|
["gcdSync"] = true,
|
|
["damageDots"] = false,
|
|
["throttleTime"] = false,
|
|
["enabled"] = true,
|
|
["debuffPadding"] = 0,
|
|
["maxTime"] = 33,
|
|
["custom1Name"] = "Custom 1",
|
|
["buffPadding"] = 0.25,
|
|
["package"] = "Beast Mastery",
|
|
["cycle"] = false,
|
|
["cycle_min"] = 6,
|
|
["nameplateRange"] = 8,
|
|
["potion"] = "unbridled_fury",
|
|
["nameplates"] = false,
|
|
["potionsReset"] = 20180919.1,
|
|
["damageExpiration"] = 3,
|
|
["damage"] = true,
|
|
["damageRange"] = 0,
|
|
},
|
|
},
|
|
["displays"] = {
|
|
["AOE"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = -82.846435546875,
|
|
["y"] = -459.5241394042969,
|
|
},
|
|
["Primary"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = 176.2011260986328,
|
|
["y"] = -453.5713195800781,
|
|
},
|
|
["Defensives"] = {
|
|
["rel"] = "CENTER",
|
|
},
|
|
["Interrupts"] = {
|
|
["rel"] = "CENTER",
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Marksmanship"] = {
|
|
["source"] = "# https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20200401,
|
|
["author"] = "SimC",
|
|
["desc"] = "# Marksmanship Hunter\n# https://github.com/simulationcraft/simc/\n# March 30, 2020\n\n# Changes:\n# - Add utility priority to APL.\n# - Use time_to_die rather than target.time_to_die to anticipate end of combat.",
|
|
["lists"] = {
|
|
["trickshots"] = {
|
|
{
|
|
["action"] = "barrage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trick_shots.up & ca_execute & buff.double_tap.up",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trick_shots.up & ( azerite.focused_fire.enabled || azerite.in_the_rhythm.rank > 1 || azerite.surging_shots.enabled || talent.streamline.enabled )",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trick_shots.up & ( buff.precise_shots.down || cooldown.aimed_shot.full_recharge_time < action.aimed_shot.cast_time || buff.trueshot.up )",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trick_shots.up",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trick_shots.down || buff.precise_shots.up & ! buff.trueshot.up || focus > 70",
|
|
["action"] = "multishot",
|
|
},
|
|
{
|
|
["action"] = "focused_azerite_beam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "purifying_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "concentrated_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blood_of_the_enemy",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up || buff.reckless_force_counter.stack < 10",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["action"] = "piercing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! action.serpent_sting.in_flight",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["action"] = "steady_shot",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "debuff.casting.up || buff.dispellable_magic.up || buff.dispellable_enrage.up",
|
|
["list_name"] = "utility",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.trueshot.remains_guess < 15 || time_to_die < 30",
|
|
["name"] = "lurkers_insidious_gift",
|
|
["action"] = "lurkers_insidious_gift",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( time_to_die > action_cooldown + 34 || target.health.pct < 20 || target.time_to_pct_20 < 15 ) & cooldown.trueshot.remains_guess < 15 || time_to_die < 35",
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.trueshot.remains_guess < 5 || time_to_die < 20",
|
|
["name"] = "lustrous_golden_plumage",
|
|
["action"] = "lustrous_golden_plumage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot || ! talent.calling_the_shots.enabled || time_to_die < 10",
|
|
["name"] = "galecallers_boon",
|
|
["action"] = "galecallers_boon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot & ( buff.guardian_of_azeroth.up || ! essence.condensed_lifeforce.major & ca_execute ) || debuff.razor_coral_debuff.down || time_to_die < 20",
|
|
["name"] = "ashvanes_razor_coral",
|
|
["action"] = "ashvanes_razor_coral",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.trueshot.up & ! essence.blood_of_the_enemy.major || debuff.blood_of_the_enemy.up || time_to_die < 5",
|
|
["name"] = "pocketsized_computation_device",
|
|
["action"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot || ! talent.calling_the_shots.enabled || time_to_die < 20",
|
|
["action"] = "use_items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies < 3",
|
|
["list_name"] = "st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies > 2",
|
|
["list_name"] = "trickshots",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "hunters_mark",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["precast_time"] = "10",
|
|
["action"] = "double_tap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["action"] = "worldvein_resonance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "guardian_of_azeroth",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "memory_of_lucid_dreams",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["precast_time"] = "1.5",
|
|
["action"] = "trueshot",
|
|
["criteria"] = "active_enemies > 2",
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.hunters_mark.down & ! buff.trueshot.up",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.rapid_fire.remains < gcd || cooldown.rapid_fire.remains < cooldown.aimed_shot.remains || time_to_die < 20",
|
|
["action"] = "double_tap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot & ( target.time_to_die > cooldown.berserking.duration + duration || ( target.health.pct < 20 || ! talent.careful_aim.enabled ) ) || time_to_die < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot & ( target.time_to_die > cooldown.blood_fury.duration + duration || ( target.health.pct < 20 || ! talent.careful_aim.enabled ) ) || time_to_die < 16",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot & ( target.time_to_die > cooldown.ancestral_call.duration + duration || ( target.health.pct < 20 || ! talent.careful_aim.enabled ) ) || time_to_die < 16",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.trueshot & ( target.time_to_die > cooldown.fireblood.duration + duration || ( target.health.pct < 20 || ! talent.careful_aim.enabled ) ) || time_to_die < 9",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down & ( target.health.pct > 80 || target.health.pct <= 20 || target.time_to_pct_20 > 30 )",
|
|
["action"] = "reaping_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.azsharas_font_of_power.remains > 20 || ! equipped.azsharas_font_of_power || time_to_die < cooldown.azsharas_font_of_power.duration + 34 & target.health.pct > 20 ) & ( cooldown.trueshot.remains_guess < 3 || ( essence.vision_of_perfection.minor & time_to_die > action_cooldown + buff.worldvein_resonance.duration ) ) || time_to_die < 20",
|
|
["action"] = "worldvein_resonance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ca_execute || target.time_to_die > action_cooldown + 30 ) & ( buff.trueshot.up || cooldown.trueshot.remains < 16 ) || time_to_die < 31",
|
|
["action"] = "guardian_of_azeroth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.trueshot.remains < 7",
|
|
["action"] = "ripple_in_space",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.trueshot.up",
|
|
["action"] = "memory_of_lucid_dreams",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.react & buff.bloodlust.react || prev_gcd.1.trueshot & target.health.pct < 20 || ( ( consumable.potion_of_unbridled_fury || consumable.unbridled_fury ) & target.time_to_die < 61 || time_to_die < 26 )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down & cooldown.rapid_fire.remains || time_to_die < 15",
|
|
["action"] = "trueshot",
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "barrage",
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! action.serpent_sting.in_flight",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down || focus < 35 || focus < 60 & ! talent.lethal_shots.enabled || buff.in_the_rhythm.remains < execute_time",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up & ( buff.unerring_vision.stack > 4 || ! azerite.unerring_vision.enabled ) || time_to_die < 11",
|
|
["action"] = "blood_of_the_enemy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.trueshot.up || time_to_die < 5",
|
|
["action"] = "focused_azerite_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up & buff.master_marksman.up & ! buff.memory_of_lucid_dreams.up",
|
|
["action"] = "arcane_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || ( buff.double_tap.down || ca_execute ) & buff.precise_shots.down || full_recharge_time < cast_time & cooldown.trueshot.remains",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up & buff.master_marksman.up & buff.memory_of_lucid_dreams.up",
|
|
["action"] = "arcane_shot",
|
|
},
|
|
{
|
|
["action"] = "piercing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.trueshot.up || time_to_die < 8",
|
|
["action"] = "purifying_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + focus.regen * gcd < focus.max & buff.trueshot.down & ( ! dot.concentrated_flame_burn.remains & ! action.concentrated_flame.in_flight ) || full_recharge_time < gcd || target.time_to_die < 5",
|
|
["action"] = "concentrated_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up || buff.reckless_force_counter.stack < 10 || time_to_die < 5",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down & ( buff.precise_shots.up & ( focus > 55 || buff.master_marksman.up ) || focus > 75 || time_to_die < 5 )",
|
|
["action"] = "arcane_shot",
|
|
},
|
|
{
|
|
["action"] = "steady_shot",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["utility"] = {
|
|
{
|
|
["action"] = "counter_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "serenity_dust",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spore_cloud",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soothing_water",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sonic_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "nether_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "chijis_tranquility",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spirit_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "natures_grace",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20200401,
|
|
["warnings"] = "Imported 6 action lists.\n",
|
|
["profile"] = "# Marksmanship Hunter\n# https://github.com/simulationcraft/simc/\n# March 30, 2020\n\n# Changes:\n# - Add utility priority to APL.\n# - Use time_to_die rather than target.time_to_die to anticipate end of combat.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/augmentation\n# actions.precombat+=/food\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/hunters_mark\n# Precast this as early as possible to potentially gain another cast during the fight.\nactions.precombat+=/double_tap,precast_time=10\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/worldvein_resonance\nactions.precombat+=/guardian_of_azeroth\nactions.precombat+=/memory_of_lucid_dreams\nactions.precombat+=/trueshot,precast_time=1.5,if=active_enemies>2\nactions.precombat+=/potion\nactions.precombat+=/aimed_shot,if=active_enemies<3\n\nactions.utility=counter_shot\nactions.utility+=/serenity_dust\nactions.utility+=/spore_cloud\nactions.utility+=/soothing_water\nactions.utility+=/sonic_blast\nactions.utility+=/nether_shock\nactions.utility+=/chijis_tranquility\nactions.utility+=/spirit_shock\nactions.utility+=/natures_grace\n\n# Executed every time the actor is available.\nactions=call_action_list,name=utility,if=debuff.casting.up||buff.dispellable_magic.up||buff.dispellable_enrage.up\nactions+=/use_item,name=lurkers_insidious_gift,if=cooldown.trueshot.remains_guess<15||time_to_die<30\nactions+=/use_item,name=azsharas_font_of_power,if=(time_to_die>cooldown+34||target.health.pct<20||target.time_to_pct_20<15)&cooldown.trueshot.remains_guess<15||time_to_die<35\nactions+=/use_item,name=lustrous_golden_plumage,if=cooldown.trueshot.remains_guess<5||time_to_die<20\nactions+=/use_item,name=galecallers_boon,if=prev_gcd.1.trueshot||!talent.calling_the_shots.enabled||time_to_die<10\nactions+=/use_item,name=ashvanes_razor_coral,if=prev_gcd.1.trueshot&(buff.guardian_of_azeroth.up||!essence.condensed_lifeforce.major&ca_execute)||debuff.razor_coral_debuff.down||time_to_die<20\nactions+=/use_item,name=pocketsized_computation_device,if=!buff.trueshot.up&!essence.blood_of_the_enemy.major||debuff.blood_of_the_enemy.up||time_to_die<5\n# Try to line up activated trinkets with Trueshot\nactions+=/use_items,if=prev_gcd.1.trueshot||!talent.calling_the_shots.enabled||time_to_die<20\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=st,if=active_enemies<3\nactions+=/call_action_list,name=trickshots,if=active_enemies>2\n\nactions.cds=hunters_mark,if=debuff.hunters_mark.down&!buff.trueshot.up\nactions.cds+=/double_tap,if=cooldown.rapid_fire.remains<gcd||cooldown.rapid_fire.remains<cooldown.aimed_shot.remains||time_to_die<20\nactions.cds+=/berserking,if=prev_gcd.1.trueshot&(target.time_to_die>cooldown.berserking.duration+duration||(target.health.pct<20||!talent.careful_aim.enabled))||time_to_die<13\nactions.cds+=/blood_fury,if=prev_gcd.1.trueshot&(target.time_to_die>cooldown.blood_fury.duration+duration||(target.health.pct<20||!talent.careful_aim.enabled))||time_to_die<16\nactions.cds+=/ancestral_call,if=prev_gcd.1.trueshot&(target.time_to_die>cooldown.ancestral_call.duration+duration||(target.health.pct<20||!talent.careful_aim.enabled))||time_to_die<16\nactions.cds+=/fireblood,if=prev_gcd.1.trueshot&(target.time_to_die>cooldown.fireblood.duration+duration||(target.health.pct<20||!talent.careful_aim.enabled))||time_to_die<9\nactions.cds+=/lights_judgment,if=buff.trueshot.down\nactions.cds+=/bag_of_tricks,if=buff.trueshot.down\nactions.cds+=/reaping_flames,if=buff.trueshot.down&(target.health.pct>80||target.health.pct<=20||target.time_to_pct_20>30)\nactions.cds+=/worldvein_resonance,if=(cooldown.azsharas_font_of_power.remains>20||!equipped.azsharas_font_of_power||time_to_die<cooldown.azsharas_font_of_power.duration+34&target.health.pct>20)&(cooldown.trueshot.remains_guess<3||(essence.vision_of_perfection.minor&time_to_die>cooldown+buff.worldvein_resonance.duration))||time_to_die<20\nactions.cds+=/guardian_of_azeroth,if=(ca_execute||target.time_to_die>cooldown+30)&(buff.trueshot.up||cooldown.trueshot.remains<16)||time_to_die<31\nactions.cds+=/ripple_in_space,if=cooldown.trueshot.remains<7\nactions.cds+=/memory_of_lucid_dreams,if=!buff.trueshot.up\nactions.cds+=/potion,if=buff.trueshot.react&buff.bloodlust.react||prev_gcd.1.trueshot&target.health.pct<20||((consumable.potion_of_unbridled_fury||consumable.unbridled_fury)&target.time_to_die<61||time_to_die<26)\nactions.cds+=/trueshot,if=buff.trueshot.down&cooldown.rapid_fire.remains||time_to_die<15\n\nactions.st=explosive_shot\nactions.st+=/barrage,if=active_enemies>1\nactions.st+=/a_murder_of_crows\nactions.st+=/serpent_sting,if=refreshable&!action.serpent_sting.in_flight\nactions.st+=/rapid_fire,if=buff.trueshot.down||focus<35||focus<60&!talent.lethal_shots.enabled||buff.in_the_rhythm.remains<execute_time\n# if=buff.trueshot.up&(buff.unerring_vision.stack>4||!azerite.unerring_vision.enabled)||target.time_to_die<11\nactions.st+=/blood_of_the_enemy,if=buff.trueshot.up&(buff.unerring_vision.stack>4||!azerite.unerring_vision.enabled)||time_to_die<11\nactions.st+=/focused_azerite_beam,if=!buff.trueshot.up||time_to_die<5\nactions.st+=/arcane_shot,if=buff.trueshot.up&buff.master_marksman.up&!buff.memory_of_lucid_dreams.up\nactions.st+=/aimed_shot,if=buff.trueshot.up||(buff.double_tap.down||ca_execute)&buff.precise_shots.down||full_recharge_time<cast_time&cooldown.trueshot.remains\nactions.st+=/arcane_shot,if=buff.trueshot.up&buff.master_marksman.up&buff.memory_of_lucid_dreams.up\nactions.st+=/piercing_shot\nactions.st+=/purifying_blast,if=!buff.trueshot.up||time_to_die<8\nactions.st+=/concentrated_flame,if=focus+focus.regen*gcd<focus.max&buff.trueshot.down&(!dot.concentrated_flame_burn.remains&!action.concentrated_flame.in_flight)||full_recharge_time<gcd||target.time_to_die<5\nactions.st+=/the_unbound_force,if=buff.reckless_force.up||buff.reckless_force_counter.stack<10||time_to_die<5\nactions.st+=/arcane_shot,if=buff.trueshot.down&(buff.precise_shots.up&(focus>55||buff.master_marksman.up)||focus>75||time_to_die<5)\nactions.st+=/steady_shot\n\nactions.trickshots=barrage\nactions.trickshots+=/explosive_shot\nactions.trickshots+=/aimed_shot,if=buff.trick_shots.up&ca_execute&buff.double_tap.up\nactions.trickshots+=/rapid_fire,if=buff.trick_shots.up&(azerite.focused_fire.enabled||azerite.in_the_rhythm.rank>1||azerite.surging_shots.enabled||talent.streamline.enabled)\nactions.trickshots+=/aimed_shot,if=buff.trick_shots.up&(buff.precise_shots.down||cooldown.aimed_shot.full_recharge_time<action.aimed_shot.cast_time||buff.trueshot.up)\nactions.trickshots+=/rapid_fire,if=buff.trick_shots.up\nactions.trickshots+=/multishot,if=buff.trick_shots.down||buff.precise_shots.up&!buff.trueshot.up||focus>70\nactions.trickshots+=/focused_azerite_beam\nactions.trickshots+=/purifying_blast\nactions.trickshots+=/concentrated_flame\nactions.trickshots+=/blood_of_the_enemy\nactions.trickshots+=/the_unbound_force,if=buff.reckless_force.up||buff.reckless_force_counter.stack<10\nactions.trickshots+=/piercing_shot\nactions.trickshots+=/a_murder_of_crows\nactions.trickshots+=/serpent_sting,if=refreshable&!action.serpent_sting.in_flight\nactions.trickshots+=/steady_shot",
|
|
["spec"] = 254,
|
|
},
|
|
["Beast Mastery"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20200614,
|
|
["author"] = "SimC",
|
|
["desc"] = "# Beast Mastery Hunter\n# https://github.com/simulationcraft/simc/\n# June 14, 2020\n\n# Changes:\n# - Added Counter Shot to default action list.\n# - Use time_to_die (vs. target.time_to_die) to anticipate end of encounter.\n# - Add dispels/purges via utility action list.\n# - trinket.X.has_cooldown is unsupported.\n# - Check for crit_pct_current.",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.casting.up || buff.dispellable_magic.up || buff.dispellable_enrage.up",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "utility",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "prev_gcd.1.aspect_of_the_wild || time_to_die < 20",
|
|
["action"] = "use_items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
["criteria"] = "cooldown.aspect_of_the_wild.remains_guess < 15 & time_to_die > 10",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "ashvanes_razor_coral",
|
|
["action"] = "ashvanes_razor_coral",
|
|
["criteria"] = "debuff.razor_coral_debuff.up & ( ! equipped.azsharas_font_of_power || cooldown.azsharas_font_of_power.remains > 86 || essence.blood_of_the_enemy.major ) & ( prev_gcd.1.aspect_of_the_wild || ! equipped.cyclotronic_blast & buff.aspect_of_the_wild.remains > 9 ) & ( ! essence.condensed_lifeforce.major || buff.guardian_of_azeroth.up ) & ( target.health.pct < 35 || ! essence.condensed_lifeforce.major || ! talent.killer_instinct.enabled ) || ( debuff.razor_coral_debuff.down || time_to_die < 26 ) & time_to_die > ( 24 * ( cooldown.cyclotronic_blast.remains + 4 < time_to_die ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "galecallers_boon",
|
|
["action"] = "galecallers_boon",
|
|
["criteria"] = "buff.aspect_of_the_wild.remains > 10 || cooldown.aspect_of_the_wild.remains > 45 || time_to_die < 11",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cyclotronic_blast",
|
|
["criteria"] = "buff.bestial_wrath.down || time_to_die < 5",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 2",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cleave",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "summon_pet",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["action"] = "worldvein_resonance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "guardian_of_azeroth",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "memory_of_lucid_dreams",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cyclotronic_blast",
|
|
["criteria"] = "! raid_event.invulnerable.exists & ( equipped.variable_intensity_gigavolt_oscillating_reactor )",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cyclotronic_blast",
|
|
["criteria"] = "! raid_event.invulnerable.exists & ( trinket.1.has_cooldown + trinket.2.has_cooldown < 2 || equipped.variable_intensity_gigavolt_oscillating_reactor )",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! raid_event.invulnerable.exists",
|
|
["action"] = "focused_azerite_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["precast_time"] = "1.3",
|
|
["action"] = "aspect_of_the_wild",
|
|
["criteria"] = "! azerite.primal_instincts.enabled & ! essence.essence_of_the_focusing_iris.major & ( equipped.azsharas_font_of_power || ! equipped.cyclotronic_blast )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["precast_time"] = "1.5",
|
|
["action"] = "bestial_wrath",
|
|
["criteria"] = "azerite.primal_instincts.enabled & ! essence.essence_of_the_focusing_iris.major & ( equipped.azsharas_font_of_power || ! equipped.cyclotronic_blast )",
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "barbed_shot",
|
|
["criteria"] = "buff.frenzy.up & buff.frenzy.remains <= gcd.max + barbed_shot_grace_period",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "gcd.max - buff.beast_cleave.remains > 0.25",
|
|
["action"] = "multishot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "barbed_shot",
|
|
["criteria"] = "full_recharge_time < gcd.max & cooldown.bestial_wrath.remains",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "aspect_of_the_wild",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.aspect_of_the_wild.up & buff.bestial_wrath.up || time_to_die < 15",
|
|
["action"] = "stampede",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.aspect_of_the_wild.remains_guess > 20 || talent.one_with_the_pack.enabled || time_to_die < 15",
|
|
["action"] = "bestial_wrath",
|
|
},
|
|
{
|
|
["action"] = "chimaera_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "barrage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 4 || ! azerite.rapid_reload.enabled",
|
|
["action"] = "kill_command",
|
|
},
|
|
{
|
|
["action"] = "dire_beast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "barbed_shot",
|
|
["criteria"] = "buff.frenzy.down & ( charges_fractional > 1.8 || buff.bestial_wrath.up ) || cooldown.aspect_of_the_wild.remains < buff.frenzy.duration - gcd & azerite.primal_instincts.enabled || charges_fractional > 1.4 || time_to_die < 9",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "focused_azerite_beam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "purifying_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "concentrated_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up || buff.reckless_force_counter.stack < 10",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "azerite.rapid_reload.enabled & active_enemies > 2",
|
|
["action"] = "multishot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.kill_command.remains > focus.time_to_max & ( active_enemies < 3 || ! azerite.rapid_reload.enabled )",
|
|
["action"] = "cobra_shot",
|
|
},
|
|
{
|
|
["action"] = "spitting_cobra",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.bestial_wrath.remains > 30",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.bestial_wrath.remains > 30",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus < focus.max & ( raid_event.adds.remains > 90 || ! raid_event.adds.exists || active_enemies > 1 )",
|
|
["action"] = "blood_of_the_enemy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.aspect_of_the_wild.up & ( time_to_die > cooldown.berserking.duration + duration || ( target.health.pct < 35 || ! talent.killer_instinct.enabled ) ) || time_to_die < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.aspect_of_the_wild.up & ( time_to_die > cooldown.blood_fury.duration + duration || ( target.health.pct < 35 || ! talent.killer_instinct.enabled ) ) || time_to_die < 16",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frenzy.up & buff.frenzy.remains > gcd.max || ! buff.frenzy.up",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.up & buff.aspect_of_the_wild.up & target.health.pct < 35 || ( ( consumable.potion_of_unbridled_fury || consumable.unbridled_fury ) & time_to_die < 61 || time_to_die < 26 )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( prev_gcd.1.aspect_of_the_wild || cooldown.aspect_of_the_wild.remains < gcd || target.time_to_die < 20 ) || ! essence.vision_of_perfection.minor",
|
|
["action"] = "worldvein_resonance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.aspect_of_the_wild.remains < 10 || time_to_die > action.guardian_of_azeroth.cooldown + 30 || time_to_die < 30",
|
|
["action"] = "guardian_of_azeroth",
|
|
},
|
|
{
|
|
["action"] = "ripple_in_space",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "memory_of_lucid_dreams",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct > 80 || target.health.pct <= 20 || target.time_to_pct_20 > 30",
|
|
["action"] = "reaping_flames",
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frenzy.up & buff.frenzy.remains < gcd + barbed_shot_grace_period || cooldown.bestial_wrath.remains & ( full_recharge_time < gcd || azerite.primal_instincts.enabled & cooldown.aspect_of_the_wild.remains < gcd )",
|
|
["action"] = "barbed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + focus.regen * gcd < focus.max & buff.bestial_wrath.down & ( ! dot.concentrated_flame_burn.remains & ! action.concentrated_flame.in_flight ) || full_recharge_time < gcd || time_to_die < 5",
|
|
["action"] = "concentrated_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.aspect_of_the_wild.down & ( cooldown.barbed_shot.charges < 1 || ! azerite.primal_instincts.enabled )",
|
|
["action"] = "aspect_of_the_wild",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.aspect_of_the_wild.up & buff.bestial_wrath.up || time_to_die < 15",
|
|
["action"] = "stampede",
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || time_to_die < 5",
|
|
["action"] = "focused_azerite_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up || buff.reckless_force_counter.stack < 10 || time_to_die < 5",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.one_with_the_pack.enabled & buff.bestial_wrath.remains < gcd || buff.bestial_wrath.down & cooldown.aspect_of_the_wild.remains > 15 || time_to_die < 15 + gcd",
|
|
["action"] = "bestial_wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "azerite.dance_of_death.rank > 1 & buff.dance_of_death.remains < gcd",
|
|
["action"] = "barbed_shot",
|
|
},
|
|
{
|
|
["action"] = "kill_command",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["action"] = "chimaera_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "dire_beast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.one_with_the_pack.enabled & charges_fractional > 1.5 || charges_fractional > 1.8 || cooldown.aspect_of_the_wild.remains < buff.frenzy.duration - gcd & azerite.primal_instincts.enabled || time_to_die < 9",
|
|
["action"] = "barbed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || time_to_die < 8",
|
|
["action"] = "purifying_blast",
|
|
},
|
|
{
|
|
["action"] = "blood_of_the_enemy",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "barrage",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( focus - cost + focus.regen * ( cooldown.kill_command.remains - 1 ) > action.kill_command.cost || cooldown.kill_command.remains > 1 + gcd & cooldown.bestial_wrath.remains_guess > focus.time_to_max || buff.memory_of_lucid_dreams.up ) & cooldown.kill_command.remains > 1 || time_to_die < 3",
|
|
["action"] = "cobra_shot",
|
|
},
|
|
{
|
|
["action"] = "spitting_cobra",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.frenzy.duration - gcd > full_recharge_time",
|
|
["action"] = "barbed_shot",
|
|
},
|
|
},
|
|
["utility"] = {
|
|
{
|
|
["action"] = "counter_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "serenity_dust",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spore_cloud",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soothing_water",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sonic_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "nether_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "chijis_tranquility",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spirit_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "natures_grace",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20200614,
|
|
["warnings"] = "WARNING: The import for 'default' required some automated changes.\nLine 4: Converted 'trinket.X.cooldown' to 'cooldown.X' (1x).\n\nWARNING: The import for 'cleave' required some automated changes.\nLine 1: Converted 'pet.X.Y...' to 'Y...' (2x).\nLine 2: Converted 'pet.X.Y...' to 'Y...' (1x).\nLine 12: Converted 'pet.X.Y...' to 'Y...' (2x).\n\nWARNING: The import for 'cds' required some automated changes.\nLine 6: Converted 'pet.X.Y...' to 'Y...' (3x).\n\nWARNING: The import for 'st' required some automated changes.\nLine 1: Converted 'pet.X.Y...' to 'Y...' (2x).\nLine 14: Converted 'pet.X.Y...' to 'Y...' (1x).\nLine 20: Converted 'pet.X.Y...' to 'Y...' (1x).\n\nImported 6 action lists.\n",
|
|
["profile"] = "# Beast Mastery Hunter\n# https://github.com/simulationcraft/simc/\n# June 14, 2020\n\n# Changes:\n# - Added Counter Shot to default action list.\n# - Use time_to_die (vs. target.time_to_die) to anticipate end of encounter.\n# - Add dispels/purges via utility action list.\n# - trinket.X.has_cooldown is unsupported.\n# - Check for crit_pct_current.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/augmentation\n# actions.precombat+=/food\nactions.precombat+=/summon_pet\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/worldvein_resonance\nactions.precombat+=/guardian_of_azeroth\nactions.precombat+=/memory_of_lucid_dreams\nactions.precombat+=/use_item,effect_name=cyclotronic_blast,if=!raid_event.invulnerable.exists&(equipped.variable_intensity_gigavolt_oscillating_reactor)\nactions.precombat+=/use_item,effect_name=cyclotronic_blast,if=!raid_event.invulnerable.exists&(trinket.1.has_cooldown+trinket.2.has_cooldown<2||equipped.variable_intensity_gigavolt_oscillating_reactor)\nactions.precombat+=/focused_azerite_beam,if=!raid_event.invulnerable.exists\n# Adjusts the duration and cooldown of Aspect of the Wild and Primal Instincts by the duration of an unhasted GCD when they're used precombat. Because Aspect of the Wild reduces GCD by 200ms, this is 1.3 seconds. \nactions.precombat+=/aspect_of_the_wild,precast_time=1.3,if=!azerite.primal_instincts.enabled&!essence.essence_of_the_focusing_iris.major&(equipped.azsharas_font_of_power||!equipped.cyclotronic_blast)\n# Adjusts the duration and cooldown of Bestial Wrath and Haze of Rage by the duration of an unhasted GCD when they're used precombat.\nactions.precombat+=/bestial_wrath,precast_time=1.5,if=azerite.primal_instincts.enabled&!essence.essence_of_the_focusing_iris.major&(equipped.azsharas_font_of_power||!equipped.cyclotronic_blast)\nactions.precombat+=/potion\n\nactions.utility=counter_shot\nactions.utility+=/serenity_dust\nactions.utility+=/spore_cloud\nactions.utility+=/soothing_water\nactions.utility+=/sonic_blast\nactions.utility+=/nether_shock\nactions.utility+=/chijis_tranquility\nactions.utility+=/spirit_shock\nactions.utility+=/natures_grace\n\n# Executed every time the actor is available.\nactions=call_action_list,name=utility,if=debuff.casting.up||buff.dispellable_magic.up||buff.dispellable_enrage.up\nactions+=/use_items,if=prev_gcd.1.aspect_of_the_wild||time_to_die<20\nactions+=/use_item,name=azsharas_font_of_power,if=cooldown.aspect_of_the_wild.remains_guess<15&time_to_die>10\nactions+=/use_item,name=ashvanes_razor_coral,if=debuff.razor_coral_debuff.up&(!equipped.azsharas_font_of_power||trinket.azsharas_font_of_power.cooldown.remains>86||essence.blood_of_the_enemy.major)&(prev_gcd.1.aspect_of_the_wild||!equipped.cyclotronic_blast&buff.aspect_of_the_wild.remains>9)&(!essence.condensed_lifeforce.major||buff.guardian_of_azeroth.up)&(target.health.pct<35||!essence.condensed_lifeforce.major||!talent.killer_instinct.enabled)||(debuff.razor_coral_debuff.down||time_to_die<26)&time_to_die>(24*(cooldown.cyclotronic_blast.remains+4<time_to_die))\nactions+=/use_item,name=galecallers_boon,if=buff.aspect_of_the_wild.remains>10||cooldown.aspect_of_the_wild.remains>45||time_to_die<11\nactions+=/use_item,effect_name=cyclotronic_blast,if=buff.bestial_wrath.down||time_to_die<5\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=st,if=active_enemies<2\nactions+=/call_action_list,name=cleave,if=active_enemies>1\n\nactions.cds=ancestral_call,if=cooldown.bestial_wrath.remains>30\nactions.cds+=/fireblood,if=cooldown.bestial_wrath.remains>30\nactions.cds+=/blood_of_the_enemy,if=focus<focus.max&(raid_event.adds.remains>90||!raid_event.adds.exists||active_enemies>1)\nactions.cds+=/berserking,if=buff.aspect_of_the_wild.up&(time_to_die>cooldown.berserking.duration+duration||(target.health.pct<35||!talent.killer_instinct.enabled))||time_to_die<13\nactions.cds+=/blood_fury,if=buff.aspect_of_the_wild.up&(time_to_die>cooldown.blood_fury.duration+duration||(target.health.pct<35||!talent.killer_instinct.enabled))||time_to_die<16\nactions.cds+=/lights_judgment,if=pet.cat.buff.frenzy.up&pet.cat.buff.frenzy.remains>gcd.max||!pet.cat.buff.frenzy.up\nactions.cds+=/potion,if=buff.bestial_wrath.up&buff.aspect_of_the_wild.up&target.health.pct<35||((consumable.potion_of_unbridled_fury||consumable.unbridled_fury)&time_to_die<61||time_to_die<26)\nactions.cds+=/worldvein_resonance,if=(prev_gcd.1.aspect_of_the_wild||cooldown.aspect_of_the_wild.remains<gcd||target.time_to_die<20)||!essence.vision_of_perfection.minor\nactions.cds+=/guardian_of_azeroth,if=cooldown.aspect_of_the_wild.remains<10||time_to_die>action.guardian_of_azeroth.cooldown+30||time_to_die<30\nactions.cds+=/ripple_in_space\nactions.cds+=/memory_of_lucid_dreams\n# actions.cds+=/bag_of_tricks\nactions.cds+=/reaping_flames,if=target.health.pct>80||target.health.pct<=20||target.time_to_pct_20>30\n\nactions.cleave=barbed_shot,cycle_targets=1,if=pet.cat.buff.frenzy.up&pet.cat.buff.frenzy.remains<=gcd.max+barbed_shot_grace_period\nactions.cleave+=/multishot,if=gcd.max-pet.cat.buff.beast_cleave.remains>0.25\nactions.cleave+=/barbed_shot,cycle_targets=1,if=full_recharge_time<gcd.max&cooldown.bestial_wrath.remains\nactions.cleave+=/aspect_of_the_wild\nactions.cleave+=/stampede,if=buff.aspect_of_the_wild.up&buff.bestial_wrath.up||time_to_die<15\nactions.cleave+=/bestial_wrath,if=cooldown.aspect_of_the_wild.remains_guess>20||talent.one_with_the_pack.enabled||time_to_die<15\nactions.cleave+=/chimaera_shot\nactions.cleave+=/a_murder_of_crows\nactions.cleave+=/barrage\nactions.cleave+=/kill_command,if=active_enemies<4||!azerite.rapid_reload.enabled\nactions.cleave+=/dire_beast\nactions.cleave+=/barbed_shot,cycle_targets=1,if=pet.cat.buff.frenzy.down&(charges_fractional>1.8||buff.bestial_wrath.up)||cooldown.aspect_of_the_wild.remains<pet.cat.buff.frenzy.duration-gcd&azerite.primal_instincts.enabled||charges_fractional>1.4||time_to_die<9\nactions.cleave+=/focused_azerite_beam\nactions.cleave+=/purifying_blast\nactions.cleave+=/concentrated_flame\nactions.cleave+=/the_unbound_force,if=buff.reckless_force.up||buff.reckless_force_counter.stack<10\nactions.cleave+=/multishot,if=azerite.rapid_reload.enabled&active_enemies>2\nactions.cleave+=/cobra_shot,if=cooldown.kill_command.remains>focus.time_to_max&(active_enemies<3||!azerite.rapid_reload.enabled)\nactions.cleave+=/spitting_cobra\n\nactions.st=barbed_shot,if=pet.cat.buff.frenzy.up&pet.cat.buff.frenzy.remains<gcd+barbed_shot_grace_period||cooldown.bestial_wrath.remains&(full_recharge_time<gcd||azerite.primal_instincts.enabled&cooldown.aspect_of_the_wild.remains<gcd)\nactions.st+=/concentrated_flame,if=focus+focus.regen*gcd<focus.max&buff.bestial_wrath.down&(!dot.concentrated_flame_burn.remains&!action.concentrated_flame.in_flight)||full_recharge_time<gcd||time_to_die<5\nactions.st+=/aspect_of_the_wild,if=buff.aspect_of_the_wild.down&(cooldown.barbed_shot.charges<1||!azerite.primal_instincts.enabled)\nactions.st+=/stampede,if=buff.aspect_of_the_wild.up&buff.bestial_wrath.up||time_to_die<15\nactions.st+=/a_murder_of_crows\nactions.st+=/focused_azerite_beam,if=buff.bestial_wrath.down||time_to_die<5\nactions.st+=/the_unbound_force,if=buff.reckless_force.up||buff.reckless_force_counter.stack<10||time_to_die<5\nactions.st+=/bestial_wrath,if=talent.one_with_the_pack.enabled&buff.bestial_wrath.remains<gcd||buff.bestial_wrath.down&cooldown.aspect_of_the_wild.remains>15||time_to_die<15+gcd\nactions.st+=/barbed_shot,if=azerite.dance_of_death.rank>1&buff.dance_of_death.remains<gcd\nactions.st+=/kill_command\nactions.st+=/bag_of_tricks,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/chimaera_shot\nactions.st+=/dire_beast\nactions.st+=/barbed_shot,if=talent.one_with_the_pack.enabled&charges_fractional>1.5||charges_fractional>1.8||cooldown.aspect_of_the_wild.remains<pet.cat.buff.frenzy.duration-gcd&azerite.primal_instincts.enabled||time_to_die<9\nactions.st+=/purifying_blast,if=buff.bestial_wrath.down||time_to_die<8\nactions.st+=/blood_of_the_enemy\nactions.st+=/barrage\nactions.st+=/cobra_shot,if=(focus-cost+focus.regen*(cooldown.kill_command.remains-1)>action.kill_command.cost||cooldown.kill_command.remains>1+gcd&cooldown.bestial_wrath.remains_guess>focus.time_to_max||buff.memory_of_lucid_dreams.up)&cooldown.kill_command.remains>1||time_to_die<3\nactions.st+=/spitting_cobra\nactions.st+=/barbed_shot,if=pet.cat.buff.frenzy.duration-gcd>full_recharge_time",
|
|
["spec"] = 253,
|
|
},
|
|
["Survival"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20200525,
|
|
["author"] = "SimulationCraft",
|
|
["desc"] = "# Survival Hunter\n# https://github.com/simulationcraft/simc/\n# May 25, 2020\n\n# Changes:\n# - Added Muzzle to default action list.\n# - Changed target_if expressions to cycle_targets.\n# - Modified carve_cdr to work more easily with the addon's implementation of variable.\n# - Added utility APL.",
|
|
["lists"] = {
|
|
["apst"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd )",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd )",
|
|
["action"] = "raptor_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "full_recharge_time < 1.5 * gcd & focus + cast_regen < focus.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "steel_trap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max & ! ticking & ! buff.memory_of_lucid_dreams.up & ( full_recharge_time < 1.5 * gcd || ! dot.wildfire_bomb.ticking & ! buff.coordinated_assault.up || ! dot.wildfire_bomb.ticking & buff.mongoose_fury.stack < 1 ) || time_to_die < 18 & ! dot.wildfire_bomb.ticking",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.serpent_sting.ticking & ! buff.coordinated_assault.up",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max & ( buff.mongoose_fury.stack < 5 || focus < action.mongoose_bite.cost )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ! buff.coordinated_assault.up & buff.mongoose_fury.stack < 5",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.coordinated_assault.up",
|
|
["action"] = "a_murder_of_crows",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.coordinated_assault.up",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.up || focus + cast_regen > focus.max - 10 || buff.coordinated_assault.up",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["action"] = "raptor_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
},
|
|
["cleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "carve_cdr",
|
|
["criteria"] = "active_enemies < 5",
|
|
["value_else"] = "5",
|
|
["value"] = "active_enemies",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "azerite.blur_of_talons.rank > 0 & ( buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd || buff.coordinated_assault.remains & ! buff.blur_of_talons.remains ) )",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mongoose_bite",
|
|
["criteria"] = "debuff.latent_poison.stack > ( active_enemies || 9 ) & target.time_to_die < active_enemies * gcd",
|
|
["target_if"] = "",
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.shrapnel_bomb.ticking & ! talent.hydras_bite.enabled || dot.shrapnel_bomb.ticking & active_enemies > 5",
|
|
["action"] = "carve",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.guerrilla_tactics.enabled || full_recharge_time < gcd || raid_event.adds.remains < 6 & raid_event.adds.exists",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges_fractional > 2.5 || dot.shrapnel_bomb.ticking || cooldown.wildfire_bomb.remains > active_enemies - gcd || debuff.blood_of_the_enemy.remains || raid_event.adds.remains < 5 & raid_event.adds.exists",
|
|
["action"] = "butchery",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mongoose_bite",
|
|
["criteria"] = "debuff.latent_poison.stack > 8",
|
|
["target_if"] = "",
|
|
},
|
|
{
|
|
["action"] = "chakrams",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.terms_of_engagement.enabled",
|
|
["action"] = "harpoon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.guerrilla_tactics.enabled",
|
|
["action"] = "carve",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.wildfire_bomb.remains > ( active_enemies || 5 )",
|
|
["action"] = "butchery",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.wildfire_bomb.refreshable || talent.wildfire_infusion.enabled",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "serpent_sting",
|
|
["criteria"] = "buff.vipers_venom.react",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.wildfire_bomb.remains > variable.carve_cdr % 2",
|
|
["action"] = "carve",
|
|
},
|
|
{
|
|
["action"] = "steel_trap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "serpent_sting",
|
|
["criteria"] = "refreshable & buff.tip_of_the_spear.stack < 3 & next_wi_bomb.volatile || refreshable & azerite.latent_poison.rank > 0",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mongoose_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_strike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.terms_of_engagement.enabled",
|
|
["action"] = "harpoon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd )",
|
|
["action"] = "raptor_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up & ( buff.coordinated_assault.remains < 1.5 * gcd || buff.blur_of_talons.up & buff.blur_of_talons.remains < 1.5 * gcd )",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up & buff.vipers_venom.remains < 1 * gcd",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "steel_trap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max & refreshable & full_recharge_time < gcd & ! buff.memory_of_lucid_dreams.up || focus + cast_regen < focus.max & ( ! dot.wildfire_bomb.ticking & ( ! buff.coordinated_assault.up || buff.mongoose_fury.stack < 1 || time_to_die < 18 || ! dot.wildfire_bomb.ticking & azerite.wilderness_survival.rank > 0 ) ) & ! buff.memory_of_lucid_dreams.up",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up & dot.serpent_sting.remains < 4 * gcd || dot.serpent_sting.refreshable & ! buff.coordinated_assault.up",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.coordinated_assault.up",
|
|
["action"] = "a_murder_of_crows",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.coordinated_assault.up",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.up || focus + cast_regen > focus.max - 20 & talent.vipers_venom.enabled || focus + cast_regen > focus.max - 1 & talent.terms_of_engagement.enabled || buff.coordinated_assault.up",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["action"] = "raptor_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.wildfire_bomb.refreshable",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
},
|
|
["wfi"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max & talent.terms_of_engagement.enabled",
|
|
["action"] = "harpoon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blur_of_talons.up & buff.blur_of_talons.remains < gcd",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blur_of_talons.up & buff.blur_of_talons.remains < gcd",
|
|
["action"] = "raptor_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up & buff.vipers_venom.remains < 1.5 * gcd || ! dot.serpent_sting.ticking",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "full_recharge_time < 1.5 * gcd & focus + cast_regen < focus.max || ( next_wi_bomb.volatile & dot.serpent_sting.ticking & dot.serpent_sting.refreshable || next_wi_bomb.pheromone & ! buff.mongoose_fury.up & focus + cast_regen < focus.max - action.kill_command.cast_regen * 3 )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max - focus.regen",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "steel_trap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "full_recharge_time < 1.5 * gcd",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up & dot.serpent_sting.remains < 4 * gcd",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.shrapnel_bomb.ticking || buff.mongoose_fury.stack = 5",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_wi_bomb.shrapnel & dot.serpent_sting.remains > 5 * gcd",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.mongoose_fury.remains",
|
|
["action"] = "chakrams",
|
|
},
|
|
{
|
|
["action"] = "mongoose_bite",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "raptor_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.vipers_venom.up",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_wi_bomb.volatile & dot.serpent_sting.ticking || next_wi_bomb.pheromone || next_wi_bomb.shrapnel",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.casting.up || buff.dispellable_magic.up || buff.dispellable_enrage.up",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "utility",
|
|
},
|
|
{
|
|
["action"] = "use_items",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & target.time_to_die < focus % ( action.mongoose_bite.cost - cast_regen ) * gcd",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & talent.chakrams.enabled & talent.alpha_predator.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "apwfi",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & talent.chakrams.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "wfi",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & ! talent.alpha_predator.enabled & ! talent.wildfire_infusion.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & talent.alpha_predator.enabled & ! talent.wildfire_infusion.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "apst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & talent.alpha_predator.enabled & talent.wildfire_infusion.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "apwfi",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies < 3 & ! talent.alpha_predator.enabled & talent.wildfire_infusion.enabled",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "wfi",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ! talent.birds_of_prey.enabled || active_enemies > 2",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cleave",
|
|
},
|
|
{
|
|
["action"] = "concentrated_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bag_of_tricks",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "summon_pet",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cyclotronic_blast",
|
|
["criteria"] = "! raid_event.invulnerable.exists",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["action"] = "guardian_of_azeroth",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "worldvein_resonance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "potion",
|
|
["dynamic_prepot"] = "1",
|
|
},
|
|
{
|
|
["action"] = "steel_trap",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "harpoon",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains > 30",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains > 30",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains > 30",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains > 60 || time_to_die < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.guardian_of_azeroth.up & ( buff.berserking.up || buff.blood_fury.up || ! race.troll ) || ( consumable.potion_of_unbridled_fury & time_to_die < 61 || time_to_die < 26 ) || ! essence.condensed_lifeforce.major & buff.coordinated_assault.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.distance >= 6",
|
|
["action"] = "aspect_of_the_eagle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "ashvanes_razor_coral",
|
|
["action"] = "ashvanes_razor_coral",
|
|
["criteria"] = "buff.memory_of_lucid_dreams.up & target.time_to_die < cooldown.memory_of_lucid_dreams.remains + 15 || buff.guardian_of_azeroth.stack = 5 & target.time_to_die < cooldown.guardian_of_azeroth.remains + 20 || debuff.razor_coral_debuff.down || target.time_to_die < 21 || buff.worldvein_resonance.remains & target.time_to_die < cooldown.worldvein_resonance.remains + 18 || ! talent.birds_of_prey.enabled & target.time_to_die < cooldown.coordinated_assault.remains + 20 & buff.coordinated_assault.remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "galecallers_boon",
|
|
["action"] = "galecallers_boon",
|
|
["criteria"] = "cooldown.memory_of_lucid_dreams.remains || talent.wildfire_infusion.enabled & cooldown.coordinated_assault.remains || ! essence.memory_of_lucid_dreams.major & cooldown.coordinated_assault.remains",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "raid_event.adds.in > 90 & focus < focus.max - 25 || ( active_enemies > 1 & ! talent.birds_of_prey.enabled || active_enemies > 2 ) & ( buff.blur_of_talons.up & buff.blur_of_talons.remains > 3 * gcd || ! buff.blur_of_talons.up )",
|
|
["action"] = "focused_azerite_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( raid_event.adds.remains > 90 || ! raid_event.adds.exists ) || ( active_enemies > 1 & ! talent.birds_of_prey.enabled || active_enemies > 2 ) ) & focus < focus.max",
|
|
["action"] = "blood_of_the_enemy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( raid_event.adds.remains > 60 || ! raid_event.adds.exists ) || ( active_enemies > 1 & ! talent.birds_of_prey.enabled || active_enemies > 2 ) ) & focus < focus.max",
|
|
["action"] = "purifying_blast",
|
|
},
|
|
{
|
|
["action"] = "guardian_of_azeroth",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ripple_in_space",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "full_recharge_time < 1 * gcd",
|
|
["action"] = "concentrated_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["action"] = "worldvein_resonance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct > 80 || target.health.pct <= 20 || target.time_to_pct_20 > 30",
|
|
["action"] = "reaping_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "essence.memory_of_lucid_dreams.major & refreshable & buff.vipers_venom.up & ! cooldown.memory_of_lucid_dreams.remains",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "essence.memory_of_lucid_dreams.major & ! cooldown.memory_of_lucid_dreams.remains",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "essence.memory_of_lucid_dreams.major & full_recharge_time < 1.5 * gcd & focus < action.mongoose_bite.cost & ! cooldown.memory_of_lucid_dreams.remains",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus < action.mongoose_bite.cost & buff.coordinated_assault.up",
|
|
["action"] = "memory_of_lucid_dreams",
|
|
},
|
|
},
|
|
["apwfi"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blur_of_talons.up & buff.blur_of_talons.remains < gcd",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blur_of_talons.up & buff.blur_of_talons.remains < gcd",
|
|
["action"] = "raptor_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.serpent_sting.ticking",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["action"] = "a_murder_of_crows",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "full_recharge_time < 1.5 * gcd || focus + cast_regen < focus.max & ( next_wi_bomb.volatile & dot.serpent_sting.ticking & dot.serpent_sting.refreshable || next_wi_bomb.pheromone & ! buff.mongoose_fury.up & focus + cast_regen < focus.max - action.kill_command.cast_regen * 3 )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.remains & next_wi_bomb.pheromone",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "full_recharge_time < 1.5 * gcd & focus + cast_regen < focus.max - 20",
|
|
["target_if"] = "",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "steel_trap",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack = 3 || dot.shrapnel_bomb.ticking",
|
|
["action"] = "raptor_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.shrapnel_bomb.ticking",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_wi_bomb.shrapnel & focus > 30 & dot.serpent_sting.remains > 5 * gcd",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.mongoose_fury.remains",
|
|
["action"] = "chakrams",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable",
|
|
["action"] = "serpent_sting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["criteria"] = "focus + cast_regen < focus.max & ( buff.mongoose_fury.stack < 5 || focus < action.mongoose_bite.cost )",
|
|
["target_if"] = "",
|
|
},
|
|
{
|
|
["action"] = "raptor_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.up || focus > 40 || dot.shrapnel_bomb.ticking",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_wi_bomb.volatile & dot.serpent_sting.ticking || next_wi_bomb.pheromone || next_wi_bomb.shrapnel & focus > 50",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
},
|
|
["utility"] = {
|
|
{
|
|
["action"] = "muzzle",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "serenity_dust",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spore_cloud",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "soothing_water",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "sonic_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "nether_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "chijis_tranquility",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "spirit_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "natures_grace",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20200525,
|
|
["warnings"] = "WARNING: The import for 'cleave' required some automated changes.\nLine 3: Removed min:X check (not available in emulation) (1x).\nLine 9: Removed max:X check (not available in emulation) (1x).\n\nWARNING: The import for 'apwfi' required some automated changes.\nLine 8: Removed min:X check (not available in emulation) (1x).\nLine 15: Removed min:X check (not available in emulation) (1x).\n\nImported 9 action lists.\n",
|
|
["profile"] = "# Survival Hunter\n# https://github.com/simulationcraft/simc/\n# May 25, 2020\n\n# Changes:\n# - Added Muzzle to default action list.\n# - Changed target_if expressions to cycle_targets.\n# - Modified carve_cdr to work more easily with the addon's implementation of variable.\n# - Added utility APL.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/augmentation\n# actions.precombat+=/food\nactions.precombat+=/summon_pet\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/use_item,effect_name=cyclotronic_blast,if=!raid_event.invulnerable.exists\nactions.precombat+=/guardian_of_azeroth\nactions.precombat+=/coordinated_assault\nactions.precombat+=/worldvein_resonance\nactions.precombat+=/potion,dynamic_prepot=1\nactions.precombat+=/steel_trap\nactions.precombat+=/harpoon\n\nactions.utility=muzzle\nactions.utility+=/serenity_dust\nactions.utility+=/spore_cloud\nactions.utility+=/soothing_water\nactions.utility+=/sonic_blast\nactions.utility+=/nether_shock\nactions.utility+=/chijis_tranquility\nactions.utility+=/spirit_shock\nactions.utility+=/natures_grace\n\n# Executed every time the actor is available.\nactions=call_action_list,name=utility,if=debuff.casting.up||buff.dispellable_magic.up||buff.dispellable_enrage.up\nactions+=/use_items\nactions+=/call_action_list,name=cds\nactions+=/mongoose_bite,if=active_enemies=1&target.time_to_die<focus%(action.mongoose_bite.cost-cast_regen)*gcd\nactions+=/call_action_list,name=apwfi,if=active_enemies<3&talent.chakrams.enabled&talent.alpha_predator.enabled\nactions+=/call_action_list,name=wfi,if=active_enemies<3&talent.chakrams.enabled\nactions+=/call_action_list,name=st,if=active_enemies<3&!talent.alpha_predator.enabled&!talent.wildfire_infusion.enabled\nactions+=/call_action_list,name=apst,if=active_enemies<3&talent.alpha_predator.enabled&!talent.wildfire_infusion.enabled\nactions+=/call_action_list,name=apwfi,if=active_enemies<3&talent.alpha_predator.enabled&talent.wildfire_infusion.enabled\nactions+=/call_action_list,name=wfi,if=active_enemies<3&!talent.alpha_predator.enabled&talent.wildfire_infusion.enabled\nactions+=/call_action_list,name=cleave,if=active_enemies>1&!talent.birds_of_prey.enabled||active_enemies>2\nactions+=/concentrated_flame\nactions+=/arcane_torrent\nactions+=/bag_of_tricks\n\nactions.apst=mongoose_bite,if=buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd)\nactions.apst+=/raptor_strike,if=buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd)\nactions.apst+=/flanking_strike,if=focus+cast_regen<focus.max\nactions.apst+=/kill_command,cycle_targets=1,if=full_recharge_time<1.5*gcd&focus+cast_regen<focus.max\nactions.apst+=/steel_trap,if=focus+cast_regen<focus.max\nactions.apst+=/wildfire_bomb,if=focus+cast_regen<focus.max&!ticking&!buff.memory_of_lucid_dreams.up&(full_recharge_time<1.5*gcd||!dot.wildfire_bomb.ticking&!buff.coordinated_assault.up||!dot.wildfire_bomb.ticking&buff.mongoose_fury.stack<1)||time_to_die<18&!dot.wildfire_bomb.ticking\nactions.apst+=/serpent_sting,if=!dot.serpent_sting.ticking&!buff.coordinated_assault.up\nactions.apst+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max&(buff.mongoose_fury.stack<5||focus<action.mongoose_bite.cost)\nactions.apst+=/serpent_sting,if=refreshable&!buff.coordinated_assault.up&buff.mongoose_fury.stack<5\nactions.apst+=/a_murder_of_crows,if=!buff.coordinated_assault.up\nactions.apst+=/coordinated_assault,if=!buff.coordinated_assault.up\nactions.apst+=/mongoose_bite,if=buff.mongoose_fury.up||focus+cast_regen>focus.max-10||buff.coordinated_assault.up\nactions.apst+=/raptor_strike\nactions.apst+=/wildfire_bomb,if=!ticking\n\nactions.apwfi=mongoose_bite,if=buff.blur_of_talons.up&buff.blur_of_talons.remains<gcd\nactions.apwfi+=/raptor_strike,if=buff.blur_of_talons.up&buff.blur_of_talons.remains<gcd\nactions.apwfi+=/serpent_sting,if=!dot.serpent_sting.ticking\nactions.apwfi+=/a_murder_of_crows\nactions.apwfi+=/wildfire_bomb,if=full_recharge_time<1.5*gcd||focus+cast_regen<focus.max&(next_wi_bomb.volatile&dot.serpent_sting.ticking&dot.serpent_sting.refreshable||next_wi_bomb.pheromone&!buff.mongoose_fury.up&focus+cast_regen<focus.max-action.kill_command.cast_regen*3)\nactions.apwfi+=/coordinated_assault\nactions.apwfi+=/mongoose_bite,if=buff.mongoose_fury.remains&next_wi_bomb.pheromone\nactions.apwfi+=/kill_command,target_if=min:bloodseeker.remains,if=full_recharge_time<1.5*gcd&focus+cast_regen<focus.max-20\nactions.apwfi+=/steel_trap,if=focus+cast_regen<focus.max\nactions.apwfi+=/raptor_strike,if=buff.tip_of_the_spear.stack=3||dot.shrapnel_bomb.ticking\nactions.apwfi+=/mongoose_bite,if=dot.shrapnel_bomb.ticking\nactions.apwfi+=/wildfire_bomb,if=next_wi_bomb.shrapnel&focus>30&dot.serpent_sting.remains>5*gcd\nactions.apwfi+=/chakrams,if=!buff.mongoose_fury.remains\nactions.apwfi+=/serpent_sting,if=refreshable\nactions.apwfi+=/kill_command,target_if=min:bloodseeker.remains,if=focus+cast_regen<focus.max&(buff.mongoose_fury.stack<5||focus<action.mongoose_bite.cost)\nactions.apwfi+=/raptor_strike\nactions.apwfi+=/mongoose_bite,if=buff.mongoose_fury.up||focus>40||dot.shrapnel_bomb.ticking\nactions.apwfi+=/wildfire_bomb,if=next_wi_bomb.volatile&dot.serpent_sting.ticking||next_wi_bomb.pheromone||next_wi_bomb.shrapnel&focus>50\n\nactions.cds=blood_fury,if=cooldown.coordinated_assault.remains>30\nactions.cds+=/ancestral_call,if=cooldown.coordinated_assault.remains>30\nactions.cds+=/fireblood,if=cooldown.coordinated_assault.remains>30\nactions.cds+=/lights_judgment\nactions.cds+=/berserking,if=cooldown.coordinated_assault.remains>60||time_to_die<13\nactions.cds+=/potion,if=buff.guardian_of_azeroth.up&(buff.berserking.up||buff.blood_fury.up||!race.troll)||(consumable.potion_of_unbridled_fury&time_to_die<61||time_to_die<26)||!essence.condensed_lifeforce.major&buff.coordinated_assault.up\nactions.cds+=/aspect_of_the_eagle,if=target.distance>=6\nactions.cds+=/use_item,name=ashvanes_razor_coral,if=buff.memory_of_lucid_dreams.up&target.time_to_die<cooldown.memory_of_lucid_dreams.remains+15||buff.guardian_of_azeroth.stack=5&target.time_to_die<cooldown.guardian_of_azeroth.remains+20||debuff.razor_coral_debuff.down||target.time_to_die<21||buff.worldvein_resonance.remains&target.time_to_die<cooldown.worldvein_resonance.remains+18||!talent.birds_of_prey.enabled&target.time_to_die<cooldown.coordinated_assault.remains+20&buff.coordinated_assault.remains\nactions.cds+=/use_item,name=galecallers_boon,if=cooldown.memory_of_lucid_dreams.remains||talent.wildfire_infusion.enabled&cooldown.coordinated_assault.remains||!essence.memory_of_lucid_dreams.major&cooldown.coordinated_assault.remains\nactions.cds+=/use_item,name=azsharas_font_of_power\nactions.cds+=/focused_azerite_beam,if=raid_event.adds.in>90&focus<focus.max-25||(active_enemies>1&!talent.birds_of_prey.enabled||active_enemies>2)&(buff.blur_of_talons.up&buff.blur_of_talons.remains>3*gcd||!buff.blur_of_talons.up)\nactions.cds+=/blood_of_the_enemy,if=((raid_event.adds.remains>90||!raid_event.adds.exists)||(active_enemies>1&!talent.birds_of_prey.enabled||active_enemies>2))&focus<focus.max\nactions.cds+=/purifying_blast,if=((raid_event.adds.remains>60||!raid_event.adds.exists)||(active_enemies>1&!talent.birds_of_prey.enabled||active_enemies>2))&focus<focus.max\nactions.cds+=/guardian_of_azeroth\nactions.cds+=/ripple_in_space\nactions.cds+=/concentrated_flame,if=full_recharge_time<1*gcd\nactions.cds+=/the_unbound_force,if=buff.reckless_force.up\nactions.cds+=/worldvein_resonance\nactions.cds+=/reaping_flames,if=target.health.pct>80||target.health.pct<=20||target.time_to_pct_20>30\nactions.cds+=/serpent_sting,if=essence.memory_of_lucid_dreams.major&refreshable&buff.vipers_venom.up&!cooldown.memory_of_lucid_dreams.remains\nactions.cds+=/mongoose_bite,if=essence.memory_of_lucid_dreams.major&!cooldown.memory_of_lucid_dreams.remains\nactions.cds+=/wildfire_bomb,if=essence.memory_of_lucid_dreams.major&full_recharge_time<1.5*gcd&focus<action.mongoose_bite.cost&!cooldown.memory_of_lucid_dreams.remains\nactions.cds+=/memory_of_lucid_dreams,if=focus<action.mongoose_bite.cost&buff.coordinated_assault.up\n\nactions.cleave=variable,name=carve_cdr,op=setif,value=active_enemies,value_else=5,condition=active_enemies<5\nactions.cleave+=/mongoose_bite,if=azerite.blur_of_talons.rank>0&(buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd||buff.coordinated_assault.remains&!buff.blur_of_talons.remains))\nactions.cleave+=/mongoose_bite,target_if=min:time_to_die,if=debuff.latent_poison.stack>(active_enemies||9)&target.time_to_die<active_enemies*gcd\nactions.cleave+=/a_murder_of_crows\nactions.cleave+=/coordinated_assault\nactions.cleave+=/carve,if=dot.shrapnel_bomb.ticking&!talent.hydras_bite.enabled||dot.shrapnel_bomb.ticking&active_enemies>5\nactions.cleave+=/wildfire_bomb,if=!talent.guerrilla_tactics.enabled||full_recharge_time<gcd||raid_event.adds.remains<6&raid_event.adds.exists\nactions.cleave+=/butchery,if=charges_fractional>2.5||dot.shrapnel_bomb.ticking||cooldown.wildfire_bomb.remains>active_enemies-gcd||debuff.blood_of_the_enemy.remains||raid_event.adds.remains<5&raid_event.adds.exists\nactions.cleave+=/mongoose_bite,target_if=max:debuff.latent_poison.stack,if=debuff.latent_poison.stack>8\nactions.cleave+=/chakrams\nactions.cleave+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max\nactions.cleave+=/harpoon,if=talent.terms_of_engagement.enabled\nactions.cleave+=/carve,if=talent.guerrilla_tactics.enabled\nactions.cleave+=/butchery,if=cooldown.wildfire_bomb.remains>(active_enemies||5)\nactions.cleave+=/flanking_strike,if=focus+cast_regen<focus.max\nactions.cleave+=/wildfire_bomb,if=dot.wildfire_bomb.refreshable||talent.wildfire_infusion.enabled\nactions.cleave+=/serpent_sting,cycle_targets=1,if=buff.vipers_venom.react\nactions.cleave+=/carve,if=cooldown.wildfire_bomb.remains>variable.carve_cdr%2\nactions.cleave+=/steel_trap\nactions.cleave+=/serpent_sting,cycle_targets=1,if=refreshable&buff.tip_of_the_spear.stack<3&next_wi_bomb.volatile||refreshable&azerite.latent_poison.rank>0\n# To simulate usage for Mongoose Bite or Raptor Strike during Aspect of the Eagle, copy each occurrence of the action and append _eagle to the action name.\nactions.cleave+=/mongoose_bite,cycle_targets=1\nactions.cleave+=/raptor_strike,cycle_targets=1\n\nactions.st=harpoon,if=talent.terms_of_engagement.enabled\nactions.st+=/flanking_strike,if=focus+cast_regen<focus.max\nactions.st+=/raptor_strike,if=buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd)\n# To simulate usage for Mongoose Bite or Raptor Strike during Aspect of the Eagle, copy each occurrence of the action and append _eagle to the action name.\nactions.st+=/mongoose_bite,if=buff.coordinated_assault.up&(buff.coordinated_assault.remains<1.5*gcd||buff.blur_of_talons.up&buff.blur_of_talons.remains<1.5*gcd)\nactions.st+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max\nactions.st+=/serpent_sting,if=buff.vipers_venom.up&buff.vipers_venom.remains<1*gcd\nactions.st+=/steel_trap,if=focus+cast_regen<focus.max\nactions.st+=/wildfire_bomb,if=focus+cast_regen<focus.max&refreshable&full_recharge_time<gcd&!buff.memory_of_lucid_dreams.up||focus+cast_regen<focus.max&(!dot.wildfire_bomb.ticking&(!buff.coordinated_assault.up||buff.mongoose_fury.stack<1||time_to_die<18||!dot.wildfire_bomb.ticking&azerite.wilderness_survival.rank>0))&!buff.memory_of_lucid_dreams.up\nactions.st+=/serpent_sting,if=buff.vipers_venom.up&dot.serpent_sting.remains<4*gcd||dot.serpent_sting.refreshable&!buff.coordinated_assault.up\nactions.st+=/a_murder_of_crows,if=!buff.coordinated_assault.up\nactions.st+=/coordinated_assault,if=!buff.coordinated_assault.up\nactions.st+=/mongoose_bite,if=buff.mongoose_fury.up||focus+cast_regen>focus.max-20&talent.vipers_venom.enabled||focus+cast_regen>focus.max-1&talent.terms_of_engagement.enabled||buff.coordinated_assault.up\nactions.st+=/raptor_strike\nactions.st+=/wildfire_bomb,if=dot.wildfire_bomb.refreshable\nactions.st+=/serpent_sting,if=buff.vipers_venom.up\n\nactions.wfi=harpoon,if=focus+cast_regen<focus.max&talent.terms_of_engagement.enabled\nactions.wfi+=/mongoose_bite,if=buff.blur_of_talons.up&buff.blur_of_talons.remains<gcd\nactions.wfi+=/raptor_strike,if=buff.blur_of_talons.up&buff.blur_of_talons.remains<gcd\nactions.wfi+=/serpent_sting,if=buff.vipers_venom.up&buff.vipers_venom.remains<1.5*gcd||!dot.serpent_sting.ticking\nactions.wfi+=/wildfire_bomb,if=full_recharge_time<1.5*gcd&focus+cast_regen<focus.max||(next_wi_bomb.volatile&dot.serpent_sting.ticking&dot.serpent_sting.refreshable||next_wi_bomb.pheromone&!buff.mongoose_fury.up&focus+cast_regen<focus.max-action.kill_command.cast_regen*3)\nactions.wfi+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max-focus.regen\nactions.wfi+=/a_murder_of_crows\nactions.wfi+=/steel_trap,if=focus+cast_regen<focus.max\nactions.wfi+=/wildfire_bomb,if=full_recharge_time<1.5*gcd\nactions.wfi+=/coordinated_assault\nactions.wfi+=/serpent_sting,if=buff.vipers_venom.up&dot.serpent_sting.remains<4*gcd\nactions.wfi+=/mongoose_bite,if=dot.shrapnel_bomb.ticking||buff.mongoose_fury.stack=5\nactions.wfi+=/wildfire_bomb,if=next_wi_bomb.shrapnel&dot.serpent_sting.remains>5*gcd\nactions.wfi+=/serpent_sting,if=refreshable\nactions.wfi+=/chakrams,if=!buff.mongoose_fury.remains\nactions.wfi+=/mongoose_bite\nactions.wfi+=/raptor_strike\nactions.wfi+=/serpent_sting,if=buff.vipers_venom.up\nactions.wfi+=/wildfire_bomb,if=next_wi_bomb.volatile&dot.serpent_sting.ticking||next_wi_bomb.pheromone||next_wi_bomb.shrapnel",
|
|
["spec"] = 255,
|
|
},
|
|
},
|
|
},
|
|
["Quillika - Thunderhorn"] = {
|
|
["runOnce"] = {
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
},
|
|
["specs"] = {
|
|
[103] = {
|
|
["maxRefresh"] = 10,
|
|
["custom2Name"] = "Custom 2",
|
|
["throttleRefresh"] = false,
|
|
["settings"] = {
|
|
["brutal_charges"] = 2,
|
|
},
|
|
["aoe"] = 3,
|
|
["gcdSync"] = true,
|
|
["damageDots"] = false,
|
|
["damage"] = true,
|
|
["enabled"] = true,
|
|
["debuffPadding"] = 0,
|
|
["maxTime"] = 33,
|
|
["custom1Name"] = "Custom 1",
|
|
["package"] = "Feral",
|
|
["buffPadding"] = 0,
|
|
["nameplateRange"] = 8,
|
|
["cycle_min"] = 6,
|
|
["cycle"] = false,
|
|
["potion"] = "focused_resolve",
|
|
["nameplates"] = true,
|
|
["potionsReset"] = 20180919.1,
|
|
["damageExpiration"] = 3,
|
|
["throttleTime"] = false,
|
|
["damageRange"] = 0,
|
|
},
|
|
[104] = {
|
|
["maxRefresh"] = 10,
|
|
["custom2Name"] = "Custom 2",
|
|
["throttleRefresh"] = false,
|
|
["settings"] = {
|
|
["ironfur_damage_threshold"] = 5,
|
|
["maul_rage"] = 20,
|
|
},
|
|
["aoe"] = 3,
|
|
["gcdSync"] = true,
|
|
["damageDots"] = false,
|
|
["damage"] = true,
|
|
["enabled"] = true,
|
|
["debuffPadding"] = 0,
|
|
["maxTime"] = 33,
|
|
["custom1Name"] = "Custom 1",
|
|
["package"] = "Guardian",
|
|
["buffPadding"] = 0,
|
|
["nameplateRange"] = 8,
|
|
["cycle_min"] = 6,
|
|
["cycle"] = false,
|
|
["potion"] = "focused_resolve",
|
|
["nameplates"] = true,
|
|
["potionsReset"] = 20180919.1,
|
|
["damageExpiration"] = 6,
|
|
["throttleTime"] = false,
|
|
["damageRange"] = 0,
|
|
},
|
|
[102] = {
|
|
["maxRefresh"] = 10,
|
|
["custom2Name"] = "Custom 2",
|
|
["throttleRefresh"] = false,
|
|
["settings"] = {
|
|
["starlord_cancel"] = false,
|
|
},
|
|
["aoe"] = 3,
|
|
["gcdSync"] = true,
|
|
["damageDots"] = false,
|
|
["damage"] = true,
|
|
["enabled"] = true,
|
|
["debuffPadding"] = 0,
|
|
["maxTime"] = 33,
|
|
["custom1Name"] = "Custom 1",
|
|
["package"] = "Balance",
|
|
["buffPadding"] = 0,
|
|
["nameplateRange"] = 8,
|
|
["cycle_min"] = 6,
|
|
["cycle"] = false,
|
|
["potion"] = "unbridled_fury",
|
|
["nameplates"] = false,
|
|
["potionsReset"] = 20180919.1,
|
|
["damageExpiration"] = 6,
|
|
["throttleTime"] = false,
|
|
["damageRange"] = 0,
|
|
},
|
|
},
|
|
["displays"] = {
|
|
["Interrupts"] = {
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Feral"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20200222,
|
|
["spec"] = 103,
|
|
["desc"] = "# Feral Druid\n# https://github.com/simulationcraft/simc/\n# February 22, 2020\n\n# Changes:\n# - Added Skull Bash.\n# - Relaxed Tiger's Fury energy check to apply only when Tiger's Fury is already up.\n# - opener_done is handled internally by the addon; removed these variables. Only bother in boss fights.\n# - Convert target_if conditions to cycle_targets.\n# - Remove 'heart_essence' generic action.\n# - Add Balance Affinity priority.\n# - Reincorporate some of ShmooDude's edits.",
|
|
["profile"] = "# Feral Druid\n# https://github.com/simulationcraft/simc/\n# February 22, 2020\n\n# Changes:\n# - Added Skull Bash.\n# - Relaxed Tiger's Fury energy check to apply only when Tiger's Fury is already up.\n# - opener_done is handled internally by the addon; removed these variables. Only bother in boss fights.\n# - Convert target_if conditions to cycle_targets.\n# - Remove 'heart_essence' generic action.\n# - Add Balance Affinity priority.\n# - Reincorporate some of ShmooDude's edits.\n# - Don't use Brutal Slash w/ Wild Fleshrending if Thrash isn't up.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/food\n# actions.precombat+=/augmentation\n# It is worth it for almost everyone to maintain thrash\nactions.precombat+=/variable,name=use_thrash,value=0\nactions.precombat+=/variable,name=use_thrash,value=2,if=azerite.wild_fleshrending.enabled\nactions.precombat+=/variable,name=rip_ticks,value=8\nactions.precombat+=/regrowth,if=buff.moonkin_form.down&talent.bloodtalons.enabled\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/prowl,if=buff.moonkin_form.down\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/potion\nactions.precombat+=/berserk,if=buff.moonkin_form.down\nactions.precombat+=/tigers_fury,if=buff.moonkin_form.down&buff.tigers_fury.down\nactions.precombat+=/cat_form,if=buff.moonkin_form.down\n\n# Executed every time the actor is available.\nactions=skull_bash,if=!buff.prowl.up&!buff.shadowmeld.up\nactions+=/run_action_list,name=balance,if=talent.balance_affinity.enabled&buff.moonkin_form.up\nactions+=/call_action_list,name=opener,if=!opener_done&talent.sabertooth.enabled&(buff.berserk.up||buff.incarnation.up)\nactions+=/cat_form,if=!buff.cat_form.up\nactions+=/rake,if=buff.prowl.up||buff.shadowmeld.up\nactions+=/call_action_list,name=cooldowns\nactions+=/ferocious_bite,cycle_targets=1,if=dot.rip.ticking&dot.rip.remains<3&target.time_to_die>10&(talent.sabertooth.enabled)\nactions+=/ferocious_bite,cycle_targets=1,if=talent.sabertooth.enabled&combo_points>spell_targets.thrash_cat&dot.rip.ticking&dot.rip.remains<3&target.time_to_die>dot.rip.remains+variable.rip_ticks*action.rip.tick_time\n# actions+=/regrowth,if=combo_points=5&buff.predatory_swiftness.up&talent.bloodtalons.enabled&buff.bloodtalons.down\nactions+=/run_action_list,name=finishers,if=combo_points>4\nactions+=/call_action_list,name=generators_aoe,if=spell_targets.thrash_cat>1\nactions+=/run_action_list,name=generators\n\nactions.cooldowns=berserk,if=energy>=30&(cooldown.tigers_fury.remains>5||buff.tigers_fury.up)\nactions.cooldowns+=/tigers_fury,if=energy.deficit>=60||buff.tigers_fury.down\nactions.cooldowns+=/berserking\nactions.cooldowns+=/thorns,if=active_enemies>desired_targets||raid_event.adds.in>45\nactions.cooldowns+=/the_unbound_force,if=buff.reckless_force.up||buff.tigers_fury.up\nactions.cooldowns+=/memory_of_lucid_dreams,if=buff.tigers_fury.up&buff.berserk.down\nactions.cooldowns+=/blood_of_the_enemy,if=buff.tigers_fury.up\nactions.cooldowns+=/feral_frenzy,if=combo_points=0\nactions.cooldowns+=/focused_azerite_beam,if=active_enemies>desired_targets||(raid_event.adds.in>90&energy.deficit>=50)\nactions.cooldowns+=/purifying_blast,if=active_enemies>desired_targets||raid_event.adds.in>60\nactions.cooldowns+=/guardian_of_azeroth,if=buff.tigers_fury.up\nactions.cooldowns+=/concentrated_flame,if=buff.tigers_fury.up\nactions.cooldowns+=/ripple_in_space,if=buff.tigers_fury.up\nactions.cooldowns+=/worldvein_resonance,if=buff.tigers_fury.up\nactions.cooldowns+=/reaping_flames,if=target.time_to_die<1.5||((target.health.pct>80||target.health.pct<=20)&target.time_to_die>29)||(target.time_to_pct_20>30&target.time_to_die>44)\nactions.cooldowns+=/incarnation,if=energy>=30&(cooldown.tigers_fury.remains>15||buff.tigers_fury.up)\nactions.cooldowns+=/potion,if=target.time_to_die<65||(time_to_die<180&(buff.berserk.up||buff.incarnation.up))\nactions.cooldowns+=/shadowmeld,if=combo_points<5&energy>=action.rake.cost&dot.rake.pmultiplier<2.1&buff.tigers_fury.up&(buff.bloodtalons.up||!talent.bloodtalons.enabled)&(!talent.incarnation.enabled||cooldown.incarnation.remains>18)&!buff.incarnation.up\nactions.cooldowns+=/use_item,name=ashvanes_razor_coral,if=debuff.razor_coral_debuff.down||debuff.conductive_ink_debuff.up&target.time_to_pct_30<1.5||!debuff.conductive_ink_debuff.up&(debuff.razor_coral_debuff.stack>=25-10*debuff.blood_of_the_enemy.up||time_to_die<40)&buff.tigers_fury.remains>10\nactions.cooldowns+=/use_item,effect_name=cyclotronic_blast,if=(energy.deficit>=energy.regen*3)&buff.tigers_fury.down&!azerite.jungle_fury.enabled\nactions.cooldowns+=/use_item,effect_name=cyclotronic_blast,if=buff.tigers_fury.up&azerite.jungle_fury.enabled\nactions.cooldowns+=/use_item,effect_name=azsharas_font_of_power,if=energy.deficit>=50\nactions.cooldowns+=/use_items,if=buff.tigers_fury.up||time_to_die<20\n\nactions.finishers=regrowth,if=buff.predatory_swiftness.up&talent.bloodtalons.enabled&buff.bloodtalons.stack<2\nactions.finishers+=/pool_resource,for_next=1\nactions.finishers+=/savage_roar,if=buff.savage_roar.down\nactions.finishers+=/pool_resource,for_next=1\nactions.finishers+=/primal_wrath,cycle_targets=1,if=spell_targets.primal_wrath>1&dot.rip.remains<4\nactions.finishers+=/pool_resource,for_next=1\nactions.finishers+=/primal_wrath,cycle_targets=1,if=spell_targets.primal_wrath>=2\nactions.finishers+=/pool_resource,for_next=1\nactions.finishers+=/rip,cycle_targets=1,if=!talent.sabertooth.enabled&refreshable&target.time_to_die>dot.rip.remains+variable.rip_ticks*action.rip.tick_time\nactions.finishers+=/pool_resource,for_next=1\nactions.finishers+=/rip,cycle_targets=1,if=talent.sabertooth.enabled&(!ticking||remains<=duration*0.3&persistent_multiplier>dot.rip.pmultiplier)&target.time_to_die>dot.rip.remains+variable.rip_ticks*(1+dot.rip.ticking*3)*action.rip.tick_time\nactions.finishers+=/pool_resource,for_next=1\nactions.finishers+=/savage_roar,if=buff.savage_roar.remains<12\nactions.finishers+=/pool_resource,for_next=1\nactions.finishers+=/maim,if=buff.iron_jaws.up\nactions.finishers+=/ferocious_bite,max_energy=1,cycle_targets=1\n\nactions.generators=regrowth,if=talent.bloodtalons.enabled&buff.predatory_swiftness.up&buff.bloodtalons.down&combo_points=4&dot.rake.remains<4\nactions.generators+=/regrowth,if=talent.bloodtalons.enabled&buff.bloodtalons.down&buff.predatory_swiftness.up&talent.lunar_inspiration.enabled&dot.rake.remains<1\nactions.generators+=/brutal_slash,if=spell_targets.brutal_slash>desired_targets&(!azerite.wild_fleshrending.enabled||dot.thrash_cat.ticking)\nactions.generators+=/pool_resource,for_next=1\nactions.generators+=/thrash_cat,if=(refreshable&spell_targets.thrash_cat>2)\nactions.generators+=/pool_resource,for_next=1\nactions.generators+=/thrash_cat,if=(talent.scent_of_blood.enabled&buff.scent_of_blood.down)&spell_targets.thrash_cat>3\nactions.generators+=/pool_resource,for_next=1\nactions.generators+=/swipe_cat,if=buff.scent_of_blood.up||(action.swipe_cat.damage*spell_targets.swipe_cat>(action.rake.damage+(action.rake_bleed.tick_damage*5)))\nactions.generators+=/pool_resource,for_next=1\nactions.generators+=/rake,cycle_targets=1,if=!ticking||(!talent.bloodtalons.enabled&remains<duration*0.3)&target.time_to_die>4\nactions.generators+=/pool_resource,for_next=1\nactions.generators+=/rake,cycle_targets=1,if=talent.bloodtalons.enabled&buff.bloodtalons.up&((remains<=7)&persistent_multiplier>dot.rake.pmultiplier*0.85)&target.time_to_die>4\n# With LI & BT, we can use moonfire to save BT charges, allowing us to better refresh rake\nactions.generators+=/moonfire_cat,if=buff.bloodtalons.up&buff.predatory_swiftness.down&combo_points<5\nactions.generators+=/moonfire_cat,cycle_targets=1,if=refreshable\nactions.generators+=/brutal_slash,if=(!azerite.wild_fleshrending.enabled||dot.thrash_cat.ticking)&buff.tigers_fury.up&(raid_event.adds.in>(1+max_charges-charges_fractional)*recharge_time)\nactions.generators+=/pool_resource,for_next=1\nactions.generators+=/thrash_cat,if=refreshable&((variable.use_thrash=2&(!buff.incarnation.up||azerite.wild_fleshrending.enabled))||spell_targets.thrash_cat>1)\n# actions.generators+=/thrash_cat,if=refreshable&variable.use_thrash=1&buff.clearcasting.react&(!buff.incarnation.up||azerite.wild_fleshrending.enabled)\nactions.generators+=/pool_resource,for_next=1\nactions.generators+=/swipe_cat,if=spell_targets.swipe_cat>1\nactions.generators+=/shred,if=dot.rake.remains>(action.shred.cost+action.rake.cost-energy)%energy.regen||buff.clearcasting.react\n\nactions.generators_aoe=pool_resource,for_next=1\nactions.generators_aoe+=/thrash_cat,if=(refreshable||active_dot.thrash_cat<active_enemies%2)&spell_targets.thrash_cat>2||talent.scent_of_blood.enabled&buff.scent_of_blood.down&spell_targets.thrash_cat>3||!ticking&azerite.wild_fleshrending.enabled\nactions.generators_aoe+=/pool_resource,for_next=1\nactions.generators_aoe+=/brutal_slash,if=spell_targets.brutal_slash>desired_targets\nactions.generators_aoe+=/pool_resource,for_next=1\nactions.generators_aoe+=/swipe_cat,if=buff.scent_of_blood.up\n\n# The opener generally follow the logic of the rest of the apl, but is separated out here for logical clarity\n# We will open with TF, you can safely cast this from stealth without breaking it.\nactions.opener=tigers_fury\n# Always open with rake, consuming stealth and one BT charge (if talented)\nactions.opener+=/rake,if=!ticking||buff.prowl.up\n# Lets make sure we end the opener \"sequence\" when our first rip is ticking\n# actions.opener+=/variable,name=opener_done,value=dot.rip.ticking\n# Break out of the action list\n# actions.opener+=/wait,sec=0.001,if=dot.rip.ticking\n# If we have LI, and haven't applied it yet use moonfire.\nactions.opener+=/moonfire_cat,if=!ticking\n# no need to wait for 5 CPs anymore, just rip and we are up and running\nactions.opener+=/primal_wrath,if=active_enemies>1&(buff.tigers_fury.up&(buff.bloodtalons.up||!talent.bloodtalons.enabled)&(!talent.lunar_inspiration.enabled||dot.moonfire_cat.ticking)&!ticking)\nactions.opener+=/rip,if=active_enemies=1&(buff.tigers_fury.up&(buff.bloodtalons.up||!talent.bloodtalons.enabled)&dot.rake.ticking&(!talent.lunar_inspiration.enabled||dot.moonfire_cat.ticking)&!ticking)\n\nactions.balance=sunfire,if=refreshable||(active_enemies>1&(dot.sunfire.refreshable||active_dot.sunfire<active_enemies))\nactions.balance+=/lunar_strike,if=active_enemies>4||(active_enemies>1&buff.lunar_empowerment.up)\nactions.balance+=/solar_wrath,if=active_enemies>2&buff.solar_empowerment.up\nactions.balance+=/starsurge\nactions.balance+=/solar_wrath,if=buff.solar_empowerment.up\nactions.balance+=/lunar_strike,if=buff.lunar_empowerment.up\nactions.balance+=/solar_wrath",
|
|
["version"] = 20200222,
|
|
["warnings"] = "Imported 8 action lists.\n",
|
|
["lists"] = {
|
|
["opener"] = {
|
|
{
|
|
["action"] = "tigers_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking || buff.prowl.up",
|
|
["action"] = "rake",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking",
|
|
["action"] = "moonfire_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 1 & ( buff.tigers_fury.up & ( buff.bloodtalons.up || ! talent.bloodtalons.enabled ) & ( ! talent.lunar_inspiration.enabled || dot.moonfire_cat.ticking ) & ! ticking )",
|
|
["action"] = "primal_wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 & ( buff.tigers_fury.up & ( buff.bloodtalons.up || ! talent.bloodtalons.enabled ) & dot.rake.ticking & ( ! talent.lunar_inspiration.enabled || dot.moonfire_cat.ticking ) & ! ticking )",
|
|
["action"] = "rip",
|
|
},
|
|
},
|
|
["generators_aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( refreshable || active_dot.thrash_cat < active_enemies % 2 ) & spell_targets.thrash_cat > 2 || talent.scent_of_blood.enabled & buff.scent_of_blood.down & spell_targets.thrash_cat > 3 || ! ticking & azerite.wild_fleshrending.enabled",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.brutal_slash > desired_targets",
|
|
["action"] = "brutal_slash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.scent_of_blood.up",
|
|
["action"] = "swipe_cat",
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.prowl.up & ! buff.shadowmeld.up",
|
|
["action"] = "skull_bash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "talent.balance_affinity.enabled & buff.moonkin_form.up",
|
|
["list_name"] = "balance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "! opener_done & talent.sabertooth.enabled & ( buff.berserk.up || buff.incarnation.up )",
|
|
["list_name"] = "opener",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.cat_form.up",
|
|
["action"] = "cat_form",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.prowl.up || buff.shadowmeld.up",
|
|
["action"] = "rake",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rip.ticking & dot.rip.remains < 3 & target.time_to_die > 10 & ( talent.sabertooth.enabled )",
|
|
["action"] = "ferocious_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.sabertooth.enabled & combo_points > spell_targets.thrash_cat & dot.rip.ticking & dot.rip.remains < 3 & target.time_to_die > dot.rip.remains + variable.rip_ticks * action.rip.tick_time",
|
|
["action"] = "ferocious_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "combo_points > 4",
|
|
["list_name"] = "finishers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "spell_targets.thrash_cat > 1",
|
|
["list_name"] = "generators_aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "generators",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "use_thrash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["var_name"] = "use_thrash",
|
|
["criteria"] = "azerite.wild_fleshrending.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "8",
|
|
["var_name"] = "rip_ticks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.moonkin_form.down & talent.bloodtalons.enabled",
|
|
["action"] = "regrowth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.moonkin_form.down",
|
|
["action"] = "prowl",
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.moonkin_form.down",
|
|
["action"] = "berserk",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.moonkin_form.down & buff.tigers_fury.down",
|
|
["action"] = "tigers_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.moonkin_form.down",
|
|
["action"] = "cat_form",
|
|
},
|
|
},
|
|
["generators"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.bloodtalons.enabled & buff.predatory_swiftness.up & buff.bloodtalons.down & combo_points = 4 & dot.rake.remains < 4",
|
|
["action"] = "regrowth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.bloodtalons.enabled & buff.bloodtalons.down & buff.predatory_swiftness.up & talent.lunar_inspiration.enabled & dot.rake.remains < 1",
|
|
["action"] = "regrowth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.brutal_slash > desired_targets & ( ! azerite.wild_fleshrending.enabled || dot.thrash_cat.ticking )",
|
|
["action"] = "brutal_slash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( refreshable & spell_targets.thrash_cat > 2 )",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.scent_of_blood.enabled & buff.scent_of_blood.down ) & spell_targets.thrash_cat > 3",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.scent_of_blood.up || ( action.swipe_cat.damage * spell_targets.swipe_cat > ( action.rake.damage + ( action.rake_bleed.tick_damage * 5 ) ) )",
|
|
["action"] = "swipe_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking || ( ! talent.bloodtalons.enabled & remains < duration * 0.3 ) & target.time_to_die > 4",
|
|
["action"] = "rake",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.bloodtalons.enabled & buff.bloodtalons.up & ( ( remains <= 7 ) & persistent_multiplier > dot.rake.pmultiplier * 0.85 ) & target.time_to_die > 4",
|
|
["action"] = "rake",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bloodtalons.up & buff.predatory_swiftness.down & combo_points < 5",
|
|
["action"] = "moonfire_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable",
|
|
["action"] = "moonfire_cat",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! azerite.wild_fleshrending.enabled || dot.thrash_cat.ticking ) & buff.tigers_fury.up & ( raid_event.adds.in > ( 1 + max_charges - charges_fractional ) * recharge_time )",
|
|
["action"] = "brutal_slash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ( ( variable.use_thrash = 2 & ( ! buff.incarnation.up || azerite.wild_fleshrending.enabled ) ) || spell_targets.thrash_cat > 1 )",
|
|
["action"] = "thrash_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.swipe_cat > 1",
|
|
["action"] = "swipe_cat",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.rake.remains > ( action.shred.cost + action.rake.cost - energy ) % energy.regen || buff.clearcasting.react",
|
|
["action"] = "shred",
|
|
},
|
|
},
|
|
["finishers"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.predatory_swiftness.up & talent.bloodtalons.enabled & buff.bloodtalons.stack < 2",
|
|
["action"] = "regrowth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.savage_roar.down",
|
|
["action"] = "savage_roar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.primal_wrath > 1 & dot.rip.remains < 4",
|
|
["action"] = "primal_wrath",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.primal_wrath >= 2",
|
|
["action"] = "primal_wrath",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.sabertooth.enabled & refreshable & target.time_to_die > dot.rip.remains + variable.rip_ticks * action.rip.tick_time",
|
|
["action"] = "rip",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.sabertooth.enabled & ( ! ticking || remains <= duration * 0.3 & persistent_multiplier > dot.rip.pmultiplier ) & target.time_to_die > dot.rip.remains + variable.rip_ticks * ( 1 + dot.rip.ticking * 3 ) * action.rip.tick_time",
|
|
["action"] = "rip",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.savage_roar.remains < 12",
|
|
["action"] = "savage_roar",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["for_next"] = 1,
|
|
["action"] = "pool_resource",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.iron_jaws.up",
|
|
["action"] = "maim",
|
|
},
|
|
{
|
|
["max_energy"] = "1",
|
|
["enabled"] = true,
|
|
["action"] = "ferocious_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["balance"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable || ( active_enemies > 1 & ( dot.sunfire.refreshable || active_dot.sunfire < active_enemies ) )",
|
|
["action"] = "sunfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 4 || ( active_enemies > 1 & buff.lunar_empowerment.up )",
|
|
["action"] = "lunar_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > 2 & buff.solar_empowerment.up",
|
|
["action"] = "solar_wrath",
|
|
},
|
|
{
|
|
["action"] = "starsurge",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.solar_empowerment.up",
|
|
["action"] = "solar_wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.lunar_empowerment.up",
|
|
["action"] = "lunar_strike",
|
|
},
|
|
{
|
|
["action"] = "solar_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy >= 30 & ( cooldown.tigers_fury.remains > 5 || buff.tigers_fury.up )",
|
|
["action"] = "berserk",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy.deficit >= 60 || buff.tigers_fury.down",
|
|
["action"] = "tigers_fury",
|
|
},
|
|
{
|
|
["action"] = "berserking",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > desired_targets || raid_event.adds.in > 45",
|
|
["action"] = "thorns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up || buff.tigers_fury.up",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tigers_fury.up & buff.berserk.down",
|
|
["action"] = "memory_of_lucid_dreams",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tigers_fury.up",
|
|
["action"] = "blood_of_the_enemy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points = 0",
|
|
["action"] = "feral_frenzy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > desired_targets || ( raid_event.adds.in > 90 & energy.deficit >= 50 )",
|
|
["action"] = "focused_azerite_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies > desired_targets || raid_event.adds.in > 60",
|
|
["action"] = "purifying_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tigers_fury.up",
|
|
["action"] = "guardian_of_azeroth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tigers_fury.up",
|
|
["action"] = "concentrated_flame",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tigers_fury.up",
|
|
["action"] = "ripple_in_space",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tigers_fury.up",
|
|
["action"] = "worldvein_resonance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.time_to_die < 1.5 || ( ( target.health.pct > 80 || target.health.pct <= 20 ) & target.time_to_die > 29 ) || ( target.time_to_pct_20 > 30 & target.time_to_die > 44 )",
|
|
["action"] = "reaping_flames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy >= 30 & ( cooldown.tigers_fury.remains > 15 || buff.tigers_fury.up )",
|
|
["action"] = "incarnation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.time_to_die < 65 || ( time_to_die < 180 & ( buff.berserk.up || buff.incarnation.up ) )",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "combo_points < 5 & energy >= action.rake.cost & dot.rake.pmultiplier < 2.1 & buff.tigers_fury.up & ( buff.bloodtalons.up || ! talent.bloodtalons.enabled ) & ( ! talent.incarnation.enabled || cooldown.incarnation.remains > 18 ) & ! buff.incarnation.up",
|
|
["action"] = "shadowmeld",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "debuff.razor_coral_debuff.down || debuff.conductive_ink_debuff.up & target.time_to_pct_30 < 1.5 || ! debuff.conductive_ink_debuff.up & ( debuff.razor_coral_debuff.stack >= 25 - 10 * debuff.blood_of_the_enemy.up || time_to_die < 40 ) & buff.tigers_fury.remains > 10",
|
|
["name"] = "ashvanes_razor_coral",
|
|
["action"] = "ashvanes_razor_coral",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( energy.deficit >= energy.regen * 3 ) & buff.tigers_fury.down & ! azerite.jungle_fury.enabled",
|
|
["action"] = "cyclotronic_blast",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tigers_fury.up & azerite.jungle_fury.enabled",
|
|
["action"] = "cyclotronic_blast",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "energy.deficit >= 50",
|
|
["action"] = "azsharas_font_of_power",
|
|
["effect_name"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tigers_fury.up || time_to_die < 20",
|
|
["action"] = "use_items",
|
|
},
|
|
},
|
|
},
|
|
["author"] = "SimC",
|
|
},
|
|
["Balance"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20190920,
|
|
["author"] = "SimC",
|
|
["desc"] = "# Balance Druid\n# https://github.com/simulationcraft/simc/\n# September 20, 2019\n\n# Changes:\n# - Added Solar Beam.\n# - Changed target_if cases to cycle_targets.\n# - Simplify Azerite trait lookups (don't use unnecessary variable syntax).\n# - Removed Lively Spirit condition for Celestial Alignment; you'll have it or you won't since Innervate is higher priority.",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "solar_beam",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ca_inc.up",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.ca_inc.up & dot.moonfire.ticking & dot.sunfire.ticking & ( ! talent.stellar_flare.enabled || dot.stellar_flare.ticking )",
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.starlord.enabled || buff.starlord.up ) & ! buff.ca_inc.up & dot.moonfire.ticking & dot.sunfire.ticking & ( ! talent.stellar_flare.enabled || dot.stellar_flare.ticking )",
|
|
["action"] = "guardian_of_azeroth",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.ca_inc.up & dot.moonfire.ticking & dot.sunfire.ticking & ( ! talent.stellar_flare.enabled || dot.stellar_flare.ticking )",
|
|
["action"] = "cyclotronic_blast",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "shiver_venom_relic",
|
|
["action"] = "shiver_venom_relic",
|
|
["criteria"] = "! buff.ca_inc.up & ! buff.bloodlust.up",
|
|
["target_if"] = "dot.shiver_venom.stack >= 5",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.ca_inc.remains > 30",
|
|
["action"] = "blood_of_the_enemy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.ca_inc.up & ( astral_power < 25 || cooldown.ca_inc.remains > 30 ) & dot.sunfire.remains > 10 & dot.moonfire.remains > 10 & ( ! talent.stellar_flare.enabled || dot.stellar_flare.remains > 10 )",
|
|
["action"] = "memory_of_lucid_dreams",
|
|
},
|
|
{
|
|
["action"] = "purifying_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ripple_in_space",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "concentrated_flame",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.reckless_force.up & dot.moonfire.ticking & dot.sunfire.ticking & ( ! talent.stellar_flare.enabled || dot.stellar_flare.ticking )",
|
|
["action"] = "the_unbound_force",
|
|
},
|
|
{
|
|
["action"] = "worldvein_resonance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.az_ss || ! buff.ca_inc.up ) & dot.moonfire.ticking & dot.sunfire.ticking & ( ! talent.stellar_flare.enabled || dot.stellar_flare.ticking )",
|
|
["action"] = "focused_azerite_beam",
|
|
},
|
|
{
|
|
["action"] = "thorns",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "use_items",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "warrior_of_elune",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.ca_inc.up & ( buff.memory_of_lucid_dreams.up || ( ( cooldown.memory_of_lucid_dreams.remains > 20 || ! essence.memory_of_lucid_dreams.major ) & ap_check ) ) & ( buff.memory_of_lucid_dreams.up || ap_check ) & dot.sunfire.remains > 8 & dot.moonfire.remains > 12 & ( dot.stellar_flare.remains > 6 || ! talent.stellar_flare.enabled )",
|
|
["action"] = "incarnation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.ca_inc.up & ( buff.memory_of_lucid_dreams.up || ( ( cooldown.memory_of_lucid_dreams.remains > 20 || ! essence.memory_of_lucid_dreams.major ) & ap_check ) ) & ( dot.sunfire.remains > 2 & dot.moonfire.ticking & ( dot.stellar_flare.ticking || ! talent.stellar_flare.enabled ) )",
|
|
["action"] = "celestial_alignment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.ca_inc.up || cooldown.ca_inc.remains > 30 ) & solar_wrath.ap_check",
|
|
["action"] = "fury_of_elune",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.ca_inc.up || cooldown.ca_inc.remains > 30 ) & ap_check",
|
|
["action"] = "force_of_nature",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["buff_name"] = "starlord",
|
|
["criteria"] = "buff.starlord.remains < 3 & ! solar_wrath.ap_check",
|
|
["action"] = "cancel_buff",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.starlord.stack < 3 || buff.starlord.remains >= 8 ) & spell_targets >= variable.sf_targets & ( target.time_to_die + 1 ) * spell_targets > cost % 2.5",
|
|
["action"] = "starfall",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.starlord.enabled & ( buff.starlord.stack < 3 || buff.starlord.remains >= 5 & buff.arcanic_pulsar.stack < 8 ) || ! talent.starlord.enabled & ( buff.arcanic_pulsar.stack < 8 || buff.ca_inc.up ) ) & spell_targets.starfall < variable.sf_targets & buff.lunar_empowerment.stack + buff.solar_empowerment.stack < 4 & buff.solar_empowerment.stack < 3 & buff.lunar_empowerment.stack < 3 & ( ! azerite.streaking_stars.rank || ! buff.ca_inc.up || ! prev.starsurge ) || target.time_to_die <= execute_time * astral_power % 40 || ! solar_wrath.ap_check",
|
|
["action"] = "starsurge",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ca_inc.up & buff.ca_inc.remains < gcd.max & azerite.streaking_stars.rank & dot.moonfire.remains > remains",
|
|
["action"] = "sunfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.ca_inc.up & buff.ca_inc.remains < gcd.max & azerite.streaking_stars.rank",
|
|
["action"] = "moonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ap_check & floor ( target.time_to_die % ( 2 * spell_haste ) ) * spell_targets >= ceil ( floor ( 2 % spell_targets ) * 1.5 ) + 2 * spell_targets & ( spell_targets > 1 + talent.twin_moons.enabled || dot.moonfire.ticking ) & ( ! azerite.streaking_stars.rank || ! buff.ca_inc.up || ! prev.sunfire ) & ( buff.ca_inc.remains > remains || ! buff.ca_inc.up )",
|
|
["action"] = "sunfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ap_check & floor ( target.time_to_die % ( 2 * spell_haste ) ) * spell_targets >= 6 & ( ! azerite.streaking_stars.rank || ! buff.ca_inc.up || ! prev.moonfire ) & ( buff.ca_inc.remains > remains || ! buff.ca_inc.up )",
|
|
["action"] = "moonfire",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "refreshable & ap_check & floor ( target.time_to_die % ( 2 * spell_haste ) ) >= 5 & ( ! azerite.streaking_stars.rank || ! buff.ca_inc.up || ! prev.stellar_flare )",
|
|
["action"] = "stellar_flare",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "ap_check",
|
|
["action"] = "new_moon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "ap_check",
|
|
["action"] = "half_moon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "ap_check",
|
|
["action"] = "full_moon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.solar_empowerment.stack < 3 & ( ap_check || buff.lunar_empowerment.stack = 3 ) & ( ( buff.warrior_of_elune.up || buff.lunar_empowerment.up || spell_targets >= 2 & ! buff.solar_empowerment.up ) & ( ! azerite.streaking_stars.rank || ! buff.ca_inc.up ) || azerite.streaking_stars.rank & buff.ca_inc.up & prev.solar_wrath )",
|
|
["action"] = "lunar_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "azerite.streaking_stars.rank < 3 || ! buff.ca_inc.up || ! prev.solar_wrath",
|
|
["action"] = "solar_wrath",
|
|
},
|
|
{
|
|
["action"] = "sunfire",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "4",
|
|
["var_name"] = "sf_targets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "sf_targets",
|
|
["criteria"] = "azerite.arcanic_pulsar.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "sf_targets",
|
|
["criteria"] = "talent.starlord.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "sf_targets",
|
|
["criteria"] = "azerite.streaking_stars.rank > 2 & azerite.arcanic_pulsar.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "sf_targets",
|
|
["criteria"] = "! talent.twin_moons.enabled",
|
|
},
|
|
{
|
|
["action"] = "moonkin_form",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "azsharas_font_of_power",
|
|
["action"] = "azsharas_font_of_power",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "potion",
|
|
["dynamic_prepot"] = "1",
|
|
},
|
|
{
|
|
["action"] = "solar_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "starsurge",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20190920,
|
|
["warnings"] = "Imported 2 action lists.\n",
|
|
["spec"] = 102,
|
|
["profile"] = "# Balance Druid\n# https://github.com/simulationcraft/simc/\n# September 20, 2019\n\n# Changes:\n# - Added Solar Beam.\n# - Changed target_if cases to cycle_targets.\n# - Simplify Azerite trait lookups (don't use unnecessary variable syntax).\n# - Removed Lively Spirit condition for Celestial Alignment; you'll have it or you won't since Innervate is higher priority.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/food\n# actions.precombat+=/augmentation\n\n# Azerite variables\n# actions.precombat+=/variable,name=az_ss,value=azerite.streaking_stars.rank\n# actions.precombat+=/variable,name=az_ap,value=azerite.arcanic_pulsar.rank\n\n# Starfall v Starsurge target cutoff\nactions.precombat=variable,name=sf_targets,value=4\nactions.precombat+=/variable,name=sf_targets,op=add,value=1,if=azerite.arcanic_pulsar.enabled\nactions.precombat+=/variable,name=sf_targets,op=add,value=1,if=talent.starlord.enabled\nactions.precombat+=/variable,name=sf_targets,op=add,value=1,if=azerite.streaking_stars.rank>2&azerite.arcanic_pulsar.enabled\nactions.precombat+=/variable,name=sf_targets,op=sub,value=1,if=!talent.twin_moons.enabled\nactions.precombat+=/moonkin_form\n\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/use_item,name=azsharas_font_of_power\nactions.precombat+=/potion,dynamic_prepot=1\nactions.precombat+=/solar_wrath\nactions.precombat+=/starsurge\n\n# Executed every time the actor is available.\nactions=solar_beam\n# CDs\nactions+=/berserking,if=buff.ca_inc.up\nactions+=/use_item,name=azsharas_font_of_power,if=!buff.ca_inc.up&dot.moonfire.ticking&dot.sunfire.ticking&(!talent.stellar_flare.enabled||dot.stellar_flare.ticking)\nactions+=/guardian_of_azeroth,if=(!talent.starlord.enabled||buff.starlord.up)&!buff.ca_inc.up&dot.moonfire.ticking&dot.sunfire.ticking&(!talent.stellar_flare.enabled||dot.stellar_flare.ticking)\nactions+=/use_item,effect_name=cyclotronic_blast,if=!buff.ca_inc.up&dot.moonfire.ticking&dot.sunfire.ticking&(!talent.stellar_flare.enabled||dot.stellar_flare.ticking)\nactions+=/use_item,name=shiver_venom_relic,if=!buff.ca_inc.up&!buff.bloodlust.up,target_if=dot.shiver_venom.stack>=5\nactions+=/blood_of_the_enemy,if=cooldown.ca_inc.remains>30\nactions+=/memory_of_lucid_dreams,if=!buff.ca_inc.up&(astral_power<25||cooldown.ca_inc.remains>30)&dot.sunfire.remains>10&dot.moonfire.remains>10&(!talent.stellar_flare.enabled||dot.stellar_flare.remains>10)\nactions+=/purifying_blast\nactions+=/ripple_in_space\nactions+=/concentrated_flame\nactions+=/the_unbound_force,if=buff.reckless_force.up&dot.moonfire.ticking&dot.sunfire.ticking&(!talent.stellar_flare.enabled||dot.stellar_flare.ticking)\nactions+=/worldvein_resonance\nactions+=/focused_azerite_beam,if=(!variable.az_ss||!buff.ca_inc.up)&dot.moonfire.ticking&dot.sunfire.ticking&(!talent.stellar_flare.enabled||dot.stellar_flare.ticking)\nactions+=/thorns\nactions+=/use_items\nactions+=/warrior_of_elune\n# actions+=/innervate,if=azerite.lively_spirit.enabled&(cooldown.incarnation.remains<2||cooldown.celestial_alignment.remains<12)\nactions+=/incarnation,if=!buff.ca_inc.up&(buff.memory_of_lucid_dreams.up||((cooldown.memory_of_lucid_dreams.remains>20||!essence.memory_of_lucid_dreams.major)&ap_check))&(buff.memory_of_lucid_dreams.up||ap_check)&dot.sunfire.remains>8&dot.moonfire.remains>12&(dot.stellar_flare.remains>6||!talent.stellar_flare.enabled)\nactions+=/celestial_alignment,if=!buff.ca_inc.up&(buff.memory_of_lucid_dreams.up||((cooldown.memory_of_lucid_dreams.remains>20||!essence.memory_of_lucid_dreams.major)&ap_check))&(dot.sunfire.remains>2&dot.moonfire.ticking&(dot.stellar_flare.ticking||!talent.stellar_flare.enabled))\nactions+=/fury_of_elune,if=(buff.ca_inc.up||cooldown.ca_inc.remains>30)&solar_wrath.ap_check\nactions+=/force_of_nature,if=(buff.ca_inc.up||cooldown.ca_inc.remains>30)&ap_check\n\n# Spenders\nactions+=/cancel_buff,name=starlord,if=buff.starlord.remains<3&!solar_wrath.ap_check\nactions+=/starfall,if=(buff.starlord.stack<3||buff.starlord.remains>=8)&spell_targets>=variable.sf_targets&(target.time_to_die+1)*spell_targets>cost%2.5\nactions+=/starsurge,if=(talent.starlord.enabled&(buff.starlord.stack<3||buff.starlord.remains>=5&buff.arcanic_pulsar.stack<8)||!talent.starlord.enabled&(buff.arcanic_pulsar.stack<8||buff.ca_inc.up))&spell_targets.starfall<variable.sf_targets&buff.lunar_empowerment.stack+buff.solar_empowerment.stack<4&buff.solar_empowerment.stack<3&buff.lunar_empowerment.stack<3&(!azerite.streaking_stars.rank||!buff.ca_inc.up||!prev.starsurge)||target.time_to_die<=execute_time*astral_power%40||!solar_wrath.ap_check\nactions+=/sunfire,if=buff.ca_inc.up&buff.ca_inc.remains<gcd.max&azerite.streaking_stars.rank&dot.moonfire.remains>remains\nactions+=/moonfire,if=buff.ca_inc.up&buff.ca_inc.remains<gcd.max&azerite.streaking_stars.rank\n\n# DoTs\nactions+=/sunfire,cycle_targets=1,if=refreshable&ap_check&floor(target.time_to_die%(2*spell_haste))*spell_targets>=ceil(floor(2%spell_targets)*1.5)+2*spell_targets&(spell_targets>1+talent.twin_moons.enabled||dot.moonfire.ticking)&(!azerite.streaking_stars.rank||!buff.ca_inc.up||!prev.sunfire)&(buff.ca_inc.remains>remains||!buff.ca_inc.up)\nactions+=/moonfire,cycle_targets=1,if=refreshable&ap_check&floor(target.time_to_die%(2*spell_haste))*spell_targets>=6&(!azerite.streaking_stars.rank||!buff.ca_inc.up||!prev.moonfire)&(buff.ca_inc.remains>remains||!buff.ca_inc.up)\nactions+=/stellar_flare,cycle_targets=1,if=refreshable&ap_check&floor(target.time_to_die%(2*spell_haste))>=5&(!azerite.streaking_stars.rank||!buff.ca_inc.up||!prev.stellar_flare)\n\n# Generators\nactions+=/new_moon,if=ap_check\nactions+=/half_moon,if=ap_check\nactions+=/full_moon,if=ap_check\nactions+=/lunar_strike,if=buff.solar_empowerment.stack<3&(ap_check||buff.lunar_empowerment.stack=3)&((buff.warrior_of_elune.up||buff.lunar_empowerment.up||spell_targets>=2&!buff.solar_empowerment.up)&(!azerite.streaking_stars.rank||!buff.ca_inc.up)||azerite.streaking_stars.rank&buff.ca_inc.up&prev.solar_wrath)\nactions+=/solar_wrath,if=azerite.streaking_stars.rank<3||!buff.ca_inc.up||!prev.solar_wrath\n\n# Fallthru for movement\nactions+=/sunfire",
|
|
},
|
|
["Guardian"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20190818,
|
|
["author"] = "SimC",
|
|
["desc"] = "# Guardian Druid\n# https://github.com/simulationcraft/simc/\n# August 18, 2019 - 14:00\n\n# Changes:\n# - Added Mitigation abilities.\n# - Added Skull Bash.\n# - Added ironfur_damage_threshold option.",
|
|
["lists"] = {
|
|
["mitigation"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "incoming_damage_5s > ironfur_damage_threshold & buff.ironfur.remains < gcd * 2",
|
|
["action"] = "ironfur",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "health.current < 0.75 * health.max",
|
|
["action"] = "frenzied_regeneration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "toggle.defensives & health.pct < 80",
|
|
["action"] = "anima_of_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "health.pct < 75 & incoming_damage_5s > 0.25 * health.max",
|
|
["action"] = "barkskin",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.survival_instincts.down & buff.barkskin.down & health.pct < 60 & incoming_damage_5s > 0.25 * health.max",
|
|
["action"] = "survival_instincts",
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blood_fury",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "berserking",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "fireblood",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "ancestral_call",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bear_form.up",
|
|
["action"] = "lunar_beam",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bear_form.up",
|
|
["action"] = "bristling_fur",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( dot.moonfire.ticking || active_enemies > 1 ) & dot.thrash_bear.ticking",
|
|
["action"] = "incarnation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "cyclotronic_blast",
|
|
["effect_name"] = "cyclotronic_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "toggle.cooldowns & ( time_to_die < action_cooldown % 2 || active_enemies > 1 )",
|
|
["action"] = "anima_of_death",
|
|
},
|
|
{
|
|
["action"] = "memory_of_lucid_dreams",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "use_items",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "skull_bash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "mitigation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage.deficit < 20 & active_enemies < 4",
|
|
["action"] = "maul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "rage.deficit < 20 & essence.conflict_and_strife.major & ! buff.sharpened_claws.up",
|
|
["action"] = "maul",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cost = 0 || ( rage > cost & azerite.layered_mane.enabled & active_enemies > 2 )",
|
|
["action"] = "ironfur",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.thrash_bear.stack = dot.thrash_bear.max_stacks",
|
|
["action"] = "pulverize",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.moonfire.refreshable & active_enemies < 2",
|
|
["action"] = "moonfire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.incarnation.down & active_enemies > 1 ) || ( buff.incarnation.up & active_enemies > 4 )",
|
|
["action"] = "thrash_bear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.incarnation.down & active_enemies > 4",
|
|
["action"] = "swipe_bear",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "dot.thrash_bear.ticking",
|
|
["action"] = "mangle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.galactic_guardian.up & active_enemies < 2",
|
|
["action"] = "moonfire",
|
|
},
|
|
{
|
|
["action"] = "thrash_bear",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "azerite.power_of_the_moon.rank > 1 & active_enemies = 1",
|
|
["action"] = "moonfire",
|
|
},
|
|
{
|
|
["action"] = "swipe_bear",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "bear_form",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "memory_of_lucid_dreams",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20190818,
|
|
["warnings"] = "Imported 4 action lists.\n",
|
|
["profile"] = "# Guardian Druid\n# https://github.com/simulationcraft/simc/\n# August 18, 2019 - 14:00\n\n# Changes:\n# - Added Mitigation abilities.\n# - Added Skull Bash.\n# - Added ironfur_damage_threshold option.\n\n# Executed before combat begins. Accepts non-harmful actions only.\n# actions.precombat=flask\n# actions.precombat+=/food\n# actions.precombat+=/augmentation\nactions.precombat+=/bear_form\n# Snapshot raid buffed stats before combat begins and pre-potting is done.\n# actions.precombat+=/snapshot_stats\nactions.precombat+=/memory_of_lucid_dreams\nactions.precombat+=/potion\n\n# Executed every time the actor is available.\nactions=skull_bash\nactions+=/call_action_list,name=mitigation\nactions+=/call_action_list,name=cooldowns\nactions+=/maul,if=rage.deficit<20&active_enemies<4\nactions+=/maul,if=rage.deficit<20&essence.conflict_and_strife.major&!buff.sharpened_claws.up\nactions+=/ironfur,if=cost=0||(rage>cost&azerite.layered_mane.enabled&active_enemies>2)\nactions+=/pulverize,target_if=dot.thrash_bear.stack=dot.thrash_bear.max_stacks\nactions+=/moonfire,target_if=dot.moonfire.refreshable&active_enemies<2\nactions+=/thrash,if=(buff.incarnation.down&active_enemies>1)||(buff.incarnation.up&active_enemies>4)\nactions+=/swipe,if=buff.incarnation.down&active_enemies>4\nactions+=/mangle,if=dot.thrash_bear.ticking\nactions+=/moonfire,target_if=buff.galactic_guardian.up&active_enemies<2\nactions+=/thrash\n# Fill with Moonfire with PotMx2\nactions+=/moonfire,if=azerite.power_of_the_moon.rank>1&active_enemies=1\nactions+=/swipe\n\nactions.mitigation=ironfur,if=incoming_damage_5s>ironfur_damage_threshold&buff.ironfur.remains<gcd*2\nactions.mitigation+=/frenzied_regeneration,if=health.current<0.75*health.max\nactions.mitigation+=/anima_of_death,if=toggle.defensives&health.pct<80\nactions.mitigation+=/barkskin,if=health.pct<75&incoming_damage_5s>0.25*health.max\nactions.mitigation+=/survival_instincts,if=buff.survival_instincts.down&buff.barkskin.down&health.pct<60&incoming_damage_5s>0.25*health.max\n\nactions.cooldowns=potion\n# actions.cooldowns+=/heart_essence\nactions.cooldowns+=/blood_fury\nactions.cooldowns+=/berserking\nactions.cooldowns+=/arcane_torrent\nactions.cooldowns+=/lights_judgment\nactions.cooldowns+=/fireblood\nactions.cooldowns+=/ancestral_call\nactions.cooldowns+=/lunar_beam,if=buff.bear_form.up\nactions.cooldowns+=/bristling_fur,if=buff.bear_form.up\nactions.cooldowns+=/incarnation,if=(dot.moonfire.ticking||active_enemies>1)&dot.thrash_bear.ticking\nactions.cooldowns+=/use_item,effect_name=cyclotronic_blast\nactions.cooldowns+=/anima_of_death,if=toggle.cooldowns&(time_to_die<cooldown%2||active_enemies>1)\nactions.cooldowns+=/memory_of_lucid_dreams\nactions.cooldowns+=/use_items",
|
|
["spec"] = 104,
|
|
},
|
|
},
|
|
},
|
|
["Quilenko - Thunderhorn"] = {
|
|
["runOnce"] = {
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_258"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_257"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_256"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
},
|
|
["specs"] = {
|
|
[257] = {
|
|
["settings"] = {
|
|
["sw_death_protection"] = 50,
|
|
},
|
|
},
|
|
[258] = {
|
|
["nameplateRange"] = 8,
|
|
["debuffPadding"] = 0,
|
|
["settings"] = {
|
|
["pad_void_bolt"] = true,
|
|
["sw_death_protection"] = 50,
|
|
["pad_ascended_blast"] = true,
|
|
},
|
|
["potion"] = "unbridled_fury",
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["maxTime"] = 33,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[256] = {
|
|
["settings"] = {
|
|
["sw_death_protection"] = 50,
|
|
},
|
|
["potionsReset"] = 20180919.1,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Shadow"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20241102,
|
|
["author"] = "SimC",
|
|
["desc"] = "2024-11-02: Unfurling Darkness adjustments\n\n2024-10-29: SimC update\n\n2024-10-27: Work on VT/Shadow Crash\n\n2024-10-22: 11.0.5 update\n\n2024-10-21: SimC update\n\n2024-10-06: PI; Don't VT with Shadow Crash in flight (Whispering Shadows)\n\n2024-09-08, 10-06: SimC update\n\n2024-09-06: Modified to enable DP/VT with CDs toggled off\n\n2024-09-05: SimC update\n\n2024-08-22: Trinket update\n\n2024-08-11: Buff Power Word: Fortitude\n\n2024-08-01: Add SW:Death entry from sim update; another sim update\n\n2024-07-29: Tweak target swap logic\n\n2024-07-28: The War Within",
|
|
["lists"] = {
|
|
["filler"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Consume empowered fillers",
|
|
["strict"] = 1,
|
|
["criteria"] = "( buff.mind_spike_insanity.up || buff.mind_flay_insanity.up ) & dot.devouring_plague.remains > action.mind_spike.cast_time || ! talent.mind_spike.enabled",
|
|
["list_name"] = "empowered_filler",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "talent.unfurling_darkness.enabled & buff.unfurling_darkness_cd.remains < ( execute_time - 0.2 ) & talent.inner_quietus.enabled",
|
|
["description"] = "Cast Vampiric Touch to proc Unfurling Darkness",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_word_death",
|
|
["criteria"] = "target.health.pct < 20 || ( buff.deathspeaker.up || set_bonus.tier31_2pc ) & dot.devouring_plague.ticking",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_word_death",
|
|
["criteria"] = "talent.inescapable_torment.enabled & pet.fiend.active",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.empowered_surges.enabled & buff.surge_of_insanity.up || buff.voidform.up & talent.void_eruption.enabled",
|
|
["action"] = "devouring_plague",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["criteria"] = "talent.unfurling_darkness.enabled & buff.unfurling_darkness_cd.remains < ( execute_time - 0.2 )",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets > 1",
|
|
["action"] = "halo",
|
|
["description"] = "Save up to 20s if adds are coming soon.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "buff.mind_spike_insanity.up || buff.mind_flay_insanity.up",
|
|
["list_name"] = "empowered_filler",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mind_spike",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mind_flay",
|
|
["cycle_targets"] = 1,
|
|
["interrupt_if"] = "ticks>=2",
|
|
["interrupt_immediate"] = "1",
|
|
["chain"] = "1",
|
|
["interrupt_global"] = "1",
|
|
},
|
|
{
|
|
["action"] = "divine_star",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! set_bonus.tier31_4pc",
|
|
["action"] = "shadow_crash",
|
|
["description"] = "Use Shadow Crash while moving as a low-priority action when adds will not come in 20 seconds.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_word_death",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "target.health.pct < 20",
|
|
["description"] = "Use Shadow Word: Death while moving as a low-priority action in execute",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_word_death",
|
|
["description"] = "Use Shadow Word: Death while moving as a low-priority action",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_word_pain",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "set_bonus.tier31_4pc",
|
|
["description"] = "Use Shadow Word: Pain while moving as a low-priority action with T31 4pc",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_word_pain",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "! set_bonus.tier31_4pc",
|
|
["description"] = "Use Shadow Word: Pain while moving as a low-priority action without T31 4pc",
|
|
},
|
|
},
|
|
["aoe_variables"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "spell_targets.vampiric_touch >? 12",
|
|
["default"] = "12",
|
|
["var_name"] = "max_vts",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["default"] = "1",
|
|
["var_name"] = "is_vt_possible",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["criteria"] = "target.time_to_die >= 18 & dot.vampiric_touch.refreshable",
|
|
["var_name"] = "is_vt_possible",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( active_dot.vampiric_touch + 8 * ( action.shadow_crash.in_flight & talent.whispering_shadows.enabled ) ) >= variable.max_vts || ! variable.is_vt_possible",
|
|
["description"] = "TODO: Revamp to fix undesired behaviour with unstacked fights",
|
|
["var_name"] = "dots_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( variable.max_vts - active_dot.vampiric_touch ) < 4",
|
|
["criteria"] = "variable.holding_crash & talent.whispering_shadows.enabled & active_enemies > 1",
|
|
["var_name"] = "holding_crash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( active_dot.vampiric_touch + 8 * ! variable.holding_crash ) >= variable.max_vts || ! variable.is_vt_possible",
|
|
["var_name"] = "manual_vts_applied",
|
|
},
|
|
},
|
|
["empowered_filler"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mind_spike_insanity",
|
|
["criteria"] = "buff.mind_spike_insanity.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mind_flay",
|
|
["criteria"] = "buff.mind_flay_insanity.up",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "silence",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "false",
|
|
["var_name"] = "holding_crash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( cooldown.void_eruption.remains <= gcd.max * 3 & talent.void_eruption.enabled || cooldown.dark_ascension.up & talent.dark_ascension.enabled ) || talent.void_torrent.enabled & talent.psychic_link.enabled & cooldown.void_torrent.remains <= 4 & ! variable.holding_crash & ! buff.voidform.up",
|
|
["var_name"] = "pool_for_cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 2",
|
|
["list_name"] = "aoe",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "main",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "power_word_fortitude",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.shadowform.up",
|
|
["action"] = "shadowform",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "dr_force_prio",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "me_force_prio",
|
|
["default"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "max_vts",
|
|
["default"] = "12",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "is_vt_possible",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "reset",
|
|
["action"] = "variable",
|
|
["var_name"] = "pooling_mindblasts",
|
|
["default"] = "0",
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & active_enemies <= 4 & ( fight_remains >= 120 || active_enemies <= 2 )",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.shadow_crash <= 8 & ( ! set_bonus.tier31_4pc || spell_targets.shadow_crash > 1 )",
|
|
["action"] = "shadow_crash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.whispering_shadows.enabled || ! action.shadow_crash.in_flight ) & ( ! talent.shadow_crash.enabled || spell_targets.shadow_crash > 8 || ! boss || set_bonus.tier31_4pc & spell_targets.shadow_crash = 1 )",
|
|
["action"] = "vampiric_touch",
|
|
},
|
|
},
|
|
["aoe"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "spell_targets.vampiric_touch >? 12",
|
|
["default"] = "12",
|
|
["var_name"] = "max_vts",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["default"] = "1",
|
|
["var_name"] = "is_vt_possible",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["criteria"] = "target.time_to_die >= 18 & dot.vampiric_touch.refreshable",
|
|
["var_name"] = "is_vt_possible",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( active_dot.vampiric_touch + 8 * ( action.shadow_crash.in_flight & talent.whispering_shadows.enabled ) ) >= variable.max_vts || ! variable.is_vt_possible",
|
|
["description"] = "TODO: Revamp to fix undesired behaviour with unstacked fights",
|
|
["var_name"] = "dots_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( variable.max_vts - active_dot.vampiric_touch ) < 4",
|
|
["criteria"] = "variable.holding_crash & talent.whispering_shadows.enabled & active_enemies > 1",
|
|
["var_name"] = "holding_crash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( active_dot.vampiric_touch + 8 * ! variable.holding_crash ) >= variable.max_vts || ! variable.is_vt_possible",
|
|
["var_name"] = "manual_vts_applied",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "( buff.unfurling_darkness.up || buff.unfurling_darkness_cd.down || buff.unfurling_darkness_cd.remains > 2 * gcd.max ) & ( target.time_to_die >= 18 & ( dot.vampiric_touch.ticking || ! variable.dots_up ) ) & ( ( variable.max_vts > 0 & ! variable.manual_vts_applied & ! action.shadow_crash.in_flight || ! talent.whispering_shadows.enabled ) & ! buff.entropic_rift.up )",
|
|
["description"] = "High Priority action to put out Vampiric Touch on enemies that will live at least 18 seconds, up to 12 targets manually while prepping AoE",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_crash",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "! variable.holding_crash & ( dot.vampiric_touch.refreshable || dot.vampiric_touch.remains <= target.time_to_die & ! buff.voidform.up )",
|
|
["description"] = "Use Shadow Crash to apply Vampiric Touch to as many adds as possible while being efficient with Vampiric Touch refresh windows",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.voidform.up || buff.power_infusion.up || buff.dark_ascension.up & ( boss & fight_remains <= cooldown.power_infusion.remains + 15 ) ) & ( fight_remains >= 320 || buff.bloodlust.react ) || boss & fight_remains <= 30",
|
|
["action"] = "potion",
|
|
["description"] = "TODO: Check VE/DA enter conditions based on dots",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up || boss & fight_remains <= 8",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up || boss & fight_remains <= 12",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up || boss & fight_remains <= 15",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up || boss & fight_remains <= 15",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.voidform.up || buff.dark_ascension.up",
|
|
["action"] = "power_infusion",
|
|
["description"] = "Sync Power Infusion with Voidform or Dark Ascension",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.power_surge.enabled & ( pet.fiend.active & cooldown.fiend.remains >= 4 & talent.mindbender.enabled || ! talent.mindbender.enabled & ! cooldown.fiend.up || active_enemies > 2 & ! talent.inescapable_torment.enabled || ! talent.dark_ascension.enabled ) & ( cooldown.mind_blast.charges = 0 || ! talent.void_eruption.enabled || cooldown.void_eruption.remains >= gcd.max * 4 )",
|
|
["action"] = "halo",
|
|
["description"] = "Make sure Mindbender is active before popping Dark Ascension unless you have insignificant talent points or too many targets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( pet.fiend.active & cooldown.fiend.remains >= 4 || ! talent.mindbender.enabled & ! cooldown.fiend.up || active_enemies > 2 & ! talent.inescapable_torment.enabled ) & ( cooldown.mind_blast.charges = 0 || time > 15 )",
|
|
["action"] = "void_eruption",
|
|
["description"] = "Make sure Mindbender is active before popping Void Eruption and dump charges of Mind Blast before casting",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( pet.fiend.active & cooldown.fiend.remains >= 4 || ! talent.mindbender.enabled & ! cooldown.fiend.up || active_enemies > 2 & ! talent.inescapable_torment.enabled ) & ( active_dot.devouring_plague >= 1 || insanity >= ( 15 + 5 * ! talent.minds_eye.enabled + 5 * talent.distorted_reality.enabled - pet.fiend.active * 6 ) )",
|
|
["action"] = "dark_ascension",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "health.pct <= 75",
|
|
["action"] = "desperate_prayer",
|
|
["description"] = "Use Desperate Prayer to heal up should Shadow Word: Death or other damage bring you below 75%",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "aberrant_spellforge",
|
|
["use_off_gcd"] = 1,
|
|
["action"] = "aberrant_spellforge",
|
|
["criteria"] = "gcd.remains > 0 & buff.aberrant_spellforge.stack <= 4",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "spymasters_web",
|
|
["action"] = "spymasters_web",
|
|
["criteria"] = "( buff.power_infusion.up & buff.spymasters_report.stack >= 40 & fight_remains > 240 ) || ( buff.power_infusion.up & buff.bloodlust.up & buff.spymasters_report.stack >= 10 ) || buff.power_infusion.up & ( fight_remains < 120 ) || ( fight_remains <= 20 || buff.dark_ascension.up & fight_remains <= 60 || buff.entropic_rift.up & talent.entropic_rift.enabled & fight_remains <= 30 ) & ! buff.spymasters_web.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.voidform.up || buff.power_infusion.up || buff.dark_ascension.up || ( cooldown.void_eruption.remains > 10 & trinket.cooldown.duration <= 60 ) ) || boss & fight_remains < 20",
|
|
["action"] = "use_items",
|
|
},
|
|
},
|
|
["main"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "active_dot.vampiric_touch >= cycle_enemies || action.shadow_crash.in_flight & talent.whispering_shadows.enabled",
|
|
["criteria"] = "active_enemies < 3",
|
|
["var_name"] = "dots_up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "Are we pooling mindblasts? Currently only used for Voidweaver, [Hekili] modified to still allow us to build Insanity when CDs are toggled off.",
|
|
["criteria"] = "talent.void_blast.enabled & cooldown.void_torrent.remains <= gcd.max * ( 1 + talent.mind_melt.enabled ) & insanity > action.devouring_plague.cost",
|
|
["var_name"] = "pooling_mindblasts",
|
|
["action"] = "variable",
|
|
["value_else"] = "0",
|
|
["value"] = "1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 30 || target.time_to_die > 15 & ( ! variable.holding_crash || active_enemies > 2 )",
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "buff.unfurling_darkness.up & talent.mind_melt.enabled & talent.void_blast.enabled & buff.mind_melt.stack < 2 & cooldown.mindbender.up & cooldown.dark_ascension.up & time <= 4",
|
|
["description"] = "High priority action to consume Unfurling Darkness during the opener with Voidweaver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.mind_melt.enabled & talent.void_blast.enabled & ( buff.mind_melt.stack < ( 1 * talent.distorted_reality.enabled + 1 - talent.unfurling_darkness.enabled - talent.minds_eye.enabled * 1 ) & talent.halo.enabled || ! talent.halo.enabled & buff.mind_melt.stack < 2 ) & cooldown.mindbender.up & cooldown.dark_ascension.up & time <= 4 & insanity <= 20",
|
|
["action"] = "mind_spike",
|
|
["description"] = "High priority action to Mind Spike to get to enough Insanity during the opener with Voidweaver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( dot.shadow_word_pain.ticking & variable.dots_up || action.shadow_crash.in_flight & talent.whispering_shadows.enabled ) & ( boss & fight_remains < 30 || target.time_to_die > 15 ) & ( ! talent.dark_ascension.enabled || cooldown.dark_ascension.remains < gcd.max || boss & fight_remains < 15 )",
|
|
["action"] = "mindbender",
|
|
["description"] = "Use Shadowfiend and Mindbender on cooldown as long as Vampiric Touch and Shadow Word: Pain are active and sync with Dark Ascension",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_word_death",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "priest.force_devour_matter & talent.devour_matter.enabled",
|
|
["description"] = "High Priority Shadow Word: Death when you are forcing the bonus from Devour Matter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "void_blast",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "( dot.devouring_plague.remains >= execute_time || buff.entropic_rift.remains <= gcd.max || action.void_torrent.channeling & talent.void_empowerment.enabled ) & ( insanity.deficit >= 16 || cooldown.mind_blast.full_recharge_time <= gcd.max || buff.entropic_rift.remains <= gcd.max ) & ( ! talent.mind_devourer.enabled || ! buff.mind_devourer.up || buff.entropic_rift.remains <= gcd.max )",
|
|
["description"] = "Blast more burst :wicked:",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "devouring_plague",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "( dot.devouring_plague.remains <= gcd.max || variable.dr_force_prio || ! talent.distorted_reality.enabled & variable.me_force_prio ) & buff.voidform.up & talent.perfected_form.enabled & buff.voidform.remains <= gcd.max & talent.void_eruption.enabled",
|
|
["description"] = "Do not let Voidform Expire if you can avoid it.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["sec"] = "cooldown.mind_blast.recharge_time",
|
|
["action"] = "wait",
|
|
["criteria"] = "cooldown.mind_blast.recharge_time < buff.entropic_rift.remains & buff.entropic_rift.up & buff.entropic_rift.remains < gcd.max & cooldown.mind_blast.charges < 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mind_blast",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "talent.void_eruption.enabled & buff.voidform.up & full_recharge_time <= gcd.max & ( ! talent.insidious_ire.enabled || dot.devouring_plague.remains >= execute_time ) & ( cooldown.void_bolt.remains / gcd.max - cooldown.void_bolt.remains % gcd.max ) * gcd.max <= 0.25 & ( cooldown.void_bolt.remains / gcd.max - cooldown.void_bolt.remains % gcd.max ) >= 0.01",
|
|
["description"] = "Complicated do not overcap mindblast and use it to protect against void bolt cd desync",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "void_bolt",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "insanity.deficit > 16 & cooldown.void_bolt.remains <= 0.1",
|
|
["description"] = "Use Voidbolt on the enemy with the largest time to die. We do no care about dots because Voidbolt is only accessible inside voidform which guarantees maximum effect",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "devouring_plague",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "active_dot.devouring_plague <= 1 & dot.devouring_plague.remains <= gcd.max & ( ! talent.void_eruption.enabled || cooldown.void_eruption.remains >= gcd.max * 3 ) || insanity.deficit <= 16",
|
|
["description"] = "Do not overcap on insanity",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "void_torrent",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "( dot.devouring_plague.ticking || talent.void_eruption.enabled & cooldown.void_eruption.up ) & talent.entropic_rift.enabled & ! variable.holding_crash",
|
|
["description"] = "Cast Void Torrent at very high priority if Voidweaver",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_word_death",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "talent.depth_of_shadows.enabled & ( target.health.pct <= 20 || buff.deathspeaker.up & talent.deathspeaker.enabled ) & talent.inescapable_torment.enabled",
|
|
["description"] = "Snipe SWDs with Depth of Shadows to spawn pets. Prefer targets with Devouring Plague on them.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mind_blast",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "( cooldown.mind_blast.full_recharge_time <= gcd.max + execute_time || pet.fiend.remains <= execute_time + gcd.max ) & pet.fiend.active & talent.inescapable_torment.enabled & pet.fiend.remains >= execute_time & active_enemies <= 7 & ( ! buff.mind_devourer.up || ! talent.mind_devourer.enabled ) & dot.devouring_plague.remains > execute_time & ! variable.pooling_mindblasts",
|
|
["description"] = "Use Mind Blasts if using Inescapable Torment and you are capping charges or it will expire soon. Do not use if pooling Mindblast.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_word_death",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "pet.fiend.remains <= ( gcd.max + 1 ) & pet.fiend.active & talent.inescapable_torment.enabled & active_enemies <= 7",
|
|
["description"] = "High Priority Shadow Word: Death is Mindbender is expiring in less than a gcd plus wiggle room",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "void_bolt",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "cooldown.void_bolt.remains <= 0.1",
|
|
["description"] = "Use Voidbolt on the enemy with the largest time to die. Force a cooldown check here to make sure SimC doesn't wait too long (i.e. weird MF:I desync with GCD)",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "buff.unfurling_darkness.up & active_dot.vampiric_touch <= 5",
|
|
["description"] = "Spend UFD as a high priority action",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Do not overcap MSI or MFI during Empowered Surges (Archon).",
|
|
["strict"] = 1,
|
|
["criteria"] = "( buff.mind_spike_insanity.stack > 2 & talent.mind_spike.enabled || buff.mind_flay_insanity.stack > 2 & ! talent.mind_spike.enabled ) & talent.empowered_surges.enabled & ! cooldown.void_eruption.up",
|
|
["list_name"] = "empowered_filler",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains <= duration + 4",
|
|
["action"] = "devouring_plague",
|
|
["description"] = "Spend your Insanity on Devouring Plague at will if the fight will end in less than 10s",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "devouring_plague",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "( dot.devouring_plague.remains <= gcd.max || variable.dr_force_prio || ! talent.distorted_reality.enabled & variable.me_force_prio ) & ( insanity.deficit <= 35 & talent.distorted_reality.enabled || buff.mind_devourer.up & cooldown.mind_blast.up & ( cooldown.void_eruption.remains >= 3 * gcd.max || ! talent.void_eruption.enabled ) & talent.mind_devourer.enabled || buff.entropic_rift.up || buff.voidform.up & talent.perfected_form.enabled & talent.void_eruption.enabled )",
|
|
["description"] = "Use Devouring Plague to maximize uptime. Short circuit if you are capping on Insanity within 35 With Distorted Reality can maintain more than one at a time in multi-target.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "void_torrent",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "! variable.holding_crash & ! talent.entropic_rift.enabled & dot.devouring_plague.remains >= 2.5",
|
|
["description"] = "Use Void Torrent if it will get near full Mastery Value and you have Cthun and Void Eruption. Prune this action for Entropic Rift Builds.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_crash",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "dot.vampiric_touch.refreshable & ! variable.holding_crash",
|
|
["description"] = "Use Shadow Crash as long as you are not holding for adds and Vampiric Touch is within pandemic range",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "refreshable & buff.unfurling_darkness_cd.remains < ( execute_time - 0.2 ) & talent.unfurling_darkness.enabled & ! buff.dark_ascension.up & talent.inner_quietus.enabled & active_dot.vampiric_touch <= 5",
|
|
["description"] = "Acquire UFD",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "vampiric_touch",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "refreshable & target.time_to_die > 12 & ( dot.vampiric_touch.ticking || ! variable.dots_up ) & ( variable.max_vts > 0 || active_enemies = 1 ) & ( cooldown.shadow_crash.remains >= dot.vampiric_touch.remains || variable.holding_crash || ! talent.whispering_shadows.enabled ) & ( ! action.shadow_crash.in_flight || ! talent.whispering_shadows.enabled )",
|
|
["description"] = "Put out Vampiric Touch on enemies that will live at least 12s and Shadow Crash is not available soon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shadow_word_death",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "variable.dots_up & buff.deathspeaker.up",
|
|
["description"] = "Spend Deathspeaker Procs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "mind_blast",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "( ! buff.mind_devourer.up || ! talent.mind_devourer.enabled || cooldown.void_eruption.up & talent.void_eruption.enabled ) & ! variable.pooling_mindblasts",
|
|
["description"] = "Use all charges of Mind Blast if Vampiric Touch and Shadow Word: Pain are active and Mind Devourer is not active or you are prepping Void Eruption",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "filler",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20241102,
|
|
["warnings"] = "The import for 'filler' required some automated changes.\nLine 1: Converted 'talent.mind_spike' to 'talent.mind_spike.enabled' (1x).\nLine 2: Converted 'talent.unfurling_darkness' to 'talent.unfurling_darkness.enabled' (1x).\nLine 2: Converted 'talent.inner_quietus' to 'talent.inner_quietus.enabled' (1x).\nLine 4: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 5: Converted 'talent.empowered_surges' to 'talent.empowered_surges.enabled' (1x).\nLine 5: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 6: Converted 'talent.unfurling_darkness' to 'talent.unfurling_darkness.enabled' (1x).\n\nThe import for 'aoe_variables' required some automated changes.\nLine 4: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 5: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\n\nThe import for 'main' required some automated changes.\nLine 1: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 2: Converted 'talent.void_blast' to 'talent.void_blast.enabled' (1x).\nLine 2: Converted 'talent.mind_melt' to 'talent.mind_melt.enabled' (1x).\nLine 4: Converted 'talent.mind_melt' to 'talent.mind_melt.enabled' (1x).\nLine 4: Converted 'talent.void_blast' to 'talent.void_blast.enabled' (1x).\nLine 5: Converted 'talent.mind_melt' to 'talent.mind_melt.enabled' (1x).\nLine 5: Converted 'talent.void_blast' to 'talent.void_blast.enabled' (1x).\nLine 5: Converted 'talent.distorted_reality' to 'talent.distorted_reality.enabled' (1x).\nLine 5: Converted 'talent.unfurling_darkness' to 'talent.unfurling_darkness.enabled' (1x).\nLine 5: Converted 'talent.minds_eye' to 'talent.minds_eye.enabled' (1x).\nLine 5: Converted 'talent.halo' to 'talent.halo.enabled' (1x).\nLine 5: Converted 'talent.halo' to 'talent.halo.enabled' (1x).\nLine 6: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 6: Converted 'talent.dark_ascension' to 'talent.dark_ascension.enabled' (1x).\nLine 7: Converted 'talent.devour_matter' to 'talent.devour_matter.enabled' (1x).\nLine 8: Converted 'talent.void_empowerment' to 'talent.void_empowerment.enabled' (1x).\nLine 8: Converted 'talent.mind_devourer' to 'talent.mind_devourer.enabled' (1x).\nLine 9: Converted 'talent.distorted_reality' to 'talent.distorted_reality.enabled' (1x).\nLine 9: Converted 'talent.perfected_form' to 'talent.perfected_form.enabled' (1x).\nLine 9: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 11: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 11: Converted 'talent.insidious_ire' to 'talent.insidious_ire.enabled' (1x).\nLine 11: Converted operations in 'talent.void_eruption.enabled&buff.voidform.up&full_recharge_time<=gcd.max&(!talent.insidious_ire.enabled||dot.devouring_plague.remains>=execute_time)&(cooldown.void_bolt.remains%gcd.max-cooldown.void_bolt.remains%%gcd.max)*gcd.max<=0.25&(cooldown.void_bolt.remains%gcd.max-cooldown.void_bolt.remains%%gcd.max)>=0.01' to 'talent.void_eruption.enabled&buff.voidform.up&full_recharge_time<=gcd.max&(!talent.insidious_ire.enabled||dot.devouring_plague.remains>=execute_time)&(cooldown.void_bolt.remains/gcd.max-cooldown.void_bolt.remains%gcd.max)*gcd.max<=0.25&(cooldown.void_bolt.remains/gcd.max-cooldown.void_bolt.remains%gcd.max)>=0.01'.\nLine 13: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 14: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 14: Converted 'talent.entropic_rift' to 'talent.entropic_rift.enabled' (1x).\nLine 15: Converted 'talent.depth_of_shadows' to 'talent.depth_of_shadows.enabled' (1x).\nLine 15: Converted 'talent.deathspeaker' to 'talent.deathspeaker.enabled' (1x).\nLine 15: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 16: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 16: Converted 'talent.mind_devourer' to 'talent.mind_devourer.enabled' (1x).\nLine 17: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 20: Converted 'talent.mind_spike' to 'talent.mind_spike.enabled' (1x).\nLine 20: Converted 'talent.mind_spike' to 'talent.mind_spike.enabled' (1x).\nLine 20: Converted 'talent.empowered_surges' to 'talent.empowered_surges.enabled' (1x).\nLine 22: Converted 'talent.distorted_reality' to 'talent.distorted_reality.enabled' (1x).\nLine 22: Converted 'talent.distorted_reality' to 'talent.distorted_reality.enabled' (1x).\nLine 22: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 22: Converted 'talent.mind_devourer' to 'talent.mind_devourer.enabled' (1x).\nLine 22: Converted 'talent.perfected_form' to 'talent.perfected_form.enabled' (1x).\nLine 22: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 23: Converted 'talent.entropic_rift' to 'talent.entropic_rift.enabled' (1x).\nLine 25: Converted 'talent.unfurling_darkness' to 'talent.unfurling_darkness.enabled' (1x).\nLine 25: Converted 'talent.inner_quietus' to 'talent.inner_quietus.enabled' (1x).\nLine 26: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 26: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 28: Converted 'talent.mind_devourer' to 'talent.mind_devourer.enabled' (1x).\nLine 28: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 11: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\n\nThe import for 'aoe' required some automated changes.\nLine 4: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 5: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\nLine 7: Converted 'talent.whispering_shadows' to 'talent.whispering_shadows.enabled' (1x).\n\nThe import for 'cds' required some automated changes.\nLine 7: Converted 'talent.power_surge' to 'talent.power_surge.enabled' (1x).\nLine 7: Converted 'talent.mindbender' to 'talent.mindbender.enabled' (1x).\nLine 7: Converted 'talent.mindbender' to 'talent.mindbender.enabled' (1x).\nLine 7: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 7: Converted 'talent.dark_ascension' to 'talent.dark_ascension.enabled' (1x).\nLine 7: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 8: Converted 'talent.mindbender' to 'talent.mindbender.enabled' (1x).\nLine 8: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 9: Converted 'talent.mindbender' to 'talent.mindbender.enabled' (1x).\nLine 9: Converted 'talent.inescapable_torment' to 'talent.inescapable_torment.enabled' (1x).\nLine 9: Converted 'talent.minds_eye' to 'talent.minds_eye.enabled' (1x).\nLine 9: Converted 'talent.distorted_reality' to 'talent.distorted_reality.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 2: Converted 'talent.entropic_rift' to 'talent.entropic_rift.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'talent.void_eruption' to 'talent.void_eruption.enabled' (1x).\nLine 3: Converted 'talent.dark_ascension' to 'talent.dark_ascension.enabled' (1x).\nLine 3: Converted 'talent.void_torrent' to 'talent.void_torrent.enabled' (1x).\nLine 3: Converted 'talent.psychic_link' to 'talent.psychic_link.enabled' (1x).\n\nImported 9 action lists.\n",
|
|
["profile"] = "actions.precombat+=/power_word_fortitude\nactions.precombat+=/shadowform,if=!buff.shadowform.up\nactions.precombat+=/variable,name=dr_force_prio,default=0,op=reset\nactions.precombat+=/variable,name=me_force_prio,default=1,op=reset\nactions.precombat+=/variable,name=max_vts,default=12,op=reset\nactions.precombat+=/variable,name=is_vt_possible,default=0,op=reset\nactions.precombat+=/variable,name=pooling_mindblasts,default=0,op=reset\nactions.precombat+=/arcane_torrent\n## actions.precombat+=/use_item,name=aberrant_spellforge\nactions.precombat+=/halo,if=boss&active_enemies<=4&(fight_remains>=120||active_enemies<=2)\nactions.precombat+=/shadow_crash,if=spell_targets.shadow_crash<=8&(!set_bonus.tier31_4pc||spell_targets.shadow_crash>1)\nactions.precombat+=/vampiric_touch,if=(!talent.whispering_shadows||!action.shadow_crash.in_flight)&(!talent.shadow_crash.enabled||spell_targets.shadow_crash>8||!boss||set_bonus.tier31_4pc&spell_targets.shadow_crash=1)\n\nactions+=/silence\nactions+=/variable,name=holding_crash,op=set,value=false\nactions+=/variable,name=pool_for_cds,op=set,value=(cooldown.void_eruption.remains<=gcd.max*3&talent.void_eruption||cooldown.dark_ascension.up&talent.dark_ascension)||talent.void_torrent&talent.psychic_link&cooldown.void_torrent.remains<=4&!variable.holding_crash&!buff.voidform.up\nactions+=/call_action_list,name=aoe,strict=1,if=active_enemies>2\nactions+=/run_action_list,name=main\n\nactions.aoe+=/variable,name=max_vts,op=set,default=12,value=spell_targets.vampiric_touch>?12\nactions.aoe+=/variable,name=is_vt_possible,op=set,value=0,default=1\nactions.aoe+=/variable,name=is_vt_possible,op=set,value=1,if=target.time_to_die>=18&dot.vampiric_touch.refreshable\n# TODO: Revamp to fix undesired behaviour with unstacked fights\nactions.aoe+=/variable,name=dots_up,op=set,value=(active_dot.vampiric_touch+8*(action.shadow_crash.in_flight&talent.whispering_shadows))>=variable.max_vts||!variable.is_vt_possible\nactions.aoe+=/variable,name=holding_crash,op=set,value=(variable.max_vts-active_dot.vampiric_touch)<4,if=variable.holding_crash&talent.whispering_shadows&active_enemies>1\nactions.aoe+=/variable,name=manual_vts_applied,op=set,value=(active_dot.vampiric_touch+8*!variable.holding_crash)>=variable.max_vts||!variable.is_vt_possible\n# High Priority action to put out Vampiric Touch on enemies that will live at least 18 seconds, up to 12 targets manually while prepping AoE\nactions.aoe+=/vampiric_touch,cycle_targets=1,if=(buff.unfurling_darkness.up||buff.unfurling_darkness_cd.down||buff.unfurling_darkness_cd.remains>2*gcd)&(target.time_to_die>=18&(dot.vampiric_touch.ticking||!variable.dots_up))&((variable.max_vts>0&!variable.manual_vts_applied&!action.shadow_crash.in_flight||!talent.whispering_shadows)&!buff.entropic_rift.up)\n# Use Shadow Crash to apply Vampiric Touch to as many adds as possible while being efficient with Vampiric Touch refresh windows\nactions.aoe+=/shadow_crash,cycle_targets=1,if=!variable.holding_crash&(dot.vampiric_touch.refreshable||dot.vampiric_touch.remains<=target.time_to_die&!buff.voidform.up)\n\nactions.main+=/variable,name=dots_up,op=set,value=active_dot.vampiric_touch>=cycle_enemies||action.shadow_crash.in_flight&talent.whispering_shadows,if=active_enemies<3\n# Are we pooling mindblasts? Currently only used for Voidweaver; [Hekili] modified to still allow us to build Insanity when CDs are toggled off.\nactions.main+=/variable,name=pooling_mindblasts,op=setif,value=1,value_else=0,condition=talent.void_blast&cooldown.void_torrent.remains<=gcd.max*(1+talent.mind_melt)&insanity>action.devouring_plague.cost\nactions.main+=/call_action_list,name=cds,if=boss&fight_remains<30||target.time_to_die>15&(!variable.holding_crash||active_enemies>2)\n# High priority action to consume Unfurling Darkness during the opener with Voidweaver\nactions.main+=/vampiric_touch,cycle_targets=1,if=buff.unfurling_darkness.up&talent.mind_melt&talent.void_blast&buff.mind_melt.stack<2&cooldown.mindbender.up&cooldown.dark_ascension.up&time<=4\n# High priority action to Mind Spike to get to enough Insanity during the opener with Voidweaver\nactions.main+=/mind_spike,if=talent.mind_melt&talent.void_blast&(buff.mind_melt.stack<(1*talent.distorted_reality+1-talent.unfurling_darkness-talent.minds_eye*1)&talent.halo||!talent.halo&buff.mind_melt.stack<2)&cooldown.mindbender.up&cooldown.dark_ascension.up&time<=4&insanity<=20\n# Use Shadowfiend and Mindbender on cooldown as long as Vampiric Touch and Shadow Word: Pain are active and sync with Dark Ascension\nactions.main+=/mindbender,if=(dot.shadow_word_pain.ticking&variable.dots_up||action.shadow_crash.in_flight&talent.whispering_shadows)&(boss&fight_remains<30||target.time_to_die>15)&(!talent.dark_ascension||cooldown.dark_ascension.remains<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",
|
|
["spec"] = 258,
|
|
},
|
|
["Holy Priest"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20240828,
|
|
["spec"] = 257,
|
|
["desc"] = "Healer priorities are DPS-focused only\n\n2024-08-28: Use cooldowns action list\n\n2024-07-30: The War Within",
|
|
["profile"] = "actions.precombat+=/power_word_fortitude\n\nactions+=/call_action_list,name=cooldowns\n# Always use HF if we have empyreal blaze (dot extension) or harmonious apparatus (cd reduction) or if it's not currently ticking. Otherwise, only use when refreshable to be sure we get the longest duration possible. It's worth it to cast even when the target will die soon based on just the initial hit damage. We also don't want to cast immediately once empyreal blaze is up when we are prepping divine word\nactions+=/holy_fire,cycle_targets=1,if=(talent.empyreal_blaze||talent.harmonious_apparatus||!ticking||refreshable)&!(buff.empyreal_blaze.up&(cooldown.divine_word.up||buff.divine_word.up)&cooldown.holy_word_chastise.up)\n# Don't cast SW:P during apotheosis or divine favor: chastise. We also don't cycle targets because it isn't worth the GCDs, since Smite deals slightly more damage than a full SW:P.\nactions+=/shadow_word_pain,if=(refreshable||!ticking)&(target.time_to_die>=dot.shadow_word_pain.duration)&!buff.divine_favor_chastise.up&!buff.apotheosis.up\n# Prepare to enter divine favor: chastise\nactions+=/call_action_list,name=divine_favor_chastise_prep,if=talent.divine_word&talent.holy_word_chastise&buff.divine_favor_chastise.down\n# Enter Divine Favor rotation with divine favor: chastise buff up\nactions+=/run_action_list,name=divine_favor_chastise_active,strict=1,if=buff.divine_favor_chastise.up\n# Run divine favor fillers rotation with buff down\nactions+=/run_action_list,name=divine_favor_filler,if=talent.divine_word&talent.holy_word_chastise&buff.divine_favor_chastise.down\n# Run divine image rotation with divine image talented\nactions+=/run_action_list,name=divine_image,strict=1,if=talent.divine_image\n# Otherwise generic rotation\nactions+=/run_action_list,name=generic\n\nactions.divine_favor_chastise_prep+=/variable,name=empyreal_exec_time,op=set,value=0\n# apotheosis_exec_time: Store how long Apotheosis will take to execute\nactions.divine_favor_chastise_prep+=/variable,name=apotheosis_exec_time,op=setif,condition=talent.apotheosis,value=action.apotheosis.execute_time,value_else=0\n# Use apotheosis to get Chastise back if its on cooldown and Divine Word will be up soon. We can use Apotheosis (2min CD) to reset Chastise for every other Divine Word (1min CD).\nactions.divine_favor_chastise_prep+=/apotheosis,if=(cooldown.holy_word_chastise.remains>cooldown.divine_word.remains)&(cooldown.divine_word.remains<=(variable.empyreal_exec_time+variable.apotheosis_exec_time))\n# Divine Word only if we can sync with Chastise and (if talented) Empyreal Blaze\nactions.divine_favor_chastise_prep+=/divine_word,if=cooldown.holy_word_chastise.up&(!talent.empyreal_blaze||buff.empyreal_blaze.up)\n# Holy word chastise to trigger divine favor: chastise\nactions.divine_favor_chastise_prep+=/holy_word_chastise,if=!talent.empyreal_blaze&buff.divine_word.up||talent.empyreal_blaze&buff.empyreal_blaze.down\n\nactions.divine_favor_chastise_active+=/halo,if=spell_targets.halo>=2\nactions.divine_favor_chastise_active+=/divine_star,if=spell_targets.divine_star>=2\n# There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do\nactions.divine_favor_chastise_active+=/holy_nova,if=(spell_targets.holy_nova>=2&buff.rhapsody.stack>=18)||(spell_targets.holy_nova>=3&buff.rhapsody.stack>=9)||(spell_targets.holy_nova>=4&buff.rhapsody.stack>=4)||spell_targets.holy_nova>=5\nactions.divine_favor_chastise_active+=/mindgames\nactions.divine_favor_chastise_active+=/shadow_word_death,if=target.health.pct<20\nactions.divine_favor_chastise_active+=/holy_word_chastise\n# We want to cycle smite to different targets to spread holy fire dots in AOE situations, this will buff holy nova's damage\nactions.divine_favor_chastise_active+=/smite,cycle_targets=1,if=spell_targets.holy_nova>=2\nactions.divine_favor_chastise_active+=/smite\n\nactions.divine_favor_filler+=/halo,if=spell_targets.halo>=2\nactions.divine_favor_filler+=/divine_star,if=spell_targets.divine_star>=2\n# There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do\nactions.divine_favor_filler+=/holy_nova,if=(spell_targets.holy_nova>=2&buff.rhapsody.stack>=18)||(spell_targets.holy_nova>=3&buff.rhapsody.stack>=9)||(spell_targets.holy_nova>=4&buff.rhapsody.stack>=4)||spell_targets.holy_nova>=5\nactions.divine_favor_filler+=/mindgames\nactions.divine_favor_filler+=/shadow_word_death,if=target.health.pct<20\n# We can use chastise for damage as long as we will have apotheosis available before the next divine word, otherwise only use it when it will be back up at the same time as divine word\nactions.divine_favor_filler+=/holy_word_chastise,if=(cooldown.apotheosis.remains<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",
|
|
["lists"] = {
|
|
["divine_favor_filler"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.halo >= 2",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.divine_star >= 2",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( spell_targets.holy_nova >= 2 & buff.rhapsody.stack >= 18 ) || ( spell_targets.holy_nova >= 3 & buff.rhapsody.stack >= 9 ) || ( spell_targets.holy_nova >= 4 & buff.rhapsody.stack >= 4 ) || spell_targets.holy_nova >= 5",
|
|
["action"] = "holy_nova",
|
|
["description"] = "There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do",
|
|
},
|
|
{
|
|
["action"] = "mindgames",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 20",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.apotheosis.remains < cooldown.divine_word.remains ) || ( cooldown.holy_word_chastise.duration_expected <= cooldown.divine_word.remains )",
|
|
["action"] = "holy_word_chastise",
|
|
["description"] = "We can use chastise for damage as long as we will have apotheosis available before the next divine word, otherwise only use it when it will be back up at the same time as divine word",
|
|
},
|
|
{
|
|
["action"] = "smite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["divine_image"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.answered_prayers.down & ! ( cooldown.holy_word_sanctify.up || cooldown.holy_word_serenity.up || cooldown.holy_word_chastise.up )",
|
|
["action"] = "apotheosis",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "holy_word_sanctify",
|
|
["description"] = "line_cd prevents re-casting sanctify and serenity right away, wasting GCDs that could be used to proc divine image damage. In testing, the sweet spot balance between adding more divine images, triggering apotheosis, and casting damage CDs was to let the image from each healing holy word expire before re-casting",
|
|
["line_cd"] = "9",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "holy_word_serenity",
|
|
["line_cd"] = "9",
|
|
},
|
|
{
|
|
["action"] = "holy_word_chastise",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.halo >= 2",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.divine_star >= 2",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( spell_targets.holy_nova >= 2 & buff.rhapsody.stack >= 18 ) || ( spell_targets.holy_nova >= 3 & buff.rhapsody.stack >= 9 ) || ( spell_targets.holy_nova >= 4 & buff.rhapsody.stack >= 4 ) || spell_targets.holy_nova >= 5",
|
|
["action"] = "holy_nova",
|
|
["description"] = "There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do",
|
|
},
|
|
{
|
|
["action"] = "mindgames",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 20",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["action"] = "smite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "holy_fire",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "( talent.empyreal_blaze.enabled || talent.harmonious_apparatus.enabled || ! ticking || refreshable ) & ! ( buff.empyreal_blaze.up & ( cooldown.divine_word.up || buff.divine_word.up ) & cooldown.holy_word_chastise.up )",
|
|
["description"] = "Always use HF if we have empyreal blaze (dot extension) or harmonious apparatus (cd reduction) or if it's not currently ticking. Otherwise, only use when refreshable to be sure we get the longest duration possible. It's worth it to cast even when the target will die soon based on just the initial hit damage. We also don't want to cast immediately once empyreal blaze is up when we are prepping divine word",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( refreshable || ! ticking ) & ( target.time_to_die >= dot.shadow_word_pain.duration ) & ! buff.divine_favor_chastise.up & ! buff.apotheosis.up",
|
|
["action"] = "shadow_word_pain",
|
|
["description"] = "Don't cast SW:P during apotheosis or divine favor: chastise. We also don't cycle targets because it isn't worth the GCDs, since Smite deals slightly more damage than a full SW:P.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["description"] = "Prepare to enter divine favor: chastise",
|
|
["criteria"] = "talent.divine_word.enabled & talent.holy_word_chastise.enabled & buff.divine_favor_chastise.down",
|
|
["list_name"] = "divine_favor_chastise_prep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["description"] = "Enter Divine Favor rotation with divine favor: chastise buff up",
|
|
["strict"] = 1,
|
|
["criteria"] = "buff.divine_favor_chastise.up",
|
|
["list_name"] = "divine_favor_chastise_active",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["description"] = "Run divine favor fillers rotation with buff down",
|
|
["criteria"] = "talent.divine_word.enabled & talent.holy_word_chastise.enabled & buff.divine_favor_chastise.down",
|
|
["list_name"] = "divine_favor_filler",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["description"] = "Run divine image rotation with divine image talented",
|
|
["strict"] = 1,
|
|
["criteria"] = "talent.divine_image.enabled",
|
|
["list_name"] = "divine_image",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Otherwise generic rotation",
|
|
["action"] = "run_action_list",
|
|
["list_name"] = "generic",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "power_word_fortitude",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["divine_favor_chastise_prep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "empyreal_exec_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["description"] = "apotheosis_exec_time: Store how long Apotheosis will take to execute",
|
|
["criteria"] = "talent.apotheosis.enabled",
|
|
["var_name"] = "apotheosis_exec_time",
|
|
["action"] = "variable",
|
|
["value_else"] = "0",
|
|
["value"] = "action.apotheosis.execute_time",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( cooldown.holy_word_chastise.remains > cooldown.divine_word.remains ) & ( cooldown.divine_word.remains <= ( variable.empyreal_exec_time + variable.apotheosis_exec_time ) )",
|
|
["action"] = "apotheosis",
|
|
["description"] = "Use apotheosis to get Chastise back if its on cooldown and Divine Word will be up soon. We can use Apotheosis (2min CD) to reset Chastise for every other Divine Word (1min CD).",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.holy_word_chastise.up & ( ! talent.empyreal_blaze.enabled || buff.empyreal_blaze.up )",
|
|
["action"] = "divine_word",
|
|
["description"] = "Divine Word only if we can sync with Chastise and (if talented) Empyreal Blaze",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.empyreal_blaze.enabled & buff.divine_word.up || talent.empyreal_blaze.enabled & buff.empyreal_blaze.down",
|
|
["action"] = "holy_word_chastise",
|
|
["description"] = "Holy word chastise to trigger divine favor: chastise",
|
|
},
|
|
},
|
|
["generic"] = {
|
|
{
|
|
["action"] = "holy_word_chastise",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.holy_word_chastise.remains > ( gcd.max * 3 )",
|
|
["action"] = "apotheosis",
|
|
["description"] = "Hold Apotheosis if chastise will be up soon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.halo >= 2",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.divine_star >= 2",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( spell_targets.holy_nova >= 2 & buff.rhapsody.stack >= 18 ) || ( spell_targets.holy_nova >= 3 & buff.rhapsody.stack >= 9 ) || ( spell_targets.holy_nova >= 4 & buff.rhapsody.stack >= 4 ) || spell_targets.holy_nova >= 5",
|
|
["action"] = "holy_nova",
|
|
["description"] = "There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do",
|
|
},
|
|
{
|
|
["action"] = "mindgames",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 20",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["action"] = "smite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["action"] = "mindbender",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.divine_word.enabled || ( cooldown.divine_word.up & cooldown.holy_word_chastise.up ) )",
|
|
["action"] = "power_infusion",
|
|
["description"] = "Sync PI with divine favor: chastise if we took divine word",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up",
|
|
["action"] = "potion",
|
|
["description"] = "Only potion in sync with power infusion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up",
|
|
["action"] = "use_items",
|
|
["description"] = "hold trinkets to use with PI",
|
|
},
|
|
},
|
|
["divine_favor_chastise_active"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.halo >= 2",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.divine_star >= 2",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( spell_targets.holy_nova >= 2 & buff.rhapsody.stack >= 18 ) || ( spell_targets.holy_nova >= 3 & buff.rhapsody.stack >= 9 ) || ( spell_targets.holy_nova >= 4 & buff.rhapsody.stack >= 4 ) || spell_targets.holy_nova >= 5",
|
|
["action"] = "holy_nova",
|
|
["description"] = "There are particular breakpoints combinations of rhapsody and spell targets beyond which holy nova beats everything else we can do",
|
|
},
|
|
{
|
|
["action"] = "mindgames",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 20",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["action"] = "holy_word_chastise",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "smite",
|
|
["cycle_targets"] = 1,
|
|
["criteria"] = "spell_targets.holy_nova >= 2",
|
|
["description"] = "We want to cycle smite to different targets to spread holy fire dots in AOE situations, this will buff holy nova's damage",
|
|
},
|
|
{
|
|
["action"] = "smite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["author"] = "Kapulani",
|
|
},
|
|
["Discipline"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20240811,
|
|
["author"] = "SimC",
|
|
["desc"] = "Healer priorities are DPS-focused only\n\n2024-07-30: The War Within",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! buff.twilight_equilibrium_holy_amp.up & ! buff.twilight_equilibrium_shadow_amp.up",
|
|
["var_name"] = "te_none",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.twilight_equilibrium_shadow_amp.up || variable.te_none",
|
|
["var_name"] = "te_shadow",
|
|
["description"] = "Twilight Equilibrium is buffing shadow damage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.twilight_equilibrium_holy_amp.up || variable.te_none",
|
|
["var_name"] = "te_holy",
|
|
["description"] = "Twilight Equilibrium is buffing holy damage",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.shadow_covenant.enabled",
|
|
["var_name"] = "long_scov",
|
|
["description"] = "Long Shadow covenant is enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.shadowfiend.up || buff.shadow_covenant.up",
|
|
["var_name"] = "can_enter_scov",
|
|
["description"] = "Ready to start shadow covenant phase",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["description"] = "penance",
|
|
["criteria"] = "talent.dark_indulgence.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
["criteria"] = "talent.shadow_word_death.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
["criteria"] = "talent.shadow_word_death.enabled & talent.death_and_madness.enabled & target.health.pct < 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.mindgames.execute_time",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
["criteria"] = "talent.mindgames.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.divine_star.execute_time",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
["criteria"] = "talent.divine_star.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.halo.execute_time",
|
|
["var_name"] = "shadow_spells_duration_max",
|
|
["criteria"] = "talent.halo.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "floor",
|
|
["action"] = "variable",
|
|
["value"] = "( buff.shadow_covenant.duration - variable.shadow_spells_duration_max ) / gcd.max",
|
|
["var_name"] = "max_te_holy",
|
|
["description"] = "(scov duration - shadow spells duration) / GCD time = estimate of holy spells we should need to use during the next scov window Long scov example: (15 - 12) / 1.5 = 2 GCDs to spend on holy spells Short scov example: (7 - 12) / 1.5 = -3.3 GCDs to spend on holy spells (none)",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "remaining_te_holy",
|
|
["description"] = "Counting variable, the number of non-fractional remaining holy casts available",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "variable.max_te_holy",
|
|
["var_name"] = "remaining_te_holy",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["criteria"] = "talent.train_of_thought.enabled",
|
|
["var_name"] = "expected_penance_reduction",
|
|
["value"] = "2",
|
|
["action"] = "variable",
|
|
["value_else"] = "0",
|
|
["description"] = "TODO: duration_expected is buggy on penance/dark reprimand, using a static reduction as a stand-in for now",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "0",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["description"] = "Calculate how much cast time worth of shadow spells we have currently available. We use shadow_spells_duration to determine if we have time to weave in any holy spells to proc twilight equilibrium.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["value"] = "2",
|
|
["description"] = "Penance",
|
|
["criteria"] = "cooldown.penance.up || ( ( cooldown.penance.remains - variable.expected_penance_reduction ) < buff.shadow_covenant.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["value"] = "action.mindgames.execute_time",
|
|
["description"] = "Mindgames",
|
|
["criteria"] = "cooldown.mindgames.up || ( cooldown.mindgames.remains_expected < buff.shadow_covenant.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["description"] = "We always get the first SW:D",
|
|
["criteria"] = "cooldown.shadow_word_death.up || ( cooldown.shadow_word_death.remains < buff.shadow_covenant.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["description"] = "Second SW:D only when talented and target health in execute range",
|
|
["criteria"] = "( cooldown.shadow_word_death.up || ( cooldown.shadow_word_death.remains < buff.shadow_covenant.remains ) ) & ( target.health.pct < 20 || target.time_to_pct_20 < cooldown.shadow_word_death.remains ) & talent.death_and_madness.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["value"] = "action.mind_blast.charges * action.mind_blast.execute_time",
|
|
["description"] = "Add any whole charges of mind blast",
|
|
["criteria"] = "action.mind_blast.charges >= 1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["description"] = "Add any fractional charges of mindblast that will recharge in time",
|
|
["criteria"] = "( ( action.mind_blast.charges_fractional >= 1 & action.mind_blast.charges_fractional < 2 ) & ( ( ( 1 - ( action.mind_blast.charges_fractional - 1 ) ) * action.mind_blast.recharge_time ) < buff.shadow_covenant.remains ) ) || ( ( action.mind_blast.charges_fractional < 1 ) & ( ( ( 1 - action.mind_blast.charges_fractional ) * action.mind_blast.recharge_time ) < buff.shadow_covenant.remains ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["value"] = "action.divine_star.execute_time",
|
|
["description"] = "Divine Star",
|
|
["criteria"] = "cooldown.divine_star.up || ( cooldown.divine_star.remains < buff.shadow_covenant.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "shadow_spells_duration",
|
|
["value"] = "action.halo.execute_time",
|
|
["description"] = "Halo",
|
|
["criteria"] = "cooldown.halo.up || ( cooldown.halo.remains < buff.shadow_covenant.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["criteria"] = "talent.twilight_equilibrium.enabled",
|
|
["var_name"] = "should_te",
|
|
["value"] = "( buff.shadow_covenant.remains - variable.shadow_spells_duration ) > action.smite.execute_time",
|
|
["action"] = "variable",
|
|
["value_else"] = "0",
|
|
["description"] = "Determine if we have enough scov time remaining to weave in a twilight equilibrium activation. If we don't have TE talented, always false. Using smite's execution time to represent a worst-case scenario.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.shadowfiend.remains + action.shadowfiend.execute_time",
|
|
["var_name"] = "next_penance_time",
|
|
["description"] = "First casts should always be HD prep->covenant->schism->HD dark reprimand",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_penance_time",
|
|
["value"] = "gcd.max",
|
|
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
|
|
["criteria"] = "variable.remaining_te_holy > 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "remaining_te_holy",
|
|
["description"] = "Reduce our counting variable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( cooldown.penance.duration - variable.expected_penance_reduction ) < variable.next_penance_time",
|
|
["var_name"] = "can_penance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.next_penance_time + 2",
|
|
["var_name"] = "next_swd_time",
|
|
["description"] = "Shadow Word: Death SW:D is better than other spells if we are in execute phase.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_swd_time",
|
|
["value"] = "gcd.max",
|
|
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
|
|
["criteria"] = "variable.remaining_te_holy > 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "remaining_te_holy",
|
|
["description"] = "Reduce our counting variable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_swd_time",
|
|
["value"] = "action.mindgames.execute_time",
|
|
["description"] = "indgame ette ha W: ren' xecut has n av hattere erception on' av xpiatio",
|
|
["criteria"] = "( ( talent.mindgames.enabled & talent.shattered_perceptions.enabled ) || ( talent.mindgames.enabled & ! talent.expiation.enabled ) ) & target.health.pct >= 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_swd_time",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["description"] = "Mind blast is better than SW:D if we aren't in execute",
|
|
["criteria"] = "target.health.pct >= 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_swd_time",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["description"] = "Second mindblast when talented",
|
|
["criteria"] = "target.health.pct >= 20 & talent.dark_indulgence.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_swd_time",
|
|
["value"] = "action.divine_star.execute_time",
|
|
["description"] = "Divine Star and halo are better than SW:D if we aren't in execute and don't have expiation",
|
|
["criteria"] = "talent.divine_star.enabled & target.health.pct >= 20 & ! talent.expiation.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["value"] = "action.halo.execute_time",
|
|
["var_name"] = "next_swd_time",
|
|
["criteria"] = "talent.halo.enabled & target.health.pct >= 20 & ! talent.expiation.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.shadow_word_death.duration_expected < variable.next_swd_time",
|
|
["var_name"] = "can_swd",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.next_penance_time + 2",
|
|
["var_name"] = "next_mind_blast_time",
|
|
["description"] = "Mindblast Mindblast is better than other spells if we aren't in execute phase",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mind_blast_time",
|
|
["value"] = "gcd.max",
|
|
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
|
|
["criteria"] = "variable.remaining_te_holy > 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "remaining_te_holy",
|
|
["description"] = "Reduce our counting variable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mind_blast_time",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["description"] = "Add SW:D if we're in execute phase",
|
|
["criteria"] = "target.health.pct < 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mind_blast_time",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["description"] = "Add a second SW:D if we have death and madness",
|
|
["criteria"] = "talent.death_and_madness.enabled & target.health.pct < 20",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mind_blast_time",
|
|
["value"] = "action.mindgames.execute_time",
|
|
["description"] = "Add mindgames if we have it talented and don't have expiation",
|
|
["criteria"] = "talent.mindgames.enabled & ! talent.expiation.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["criteria"] = "action.mind_blast.charges_fractional >= 1",
|
|
["var_name"] = "can_mind_blast",
|
|
["value"] = "( ( action.mind_blast.max_charges - ( action.mind_blast.charges_fractional - 1 ) ) * action.mind_blast.recharge_time ) < variable.next_mind_blast_time",
|
|
["action"] = "variable",
|
|
["value_else"] = "0",
|
|
["description"] = "TODO: This is a little bit simplistic, requiring both charges of mindblast to be available at the moment the first charge needs to be used. Slight optimization should be possible.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.next_penance_time + 2",
|
|
["var_name"] = "next_mindgames_time",
|
|
["description"] = "Mindgames Mindgames is a better option than other spells if we aren't in execute and don't have expiation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mindgames_time",
|
|
["value"] = "gcd.max",
|
|
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
|
|
["criteria"] = "variable.remaining_te_holy > 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "remaining_te_holy",
|
|
["description"] = "Reduce our counting variable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mindgames_time",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["description"] = "SW:D is better than mindgames in execute phase, or outside of execute phase if we don't have shattered perceptions but do have expiation",
|
|
["criteria"] = "target.health.pct < 20 || ( talent.expiation.enabled & ! talent.shattered_perceptions.enabled )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mindgames_time",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["description"] = "Add a second SW:D if we have death and madness",
|
|
["criteria"] = "target.health.pct < 20 & talent.death_and_madness.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mindgames_time",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["description"] = "Mind blast is better than mindgames if we have expiation",
|
|
["criteria"] = "talent.expiation.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_mindgames_time",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["description"] = "Second mindblast when talented",
|
|
["criteria"] = "talent.expiation.enabled & talent.dark_indulgence.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.mindgames.duration_expected < variable.next_mindgames_time",
|
|
["var_name"] = "can_mindgames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.next_penance_time + 2",
|
|
["var_name"] = "next_divine_star_time",
|
|
["description"] = "Divine Star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["value"] = "gcd.max",
|
|
["description"] = "If we have enough scov duration, add a holy cast to proc twilight equilibrium",
|
|
["criteria"] = "variable.remaining_te_holy > 0",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "sub",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "remaining_te_holy",
|
|
["description"] = "Reduce our counting variable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["description"] = "SW:D is better unless outside of execute phase when expiation is untalented",
|
|
["criteria"] = "target.health.pct < 20 || talent.expiation.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["value"] = "action.shadow_word_death.execute_time",
|
|
["description"] = "Add a second SW:D if we have death and madness",
|
|
["criteria"] = "target.health.pct < 20 & talent.death_and_madness.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["description"] = "Mind blast is always better",
|
|
["criteria"] = "talent.expiation.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["value"] = "action.mind_blast.execute_time",
|
|
["description"] = "Second mindblast when talented",
|
|
["criteria"] = "talent.dark_indulgence.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "add",
|
|
["action"] = "variable",
|
|
["var_name"] = "next_divine_star_time",
|
|
["value"] = "action.mindgames.execute_time",
|
|
["description"] = "Mindgames is always better",
|
|
["criteria"] = "talent.mindgames.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.divine_star.duration < variable.next_divine_star_time",
|
|
["var_name"] = "can_divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "talent.shadow_covenant.enabled & cooldown.mindbender.up",
|
|
["list_name"] = "scov_prep",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "run_action_list",
|
|
["criteria"] = "variable.long_scov & variable.can_enter_scov",
|
|
["list_name"] = "long_scov",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.purge_the_wicked.enabled & ( target.time_to_die > ( 0.3 * dot.purge_the_wicked.duration ) ) & ( ! ticking || ( refreshable & ( ! talent.painful_punishment.enabled || ( talent.painful_punishment.enabled & ( dot.purge_the_wicked.remains < ( cooldown.penance.remains - variable.expected_penance_reduction ) ) ) ) ) )",
|
|
["action"] = "purge_the_wicked",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.purge_the_wicked.enabled & ( target.time_to_die > ( 0.3 * dot.shadow_word_pain.duration ) ) & ( ! ticking || ( refreshable & ( ! talent.painful_punishment.enabled || ( talent.painful_punishment.enabled & ( dot.shadow_word_pain.remains < ( cooldown.penance.remains - variable.expected_penance_reduction ) ) ) ) ) )",
|
|
["action"] = "shadow_word_pain",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_swd ) & target.health.pct < 20",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.dark_indulgence.enabled & buff.power_of_the_dark_side.down & cooldown.penance.remains < gcd.max",
|
|
["action"] = "mind_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_penance )",
|
|
["action"] = "penance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.shadow_covenant.enabled || variable.can_mind_blast",
|
|
["action"] = "mind_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_mindgames ) & talent.shattered_perceptions.enabled",
|
|
["action"] = "mindgames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_swd ) & talent.expiation.enabled & ( target.time_to_pct_20 > ( 0.5 * cooldown.shadow_word_death.duration ) )",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_mindgames ) & ! talent.shattered_perceptions.enabled",
|
|
["action"] = "mindgames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.shadow_covenant.enabled",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_divine_star )",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.shadow_covenant.enabled || variable.can_swd ) & ( target.time_to_pct_20 > ( 0.5 * cooldown.shadow_word_death.duration ) )",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["action"] = "smite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "power_word_fortitude",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.mindbender.enabled & ! buff.shadow_covenant.up",
|
|
["action"] = "mindbender",
|
|
["description"] = "Don't use pets during shadow covenant windows, wasting GCDs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.mindbender.enabled & ! buff.shadow_covenant.up",
|
|
["action"] = "mindbender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.shadow_covenant.enabled || ( talent.shadow_covenant.enabled & ( cooldown.shadowfiend.up || buff.shadow_covenant.up ) )",
|
|
["action"] = "power_infusion",
|
|
["description"] = "hold PI to use with shadow covenant if we have it",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up",
|
|
["action"] = "potion",
|
|
["description"] = "sync potion with PI",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.power_infusion.up || cooldown.power_infusion.remains >= action_cooldown",
|
|
["action"] = "use_items",
|
|
["description"] = "sync trinkets with PI",
|
|
},
|
|
},
|
|
["scov_prep"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! ticking & ( target.time_to_die > ( 0.3 * dot.purge_the_wicked.duration ) )",
|
|
["action"] = "purge_the_wicked",
|
|
["description"] = "Prepare to enter shadow covenant",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.shadowfiend.remains < cast_time",
|
|
["action"] = "power_word_radiance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( target.time_to_die > ( 0.3 * dot.purge_the_wicked.duration ) )",
|
|
["action"] = "purge_the_wicked",
|
|
},
|
|
},
|
|
["long_scov"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Long Shadow Covenant",
|
|
["action"] = "mindbender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.halo >= 3",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.divine_star >= 3",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_holy ) ) & ( ! ticking || refreshable ) & ( target.time_to_die > ( 0.3 * dot.purge_the_wicked.duration ) )",
|
|
["action"] = "purge_the_wicked",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 20 & talent.expiation.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "penance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.halo >= 2",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & spell_targets.divine_star >= 2",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.health.pct < 20 & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.expiation.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "mind_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shattered_perceptions.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "mindgames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.expiation.enabled & ( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & ( target.time_to_pct_20 > buff.shadow_covenant.remains )",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "mindgames",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "mind_blast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "halo",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) )",
|
|
["action"] = "divine_star",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_shadow ) ) & ( target.time_to_pct_20 > buff.shadow_covenant.remains )",
|
|
["action"] = "shadow_word_death",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! variable.should_te || ( variable.should_te & variable.te_holy ) )",
|
|
["action"] = "smite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "just in case we run out of shadow spells with the above conditions",
|
|
["action"] = "penance",
|
|
},
|
|
{
|
|
["action"] = "mindgames",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "mind_blast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "shadow_word_death",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "divine_star",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "halo",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "smite",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20240811,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 5: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 10: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 11: Converted 'talent.shadow_word_death' to 'talent.shadow_word_death.enabled' (1x).\nLine 12: Converted 'talent.shadow_word_death' to 'talent.shadow_word_death.enabled' (1x).\nLine 12: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 13: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 14: Converted 'talent.divine_star' to 'talent.divine_star.enabled' (1x).\nLine 15: Converted 'talent.halo' to 'talent.halo.enabled' (1x).\nLine 16: Converted operations in '(buff.shadow_covenant.duration-variable.shadow_spells_duration_max)%gcd.max' to '(buff.shadow_covenant.duration-variable.shadow_spells_duration_max)/gcd.max'.\nLine 19: Converted 'talent.train_of_thought' to 'talent.train_of_thought.enabled' (1x).\nLine 24: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 29: Converted 'talent.twilight_equilibrium' to 'talent.twilight_equilibrium.enabled' (1x).\nLine 37: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 37: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 37: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 37: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 39: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 40: Converted 'talent.divine_star' to 'talent.divine_star.enabled' (1x).\nLine 40: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 41: Converted 'talent.halo' to 'talent.halo.enabled' (1x).\nLine 41: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 47: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 48: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 48: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 53: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 53: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 54: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 55: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 56: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 56: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 61: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 62: Converted 'talent.death_and_madness' to 'talent.death_and_madness.enabled' (1x).\nLine 63: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 64: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 65: Converted 'talent.mindgames' to 'talent.mindgames.enabled' (1x).\nLine 67: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 69: Converted 'talent.purge_the_wicked' to 'talent.purge_the_wicked.enabled' (1x).\nLine 69: Converted 'talent.painful_punishment' to 'talent.painful_punishment.enabled' (1x).\nLine 69: Converted 'talent.painful_punishment' to 'talent.painful_punishment.enabled' (1x).\nLine 70: Converted 'talent.purge_the_wicked' to 'talent.purge_the_wicked.enabled' (1x).\nLine 70: Converted 'talent.painful_punishment' to 'talent.painful_punishment.enabled' (1x).\nLine 70: Converted 'talent.painful_punishment' to 'talent.painful_punishment.enabled' (1x).\nLine 71: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 72: Converted 'talent.dark_indulgence' to 'talent.dark_indulgence.enabled' (1x).\nLine 73: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 74: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 75: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 75: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 76: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 76: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 77: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 77: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 78: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 79: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\nLine 80: Converted 'talent.shadow_covenant' to 'talent.shadow_covenant.enabled' (1x).\n\nThe import for 'long_scov' required some automated changes.\nLine 5: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 10: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\nLine 11: Converted 'talent.shattered_perceptions' to 'talent.shattered_perceptions.enabled' (1x).\nLine 12: Converted 'talent.expiation' to 'talent.expiation.enabled' (1x).\n\nImported 5 action lists.\n",
|
|
["profile"] = "actions.precombat+=/power_word_fortitude\n\nactions+=/call_action_list,name=cooldowns\nactions+=/variable,name=te_none,op=set,value=!buff.twilight_equilibrium_holy_amp.up&!buff.twilight_equilibrium_shadow_amp.up\n# Twilight Equilibrium is buffing shadow damage\nactions+=/variable,name=te_shadow,op=set,value=buff.twilight_equilibrium_shadow_amp.up||variable.te_none\n# Twilight Equilibrium is buffing holy damage\nactions+=/variable,name=te_holy,op=set,value=buff.twilight_equilibrium_holy_amp.up||variable.te_none\n# Long Shadow covenant is enabled\nactions+=/variable,name=long_scov,op=set,value=talent.shadow_covenant\n# Ready to start shadow covenant phase\nactions+=/variable,name=can_enter_scov,op=set,value=cooldown.shadowfiend.up||buff.shadow_covenant.up\nactions+=/variable,name=shadow_spells_duration_max,op=set,value=0\n## actions+=/variable,name=shadow_spells_duration_max,op=add,value=action.schism.execute_time,if=talent.schism\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=2\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.mind_blast.execute_time\n# penance\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.mind_blast.execute_time,if=talent.dark_indulgence\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.shadow_word_death.execute_time,if=talent.shadow_word_death\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.shadow_word_death.execute_time,if=talent.shadow_word_death&talent.death_and_madness&target.health.pct<20\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.mindgames.execute_time,if=talent.mindgames\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.divine_star.execute_time,if=talent.divine_star\nactions+=/variable,name=shadow_spells_duration_max,op=add,value=action.halo.execute_time,if=talent.halo\n# (scov duration - shadow spells duration) / GCD time = estimate of holy spells we should need to use during the next scov window Long scov example: (15 - 12) / 1.5 = 2 GCDs to spend on holy spells Short scov example: (7 - 12) / 1.5 = -3.3 GCDs to spend on holy spells (none)\nactions+=/variable,name=max_te_holy,op=floor,value=(buff.shadow_covenant.duration-variable.shadow_spells_duration_max)%gcd.max\n# Counting variable, the number of non-fractional remaining holy casts available\nactions+=/variable,name=remaining_te_holy,op=set,value=0\nactions+=/variable,name=remaining_te_holy,op=add,value=variable.max_te_holy\n# TODO: duration_expected is buggy on penance/dark reprimand, using a static reduction as a stand-in for now\nactions+=/variable,name=expected_penance_reduction,op=setif,condition=talent.train_of_thought,value=2,value_else=0\n# Calculate how much cast time worth of shadow spells we have currently available. We use shadow_spells_duration to determine if we have time to weave in any holy spells to proc twilight equilibrium.\nactions+=/variable,name=shadow_spells_duration,op=set,value=0\n# Schism\n## actions+=/variable,name=shadow_spells_duration,op=add,value=action.schism.execute_time,if=cooldown.schism.up||(cooldown.schism.remains<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",
|
|
["spec"] = 256,
|
|
},
|
|
},
|
|
},
|
|
["Quilbee - Thunderhorn"] = {
|
|
["runOnce"] = {
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_70"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_65"] = true,
|
|
["resetAllPotions_20201209"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["forceEnableEnhancedRecheckBoomkin_20210712"] = true,
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_66"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
["removeOldThrottles_20241115"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["resetGlobalCooldownSync_20210403"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
},
|
|
["specs"] = {
|
|
[70] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["sov_damage"] = 20,
|
|
["check_wake_range"] = false,
|
|
},
|
|
["potionsReset"] = 20180919.1,
|
|
["debuffPadding"] = 0,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[66] = {
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["bosp_filter"] = false,
|
|
["wog_health"] = 40,
|
|
["loh_health"] = 30,
|
|
["goak_damage"] = 40,
|
|
["sentinel_def"] = false,
|
|
["ds_damage"] = 60,
|
|
["ad_damage"] = 40,
|
|
},
|
|
["potionsReset"] = 20180919.1,
|
|
["debuffPadding"] = 0,
|
|
["buffPadding"] = 0,
|
|
},
|
|
[102] = {
|
|
["enhancedRecheck"] = true,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Protection Paladin"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250425,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-04-25: Fix BoSP filter\n\n2025-04-05: SimC Sync\n\n2025-02-02: Ardent Defender updated\n\n2024-10-11, 10-21, 11-22, 11-25: Update from SimC\n\n2024-09-08: Restore mitigation action list\n\n2024-09-02, 09-04, 09-08: SimC update\n\n2024-08-11, 22: Update from SimC\n\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "rebuke",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "mitigation",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "standard",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "devotion_aura",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "consecration",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "1",
|
|
["var_name"] = "trinket_sync_slot",
|
|
["criteria"] = "trinket.t1.has_cooldown & trinket.t1.has_stat.any_dps & ( ! trinket.t2.has_stat.any_dps || trinket.t1.cooldown.duration >= trinket.t2.cooldown.duration ) || ! trinket.t2.has_cooldown",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "2",
|
|
["var_name"] = "trinket_sync_slot",
|
|
["criteria"] = "trinket.t2.has_cooldown & trinket.t2.has_stat.any_dps & ( ! trinket.t1.has_stat.any_dps || trinket.t2.cooldown.duration > trinket.t1.cooldown.duration ) || ! trinket.t1.has_cooldown",
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.lights_judgment >= 2 || ! raid_event.adds.exists || raid_event.adds.in > 75 || raid_event.adds.up",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["action"] = "avenging_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avenging_wrath.up",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.avenging_wrath.remains < 15 || ( time > 10 ) )",
|
|
["action"] = "moment_of_glory",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.shield_of_the_righteous >= 3",
|
|
["action"] = "divine_toll",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avenging_wrath.up || cooldown.avenging_wrath.remains <= 30",
|
|
["action"] = "bastion_of_light",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avenging_wrath.remains > 8",
|
|
["action"] = "fireblood",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "tome_of_lights_devotion",
|
|
["criteria"] = "buff.inner_resilience.up",
|
|
["name"] = "tome_of_lights_devotion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["criteria"] = "( variable.trinket_sync_slot = 1 & ( buff.avenging_wrath.up || fight_remains <= 40 ) || ( variable.trinket_sync_slot = 2 & ( ! trinket.t2.cooldown.ready || ! buff.avenging_wrath.up ) ) || ! variable.trinket_sync_slot )",
|
|
["slots"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["criteria"] = "( variable.trinket_sync_slot = 2 & ( buff.avenging_wrath.up || fight_remains <= 40 ) || ( variable.trinket_sync_slot = 1 & ( ! trinket.t1.cooldown.ready || ! buff.avenging_wrath.up ) ) || ! variable.trinket_sync_slot )",
|
|
["slots"] = "trinket2",
|
|
},
|
|
},
|
|
["mitigation"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & buff.shield_of_the_righteous.down & ( holy_power.deficit = 0 || buff.divine_purpose.up )",
|
|
["action"] = "shield_of_the_righteous",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "blessing_of_spellwarding",
|
|
["description"] = "[Hekili] Recommend BoSP if the filter is enabled in spec options. Custom priorities can use BoSP with or without this feature.",
|
|
["criteria"] = "settings.bosp_filter",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "health.pct < wog_health & ( holy_power.deficit = 0 || buff.divine_purpose.up || buff.shining_light_free.up )",
|
|
["action"] = "word_of_glory",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.final_stand.enabled & tanking & incoming_damage_5s > ds_damage & ! ( buff.ardent_defender.up || buff.guardian_of_ancient_kings.up || buff.divine_shield.up || buff.potion.up )",
|
|
["action"] = "divine_shield",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & incoming_damage_5s > goak_damage & ! ( buff.ardent_defender.up || buff.guardian_of_ancient_kings.up || buff.divine_shield.up || buff.potion.up )",
|
|
["action"] = "guardian_of_ancient_kings",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "defensive_sentinel & tanking & incoming_damage_5s > goak_damage & ! ( buff.ardent_defender.up || buff.guardian_of_ancient_kings.up || buff.divine_shield.up || buff.potion.up )",
|
|
["action"] = "sentinel",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "tanking & incoming_damage_5s > ad_damage & ! ( buff.ardent_defender.up || buff.guardian_of_ancient_kings.up || buff.divine_shield.up || buff.potion.up )",
|
|
["action"] = "ardent_defender",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "health.pct < loh_health",
|
|
["action"] = "lay_on_hands",
|
|
},
|
|
},
|
|
["standard"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "charges >= 2 || full_recharge_time <= gcd.max",
|
|
["action"] = "judgment",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hammer_of_light_free.remains < 2 || buff.shake_the_heavens.remains < 1 || ! buff.shake_the_heavens.up || cooldown.eye_of_tyr.remains < 1.5 || fight_remains < 2",
|
|
["action"] = "hammer_of_light",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( hpg_to_2dawn = 5 || ! talent.of_dusk_and_dawn.enabled ) & talent.lights_guidance.enabled",
|
|
["action"] = "eye_of_tyr",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( hpg_to_2dawn = 1 || buff.blessing_of_dawn.stack > 0 ) & talent.lights_guidance.enabled",
|
|
["action"] = "eye_of_tyr",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.righteous_protector.enabled || cooldown.righteous_protector_icd.remains = 0 ) & ! buff.hammer_of_light_ready.up",
|
|
["action"] = "shield_of_the_righteous",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shield_of_the_righteous",
|
|
["description"] = "during luck of the draw(TWW2 4P)spam sotr as much as possible without wasting icd where possible",
|
|
["criteria"] = "! buff.hammer_of_light_ready.up & ( buff.luck_of_the_draw.up & ( ( holy_power + judgment_holy_power >= 5 ) || ( ! talent.righteous_protector.enabled || cooldown.righteous_protector_icd.remains = 0 ) ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "shield_of_the_righteous",
|
|
["description"] = "outside of luck of the draw, pool holy power as much as possible to be able to enter luck of the draw windows with more holy power",
|
|
["criteria"] = "! buff.hammer_of_light_ready.up & set_bonus.thewarwithin_season_2_4pc & ( ( holy_power + judgment_holy_power > 5 ) || ( holy_power + judgment_holy_power >= 5 & cooldown.righteous_protector_icd.remains = 0 ) )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! set_bonus.thewarwithin_season_2_4pc & ( ! talent.righteous_protector.enabled || cooldown.righteous_protector_icd.remains = 0 ) & ! buff.hammer_of_light_ready.up",
|
|
["action"] = "shield_of_the_righteous",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.shield_of_the_righteous > 3 & buff.bulwark_of_righteous_fury.stack >= 3 & holy_power < 3",
|
|
["action"] = "judgment",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.bulwark_of_righteous_fury.up & talent.bulwark_of_righteous_fury.enabled & spell_targets.shield_of_the_righteous >= 3",
|
|
["action"] = "avengers_shield",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 3 & ! buff.avenging_wrath.up",
|
|
["action"] = "hammer_of_the_righteous",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 3 & ! buff.avenging_wrath.up",
|
|
["action"] = "blessed_hammer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 2 & ! buff.avenging_wrath.up",
|
|
["action"] = "crusader_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.divine_guidance.stack = 5",
|
|
["action"] = "consecration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_armament = sacred_weapon & ( ! buff.sacred_weapon.up || ( buff.sacred_weapon.remains < 6 & ! buff.avenging_wrath.up & cooldown.avenging_wrath.remains <= 30 ) )",
|
|
["action"] = "holy_armaments",
|
|
},
|
|
{
|
|
["action"] = "hammer_of_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "divine_toll",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.refining_fire.enabled",
|
|
["action"] = "avengers_shield",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avenging_wrath.up & talent.hammer_and_anvil.enabled",
|
|
["action"] = "judgment",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_armament = holy_bulwark & charges = 2",
|
|
["action"] = "holy_armaments",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "judgment",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.shake_the_heavens.up & talent.shake_the_heavens.enabled",
|
|
["action"] = "avengers_shield",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 3 ) || buff.shake_the_heavens.up",
|
|
["action"] = "hammer_of_the_righteous",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 3 ) || buff.shake_the_heavens.up",
|
|
["action"] = "blessed_hammer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.blessed_assurance.up & spell_targets.shield_of_the_righteous < 2 ) || buff.shake_the_heavens.up",
|
|
["action"] = "crusader_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.lights_guidance.enabled",
|
|
["action"] = "avengers_shield",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! consecration.up",
|
|
["action"] = "consecration",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( talent.inmost_light.enabled & raid_event.adds.in >= 45 || spell_targets.shield_of_the_righteous >= 3 ) & ! talent.lights_deliverance.enabled",
|
|
["action"] = "eye_of_tyr",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "next_armament = holy_bulwark",
|
|
["action"] = "holy_armaments",
|
|
},
|
|
{
|
|
["action"] = "blessed_hammer",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "hammer_of_the_righteous",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "crusader_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.shining_light_free.up & ( talent.blessed_assurance.enabled || ( talent.lights_guidance.enabled & cooldown.hammerfall_icd.remains = 0 ) )",
|
|
["action"] = "word_of_glory",
|
|
},
|
|
{
|
|
["action"] = "avengers_shield",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.lights_deliverance.enabled",
|
|
["action"] = "eye_of_tyr",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.shining_light_free.up",
|
|
["action"] = "word_of_glory",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "holy_power < 5",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
{
|
|
["action"] = "consecration",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250425,
|
|
["warnings"] = "The import for 'precombat' required some automated changes.\nLine 5: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 5: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 5: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 5: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 6: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 6: Converted 'trinket.2.has_stat.any_dps' to 'trinket.t2.has_stat.any_dps' (1x).\nLine 6: Converted 'trinket.1.has_stat.any_dps' to 'trinket.t1.has_stat.any_dps' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 2: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 2: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 3: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 3: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\n\nImported 6 action lists.\n",
|
|
["spec"] = 66,
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/paladin_protection.simc\n## Up to date with SimC: March 13 2025 - a8d374d\n\n## actions.precombat+=/rite_of_sanctification\n## actions.precombat+=/rite_of_adjuration\nactions.precombat+=/devotion_aura\nactions.precombat+=/lights_judgment\nactions.precombat+=/arcane_torrent\nactions.precombat+=/consecration\nactions.precombat+=/variable,name=trinket_sync_slot,value=1,if=trinket.1.has_cooldown&trinket.1.has_stat.any_dps&(!trinket.2.has_stat.any_dps||trinket.1.cooldown.duration>=trinket.2.cooldown.duration)||!trinket.2.has_cooldown\nactions.precombat+=/variable,name=trinket_sync_slot,value=2,if=trinket.2.has_cooldown&trinket.2.has_stat.any_dps&(!trinket.1.has_stat.any_dps||trinket.2.cooldown.duration>trinket.1.cooldown.duration)||!trinket.1.has_cooldown\n\nactions+=/rebuke\nactions+=/call_action_list,name=mitigation\nactions+=/call_action_list,name=cooldowns\nactions+=/call_action_list,name=trinkets\nactions+=/call_action_list,name=standard\n\nactions.cooldowns+=/lights_judgment,if=spell_targets.lights_judgment>=2||!raid_event.adds.exists||raid_event.adds.in>75||raid_event.adds.up\nactions.cooldowns+=/avenging_wrath\nactions.cooldowns+=/potion,if=buff.avenging_wrath.up\nactions.cooldowns+=/moment_of_glory,if=(buff.avenging_wrath.remains<15||(time>10))\nactions.cooldowns+=/divine_toll,if=spell_targets.shield_of_the_righteous>=3\nactions.cooldowns+=/bastion_of_light,if=buff.avenging_wrath.up||cooldown.avenging_wrath.remains<=30\n## actions.cooldowns+=/invoke_external_buff,name=power_infusion,if=buff.avenging_wrath.up\nactions.cooldowns+=/fireblood,if=buff.avenging_wrath.remains>8\n\nactions.mitigation+=/shield_of_the_righteous,if=tanking&buff.shield_of_the_righteous.down&(holy_power.deficit=0||buff.divine_purpose.up)\n# [Hekili] Recommend BoSP if the filter is enabled in spec options. Custom priorities can use BoSP with or without this feature.\nactions.mitigation+=/blessing_of_spellwarding,if=settings.bosp_filter\nactions.mitigation+=/word_of_glory,if=health.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>ad_damage&!(buff.ardent_defender.up||buff.guardian_of_ancient_kings.up||buff.divine_shield.up||buff.potion.up)\nactions.mitigation+=/lay_on_hands,if=health.pct<loh_health\n\nactions.standard+=/judgment,cycle_targets=1,if=charges>=2||full_recharge_time<=gcd.max\nactions.standard+=/hammer_of_light,if=buff.hammer_of_light_free.remains<2||buff.shake_the_heavens.remains<1||!buff.shake_the_heavens.up||cooldown.eye_of_tyr.remains<1.5||fight_remains<2\nactions.standard+=/eye_of_tyr,if=(hpg_to_2dawn=5||!talent.of_dusk_and_dawn.enabled)&talent.lights_guidance.enabled\nactions.standard+=/eye_of_tyr,if=(hpg_to_2dawn=1||buff.blessing_of_dawn.stack>0)&talent.lights_guidance.enabled\nactions.standard+=/shield_of_the_righteous,if=(!talent.righteous_protector.enabled||cooldown.righteous_protector_icd.remains=0)&!buff.hammer_of_light_ready.up\n# during luck of the draw(TWW2 4P)spam sotr as much as possible without wasting icd where possible\nactions.standard+=/shield_of_the_righteous,if=!buff.hammer_of_light_ready.up&(buff.luck_of_the_draw.up&((holy_power+judgment_holy_power>=5)||(!talent.righteous_protector.enabled||cooldown.righteous_protector_icd.remains=0)))\n# outside of luck of the draw, pool holy power as much as possible to be able to enter luck of the draw windows with more holy power\nactions.standard+=/shield_of_the_righteous,if=!buff.hammer_of_light_ready.up&set_bonus.thewarwithin_season_2_4pc&((holy_power+judgment_holy_power>5)||(holy_power+judgment_holy_power>=5&cooldown.righteous_protector_icd.remains=0))\nactions.standard+=/shield_of_the_righteous,if=!set_bonus.thewarwithin_season_2_4pc&(!talent.righteous_protector.enabled||cooldown.righteous_protector_icd.remains=0)&!buff.hammer_of_light_ready.up\nactions.standard+=/judgment,cycle_targets=1,if=spell_targets.shield_of_the_righteous>3&buff.bulwark_of_righteous_fury.stack>=3&holy_power<3\nactions.standard+=/avengers_shield,if=!buff.bulwark_of_righteous_fury.up&talent.bulwark_of_righteous_fury.enabled&spell_targets.shield_of_the_righteous>=3\nactions.standard+=/hammer_of_the_righteous,if=buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<3&!buff.avenging_wrath.up\nactions.standard+=/blessed_hammer,if=buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<3&!buff.avenging_wrath.up\nactions.standard+=/crusader_strike,if=buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<2&!buff.avenging_wrath.up\n## redundant line: actions.standard+=/judgment,cycle_targets=1,if=charges>=2||full_recharge_time<=gcd.max\nactions.standard+=/consecration,if=buff.divine_guidance.stack=5\nactions.standard+=/holy_armaments,if=next_armament=sacred_weapon&(!buff.sacred_weapon.up||(buff.sacred_weapon.remains<6&!buff.avenging_wrath.up&cooldown.avenging_wrath.remains<=30))\nactions.standard+=/hammer_of_wrath\nactions.standard+=/divine_toll\nactions.standard+=/avengers_shield,if=talent.refining_fire.enabled\nactions.standard+=/judgment,cycle_targets=1,if=buff.avenging_wrath.up&talent.hammer_and_anvil.enabled\nactions.standard+=/holy_armaments,if=next_armament=holy_bulwark&charges=2\nactions.standard+=/judgment,cycle_targets=1\nactions.standard+=/avengers_shield,if=!buff.shake_the_heavens.up&talent.shake_the_heavens.enabled\nactions.standard+=/hammer_of_the_righteous,if=(buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<3)||buff.shake_the_heavens.up\nactions.standard+=/blessed_hammer,if=(buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<3)||buff.shake_the_heavens.up\nactions.standard+=/crusader_strike,if=(buff.blessed_assurance.up&spell_targets.shield_of_the_righteous<2)||buff.shake_the_heavens.up\nactions.standard+=/avengers_shield,if=!talent.lights_guidance.enabled\nactions.standard+=/consecration,if=!consecration.up\nactions.standard+=/eye_of_tyr,if=(talent.inmost_light.enabled&raid_event.adds.in>=45||spell_targets.shield_of_the_righteous>=3)&!talent.lights_deliverance.enabled\nactions.standard+=/holy_armaments,if=next_armament=holy_bulwark\nactions.standard+=/blessed_hammer\nactions.standard+=/hammer_of_the_righteous\nactions.standard+=/crusader_strike\nactions.standard+=/word_of_glory,if=buff.shining_light_free.up&(talent.blessed_assurance.enabled||(talent.lights_guidance.enabled&cooldown.hammerfall_icd.remains=0))\nactions.standard+=/avengers_shield\nactions.standard+=/eye_of_tyr,if=!talent.lights_deliverance.enabled\nactions.standard+=/word_of_glory,if=buff.shining_light_free.up\nactions.standard+=/arcane_torrent,if=holy_power<5\nactions.standard+=/consecration\n\nactions.trinkets+=/use_item,name=tome_of_lights_devotion,if=buff.inner_resilience.up\nactions.trinkets+=/use_items,slots=trinket1,if=(variable.trinket_sync_slot=1&(buff.avenging_wrath.up||fight_remains<=40)||(variable.trinket_sync_slot=2&(!trinket.2.cooldown.ready||!buff.avenging_wrath.up))||!variable.trinket_sync_slot)\nactions.trinkets+=/use_items,slots=trinket2,if=(variable.trinket_sync_slot=2&(buff.avenging_wrath.up||fight_remains<=40)||(variable.trinket_sync_slot=1&(!trinket.1.cooldown.ready||!buff.avenging_wrath.up))||!variable.trinket_sync_slot)",
|
|
},
|
|
["Holy Paladin"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20240908,
|
|
["spec"] = 65,
|
|
["desc"] = "Healer priorities are DPS-focused only\n\n2024-07-30, 09-08: The War Within",
|
|
["lists"] = {
|
|
["spenders"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "solo & ( health.pct < 70 || ! equipped.shield ) & buff.shining_righteousness_ready.up || buff.empyrean_legacy.up",
|
|
["action"] = "word_of_glory",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "group & buff.shining_righteousness_ready.up",
|
|
["action"] = "light_of_dawn",
|
|
},
|
|
{
|
|
["action"] = "shield_of_the_righteous",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "rebuke",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avenging_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "avenging_crusader",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "holy_armaments",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blessing_of_summer",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blessing_of_autumn",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blessing_of_winter",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blessing_of_spring",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "potion",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bloodlust.up || buff.avenging_wrath.up || buff.avenging_crusader.up",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["action"] = "use_items",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! talent.avenging_crusader.enabled || cooldown.avenging_crusader.remains > gcd.max || holy_power.deficit = 0",
|
|
["list_name"] = "spenders",
|
|
},
|
|
{
|
|
["action"] = "divine_toll",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "holy_prism",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "group",
|
|
["action"] = "beacon_of_virtue",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.avenging_crusader.enabled & full_recharge_time < gcd.max",
|
|
["action"] = "crusader_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.avenging_crusader.enabled & full_recharge_time < gcd.max",
|
|
["action"] = "judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! consecration.up & action.crusader_strike.in_range",
|
|
["action"] = "consecration",
|
|
},
|
|
{
|
|
["action"] = "hammer_of_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "holy_shock",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.holy_shock.remains > gcd.max",
|
|
["action"] = "crusader_strike",
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.paladin_aura.down",
|
|
["action"] = "devotion_aura",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_dot.beacon_of_light = 0",
|
|
["action"] = "beacon_of_light",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "group & active_dot.beacon_of_faith = 0",
|
|
["action"] = "beacon_of_faith",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20240908,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 13: Converted 'talent.avenging_crusader' to 'talent.avenging_crusader.enabled' (1x).\nLine 17: Converted 'talent.avenging_crusader' to 'talent.avenging_crusader.enabled' (1x).\nLine 18: Converted 'talent.avenging_crusader' to 'talent.avenging_crusader.enabled' (1x).\n\nImported 3 action lists.\n",
|
|
["author"] = "Kaleokalani",
|
|
["profile"] = "actions.precombat+=/devotion_aura,if=buff.paladin_aura.down\nactions.precombat+=/beacon_of_light,if=active_dot.beacon_of_light=0\nactions.precombat+=/beacon_of_faith,if=group&active_dot.beacon_of_faith=0\n\nactions+=/rebuke\nactions+=/avenging_wrath\nactions+=/avenging_crusader\nactions+=/holy_armaments\nactions+=/blessing_of_summer\nactions+=/blessing_of_autumn\nactions+=/blessing_of_winter\nactions+=/blessing_of_spring\nactions+=/lights_judgment\nactions+=/potion\nactions+=/fireblood,if=buff.bloodlust.up||buff.avenging_wrath.up||buff.avenging_crusader.up\nactions+=/use_items\nactions+=/call_action_list,name=spenders,strict=1,if=!talent.avenging_crusader||cooldown.avenging_crusader.remains>gcd.max||holy_power.deficit=0\nactions+=/divine_toll\nactions+=/holy_prism\nactions+=/beacon_of_virtue,if=group\nactions+=/crusader_strike,if=talent.avenging_crusader&full_recharge_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",
|
|
},
|
|
["Retribution"] = {
|
|
["builtIn"] = true,
|
|
["date"] = 20250310,
|
|
["spec"] = 70,
|
|
["desc"] = "2025-03-10: SimC Update\n\n2025-02-28: TWW Season 2 update\n\n2024-10-29: Efficiency of Finishers (fixed)\n\n2024-09-28: SimC update; HoL fix?\n\n2024-09-10, 09-22: SimC update\n\n2024-08-28: Fix HoL and update from SimC\n\n2024-08-24: Fix Hammer of Light\n\n2024-07-23: The War Within",
|
|
["profile"] = "actions.precombat+=/shield_of_vengeance\nactions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_buff.strength||trinket.1.has_buff.mastery||trinket.1.has_buff.versatility||trinket.1.has_buff.haste||trinket.1.has_buff.crit\nactions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_buff.strength||trinket.2.has_buff.mastery||trinket.2.has_buff.versatility||trinket.2.has_buff.haste||trinket.2.has_buff.crit\nactions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.crusade.duration=0||cooldown.crusade.duration%%trinket.1.cooldown.duration=0||trinket.1.cooldown.duration%%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%%trinket.1.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.crusade.duration=0||cooldown.crusade.duration%%trinket.2.cooldown.duration=0||trinket.2.cooldown.duration%%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%%trinket.2.cooldown.duration=0)\nactions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync))\n\nactions+=/rebuke\nactions+=/call_action_list,name=cooldowns\nactions+=/call_action_list,name=generators\n\nactions.cooldowns+=/potion,if=buff.avenging_wrath.up||buff.crusade.up||debuff.execution_sentence.up||boss&fight_remains<30\n## actions.cooldowns+=/invoke_external_buff,name=power_infusion,if=buff.avenging_wrath.up||buff.crusade.up||debuff.execution_sentence.up\nactions.cooldowns+=/lights_judgment,if=spell_targets.lights_judgment>=2||!raid_event.adds.exists||raid_event.adds.in>75||raid_event.adds.up\nactions.cooldowns+=/fireblood,if=buff.avenging_wrath.up||buff.crusade.up&buff.crusade.stack=10||debuff.execution_sentence.up\nactions.cooldowns+=/use_item,slot=trinket1,if=((buff.avenging_wrath.up&cooldown.avenging_wrath.remains>40||buff.crusade.up&buff.crusade.stack=10)&!talent.radiant_glory||talent.radiant_glory&(!talent.execution_sentence&cooldown.wake_of_ashes.remains=0||debuff.execution_sentence.up))&(!trinket.2.has_cooldown||trinket.2.cooldown.remains||variable.trinket_priority=1)||trinket.1.proc.any_dps.duration>=fight_remains&boss\nactions.cooldowns+=/use_item,slot=trinket2,if=((buff.avenging_wrath.up&cooldown.avenging_wrath.remains>40||buff.crusade.up&buff.crusade.stack=10)&!talent.radiant_glory||talent.radiant_glory&(!talent.execution_sentence&cooldown.wake_of_ashes.remains=0||debuff.execution_sentence.up))&(!trinket.1.has_cooldown||trinket.1.cooldown.remains||variable.trinket_priority=2)||trinket.2.proc.any_dps.duration>=fight_remains&boss\nactions.cooldowns+=/use_item,name=bestinslots,if=((buff.avenging_wrath.up&cooldown.avenging_wrath.remains>40||buff.crusade.up&buff.crusade.stack=10)&!talent.radiant_glory||talent.radiant_glory&(!talent.execution_sentence&cooldown.wake_of_ashes.remains=0||debuff.execution_sentence.up))\nactions.cooldowns+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.2.cooldown.remains||!variable.trinket_2_buffs||!buff.crusade.up&cooldown.crusade.remains>20||!buff.avenging_wrath.up&cooldown.avenging_wrath.remains>20)\nactions.cooldowns+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.1.cooldown.remains||!variable.trinket_1_buffs||!buff.crusade.up&cooldown.crusade.remains>20||!buff.avenging_wrath.up&cooldown.avenging_wrath.remains>20)\nactions.cooldowns+=/shield_of_vengeance,if=fight_remains>15&(!talent.execution_sentence||!debuff.execution_sentence.up)&!buff.divine_hammer.up\nactions.cooldowns+=/execution_sentence,if=(!buff.crusade.up&cooldown.crusade.remains>15||buff.crusade.stack=10||cooldown.avenging_wrath.remains<0.75||cooldown.avenging_wrath.remains>15||talent.radiant_glory)&(holy_power>=4&time<5||holy_power>=3&time>5||(holy_power>=2||time<5)&(talent.divine_auxiliary||talent.radiant_glory))&(cooldown.divine_hammer.remains>5||buff.divine_hammer.up||!talent.divine_hammer)&(target.time_to_die>8&!talent.executioners_will||target.time_to_die>12)&cooldown.wake_of_ashes.remains<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,if=buff.hammer_of_light_ready.up||!talent.divine_hammer||buff.divine_hammer.up||cooldown.divine_hammer.remains>10\nactions.finishers+=/divine_hammer,if=!buff.divine_hammer.up\nactions.finishers+=/divine_storm,if=variable.ds_castable&!buff.hammer_of_light_ready.up&(cooldown.divine_hammer.remains||buff.divine_hammer.up||!talent.divine_hammer)&(!talent.crusade||cooldown.crusade.remains>gcd*3||buff.crusade.up&buff.crusade.stack<10||talent.radiant_glory)\nactions.finishers+=/justicars_vengeance,if=(!talent.crusade||cooldown.crusade.remains>gcd*3||buff.crusade.up&buff.crusade.stack<10||talent.radiant_glory)&!buff.hammer_of_light_ready.up&(cooldown.divine_hammer.remains||buff.divine_hammer.up||!talent.divine_hammer)\nactions.finishers+=/templars_verdict,if=(!talent.crusade||cooldown.crusade.remains>gcd*3||buff.crusade.up&buff.crusade.stack<10||talent.radiant_glory)&!buff.hammer_of_light_ready.up&(cooldown.divine_hammer.remains||buff.divine_hammer.up||!talent.divine_hammer)\nactions.finishers+=/variable,name=finished,op=set,value=true\n\nactions.generators+=/variable,name=finished,op=set,value=false\nactions.generators+=/call_action_list,name=finishers,strict=1,if=(holy_power=5||holy_power=4&buff.divine_resonance.up||buff.all_in.up)&cooldown.wake_of_ashes.remains\nactions.generators+=/templar_slash,if=buff.templar_strikes.remains<gcd*2\nactions.generators+=/blade_of_justice,if=!dot.expurgation.ticking&talent.holy_flames&cooldown.divine_toll.remains\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=!variable.finished\nactions.generators+=/templar_slash,if=buff.templar_strikes.remains<gcd&spell_targets.divine_storm>=2\nactions.generators+=/blade_of_justice,if=spell_targets.divine_storm>=2&talent.blade_of_vengeance\nactions.generators+=/hammer_of_wrath,if=(spell_targets.divine_storm<2||!talent.blessed_champion)&buff.blessing_of_anshe.up\nactions.generators+=/templar_strike\nactions.generators+=/judgment\nactions.generators+=/blade_of_justice\nactions.generators+=/hammer_of_wrath,if=(spell_targets.divine_storm<2||!talent.blessed_champion)\nactions.generators+=/templar_slash\nactions.generators+=/crusader_strike\nactions.generators+=/hammer_of_wrath\nactions.generators+=/arcane_torrent",
|
|
["version"] = 20250310,
|
|
["warnings"] = "The import for 'precombat' required some automated changes.\nLine 2: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 2: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_buff.mastery' (1x).\nLine 2: Converted 'trinket.1.has_buff.mastery' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_buff.versatility' (1x).\nLine 2: Converted 'trinket.1.has_buff.versatility' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_buff.haste' (1x).\nLine 2: Converted 'trinket.1.has_buff.haste' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_buff.crit' (1x).\nLine 2: Converted 'trinket.1.has_buff.crit' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 3: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_buff.mastery' (1x).\nLine 3: Converted 'trinket.2.has_buff.mastery' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_buff.versatility' (1x).\nLine 3: Converted 'trinket.2.has_buff.versatility' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_buff.haste' (1x).\nLine 3: Converted 'trinket.2.has_buff.haste' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_buff.crit' (1x).\nLine 3: Converted 'trinket.2.has_buff.crit' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted operations in 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%%cooldown.crusade.duration=0||cooldown.crusade.duration%%trinket.t1.cooldown.duration=0||trinket.t1.cooldown.duration%%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%%trinket.t1.cooldown.duration=0)' to 'variable.trinket_1_buffs&(trinket.t1.cooldown.duration%cooldown.crusade.duration=0||cooldown.crusade.duration%trinket.t1.cooldown.duration=0||trinket.t1.cooldown.duration%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%trinket.t1.cooldown.duration=0)'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 5: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 5: Converted operations in 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%%cooldown.crusade.duration=0||cooldown.crusade.duration%%trinket.t2.cooldown.duration=0||trinket.t2.cooldown.duration%%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%%trinket.t2.cooldown.duration=0)' to 'variable.trinket_2_buffs&(trinket.t2.cooldown.duration%cooldown.crusade.duration=0||cooldown.crusade.duration%trinket.t2.cooldown.duration=0||trinket.t2.cooldown.duration%cooldown.avenging_wrath.duration=0||cooldown.avenging_wrath.duration%trinket.t2.cooldown.duration=0)'.\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 6: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 6: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 6: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 6: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_buff.strength' (1x).\nLine 6: Converted 'trinket.2.has_buff.strength' to 'trinket.t2.has_use_buff' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 6: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 6: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 6: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_buff.strength' (1x).\nLine 6: Converted 'trinket.1.has_buff.strength' to 'trinket.t1.has_use_buff' (1x).\nLine 6: Converted operations in '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration%trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration%trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))' to '!variable.trinket_1_buffs&variable.trinket_2_buffs||variable.trinket_2_buffs&((trinket.t2.cooldown.duration/trinket.t2.buff_duration)*(1.5+trinket.t2.has_use_buff)*(variable.trinket_2_sync))>((trinket.t1.cooldown.duration/trinket.t1.buff_duration)*(1.5+trinket.t1.has_use_buff)*(variable.trinket_1_sync))'.\nThe following auras were used in the action list but were not found in the addon database:\n - crit\n\nThe import for 'cooldowns' required some automated changes.\nLine 4: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 4: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 4: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 4: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.proc.any_dps.duration' (1x).\nLine 4: Converted 'trinket.1.proc.any_dps.duration' to 'trinket.t1.buff_duration' (1x).\nLine 5: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 5: Converted 'trinket.1.has_cooldown' to 'trinket.t1.has_cooldown' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 5: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 5: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.proc.any_dps.duration' (1x).\nLine 5: Converted 'trinket.2.proc.any_dps.duration' to 'trinket.t2.buff_duration' (1x).\nLine 6: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 6: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 6: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 7: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 8: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 8: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 9: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 10: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 10: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 10: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 10: Converted 'talent.divine_hammer' to 'talent.divine_hammer.enabled' (1x).\nLine 10: Converted 'talent.executioners_will' to 'talent.executioners_will.enabled' (1x).\nLine 11: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 13: Converted 'talent.divine_auxiliary' to 'talent.divine_auxiliary.enabled' (1x).\nLine 13: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 13: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 13: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\n\nThe import for 'finishers' required some automated changes.\nLine 1: Converted 'talent.final_verdict' to 'talent.final_verdict.enabled' (1x).\nLine 1: Converted 'talent.tempest_of_the_lightbringer' to 'talent.tempest_of_the_lightbringer.enabled' (1x).\nLine 2: Converted 'talent.divine_hammer' to 'talent.divine_hammer.enabled' (1x).\nLine 4: Converted 'talent.divine_hammer' to 'talent.divine_hammer.enabled' (1x).\nLine 4: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 4: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 5: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.divine_hammer' to 'talent.divine_hammer.enabled' (1x).\nLine 6: Converted 'talent.crusade' to 'talent.crusade.enabled' (1x).\nLine 6: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 6: Converted 'talent.divine_hammer' to 'talent.divine_hammer.enabled' (1x).\n\nThe import for 'generators' required some automated changes.\nLine 4: Converted 'talent.holy_flames' to 'talent.holy_flames.enabled' (1x).\nLine 5: Converted 'talent.lights_guidance' to 'talent.lights_guidance.enabled' (1x).\nLine 5: Converted 'talent.lights_guidance' to 'talent.lights_guidance.enabled' (1x).\nLine 5: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 5: Converted 'talent.execution_sentence' to 'talent.execution_sentence.enabled' (1x).\nLine 6: Converted 'talent.radiant_glory' to 'talent.radiant_glory.enabled' (1x).\nLine 9: Converted 'talent.blade_of_vengeance' to 'talent.blade_of_vengeance.enabled' (1x).\nLine 10: Converted 'talent.blessed_champion' to 'talent.blessed_champion.enabled' (1x).\nLine 14: Converted 'talent.blessed_champion' to 'talent.blessed_champion.enabled' (1x).\n\nImported 5 action lists.\n",
|
|
["author"] = "SimC",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "rebuke",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cooldowns",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "generators",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "shield_of_vengeance",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff || trinket.t1.has_use_buff",
|
|
["var_name"] = "trinket_1_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff || trinket.t2.has_use_buff",
|
|
["var_name"] = "trinket_2_buffs",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_1_sync",
|
|
["value"] = "1",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "variable.trinket_1_buffs & ( trinket.t1.cooldown.duration % cooldown.crusade.duration = 0 || cooldown.crusade.duration % trinket.t1.cooldown.duration = 0 || trinket.t1.cooldown.duration % cooldown.avenging_wrath.duration = 0 || cooldown.avenging_wrath.duration % trinket.t1.cooldown.duration = 0 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_2_sync",
|
|
["value"] = "1",
|
|
["value_else"] = "0.5",
|
|
["criteria"] = "variable.trinket_2_buffs & ( trinket.t2.cooldown.duration % cooldown.crusade.duration = 0 || cooldown.crusade.duration % trinket.t2.cooldown.duration = 0 || trinket.t2.cooldown.duration % cooldown.avenging_wrath.duration = 0 || cooldown.avenging_wrath.duration % trinket.t2.cooldown.duration = 0 )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "trinket_priority",
|
|
["value"] = "2",
|
|
["value_else"] = "1",
|
|
["criteria"] = "! variable.trinket_1_buffs & variable.trinket_2_buffs || variable.trinket_2_buffs & ( ( trinket.t2.cooldown.duration / trinket.t2.buff_duration ) * ( 1.5 + trinket.t2.has_use_buff ) * ( variable.trinket_2_sync ) ) > ( ( trinket.t1.cooldown.duration / trinket.t1.buff_duration ) * ( 1.5 + trinket.t1.has_use_buff ) * ( variable.trinket_1_sync ) )",
|
|
},
|
|
},
|
|
["generators"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "false",
|
|
["var_name"] = "finished",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "( holy_power = 5 || holy_power = 4 & buff.divine_resonance.up || buff.all_in.up ) & cooldown.wake_of_ashes.remains",
|
|
["list_name"] = "finishers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.templar_strikes.remains < gcd.max * 2",
|
|
["action"] = "templar_slash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.expurgation.ticking & talent.holy_flames.enabled & cooldown.divine_toll.remains",
|
|
["action"] = "blade_of_justice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.lights_guidance.enabled || holy_power >= 2 & talent.lights_guidance.enabled ) & ( cooldown.avenging_wrath.remains > 6 || cooldown.crusade.remains > 6 || talent.radiant_glory.enabled ) & ( ! talent.execution_sentence.enabled || cooldown.execution_sentence.remains > 4 || target.time_to_die < 8 ) & ( ! raid_event.adds.exists || raid_event.adds.in > 10 || raid_event.adds.up )",
|
|
["action"] = "wake_of_ashes",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "holy_power <= 2 & ( ! raid_event.adds.exists || raid_event.adds.in > 10 || raid_event.adds.up ) & ( cooldown.avenging_wrath.remains > 15 || cooldown.crusade.remains > 15 || talent.radiant_glory.enabled || fight_remains < 8 )",
|
|
["action"] = "divine_toll",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "! variable.finished",
|
|
["list_name"] = "finishers",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.templar_strikes.remains < gcd.max & spell_targets.divine_storm >= 2",
|
|
["action"] = "templar_slash",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.divine_storm >= 2 & talent.blade_of_vengeance.enabled",
|
|
["action"] = "blade_of_justice",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( spell_targets.divine_storm < 2 || ! talent.blessed_champion.enabled ) & buff.blessing_of_anshe.up",
|
|
["action"] = "hammer_of_wrath",
|
|
},
|
|
{
|
|
["action"] = "templar_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "judgment",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "blade_of_justice",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( spell_targets.divine_storm < 2 || ! talent.blessed_champion.enabled )",
|
|
["action"] = "hammer_of_wrath",
|
|
},
|
|
{
|
|
["action"] = "templar_slash",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "crusader_strike",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "hammer_of_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["finishers"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "( spell_targets.divine_storm >= 2 || buff.empyrean_power.up || ! talent.final_verdict.enabled & talent.tempest_of_the_lightbringer.enabled ) & ! buff.empyrean_legacy.up & ! ( buff.divine_arbiter.up & buff.divine_arbiter.stack > 24 )",
|
|
["var_name"] = "ds_castable",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.hammer_of_light_ready.up || ! talent.divine_hammer.enabled || buff.divine_hammer.up || cooldown.divine_hammer.remains > 10",
|
|
["action"] = "hammer_of_light",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.divine_hammer.up",
|
|
["action"] = "divine_hammer",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.ds_castable & ! buff.hammer_of_light_ready.up & ( cooldown.divine_hammer.remains || buff.divine_hammer.up || ! talent.divine_hammer.enabled ) & ( ! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 || buff.crusade.up & buff.crusade.stack < 10 || talent.radiant_glory.enabled )",
|
|
["action"] = "divine_storm",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 || buff.crusade.up & buff.crusade.stack < 10 || talent.radiant_glory.enabled ) & ! buff.hammer_of_light_ready.up & ( cooldown.divine_hammer.remains || buff.divine_hammer.up || ! talent.divine_hammer.enabled )",
|
|
["action"] = "justicars_vengeance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! talent.crusade.enabled || cooldown.crusade.remains > gcd.max * 3 || buff.crusade.up & buff.crusade.stack < 10 || talent.radiant_glory.enabled ) & ! buff.hammer_of_light_ready.up & ( cooldown.divine_hammer.remains || buff.divine_hammer.up || ! talent.divine_hammer.enabled )",
|
|
["action"] = "templars_verdict",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "true",
|
|
["var_name"] = "finished",
|
|
},
|
|
},
|
|
["cooldowns"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avenging_wrath.up || buff.crusade.up || debuff.execution_sentence.up || boss & fight_remains < 30",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "spell_targets.lights_judgment >= 2 || ! raid_event.adds.exists || raid_event.adds.in > 75 || raid_event.adds.up",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.avenging_wrath.up || buff.crusade.up & buff.crusade.stack = 10 || debuff.execution_sentence.up",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 40 || buff.crusade.up & buff.crusade.stack = 10 ) & ! talent.radiant_glory.enabled || talent.radiant_glory.enabled & ( ! talent.execution_sentence.enabled & cooldown.wake_of_ashes.remains = 0 || debuff.execution_sentence.up ) ) & ( ! trinket.t2.has_cooldown || trinket.t2.cooldown.remains || variable.trinket_priority = 1 ) || trinket.t1.buff_duration >= fight_remains & boss",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ( buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 40 || buff.crusade.up & buff.crusade.stack = 10 ) & ! talent.radiant_glory.enabled || talent.radiant_glory.enabled & ( ! talent.execution_sentence.enabled & cooldown.wake_of_ashes.remains = 0 || debuff.execution_sentence.up ) ) & ( ! trinket.t1.has_cooldown || trinket.t1.cooldown.remains || variable.trinket_priority = 2 ) || trinket.t2.buff_duration >= fight_remains & boss",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "bestinslots",
|
|
["criteria"] = "( ( buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 40 || buff.crusade.up & buff.crusade.stack = 10 ) & ! talent.radiant_glory.enabled || talent.radiant_glory.enabled & ( ! talent.execution_sentence.enabled & cooldown.wake_of_ashes.remains = 0 || debuff.execution_sentence.up ) )",
|
|
["name"] = "bestinslots",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_1_buffs & ( trinket.t2.cooldown.remains || ! variable.trinket_2_buffs || ! buff.crusade.up & cooldown.crusade.remains > 20 || ! buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 20 )",
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! variable.trinket_2_buffs & ( trinket.t1.cooldown.remains || ! variable.trinket_1_buffs || ! buff.crusade.up & cooldown.crusade.remains > 20 || ! buff.avenging_wrath.up & cooldown.avenging_wrath.remains > 20 )",
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "fight_remains > 15 & ( ! talent.execution_sentence.enabled || ! debuff.execution_sentence.up ) & ! buff.divine_hammer.up",
|
|
["action"] = "shield_of_vengeance",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( ! buff.crusade.up & cooldown.crusade.remains > 15 || buff.crusade.stack = 10 || cooldown.avenging_wrath.remains < 0.75 || cooldown.avenging_wrath.remains > 15 || talent.radiant_glory.enabled ) & ( holy_power >= 4 & time < 5 || holy_power >= 3 & time > 5 || ( holy_power >= 2 || time < 5 ) & ( talent.divine_auxiliary.enabled || talent.radiant_glory.enabled ) ) & ( cooldown.divine_hammer.remains > 5 || buff.divine_hammer.up || ! talent.divine_hammer.enabled ) & ( target.time_to_die > 8 & ! talent.executioners_will.enabled || target.time_to_die > 12 ) & cooldown.wake_of_ashes.remains < gcd.max",
|
|
["action"] = "execution_sentence",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( holy_power >= 4 & time < 5 || holy_power >= 3 & time > 5 || holy_power >= 2 & talent.divine_auxiliary.enabled & ( cooldown.execution_sentence.remains = 0 || cooldown.final_reckoning.remains = 0 ) ) & ( ! raid_event.adds.up || target.time_to_die > 10 )",
|
|
["action"] = "avenging_wrath",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "holy_power >= 5 & time < 5 || holy_power >= 3 & time > 5",
|
|
["action"] = "crusade",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( holy_power >= 4 & time < 8 || holy_power >= 3 & time >= 8 || holy_power >= 2 & ( talent.divine_auxiliary.enabled || talent.radiant_glory.enabled ) ) & ( cooldown.avenging_wrath.remains > 10 || cooldown.crusade.remains & ( ! buff.crusade.up || buff.crusade.stack >= 10 ) || talent.radiant_glory.enabled & ( buff.avenging_wrath.up || talent.crusade.enabled & cooldown.wake_of_ashes.remains < gcd.max ) ) & ( ! raid_event.adds.exists || raid_event.adds.up || raid_event.adds.in > 40 )",
|
|
["action"] = "final_reckoning",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["Quillika - Deathwing"] = {
|
|
["runOnce"] = {
|
|
["autoconvertGlowsForCustomGlow_20190326"] = true,
|
|
["removeOldThrottles_20241115"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_254"] = true,
|
|
["resetAllPotions_20201209"] = true,
|
|
["enableAllOfTheThings_20180820"] = true,
|
|
["resetGlobalCooldownSync_20210403"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_255"] = true,
|
|
["forceReloadAllDefaultPriorities_20220228"] = true,
|
|
["forceEnableAllClassesOnceDueToBug_20220225"] = true,
|
|
["autoconvertDelaySweepToExtend_20190729"] = true,
|
|
["forceSpellFlashBrightness_20221030"] = true,
|
|
["forceEnableEnhancedRecheckBoomkin_20210712"] = true,
|
|
["resetPotionsToDefaults_20190717"] = true,
|
|
["resetRogueMfDOption_20200226"] = true,
|
|
["updateMaxRefreshToNewSpecOptions_20220222"] = true,
|
|
["fixHavocPriorityVersion_20240805"] = true,
|
|
["forceReloadClassDefaultOptions_20220306_253"] = true,
|
|
["autoconvertDisplayToggle_20190621_1"] = true,
|
|
["resetAberrantPackageDates_20190728_1"] = true,
|
|
},
|
|
["specs"] = {
|
|
[255] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["ca_vop_overlap"] = false,
|
|
["allow_focus_overcap"] = false,
|
|
["mark_any"] = false,
|
|
["use_harpoon"] = true,
|
|
["pet_healing"] = 0,
|
|
["lunar_toggle"] = "none",
|
|
["manual_kill_shot"] = false,
|
|
},
|
|
},
|
|
[254] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["prevent_hardcasts"] = true,
|
|
["eagletalon_swap"] = false,
|
|
["trueshot_rapid_fire"] = true,
|
|
["mark_any"] = false,
|
|
["pet_healing"] = 0,
|
|
["lunar_toggle"] = "none",
|
|
["trueshot_vop_overlap"] = false,
|
|
},
|
|
},
|
|
[253] = {
|
|
["potionsReset"] = 20180919.1,
|
|
["maxRefresh"] = 10,
|
|
["settings"] = {
|
|
["check_pet_range"] = true,
|
|
["barbed_shot_grace_period"] = 0.5,
|
|
["barbed_shot_opener"] = true,
|
|
["avoid_bw_overlap"] = false,
|
|
["pet_healing"] = 0,
|
|
["aspect_vop_overlap"] = false,
|
|
["mark_any"] = false,
|
|
},
|
|
},
|
|
[102] = {
|
|
["enhancedRecheck"] = true,
|
|
},
|
|
},
|
|
["displays"] = {
|
|
["Interrupts"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = -267.07861328125,
|
|
["y"] = -107.68505859375,
|
|
},
|
|
["Cooldowns"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = -319.9996337890625,
|
|
["y"] = -107.4996337890625,
|
|
},
|
|
["Primary"] = {
|
|
["rel"] = "CENTER",
|
|
["elvuiCooldown"] = true,
|
|
["x"] = -40.0003662109375,
|
|
["y"] = -294.9996337890625,
|
|
["zoom"] = 25,
|
|
["queue"] = {
|
|
["spacing"] = 0,
|
|
},
|
|
},
|
|
["AOE"] = {
|
|
["rel"] = "CENTER",
|
|
["zoom"] = 25,
|
|
["x"] = -39.16705322265625,
|
|
["y"] = -293.3329772949219,
|
|
["queue"] = {
|
|
["spacing"] = 0,
|
|
},
|
|
},
|
|
["Defensives"] = {
|
|
["rel"] = "CENTER",
|
|
["x"] = -373.0845642089844,
|
|
["y"] = -106.971435546875,
|
|
},
|
|
},
|
|
["packs"] = {
|
|
["Marksmanship"] = {
|
|
["source"] = "# https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250330,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-03-30: SimC Update\n2025-03-21: SimC Update\n2025-03-10: SimC Update\n2025-03-02: Delete Salvo\n2025-02-28: TWW Season 2 update\n2025-02-17: Preliminary 11.1 APL\n2024-10-29: SimC update\n2024-10-23: 11.0.5\n2024-09-10, 09-15: SimC update\n2024-08-15, 22: SimC update\n2024-08-11: Steady Focus only if talented\n2024-08-09: Updates from SimC\n2024-08-01: Use Hunter's Mark setting\n2024-07-27: Minor sim update; use Hunter's Mark\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["trickshots"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.double_tap.enabled",
|
|
["action"] = "volley",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.trueshot_ready",
|
|
["action"] = "trueshot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "multishot",
|
|
["cycle_Targets"] = "1",
|
|
["criteria"] = "buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down ) || buff.trick_shots.down",
|
|
["description"] = "Swap targets to spend Precise Shots from No Scope after applying Spotter's Mark already to the primary target.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "For Double Tap, lower Volley in priority until Trueshot has already triggered Double Tap.",
|
|
["criteria"] = "talent.double_tap.enabled & buff.double_tap.down",
|
|
["action"] = "volley",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Always cast Black Arrow with Trick Shots up for Bleak Powder.",
|
|
["criteria"] = "buff.trick_shots.up",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Prioritize Aimed Shot a bit higher than Rapid Fire if it's close to charge capping and Bulletstorm is up.",
|
|
["criteria"] = "( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & buff.trick_shots.up & buff.bulletstorm.up & full_recharge_time < gcd.max",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With Sentinel, hold Rapid Fire for up to 1/3 of its cooldown to trigger Lunar Storm as soon as possible.",
|
|
["criteria"] = "buff.trick_shots.up & ( ! hero_tree.sentinel || buff.lunar_storm_cooldown.remains > action_cooldown / 3 || buff.lunar_storm_cooldown.down )",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With Precision Detonation, wait until a follow up Aimed Shot would not waste Precise Shots to cast. Require Lock and Load active if using the 4pc.",
|
|
["criteria"] = "talent.precision_detonation.enabled & ( buff.lock_and_load.up || ! set_bonus.thewarwithin_season_2_4pc ) & ( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up )",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Aimed Shot if we've spent Precise Shots to trigger Spotter's Mark and Moving Target. With No Scope this means Precise Shots could be up when Aimed Shot is cast.",
|
|
["criteria"] = "( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & buff.trick_shots.up",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "steady_shot",
|
|
},
|
|
{
|
|
["action"] = "multishot",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "counter_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "tranquilizing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.trueshot.ready & ( ( ! raid_event.adds.exists || raid_event.adds.count = 1 ) & ( ! talent.bullseye.enabled || fight_remains > cooldown.trueshot.duration_guess + buff.trueshot.duration / 2 || buff.bullseye.stack = buff.bullseye.max_stack ) & ( ! trinket.t1.has_use_buff || trinket.t1.cooldown.remains > 30 || trinket.t1.cooldown.ready ) & ( ! trinket.t2.has_use_buff || trinket.t2.cooldown.remains > 30 || trinket.t2.cooldown.ready ) || raid_event.adds.exists & ( ! raid_event.adds.up & ( raid_event.adds.duration + raid_event.adds.in < 25 || raid_event.adds.in > 60 ) || raid_event.adds.up & raid_event.adds.remains > 10 ) || boss & fight_remains < 25 )",
|
|
["var_name"] = "trueshot_ready",
|
|
["description"] = "Determine if it is a good time to use Trueshot. Raid event optimization takes priority so usage is saved for multiple targets as long as it won't delay over half its duration. Otherwise allow for small delays to line up buff effect trinkets, and when using Bullseye, delay the last usage of the fight for max stacks.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.health_pct < pet_healing",
|
|
["action"] = "mend_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies < 3 || ! talent.trick_shots.enabled",
|
|
["list_name"] = "st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 2",
|
|
["list_name"] = "trickshots",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.unbreakable_bond.enabled",
|
|
["action"] = "summon_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! trinket.t2.has_cooldown || trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff || ! trinket.t1.is.mirror_of_fractured_tomorrows & ( trinket.t2.is.mirror_of_fractured_tomorrows || trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) ) || ! trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) )",
|
|
["var_name"] = "trinket_1_stronger",
|
|
["description"] = "Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! variable.trinket_1_stronger",
|
|
["var_name"] = "trinket_2_stronger",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 1 || active_enemies = 2 & ! talent.volley.enabled",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["action"] = "steady_shot",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "variable.trueshot_ready",
|
|
["var_name"] = "sync_ready",
|
|
["description"] = "True if effects that are desirable to sync a trinket buff with are ready.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "buff.trueshot.up",
|
|
["var_name"] = "sync_active",
|
|
["description"] = "True if effecs that are desirable to sync a trinket buff with are active.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "cooldown.trueshot.remains_guess",
|
|
["var_name"] = "sync_remains",
|
|
["description"] = "Time until the effects that are desirable to sync a trinket buff with will be ready.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["description"] = "Uses buff effect trinkets with cooldowns and is willing to delay usage up to half the trinket cooldown if it won't lose a usage in the fight. Fills in downtime with weaker buff effects if they won't also be saved for later cooldowns (happens if it won't delay over half the trinket cooldown and a stronger trinket won't be up in time) or damage effects if they won't inferfere with any buff effect usage. Intended to be slot-agnostic so that any order of the same trinket pair should result in the same usage.",
|
|
["criteria"] = "trinket.t1.has_use_buff & ( variable.sync_ready & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) || ! variable.sync_ready & ( variable.trinket_1_stronger & ( variable.sync_remains > trinket.t1.cooldown.duration / 3 & fight_remains > trinket.t1.cooldown.duration + 20 || trinket.t2.has_use_buff & trinket.t2.cooldown.remains > variable.sync_remains - 15 & trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 45 > fight_remains ) || variable.trinket_2_stronger & ( trinket.t2.cooldown.remains & ( trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains >= 20 || trinket.t2.cooldown.remains - 5 >= variable.sync_remains & ( variable.sync_remains > trinket.t1.cooldown.duration / 3 || trinket.t1.cooldown.duration < fight_remains & ( variable.sync_remains + trinket.t1.cooldown.duration > fight_remains ) ) ) || trinket.t2.cooldown.ready & variable.sync_remains > 20 & variable.sync_remains < trinket.t2.cooldown.duration / 3 ) ) ) || ! trinket.t1.has_use_buff & ( trinket.t1.cast_time = 0 || ! variable.sync_active ) & ( ! trinket.t2.has_use_buff & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) || trinket.t2.has_use_buff & ( variable.sync_remains > 20 || trinket.t2.cooldown.remains > 20 ) ) || boss & fight_remains < 25 & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "trinket.t2.has_use_buff & ( variable.sync_ready & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) || ! variable.sync_ready & ( variable.trinket_2_stronger & ( variable.sync_remains > trinket.t2.cooldown.duration / 3 & fight_remains > trinket.t2.cooldown.duration + 20 || trinket.t1.has_use_buff & trinket.t1.cooldown.remains > variable.sync_remains - 15 & trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 45 > fight_remains ) || variable.trinket_1_stronger & ( trinket.t1.cooldown.remains & ( trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains >= 20 || trinket.t1.cooldown.remains - 5 >= variable.sync_remains & ( variable.sync_remains > trinket.t2.cooldown.duration / 3 || trinket.t2.cooldown.duration < fight_remains & ( variable.sync_remains + trinket.t2.cooldown.duration > fight_remains ) ) ) || trinket.t1.cooldown.ready & variable.sync_remains > 20 & variable.sync_remains < trinket.t1.cooldown.duration / 3 ) ) ) || ! trinket.t2.has_use_buff & ( trinket.t2.cast_time = 0 || ! variable.sync_active ) & ( ! trinket.t1.has_use_buff & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) || trinket.t1.has_use_buff & ( variable.sync_remains > 20 || trinket.t1.cooldown.remains > 20 ) ) || boss & fight_remains < 25 & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains )",
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Hold Volley for up to its whole cooldown for multiple target situations, also make sure Rapid Fire will be available to stack extra Bullestorm stacks during it without Aspect of the Hydra.",
|
|
["criteria"] = "! talent.double_tap.enabled & ( talent.aspect_of_the_hydra.enabled || active_enemies = 1 || buff.precise_shots.down & ( cooldown.rapid_fire.remains + action.rapid_fire.execute_time < 6 || ! talent.bulletstorm.enabled ) ) & ( ! raid_event.adds.exists || raid_event.adds.in > action_cooldown || active_enemies > 1 )",
|
|
["action"] = "volley",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Prioritize Rapid Fire to trigger Lunar Storm or to stack extra Bulletstorm when Volley Trick Shots is up without Aspect of the Hydra.",
|
|
["criteria"] = "hero_tree.sentinel & buff.lunar_storm_cooldown.down || ! talent.aspect_of_the_hydra.enabled & talent.bulletstorm.enabled & active_enemies > 1 & buff.trick_shots.up & ( buff.precise_shots.down || ! talent.no_scope.enabled )",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "variable.trueshot_ready",
|
|
["action"] = "trueshot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Prioritize 4pc double bonus by casting Explosive Shot and following up with Aimed Shot when Lock and Load is up, as long as Precise Shots would not be wasted.",
|
|
["criteria"] = "talent.precision_detonation.enabled & set_bonus.thewarwithin_season_2_4pc & ( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & buff.lock_and_load.up",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.precision_detonation.enabled & set_bonus.thewarwithin_season_2_4pc & ( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & buff.lock_and_load.up",
|
|
["action"] = "aimed_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "For Double Tap, lower Volley in priority until Trueshot has already triggered Double Tap.",
|
|
["criteria"] = "talent.double_tap.enabled & buff.double_tap.down",
|
|
["action"] = "volley",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "black_arrow",
|
|
["cycle_Targets"] = "1",
|
|
["criteria"] = "talent.headshot.enabled & buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down ) || ! talent.headshot.enabled & buff.razor_fragments.up",
|
|
["description"] = "Kill Shot/Black Arrow become the primary Precise Shot spenders for Headshot builds. For all Precise Shot spenders, skip to Aimed Shot if both Spotter's Mark and Moving Target are already up.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["cycle_Targets"] = "1",
|
|
["action"] = "kill_shot",
|
|
["criteria"] = "talent.headshot.enabled & buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down ) || ! talent.headshot.enabled & buff.razor_fragments.up",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "multishot",
|
|
["cycle_Targets"] = "1",
|
|
["criteria"] = "buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down ) & active_enemies > 1 & ! talent.aspect_of_the_hydra.enabled & ( talent.symphonic_arsenal.enabled || talent.small_game_hunter.enabled )",
|
|
["description"] = "With either Symphonic Arsenal or Small Game Hunter, Multi-Shot can be used as the Precise Shots spender on 2 targets without Aspect of the Hydra.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["cycle_Targets"] = "1",
|
|
["action"] = "arcane_shot",
|
|
["criteria"] = "buff.precise_shots.up & ( debuff.spotters_mark.down || buff.moving_target.down )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "aimed_shot",
|
|
["cycle_Targets"] = "1",
|
|
["criteria"] = "( buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up ) & full_recharge_time < action.rapid_fire.execute_time + cast_time & ( ! talent.bulletstorm.enabled || buff.bulletstorm.up ) & talent.windrunner_quiver.enabled",
|
|
["description"] = "Prioritize Aimed Shot a bit higher than Rapid Fire if it's close to charge capping and Bulletstorm is up.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "With Sentinel, hold Rapid Fire for up to 1/3 of its cooldown to trigger Lunar Storm as soon as possible. Don't reset Bulletstorm if it's been stacked over 10 unless it can be re-stacked over 10.",
|
|
["criteria"] = "( ! hero_tree.sentinel || buff.lunar_storm_cooldown.remains > action_cooldown / 3 ) & ( ! talent.bulletstorm.enabled || buff.bulletstorm.stack <= 10 || talent.aspect_of_the_hydra.enabled & active_enemies > 1 )",
|
|
["action"] = "rapid_fire",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "aimed_shot",
|
|
["cycle_Targets"] = "1",
|
|
["criteria"] = "buff.precise_shots.down || debuff.spotters_mark.up & buff.moving_target.up",
|
|
["description"] = "Aimed Shot if we've spent Precise Shots to trigger Spotter's Mark and Moving Target. With No Scope this means Precise Shots could be up when Aimed Shot is cast.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! set_bonus.thewarwithin_season_2_4pc || ! talent.precision_detonation.enabled",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.headshot.enabled",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Steady Shot is our only true filler due to the Aimed Shot cdr.",
|
|
["action"] = "steady_shot",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || boss & fight_remains < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 16",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 16",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up || cooldown.trueshot.remains > 30 || boss & fight_remains < 9",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.down",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.trueshot.up & ( buff.bloodlust.up || target.health.pct < 20 ) || boss & fight_remains < 31",
|
|
["action"] = "potion",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250330,
|
|
["warnings"] = "The import for 'trickshots' required some automated changes.\nLine 1: Converted 'talent.double_tap' to 'talent.double_tap.enabled' (1x).\nLine 4: Converted 'talent.double_tap' to 'talent.double_tap.enabled' (1x).\nLine 7: Converted operations in 'buff.trick_shots.up&(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>action_cooldown%3||buff.lunar_storm_cooldown.down)' to 'buff.trick_shots.up&(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>action_cooldown/3||buff.lunar_storm_cooldown.down)'.\nLine 8: Converted 'talent.precision_detonation' to 'talent.precision_detonation.enabled' (1x).\n\nThe import for 'default' required some automated changes.\nLine 3: Converted 'talent.bullseye' to 'talent.bullseye.enabled' (1x).\nLine 3: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains' (1x).\nLine 3: Converted 'trinket.1.cooldown.remains' to 'trinket.t1.cooldown.remains'.\nLine 3: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready' (1x).\nLine 3: Converted 'trinket.1.cooldown.ready' to 'trinket.t1.cooldown.ready'.\nLine 3: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 3: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 3: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 3: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 3: Converted operations in 'cooldown.trueshot.ready&((!raid_event.adds.exists||raid_event.adds.count=1)&(!talent.bullseye.enabled||fight_remains>cooldown.trueshot.duration_guess+buff.trueshot.duration%2||buff.bullseye.stack=buff.bullseye.max_stack)&(!trinket.t1.has_use_buff||trinket.t1.cooldown.remains>30||trinket.t1.cooldown.ready)&(!trinket.t2.has_use_buff||trinket.t2.cooldown.remains>30||trinket.t2.cooldown.ready)||raid_event.adds.exists&(!raid_event.adds.up&(raid_event.adds.duration+raid_event.adds.in<25||raid_event.adds.in>60)||raid_event.adds.up&raid_event.adds.remains>10)||boss&fight_remains<25)' to 'cooldown.trueshot.ready&((!raid_event.adds.exists||raid_event.adds.count=1)&(!talent.bullseye.enabled||fight_remains>cooldown.trueshot.duration_guess+buff.trueshot.duration/2||buff.bullseye.stack=buff.bullseye.max_stack)&(!trinket.t1.has_use_buff||trinket.t1.cooldown.remains>30||trinket.t1.cooldown.ready)&(!trinket.t2.has_use_buff||trinket.t2.cooldown.remains>30||trinket.t2.cooldown.ready)||raid_event.adds.exists&(!raid_event.adds.up&(raid_event.adds.duration+raid_event.adds.in<25||raid_event.adds.in>60)||raid_event.adds.up&raid_event.adds.remains>10)||boss&fight_remains<25)'.\nLine 8: Converted 'talent.trick_shots' to 'talent.trick_shots.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 1: Converted 'talent.unbreakable_bond' to 'talent.unbreakable_bond.enabled' (1x).\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 5: Converted 'talent.volley' to 'talent.volley.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 1: Converted 'talent.double_tap' to 'talent.double_tap.enabled' (1x).\nLine 1: Converted 'talent.aspect_of_the_hydra' to 'talent.aspect_of_the_hydra.enabled' (1x).\nLine 1: Converted 'talent.bulletstorm' to 'talent.bulletstorm.enabled' (1x).\nLine 2: Converted 'talent.aspect_of_the_hydra' to 'talent.aspect_of_the_hydra.enabled' (1x).\nLine 2: Converted 'talent.bulletstorm' to 'talent.bulletstorm.enabled' (1x).\nLine 2: Converted 'talent.no_scope' to 'talent.no_scope.enabled' (1x).\nLine 4: Converted 'talent.precision_detonation' to 'talent.precision_detonation.enabled' (1x).\nLine 5: Converted 'talent.precision_detonation' to 'talent.precision_detonation.enabled' (1x).\nLine 6: Converted 'talent.double_tap' to 'talent.double_tap.enabled' (1x).\nLine 7: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\nLine 7: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\nLine 8: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\nLine 8: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\nLine 9: Converted 'talent.aspect_of_the_hydra' to 'talent.aspect_of_the_hydra.enabled' (1x).\nLine 9: Converted 'talent.symphonic_arsenal' to 'talent.symphonic_arsenal.enabled' (1x).\nLine 9: Converted 'talent.small_game_hunter' to 'talent.small_game_hunter.enabled' (1x).\nLine 11: Converted 'talent.bulletstorm' to 'talent.bulletstorm.enabled' (1x).\nLine 11: Converted 'talent.windrunner_quiver' to 'talent.windrunner_quiver.enabled' (1x).\nLine 12: Converted 'talent.bulletstorm' to 'talent.bulletstorm.enabled' (1x).\nLine 12: Converted 'talent.aspect_of_the_hydra' to 'talent.aspect_of_the_hydra.enabled' (1x).\nLine 12: Converted operations in '(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>action_cooldown%3)&(!talent.bulletstorm.enabled||buff.bulletstorm.stack<=10||talent.aspect_of_the_hydra.enabled&active_enemies>1)' to '(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>action_cooldown/3)&(!talent.bulletstorm.enabled||buff.bulletstorm.stack<=10||talent.aspect_of_the_hydra.enabled&active_enemies>1)'.\nLine 14: Converted 'talent.precision_detonation' to 'talent.precision_detonation.enabled' (1x).\nLine 15: Converted 'talent.headshot' to 'talent.headshot.enabled' (1x).\n\nThe import for 'trinkets' required some automated changes.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted operations in 'trinket.t1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.t1.cooldown.duration%3&fight_remains>trinket.t1.cooldown.duration+20||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-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",
|
|
["spec"] = 254,
|
|
["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/hunter_marksmanship.simc\n## Up to date with SimC: March 28 2025 - 9b7cf47\n\nactions.precombat+=/summon_pet,if=talent.unbreakable_bond\n# Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.\nactions.precombat+=/variable,name=trinket_1_stronger,value=!trinket.2.has_cooldown||trinket.1.has_use_buff&(!trinket.2.has_use_buff||!trinket.1.is.mirror_of_fractured_tomorrows&(trinket.2.is.mirror_of_fractured_tomorrows||trinket.2.cooldown.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+=/aimed_shot,if=active_enemies=1||active_enemies=2&!talent.volley\nactions.precombat+=/steady_shot\n\nactions+=/counter_shot\nactions+=/tranquilizing_shot\n# Determine if it is a good time to use Trueshot. Raid event optimization takes priority so usage is saved for multiple targets as long as it won't delay over half its duration. Otherwise allow for small delays to line up buff effect trinkets, and when using Bullseye, delay the last usage of the fight for max stacks.\nactions+=/variable,name=trueshot_ready,value=cooldown.trueshot.ready&((!raid_event.adds.exists||raid_event.adds.count=1)&(!talent.bullseye||fight_remains>cooldown.trueshot.duration_guess+buff.trueshot.duration%2||buff.bullseye.stack=buff.bullseye.max_stack)&(!trinket.1.has_use_buff||trinket.1.cooldown.remains>30||trinket.1.cooldown.ready)&(!trinket.2.has_use_buff||trinket.2.cooldown.remains>30||trinket.2.cooldown.ready)||raid_event.adds.exists&(!raid_event.adds.up&(raid_event.adds.duration+raid_event.adds.in<25||raid_event.adds.in>60)||raid_event.adds.up&raid_event.adds.remains>10)||boss&fight_remains<25)\nactions+=/mend_pet,if=pet.health_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\n\n# Hold Volley for up to its whole cooldown for multiple target situations, also make sure Rapid Fire will be available to stack extra Bullestorm stacks during it without Aspect of the Hydra.\nactions.st+=/volley,if=!talent.double_tap&(talent.aspect_of_the_hydra||active_enemies=1||buff.precise_shots.down&(cooldown.rapid_fire.remains+action.rapid_fire.execute_time<6||!talent.bulletstorm))&(!raid_event.adds.exists||raid_event.adds.in>cooldown||active_enemies>1)\n## [Syrif] - Using lunar_storm_cooldown.down is better for us than lunar_storm_ready.up, prediction-wise\n# Prioritize Rapid Fire to trigger Lunar Storm or to stack extra Bulletstorm when Volley Trick Shots is up without Aspect of the Hydra.\nactions.st+=/rapid_fire,if=hero_tree.sentinel&buff.lunar_storm_cooldown.down||!talent.aspect_of_the_hydra&talent.bulletstorm&active_enemies>1&buff.trick_shots.up&(buff.precise_shots.down||!talent.no_scope)\nactions.st+=/trueshot,if=variable.trueshot_ready\n# Prioritize 4pc double bonus by casting Explosive Shot and following up with Aimed Shot when Lock and Load is up, as long as Precise Shots would not be wasted.\nactions.st+=/explosive_shot,if=talent.precision_detonation&set_bonus.thewarwithin_season_2_4pc&(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&buff.lock_and_load.up\nactions.st+=/aimed_shot,if=talent.precision_detonation&set_bonus.thewarwithin_season_2_4pc&(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&buff.lock_and_load.up\n# For Double Tap, lower Volley in priority until Trueshot has already triggered Double Tap.\nactions.st+=/volley,if=talent.double_tap&buff.double_tap.down\n# Kill Shot/Black Arrow become the primary Precise Shot spenders for Headshot builds. For all Precise Shot spenders, skip to Aimed Shot if both Spotter's Mark and Moving Target are already up.\nactions.st+=/black_arrow,cycle_Targets=1,if=talent.headshot&buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)||!talent.headshot&buff.razor_fragments.up\nactions.st+=/kill_shot,cycle_Targets=1,if=talent.headshot&buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)||!talent.headshot&buff.razor_fragments.up\n# With either Symphonic Arsenal or Small Game Hunter, Multi-Shot can be used as the Precise Shots spender on 2 targets without Aspect of the Hydra.\nactions.st+=/multishot,cycle_Targets=1,if=buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)&active_enemies>1&!talent.aspect_of_the_hydra&(talent.symphonic_arsenal||talent.small_game_hunter)\nactions.st+=/arcane_shot,cycle_Targets=1,if=buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)\n# Prioritize Aimed Shot a bit higher than Rapid Fire if it's close to charge capping and Bulletstorm is up.\nactions.st+=/aimed_shot,cycle_Targets=1,if=(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&full_recharge_time<action.rapid_fire.execute_time+cast_time&(!talent.bulletstorm||buff.bulletstorm.up)&talent.windrunner_quiver\n# With Sentinel, hold Rapid Fire for up to 1/3 of its cooldown to trigger Lunar Storm as soon as possible. Don't reset Bulletstorm if it's been stacked over 10 unless it can be re-stacked over 10.\nactions.st+=/rapid_fire,if=(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>cooldown%3)&(!talent.bulletstorm||buff.bulletstorm.stack<=10||talent.aspect_of_the_hydra&active_enemies>1)\n# Aimed Shot if we've spent Precise Shots to trigger Spotter's Mark and Moving Target. With No Scope this means Precise Shots could be up when Aimed Shot is cast.\nactions.st+=/aimed_shot,cycle_Targets=1,if=buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up\nactions.st+=/explosive_shot,if=!set_bonus.thewarwithin_season_2_4pc||!talent.precision_detonation\nactions.st+=/black_arrow,if=!talent.headshot\n# Steady Shot is our only true filler due to the Aimed Shot cdr.\nactions.st+=/steady_shot\n\nactions.trickshots+=/volley,if=!talent.double_tap\nactions.trickshots+=/trueshot,if=variable.trueshot_ready\n# Swap targets to spend Precise Shots from No Scope after applying Spotter's Mark already to the primary target.\nactions.trickshots+=/multishot,cycle_Targets=1,if=buff.precise_shots.up&(debuff.spotters_mark.down||buff.moving_target.down)||buff.trick_shots.down\n# For Double Tap, lower Volley in priority until Trueshot has already triggered Double Tap.\nactions.trickshots+=/volley,if=talent.double_tap&buff.double_tap.down\n# Always cast Black Arrow with Trick Shots up for Bleak Powder.\nactions.trickshots+=/black_arrow,if=buff.trick_shots.up\n# Prioritize Aimed Shot a bit higher than Rapid Fire if it's close to charge capping and Bulletstorm is up.\nactions.trickshots+=/aimed_shot,if=(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&buff.trick_shots.up&buff.bulletstorm.up&full_recharge_time<gcd\n## [Syrif] - Using lunar_storm_cooldown.down is better for us than lunar_storm_ready.up, prediction-wise\n# With Sentinel, hold Rapid Fire for up to 1/3 of its cooldown to trigger Lunar Storm as soon as possible.\nactions.trickshots+=/rapid_fire,if=buff.trick_shots.up&(!hero_tree.sentinel||buff.lunar_storm_cooldown.remains>cooldown%3||buff.lunar_storm_cooldown.down)\n# With Precision Detonation, wait until a follow up Aimed Shot would not waste Precise Shots to cast. Require Lock and Load active if using the 4pc.\nactions.trickshots+=/explosive_shot,if=talent.precision_detonation&(buff.lock_and_load.up||!set_bonus.thewarwithin_season_2_4pc)&(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)\n# Aimed Shot if we've spent Precise Shots to trigger Spotter's Mark and Moving Target. With No Scope this means Precise Shots could be up when Aimed Shot is cast.\nactions.trickshots+=/aimed_shot,if=(buff.precise_shots.down||debuff.spotters_mark.up&buff.moving_target.up)&buff.trick_shots.up\nactions.trickshots+=/explosive_shot\nactions.trickshots+=/steady_shot,if=focus+cast_regen<focus.max\nactions.trickshots+=/multishot\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)",
|
|
},
|
|
["Beast Mastery"] = {
|
|
["source"] = "# https://github.com/simulationcraft/simc/",
|
|
["builtIn"] = true,
|
|
["date"] = 20250319,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-03-19: SimC Update c8cb5fc\n\n2025-03-14: Add missing change from previous SimC update\n\n2025-03-10: SimC update, add barb shot opener option\n\n2025-02-28: TWW Season 2 update\n\n2025-02-17: Preliminary 11.1 APL\n\n2024-11-03: SimC updates\n\n2024-10-26: SimC updates\n\n2024-10-23: 11.0.5\n\n2024-09-22: SimC update\n\n2024-08-22: SimC update\n\n2024-08-01: Respect Hunter's Mark setting\n\n2024-07-27: Add Call of the Wild talent checks; use Counter Shot; use Hunter's Mark\n\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["default"] = {
|
|
{
|
|
["action"] = "counter_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "tranquilizing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.health_pct < pet_healing",
|
|
["action"] = "mend_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "trinkets",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies < 2 || ! talent.beast_cleave.enabled & active_enemies < 3",
|
|
["list_name"] = "st",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["criteria"] = "active_enemies > 2 || talent.beast_cleave.enabled & active_enemies > 1",
|
|
["list_name"] = "cleave",
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "summon_pet",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! trinket.t2.has_cooldown || trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff || ! trinket.t1.is.mirror_of_fractured_tomorrows & ( trinket.t2.is.mirror_of_fractured_tomorrows || trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) ) || ! trinket.t1.has_use_buff & ( ! trinket.t2.has_use_buff & ( trinket.t2.cooldown.duration < trinket.t1.cooldown.duration || trinket.t2.cast_time < trinket.t1.cast_time || trinket.t2.cast_time = trinket.t1.cast_time & trinket.t2.cooldown.duration = trinket.t1.cooldown.duration ) )",
|
|
["var_name"] = "trinket_1_stronger",
|
|
["description"] = "Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "! variable.trinket_1_stronger",
|
|
["var_name"] = "trinket_2_stronger",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "[Syrif] - Lets users choose whether to follow guide behaviour or sim behaviour",
|
|
["criteria"] = "settings.barbed_shot_opener",
|
|
["action"] = "barbed_shot",
|
|
},
|
|
},
|
|
["cleave"] = {
|
|
{
|
|
["action"] = "bestial_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.huntmasters_call.enabled & buff.huntmasters_call.stack = 2",
|
|
["action"] = "dire_beast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.beast_cleave.remains & buff.withering_fire.up",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "full_recharge_time < gcd.max || charges_fractional >= cooldown.kill_command.charges_fractional || talent.call_of_the_wild.enabled & cooldown.call_of_the_wild.ready || howl_summon.ready & full_recharge_time < 8",
|
|
["action"] = "barbed_shot",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.beast_cleave.down & ( ! talent.bloody_frenzy.enabled || cooldown.call_of_the_wild.remains )",
|
|
["action"] = "multishot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.beast_cleave.up",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["action"] = "call_of_the_wild",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodshed",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.shadow_hounds.enabled || talent.dire_cleave.enabled",
|
|
["action"] = "dire_beast",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.thundering_hooves.enabled",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.black_arrow.enabled & ( talent.barbed_scales.enabled || talent.savagery.enabled ) || set_bonus.tww2 >= 2 || boss & fight_remains < 9",
|
|
["action"] = "barbed_shot",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus.time_to_max < gcd.max * 2 || buff.hogstrider.stack > 3",
|
|
["action"] = "cobra_shot",
|
|
},
|
|
{
|
|
["action"] = "dire_beast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( focus + focus.regen + 30 ) < focus.max",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 16",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 16",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & buff.bestial_wrath.up || boss & fight_remains < 9",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.call_of_the_wild.up || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ! talent.call_of_the_wild.enabled & ! talent.bloodshed.enabled & buff.bestial_wrath.up || boss & fight_remains < 31",
|
|
["action"] = "potion",
|
|
},
|
|
},
|
|
["st"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.huntmasters_call.enabled",
|
|
["action"] = "dire_beast",
|
|
},
|
|
{
|
|
["action"] = "bestial_wrath",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.withering_fire.up",
|
|
["action"] = "black_arrow",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "full_recharge_time < gcd.max || charges_fractional >= cooldown.kill_command.charges_fractional || talent.call_of_the_wild.enabled & cooldown.call_of_the_wild.ready || howl_summon.ready & full_recharge_time < 8",
|
|
["action"] = "barbed_shot",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "call_of_the_wild",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bloodshed",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "kill_command",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "black_arrow",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.thundering_hooves.enabled",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "lights_judgment",
|
|
},
|
|
{
|
|
["action"] = "cobra_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "dire_beast",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "bag_of_tricks",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.bestial_wrath.down || target.time_to_die < 5",
|
|
["action"] = "arcane_pulse",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( focus + focus.regen + 15 ) < focus.max",
|
|
["action"] = "arcane_torrent",
|
|
},
|
|
},
|
|
["trinkets"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.call_of_the_wild.enabled & ( prev_gcd.1.call_of_the_wild ) || talent.bloodshed.enabled & ( prev_gcd.1.bloodshed ) || ( ! talent.call_of_the_wild.enabled & ! talent.bloodshed.enabled ) & ( buff.bestial_wrath.up || cooldown.bestial_wrath.remains_guess < 5 )",
|
|
["var_name"] = "sync_ready",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "set",
|
|
["action"] = "variable",
|
|
["value"] = "talent.call_of_the_wild.enabled & buff.call_of_the_wild.up || talent.bloodshed.enabled & prev_gcd.1.bloodshed || ( ! talent.call_of_the_wild.enabled & ! talent.bloodshed.enabled ) & buff.bestial_wrath.up",
|
|
["var_name"] = "sync_active",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["op"] = "setif",
|
|
["action"] = "variable",
|
|
["var_name"] = "sync_remains",
|
|
["value"] = "cooldown.bestial_wrath.remains_guess",
|
|
["value_else"] = "cooldown.call_of_the_wild.remains || cooldown.bloodshed.remains",
|
|
["criteria"] = "! talent.call_of_the_wild.enabled & ! talent.bloodshed.enabled",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket1",
|
|
["slot"] = "trinket1",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "trinket.t1.has_use_buff & ( variable.sync_ready & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) || ! variable.sync_ready & ( variable.trinket_1_stronger & ( variable.sync_remains > trinket.t1.cooldown.duration / 3 & boss & fight_remains > trinket.t1.cooldown.duration + 20 || trinket.t2.has_use_buff & trinket.t2.cooldown.remains > variable.sync_remains - 15 & trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 45 > fight_remains & boss ) || variable.trinket_2_stronger & ( trinket.t2.cooldown.remains & ( trinket.t2.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains >= 20 || trinket.t2.cooldown.remains - 5 >= variable.sync_remains & ( variable.sync_remains > trinket.t1.cooldown.duration / 3 || trinket.t1.cooldown.duration < fight_remains & boss & ( variable.sync_remains + trinket.t1.cooldown.duration > fight_remains ) ) ) || trinket.t2.cooldown.ready & variable.sync_remains > 20 & variable.sync_remains < trinket.t2.cooldown.duration / 3 ) ) ) || ! trinket.t1.has_use_buff & ( trinket.t1.cast_time = 0 || ! variable.sync_active ) & ( ! trinket.t2.has_use_buff & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains ) || trinket.t2.has_use_buff & ( ! variable.sync_active & variable.sync_remains > 20 || trinket.t2.cooldown.remains > 20 ) ) || boss & fight_remains < 25 & ( variable.trinket_1_stronger || trinket.t2.cooldown.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "trinket2",
|
|
["slot"] = "trinket2",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "trinket.t2.has_use_buff & ( variable.sync_ready & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) || ! variable.sync_ready & ( variable.trinket_2_stronger & ( variable.sync_remains > trinket.t2.cooldown.duration / 3 & boss & fight_remains > trinket.t2.cooldown.duration + 20 || trinket.t1.has_use_buff & trinket.t1.cooldown.remains > variable.sync_remains - 15 & trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains + 45 > fight_remains & boss ) || variable.trinket_1_stronger & ( trinket.t1.cooldown.remains & ( trinket.t1.cooldown.remains - 5 < variable.sync_remains & variable.sync_remains >= 20 || trinket.t1.cooldown.remains - 5 >= variable.sync_remains & ( variable.sync_remains > trinket.t2.cooldown.duration / 3 || trinket.t2.cooldown.duration < fight_remains & boss & ( variable.sync_remains + trinket.t2.cooldown.duration > fight_remains ) ) ) || trinket.t1.cooldown.ready & variable.sync_remains > 20 & variable.sync_remains < trinket.t1.cooldown.duration / 3 ) ) ) || ! trinket.t2.has_use_buff & ( trinket.t2.cast_time = 0 || ! variable.sync_active ) & ( ! trinket.t1.has_use_buff & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains ) || trinket.t1.has_use_buff & ( ! variable.sync_active & variable.sync_remains > 20 || trinket.t1.cooldown.remains > 20 ) ) || boss & fight_remains < 25 & ( variable.trinket_2_stronger || trinket.t1.cooldown.remains )",
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250319,
|
|
["warnings"] = "The import for 'default' required some automated changes.\nLine 7: Converted 'talent.beast_cleave' to 'talent.beast_cleave.enabled' (1x).\nLine 8: Converted 'talent.beast_cleave' to 'talent.beast_cleave.enabled' (1x).\n\nThe import for 'precombat' required some automated changes.\nLine 2: Converted 'trinket.2.has_cooldown' to 'trinket.t2.has_cooldown' (1x).\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.1.is.mirror_of_fractured_tomorrows' to 'trinket.t1.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.is.mirror_of_fractured_tomorrows' to 'trinket.t2.is.mirror_of_fractured_tomorrows' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cast_time' to 'trinket.t2.cast_time' (1x).\nLine 2: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 2: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 2: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\n\nThe import for 'trinkets' required some automated changes.\nLine 1: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 1: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 1: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 1: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 2: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 2: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 2: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 2: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 3: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 3: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration' (1x).\nLine 4: Converted 'trinket.1.cooldown.duration' to 'trinket.t1.cooldown.duration'.\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready' (1x).\nLine 4: Converted 'trinket.2.cooldown.ready' to 'trinket.t2.cooldown.ready'.\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration' (1x).\nLine 4: Converted 'trinket.2.cooldown.duration' to 'trinket.t2.cooldown.duration'.\nLine 4: Converted 'trinket.1.has_use_buff' to 'trinket.t1.has_use_buff' (1x).\nLine 4: Converted 'trinket.1.cast_time' to 'trinket.t1.cast_time' (1x).\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.has_use_buff' to 'trinket.t2.has_use_buff' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains' (1x).\nLine 4: Converted 'trinket.2.cooldown.remains' to 'trinket.t2.cooldown.remains'.\nLine 4: Converted operations in 'trinket.t1.has_use_buff&(variable.sync_ready&(variable.trinket_1_stronger||trinket.t2.cooldown.remains)||!variable.sync_ready&(variable.trinket_1_stronger&(variable.sync_remains>trinket.t1.cooldown.duration%3&boss&fight_remains>trinket.t1.cooldown.duration+20||trinket.t2.has_use_buff&trinket.t2.cooldown.remains>variable.sync_remains-15&trinket.t2.cooldown.remains-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).\nLine 5: Converted 'talent.bloodshed' to 'talent.bloodshed.enabled' (1x).\n\nThe import for 'st' required some automated changes.\nLine 1: Converted 'talent.huntmasters_call' to 'talent.huntmasters_call.enabled' (1x).\nLine 4: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 9: Converted 'talent.thundering_hooves' to 'talent.thundering_hooves.enabled' (1x).\n\nThe import for 'cleave' required some automated changes.\nLine 2: Converted 'talent.huntmasters_call' to 'talent.huntmasters_call.enabled' (1x).\nLine 4: Converted 'talent.call_of_the_wild' to 'talent.call_of_the_wild.enabled' (1x).\nLine 5: Converted 'talent.bloody_frenzy' to 'talent.bloody_frenzy.enabled' (1x).\nLine 9: Converted 'talent.shadow_hounds' to 'talent.shadow_hounds.enabled' (1x).\nLine 9: Converted 'talent.dire_cleave' to 'talent.dire_cleave.enabled' (1x).\nLine 10: Converted 'talent.thundering_hooves' to 'talent.thundering_hooves.enabled' (1x).\nLine 12: Converted 'talent.black_arrow' to 'talent.black_arrow.enabled' (1x).\nLine 12: Converted 'talent.barbed_scales' to 'talent.barbed_scales.enabled' (1x).\nLine 12: Converted 'talent.savagery' to 'talent.savagery.enabled' (1x).\n\nImported 6 action lists.\n",
|
|
["profile"] = "## https://github.com/simulationcraft/simc/commits/thewarwithin/ActionPriorityLists/hunter_beast_mastery.simc\n## Up to date with SimC: March 18 2025 - c8cb5fc\n\nactions.precombat+=/summon_pet\n# Determine the stronger trinket to sync with cooldowns. In descending priority: buff effects > damage effects, longer > shorter cooldowns, longer > shorter cast times. Special case to consider Mirror of Fractured Tomorrows weaker than other buff effects since its power is split between the dmg effect and the buff effect.\nactions.precombat+=/variable,name=trinket_1_stronger,value=!trinket.2.has_cooldown||trinket.1.has_use_buff&(!trinket.2.has_use_buff||!trinket.1.is.mirror_of_fractured_tomorrows&(trinket.2.is.mirror_of_fractured_tomorrows||trinket.2.cooldown.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\n# [Syrif] - Lets users choose whether to follow guide behaviour or sim behaviour\nactions.precombat+=/barbed_shot,if=settings.barbed_shot_opener\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&!talent.bloodshed&buff.bestial_wrath.up||boss&fight_remains<31\n\nactions.cleave+=/bestial_wrath\nactions.cleave+=/dire_beast,if=talent.huntmasters_call&buff.huntmasters_call.stack=2\nactions.cleave+=/black_arrow,if=buff.beast_cleave.remains&buff.withering_fire.up\nactions.cleave+=/barbed_shot,cycle_targets=1,if=full_recharge_time<gcd||charges_fractional>=cooldown.kill_command.charges_fractional||talent.call_of_the_wild&cooldown.call_of_the_wild.ready||howl_summon.ready&full_recharge_time<8\nactions.cleave+=/multishot,if=buff.beast_cleave.down&(!talent.bloody_frenzy||cooldown.call_of_the_wild.remains)\nactions.cleave+=/black_arrow,if=buff.beast_cleave.up\nactions.cleave+=/call_of_the_wild\nactions.cleave+=/bloodshed\nactions.cleave+=/dire_beast,if=talent.shadow_hounds||talent.dire_cleave\nactions.cleave+=/explosive_shot,if=talent.thundering_hooves\nactions.cleave+=/kill_command,cycle_targets=1\nactions.cleave+=/barbed_shot,cycle_targets=1,if=buff.call_of_the_wild.up||talent.black_arrow&(talent.barbed_scales||talent.savagery)||set_bonus.tww2>=2||boss&fight_remains<9\nactions.cleave+=/lights_judgment,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.cleave+=/cobra_shot,if=focus.time_to_max<gcd*2||buff.hogstrider.stack>3\nactions.cleave+=/dire_beast\nactions.cleave+=/explosive_shot\nactions.cleave+=/bag_of_tricks,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.cleave+=/arcane_torrent,if=(focus+focus.regen+30)<focus.max\n\nactions.st+=/dire_beast,if=talent.huntmasters_call\nactions.st+=/bestial_wrath\nactions.st+=/black_arrow,if=buff.withering_fire.up\nactions.st+=/barbed_shot,cycle_targets=1,if=full_recharge_time<gcd||charges_fractional>=cooldown.kill_command.charges_fractional||talent.call_of_the_wild&cooldown.call_of_the_wild.ready||howl_summon.ready&full_recharge_time<8\nactions.st+=/call_of_the_wild\nactions.st+=/bloodshed\nactions.st+=/kill_command\nactions.st+=/black_arrow\nactions.st+=/explosive_shot,if=talent.thundering_hooves\nactions.st+=/lights_judgment,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/cobra_shot\nactions.st+=/dire_beast\nactions.st+=/bag_of_tricks,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/arcane_pulse,if=buff.bestial_wrath.down||target.time_to_die<5\nactions.st+=/arcane_torrent,if=(focus+focus.regen+15)<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,
|
|
},
|
|
["Survival"] = {
|
|
["source"] = "https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/hunter_survival.simc",
|
|
["builtIn"] = true,
|
|
["date"] = 20250505,
|
|
["author"] = "SimC",
|
|
["desc"] = "2025-05-05: SimC Update\n2025-04-13: Support pet revive, captions, calling specific pets.\n2025-04-06: SimC Update + boar_charge\n2025-03-21: Simc Update (howl_summon_ready --> howl_summon.ready)\n2025-03-10: SimC Update (howl_summon_ready)\n2025-02-28: TWW Season 2 update\n2025-02-17: Preliminary 11.1 APL\n2024-09-22, 10-21: SimC update\n2024-08-24, 09-08: SimC priority update\n2024-08-12: Fix Kill Command usage in AOE with maxed Focus\n2024-08-01: Respect Hunter's Mark setting\n2024-07-27: Minor sim update; use Hunter's Mark\n2024-07-23: The War Within",
|
|
["lists"] = {
|
|
["sentst"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! buff.lunar_storm_cooldown.remains",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 )",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains",
|
|
["action"] = "spearhead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.tip_of_the_spear.stack < 1",
|
|
["action"] = "kill_command",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.coordinated_assault.up",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.lunar_storm_cooldown.remains > full_recharge_time - gcd.max ) & ( buff.tip_of_the_spear.stack > 0 & cooldown.wildfire_bomb.charges_fractional > 1.7 || cooldown.wildfire_bomb.charges_fractional > 1.9 ) || ( talent.bombardier.enabled & cooldown.coordinated_assault.remains < 2 * gcd.max )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.bombardier.enabled || talent.bombardier.enabled & cooldown.wildfire_bomb.charges_fractional < 1",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack < 1 & cooldown.flanking_strike.remains < gcd.max",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max & ( ! buff.relentless_primal_ferocity.up || ( buff.relentless_primal_ferocity.up & ( buff.tip_of_the_spear.stack < 2 || focus < 30 ) ) )",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.remains < gcd.max & buff.mongoose_fury.stack > 0",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & buff.lunar_storm_cooldown.remains > full_recharge_time & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.in > 15 )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.remains",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "kill_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.contagious_reagents.enabled",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "SENTINEL || DEFAULT SINGLE TARGET ACTIONLIST.",
|
|
["criteria"] = "! buff.lunar_storm_cooldown.remains",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 )",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains",
|
|
["action"] = "spearhead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.tip_of_the_spear.stack < 1",
|
|
["action"] = "kill_command",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.coordinated_assault.up",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.lunar_storm_cooldown.remains > full_recharge_time - gcd.max ) & ( buff.tip_of_the_spear.stack > 0 & cooldown.wildfire_bomb.charges_fractional > 1.7 || cooldown.wildfire_bomb.charges_fractional > 1.9 ) || ( talent.bombardier.enabled & cooldown.coordinated_assault.remains < 2 * gcd.max )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.bombardier.enabled || talent.bombardier.enabled & cooldown.wildfire_bomb.charges_fractional < 1",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack < 1 & cooldown.flanking_strike.remains < gcd.max",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max & ( ! buff.relentless_primal_ferocity.up || ( buff.relentless_primal_ferocity.up & ( buff.tip_of_the_spear.stack < 2 || focus < 30 ) ) )",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.remains < gcd.max & buff.mongoose_fury.stack > 0",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & buff.lunar_storm_cooldown.remains > full_recharge_time & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.in > 15 )",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.mongoose_fury.remains",
|
|
["action"] = "mongoose_bite",
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "kill_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.contagious_reagents.enabled",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["default"] = {
|
|
{
|
|
["action"] = "muzzle",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "tranquilizing_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "pet.health_pct < pet_healing",
|
|
["action"] = "mend_pet",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["list_name"] = "cds",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies < 3 & talent.howl_of_the_pack_leader.enabled",
|
|
["list_name"] = "plst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 2 & talent.howl_of_the_pack_leader.enabled",
|
|
["list_name"] = "plcleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies < 3 & ! talent.howl_of_the_pack_leader.enabled",
|
|
["list_name"] = "sentst",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "call_action_list",
|
|
["strict"] = 1,
|
|
["criteria"] = "active_enemies > 2 & ! talent.howl_of_the_pack_leader.enabled",
|
|
["list_name"] = "sentcleave",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "Use Kill Command if there's nothing else to press",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "arcane_torrent",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "bag_of_tricks",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "lights_judgment",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["precombat"] = {
|
|
{
|
|
["action"] = "summon_pet",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( settings.mark_any || target.is_boss ) & active_dot.hunters_mark = 0 & target.time_to_pct_80 > 20",
|
|
["action"] = "hunters_mark",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["name"] = "algethar_puzzle_box",
|
|
["action"] = "algethar_puzzle_box",
|
|
},
|
|
},
|
|
["plcleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains",
|
|
["action"] = "spearhead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.up & buff.strike_it_rich.remains < gcd.max || buff.hogstrider.remains & boar_charge.remains > 0 || buff.hogstrider.remains < gcd.max & buff.hogstrider.up || buff.hogstrider.remains & buff.strike_it_rich.remains",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "wildfire_bomb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.howl_of_the_pack_leader_wyvern.remains || buff.howl_of_the_pack_leader_boar.remains || buff.howl_of_the_pack_leader_bear.remains )",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack = 2 || buff.tip_of_the_spear.stack = 1",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max || charges_fractional > 1.5",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.deathblow.remains & talent.sic_em.enabled",
|
|
["action"] = "kill_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
["cds"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "COOLDOWNS ACTIONLIST",
|
|
["criteria"] = "settings.use_harpoon & prev.kill_command",
|
|
["action"] = "harpoon",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
|
|
["action"] = "blood_fury",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
|
|
["action"] = "ancestral_call",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
|
|
["action"] = "fireblood",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled || time_to_die < 13",
|
|
["action"] = "berserking",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "boss & fight_remains < 25 || buff.coordinated_assault.up || ! talent.coordinated_assault.enabled & cooldown.spearhead.remains || ! talent.spearhead.enabled & ! talent.coordinated_assault.enabled",
|
|
["action"] = "potion",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "imperfect_ascendancy_serum",
|
|
["use_off_gcd"] = 1,
|
|
["criteria"] = "gcd.remains > gcd.max - 0.1",
|
|
["name"] = "imperfect_ascendancy_serum",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains || cooldown.spearhead.remains",
|
|
["action"] = "use_items",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "target.distance >= 6",
|
|
["action"] = "aspect_of_the_eagle",
|
|
},
|
|
},
|
|
["plst"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
["description"] = "PACK LEADER || SINGLE TARGET ACTIONLIST.",
|
|
["criteria"] = "( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 ) || ( buff.howl_of_the_pack_leader_wyvern.remains || buff.howl_of_the_pack_leader_boar.remains || buff.howl_of_the_pack_leader_bear.remains )",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains & cooldown.coordinated_assault.remains < gcd.max",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "cooldown.coordinated_assault.remains",
|
|
["action"] = "spearhead",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! dot.serpent_sting.ticking & target.time_to_die > 12 & ( ! talent.contagious_reagents.enabled || active_dot.serpent_sting = 0 )",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "talent.contagious_reagents.enabled & active_dot.serpent_sting < active_enemies & dot.serpent_sting.remains",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.tip_of_the_spear.stack < 1",
|
|
["action"] = "kill_command",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.remains & buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "raptor_bite",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & ( ! raid_event.adds.exists || raid_event.adds.exists & raid_event.adds.in > 40 )",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["action"] = "coordinated_assault",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "wildfire_bomb",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max & ( ! buff.relentless_primal_ferocity.up || ( buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1 || focus < 30 ) )",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "active_enemies = 2",
|
|
["action"] = "explosive_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.contagious_reagents.enabled",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "kill_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
},
|
|
["sentcleave"] = {
|
|
{
|
|
["enabled"] = true,
|
|
["description"] = "SENTINEL || DEFAULT AOE ACTIONLIST",
|
|
["criteria"] = "! buff.lunar_storm_cooldown.remains",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.relentless_primal_ferocity.up & buff.tip_of_the_spear.stack < 1",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0 & cooldown.wildfire_bomb.charges_fractional > 1.7 || cooldown.wildfire_bomb.charges_fractional > 1.9 || ( talent.bombardier.enabled & cooldown.coordinated_assault.remains < 2 * gcd.max ) || talent.butchery.enabled & cooldown.butchery.remains < gcd.max",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.strike_it_rich.up & buff.strike_it_rich.remains < gcd.max",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "butchery",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.bombardier.enabled || talent.bombardier.enabled & cooldown.wildfire_bomb.charges_fractional < 1",
|
|
["action"] = "coordinated_assault",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "fury_of_the_eagle",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "( buff.tip_of_the_spear.stack = 2 || buff.tip_of_the_spear.stack = 1 )",
|
|
["action"] = "flanking_strike",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "focus + cast_regen < focus.max",
|
|
["action"] = "kill_command",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["action"] = "explosive_shot",
|
|
["enabled"] = true,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.tip_of_the_spear.stack > 0",
|
|
["action"] = "wildfire_bomb",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "buff.deathblow.remains & talent.sic_em.enabled",
|
|
["action"] = "kill_shot",
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["criteria"] = "! talent.contagious_reagents.enabled",
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
{
|
|
["enabled"] = true,
|
|
["action"] = "raptor_bite",
|
|
["cycle_targets"] = 1,
|
|
},
|
|
},
|
|
},
|
|
["version"] = 20250505,
|
|
["warnings"] = "Imported 7 action lists.\n",
|
|
["spec"] = 255,
|
|
["profile"] = "## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/hunter_survival.simc\n## Up to date with SimC: April 26 2025 - 739316d\n\nactions.precombat+=/summon_pet\nactions.precombat+=/use_item,name=imperfect_ascendancy_serum\nactions.precombat+=/hunters_mark,if=(settings.mark_any||target.is_boss)&active_dot.hunters_mark=0&target.time_to_pct_80>20\nactions.precombat+=/use_item,name=algethar_puzzle_box\n\nactions+=/muzzle\nactions+=/tranquilizing_shot\nactions+=/hunters_mark,if=(settings.mark_any||target.is_boss)&active_dot.hunters_mark=0&target.time_to_pct_80>20\nactions+=/mend_pet,if=pet.health_pct<pet_healing\nactions+=/call_action_list,name=cds\nactions+=/call_action_list,name=plst,strict=1,if=active_enemies<3&talent.howl_of_the_pack_leader\nactions+=/call_action_list,name=plcleave,strict=1,if=active_enemies>2&talent.howl_of_the_pack_leader\nactions+=/call_action_list,name=sentst,strict=1,if=active_enemies<3&!talent.howl_of_the_pack_leader\nactions+=/call_action_list,name=sentcleave,strict=1,if=active_enemies>2&!talent.howl_of_the_pack_leader\n# Use Kill Command if there's nothing else to press\nactions+=/kill_command,cycle_targets=1\nactions+=/arcane_torrent\nactions+=/bag_of_tricks\nactions+=/lights_judgment\n\n# COOLDOWNS ACTIONLIST\nactions.cds+=/harpoon,if=settings.use_harpoon&prev.kill_command\nactions.cds+=/blood_fury,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\n## actions.cds+=/invoke_external_buff,name=power_infusion,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/ancestral_call,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/fireblood,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/berserking,if=buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault||time_to_die<13\nactions.cds+=/potion,if=boss&fight_remains<25||buff.coordinated_assault.up||!talent.coordinated_assault&cooldown.spearhead.remains||!talent.spearhead&!talent.coordinated_assault\nactions.cds+=/use_item,name=imperfect_ascendancy_serum,use_off_gcd=1,if=gcd.remains>gcd.max-0.1\nactions.cds+=/use_items,if=cooldown.coordinated_assault.remains||cooldown.spearhead.remains\nactions.cds+=/aspect_of_the_eagle,if=target.distance>=6\n\n#PACK LEADER || AOE ACTIONLIST\nactions.plcleave+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.plcleave+=/raptor_bite,cycle_targets=1,if=buff.strike_it_rich.up&buff.strike_it_rich.remains<gcd||buff.hogstrider.remains&boar_charge.remains>0||buff.hogstrider.remains<gcd&buff.hogstrider.up||buff.hogstrider.remains&buff.strike_it_rich.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\nactions.plcleave+=/kill_command,cycle_targets=1,if=(buff.howl_of_the_pack_leader_wyvern.remains||buff.howl_of_the_pack_leader_boar.remains||buff.howl_of_the_pack_leader_bear.remains)\nactions.plcleave+=/flanking_strike,if=buff.tip_of_the_spear.stack=2||buff.tip_of_the_spear.stack=1\nactions.plcleave+=/butchery\nactions.plcleave+=/coordinated_assault\nactions.plcleave+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0\nactions.plcleave+=/explosive_shot\nactions.plcleave+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max||charges_fractional>1.5\nactions.plcleave+=/kill_shot,if=buff.deathblow.remains&talent.sic_em\nactions.plcleave+=/raptor_bite,cycle_targets=1\n\n# PACK LEADER || SINGLE TARGET ACTIONLIST.\nactions.plst+=/kill_command,cycle_targets=1,if=(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1)||(buff.howl_of_the_pack_leader_wyvern.remains||buff.howl_of_the_pack_leader_boar.remains||buff.howl_of_the_pack_leader_bear.remains)\nactions.plst+=/explosive_shot,if=cooldown.coordinated_assault.remains&cooldown.coordinated_assault.remains<gcd\nactions.plst+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.plst+=/flanking_strike,if=buff.tip_of_the_spear.stack>0\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+=/kill_command,if=buff.strike_it_rich.remains&buff.tip_of_the_spear.stack<1\nactions.plst+=/raptor_bite,if=buff.strike_it_rich.remains&buff.tip_of_the_spear.stack>0\nactions.plst+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.in>40)\nactions.plst+=/coordinated_assault\nactions.plst+=/wildfire_bomb\nactions.plst+=/kill_command,cycle_targets=1,if=focus+cast_regen<focus.max&(!buff.relentless_primal_ferocity.up||(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1||focus<30))\nactions.plst+=/explosive_shot,if=active_enemies=2\nactions.plst+=/raptor_bite,cycle_targets=1,if=!talent.contagious_reagents\nactions.plst+=/raptor_bite,cycle_targets=1\nactions.plst+=/kill_shot\nactions.plst+=/explosive_shot\n\n# SENTINEL || DEFAULT AOE ACTIONLIST\nactions.sentcleave+=/wildfire_bomb,if=!buff.lunar_storm_cooldown.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+=/raptor_bite,cycle_targets=1,if=buff.strike_it_rich.up&buff.strike_it_rich.remains<gcd\nactions.sentcleave+=/butchery\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_command,cycle_targets=1,if=focus+cast_regen<focus.max\nactions.sentcleave+=/explosive_shot\nactions.sentcleave+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0\nactions.sentcleave+=/kill_shot,if=buff.deathblow.remains&talent.sic_em\nactions.sentcleave+=/raptor_bite,cycle_targets=1,if=!talent.contagious_reagents\nactions.sentcleave+=/raptor_bite,cycle_targets=1\n\n#SENTINEL || DEFAULT SINGLE TARGET ACTIONLIST.\nactions.sentst=wildfire_bomb,if=!buff.lunar_storm_cooldown.remains\nactions.sentst+=/kill_command,cycle_targets=1,if=(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1)\nactions.sentst+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.sentst+=/flanking_strike,if=buff.tip_of_the_spear.stack>0\nactions.sentst+=/kill_command,if=buff.strike_it_rich.remains&buff.tip_of_the_spear.stack<1\nactions.sentst+=/mongoose_bite,if=buff.strike_it_rich.remains&buff.coordinated_assault.up\nactions.sentst+=/wildfire_bomb,if=(buff.lunar_storm_cooldown.remains>full_recharge_time-gcd)&(buff.tip_of_the_spear.stack>0&cooldown.wildfire_bomb.charges_fractional>1.7||cooldown.wildfire_bomb.charges_fractional>1.9)||(talent.bombardier&cooldown.coordinated_assault.remains<2*gcd)\nactions.sentst+=/butchery\nactions.sentst+=/coordinated_assault,if=!talent.bombardier||talent.bombardier&cooldown.wildfire_bomb.charges_fractional<1\nactions.sentst+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0\nactions.sentst+=/kill_command,cycle_targets=1,if=buff.tip_of_the_spear.stack<1&cooldown.flanking_strike.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||focus<30)))\nactions.sentst+=/mongoose_bite,if=buff.mongoose_fury.remains<gcd&buff.mongoose_fury.stack>0\nactions.sentst+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0&buff.lunar_storm_cooldown.remains>full_recharge_time&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.in>15)\nactions.sentst+=/mongoose_bite,if=buff.mongoose_fury.remains\nactions.sentst+=/explosive_shot\nactions.sentst+=/kill_shot\nactions.sentst+=/raptor_bite,cycle_targets=1,if=!talent.contagious_reagents\nactions.sentst+=/raptor_bite,cycle_targets=1\n\n# SENTINEL || DEFAULT SINGLE TARGET ACTIONLIST.\nactions.sentst+=/wildfire_bomb,if=!buff.lunar_storm_cooldown.remains\nactions.sentst+=/kill_command,cycle_targets=1,if=(buff.relentless_primal_ferocity.up&buff.tip_of_the_spear.stack<1)\nactions.sentst+=/spearhead,if=cooldown.coordinated_assault.remains\nactions.sentst+=/flanking_strike,if=buff.tip_of_the_spear.stack>0\nactions.sentst+=/kill_command,if=buff.strike_it_rich.remains&buff.tip_of_the_spear.stack<1\nactions.sentst+=/mongoose_bite,if=buff.strike_it_rich.remains&buff.coordinated_assault.up\nactions.sentst+=/wildfire_bomb,if=(buff.lunar_storm_cooldown.remains>full_recharge_time-gcd)&(buff.tip_of_the_spear.stack>0&cooldown.wildfire_bomb.charges_fractional>1.7||cooldown.wildfire_bomb.charges_fractional>1.9)||(talent.bombardier&cooldown.coordinated_assault.remains<2*gcd)\nactions.sentst+=/butchery\nactions.sentst+=/coordinated_assault,if=!talent.bombardier||talent.bombardier&cooldown.wildfire_bomb.charges_fractional<1\nactions.sentst+=/fury_of_the_eagle,if=buff.tip_of_the_spear.stack>0\nactions.sentst+=/kill_command,cycle_targets=1,if=buff.tip_of_the_spear.stack<1&cooldown.flanking_strike.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||focus<30)))\nactions.sentst+=/mongoose_bite,if=buff.mongoose_fury.remains<gcd&buff.mongoose_fury.stack>0\nactions.sentst+=/wildfire_bomb,if=buff.tip_of_the_spear.stack>0&buff.lunar_storm_cooldown.remains>full_recharge_time&(!raid_event.adds.exists||raid_event.adds.exists&raid_event.adds.in>15)\nactions.sentst+=/mongoose_bite,if=buff.mongoose_fury.remains\nactions.sentst+=/explosive_shot\nactions.sentst+=/kill_shot\nactions.sentst+=/raptor_bite,cycle_targets=1,if=!talent.contagious_reagents\nactions.sentst+=/raptor_bite,cycle_targets=1",
|
|
},
|
|
},
|
|
["iconStore"] = {
|
|
["minimapPos"] = 267.4870703248537,
|
|
},
|
|
["toggles"] = {
|
|
["essences"] = {
|
|
["value"] = false,
|
|
},
|
|
},
|
|
["notifications"] = {
|
|
["y"] = 479.1666564941406,
|
|
["x"] = -25.0001220703125,
|
|
},
|
|
},
|
|
},
|
|
}
|