Last active
July 4, 2017 13:18
-
-
Save cgdangelo/07a7d3276aea049b51921d66592cd09b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
mage="Mage_Arcane_T20M" | |
spec=arcane | |
level=110 | |
race=troll | |
role=spell | |
position=back | |
talents=2023031 | |
artifact=4:0:0:0:0:72:4:73:1:74:4:75:4:77:4:78:1:79:4:80:1:81:4:82:4:83:4:84:4:86:1:87:1:290:1:1169:1:1339:1:1371:1:1529:4:1530:1:1531:1:1532:1:1639:1 | |
# Default consumables | |
potion=deadly_grace | |
flask=whispered_pact | |
food=lemon_herb_filet | |
augmentation=defiled | |
######################################################################################################################## | |
# Precombat Actions # | |
######################################################################################################################## | |
# SimC performs precombat actions in a very specific way, unlike actual gameplay. Modify this at your own risk. | |
actions.precombat=flask | |
actions.precombat+=/food | |
actions.precombat+=/augmentation | |
actions.precombat+=/summon_arcane_familiar | |
actions.precombat+=/snapshot_stats | |
actions.precombat+=/mirror_image | |
actions.precombat+=/potion | |
actions.precombat+=/arcane_blast | |
######################################################################################################################## | |
# Default Actions # | |
######################################################################################################################## | |
# During combat, SimC will start from here and work its way down until an action is executed. | |
actions= | |
# Interrupt the boss when possible. | |
actions+=/counterspell,if=target.debuff.casting.react | |
## | |
# 3 different lust scenarios to support Shard: | |
# | |
# * On pull | |
# * During Arcane Power (with Potion, preferably) | |
# * End of fight | |
# | |
actions+=/time_warp,if=buff.bloodlust.down&(time=0|(buff.arcane_power.up&(buff.potion.up|!action.potion.usable))|target.time_to_die<=buff.bloodlust.duration) | |
# Set variables used throughout the APL. | |
actions+=/call_action_list,name=variables | |
# AoE scenarios will delay our Presence of Mind cooldown because we'll be using Arcane Explosion instead of Arcane | |
# Blast, so we cancel the aura immediately. | |
actions+=/cancel_buff,name=presence_of_mind,if=active_enemies>2&set_bonus.tier20_2pc | |
## | |
# Build Arcane Charges before doing anything else. Burn phase has some specific actions for building Arcane Charges, so | |
# we avoid entering this list if currently burning. | |
actions+=/call_action_list,name=build,if=buff.arcane_charge.stack<buff.arcane_charge.max_stack&!burn_phase | |
# Enter burn actions if we're ready to burn, or already burning. | |
actions+=/call_action_list,name=burn,if=variable.time_until_burn=0|burn_phase | |
# Fallback to conserve rotation. | |
actions+=/call_action_list,name=conserve | |
######################################################################################################################## | |
# Variable Actions # | |
######################################################################################################################## | |
# These are helper variables reused throughout the APL to avoid performing the same calculations repeatedly. | |
actions.variables= | |
# Track the number of Arcane Missiles! procs that we have. | |
actions.variables+=/variable,name=arcane_missiles_procs,op=set,value=buff.arcane_missiles.react | |
## | |
# Burns require: | |
# | |
# 1. Arcane Power | |
# 2. Evocation will be up by the end of a burn | |
# 3. Presence of Mind (if 2pt20) | |
# 4. 1 Rune of Power charge (if enabled) | |
# | |
# The time_until_burn variable is set by evaluating the status of the aforementioned cooldowns one by one, and using | |
# whichever has the most time remaining as the expected time until a burn phase starts. | |
## | |
# 1. Arcane Power | |
# | |
# There's no fancy calculations here; we simply need AP to be available. | |
actions.variables+=/variable,name=time_until_burn,op=set,value=cooldown.arcane_power.remains | |
## | |
# 2. Evocation | |
# | |
# We don't necessarily need Evocation to be ready; we need it to be ready by the time we finish burning. So we use the | |
# variable average_burn_length (defined later in burn actions) as an estimate of when Evocation _might_ be up. | |
actions.variables+=/variable,name=time_until_burn,op=max,value=cooldown.evocation.remains-variable.average_burn_length | |
## | |
# 3. Presence of Mind | |
# | |
# 2pt20 grants a damage boost with Presence of Mind usage, so we definitely want to stack that with AP. | |
actions.variables+=/variable,name=time_until_burn,op=max,value=cooldown.presence_of_mind.remains-variable.average_pom_cdr,if=set_bonus.tier20_2pc | |
## | |
# 4. Rune of Power | |
# | |
# We need an RoP charge if we've actually taken the talent. Check usable_in to see when we'll be able to cast, and | |
# ignore this line if we didn't take the talent. | |
actions.variables+=/variable,name=time_until_burn,op=max,value=action.rune_of_power.usable_in,if=talent.rune_of_power.enabled | |
# Boss is gonna die soon. All the above conditions don't really matter. We're just gonna burn some mana. | |
actions.variables+=/variable,name=time_until_burn,op=reset,if=target.time_to_die<variable.average_burn_length | |
# Enter a special action list dedicated to tracking Presence of Mind cooldown reduction, but only if we have 4pt20. | |
actions.variables+=/call_action_list,name=pom_cdr_tracking_variables,if=set_bonus.tier20_4pc | |
######################################################################################################################## | |
# PoM CDR Tracking Variable Actions # | |
######################################################################################################################## | |
## | |
# Our Tier 20 4-piece bonus is a Presence of Mind cooldown reduction on every Arcane Missiles cast. With enough | |
# Missiles procs, we can gain extra uses of PoM, outside of our normal burst window. | |
actions.pom_cdr_tracking_variables= | |
# First, track the number of Presence of Mind casts. | |
actions.pom_cdr_tracking_variables+=/variable,name=total_poms,op=add,value=1,if=prev_off_gcd.presence_of_mind | |
## | |
# Add 4 seconds worth of CDR to our current tracking variable whenever Arcane Missiles is cast, assuming Presence of | |
# Mind is actually on cooldown. | |
actions.pom_cdr_tracking_variables+=/variable,name=pom_cdr,op=add,value=4,if=prev_gcd.1.arcane_missiles&cooldown.presence_of_mind.remains | |
# Update the average CDR when we use PoM. | |
actions.pom_cdr_tracking_variables+=/variable,name=average_pom_cdr,op=set,value=(variable.average_pom_cdr*variable.total_poms-variable.average_pom_cdr+variable.pom_cdr)%variable.total_poms,if=prev_off_gcd.presence_of_mind | |
# Reset our current CDR tracking variable on PoM use and start fresh. | |
actions.pom_cdr_tracking_variables+=/variable,name=pom_cdr,op=reset,if=prev_off_gcd.presence_of_mind | |
######################################################################################################################## | |
# Build Actions # | |
######################################################################################################################## | |
# Damage is even worse without Arcane Charges, so we try to build and maintain max stacks. | |
actions.build= | |
actions.build+=/arcane_orb | |
actions.build+=/charged_up | |
actions.build+=/arcane_missiles,if=variable.arcane_missiles_procs=buff.arcane_missiles.max_stack&active_enemies<3 | |
actions.build+=/arcane_explosion,if=active_enemies>1 | |
actions.build+=/arcane_blast | |
######################################################################################################################## | |
# Burn Actions # | |
######################################################################################################################## | |
# This burst window is where most of our damage occurs. | |
actions.burn= | |
## | |
# 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. | |
actions.burn+=/variable,name=total_burns,op=add,value=1,if=!burn_phase | |
## | |
# If we've entered this action list without being in a burn phase already, then we should start one. | |
# | |
# The burn_phase variable is a flag indicating whether or not we are in a burn phase. It is set to 1 (True) with | |
# start_burn_phase, and 0 (False) with stop_burn_phase. | |
actions.burn+=/start_burn_phase,if=!burn_phase | |
## | |
# Evocation is the end of our burn phase, but we check available charges in case of Gravity Spiral. The final | |
# burn_phase_duration check is to prevent an infinite loop. | |
actions.burn+=/stop_burn_phase,if=prev_gcd.1.evocation&cooldown.evocation.charges=0&burn_phase_duration>0 | |
actions.burn+=/nether_tempest,if=refreshable|!ticking | |
actions.burn+=/mark_of_aluneth | |
actions.burn+=/mirror_image | |
actions.burn+=/rune_of_power | |
actions.burn+=/arcane_power | |
actions.burn+=/blood_fury | |
actions.burn+=/berserking | |
actions.burn+=/arcane_torrent | |
# It's beneficial for Troll/Orc to synchronize potion usage with their racials. | |
actions.burn+=/potion,if=buff.arcane_power.up&(buff.berserking.up|buff.blood_fury.up|!(race.troll|race.orc)) | |
actions.burn+=/use_items,if=buff.arcane_power.up | |
## | |
# Our Tier 20 2-piece bonus gives us a damage boost when Presence of Mind is cast, so we want to use it at the start of | |
# our burn phase instead. Otherwise, we continue as we did in T19, using it to cram extra Arcane Blasts into damage buffs. | |
actions.burn+=/presence_of_mind,if=set_bonus.tier20_2pc|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 | |
actions.burn+=/arcane_orb | |
# Dump Arcane Charges with Arcane Barrage if we have the legendary shoulders equipped. | |
actions.burn+=/arcane_barrage,if=active_enemies>1&equipped.mantle_of_the_first_kirin_tor&buff.arcane_charge.stack=buff.arcane_charge.max_stack | |
# We get better mileage out of Arcane Explosion versus a lot of targets. | |
actions.burn+=/arcane_missiles,if=variable.arcane_missiles_procs=buff.arcane_missiles.max_stack&active_enemies<3 | |
## | |
# When this buff is up, we should Arcane Blast immediately. We either have 2pt20 and thus want to get PoM on cooldown | |
# ASAP, or we're running out of time on damage buffs. | |
actions.burn+=/arcane_blast,if=buff.presence_of_mind.up | |
actions.burn+=/supernova | |
actions.burn+=/arcane_explosion,if=active_enemies>1 | |
actions.burn+=/arcane_missiles,if=variable.arcane_missiles_procs | |
actions.burn+=/arcane_blast | |
## | |
# Together with the total_burns variable defined above, we can track the average length of our burn phases to use in | |
# deciding cooldown usage, mana consumption, etc. | |
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 | |
actions.burn+=/evocation,interrupt_if=ticks=2|mana.pct>=85,interrupt_immediate=1 | |
######################################################################################################################## | |
# Conserve Actions # | |
######################################################################################################################## | |
# Our conserve phase is all about limiting mana consumption so that we have more to spend during our burn phase. | |
actions.conserve= | |
# Mark of Aluneth damage is pretty low, but we don't want to hang onto it for too long. | |
actions.conserve+=/mark_of_aluneth,if=recharge_time<=variable.time_until_burn|variable.time_until_burn>=20|variable.time_until_burn>target.time_to_die | |
actions.conserve+=/mirror_image,if=variable.time_until_burn>recharge_time|variable.time_until_burn>target.time_to_die | |
## | |
# Use Rune of Power if we're about to cap on charges, have PoM available, just casted Mark of Aluneth, or the boss is | |
# going to die soon. | |
actions.conserve+=/rune_of_power,if=full_recharge_time<=execute_time|(set_bonus.tier20_4pc&cooldown.presence_of_mind.remains<=execute_time&variable.time_until_burn>cooldown.presence_of_mind.recharge_time-variable.average_pom_cdr)|prev_gcd.1.mark_of_aluneth|target.time_to_die<recharge_time | |
# Based on our tracking of Presence of Mind CDR, use the cooldown if it will probably be back up in time for our next burn. | |
actions.conserve+=/presence_of_mind,if=set_bonus.tier20_4pc&(variable.time_until_burn>=recharge_time-variable.average_pom_cdr|buff.rune_of_power.up) | |
# We get better mileage out of Arcane Explosion versus a lot of targets. | |
actions.conserve+=/arcane_missiles,if=variable.arcane_missiles_procs=buff.arcane_missiles.max_stack&active_enemies<3 | |
actions.conserve+=/supernova | |
actions.conserve+=/nether_tempest,if=refreshable|!ticking | |
# Use our fillers, with limits on mana consumption. Legendaries give us wiggle room to spend extra mana. | |
actions.conserve+=/arcane_explosion,if=active_enemies>1&mana.pct>=90 | |
actions.conserve+=/arcane_blast,if=mana.pct>=90|buff.rhonins_assaulting_armwraps.up|(buff.rune_of_power.remains>=cast_time&equipped.mystic_kilt_of_the_rune_master&mana.pct>=50) | |
actions.conserve+=/arcane_missiles,if=variable.arcane_missiles_procs | |
actions.conserve+=/arcane_barrage | |
# Extra Arcane Blast to account for Arcane Barrage's cooldown; particularly when Charged Up is enabled. | |
actions.conserve+=/arcane_blast | |
head=crown_of_the_arcane_tempest,id=147147,ilevel=930 | |
neck=string_of_extracted_incisors,id=147013,ilevel=930,enchant=mark_of_the_hidden_satyr | |
shoulders=mantle_of_everburning_knowledge,id=138321,ilevel=905 | |
back=drape_of_the_arcane_tempest,id=147145,ilevel=930,enchant=binding_of_intellect | |
chest=robes_of_the_arcane_tempest,id=147149,ilevel=930 | |
wrists=oathbreakers_cuffs,id=147001,bonus_id=3561,ilevel=930 | |
hands=gloves_of_everburning_knowledge,id=138309,ilevel=905 | |
waist=braided_torture_lash,id=146998,ilevel=930 | |
legs=leggings_of_the_arcane_tempest,id=147148,ilevel=930 | |
feet=emberscatter_treads,id=146986,ilevel=930 | |
finger1=shard_of_the_exodar,id=132410,ilevel=970,gems=150vers,enchant=200vers | |
finger2=soul_of_the_archmage,id=151642,ilevel=970,enchant=200vers | |
trinket1=tarnished_sentinel_medallion,id=147017,ilevel=930 | |
trinket2=terror_from_below,id=147016,ilevel=930 | |
main_hand=aluneth,id=127857,gem_id=147079/147095/147079,relic_ilevel=940/940/940 | |
# Gear Summary | |
# gear_ilvl=934.00 | |
# gear_stamina=44478 | |
# gear_intellect=44256 | |
# gear_crit_rating=10824 | |
# gear_haste_rating=8868 | |
# gear_mastery_rating=6016 | |
# gear_versatility_rating=4710 | |
# gear_armor=2122 | |
# set_bonus=tier19_2pc=1 | |
# set_bonus=tier20_2pc=1 | |
# set_bonus=tier20_4pc=1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Current peak DPS (apprx.)
HecticAddCleave
1.953mShit to do (in no particular order)
Eking every last bit of DPS out of the default gear is always welcome. This includes any drastic rotational changes; we're still using the same rotation that we've used all expansion, basically.
With the exception of trinkets and ring enchants all gear has been stolen from the Frost profile. Initial stat weight calculations are favoring secondaries much more than primary, e.g.,
Vers > Crit ~= Mastery ~= Haste ~= Int > SP
. There are no known breakpoints as of right now for any stat, but that does not mean they don't exist.Arcane legendaries are fucking annoying. Some things to keep in mind: