Skip to content

Instantly share code, notes, and snippets.

@cgdangelo
Created May 27, 2017 00:23
Show Gist options
  • Save cgdangelo/5eee52ff4c1ab48860417505c9638907 to your computer and use it in GitHub Desktop.
Save cgdangelo/5eee52ff4c1ab48860417505c9638907 to your computer and use it in GitHub Desktop.
Arcane APLs
actions=
actions+=/time_warp,if=buff.bloodlust.down&(time=0|buff.arcane_power.up|target.time_to_die<buff.bloodlust.duration)
actions+=/call_action_list,name=build,if=buff.arcane_charge.stack<buff.arcane_charge.max_stack
actions+=/call_action_list,name=single
actions.build=
actions.build+=/charged_up
actions.build+=/arcane_missiles,if=buff.arcane_missiles.react=buff.arcane_missiles.max_stack
actions.build+=/arcane_blast
actions.single=
actions.single+=/stop_burn_phase,if=prev_gcd.1.evocation&!cooldown.evocation.up
actions.single+=/start_burn_phase,if=cooldown.arcane_power.up&cooldown.evocation.remains<=burn_phase_duration
actions.single+=/mark_of_aluneth
actions.single+=/rune_of_power
actions.single+=/use_item,slot=trinket1
actions.single+=/use_item,slot=trinket2
actions.single+=/arcane_power
actions.single+=/berserking
actions.single+=/blood_fury
actions.single+=/potion,if=buff.berserking.up|buff.blood_fury.up|!(race.troll|race.orc)
actions.single+=/presence_of_mind
actions.single+=/arcane_missiles,if=buff.arcane_missiles.react
actions.single+=/arcane_blast,if=burn_phase|buff.rune_of_power.up
actions.single+=/evocation,interrupt_if=ticks=2
actions.single+=/arcane_barrage
head=crown_of_the_arcane_tempest,id=147147,ilevel=935
neck=string_of_extracted_incisors,id=147013,ilevel=935,enchant=mark_of_the_hidden_satyr
shoulders=mantle_of_the_arcane_tempest,id=147150,ilevel=935
back=cloak_of_everburning_knowledge,id=138365,ilevel=905
chest=robes_of_the_arcane_tempest,id=147149,ilevel=935
wrist=oathbreakers_cuffs,id=147001,ilevel=935
hands=gloves_of_everburning_knowledge,id=138309,ilevel=905
waist=braided_torture_lash,id=146998,ilevel=935
legs=leggings_of_the_arcane_tempest,id=147148,ilevel=935
feet=slippers_of_enduring_vigilance,id=146987,ilevel=935
finger1=seal_of_the_second_duumvirate,id=147195,ilevel=935
finger2=yathaes_thumb_ring,id=147021,ilevel=935
trinket1=terror_from_below,id=147016,ilevel=935
trinket2=tarnished_sentinel_medallion,id=147017,ilevel=935
main_hand=aluneth,id=127857,ilevel=954
mage="Mage_Arcane_T20M_2P+4P"
level=110
race=troll
role=spell
position=back
talents=2022031
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
spec=arcane
# Default consumables
potion=deadly_grace
flask=whispered_pact
food=lavish_suramar_feast
augmentation=defiled
########################################################################################################################
# Precombat Actions #
########################################################################################################################
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+=/mark_of_aluneth,if=set_bonus.tier20_2pc|talent.charged_up.enabled
actions.precombat+=/arcane_blast,if=!(set_bonus.tier20_2pc|talent.charged_up.enabled)
########################################################################################################################
# Default Actions #
########################################################################################################################
actions=
# 3 different lust scenarios to support Shard:
# * On pull
# * During Arcane Power
# * End of fight
actions+=/time_warp,if=buff.bloodlust.down&(time=0|buff.arcane_power.up|target.time_to_die<=buff.bloodlust.duration)
# Set variables used throughout the APL.
actions+=/call_action_list,name=variables
# Build Arcane Charges before doing anything else.
actions+=/call_action_list,name=build,if=buff.arcane_charge.stack<buff.arcane_charge.max_stack
# 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 #
########################################################################################################################
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:
# * Arcane Power
# * Evocation will be up by the end of a burn
# * Presence of Mind (if 2pt20)
# * 1 Rune of Power charge
#
# Need Arcane Power to burn.
actions.variables+=/variable,name=time_until_burn,op=set,value=cooldown.arcane_power.remains
# 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
# special variable burn_phase_duration as an estimate of when Evocation _might_ be up.
actions.variables+=/variable,name=time_until_burn,op=max,value=cooldown.evocation.remains-burn_phase_duration
# 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,if=set_bonus.tier20_2pc
# We need an RoP charge if we've actually taken the talent. Check recharge_time 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.recharge_time,if=talent.rune_of_power.enabled&action.rune_of_power.charges<1
# 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<burn_phase_duration
actions.variables+=/variable,name=time_until_burn,op=print
########################################################################################################################
# Build Actions #
########################################################################################################################
actions.build=
actions.build+=/charged_up,if=buff.arcane_charge.stack<=1
actions.build+=/arcane_missiles,if=variable.arcane_missiles_procs=buff.arcane_missiles.max_stack
actions.build+=/arcane_blast
########################################################################################################################
# Burn Actions #
########################################################################################################################
actions.burn=
# @TODO Extra Evocation cooldown check to (hopefully) implement Gravity Spiral better.
actions.burn+=/stop_burn_phase,if=prev_gcd.1.evocation&cooldown.evocation.remains>burn_phase_duration
actions.burn+=/start_burn_phase,if=!burn_phase
actions.burn+=/mark_of_aluneth
actions.burn+=/rune_of_power
actions.burn+=/arcane_power
actions.burn+=/berserking
actions.burn+=/blood_fury
actions.burn+=/potion,if=buff.berserking.up|buff.blood_fury.up|!(race.troll|race.orc)
actions.burn+=/use_item,slot=trinket1
actions.burn+=/use_item,slot=trinket2
actions.burn+=/presence_of_mind,if=set_bonus.tier20_2pc
actions.burn+=/arcane_blast,if=buff.presence_of_mind.up&buff.rune_of_power.remains<=buff.presence_of_mind.stack*action.arcane_blast.execute_time
actions.burn+=/arcane_missiles,if=variable.arcane_missiles_procs
actions.burn+=/arcane_blast
actions.burn+=/evocation,interrupt_if=ticks=2|mana.pct=100
########################################################################################################################
# Conserve Actions #
########################################################################################################################
actions.conserve=
actions.conserve+=/mark_of_aluneth,if=variable.time_until_burn>=30
actions.conserve+=/rune_of_power,if=charges=max_charges|prev_gcd.1.mark_of_aluneth|target.time_to_die<variable.time_until_burn+burn_phase_duration
actions.conserve+=/arcane_blast,if=mana.pct>99
actions.conserve+=/arcane_missiles,if=variable.arcane_missiles_procs
actions.conserve+=/arcane_barrage
head=crown_of_the_arcane_tempest,id=147147,ilevel=935
neck=string_of_extracted_incisors,id=147013,ilevel=935,enchant=mark_of_the_hidden_satyr
shoulders=mantle_of_the_arcane_tempest,id=147150,ilevel=935
back=cloak_of_everburning_knowledge,id=138365,ilevel=905
chest=robes_of_the_arcane_tempest,id=147149,ilevel=935
wrist=oathbreakers_cuffs,id=147001,ilevel=935
hands=gloves_of_everburning_knowledge,id=138309,ilevel=905
waist=braided_torture_lash,id=146998,ilevel=935
legs=leggings_of_the_arcane_tempest,id=147148,ilevel=935
feet=slippers_of_enduring_vigilance,id=146987,ilevel=935
finger1=seal_of_the_second_duumvirate,id=147195,ilevel=935
finger2=yathaes_thumb_ring,id=147021,ilevel=935
trinket1=terror_from_below,id=147016,ilevel=935
trinket2=tarnished_sentinel_medallion,id=147017,ilevel=935
main_hand=aluneth,id=127857,ilevel=954
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment