From 9799fff92f9887a5bceb7651b6a1436bb219ca6e Mon Sep 17 00:00:00 2001 From: SzynaWoW <71667415+SzynaWoW@users.noreply.github.com> Date: Fri, 28 Aug 2026 13:40:45 +0200 Subject: [PATCH 1/9] [Destro] Update AOE APL --- engine/class_modules/apl/warlock.cpp | 52 +++++++++++++++++++--------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/engine/class_modules/apl/warlock.cpp b/engine/class_modules/apl/warlock.cpp index 7d95db80376..64825cbd4d9 100644 --- a/engine/class_modules/apl/warlock.cpp +++ b/engine/class_modules/apl/warlock.cpp @@ -28,7 +28,7 @@ namespace warlock_apl{ switch ( p->specialization() ) { - case WARLOCK_AFFLICTION: lvl90_flask = "flask_of_the_shattered_sun_2"; break; + case WARLOCK_AFFLICTION: lvl90_flask = "flask_of_the_blood_knights_2"; break; case WARLOCK_DEMONOLOGY: lvl90_flask = "flask_of_the_shattered_sun_2"; break; case WARLOCK_DESTRUCTION: lvl90_flask = "flask_of_the_magisters_2"; break; default: break; @@ -81,7 +81,6 @@ void affliction( player_t* p ) precombat->add_action( "grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice" ); precombat->add_action( "seed_of_corruption,if=(hero_tree.soul_harvester&active_enemies>1)|active_enemies>2" ); precombat->add_action( "haunt,if=active_enemies<2|(hero_tree.hellcaller&active_enemies<3)" ); - precombat->add_action( "potion,if=potion.liquid_luster" ); default_->add_action( "call_action_list,name=variables" ); default_->add_action( "call_action_list,name=end_of_fight" ); @@ -101,10 +100,10 @@ void affliction( player_t* p ) hellcaller->add_action( "call_action_list,name=HC_cleave,if=active_enemies=2" ); hellcaller->add_action( "call_action_list,name=HC_aoe,if=active_enemies>2" ); - items->add_action( "use_item,name=stormbound_emblem_of_dazar,if=cooldown.summon_darkglare.remains<=4&dot.agony.remains&(dot.corruption.remains|dot.wither.remains)&cooldown.dark_harvest.remains>1" ); + items->add_action( "use_item,name=stormbound_emblem_of_dazar,if=cooldown.summon_darkglare.remains<=2&dot.agony.remains&(dot.corruption.remains|dot.wither.remains)&cooldown.dark_harvest.remains>1" ); items->add_action( "use_item,name=galactic_gladiators_badge_of_ferocity,if=(buff.malevolence.up|pet.darkglare.active)|fight_remains<20" ); - items->add_action( "use_item,name=hex_lords_dooming_idol,if=pet.darkglare.active|buff.hex_lords_doom.stack>19|fight_remains<=30" ); items->add_action( "use_items,if=(buff.malevolence.up|pet.darkglare.active)|fight_remains<20" ); + items->add_action( "use_item,name=hex_lords_dooming_idol,if=pet.darkglare.active|buff.hex_lords_doom.stack>19|fight_remains<=30" ); items->add_action( "use_item,use_off_gcd=1,slot=main_hand" ); ogcd->add_action( "potion,use_off_gcd=1,if=variable.cds_active|fight_remains<32" ); @@ -128,21 +127,19 @@ void affliction( player_t* p ) SH_aoe->add_action( "seed_of_corruption,if=(!dot.corruption.ticking|dot.corruption.refreshable)&!dot.seed_of_corruption.ticking&!prev.seed_of_corruption&!action.seed_of_corruption.in_flight" ); SH_aoe->add_action( "dark_harvest" ); SH_aoe->add_action( "seed_of_corruption,target_if=!dot.unstable_affliction.ticking&prev.dark_harvest,if=set_bonus.midnight_season_2_4pc&active_enemies<=5" ); - SH_aoe->add_action( "agony,target_if=min:remains,if=active_dot.agony<12&remains<5" ); + SH_aoe->add_action( "agony,target_if=min:remains,if=active_dot.agony<10&remains<5" ); SH_aoe->add_action( "summon_darkglare" ); - SH_aoe->add_action( "malefic_grasp,if=buff.nightfall.react>1&active_enemies<=6" ); - SH_aoe->add_action( "shadow_bolt,if=buff.nightfall.react>1&active_enemies<=7" ); - SH_aoe->add_action( "seed_of_corruption,if=talent.sow_the_seeds|active_enemies>5" ); - SH_aoe->add_action( "unstable_affliction" ); + SH_aoe->add_action( "seed_of_corruption" ); SH_aoe->add_action( "agony,target_if=min:remains,if=remainsadd_action( "malefic_grasp,if=pet.darkglare.remainsadd_action( "haunt" ); SH_cleave->add_action( "seed_of_corruption,if=(!dot.corruption.ticking|dot.corruption.refreshable)&!dot.seed_of_corruption.ticking&!prev.seed_of_corruption&!action.seed_of_corruption.in_flight" ); - SH_cleave->add_action( "agony,target_if=refreshable" ); SH_cleave->add_action( "dark_harvest" ); SH_cleave->add_action( "unstable_affliction,cycle_targets=1,if=!ticking&prev.dark_harvest" ); + SH_cleave->add_action( "seed_of_corruption,if=talent.sow_the_seeds" ); SH_cleave->add_action( "unstable_affliction" ); + SH_cleave->add_action( "agony,target_if=refreshable" ); SH_cleave->add_action( "summon_darkglare" ); SH_cleave->add_action( "malefic_grasp,if=buff.nightfall.react>1|pet.darkglare.remainsadd_action( "drain_soul,if=buff.nightfall.react>1" ); @@ -162,7 +159,7 @@ void affliction( player_t* p ) HC_aoe->add_action( "haunt" ); HC_aoe->add_action( "seed_of_corruption,if=(!dot.wither.ticking|dot.wither.refreshable)&!dot.seed_of_corruption.ticking&!prev.seed_of_corruption&!action.seed_of_corruption.in_flight" ); HC_aoe->add_action( "dark_harvest" ); - HC_aoe->add_action( "agony,target_if=min:remains,if=active_dot.agony<14&remains<5" ); + HC_aoe->add_action( "agony,target_if=min:remains,if=active_dot.agony<(8+(2*talent.sow_the_seeds))&remains<5" ); HC_aoe->add_action( "summon_darkglare" ); HC_aoe->add_action( "malevolence" ); HC_aoe->add_action( "seed_of_corruption,if=talent.sow_the_seeds|active_enemies>5" ); @@ -188,8 +185,6 @@ void affliction( player_t* p ) variables->add_action( "variable,name=cds_active,op=set,value=!talent.summon_darkglare|pet.darkglare.remains" ); variables->add_action( "variable,name=darkglare_active,op=set,value=pet.darkglare.active|(cooldown.summon_darkglare.duration-cooldown.summon_darkglare.remains)<20" ); variables->add_action( "cycling_variable,name=min_agony,op=min,value=dot.agony.remains+(99*!dot.agony.remains)" ); - variables->add_action( "variable,name=malevolence_from_cast,value=0,op=set,if=buff.malevolence.up=0" ); - variables->add_action( "variable,name=malevolence_from_cast,value=1,op=set,if=prev_gcd.1.malevolence" ); } //affliction_apl_end @@ -299,6 +294,27 @@ void destruction( player_t* p ) precombat->add_action( "immolate,if=active_enemies>=2&talent.roaring_blaze" ); precombat->add_action( "incinerate" ); + + default_->add_action( "call_action_list,name=variables" ); + default_->add_action( "call_action_list,name=ogcd" ); + default_->add_action( "call_action_list,name=items" ); + default_->add_action( "call_action_list,name=aoe_hc,if=active_enemies>=2&talent.wither" ); + default_->add_action( "call_action_list,name=aoe_dia,if=active_enemies>=2&talent.diabolic_ritual" ); + default_->add_action( "soul_fire,if=soul_shard<=4" ); + default_->add_action( "chaos_bolt,if=talent.diabolic_ritual&(demonic_art|(variable.ritual_length20" ); + default_->add_action( "conflagrate,if=soul_shard<=4.2&buff.backdraft.stack<1" ); + default_->add_action( "summon_infernal" ); + default_->add_action( "malevolence" ); + default_->add_action( "incinerate,if=buff.chaotic_inferno_buff.up&soul_shard<=4.6" ); + default_->add_action( "shadowburn,if=((!demonic_art&(variable.ritual_length>2|talent.wither))|target.health.pct<=20)&(buff.fiendish_cruelty.up|talent.conflagration_of_chaos)&(!talent.wither|soul_shard>=4|buff.malevolence.up|pet.infernal.active|fight_remains<=15)" ); + default_->add_action( "wither,if=(((dot.wither.remains-5*(action.chaos_bolt.in_flight&talent.internal_combustion))(dot.wither.remains-5*talent.internal_combustion))&(!talent.cataclysm|(cooldown.cataclysm.remains+action.cataclysm.cast_time)>dot.wither.remains)&target.time_to_die>8" ); + default_->add_action( "immolate,if=(((dot.immolate.remains-5*(action.chaos_bolt.in_flight&talent.internal_combustion))(dot.immolate.remains-5*talent.internal_combustion))&(!talent.cataclysm|cooldown.cataclysm.remains>dot.immolate.remains)&target.time_to_die>8" ); + default_->add_action( "ruination" ); + default_->add_action( "cataclysm,if=talent.lake_of_fire" ); + default_->add_action( "chaos_bolt,if=(talent.wither&(soul_shard>=4|buff.malevolence.up|pet.infernal.active|fight_remains<=15))|(talent.diabolic_ritual&variable.ritual_length>4)" ); + default_->add_action( "infernal_bolt,if=soul_shard<=3" ); + default_->add_action( "incinerate" ); + default_->add_action( "call_action_list,name=variables" ); default_->add_action( "call_action_list,name=ogcd" ); default_->add_action( "call_action_list,name=items" ); @@ -324,7 +340,7 @@ void destruction( player_t* p ) aoe_hc->add_action( "malevolence" ); aoe_hc->add_action( "rain_of_fire,if=(soul_shard>=(4.0-0.1*(active_dot.wither)))&active_enemies>=4" ); aoe_hc->add_action( "conflagrate,target_if=max:(dot.wither.remains-99*debuff.havoc.remains),if=dot_refreshable_count.wither>0&!dot.wither.refreshable" ); - aoe_hc->add_action( "shadowburn,target_if=min:(time_to_die+999*debuff.havoc.remains),if=buff.fiendish_cruelty.up|(talent.conflagration_of_chaos&(active_enemies<=(5-talent.destructive_rapidity)))" ); + aoe_hc->add_action( "shadowburn,target_if=min:(time_to_die+999*debuff.havoc.remains),if=(buff.fiendish_cruelty.up&active_enemies<=4)|(talent.conflagration_of_chaos&(active_enemies<=(5+buff.fiendish_cruelty.up)))" ); aoe_hc->add_action( "cataclysm,if=raid_event.adds.in>15" ); aoe_hc->add_action( "havoc,target_if=min:((-target.time_to_die)8&(cooldown.malevolence.remains>15|!talent.malevolence)|time<5" ); aoe_hc->add_action( "rain_of_fire,if=active_enemies>=4" ); @@ -336,10 +352,12 @@ void destruction( player_t* p ) aoe_hc->add_action( "incinerate" ); aoe_dia->add_action( "summon_infernal" ); - aoe_dia->add_action( "chaos_bolt,if=talent.diabolic_ritual&(demonic_art|(variable.ritual_lengthadd_action( "shadowburn,if=demonic_art" ); + aoe_dia->add_action( "chaos_bolt,if=demonic_art" ); + aoe_dia->add_action( "(demonic_art|(variable.ritual_lengthadd_action( "rain_of_fire,if=((soul_shard>=(3.5-0.1*(active_dot.immolate)))|buff.alythesss_ire.up)&active_enemies>=3" ); aoe_dia->add_action( "conflagrate,target_if=max:(dot.immolate.remains-99*debuff.havoc.remains),if=dot_refreshable_count.immolate>0&!dot.immolate.refreshable" ); - aoe_dia->add_action( "shadowburn,target_if=min:(time_to_die+999*debuff.havoc.remains),if=(active_enemies<=(4-talent.destructive_rapidity+2*buff.fiendish_cruelty.up))|(talent.conflagration_of_chaos&active_enemies<=(6+2*buff.fiendish_cruelty.up))" ); + aoe_dia->add_action( "shadowburn,target_if=min:(time_to_die+999*debuff.havoc.remains),if=(!talent.destructive_rapidity&active_enemies<=(2+2*buff.fiendish_cruelty.up))|(talent.conflagration_of_chaos&active_enemies<=(6-talent.destructive_rapidity+2*buff.fiendish_cruelty.up))" ); aoe_dia->add_action( "ruination" ); aoe_dia->add_action( "cataclysm,if=raid_event.adds.in>15|talent.lake_of_fire" ); aoe_dia->add_action( "havoc,target_if=min:((-target.time_to_die)8|time<5" ); @@ -349,6 +367,7 @@ void destruction( player_t* p ) aoe_dia->add_action( "immolate,target_if=min:dot.immolate.remains+99*debuff.havoc.remains,if=dot.immolate.refreshable&(!talent.cataclysm.enabled|cooldown.cataclysm.remains>dot.immolate.remains)&active_dot.immolate<=5&!talent.cataclysm&target.time_to_die>18" ); aoe_dia->add_action( "conflagrate,target_if=max:(dot.immolate.remains-99*debuff.havoc.remains),if=buff.backdraft.stack<2|!talent.backdraft" ); aoe_dia->add_action( "incinerate" ); + items->add_action( "use_item,slot=trinket1,if=(variable.infernal_active|!talent.summon_infernal|variable.trinket_1_will_lose_cast)&(variable.trinket_priority=1|!trinket.2.has_cooldown|(trinket.2.cooldown.remains|variable.trinket_priority=2&cooldown.summon_infernal.remains>20&!variable.infernal_active&trinket.2.cooldown.remains=fight_remains)" ); items->add_action( "use_item,slot=trinket2,if=(variable.infernal_active|!talent.summon_infernal|variable.trinket_2_will_lose_cast)&(variable.trinket_priority=2|!trinket.1.has_cooldown|(trinket.1.cooldown.remains|variable.trinket_priority=1&cooldown.summon_infernal.remains>20&!variable.infernal_active&trinket.1.cooldown.remains=fight_remains)" ); @@ -363,6 +382,7 @@ void destruction( player_t* p ) ogcd->add_action( "fireblood,if=variable.infernal_active|!talent.summon_infernal|(fight_remainscooldown.fireblood.duration)|fight_remainsadd_action( "ancestral_call,if=variable.infernal_active|!talent.summon_infernal|(fight_remains<(cooldown.summon_infernal.remains_expected+cooldown.berserking.duration)&(fight_remains>cooldown.berserking.duration))|fight_remainsadd_action( "variable,name=infernal_active,op=set,value=pet.infernal.active|(cooldown.summon_infernal.duration-cooldown.summon_infernal.remains)<20" ); variables->add_action( "variable,name=ritual_length,value=buff.diabolic_ritual_mother_of_chaos.remains+buff.diabolic_ritual_overlord.remains+buff.diabolic_ritual_pit_lord.remains,default=0,op=set" ); variables->add_action( "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" ); From 768999109b38b0bd76b3b2c0ab13c1d4a6bab42a Mon Sep 17 00:00:00 2001 From: SzynaWoW <71667415+SzynaWoW@users.noreply.github.com> Date: Wed, 9 Sep 2026 03:22:10 +0200 Subject: [PATCH 2/9] [Warlock] Update Destro and Demo generators --- .../MID2/MID2_Generate_Warlock.simc | 127 +++++++++--------- 1 file changed, 66 insertions(+), 61 deletions(-) diff --git a/profiles/generators/MID2/MID2_Generate_Warlock.simc b/profiles/generators/MID2/MID2_Generate_Warlock.simc index fdf9951063e..53152e52a51 100644 --- a/profiles/generators/MID2/MID2_Generate_Warlock.simc +++ b/profiles/generators/MID2/MID2_Generate_Warlock.simc @@ -68,54 +68,59 @@ role=spell position=ranged_back spec=demonology talents=CoQAAAAAAAAAAAAAAAAAAAAAAwMzMzoZjhZmxsMAAAAAAAjtlBGwAmhtQGbmhZ2mlZmZMDAYMzMzAMzMmxMDAAwMzMzMjZYZAYA -omnium_talents=136822:1/136816:1/136817:1/136821:1/136814:1 +omnium_talents=136822:1/136816:1/136817:1/136815:1/136814:1 flask=flask_of_the_shattered_sun_2 -potion=potion_of_recklessness_2 +potion=liquid_luster_2 -head=venomkeepers_horrific_cowl,id=271874,enchant_id=7961,gem_id=240983,bonus_id=13846/40/13696/13663/13335/13848/13695,content_tuning=883 -neck=aqirbane_reliquary,id=268265,gem_id=240906/240906,bonus_id=13708/13668/40/13335/13848,content_tuning=883 -shoulder=spires_of_the_damned_necrolyte,id=271544,enchant_id=8001,bonus_id=13694/13697,redirected_base_stats=239031,ilevel=334 +head=venomkeepers_horrific_cowl,id=271874,enchant_id=7961,gem_id=240967,bonus_id=40/13335/13663/13695/13696/13846/13848,content_tuning=883 +neck=aqirbane_reliquary,id=268265,gem_id=240914/240898,bonus_id=13987/13668/13848/13662 +shoulders=spires_of_the_damned_necrolyte,id=271544,enchant_id=8031,bonus_id=13694/13697,redirected_base_stats=239031,ilevel=334 back=silken_voodoo_drape,id=268253,ilevel=344 -chest=damned_necrolytes_rattling_robes,id=271549,enchant_id=7987,bonus_id=13690/13698/12854,redirected_base_stats=251139 -wrist=martyrs_bindings,id=239648,gem_id=240906,bonus_id=12214/12384/8960/13750/8790,ilevel=331 +chest=damned_necrolytes_rattling_robes,id=271549,enchant_id=7987,bonus_id=13690/13698/12854,redirected_base_stats=268221 +wrists=martyrs_bindings,id=239648,gem_id=240890,bonus_id=8960/12214/12384/13750/8795,ilevel=331 hands=damned_necrolytes_charred_grasps,id=271547,bonus_id=13691/13697/13848,redirected_base_stats=268243 -waist=ethereal_netherwrap,id=251222,gem_id=240898,bonus_id=12854/13662/13750 -legs=damned_necrolytes_leg_bindings,id=271545,enchant_id=7935,bonus_id=13693/13698/12854/13335/40,content_tuning=807 -feet=cackling_soultreads,id=268255,enchant_id=7993,bonus_id=13848/13662 +waist=ethereal_netherwrap,id=251222,gem_id=240906,bonus_id=12854/13662/13750 +legs=damned_necrolytes_leg_bindings,id=271545,enchant_id=7935,bonus_id=13693/13698/12854,redirected_base_stats=159234 +feet=cackling_soultreads,id=268255,enchant_id=7993,bonus_id=13662/13848 finger1=charged_sandstone_band,id=158366,enchant_id=7967,gem_id=240906,bonus_id=12854/13662/13750 -finger2=vile_alchemists_band,id=268249,enchant_id=7967,gem_id=240906,bonus_id=13668/12854/13662 -trinket1=vile_vial_of_volatile_venom,id=273796,bonus_id=12854/13662 -trinket2=wavecallers_seastone,id=270167,bonus_id=12854/13662 -main_hand=janthrazet_the_soul_fang,id=271092,enchant_id=8041,bonus_id=40/13335/13848,content_tuning=883 -off_hand=alnhara_lantern,id=245769,bonus_id=12214/13836/13751/9627/13771/8960/8791,crafted_stats=49/36,crafting_quality=5 +finger2=apex_brutes_claw_ring,id=268252,enchant_id=7967,gem_id=240906,bonus_id=13668/12854/13662 +trinket1=gebbos_bottomless_bag,id=270164,bonus_id=12854/13662 +trinket2=stormbound_emblem_of_dazar,id=273649,bonus_id=12854/13662 +main_hand=janthrazet_the_soul_fang,id=271092,enchant_id=8689,bonus_id=40/13335/13848,content_tuning=883 +off_hand=alnhara_lantern,id=245769,bonus_id=8960/12214/13751/13771/13836/9627/8795,crafted_stats=49/36,crafting_quality=5 -save=MID2_Warlock_Demonology.simc +save=MID2_Warlock_Demonology_Soulharvester.simc + +warlock=MID2_Warlock_Demonology_Diabolist +level=90 +race=Orc +role=spell +position=ranged_back +spec=demonology +talents=CoQAAAAAAAAAAAAAAAAAAAAAAYmxMzoZjZ2mZGzyAAAAAAAAGzYYBGYb0CNsYMGLzyMzMmBAmZMzMzMDgZGzAAAYMzMjhhlZMgB +omnium_talents=136822:1/136816:1/136817:1/136815:1/136814:1 +flask=flask_of_the_shattered_sun_2 +potion=liquid_luster_2 -# warlock="MID2_Warlock_Demonology_Diabolist" -# spec=demonology -# level=90 -# race=Orc -# role=spell -# position=ranged_back -# talents=CoQAAAAAAAAAAAAAAAAAAAAAAYmxMzoZjZ2mZGzyAAAAAAAAGzYYBGYb0CNsYMGLzyMzMmBAmZMzMzMDgZGzAAAYMzMjhhlZMgB - -# head=abyssal_immolators_smoldering_flames,id=250042,bonus_id=13575/13575/1808/13575/13575/13575/13575/13575/13575/13575,enchant_id=7961,gem_id=240983,ilevel=289 -# neck=eternal_voidsong_chain,id=249368,bonus_id=12806/13577/13668,gem_id=240906 -# shoulders=mantle_of_dark_devotion,id=251085,bonus_id=12806/13577,enchant_id=8001 -# back=adherents_silken_shroud,id=239656,bonus_id=12214/8960/12384/13622/13667/9627/8791,crafted_stats=36/49 -# chest=abyssal_immolators_dreadrobe,id=250045,bonus_id=13575/13575/13575/13575/13575/13575/13575/13575/13575,enchant_id=7987,ilevel=289 -# wrists=martyrs_bindings,id=239648,bonus_id=12214/12214/1808/8960/12066/12214/12214/12214/12384/13622/13667/9627,gem_id=240906,crafted_stats=32/49 -# hands=abyssal_immolators_grasps,id=250043,bonus_id=13574/13574/13574/13574/13574/13574/13574/13574/13574,ilevel=289 -# waist=abyssal_immolators_blazing_core,id=250039,bonus_id=1808/12806,gem_id=240906 -# legs=abyssal_immolators_pillars,id=250041,bonus_id=13575/13575/13575/13575/13575/13575/13575/13575/13575,enchant_id=7935,ilevel=289 -# feet=dreamscorched_striders,id=249373,enchant_id=7963,ilevel=289 -# finger1=omission_of_light,id=251093,bonus_id=12806/13577/13668,enchant_id=7967,gem_id=240906 -# finger2=occlusion_of_void,id=251217,bonus_id=12806/13577/13668,enchant_id=7967,gem_id=240906 -# trinket1=emberwing_feather,id=250144,bonus_id=12806/13577,ilevel=289 -# trinket2=gaze_of_the_alnseer,id=249343,bonus_id=12806/13577 -# main_hand=umbral_spire_of_zuraal,id=258514,bonus_id=12806/13577,enchant_id=8039 - -# save=MID2_Warlock_Demonology.simc +head=venomkeepers_horrific_cowl,id=271874,enchant_id=7961,gem_id=240967,bonus_id=40/13335/13663/13695/13696/13846/13848,content_tuning=883 +neck=aqirbane_reliquary,id=268265,gem_id=240914/240898,bonus_id=13987/13668/13848/13662 +shoulders=spires_of_the_damned_necrolyte,id=271544,enchant_id=8031,bonus_id=13694/13697,redirected_base_stats=239031,ilevel=334 +back=silken_voodoo_drape,id=268253,ilevel=344 +chest=damned_necrolytes_rattling_robes,id=271549,enchant_id=7987,bonus_id=13690/13698/12854,redirected_base_stats=268221 +wrists=martyrs_bindings,id=239648,gem_id=240890,bonus_id=8960/12214/12384/13750/8795,ilevel=331 +hands=damned_necrolytes_charred_grasps,id=271547,bonus_id=13691/13697/13848,redirected_base_stats=268243 +waist=ethereal_netherwrap,id=251222,gem_id=240906,bonus_id=12854/13662/13750 +legs=damned_necrolytes_leg_bindings,id=271545,enchant_id=7935,bonus_id=13693/13698/12854,redirected_base_stats=159234 +feet=cackling_soultreads,id=268255,enchant_id=7993,bonus_id=13662/13848 +finger1=charged_sandstone_band,id=158366,enchant_id=7967,gem_id=240906,bonus_id=12854/13662/13750 +finger2=apex_brutes_claw_ring,id=268252,enchant_id=7967,gem_id=240906,bonus_id=13668/12854/13662 +trinket1=gebbos_bottomless_bag,id=270164,bonus_id=12854/13662 +trinket2=stormbound_emblem_of_dazar,id=273649,bonus_id=12854/13662 +main_hand=janthrazet_the_soul_fang,id=271092,enchant_id=8689,bonus_id=40/13335/13848,content_tuning=883 +off_hand=alnhara_lantern,id=245769,bonus_id=8960/12214/13751/13771/13836/9627/8795,crafted_stats=49/36,crafting_quality=5 + + +save=MID2_Warlock_Demonology.simc warlock=MID2_Warlock_Destruction_Diabolist level=90 @@ -127,21 +132,21 @@ omnium_talents=136822:1/136816:1/136817:1/136815:1/136814:1 flask=flask_of_the_magisters_2 potion=potion_of_recklessness_2 -head=venomkeepers_horrific_cowl,id=271874,enchant_id=7961,gem_id=240967,bonus_id=13846/40/13696/13663/13335/13848/13695,content_tuning=883 -neck=aqirbane_reliquary,id=268265,gem_id=240914/240900,bonus_id=13708/13668/40/13335/13848,content_tuning=883 +head=venomkeepers_horrific_cowl,id=271874,enchant_id=8017,gem_id=240967,bonus_id=13846/13848/13662/13750 +neck=aqirbane_reliquary,id=268265,gem_id=240900/240900,bonus_id=13987/13668/13848/13662 shoulder=spires_of_the_damned_necrolyte,id=271544,enchant_id=8001,bonus_id=13694/13697,redirected_base_stats=239031,ilevel=334 back=silken_voodoo_drape,id=268253,ilevel=344 -chest=damned_necrolytes_rattling_robes,id=271549,enchant_id=7987,bonus_id=13690/13698/12854,redirected_base_stats=251139 +chest=damned_necrolytes_rattling_robes,id=271549,enchant_id=7987,bonus_id=13690/13698/12854,redirected_base_stats=268221 wrist=martyrs_bindings,id=239648,gem_id=240900,bonus_id=12214/12384/8960/13750/8791,ilevel=331 hands=damned_necrolytes_charred_grasps,id=271547,bonus_id=13691/13697/13848,redirected_base_stats=268243 -waist=ethereal_netherwrap,id=251222,gem_id=240900,bonus_id=12854/13662/13750 -legs=damned_necrolytes_leg_bindings,id=271545,enchant_id=7935,bonus_id=13693/13698/12854/13335/40,content_tuning=807 -feet=cackling_soultreads,id=268255,enchant_id=7993,bonus_id=13848/13662 -finger1=charged_sandstone_band,id=158366,enchant_id=7967,gem_id=240906,bonus_id=12854/13662/13750 -finger2=vile_alchemists_band,id=268249,enchant_id=7967,gem_id=240890,bonus_id=13668/12854/13662 -trinket1=wavecallers_seastone,id=270167,bonus_id=12854/13662 +waist=ethereal_netherwrap,id=251222,gem_id=240906,bonus_id=12854/13662/13750 +legs=damned_necrolytes_leg_bindings,id=271545,enchant_id=7935,bonus_id=13693/13698/13848,redirected_base_stats=273786 +feet=cackling_soultreads,id=268255,enchant_id=7963,bonus_id=13848/13662 +finger1=charged_sandstone_band,id=158366,enchant_id=7967,gem_id=240914,bonus_id=12854/13662/13750 +finger2=signet_of_snarling_servitude,id=251136,enchant_id=7967,gem_id=240890,bonus_id=13668/12854/13662 +trinket1=gebbos_bottomless_bag,id=270164,bonus_id=12854/13662 trinket2=freightrunners_flask,id=250215,bonus_id=12854/13662 -main_hand=janthrazet_the_soul_fang,id=271092,enchant_id=8041,bonus_id=40/13335/13848,content_tuning=883 +main_hand=janthrazet_the_soul_fang,id=271092,enchant_id=8689,bonus_id=40/13335/13848,content_tuning=883 off_hand=alnhara_lantern,id=245769,bonus_id=12214/13836/13751/9627/13771/8960/8791,crafted_stats=32/36,crafting_quality=5 save=MID2_Warlock_Destruction_Diabolist.simc @@ -156,21 +161,21 @@ omnium_talents=136822:1/136816:1/136817:1/136815:1/136814:1 flask=flask_of_the_magisters_2 potion=potion_of_recklessness_2 -head=venomkeepers_horrific_cowl,id=271874,enchant_id=7961,gem_id=240967,bonus_id=13846/40/13696/13663/13335/13848/13695,content_tuning=883 -neck=aqirbane_reliquary,id=268265,gem_id=240914/240900,bonus_id=13708/13668/40/13335/13848,content_tuning=883 +head=venomkeepers_horrific_cowl,id=271874,enchant_id=8017,gem_id=240967,bonus_id=13846/13848/13662/13750 +neck=aqirbane_reliquary,id=268265,gem_id=240900/240900,bonus_id=13987/13668/13848/13662 shoulder=spires_of_the_damned_necrolyte,id=271544,enchant_id=8001,bonus_id=13694/13697,redirected_base_stats=239031,ilevel=334 back=silken_voodoo_drape,id=268253,ilevel=344 -chest=damned_necrolytes_rattling_robes,id=271549,enchant_id=7987,bonus_id=13690/13698/12854,redirected_base_stats=251139 +chest=damned_necrolytes_rattling_robes,id=271549,enchant_id=7987,bonus_id=13690/13698/12854,redirected_base_stats=268221 wrist=martyrs_bindings,id=239648,gem_id=240900,bonus_id=12214/12384/8960/13750/8791,ilevel=331 hands=damned_necrolytes_charred_grasps,id=271547,bonus_id=13691/13697/13848,redirected_base_stats=268243 -waist=ethereal_netherwrap,id=251222,gem_id=240900,bonus_id=12854/13662/13750 -legs=damned_necrolytes_leg_bindings,id=271545,enchant_id=7935,bonus_id=13693/13698/12854/13335/40,content_tuning=807 -feet=cackling_soultreads,id=268255,enchant_id=7993,bonus_id=13848/13662 -finger1=charged_sandstone_band,id=158366,enchant_id=7967,gem_id=240906,bonus_id=12854/13662/13750 -finger2=vile_alchemists_band,id=268249,enchant_id=7967,gem_id=240890,bonus_id=13668/12854/13662 -trinket1=wavecallers_seastone,id=270167,bonus_id=12854/13662 +waist=ethereal_netherwrap,id=251222,gem_id=240906,bonus_id=12854/13662/13750 +legs=damned_necrolytes_leg_bindings,id=271545,enchant_id=7935,bonus_id=13693/13698/13848,redirected_base_stats=273786 +feet=cackling_soultreads,id=268255,enchant_id=7963,bonus_id=13848/13662 +finger1=charged_sandstone_band,id=158366,enchant_id=7967,gem_id=240914,bonus_id=12854/13662/13750 +finger2=signet_of_snarling_servitude,id=251136,enchant_id=7967,gem_id=240890,bonus_id=13668/12854/13662 +trinket1=gebbos_bottomless_bag,id=270164,bonus_id=12854/13662 trinket2=freightrunners_flask,id=250215,bonus_id=12854/13662 -main_hand=janthrazet_the_soul_fang,id=271092,enchant_id=8041,bonus_id=40/13335/13848,content_tuning=883 +main_hand=janthrazet_the_soul_fang,id=271092,enchant_id=8689,bonus_id=40/13335/13848,content_tuning=883 off_hand=alnhara_lantern,id=245769,bonus_id=12214/13836/13751/9627/13771/8960/8791,crafted_stats=32/36,crafting_quality=5 save=MID2_Warlock_Destruction.simc From a8516914110008358808e9d13a3f181739e7c6bc Mon Sep 17 00:00:00 2001 From: SzynaWoW <71667415+SzynaWoW@users.noreply.github.com> Date: Wed, 9 Sep 2026 03:23:26 +0200 Subject: [PATCH 3/9] [Warlock] Fix hero tree name type --- profiles/generators/MID2/MID2_Generate_Warlock.simc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/profiles/generators/MID2/MID2_Generate_Warlock.simc b/profiles/generators/MID2/MID2_Generate_Warlock.simc index 53152e52a51..1b7883d7039 100644 --- a/profiles/generators/MID2/MID2_Generate_Warlock.simc +++ b/profiles/generators/MID2/MID2_Generate_Warlock.simc @@ -61,7 +61,7 @@ off_hand=,id=245769,bonus_id=13836/13751/9627/13771/8960,crafted_stats=32/36,cra save=MID2_Warlock_Affliction_Hellcaller.simc -warlock=MID2_Warlock_Demonology_Soulharvester +warlock=MID2_Warlock_Demonology_Soul_Harvester level=90 race=Orc role=spell @@ -89,7 +89,7 @@ trinket2=stormbound_emblem_of_dazar,id=273649,bonus_id=12854/13662 main_hand=janthrazet_the_soul_fang,id=271092,enchant_id=8689,bonus_id=40/13335/13848,content_tuning=883 off_hand=alnhara_lantern,id=245769,bonus_id=8960/12214/13751/13771/13836/9627/8795,crafted_stats=49/36,crafting_quality=5 -save=MID2_Warlock_Demonology_Soulharvester.simc +save=MID2_Warlock_Demonology_Soul_Harvester.simc warlock=MID2_Warlock_Demonology_Diabolist level=90 From 5fe6a4ee3dda19e0df3e6ba02a89b4766107168f Mon Sep 17 00:00:00 2001 From: SzynaWoW <71667415+SzynaWoW@users.noreply.github.com> Date: Wed, 9 Sep 2026 03:23:43 +0200 Subject: [PATCH 4/9] Update MID2_Raid.simc --- profiles/MID2_Raid.simc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/profiles/MID2_Raid.simc b/profiles/MID2_Raid.simc index a541503abae..0a5a9c76542 100644 --- a/profiles/MID2_Raid.simc +++ b/profiles/MID2_Raid.simc @@ -61,7 +61,7 @@ MID2_Shaman_Enhancement_Totemic.simc MID2_Warlock_Affliction.simc MID2_Warlock_Affliction_Hellcaller.simc -# MID2_Warlock_Demonology_Soul_Harvester.simc +MID2_Warlock_Demonology_Soul_Harvester.simc MID2_Warlock_Demonology.simc MID2_Warlock_Destruction.simc MID2_Warlock_Destruction_Diabolist.simc From b398fff66cc1cdee318e7c00d4437a87db665e75 Mon Sep 17 00:00:00 2001 From: SzynaWoW <71667415+SzynaWoW@users.noreply.github.com> Date: Wed, 9 Sep 2026 03:28:17 +0200 Subject: [PATCH 5/9] [Warlock] Change deafult demo pot --- engine/class_modules/apl/warlock.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/class_modules/apl/warlock.cpp b/engine/class_modules/apl/warlock.cpp index b63d11a5b06..46892220ed2 100644 --- a/engine/class_modules/apl/warlock.cpp +++ b/engine/class_modules/apl/warlock.cpp @@ -13,7 +13,7 @@ namespace warlock_apl{ switch ( p->specialization() ) { case WARLOCK_AFFLICTION: lvl90_potion = "liquid_luster_2"; break; - case WARLOCK_DEMONOLOGY: lvl90_potion = "potion_of_recklessness_2"; break; + case WARLOCK_DEMONOLOGY: lvl90_potion = "liquid_luster_2"; break; case WARLOCK_DESTRUCTION: lvl90_potion = "potion_of_recklessness_2"; break; default: break; } From 15a67b450bc10c5e3461ac0052c56adec3fccb52 Mon Sep 17 00:00:00 2001 From: SzynaWoW <71667415+SzynaWoW@users.noreply.github.com> Date: Wed, 9 Sep 2026 11:53:36 +0200 Subject: [PATCH 6/9] Update warlock.cpp --- engine/class_modules/apl/warlock.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/class_modules/apl/warlock.cpp b/engine/class_modules/apl/warlock.cpp index 46892220ed2..e3fafb14605 100644 --- a/engine/class_modules/apl/warlock.cpp +++ b/engine/class_modules/apl/warlock.cpp @@ -355,7 +355,7 @@ void destruction( player_t* p ) aoe_dia->add_action( "summon_infernal" ); aoe_dia->add_action( "shadowburn,if=demonic_art" ); aoe_dia->add_action( "chaos_bolt,if=demonic_art" ); - aoe_dia->add_action( "(demonic_art|(variable.ritual_lengthadd_action( "chaos_bolt,if=(demonic_art|(variable.ritual_lengthadd_action( "rain_of_fire,if=((soul_shard>=(3.5-0.1*(active_dot.immolate)))|buff.alythesss_ire.up)&active_enemies>=3" ); aoe_dia->add_action( "conflagrate,target_if=max:(dot.immolate.remains-99*debuff.havoc.remains),if=dot_refreshable_count.immolate>0&!dot.immolate.refreshable" ); aoe_dia->add_action( "shadowburn,target_if=min:(time_to_die+999*debuff.havoc.remains),if=(!talent.destructive_rapidity&active_enemies<=(2+2*buff.fiendish_cruelty.up))|(talent.conflagration_of_chaos&active_enemies<=(6-talent.destructive_rapidity+2*buff.fiendish_cruelty.up))" ); From a9c3c33482768c7186dbe9716321cd9b8392e67d Mon Sep 17 00:00:00 2001 From: SzynaWoW <71667415+SzynaWoW@users.noreply.github.com> Date: Thu, 10 Sep 2026 01:02:00 +0200 Subject: [PATCH 7/9] [Warlock] Update aff APL to match HEAD --- engine/class_modules/apl/warlock.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/engine/class_modules/apl/warlock.cpp b/engine/class_modules/apl/warlock.cpp index e3fafb14605..4bed2039af0 100644 --- a/engine/class_modules/apl/warlock.cpp +++ b/engine/class_modules/apl/warlock.cpp @@ -81,6 +81,7 @@ void affliction( player_t* p ) precombat->add_action( "grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice" ); precombat->add_action( "seed_of_corruption,if=(hero_tree.soul_harvester&active_enemies>1)|active_enemies>2" ); precombat->add_action( "haunt,if=active_enemies<2|(hero_tree.hellcaller&active_enemies<3)" ); + precombat->add_action( "potion,if=potion.liquid_luster" ); default_->add_action( "call_action_list,name=variables" ); default_->add_action( "call_action_list,name=end_of_fight" ); @@ -100,10 +101,10 @@ void affliction( player_t* p ) hellcaller->add_action( "call_action_list,name=HC_cleave,if=active_enemies=2" ); hellcaller->add_action( "call_action_list,name=HC_aoe,if=active_enemies>2" ); - items->add_action( "use_item,name=stormbound_emblem_of_dazar,if=cooldown.summon_darkglare.remains<=2&dot.agony.remains&(dot.corruption.remains|dot.wither.remains)&cooldown.dark_harvest.remains>1" ); + items->add_action( "use_item,name=stormbound_emblem_of_dazar,if=cooldown.summon_darkglare.remains<=4&dot.agony.remains&(dot.corruption.remains|dot.wither.remains)&cooldown.dark_harvest.remains>1" ); items->add_action( "use_item,name=galactic_gladiators_badge_of_ferocity,if=(buff.malevolence.up|pet.darkglare.active)|fight_remains<20" ); - items->add_action( "use_items,if=(buff.malevolence.up|pet.darkglare.active)|fight_remains<20" ); items->add_action( "use_item,name=hex_lords_dooming_idol,if=pet.darkglare.active|buff.hex_lords_doom.stack>19|fight_remains<=30" ); + items->add_action( "use_items,if=(buff.malevolence.up|pet.darkglare.active)|fight_remains<20" ); items->add_action( "use_item,use_off_gcd=1,slot=main_hand" ); ogcd->add_action( "potion,use_off_gcd=1,if=variable.cds_active|fight_remains<32" ); @@ -130,12 +131,16 @@ void affliction( player_t* p ) SH_aoe->add_action( "seed_of_corruption,target_if=!dot.unstable_affliction.ticking&buff.succulent_soul.remains,if=set_bonus.midnight_season_2_4pc&active_enemies<=5" ); SH_aoe->add_action( "agony,target_if=min:remains,if=active_dot.agony<12&remains<5" ); SH_aoe->add_action( "summon_darkglare" ); - SH_aoe->add_action( "seed_of_corruption" ); + SH_aoe->add_action( "malefic_grasp,if=buff.nightfall.react>1&active_enemies<=6" ); + SH_aoe->add_action( "shadow_bolt,if=buff.nightfall.react>1&active_enemies<=7" ); + SH_aoe->add_action( "seed_of_corruption,if=talent.sow_the_seeds|active_enemies>5" ); + SH_aoe->add_action( "unstable_affliction" ); SH_aoe->add_action( "agony,target_if=min:remains,if=remainsadd_action( "malefic_grasp,if=pet.darkglare.remainsadd_action( "haunt" ); SH_cleave->add_action( "seed_of_corruption,if=(!dot.corruption.ticking|dot.corruption.refreshable)&!dot.seed_of_corruption.ticking&!prev.seed_of_corruption&!action.seed_of_corruption.in_flight" ); + SH_cleave->add_action( "agony,target_if=refreshable" ); SH_cleave->add_action( "dark_harvest" ); SH_cleave->add_action( "summon_darkglare" ); SH_cleave->add_action( "seed_of_corruption,target_if=!dot.unstable_affliction.ticking,if=buff.succulent_soul.remains&talent.sow_the_seeds&!pet.darkglare.active" ); @@ -160,7 +165,7 @@ void affliction( player_t* p ) HC_aoe->add_action( "haunt" ); HC_aoe->add_action( "seed_of_corruption,if=(!dot.wither.ticking|dot.wither.refreshable)&!dot.seed_of_corruption.ticking&!prev.seed_of_corruption&!action.seed_of_corruption.in_flight" ); HC_aoe->add_action( "dark_harvest" ); - HC_aoe->add_action( "agony,target_if=min:remains,if=active_dot.agony<(8+(2*talent.sow_the_seeds))&remains<5" ); + HC_aoe->add_action( "agony,target_if=min:remains,if=active_dot.agony<14&remains<5" ); HC_aoe->add_action( "summon_darkglare" ); HC_aoe->add_action( "malevolence" ); HC_aoe->add_action( "seed_of_corruption,if=talent.sow_the_seeds|active_enemies>5" ); @@ -186,6 +191,8 @@ void affliction( player_t* p ) variables->add_action( "variable,name=cds_active,op=set,value=!talent.summon_darkglare|pet.darkglare.remains" ); variables->add_action( "variable,name=darkglare_active,op=set,value=pet.darkglare.active|(cooldown.summon_darkglare.duration-cooldown.summon_darkglare.remains)<20" ); variables->add_action( "cycling_variable,name=min_agony,op=min,value=dot.agony.remains+(99*!dot.agony.remains)" ); + variables->add_action( "variable,name=malevolence_from_cast,value=0,op=set,if=buff.malevolence.up=0" ); + variables->add_action( "variable,name=malevolence_from_cast,value=1,op=set,if=prev_gcd.1.malevolence" ); } //affliction_apl_end From f413815743443f1791a172731e4e61f9b8f61789 Mon Sep 17 00:00:00 2001 From: SzynaWoW <71667415+SzynaWoW@users.noreply.github.com> Date: Thu, 10 Sep 2026 01:03:10 +0200 Subject: [PATCH 8/9] [Warlock] Update Destro APL --- engine/class_modules/apl/warlock.cpp | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/engine/class_modules/apl/warlock.cpp b/engine/class_modules/apl/warlock.cpp index 4bed2039af0..4c64e07d1f1 100644 --- a/engine/class_modules/apl/warlock.cpp +++ b/engine/class_modules/apl/warlock.cpp @@ -302,27 +302,6 @@ void destruction( player_t* p ) precombat->add_action( "immolate,if=active_enemies>=2&talent.roaring_blaze" ); precombat->add_action( "incinerate" ); - - default_->add_action( "call_action_list,name=variables" ); - default_->add_action( "call_action_list,name=ogcd" ); - default_->add_action( "call_action_list,name=items" ); - default_->add_action( "call_action_list,name=aoe_hc,if=active_enemies>=2&talent.wither" ); - default_->add_action( "call_action_list,name=aoe_dia,if=active_enemies>=2&talent.diabolic_ritual" ); - default_->add_action( "soul_fire,if=soul_shard<=4" ); - default_->add_action( "chaos_bolt,if=talent.diabolic_ritual&(demonic_art|(variable.ritual_length20" ); - default_->add_action( "conflagrate,if=soul_shard<=4.2&buff.backdraft.stack<1" ); - default_->add_action( "summon_infernal" ); - default_->add_action( "malevolence" ); - default_->add_action( "incinerate,if=buff.chaotic_inferno_buff.up&soul_shard<=4.6" ); - default_->add_action( "shadowburn,if=((!demonic_art&(variable.ritual_length>2|talent.wither))|target.health.pct<=20)&(buff.fiendish_cruelty.up|talent.conflagration_of_chaos)&(!talent.wither|soul_shard>=4|buff.malevolence.up|pet.infernal.active|fight_remains<=15)" ); - default_->add_action( "wither,if=(((dot.wither.remains-5*(action.chaos_bolt.in_flight&talent.internal_combustion))(dot.wither.remains-5*talent.internal_combustion))&(!talent.cataclysm|(cooldown.cataclysm.remains+action.cataclysm.cast_time)>dot.wither.remains)&target.time_to_die>8" ); - default_->add_action( "immolate,if=(((dot.immolate.remains-5*(action.chaos_bolt.in_flight&talent.internal_combustion))(dot.immolate.remains-5*talent.internal_combustion))&(!talent.cataclysm|cooldown.cataclysm.remains>dot.immolate.remains)&target.time_to_die>8" ); - default_->add_action( "ruination" ); - default_->add_action( "cataclysm,if=talent.lake_of_fire" ); - default_->add_action( "chaos_bolt,if=(talent.wither&(soul_shard>=4|buff.malevolence.up|pet.infernal.active|fight_remains<=15))|(talent.diabolic_ritual&variable.ritual_length>4)" ); - default_->add_action( "infernal_bolt,if=soul_shard<=3" ); - default_->add_action( "incinerate" ); - default_->add_action( "call_action_list,name=variables" ); default_->add_action( "call_action_list,name=ogcd" ); default_->add_action( "call_action_list,name=items" ); From d02a864db9e2011dcc3194cb2802b24744663fe6 Mon Sep 17 00:00:00 2001 From: SzynaWoW <71667415+SzynaWoW@users.noreply.github.com> Date: Thu, 10 Sep 2026 02:09:12 +0200 Subject: [PATCH 9/9] [Warlock] Fix default flask --- engine/class_modules/apl/warlock.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/class_modules/apl/warlock.cpp b/engine/class_modules/apl/warlock.cpp index 4c64e07d1f1..cc2a1277f45 100644 --- a/engine/class_modules/apl/warlock.cpp +++ b/engine/class_modules/apl/warlock.cpp @@ -28,7 +28,7 @@ namespace warlock_apl{ switch ( p->specialization() ) { - case WARLOCK_AFFLICTION: lvl90_flask = "flask_of_the_blood_knights_2"; break; + case WARLOCK_AFFLICTION: lvl90_flask = "flask_of_the_shattered_sun_2"; break; case WARLOCK_DEMONOLOGY: lvl90_flask = "flask_of_the_shattered_sun_2"; break; case WARLOCK_DESTRUCTION: lvl90_flask = "flask_of_the_magisters_2"; break; default: break;