warlock="T22_Warlock_Destruction"
source=default
spec=destruction
level=120
race=troll
role=spell
position=ranged_back
talents=1103023

# Default consumables
potion=unbridled_fury
flask=greater_flask_of_endless_fathoms
food=baked_port_tato
augmentation=battle_scarred

# This default action priority list is automatically created based on your character.
# It is a attempt to provide you with a action list that is both simple and practicable,
# while resulting in a meaningful and good simulation. It may not result in the absolutely highest possible dps.
# Feel free to edit, adapt and improve it to your own needs.
# SimulationCraft is always looking for updates and improvements to the default action lists.

# Executed before combat begins. Accepts non-harmful actions only.
actions.precombat=flask
actions.precombat+=/food
actions.precombat+=/augmentation
actions.precombat+=/summon_pet
actions.precombat+=/grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice.enabled
actions.precombat+=/snapshot_stats
actions.precombat+=/potion
actions.precombat+=/soul_fire
actions.precombat+=/incinerate,if=!talent.soul_fire.enabled

# Executed every time the actor is available.
# Havoc uses a special priority list on most multitarget scenarios, but the target threshold can vary depending on talents
actions=call_action_list,name=havoc,if=havoc_active&active_enemies<5-talent.inferno.enabled+(talent.inferno.enabled&talent.internal_combustion.enabled)
actions+=/cataclysm,if=!(pet.infernal.active&dot.immolate.remains+1>pet.infernal.remains)|spell_targets.cataclysm>1|!talent.grimoire_of_supremacy.enabled
# Two target scenarios are handled like single target with Havoc weaved in. Starting with three targets, a specialized AoE priority is required
actions+=/call_action_list,name=aoe,if=active_enemies>2
# Immolate should never fall off the primary target. If Cataclysm will refresh Immolate before it expires, there's no reason to waste time casting it
actions+=/immolate,cycle_targets=1,if=refreshable&(!talent.cataclysm.enabled|cooldown.cataclysm.remains>remains)
# #With Internal Combustion talented, it's possible Immolate will need to be refreshed sooner than the remaining duration says, if there's already a Chaos Bolt on the way to the target.
actions+=/immolate,if=talent.internal_combustion.enabled&action.chaos_bolt.in_flight&remains<duration*0.5
# The general rule of thumb for talents is to maximize the number of uses of each
actions+=/call_action_list,name=cds
actions+=/focused_azerite_beam,if=!pet.infernal.active|!talent.grimoire_of_supremacy.enabled
actions+=/the_unbound_force,if=buff.reckless_force.react
actions+=/purifying_blast
actions+=/concentrated_flame,if=!dot.concentrated_flame_burn.remains&!action.concentrated_flame.in_flight
actions+=/reaping_flames
actions+=/channel_demonfire
# The if condition here always applies Havoc to something other than the primary target
actions+=/havoc,cycle_targets=1,if=!(target=self.target)&(dot.immolate.remains>dot.immolate.duration*0.5|!talent.internal_combustion.enabled)&(!cooldown.summon_infernal.ready|!talent.grimoire_of_supremacy.enabled|talent.grimoire_of_supremacy.enabled&pet.infernal.remains<=10)
actions+=/call_action_list,name=gosup_infernal,if=talent.grimoire_of_supremacy.enabled&pet.infernal.active
# Soul Fire should be used on cooldown, it does not appear worth saving for generating Soul Shards during cooldowns
actions+=/soul_fire
# It's worth stocking up on Soul Shards before a major cooldown usage
actions+=/variable,name=pool_soul_shards,value=active_enemies>1&cooldown.havoc.remains<=10|cooldown.summon_infernal.remains<=15&(talent.grimoire_of_supremacy.enabled|talent.dark_soul_instability.enabled&cooldown.dark_soul_instability.remains<=15)|talent.dark_soul_instability.enabled&cooldown.dark_soul_instability.remains<=15&(cooldown.summon_infernal.remains>target.time_to_die|cooldown.summon_infernal.remains+cooldown.summon_infernal.duration>target.time_to_die)
# Conflagrate should only be used to set up Chaos Bolts. Flashover lets Conflagrate be used earlier to set up an Incinerate before CB. If a major cooldown is coming up, save charges for it
actions+=/conflagrate,if=buff.backdraft.down&soul_shard>=1.5-0.3*talent.flashover.enabled&!variable.pool_soul_shards
# Shadowburn is used as a discount Conflagrate to generate shards if you don't have enough for a Chaos Bolt. The same rules about saving it for major cooldowns applies
actions+=/shadowburn,if=soul_shard<2&(!variable.pool_soul_shards|charges>1)
# Chaos Bolt has several possible use conditions. Crashing Chaos, Grimoire of Supremacy, and Dark Soul: Instability all favor casting as many CBs as possible when any of them are active
actions+=/chaos_bolt,if=(talent.grimoire_of_supremacy.enabled|azerite.crashing_chaos.enabled)&pet.infernal.active|buff.dark_soul_instability.up|buff.reckless_force.react&buff.reckless_force.remains>cast_time
# If Soul Shards are not being pooled and Eradication is not talented, just spend CBs as they become available
actions+=/chaos_bolt,if=buff.backdraft.up&!variable.pool_soul_shards&!talent.eradication.enabled
# With Eradication, it's beneficial to maximize the uptime on the debuff. However, it's still better to use Chaos Bolt immediately if Backdraft is up
actions+=/chaos_bolt,if=!variable.pool_soul_shards&talent.eradication.enabled&(debuff.eradication.remains<cast_time|buff.backdraft.up)
# Even when saving, do not overcap on Soul Shards
actions+=/chaos_bolt,if=(soul_shard>=4.5-0.2*active_enemies)&(!talent.grimoire_of_supremacy.enabled|cooldown.summon_infernal.remains>7)
# Don't overcap on charges of Conflagrate
actions+=/conflagrate,if=charges>1
actions+=/incinerate

# Rain of Fire is typically the highest priority action, but certain situations favor using Chaos Bolt instead
actions.aoe=rain_of_fire,if=pet.infernal.active&(buff.crashing_chaos.down|!talent.grimoire_of_supremacy.enabled)&(!cooldown.havoc.ready|active_enemies>3)
# Channel Demonfire only needs one Immolate active during its cast for AoE. Primary target is used here for simplicity
actions.aoe+=/channel_demonfire,if=dot.immolate.remains>cast_time
# Similar to single target, there is no need to refresh Immolates if Cataclysm can do it instead
actions.aoe+=/immolate,cycle_targets=1,if=remains<5&(!talent.cataclysm.enabled|cooldown.cataclysm.remains>remains)
# Rules for cooldowns do not change for AoE, so call the same list as on single target
actions.aoe+=/call_action_list,name=cds
# Three targets is an in-between case that gives a slight benefit to higher priority Havoc
actions.aoe+=/havoc,cycle_targets=1,if=!(target=self.target)&active_enemies<4
# Rain of Fire will start to dominate on heavy AoE, but some significant Chaos Bolt buffs will still give higher damage output on occasion
actions.aoe+=/chaos_bolt,if=talent.grimoire_of_supremacy.enabled&pet.infernal.active&(havoc_active|talent.cataclysm.enabled|talent.inferno.enabled&active_enemies<4)
# Barring any exceptions, Rain of Fire will be used as much as possible, since multiple copies of it can stack
actions.aoe+=/rain_of_fire
actions.aoe+=/focused_azerite_beam
actions.aoe+=/purifying_blast
# Even if the Havoc priority list won't be used, Havoc is pretty much free damage and resources and should be used almost on cooldown
actions.aoe+=/havoc,cycle_targets=1,if=!(target=self.target)&(!talent.grimoire_of_supremacy.enabled|!talent.inferno.enabled|talent.grimoire_of_supremacy.enabled&pet.infernal.remains<=10)
# Use Fire and Brimstone if Backdraft is active, as long as it will not overcap on Soul Shards
actions.aoe+=/incinerate,if=talent.fire_and_brimstone.enabled&buff.backdraft.up&soul_shard<5-0.2*active_enemies
# Other Soul Shard generating abilities are good filler if not using Fire and Brimstone
actions.aoe+=/soul_fire
actions.aoe+=/conflagrate,if=buff.backdraft.down
actions.aoe+=/shadowburn,if=!talent.fire_and_brimstone.enabled
actions.aoe+=/concentrated_flame,if=!dot.concentrated_flame_burn.remains&!action.concentrated_flame.in_flight&active_enemies<5
# With Fire and Brimstone, Incinerate will be a strong filler. It's placed here for all talents to prevent accidentally using the single target rotation list
actions.aoe+=/incinerate

# Refresh immolate before entering a GoSup Infernal to optimize gcds.
actions.cds=immolate,if=talent.grimoire_of_supremacy.enabled&remains<8&cooldown.summon_infernal.remains<4.5
# Use conflagrate just before GoSup Infernal to optimize gcds.
actions.cds+=/conflagrate,if=talent.grimoire_of_supremacy.enabled&cooldown.summon_infernal.remains<4.5&!buff.backdraft.up&soul_shard<4.3
actions.cds+=/use_item,name=azsharas_font_of_power,if=cooldown.summon_infernal.up|cooldown.summon_infernal.remains<=4
actions.cds+=/summon_infernal
actions.cds+=/guardian_of_azeroth,if=pet.infernal.active
actions.cds+=/dark_soul_instability,if=pet.infernal.active&(pet.infernal.remains<20.5|pet.infernal.remains<22&soul_shard>=3.6|!talent.grimoire_of_supremacy.enabled)
actions.cds+=/worldvein_resonance,if=pet.infernal.active&(pet.infernal.remains<18.5|pet.infernal.remains<20&soul_shard>=3.6|!talent.grimoire_of_supremacy.enabled)
actions.cds+=/memory_of_lucid_dreams,if=pet.infernal.active&(pet.infernal.remains<15.5|soul_shard<3.5&(buff.dark_soul_instability.up|!talent.grimoire_of_supremacy.enabled&dot.immolate.remains>12))
# If DSI is not ready but you can get more than one infernal in before the end of the fight, summon the Infernal now
actions.cds+=/summon_infernal,if=target.time_to_die>cooldown.summon_infernal.duration+30
actions.cds+=/guardian_of_azeroth,if=time>30&target.time_to_die>cooldown.guardian_of_azeroth.duration+30
# If the fight will end before DSI is back up, summon the Infernal
actions.cds+=/summon_infernal,if=talent.dark_soul_instability.enabled&cooldown.dark_soul_instability.remains>target.time_to_die
actions.cds+=/guardian_of_azeroth,if=cooldown.summon_infernal.remains>target.time_to_die
# If the fight will end before infernal is back up, use DSI
actions.cds+=/dark_soul_instability,if=cooldown.summon_infernal.remains>target.time_to_die&pet.infernal.remains<20.5
actions.cds+=/worldvein_resonance,if=cooldown.summon_infernal.remains>target.time_to_die&pet.infernal.remains<18.5
actions.cds+=/memory_of_lucid_dreams,if=cooldown.summon_infernal.remains>target.time_to_die&(pet.infernal.remains<15.5|buff.dark_soul_instability.up&soul_shard<3)
# If the fight is about to end, use CDs such that they get as much time up as possible
actions.cds+=/summon_infernal,if=target.time_to_die<30
actions.cds+=/guardian_of_azeroth,if=target.time_to_die<30
actions.cds+=/dark_soul_instability,if=target.time_to_die<21&target.time_to_die>4
actions.cds+=/worldvein_resonance,if=target.time_to_die<19&target.time_to_die>4
actions.cds+=/memory_of_lucid_dreams,if=target.time_to_die<16&target.time_to_die>6
actions.cds+=/blood_of_the_enemy
actions.cds+=/worldvein_resonance,if=cooldown.summon_infernal.remains>=60-12&!pet.infernal.active
actions.cds+=/ripple_in_space
actions.cds+=/potion,if=pet.infernal.active|target.time_to_die<30
actions.cds+=/berserking,if=pet.infernal.active&(!talent.grimoire_of_supremacy.enabled|(!essence.memory_of_lucid_dreams.major|buff.memory_of_lucid_dreams.remains)&(!talent.dark_soul_instability.enabled|buff.dark_soul_instability.remains))|target.time_to_die<=15
actions.cds+=/blood_fury,if=pet.infernal.active&(!talent.grimoire_of_supremacy.enabled|(!essence.memory_of_lucid_dreams.major|buff.memory_of_lucid_dreams.remains)&(!talent.dark_soul_instability.enabled|buff.dark_soul_instability.remains))|target.time_to_die<=15
actions.cds+=/fireblood,if=pet.infernal.active&(!talent.grimoire_of_supremacy.enabled|(!essence.memory_of_lucid_dreams.major|buff.memory_of_lucid_dreams.remains)&(!talent.dark_soul_instability.enabled|buff.dark_soul_instability.remains))|target.time_to_die<=15
actions.cds+=/use_items,if=pet.infernal.active&(!talent.grimoire_of_supremacy.enabled|pet.infernal.remains<=20)|target.time_to_die<=20
actions.cds+=/use_item,name=pocketsized_computation_device,if=dot.immolate.remains>=5&(cooldown.summon_infernal.remains>=20|target.time_to_die<30)
actions.cds+=/use_item,name=rotcrusted_voodoo_doll,if=dot.immolate.remains>=5&(cooldown.summon_infernal.remains>=20|target.time_to_die<30)
actions.cds+=/use_item,name=shiver_venom_relic,if=dot.immolate.remains>=5&(cooldown.summon_infernal.remains>=20|target.time_to_die<30)
actions.cds+=/use_item,name=aquipotent_nautilus,if=dot.immolate.remains>=5&(cooldown.summon_infernal.remains>=20|target.time_to_die<30)
actions.cds+=/use_item,name=tidestorm_codex,if=dot.immolate.remains>=5&(cooldown.summon_infernal.remains>=20|target.time_to_die<30)
actions.cds+=/use_item,name=vial_of_storms,if=dot.immolate.remains>=5&(cooldown.summon_infernal.remains>=20|target.time_to_die<30)

# Subapl designed to optimize the usage of backdraft during GoSup Infernals, and prevent capping with MoLD.
actions.gosup_infernal=rain_of_fire,if=soul_shard=5&!buff.backdraft.up&buff.memory_of_lucid_dreams.up&buff.grimoire_of_supremacy.stack<=10
actions.gosup_infernal+=/chaos_bolt,if=buff.backdraft.up
actions.gosup_infernal+=/chaos_bolt,if=soul_shard>=4.2-buff.memory_of_lucid_dreams.up
actions.gosup_infernal+=/chaos_bolt,if=!cooldown.conflagrate.up
actions.gosup_infernal+=/chaos_bolt,if=cast_time<pet.infernal.remains&pet.infernal.remains<cast_time+gcd
actions.gosup_infernal+=/conflagrate,if=buff.backdraft.down&buff.memory_of_lucid_dreams.up&soul_shard>=1.3
actions.gosup_infernal+=/conflagrate,if=buff.backdraft.down&!buff.memory_of_lucid_dreams.up&(soul_shard>=2.8|charges_fractional>1.9&soul_shard>=1.3)
actions.gosup_infernal+=/conflagrate,if=pet.infernal.remains<5
actions.gosup_infernal+=/conflagrate,if=charges>1
actions.gosup_infernal+=/soul_fire
actions.gosup_infernal+=/shadowburn
actions.gosup_infernal+=/incinerate

actions.havoc=conflagrate,if=buff.backdraft.down&soul_shard>=1&soul_shard<=4
actions.havoc+=/immolate,if=talent.internal_combustion.enabled&remains<duration*0.5|!talent.internal_combustion.enabled&refreshable
actions.havoc+=/chaos_bolt,if=cast_time<havoc_remains
actions.havoc+=/soul_fire
actions.havoc+=/shadowburn,if=active_enemies<3|!talent.fire_and_brimstone.enabled
actions.havoc+=/incinerate,if=cast_time<havoc_remains

head=horrific_amalgams_hood,id=160616,bonus_id=4824/1507/4775,azerite_powers=483/30/13
neck=heart_of_azeroth,id=158075,bonus_id=4929/4930/4936/1536,azerite_level=33
shoulders=mantle_of_contained_corruption,id=160613,bonus_id=4824/1507/4775,azerite_powers=444/459/13
back=cloak_of_rippling_whispers,id=160642,bonus_id=4800/1507
chest=robes_of_the_unraveler,id=160614,bonus_id=4824/1507/4775,azerite_powers=432/30/13
wrists=voidlashed_wristband,id=160617,bonus_id=4800/1507
hands=mutagenic_protofluid_handwraps,id=160715,bonus_id=4800/1507
waist=cord_of_septic_envelopment,id=160727,bonus_id=4800/1507
legs=leggings_of_lingering_infestation,id=160615,bonus_id=4800/1507
feet=volatile_walkers,id=160714,bonus_id=4800/1507
finger1=rotscour_ring,id=160645,bonus_id=4800/1507,enchant=pact_of_haste
finger2=band_of_certain_annihilation,id=160646,bonus_id=4800/1507,enchant=pact_of_haste
trinket1=ignition_mages_fuse,id=159615,bonus_id=1542/4779
trinket2=vigilants_bloodshaper,id=160651,bonus_id=4800/1507
main_hand=tusk_of_the_reborn_prophet,id=160691,bonus_id=4800/1507,enchant=quick_navigation
off_hand=codex_of_imminent_ruin,id=160696,bonus_id=4800/1507

# Gear Summary
# gear_ilvl=385.25
# gear_stamina=7205
# gear_intellect=5476
# gear_crit_rating=996
# gear_haste_rating=1131
# gear_mastery_rating=697
# gear_versatility_rating=183
# gear_armor=1165
default_pet=imp
