From 306a0665ac87dce624d7f0d33b47de5cf354e666 Mon Sep 17 00:00:00 2001 From: Lucasmingus Date: Sat, 13 Jun 2026 22:18:16 +0200 Subject: [PATCH 1/2] [Mage] Fire Updates For 12.0.7 --- engine/class_modules/apl/mage.cpp | 25 +++---- .../generators/MID1/MID1_Generate_Mage.simc | 70 ++++++++++--------- 2 files changed, 50 insertions(+), 45 deletions(-) diff --git a/engine/class_modules/apl/mage.cpp b/engine/class_modules/apl/mage.cpp index ced50e59ac7..b93daa4fcfc 100644 --- a/engine/class_modules/apl/mage.cpp +++ b/engine/class_modules/apl/mage.cpp @@ -184,12 +184,12 @@ void fire( player_t* p ) precombat->add_action( "variable,name=flamestriking,op=reset,default=1" ); precombat->add_action( "variable,name=ff_combustion_flamestrike,if=!talent.spellfire_spheres,value=4+(999*!talent.fuel_the_fire)", "Flamestrike at 4 targets during Combustion." ); precombat->add_action( "variable,name=ff_filler_flamestrike,if=!talent.spellfire_spheres,value=8+(999*!talent.fuel_the_fire)", "Flamestrike at 8 targets." ); - precombat->add_action( "variable,name=sf_combustion_flamestrike,if=talent.spellfire_spheres,value=4+(999*!talent.fuel_the_fire)", "Flamestrike at 4 targets during Combustion. Do at 3 targets if you don't care about prio dmg." ); + precombat->add_action( "variable,name=sf_combustion_flamestrike,if=talent.spellfire_spheres,value=4+(999*!talent.fuel_the_fire)", "Flamestrike at 4 targets during Combustion." ); precombat->add_action( "variable,name=sf_filler_flamestrike,if=talent.spellfire_spheres,value=4+(999*!talent.fuel_the_fire)", "Flamestrike at 4 targets." ); precombat->add_action( "variable,name=combustion_delay,value=(18*talent.firestarter)-(10*(expected_combat_length<60)+10*(expected_combat_length<30))-10*(((expected_combat_length%%60)>=25)&((expected_combat_length%%60)<=40))", "Delay Combustion if playing Firestarter until the target is >=90% HP unless it means losing casts of Combustion. Do not do so if fight length is short." ); precombat->add_action( "variable,name=15ssteroid_trinket_equipped,op=set,value=equipped.nevermelting_ice_crystal|equipped.lily_of_the_eternal_weave|equipped.sunblood_amethyst|equipped.astral_gladiators_badge_of_ferocity|equipped.arazs_ritual_forge|equipped.freightrunners_flask|equipped.emberwing_feather|equipped.vaelgors_final_stare|equipped.galactic_gladiators_badge_of_ferocity" ); precombat->add_action( "variable,name=10ssteroid_trinket_equipped,op=set,value=equipped.ever_collapsing_void_fissure" ); - precombat->add_action( "variable,name=nonsteroid_trinket_equipped,op=set,value=equipped.mereldars_toll|equipped.perfidious_projector|equipped.chaotic_nethergate|equipped.wraps_of_cosmic_madness|equipped.astalors_anguish_agitator" ); + precombat->add_action( "variable,name=nonsteroid_trinket_equipped,op=set,value=equipped.mereldars_toll|equipped.perfidious_projector|equipped.chaotic_nethergate|equipped.wraps_of_cosmic_madness|equipped.astalors_anguish_agitator|equipped.litany_of_lightblind_wrath|equipped.gloom_spattered_dreadscale" ); precombat->add_action( "snapshot_stats" ); precombat->add_action( "mirror_image" ); precombat->add_action( "frostfire_bolt,if=talent.frostfire_bolt", "Precast one of these." ); @@ -204,24 +204,25 @@ void fire( player_t* p ) cds->add_action( "variable,name=combustion_precast_time,value=(action.scorch.cast_time*!buff.pyroclasm.up*scorch_execute.active)+(action.fireball.cast_time*!buff.pyroclasm.up*!scorch_execute.active)+(action.pyroblast.cast_time*buff.pyroclasm.up)-variable.cast_remains_time" ); cds->add_action( "potion,if=time>=(8*(talent.firestarter&talent.spellfire_spheres))|buff.combustion.remains>6|fight_remains<35", "Use Potion on pull. Delay by about 8 seconds if playing with Firestarter as Sunfury." ); - cds->add_action( "use_item,name=vaelgors_final_stare,if=buff.combustion.remains>6|fight_remains<20", "Force Vaelgor as highest priority on-use trinket, if potentially two on-use trinkets are equipped." ); + cds->add_action( "use_item,name=vaelgors_final_stare,if=buff.combustion.remains>6&buff.bloodlust.up|fight_remains<20", "Vaelgor is prioritised during Bloodlust." ); cds->add_action( "use_item,name=emberwing_feather,if=buff.combustion.remains>6|fight_remains<20" ); - cds->add_action( "use_item,name=nevermelting_ice_crystal,if=buff.combustion.remains>6|fight_remains<20" ); - cds->add_action( "use_item,name=freightrunners_flask,if=buff.combustion.remains>6|fight_remains<20" ); - cds->add_action( "use_item,name=astral_gladiators_badge_of_ferocity,if=buff.combustion.remains>6|fight_remains<20" ); + cds->add_action( "use_item,name=vaelgors_final_stare,if=buff.combustion.remains>6|fight_remains<20" ); cds->add_action( "use_item,name=galactic_gladiators_badge_of_ferocity,if=buff.combustion.remains>6|fight_remains<20" ); cds->add_action( "use_item,name=ever_collapsing_void_fissure,if=buff.combustion.remains>6|fight_remains<20" ); + cds->add_action( "use_item,name=nevermelting_ice_crystal,if=buff.combustion.remains>6|fight_remains<20" ); + cds->add_action( "use_item,name=freightrunners_flask,if=buff.combustion.remains>6|fight_remains<20" ); cds->add_action( "use_items,if=variable.nonsteroid_trinket_equipped&time>variable.combustion_delay&buff.combustion.down&buff.hyperthermia.down&cooldown.combustion.remains>20", "Non-steriod trinkets are used outside cooldowns." ); - cds->add_action( "use_items,if=buff.combustion.remains>6|fight_remains<20" ); + cds->add_action( "use_items,if=(buff.combustion.remains>6|fight_remains<20)" ); cds->add_action( "ancestral_call,if=buff.combustion.remains>6|fight_remains<20" ); cds->add_action( "berserking,if=buff.combustion.remains>6|fight_remains<20" ); cds->add_action( "blood_fury,if=buff.combustion.remains>6|fight_remains<20" ); cds->add_action( "fireblood,if=buff.combustion.remains>6|fight_remains<10" ); cds->add_action( "invoke_external_buff,name=power_infusion,if=buff.power_infusion.down&(buff.combustion.remains>6|fight_remains<25)" ); + fireblast->add_action( "fire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&cooldown.fire_blast.charges_fractional>=2.9&talent.firestarter", "Cast Fire Blast if close to overcapping charges. This can result in casting Fire Blast twice during one cast, if you have ample time left of your cast." ); fireblast->add_action( "fire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&!buff.hot_streak.react&(buff.combustion.up|buff.hyperthermia.up)&(hot_streak_spells_in_flight+buff.heating_up.react=1)&gcd.remainsadd_action( "fire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&!buff.hot_streak.react&(action.fireball.executing&action.fireball.execute_remains>0.1|buff.pyroclasm.react&action.pyroblast.executing&action.pyroblast.execute_remains>0.1)&((target.health.pct>=30|!talent.scorch)&buff.heating_up.react)&(hot_streak_spells_in_flight+buff.heating_up.react=1)&gcd.remainsadd_action( "fire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&!buff.hot_streak.react&(target.health.pct<30&talent.scorch)&(hot_streak_spells_in_flight+buff.heating_up.react=0)&action.scorch.executing&buff.heat_shimmer.down&gcd.remainsadd_action( "fire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&!buff.hot_streak.react&(action.fireball.executing&action.fireball.execute_remains>0.1|buff.pyroclasm.react&action.pyroblast.executing&action.pyroblast.execute_remains>0.1)&((!scorch_execute.active|!talent.scorch)&buff.heating_up.react)&(hot_streak_spells_in_flight+buff.heating_up.react=1)&gcd.remainsadd_action( "fire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&!buff.hot_streak.react&scorch_execute.active&(hot_streak_spells_in_flight+buff.heating_up.react=0)&action.scorch.executing&buff.heat_shimmer.down&gcd.remainsadd_action( "fire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&!buff.hot_streak.react&time0.1|buff.pyroclasm.react&action.pyroblast.executing&action.pyroblast.execute_remains>0.1)&(hot_streak_spells_in_flight+buff.heating_up.react=1)&gcd.remainsadd_action( "fire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&(time>=variable.combustion_delay&(cooldown.combustion.remains<=variable.combustion_precast_time))&buff.combustion.down&talent.spontaneous_combustion&(action.scorch.executing|action.fireball.executing|action.pyroblast.executing|action.flamestrike.executing)", "When talented into Spontaneous Combustion, spend all Fire Blasts during the pre-cast going into Combustion regardless of Heating Up / Hot Streak status." ); fireblast->add_action( "fire_blast,use_off_gcd=1,use_while_casting=1,if=talent.frostfire_bolt&target.health.pct<30&buff.combustion.down&cooldown.combustion.remains>5", "As Frostfire in execute, since we ignore Hot Streak Pyroblast, send Fire Blasts freely." ); @@ -236,7 +237,7 @@ void fire( player_t* p ) ff_combustion->add_action( "pyroblast,if=buff.hot_streak.react" ); ff_combustion->add_action( "flamestrike,if=talent.fuel_the_fire&active_enemies>=variable.ff_combustion_flamestrike&variable.flamestriking&(buff.pyroclasm.up&cast_timeadd_action( "pyroblast,if=buff.pyroclasm.up&cast_timeadd_action( "scorch,if=buff.heat_shimmer.react|talent.scald&target.health.pct<30&buff.frostfire_empowerment.down" ); + ff_combustion->add_action( "scorch,if=buff.heat_shimmer.react|talent.scald&scorch_execute.active&buff.frostfire_empowerment.down" ); ff_combustion->add_action( "fireball" ); ff_combustion->add_action( "call_action_list,name=fireblast,if=!talent.pyroclasm|(buff.pyroclasm.stack<2|action.pyroblast.executing&action.pyroblast.execute_remains>0.2&buff.pyroclasm.stack=2|cooldown.fire_blast.charges_fractional>=2|buff.combustion.remainsadd_action( "meteor,if=buff.bloodlust.up&buff.combustion.down", "Precast one of these into Combustion." ); sf_combustion->add_action( "flamestrike,if=talent.fuel_the_fire&active_enemies>=variable.sf_combustion_flamestrike&variable.flamestriking&(buff.combustion.down&!buff.hot_streak.react&buff.pyroclasm.up)" ); sf_combustion->add_action( "pyroblast,if=buff.combustion.down&!buff.hot_streak.react&buff.pyroclasm.up" ); - sf_combustion->add_action( "scorch,if=buff.combustion.down&(target.health.pct<30|active_enemies>=4)" ); + sf_combustion->add_action( "scorch,if=buff.combustion.down&(scorch_execute.active|active_enemies>=4)" ); sf_combustion->add_action( "fireball,if=buff.combustion.down&(!prev_gcd.1.meteor|buff.bloodlust.down)", "If precasting Meteor into Combustion, can fit a Fireball unless Bloodlust is active." ); sf_combustion->add_action( "meteor,if=buff.combustion.remains>2", "Make sure Meteor lands during Combustion." ); sf_combustion->add_action( "flamestrike,if=talent.fuel_the_fire&active_enemies>=variable.sf_combustion_flamestrike&variable.flamestriking&(buff.hot_streak.react|prev_gcd.1.scorch&buff.heating_up.react&time-action.scorch.last_used<0.2)", "Spend Hot Streaks on Pyroblast in ST or Flamestrike in AoE. The Scorch condition is simply to simulate predictable guaranteed crits during Combustion." ); @@ -272,7 +273,7 @@ void fire( player_t* p ) sf_filler->add_action( "flamestrike,if=talent.fuel_the_fire&active_enemies>=variable.sf_filler_flamestrike&variable.flamestriking&buff.pyroclasm.up&((cooldown.combustion.remains>=12|time(variable.combustion_delay-action.flamestrike.cast_time)))|buff.pyroclasm.stack=2)", "Spend Pyroclasm immediately if you have 2 stacks available or if Firestarter is active. Otherwise, hold one stack if it lasts until Combustion comes up." ); sf_filler->add_action( "pyroblast,if=buff.pyroclasm.up&(cooldown.combustion.remains>=12|time(variable.combustion_delay-action.pyroblast.cast_time)))|buff.pyroclasm.stack=2" ); sf_filler->add_action( "meteor,if=(!talent.blast_zone&talent.sunfury_execution&cooldown.combustion.remains<12&buff.pyroclasm.stack<2)|(talent.blast_zone&time>variable.combustion_delay)", "Meteor is used on CD with Blast Zone starting from the first Combustion. Without Blast Zone, it's used either purely during Combustion or within 12 seconds before if talented into Sunfury Execution." ); - sf_filler->add_action( "scorch,if=talent.scald&target.health.pct<30|buff.heat_shimmer.react&(target.health.pct>=90|prev_gcd.1.pyroblast|prev_gcd.1.flamestrike)", "Cast Scorch in execute or with a Heat Shimmer proc." ); + sf_filler->add_action( "scorch,if=talent.scald&scorch_execute.active|buff.heat_shimmer.react&(firestarter.active|prev_gcd.1.pyroblast|prev_gcd.1.flamestrike)", "Cast Scorch in execute or with a Heat Shimmer proc." ); sf_filler->add_action( "fireball" ); sf_filler->add_action( "call_action_list,name=fireblast" ); } diff --git a/profiles/generators/MID1/MID1_Generate_Mage.simc b/profiles/generators/MID1/MID1_Generate_Mage.simc index 5bd7cdb1e36..f3b40ae0f18 100644 --- a/profiles/generators/MID1/MID1_Generate_Mage.simc +++ b/profiles/generators/MID1/MID1_Generate_Mage.simc @@ -71,28 +71,30 @@ race=orc role=spell position=ranged_back talents=C8DAAAAAAAAAAAAAAAAAAAAAAYGGLzMzswMDZmZGAAAGAwMz0sssMDAwmZmx2wYmBAAAAAsZmZmZAAwYGzYmZMz2AwMDxMGDmhB +omnium_talents=136822:1/136816:1/136817:1/136820:1/136814:1 potion=lights_potential_2 -flask=flask_of_the_magisters_2 -food=queldorei_medley +flask=flask_of_the_blood_knights_2 +food=silvermoon_parade augmentation=void_touched_augment_rune temporary_enchant=main_hand:thalassian_phoenix_oil_2 -head=voidbreakers_veil,id=250060,bonus_id=1808/12214/12667/13575/13575/13575/12497,ilevel=289,gem_id=240967,enchant_id=7991 -neck=amulet_of_the_abyssal_hymn,id=250247,ilevel=289,gem_id=240892/240900 -shoulder=voidbreakers_leyline_nexi,id=250058,bonus_id=40/12675/12806/13335/13340/13574/13574/13574,ilevel=289,enchant_id=7973 -back=adherents_silken_shroud,id=239656,bonus_id=8793/8960/12214/12384,ilevel=285,crafted_stats=36/32 -chest=robes_of_endless_oblivion,id=249912,bonus_id=40/12676/12806/13335/13336,ilevel=289,enchant_id=7987 -wrist=martyrs_bindings,id=239648,bonus_id=1808/8960/12066/12214/12214/12214/12214/12384/12667/12497,ilevel=285,gem_id=240900,crafted_stats=36/49 -hands=voidbreakers_gloves,id=250061,bonus_id=40/12675/12806/13335/13337/13574/13574/13574,ilevel=289 -waist=whisperinscribed_sash,id=249376,bonus_id=1808,ilevel=289,gem_id=240900 -legs=voidbreakers_britches,id=250059,bonus_id=40/12676/12806/13335/13339/13575/13575/13575,ilevel=289,enchant_id=7935 -feet=voidbreakers_treads,id=250062,bonus_id=40/12806/13335,ilevel=289,enchant_id=8019 -finger1=eye_of_midnight,id=249920,ilevel=289,gem_id=240906/240900,enchant_id=7967 -finger2=bond_of_light,id=249369,ilevel=289,gem_id=240916,enchant_id=7967 -trinket1=emberwing_feather,id=250144,bonus_id=40/12806/13440,ilevel=298 -trinket2=gaze_of_the_alnseer,id=249343,bonus_id=40/12806/13335,ilevel=298 -main_hand=brazier_of_the_dissonant_dirge,id=249286,bonus_id=12792/13452,ilevel=298,enchant_id=8039 +head=voidbreakers_veil,id=250060,bonus_id=13668/12806/13335,ilevel=289,gem_id=240967,enchant_id=8017 +neck=amulet_of_the_abyssal_hymn,id=250247,bonus_id=13668/12806/13335,ilevel=289,gem_id=240892/240900 +shoulders=voidbreakers_leyline_nexi,id=250058,bonus_id=12806/13335,ilevel=289,enchant_id=8001 +back=adherents_silken_shroud,id=239656,bonus_id=8960/12384/12066,ilevel=285,crafted_stats=36/49 +chest=mycomancers_rot_robes,id=268284,bonus_id=13335/13786,ilevel=298,enchant_id=7987 +wrists=voracious_wristwraps,id=249315,bonus_id=13668/12806/13335,ilevel=289,gem_id=240900 +hands=voidbreakers_gloves,id=250061,bonus_id=12806/13335,ilevel=289 +waist=whisperinscribed_sash,id=249376,bonus_id=13668/12806/13335,ilevel=289,gem_id=240900 +legs=voidbreakers_britches,id=250059,bonus_id=12806/13335,ilevel=289,enchant_id=7935 +feet=voidbreakers_treads,id=250062,bonus_id=13335/13786,ilevel=298,enchant_id=7963 +finger1=omission_of_light,id=251093,bonus_id=13668/12806/13440,ilevel=289,gem_id=240906,enchant_id=7967 +finger2=sporecallers_blooming_loop,id=268290,bonus_id=13668/13335/13786,ilevel=298,gem_id=240916,enchant_id=7967 +trinket1=vaelgors_final_stare,id=249346,bonus_id=12806/13335/13654,ilevel=298 +trinket2=gaze_of_the_alnseer,id=249343,bonus_id=12806/13335/13654,ilevel=298 +main_hand=belomelorn_the_shattered_talon,id=249283,bonus_id=12806/13335/13654,ilevel=298,enchant_id=8039 +off_hand=alnhara_lantern,id=245769,bonus_id=8960/12693/12066/13655,ilevel=295,crafted_stats=36/49 save=MID1_Mage_Fire.simc @@ -103,28 +105,30 @@ race=orc role=spell position=ranged_back talents=C8DAAAAAAAAAAAAAAAAAAAAAAYGGLzMzswMDZmZGAAAmZZGzMLzCEAAwiZmx2YmZGAAAAAgNzMzMDAAGzYmZmZmZ2AmZADzYMYwA +omnium_talents=136822:1/136816:1/136817:1/136820:1/136814:1 potion=lights_potential_2 flask=flask_of_the_magisters_2 -food=queldorei_medley +food=silvermoon_parade augmentation=void_touched_augment_rune temporary_enchant=main_hand:thalassian_phoenix_oil_2 -head=voidbreakers_veil,id=250060,bonus_id=1808/12214/12667/13575/13575/13575/12497,ilevel=289,gem_id=240967,enchant_id=7991 -neck=amulet_of_the_abyssal_hymn,id=250247,ilevel=289,gem_id=240892/240900 -shoulder=voidbreakers_leyline_nexi,id=250058,bonus_id=40/12675/12806/13335/13340/13574/13574/13574,ilevel=289,enchant_id=7973 -back=adherents_silken_shroud,id=239656,bonus_id=8793/8960/12214/12384,ilevel=285,crafted_stats=36/32 -chest=robes_of_endless_oblivion,id=249912,bonus_id=40/12676/12806/13335/13336,ilevel=289,enchant_id=7987 -wrist=martyrs_bindings,id=239648,bonus_id=1808/8960/12066/12214/12214/12214/12214/12384/12667/12497,ilevel=285,gem_id=240900,crafted_stats=36/49 -hands=voidbreakers_gloves,id=250061,bonus_id=40/12675/12806/13335/13337/13574/13574/13574,ilevel=289 -waist=whisperinscribed_sash,id=249376,bonus_id=1808,ilevel=289,gem_id=240900 -legs=voidbreakers_britches,id=250059,bonus_id=40/12676/12806/13335/13339/13575/13575/13575,ilevel=289,enchant_id=7935 -feet=voidbreakers_treads,id=250062,bonus_id=40/12806/13335,ilevel=289,enchant_id=8019 -finger1=eye_of_midnight,id=249920,ilevel=289,gem_id=240906/240900,enchant_id=7967 -finger2=bond_of_light,id=249369,ilevel=289,gem_id=240916,enchant_id=7967 -trinket1=emberwing_feather,id=250144,bonus_id=40/12806/13440,ilevel=298 -trinket2=gaze_of_the_alnseer,id=249343,bonus_id=40/12806/13335,ilevel=298 -main_hand=brazier_of_the_dissonant_dirge,id=249286,bonus_id=12792/13448/13452,ilevel=298,enchant_id=8039 +head=voidbreakers_veil,id=250060,bonus_id=13668/12806/13335,ilevel=289,gem_id=240967,enchant_id=8017 +neck=amulet_of_the_abyssal_hymn,id=250247,bonus_id=13668/12806/13335,ilevel=289,gem_id=240892/240900 +shoulders=voidbreakers_leyline_nexi,id=250058,bonus_id=12806/13335,ilevel=289,enchant_id=8001 +back=adherents_silken_shroud,id=239656,bonus_id=8960/12384/12066,ilevel=285,crafted_stats=36/49 +chest=mycomancers_rot_robes,id=268284,bonus_id=13335/13786,ilevel=298,enchant_id=7987 +wrists=voracious_wristwraps,id=249315,bonus_id=13668/12806/13335,ilevel=289,gem_id=240900 +hands=voidbreakers_gloves,id=250061,bonus_id=12806/13335,ilevel=289 +waist=whisperinscribed_sash,id=249376,bonus_id=13668/12806/13335,ilevel=289,gem_id=240900 +legs=voidbreakers_britches,id=250059,bonus_id=12806/13335,ilevel=289,enchant_id=7935 +feet=voidbreakers_treads,id=250062,bonus_id=13335/13786,ilevel=298,enchant_id=7963 +finger1=omission_of_light,id=251093,bonus_id=13668/12806/13440,ilevel=289,gem_id=240906,enchant_id=7967 +finger2=sporecallers_blooming_loop,id=268290,bonus_id=13668/13335/13786,ilevel=298,gem_id=240916,enchant_id=7967 +trinket1=vaelgors_final_stare,id=249346,bonus_id=12806/13335/13654,ilevel=298 +trinket2=gaze_of_the_alnseer,id=249343,bonus_id=12806/13335/13654,ilevel=298 +main_hand=belomelorn_the_shattered_talon,id=249283,bonus_id=12806/13335/13654,ilevel=298,enchant_id=8039 +off_hand=alnhara_lantern,id=245769,bonus_id=8960/12693/12066/13655,ilevel=295,crafted_stats=36/49 save=MID1_Mage_Fire_Frostfire.simc From 98985e7cbceecf14c7fc22aa45c53b676de6eaef Mon Sep 17 00:00:00 2001 From: Lucasmingus Date: Sat, 13 Jun 2026 22:23:36 +0200 Subject: [PATCH 2/2] change flask aswell --- engine/class_modules/apl/mage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/class_modules/apl/mage.cpp b/engine/class_modules/apl/mage.cpp index b93daa4fcfc..6d02f1e375b 100644 --- a/engine/class_modules/apl/mage.cpp +++ b/engine/class_modules/apl/mage.cpp @@ -32,7 +32,7 @@ std::string flask( const player_t* p ) switch ( p->specialization() ) { case MAGE_ARCANE: lvl90_flask = "flask_of_thalassian_resistance_2"; break; - case MAGE_FIRE: lvl90_flask = "flask_of_the_magisters_2"; break; + case MAGE_FIRE: lvl90_flask = "flask_of_the_blood_knights_2"; break; case MAGE_FROST: lvl90_flask = "flask_of_the_shattered_sun_2"; break; default: break; }