skeen@0: -- skeen@0: -- SkeenCore3BeastMasteryHunter skeen@0: -- skeen@5: local LibSkeenCore = LibStub("LibSkeenCore"); skeen@0: skeen@21: local function Cooldowns() skeen@21: skeen@21: -- Ability SpellID skeen@21: local RapidFireID = 3045 skeen@21: local StampedeID = 121818 skeen@21: local ReadinessID = 23989 skeen@21: local BestialWrathID = 19574 skeen@21: skeen@21: return {RapidFireID, StampedeID, ReadinessID, BestialWrathID} skeen@21: end skeen@21: skeen@0: local function Rotation() skeen@0: skeen@9: -- Hide the frame, if the target is dead, non existing or friendly. skeen@17: if UnitName("target") == nil or UnitIsFriend("player","target") ~= nil or UnitHealth("target") == 0 then skeen@17: return nil skeen@17: end skeen@17: skeen@17: --Information from; skeen@17: --http://www.wowpedia.org/API_GetTalentInfo_(Mists) skeen@19: local a_murder_of_crows_chosen = LibSkeenCore:HasChosenTalent(13) skeen@19: local blink_strike_chosen = LibSkeenCore:HasChosenTalent(14) skeen@19: local lynx_rush_chosen = LibSkeenCore:HasChosenTalent(15) skeen@19: local glaive_toss_chosen = LibSkeenCore:HasChosenTalent(16) skeen@19: local powershot_chosen = LibSkeenCore:HasChosenTalent(17) skeen@19: local barrage_chosen = LibSkeenCore:HasChosenTalent(18) skeen@17: skeen@9: -- The table used for spell information (returned to the callee) skeen@9: local spell = {} skeen@0: spell.current = nil skeen@0: spell.next = nil skeen@0: spell.cd1 = nil skeen@0: spell.cd2 = nil skeen@0: spell.cd3 = nil skeen@0: spell.cd4 = nil skeen@17: skeen@9: -- Ability SpellID skeen@17: local KillCommandID = 34026 skeen@17: local KillShotID = 53351 skeen@17: local FocusFireID = 82692 skeen@17: local FervorID = 82726 skeen@17: local SerpentStingID = 1978 skeen@17: local ArcaneShotID = 3044 skeen@17: local CobraShotID = 77767 skeen@17: local HuntersMarkID = 1130 skeen@17: local AMurderOfCrowsID = 131894 skeen@17: local BlinkStrikeID = 130392 skeen@17: local LynxRushID = 120697 skeen@17: local GlaiveTossID = 117050 skeen@17: local PowershotID = 109259 skeen@17: local BarrageID = 120360 skeen@17: local FrenzyID = 19615 skeen@9: skeen@17: local focus = UnitPower("player") skeen@0: skeen@0: --Cooldowns skeen@17: local kill_command_cooldown = LibSkeenCore:GetCooldown(KillCommandID) --"Kill Command" skeen@17: local kill_shot_cooldown = LibSkeenCore:GetCooldown(KillShotID) --"Kill Shot" skeen@17: local focus_fire_cooldown = LibSkeenCore:GetCooldown(FocusFireID) --"Focus Fire" skeen@17: local fervor_cooldown = LibSkeenCore:GetCooldown(FervorID) --"Fervor" skeen@17: local a_murder_of_crows_cooldown = LibSkeenCore:GetCooldown(AMurderOfCrowsID) --"A Murder of Crows" skeen@17: local blink_strike_cooldown = LibSkeenCore:GetCooldown(BlinkStrikeID) --"Blink Strike" skeen@17: local lynx_rush_cooldown = LibSkeenCore:GetCooldown(LynxRushID) --"Lynx Rush" skeen@17: local glaive_toss_cooldown = LibSkeenCore:GetCooldown(GlaiveTossID) --"Glaive Toss" skeen@17: local powershot_cooldown = LibSkeenCore:GetCooldown(PowershotID) --"Powershot" skeen@17: local barrage_cooldown = LibSkeenCore:GetCooldown(BarrageID) --"Barrage" skeen@13: skeen@0: --Debuff skeen@9: local serpent_sting_duration = LibSkeenCore:GetDebuffDuration(SerpentStingID) --"Serpent Sting" skeen@17: local HuntersMark_duration = LibSkeenCore:GetDebuffDuration(HuntersMarkID) --"Hunters Mark" skeen@17: skeen@17: --BuffStacks skeen@17: local frenzy_stacks = LibSkeenCore:GetBuffCount(FrenzyID) skeen@0: skeen@0: -- Get the target's health percentage skeen@17: local TargetsPercentOfHealth = (UnitHealth("target") / UnitHealthMax("target") * 100); skeen@0: skeen@13: if(HuntersMark_duration < 1) then skeen@13: spell.current = HuntersMarkID skeen@13: elseif (serpent_sting_duration < 1) then skeen@13: if (focus >= 25) then skeen@17: spell.current = SerpentStingID skeen@13: else skeen@17: spell.next = SerpentStingID skeen@13: end skeen@17: elseif (frenzy_stacks == 5) then skeen@17: spell.current = FocusFireID skeen@17: elseif (glaive_toss_chosen == true) and (glaive_toss_cooldown < 1) and (focus >= 15) then skeen@17: spell.current = GlaiveTossID skeen@17: elseif (powershot_chosen == true) and (powershot_cooldown < 1) and (focus >= 20) then skeen@17: spell.current = PowershotID skeen@17: elseif (barrage_chosen == true) and (barrage_cooldown < 1) and (focus >= 30) then skeen@17: spell.current = BarrageID skeen@17: elseif (a_murder_of_crows_chosen == true) and (a_murder_of_crows_cooldown < 1) then skeen@17: spell.current = AMurderOfCrowsID skeen@17: elseif (blink_strike_chosen == true) and (blink_strike_cooldown < 1) then skeen@17: spell.current = BlinkStrikeID skeen@17: elseif (lynx_rush_chosen == true) and (lynx_rush_cooldown < 1) then skeen@17: spell.current = LynxRushID skeen@15: elseif (kill_command_cooldown < 1) then skeen@0: if (focus >= 40) then skeen@17: spell.current = KillCommandID skeen@0: else skeen@17: spell.next = KillCommandID skeen@0: end skeen@0: elseif ((TargetsPercentOfHealth < 20) and (kill_shot_cooldown<1)) then skeen@17: spell.current = KillShotID skeen@13: elseif (focus >= 60) then skeen@17: spell.current = ArcaneShotID skeen@0: else skeen@17: spell.current = CobraShotID skeen@0: end skeen@17: skeen@0: return spell skeen@0: end skeen@0: skeen@0: local SkeenPlugin = {} skeen@9: SkeenPlugin.Name = "Hunter: Beast Mastery" skeen@0: SkeenPlugin.Class = "HUNTER" skeen@0: SkeenPlugin.Spec = 1 skeen@17: SkeenPlugin.Version = "5.2.0" skeen@0: SkeenPlugin.Rotation = Rotation skeen@21: SkeenPlugin.Cooldowns = Cooldowns skeen@0: skeen@9: local SkeenCore3 = _G["SkeenCore3"] skeen@0: SkeenCore3:RegisterPlugin(SkeenPlugin)