Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Automata.EnabledRotation[254] = true
- Automata.Rotation.Version[254] = "Mar 14, 2019"
- local addonName, addonTable = ...;
- local HL = HeroLibEx;
- local Cache = HeroCache;
- local Unit = HL.Unit;
- local Player = Unit.Player;
- local Target = Unit.Target;
- local Spell = HL.Spell;
- local Item = HL.Item;
- local Ex = Unit.Ex;
- Automata.Spell[254] = {
- HuntersMarkDebuff = Spell(257284),
- HuntersMark = Spell(257284),
- DoubleTap = Spell(260402),
- TrueshotBuff = Spell(288613),
- Trueshot = Spell(288613),
- AimedShot = Spell(19434),
- UnerringVisionBuff = Spell(274446),
- UnerringVision = Spell(274444),
- CallingtheShots = Spell(260404),
- SurgingShots = Spell(287707),
- Streamline = Spell(260367),
- FocusedFire = Spell(278531),
- RapidFire = Spell(257044),
- Berserking = Spell(26297),
- BerserkingBuff = Spell(26297),
- CarefulAim = Spell(260228),
- BloodFury = Spell(20572),
- BloodFuryBuff = Spell(20572),
- AncestralCall = Spell(274738),
- Fireblood = Spell(265221),
- LightsJudgment = Spell(255647),
- ExplosiveShot = Spell(212431),
- Barrage = Spell(120360),
- AMurderofCrows = Spell(131894),
- SerpentSting = Spell(271788),
- SerpentStingDebuff = Spell(271788),
- ArcaneShot = Spell(185358),
- MasterMarksmanBuff = Spell(269576),
- PreciseShotsBuff = Spell(260242),
- IntheRhythm = Spell(264198),
- PiercingShot = Spell(198670),
- SteadyShot = Spell(56641),
- TrickShotsBuff = Spell(257622),
- Multishot = Spell(257620),
- -- Defensive
- AspectoftheTurtle = Spell(186265),
- Exhilaration = Spell(109304),
- -- Utility
- AspectoftheCheetah = Spell(186257),
- CounterShot = Spell(147362),
- Disengage = Spell(781),
- FreezingTrap = Spell(187650),
- FeignDeath = Spell(5384),
- TarTrap = Spell(187698),
- }
- local S = Automata.Spell[254]
- local E = Automata.Spell[999]
- local function CreateConfig()
- if not Automata.db.profile[254] then
- Automata.db.profile[254] = {
- cooldown = true,
- exhilaration = 65,
- aspectoftheturtle = 30,
- ["Turtle"] = {
- Value = 60,
- SpellID = S.AspectoftheTurtle:ID(),
- minValue = 0,
- maxValue = 100,
- Custom = "HP",
- },
- ["Exhilaration"] = {
- Value = 25,
- SpellID = S.Exhilaration:ID(),
- minValue = 0,
- maxValue = 100,
- Custom = "HP",
- },
- }
- end
- end
- Automata.SetConfig(254, CreateConfig)
- if not Item.Hunter then
- Item.Hunter = {}
- end
- Item.Hunter.Marksmanship = {
- -- Legendaries
- SephuzSecret = Item(132452, { 11, 12 }),
- -- Trinkets
- onvergenceofFates = Item(140806, { 13, 14 }),
- -- Potions
- PotionOfProlongedPower = Item(142117),
- }
- local I = Item.Hunter.Marksmanship
- S.AimedShot:RegisterInFlight()
- S.SerpentSting:RegisterInFlight()
- local function num(val)
- if val then
- return 1
- else
- return 0
- end
- end
- local function bool(val)
- return val ~= 0
- end
- local function ca_execute(TargetedUnit)
- local TargetedUnit = TargetedUnit or Target
- return S.CarefulAim:IsAvailable() and ( TargetedUnit:HealthPercentage() > 80 or TargetedUnit:HealthPercentage() < 20 )
- end
- --- APL Main
- local function APL ()
- local Precombat, Cds, St, Trickshots
- if Player:IsChanneling() then
- return Automata.mediaDir .. "channel.tga"
- end
- if not Player:AffectingCombat() then
- return Automata.SpecIcon
- end
- Precombat = function()
- -- flask
- -- augmentation
- -- food
- -- snapshot_stats
- -- potion
- -- hunters_mark
- end
- Cds = function()
- -- actions.cds=hunters_mark,if=debuff.hunters_mark.down&!buff.trueshot.up
- if S.HuntersMark:CanCast(Target) and (not Target:Debuff(S.HuntersMarkDebuff) and not Player:Buff(S.TrueshotBuff)) then
- return S.HuntersMark:Cast(Target)
- end
- -- actions.cds+=/double_tap,if=cooldown.rapid_fire.remains<gcd|cooldown.rapid_fire.remains<cooldown.aimed_shot.remains|target.time_to_die<20
- if S.DoubleTap:CastCycle(function(target) return S.RapidFire:CooldownRemains() < Player:GCD() or S.RapidFire:CooldownRemains() < S.AimedShot:CooldownRemains() or target:TimeToDie() < 20 end, 'Enemies') then
- return 'actions.cds+=/double_tap,if=cooldown.rapid_fire.remains<gcd|cooldown.rapid_fire.remains<cooldown.aimed_shot.remains|target.time_to_die<20'
- end
- -- actions.cds+=/berserking,if=buff.trueshot.up&(target.time_to_die>cooldown.berserking.duration+duration|(target.health.pct<20|!talent.careful_aim.enabled))|target.time_to_die<13
- if S.Berserking:CanCast(Player) and Automata.CDsON() and (Player:BuffP(S.Trueshot) and (Target:TimeToDie() > S.Berserking:CooldownRemainsP() + S.BerserkingBuff:BaseDuration() or (Target:HealthPercentage() < 20 or not S.CarefulAim:IsAvailable())) or Target:TimeToDie() < 13) then
- return S.Berserking:Cast(Player)
- end
- -- actions.cds+=/blood_fury,if=buff.trueshot.up&(target.time_to_die>cooldown.blood_fury.duration+duration|(target.health.pct<20|!talent.careful_aim.enabled))|target.time_to_die<16
- if S.BloodFury:CanCast(Player) and Automata.CDsON() and (Player:BuffP(S.Trueshot) and (Target:TimeToDie() > S.BloodFury:CooldownRemainsP() + S.BloodFuryBuff:BaseDuration() or (Target:HealthPercentage() < 20 or not S.CarefulAim:IsAvailable())) or Target:TimeToDie() < 16) then
- return S.BloodFury:Cast(Player)
- end
- -- actions.cds+=/ancestral_call,if=buff.trueshot.up&(target.time_to_die>cooldown.ancestral_call.duration+duration|(target.health.pct<20|!talent.careful_aim.enabled))|target.time_to_die<16
- if S.AncestralCall:CanCast(Player) and Automata.CDsON() and (Player:BuffP(S.TrueshotBuff) and (Target:TimeToDie() > S.AncestralCall:CooldownRemainsP() + S.AncestralCall:BaseDuration() or (Target:HealthPercentage() < 20 or not S.CarefulAim:IsAvailable())) or Target:TimeToDie() < 16) then
- return S.AncestralCall:Cast(Player)
- end
- -- actions.cds+=/fireblood,if=buff.trueshot.up&(target.time_to_die>cooldown.fireblood.duration+duration|(target.health.pct<20|!talent.careful_aim.enabled))|target.time_to_die<9
- if S.Fireblood:CanCast(Player) and Automata.CDsON() and (Player:BuffP(S.Trueshot) and (Target:TimeToDie() > S.Fireblood:CooldownRemainsP() + S.Fireblood:BaseDuration() or (Target:HealthPercentage() < 20 or not S.CarefulAim:IsAvailable())) or Target:TimeToDie() < 9) then
- return S.Fireblood:Cast(Player)
- end
- -- actions.cds+=/lights_judgment
- if S.LightsJudgment:CanCast(Player) and Automata.CDsON() then
- return S.LightsJudgment:Cast(Player)
- end
- --aworldvein_resonance,if=buff.lifeblood.stack<4
- if E.WorldveinResonance:CanCast(Player) and Player:BuffStack(E.WorldveinResonanceAura) < 4 then
- return E.WorldveinResonance:Cast()
- end
- -- actions.cds+=/guardian_of_azeroth,if=cooldown.trueshot.remains<15
- if E.GuardianofAzeroth:CanCast(Target) and S.Trueshot:CooldownRemains() < 15 then
- return E.GuardianofAzeroth:Cast()
- end
- -- actions.cds+=/ripple_in_space,if=cooldown.trueshot.remains<7
- if E.RippleinSpace:CanCast(Target) and S.Trueshot:CooldownRemains() < 7 then
- return E.RippleinSpace:Cast()
- end
- --actions.cds+=/memory_of_lucid_dreams
- if E.MemoryofLucidDreams:CanCast(Player) then
- return E.MemoryofLucidDreams:Cast()
- end
- --actions.cds+=/trueshot,if=focus>60&(buff.precise_shots.down&cooldown.rapid_fire.remains&target.time_to_die>cooldown.trueshot.duration_guess+duration|target.health.pct<20|!talent.careful_aim.enabled)|target.time_to_die<15
- if S.Trueshot:CanCast(Player) and Automata.CDsON() and (Player:Focus() > 60 and (Player:BuffDown(S.PreciseShotsBuff) and S.RapidFire:CooldownDown() and Target:TimeToDie() > S.Trueshot:CooldownRemains() or Target:HealthPercentage() < 20 or not S.CarefulAim:IsAvailable()) or Target:TimeToDie() < 15) then
- return S.Trueshot:Cast(Player)
- end
- end
- St = function()
- -- explosive_shot
- if S.ExplosiveShot:CanCast(Target) then
- return S.ExplosiveShot:Cast(Target)
- end
- -- barrage,if=active_enemies>1
- if S.Barrage:CanCast(Target) and Player:IsFacingNarrow(Target) and (Target:EnemiesAround(10) > 1) then
- return S.Barrage:Cast(Target)
- end
- -- a_murder_of_crows
- if S.AMurderofCrows:CanCast(Target) then
- return S.AMurderofCrows:Cast(Target)
- end
- -- serpent_sting,if=refreshable&!action.serpent_sting.in_flight
- if S.SerpentSting:CanCast(Target) and (Target:DebuffRefreshableCP(S.SerpentStingDebuff) and not S.SerpentSting:InFlight()) then
- return S.SerpentSting:Cast(Target)
- end
- -- actions.st+=/rapid_fire,if=buff.trueshot.down|focus<70
- if S.RapidFire:CanCast(Target) and (Player:BuffDown(S.TrueshotBuff) or Player:Focus() < 70) then
- return S.RapidFire:Cast(Target)
- end
- -- actions.st+=/arcane_shot,if=buff.trueshot.up&buff.master_marksman.up&!buff.memory_of_lucid_dreams.up
- if S.ArcaneShot:CanCast(Target) and (Player:Buff(S.TrueshotBuff) and Player:Buff(S.MasterMarksmanBuff) and not Player:Buff(E.MemoryofLucidDreams)) then
- return S.ArcaneShot:Cast(Target)
- end
- --actions.st+=/aimed_shot,if=buff.trueshot.up|(buff.double_tap.down|ca_execute)&buff.precise_shots.down|full_recharge_time<cast_time
- if S.AimedShot:CanCast(Target) and (Player:Buff(S.TrueshotBuff) or (Player:BuffDown(S.DoubleTap) or ca_execute()) and Player:BuffDown(S.PreciseShotsBuff) or S.AimedShot:FullRechargeTime() < S.AimedShot:CastTime()) then
- return S.AimedShot:Cast(Target)
- end
- --actions.st+=/arcane_shot,if=buff.trueshot.up&buff.master_marksman.up&buff.memory_of_lucid_dreams.up
- if S.ArcaneShot:CanCast(Target) and (Player:Buff(S.TrueshotBuff) and Player:Buff(S.MasterMarksmanBuff) and Player:Buff(E.MemoryofLucidDreams)) then
- return S.ArcaneShot:Cast(Target)
- end
- -- piercing_shot
- if S.PiercingShot:CanCast(Target) then
- return S.PiercingShot:Cast(Target)
- end
- --actions.st+=/focused_azerite_beam
- if E.FocusedAzeriteBeam:CanCast(Target) then
- return E.FocusedAzeriteBeam:Cast(Target)
- end
- --actions.st+=/purifying_blast
- if E.PurifyingBlast:CanCast(Target) then
- return E.PurifyingBlast:Cast(Target)
- end
- --actions.st+=/concentrated_flame
- if E.ConcentratedFlame:CanCast(Target) then
- return E.ConcentratedFlame:Cast(Target)
- end
- --actions.st+=/blood_of_the_enemy
- if E.BloodoftheEnemy:CanCast(Target) then
- return E.BloodoftheEnemy:Cast(Target)
- end
- --the_unbound_force,if=buff.reckless_force.up|buff.reckless_force_counter.stack<10
- if E.TheUnboundForce:CanCast(Target) and (Player:Buff(E.TheUnboundForceAura) or Player:BuffStack(E.TheUnboundForceAura) < 10) then
- return E.TheUnboundForce:Cast(Target)
- end
- --actions.st+=/arcane_shot,if=buff.trueshot.down&(buff.precise_shots.up&(focus>41|buff.master_marksman.up)|(focus>50&azerite.focused_fire.enabled|focus>75)&(cooldown.trueshot.remains>5|focus>80)|target.time_to_die<5)
- if S.ArcaneShot:CanCast(Target) and (Player:BuffDown(S.TrueshotBuff) and (Player:Buff(S.PreciseShotsBuff) and (Player:Focus() > 41 or Player:Buff(S.MasterMarksmanBuff)) or (Player:Focus() > 50 and S.FocusedFire:AzeriteEnabled() or Player:Focus() > 75) and (S.Trueshot:CooldownRemains() > 5 or Player:Focus() > 80) or Target:TimeToDie() < 5)) then
- return S.ArcaneShot:Cast(Target)
- end
- -- arcane_shot,if=focus>85|(buff.precise_shots.up|focus>45&cooldown.trueshot.remains&target.time_to_die<25)&buff.trueshot.down|target.time_to_die<5
- if S.ArcaneShot:CanCast(Target) and (Player:Focus() > 85 or (Player:BuffP(S.PreciseShotsBuff) or Player:Focus() > 45 and bool(S.Trueshot:CooldownRemainsP()) and Target:TimeToDie() < 25) and Player:BuffDownP(S.Trueshot) or Target:TimeToDie() < 5) then
- return S.ArcaneShot:Cast(Target)
- end
- -- steady_shot
- if S.SteadyShot:CanCast(Target) then
- return S.SteadyShot:Cast(Target)
- end
- end
- Trickshots = function()
- -- barrage
- if S.Barrage:CanCast(Target) and Player:EnemiesInCone(45, 20) > 1 then
- return S.Barrage:Cast(Target)
- end
- -- explosive_shot
- if S.ExplosiveShot:CanCast(Target) then
- return S.ExplosiveShot:Cast(Target)
- end
- --actions.trickshots+=/aimed_shot,if=buff.trick_shots.up&ca_execute&buff.double_tap.up
- if S.AimedShot:CanCast(Target) and Player:Buff(S.TrickShotsBuff) and ca_execute() and Player:Buff(S.DoubleTap) then
- return S.AimedShot:Cast(Target)
- end
- --actions.trickshots+=/rapid_fire,if=buff.trick_shots.up&(azerite.focused_fire.enabled|azerite.in_the_rhythm.rank>1|azerite.surging_shots.enabled|talent.streamline.enabled)
- if S.RapidFire:CanCast(Target) and (Player:Buff(S.TrickShotsBuff) and (S.FocusedFire:AzeriteEnabled() or S.IntheRhythm:AzeriteRank() > 1 or S.SurgingShots:AzeriteEnabled() or S.Streamline:IsAvailable())) then
- return S.RapidFire:Cast(Target)
- end
- --actions.trickshots+=/aimed_shot,if=buff.trick_shots.up&(buff.precise_shots.down|cooldown.aimed_shot.full_recharge_time<action.aimed_shot.cast_time|buff.trueshot.up)
- if S.AimedShot:CanCast(Target) and (Player:Buff(S.TrickShotsBuff) and (Player:BuffDown(S.PreciseShotsBuff) or S.AimedShot:FullRechargeTime() < S.AimedShot:CastTime() or Player:Buff(S.TrueshotBuff))) then
- return S.AimedShot:Cast(Target)
- end
- --actions.trickshots+=/rapid_fire,if=buff.trick_shots.up
- if S.RapidFire:CanCast(Target) and Player:Buff(S.TrickShotsBuff) then
- return S.RapidFire:Cast(Target)
- end
- --actions.trickshots+=/multishot,if=buff.trick_shots.down|buff.precise_shots.up&!buff.trueshot.up|focus>70
- if S.Multishot:CanCast(Target) and (Player:BuffDown(S.TrickShotsBuff) or Player:Buff(S.PreciseShotsBuff) or Player:Buff(S.TrueshotBuff) or Player:Focus() > 70) then
- return S.Multishot:Cast(Target)
- end
- --actions.trickshots+=/focused_azerite_beam
- if E.FocusedAzeriteBeam:CanCast(Target) then
- return E.FocusedAzeriteBeam:Cast(Target)
- end
- --actions.trickshots+=/purifying_blast
- if E.PurifyingBlast:CanCast(Target) then
- return E.PurifyingBlast:Cast(Target)
- end
- --a-ctions.trickshots+=/concentrated_flame
- if E.ConcentratedFlame:CanCast(Target) then
- return E.ConcentratedFlame:Cast(Target)
- end
- --actions.trickshots+=/blood_of_the_enemy
- if E.BloodoftheEnemy:CanCast(Target) then
- return E.BloodoftheEnemy:Cast(Target)
- end
- --actions.trickshots+=/the_unbound_force
- if E.TheUnboundForce:CanCast(Target) then
- return E.TheUnboundForce:Cast(Target)
- end
- --actions.trickshots+=/piercing_shot
- if S.PiercingShot:CanCast(Target) then
- return S.PiercingShot:Cast(Target)
- end
- --actions.trickshots+=/a_murder_of_crows
- if S.AMurderofCrows:CanCast(Target) then
- return S.AMurderofCrows:Cast(Target)
- end
- --actions.trickshots+=/serpent_sting,if=refreshable&!action.serpent_sting.in_flight
- if S.SerpentSting:CastCycle(function(target) return target:DebuffRefreshableCP(S.SerpentStingDebuff) and not S.SerpentSting:InFlight() end, 'Enemies') then
- return '--actions.trickshots+=/serpent_sting,if=refreshable&!action.serpent_sting.in_flight'
- end
- --actions.trickshots+=/steady_shot
- if S.SteadyShot:CanCast(Target) then
- return S.SteadyShot:Cast(Target)
- end
- end
- -- call precombat
- if not Player:AffectingCombat() then
- local ShouldReturn = Precombat();
- if ShouldReturn then
- return ShouldReturn;
- end
- end
- if true then
- local ShouldReturn = Automata.QueueSkillCast();
- if ShouldReturn then
- return ShouldReturn;
- end
- end
- if Automata.TargetIsValid() then
- -- auto_shot
- -- use_items,if=buff.trueshot.up|!talent.calling_the_shots.enabled|target.time_to_die<20
- -- call_action_list,name=cds
- if (true) then
- local ShouldReturn = Cds();
- if ShouldReturn then
- return ShouldReturn;
- end
- end
- -- call_action_list,name=st,if=active_enemies<3
- if (Target:EnemiesAround(10) < 3) then
- local ShouldReturn = St();
- if ShouldReturn then
- return ShouldReturn;
- end
- end
- -- call_action_list,name=trickshots,if=active_enemies>2
- if (Target:EnemiesAround(10) > 2) then
- local ShouldReturn = Trickshots();
- if ShouldReturn then
- return ShouldReturn;
- end
- end
- end
- return Automata.SpecIcon
- end
- Automata.Rotation.SetAPL(254, APL)
- local function PASSIVE()
- if S.Exhilaration:CanCast(Player) and Player:HealthPercentage() <= Automata.GetClassDB(254, "Exhilaration").Value then
- return S.Exhilaration:Cast(Player)
- end
- if S.AspectoftheTurtle:CanCast(Player) and Player:HealthPercentage() <= Automata.GetClassDB(254, "Turtle").Value then
- return S.AspectoftheTurtle:Cast(Player)
- end
- return Automata.Shared()
- end
- Automata.Rotation.SetPASSIVE(254, PASSIVE)
- local function PvP()
- return nil
- end
- Automata.Rotation.SetPvP(254, PvP);
- --bfc6597
- --[[
- # Executed before combat begins. Accepts non-harmful actions only.
- actions.precombat=flask
- actions.precombat+=/augmentation
- actions.precombat+=/food
- # Snapshot raid buffed stats before combat begins and pre-potting is done.
- actions.precombat+=/snapshot_stats
- actions.precombat+=/potion
- actions.precombat+=/hunters_mark
- # Precast this as early as possible to potentially gain another cast during the fight.
- actions.precombat+=/double_tap,precast_time=10
- actions.precombat+=/worldvein_resonance
- actions.precombat+=/guardian_of_azeroth
- actions.precombat+=/memory_of_lucid_dreams
- actions.precombat+=/trueshot,precast_time=1.5,if=active_enemies>2
- actions.precombat+=/aimed_shot,if=active_enemies<3
- # Executed every time the actor is available.
- actions=auto_shot
- actions+=/use_item,name=galecallers_boon,if=buff.trueshot.up|!talent.calling_the_shots.enabled|target.time_to_die<10
- # Try to line up activated trinkets with Trueshot
- actions+=/use_items,if=buff.trueshot.up|!talent.calling_the_shots.enabled|target.time_to_die<20
- actions+=/call_action_list,name=cds
- actions+=/call_action_list,name=st,if=active_enemies<3
- actions+=/call_action_list,name=trickshots,if=active_enemies>2
- actions.cds=hunters_mark,if=debuff.hunters_mark.down&!buff.trueshot.up
- actions.cds+=/double_tap,if=cooldown.rapid_fire.remains<gcd|cooldown.rapid_fire.remains<cooldown.aimed_shot.remains|target.time_to_die<20
- actions.cds+=/berserking,if=buff.trueshot.up&(target.time_to_die>cooldown.berserking.duration+duration|(target.health.pct<20|!talent.careful_aim.enabled))|target.time_to_die<13
- actions.cds+=/blood_fury,if=buff.trueshot.up&(target.time_to_die>cooldown.blood_fury.duration+duration|(target.health.pct<20|!talent.careful_aim.enabled))|target.time_to_die<16
- actions.cds+=/ancestral_call,if=buff.trueshot.up&(target.time_to_die>cooldown.ancestral_call.duration+duration|(target.health.pct<20|!talent.careful_aim.enabled))|target.time_to_die<16
- actions.cds+=/fireblood,if=buff.trueshot.up&(target.time_to_die>cooldown.fireblood.duration+duration|(target.health.pct<20|!talent.careful_aim.enabled))|target.time_to_die<9
- actions.cds+=/lights_judgment
- actions.cds+=/worldvein_resonance
- actions.cds+=/guardian_of_azeroth,if=cooldown.trueshot.remains<15
- actions.cds+=/ripple_in_space,if=cooldown.trueshot.remains<7
- actions.cds+=/memory_of_lucid_dreams
- actions.cds+=/potion,if=buff.trueshot.react&buff.bloodlust.react|buff.trueshot.up&ca_execute|target.time_to_die<25
- actions.cds+=/trueshot,if=focus>60&(buff.precise_shots.down&cooldown.rapid_fire.remains&target.time_to_die>cooldown.trueshot.duration_guess+duration|target.health.pct<20|!talent.careful_aim.enabled)|target.time_to_die<15
- actions.st=explosive_shot
- actions.st+=/barrage,if=active_enemies>1
- actions.st+=/a_murder_of_crows
- actions.st+=/serpent_sting,if=refreshable&!action.serpent_sting.in_flight
- actions.st+=/rapid_fire,if=buff.trueshot.down|focus<70
- actions.st+=/arcane_shot,if=buff.trueshot.up&buff.master_marksman.up&!buff.memory_of_lucid_dreams.up
- actions.st+=/aimed_shot,if=buff.trueshot.up|(buff.double_tap.down|ca_execute)&buff.precise_shots.down|full_recharge_time<cast_time
- actions.st+=/arcane_shot,if=buff.trueshot.up&buff.master_marksman.up&buff.memory_of_lucid_dreams.up
- actions.st+=/piercing_shot
- actions.st+=/focused_azerite_beam
- actions.st+=/purifying_blast
- actions.st+=/concentrated_flame
- actions.st+=/blood_of_the_enemy
- actions.st+=/the_unbound_force
- actions.st+=/arcane_shot,if=buff.trueshot.down&(buff.precise_shots.up&(focus>41|buff.master_marksman.up)|(focus>50&azerite.focused_fire.enabled|focus>75)&(cooldown.trueshot.remains>5|focus>80)|target.time_to_die<5)
- actions.st+=/steady_shot
- actions.trickshots=barrage
- actions.trickshots+=/explosive_shot
- actions.trickshots+=/aimed_shot,if=buff.trick_shots.up&ca_execute&buff.double_tap.up
- actions.trickshots+=/rapid_fire,if=buff.trick_shots.up&(azerite.focused_fire.enabled|azerite.in_the_rhythm.rank>1|azerite.surging_shots.enabled|talent.streamline.enabled)
- actions.trickshots+=/aimed_shot,if=buff.trick_shots.up&(buff.precise_shots.down|cooldown.aimed_shot.full_recharge_time<action.aimed_shot.cast_time|buff.trueshot.up)
- actions.trickshots+=/rapid_fire,if=buff.trick_shots.up
- actions.trickshots+=/multishot,if=buff.trick_shots.down|buff.precise_shots.up&!buff.trueshot.up|focus>70
- actions.trickshots+=/focused_azerite_beam
- actions.trickshots+=/purifying_blast
- actions.trickshots+=/concentrated_flame
- actions.trickshots+=/blood_of_the_enemy
- actions.trickshots+=/the_unbound_force
- actions.trickshots+=/piercing_shot
- actions.trickshots+=/a_murder_of_crows
- actions.trickshots+=/serpent_sting,if=refreshable&!action.serpent_sting.in_flight
- actions.trickshots+=/steady_shot
- ]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement