Advertisement
jrubimf

Untitled

Nov 12th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 22.78 KB | None | 0 0
  1. Automata.EnabledRotation[254] = true
  2. Automata.Rotation.Version[254] = "Mar 14, 2019"
  3.  
  4. local addonName, addonTable = ...;
  5. local HL = HeroLibEx;
  6. local Cache = HeroCache;
  7. local Unit = HL.Unit;
  8. local Player = Unit.Player;
  9. local Target = Unit.Target;
  10. local Spell = HL.Spell;
  11. local Item = HL.Item;
  12. local Ex = Unit.Ex;
  13.  
  14. Automata.Spell[254] = {
  15.     HuntersMarkDebuff = Spell(257284),
  16.     HuntersMark = Spell(257284),
  17.     DoubleTap = Spell(260402),
  18.     TrueshotBuff = Spell(288613),
  19.     Trueshot = Spell(288613),
  20.     AimedShot = Spell(19434),
  21.     UnerringVisionBuff = Spell(274446),
  22.     UnerringVision = Spell(274444),
  23.     CallingtheShots = Spell(260404),
  24.     SurgingShots = Spell(287707),
  25.     Streamline = Spell(260367),
  26.     FocusedFire = Spell(278531),
  27.     RapidFire = Spell(257044),
  28.     Berserking = Spell(26297),
  29.     BerserkingBuff = Spell(26297),
  30.     CarefulAim = Spell(260228),
  31.     BloodFury = Spell(20572),
  32.     BloodFuryBuff = Spell(20572),
  33.     AncestralCall = Spell(274738),
  34.     Fireblood = Spell(265221),
  35.     LightsJudgment = Spell(255647),
  36.     ExplosiveShot = Spell(212431),
  37.     Barrage = Spell(120360),
  38.     AMurderofCrows = Spell(131894),
  39.     SerpentSting = Spell(271788),
  40.     SerpentStingDebuff = Spell(271788),
  41.     ArcaneShot = Spell(185358),
  42.     MasterMarksmanBuff = Spell(269576),
  43.     PreciseShotsBuff = Spell(260242),
  44.     IntheRhythm = Spell(264198),
  45.     PiercingShot = Spell(198670),
  46.     SteadyShot = Spell(56641),
  47.     TrickShotsBuff = Spell(257622),
  48.     Multishot = Spell(257620),
  49.     -- Defensive
  50.     AspectoftheTurtle = Spell(186265),
  51.     Exhilaration = Spell(109304),
  52.     -- Utility
  53.     AspectoftheCheetah = Spell(186257),
  54.     CounterShot = Spell(147362),
  55.     Disengage = Spell(781),
  56.     FreezingTrap = Spell(187650),
  57.     FeignDeath = Spell(5384),
  58.     TarTrap = Spell(187698),
  59. }
  60.  
  61. local S = Automata.Spell[254]
  62. local E = Automata.Spell[999]
  63.  
  64. local function CreateConfig()
  65.     if not Automata.db.profile[254] then
  66.         Automata.db.profile[254] = {
  67.             cooldown = true,
  68.             exhilaration = 65,
  69.             aspectoftheturtle = 30,
  70.  
  71.  
  72.             ["Turtle"] = {
  73.                 Value = 60,
  74.                 SpellID = S.AspectoftheTurtle:ID(),
  75.                 minValue = 0,
  76.                 maxValue = 100,
  77.                 Custom = "HP",
  78.             },
  79.            
  80.             ["Exhilaration"] = {
  81.                 Value = 25,
  82.                 SpellID = S.Exhilaration:ID(),
  83.                 minValue = 0,
  84.                 maxValue = 100,
  85.                 Custom = "HP",
  86.             },
  87.         }
  88.     end
  89. end
  90. Automata.SetConfig(254, CreateConfig)
  91.  
  92. if not Item.Hunter then
  93.     Item.Hunter = {}
  94. end
  95.  
  96. Item.Hunter.Marksmanship = {
  97.     -- Legendaries
  98.     SephuzSecret = Item(132452, { 11, 12 }),
  99.     -- Trinkets
  100.     onvergenceofFates = Item(140806, { 13, 14 }),
  101.     -- Potions
  102.     PotionOfProlongedPower = Item(142117),
  103. }
  104. local I = Item.Hunter.Marksmanship
  105.  
  106. S.AimedShot:RegisterInFlight()
  107. S.SerpentSting:RegisterInFlight()
  108.  
  109. local function num(val)
  110.     if val then
  111.         return 1
  112.     else
  113.         return 0
  114.     end
  115. end
  116.  
  117. local function bool(val)
  118.     return val ~= 0
  119. end
  120.  
  121. local function ca_execute(TargetedUnit)
  122.     local TargetedUnit = TargetedUnit or Target
  123.     return S.CarefulAim:IsAvailable() and ( TargetedUnit:HealthPercentage() > 80 or TargetedUnit:HealthPercentage() < 20 )
  124. end
  125.  
  126. --- APL Main
  127. local function APL ()
  128.     local Precombat, Cds, St, Trickshots
  129.  
  130.     if Player:IsChanneling() then
  131.         return Automata.mediaDir .. "channel.tga"
  132.     end
  133.  
  134.     if not Player:AffectingCombat() then
  135.         return Automata.SpecIcon
  136.     end
  137.  
  138.     Precombat = function()
  139.         -- flask
  140.         -- augmentation
  141.         -- food
  142.         -- snapshot_stats
  143.         -- potion
  144.         -- hunters_mark
  145.     end
  146.     Cds = function()
  147.         -- actions.cds=hunters_mark,if=debuff.hunters_mark.down&!buff.trueshot.up
  148.         if S.HuntersMark:CanCast(Target) and (not Target:Debuff(S.HuntersMarkDebuff) and not Player:Buff(S.TrueshotBuff)) then
  149.             return S.HuntersMark:Cast(Target)
  150.         end
  151.         -- actions.cds+=/double_tap,if=cooldown.rapid_fire.remains<gcd|cooldown.rapid_fire.remains<cooldown.aimed_shot.remains|target.time_to_die<20
  152.         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
  153.             return 'actions.cds+=/double_tap,if=cooldown.rapid_fire.remains<gcd|cooldown.rapid_fire.remains<cooldown.aimed_shot.remains|target.time_to_die<20'
  154.         end
  155.         -- 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
  156.         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
  157.             return S.Berserking:Cast(Player)
  158.         end
  159.         -- 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
  160.         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
  161.             return S.BloodFury:Cast(Player)
  162.         end
  163.         -- 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
  164.         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
  165.             return S.AncestralCall:Cast(Player)
  166.         end
  167.         -- 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
  168.         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
  169.             return S.Fireblood:Cast(Player)
  170.         end
  171.         -- actions.cds+=/lights_judgment
  172.         if S.LightsJudgment:CanCast(Player) and Automata.CDsON() then
  173.             return S.LightsJudgment:Cast(Player)
  174.         end
  175.  
  176.         --aworldvein_resonance,if=buff.lifeblood.stack<4
  177.         if E.WorldveinResonance:CanCast(Player) and Player:BuffStack(E.WorldveinResonanceAura) < 4 then
  178.             return E.WorldveinResonance:Cast()
  179.         end
  180.  
  181.         -- actions.cds+=/guardian_of_azeroth,if=cooldown.trueshot.remains<15
  182.         if E.GuardianofAzeroth:CanCast(Target) and S.Trueshot:CooldownRemains() < 15 then
  183.             return E.GuardianofAzeroth:Cast()
  184.         end
  185.  
  186.         -- actions.cds+=/ripple_in_space,if=cooldown.trueshot.remains<7
  187.         if E.RippleinSpace:CanCast(Target) and S.Trueshot:CooldownRemains() < 7 then
  188.             return E.RippleinSpace:Cast()
  189.         end
  190.  
  191.         --actions.cds+=/memory_of_lucid_dreams
  192.         if E.MemoryofLucidDreams:CanCast(Player) then
  193.             return E.MemoryofLucidDreams:Cast()
  194.         end
  195.  
  196.         --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
  197.         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
  198.             return S.Trueshot:Cast(Player)
  199.         end
  200.     end
  201.     St = function()
  202.         -- explosive_shot
  203.         if S.ExplosiveShot:CanCast(Target) then
  204.             return S.ExplosiveShot:Cast(Target)
  205.         end
  206.         -- barrage,if=active_enemies>1
  207.         if S.Barrage:CanCast(Target) and Player:IsFacingNarrow(Target) and (Target:EnemiesAround(10) > 1) then
  208.             return S.Barrage:Cast(Target)
  209.         end
  210.         -- a_murder_of_crows
  211.         if S.AMurderofCrows:CanCast(Target) then
  212.             return S.AMurderofCrows:Cast(Target)
  213.         end
  214.         -- serpent_sting,if=refreshable&!action.serpent_sting.in_flight
  215.         if S.SerpentSting:CanCast(Target) and (Target:DebuffRefreshableCP(S.SerpentStingDebuff) and not S.SerpentSting:InFlight()) then
  216.             return S.SerpentSting:Cast(Target)
  217.         end
  218.         -- actions.st+=/rapid_fire,if=buff.trueshot.down|focus<70
  219.         if S.RapidFire:CanCast(Target) and (Player:BuffDown(S.TrueshotBuff) or Player:Focus() < 70) then
  220.             return S.RapidFire:Cast(Target)
  221.         end
  222.         -- actions.st+=/arcane_shot,if=buff.trueshot.up&buff.master_marksman.up&!buff.memory_of_lucid_dreams.up
  223.         if S.ArcaneShot:CanCast(Target) and (Player:Buff(S.TrueshotBuff) and Player:Buff(S.MasterMarksmanBuff) and not Player:Buff(E.MemoryofLucidDreams)) then
  224.             return S.ArcaneShot:Cast(Target)
  225.         end
  226.         --actions.st+=/aimed_shot,if=buff.trueshot.up|(buff.double_tap.down|ca_execute)&buff.precise_shots.down|full_recharge_time<cast_time
  227.         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
  228.             return S.AimedShot:Cast(Target)
  229.         end
  230.  
  231.         --actions.st+=/arcane_shot,if=buff.trueshot.up&buff.master_marksman.up&buff.memory_of_lucid_dreams.up
  232.         if S.ArcaneShot:CanCast(Target) and (Player:Buff(S.TrueshotBuff) and Player:Buff(S.MasterMarksmanBuff) and Player:Buff(E.MemoryofLucidDreams)) then
  233.             return S.ArcaneShot:Cast(Target)
  234.         end
  235.  
  236.         -- piercing_shot
  237.         if S.PiercingShot:CanCast(Target) then
  238.             return S.PiercingShot:Cast(Target)
  239.         end
  240.  
  241.         --actions.st+=/focused_azerite_beam
  242.         if E.FocusedAzeriteBeam:CanCast(Target) then
  243.             return E.FocusedAzeriteBeam:Cast(Target)
  244.         end
  245.  
  246.         --actions.st+=/purifying_blast
  247.         if E.PurifyingBlast:CanCast(Target) then
  248.             return E.PurifyingBlast:Cast(Target)
  249.         end
  250.  
  251.         --actions.st+=/concentrated_flame
  252.         if E.ConcentratedFlame:CanCast(Target) then
  253.             return E.ConcentratedFlame:Cast(Target)
  254.         end
  255.  
  256.         --actions.st+=/blood_of_the_enemy
  257.         if E.BloodoftheEnemy:CanCast(Target) then
  258.             return E.BloodoftheEnemy:Cast(Target)
  259.         end
  260.  
  261.         --the_unbound_force,if=buff.reckless_force.up|buff.reckless_force_counter.stack<10
  262.         if E.TheUnboundForce:CanCast(Target) and (Player:Buff(E.TheUnboundForceAura) or Player:BuffStack(E.TheUnboundForceAura) < 10) then
  263.             return E.TheUnboundForce:Cast(Target)
  264.         end
  265.  
  266.         --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)
  267.         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
  268.             return S.ArcaneShot:Cast(Target)
  269.         end
  270.  
  271.         -- 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
  272.         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
  273.             return S.ArcaneShot:Cast(Target)
  274.         end
  275.         -- steady_shot
  276.         if S.SteadyShot:CanCast(Target) then
  277.             return S.SteadyShot:Cast(Target)
  278.         end
  279.     end
  280.     Trickshots = function()
  281.         -- barrage
  282.         if S.Barrage:CanCast(Target) and Player:EnemiesInCone(45, 20) > 1 then
  283.             return S.Barrage:Cast(Target)
  284.         end
  285.         -- explosive_shot
  286.         if S.ExplosiveShot:CanCast(Target) then
  287.             return S.ExplosiveShot:Cast(Target)
  288.         end
  289.  
  290.         --actions.trickshots+=/aimed_shot,if=buff.trick_shots.up&ca_execute&buff.double_tap.up
  291.         if S.AimedShot:CanCast(Target) and Player:Buff(S.TrickShotsBuff) and ca_execute() and Player:Buff(S.DoubleTap) then
  292.             return S.AimedShot:Cast(Target)
  293.         end
  294.  
  295.         --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)
  296.         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
  297.             return S.RapidFire:Cast(Target)
  298.         end
  299.  
  300.         --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)
  301.         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
  302.             return S.AimedShot:Cast(Target)
  303.         end
  304.  
  305.         --actions.trickshots+=/rapid_fire,if=buff.trick_shots.up
  306.         if S.RapidFire:CanCast(Target) and Player:Buff(S.TrickShotsBuff) then
  307.             return S.RapidFire:Cast(Target)
  308.         end
  309.  
  310.         --actions.trickshots+=/multishot,if=buff.trick_shots.down|buff.precise_shots.up&!buff.trueshot.up|focus>70
  311.         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
  312.             return S.Multishot:Cast(Target)
  313.         end
  314.  
  315.         --actions.trickshots+=/focused_azerite_beam
  316.         if E.FocusedAzeriteBeam:CanCast(Target) then
  317.             return E.FocusedAzeriteBeam:Cast(Target)
  318.         end
  319.  
  320.         --actions.trickshots+=/purifying_blast
  321.         if E.PurifyingBlast:CanCast(Target) then
  322.             return E.PurifyingBlast:Cast(Target)
  323.         end
  324.  
  325.         --a-ctions.trickshots+=/concentrated_flame
  326.         if E.ConcentratedFlame:CanCast(Target) then
  327.             return E.ConcentratedFlame:Cast(Target)
  328.         end
  329.         --actions.trickshots+=/blood_of_the_enemy
  330.         if E.BloodoftheEnemy:CanCast(Target) then
  331.             return E.BloodoftheEnemy:Cast(Target)
  332.         end
  333.  
  334.         --actions.trickshots+=/the_unbound_force
  335.         if E.TheUnboundForce:CanCast(Target) then
  336.             return E.TheUnboundForce:Cast(Target)
  337.         end
  338.  
  339.         --actions.trickshots+=/piercing_shot
  340.         if S.PiercingShot:CanCast(Target) then
  341.             return S.PiercingShot:Cast(Target)
  342.         end
  343.  
  344.         --actions.trickshots+=/a_murder_of_crows
  345.         if S.AMurderofCrows:CanCast(Target) then
  346.             return S.AMurderofCrows:Cast(Target)
  347.         end
  348.  
  349.         --actions.trickshots+=/serpent_sting,if=refreshable&!action.serpent_sting.in_flight
  350.         if S.SerpentSting:CastCycle(function(target) return target:DebuffRefreshableCP(S.SerpentStingDebuff) and not S.SerpentSting:InFlight() end, 'Enemies') then
  351.             return '--actions.trickshots+=/serpent_sting,if=refreshable&!action.serpent_sting.in_flight'
  352.         end
  353.  
  354.         --actions.trickshots+=/steady_shot
  355.         if S.SteadyShot:CanCast(Target) then
  356.             return S.SteadyShot:Cast(Target)
  357.         end
  358.     end
  359.     -- call precombat
  360.     if not Player:AffectingCombat() then
  361.         local ShouldReturn = Precombat();
  362.         if ShouldReturn then
  363.             return ShouldReturn;
  364.         end
  365.     end
  366.  
  367.     if true then
  368.         local ShouldReturn = Automata.QueueSkillCast();
  369.         if ShouldReturn then
  370.             return ShouldReturn;
  371.         end
  372.     end
  373.  
  374.     if Automata.TargetIsValid() then
  375.         -- auto_shot
  376.         -- use_items,if=buff.trueshot.up|!talent.calling_the_shots.enabled|target.time_to_die<20
  377.         -- call_action_list,name=cds
  378.         if (true) then
  379.             local ShouldReturn = Cds();
  380.             if ShouldReturn then
  381.                 return ShouldReturn;
  382.             end
  383.         end
  384.         -- call_action_list,name=st,if=active_enemies<3
  385.         if (Target:EnemiesAround(10) < 3) then
  386.             local ShouldReturn = St();
  387.             if ShouldReturn then
  388.                 return ShouldReturn;
  389.             end
  390.         end
  391.         -- call_action_list,name=trickshots,if=active_enemies>2
  392.         if (Target:EnemiesAround(10) > 2) then
  393.             local ShouldReturn = Trickshots();
  394.             if ShouldReturn then
  395.                 return ShouldReturn;
  396.             end
  397.         end
  398.     end
  399.  
  400.     return Automata.SpecIcon
  401. end
  402.  
  403. Automata.Rotation.SetAPL(254, APL)
  404. local function PASSIVE()
  405.     if S.Exhilaration:CanCast(Player) and Player:HealthPercentage() <= Automata.GetClassDB(254, "Exhilaration").Value then
  406.         return S.Exhilaration:Cast(Player)
  407.     end
  408.  
  409.     if S.AspectoftheTurtle:CanCast(Player) and Player:HealthPercentage() <= Automata.GetClassDB(254, "Turtle").Value then
  410.         return S.AspectoftheTurtle:Cast(Player)
  411.     end
  412.  
  413.     return Automata.Shared()
  414. end
  415.  
  416. Automata.Rotation.SetPASSIVE(254, PASSIVE)
  417.  
  418. local function PvP()
  419.     return nil
  420. end
  421. Automata.Rotation.SetPvP(254, PvP);
  422.  
  423.  
  424. --bfc6597
  425. --[[
  426. # Executed before combat begins. Accepts non-harmful actions only.
  427. actions.precombat=flask
  428. actions.precombat+=/augmentation
  429. actions.precombat+=/food
  430. # Snapshot raid buffed stats before combat begins and pre-potting is done.
  431. actions.precombat+=/snapshot_stats
  432. actions.precombat+=/potion
  433. actions.precombat+=/hunters_mark
  434. # Precast this as early as possible to potentially gain another cast during the fight.
  435. actions.precombat+=/double_tap,precast_time=10
  436. actions.precombat+=/worldvein_resonance
  437. actions.precombat+=/guardian_of_azeroth
  438. actions.precombat+=/memory_of_lucid_dreams
  439. actions.precombat+=/trueshot,precast_time=1.5,if=active_enemies>2
  440. actions.precombat+=/aimed_shot,if=active_enemies<3
  441.  
  442. # Executed every time the actor is available.
  443. actions=auto_shot
  444. actions+=/use_item,name=galecallers_boon,if=buff.trueshot.up|!talent.calling_the_shots.enabled|target.time_to_die<10
  445. # Try to line up activated trinkets with Trueshot
  446. actions+=/use_items,if=buff.trueshot.up|!talent.calling_the_shots.enabled|target.time_to_die<20
  447. actions+=/call_action_list,name=cds
  448. actions+=/call_action_list,name=st,if=active_enemies<3
  449. actions+=/call_action_list,name=trickshots,if=active_enemies>2
  450.  
  451. actions.cds=hunters_mark,if=debuff.hunters_mark.down&!buff.trueshot.up
  452. actions.cds+=/double_tap,if=cooldown.rapid_fire.remains<gcd|cooldown.rapid_fire.remains<cooldown.aimed_shot.remains|target.time_to_die<20
  453. 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
  454. 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
  455. 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
  456. 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
  457. actions.cds+=/lights_judgment
  458. actions.cds+=/worldvein_resonance
  459. actions.cds+=/guardian_of_azeroth,if=cooldown.trueshot.remains<15
  460. actions.cds+=/ripple_in_space,if=cooldown.trueshot.remains<7
  461. actions.cds+=/memory_of_lucid_dreams
  462. actions.cds+=/potion,if=buff.trueshot.react&buff.bloodlust.react|buff.trueshot.up&ca_execute|target.time_to_die<25
  463. 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
  464.  
  465. actions.st=explosive_shot
  466. actions.st+=/barrage,if=active_enemies>1
  467. actions.st+=/a_murder_of_crows
  468. actions.st+=/serpent_sting,if=refreshable&!action.serpent_sting.in_flight
  469. actions.st+=/rapid_fire,if=buff.trueshot.down|focus<70
  470. actions.st+=/arcane_shot,if=buff.trueshot.up&buff.master_marksman.up&!buff.memory_of_lucid_dreams.up
  471. actions.st+=/aimed_shot,if=buff.trueshot.up|(buff.double_tap.down|ca_execute)&buff.precise_shots.down|full_recharge_time<cast_time
  472. actions.st+=/arcane_shot,if=buff.trueshot.up&buff.master_marksman.up&buff.memory_of_lucid_dreams.up
  473. actions.st+=/piercing_shot
  474. actions.st+=/focused_azerite_beam
  475. actions.st+=/purifying_blast
  476. actions.st+=/concentrated_flame
  477. actions.st+=/blood_of_the_enemy
  478. actions.st+=/the_unbound_force
  479. 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)
  480. actions.st+=/steady_shot
  481.  
  482. actions.trickshots=barrage
  483. actions.trickshots+=/explosive_shot
  484. actions.trickshots+=/aimed_shot,if=buff.trick_shots.up&ca_execute&buff.double_tap.up
  485. 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)
  486. 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)
  487. actions.trickshots+=/rapid_fire,if=buff.trick_shots.up
  488. actions.trickshots+=/multishot,if=buff.trick_shots.down|buff.precise_shots.up&!buff.trueshot.up|focus>70
  489. actions.trickshots+=/focused_azerite_beam
  490. actions.trickshots+=/purifying_blast
  491. actions.trickshots+=/concentrated_flame
  492. actions.trickshots+=/blood_of_the_enemy
  493. actions.trickshots+=/the_unbound_force
  494. actions.trickshots+=/piercing_shot
  495. actions.trickshots+=/a_murder_of_crows
  496. actions.trickshots+=/serpent_sting,if=refreshable&!action.serpent_sting.in_flight
  497. actions.trickshots+=/steady_shot
  498. ]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement