skeen@0: -- skeen@0: -- SkeenCore3BeastMasteryHunter skeen@0: -- skeen@5: local LibSkeenCore = LibStub("LibSkeenCore"); skeen@0: skeen@0: local function Rotation() skeen@0: skeen@9: -- Hide the frame, if the target is dead, non existing or friendly. skeen@0: if UnitName("target") == nil or UnitIsFriend("player","target") ~= nil or UnitHealth("target") == 0 then skeen@9: return nil skeen@0: end skeen@0: 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@0: skeen@9: -- Ability SpellID skeen@9: local KillCommandID = 34026 skeen@9: local KillShotID = 53351 skeen@9: local RapidFireID = 3045 skeen@9: local FocusFireID = 82692 skeen@9: local FervorID = 82726 skeen@9: local BestialWrathID = 19574 skeen@9: local SerpentStingID = 1978 skeen@9: local ArcaneShotID = 3044 skeen@9: local CobraShotID = 77767 skeen@13: local HuntersMarkID = 1130 skeen@13: local ReadinessID = 23989 skeen@9: skeen@0: local focus = UnitPower("player") skeen@0: skeen@0: --Cooldowns skeen@9: local kill_command_cooldown = LibSkeenCore:GetCooldown(KillCommandID) --"Kill Command" skeen@9: local kill_shot_cooldown = LibSkeenCore:GetCooldown(KillShotID) --"Kill Shot" skeen@9: local rapid_fire_cooldown = LibSkeenCore:GetCooldown(RapidFireID) --"Rapid Fire" skeen@9: local focus_fire_cooldown = LibSkeenCore:GetCooldown(FocusFireID) --"Focus Fire" skeen@9: local fervor_cooldown = LibSkeenCore:GetCooldown(FervorID) --"Fervor" skeen@9: local bestial_wrath_cooldown= LibSkeenCore:GetCooldown(BestialWrathID) --"Bestial Wrath" skeen@13: local Readiness_cooldown = LibSkeenCore:GetCooldown(ReadinessID) skeen@13: skeen@0: --Debuff skeen@9: local serpent_sting_duration = LibSkeenCore:GetDebuffDuration(SerpentStingID) --"Serpent Sting" skeen@13: local HuntersMark_duration = LibSkeenCore:GetDebuffDuration(HuntersMarkID) skeen@0: skeen@0: -- Get the target's health percentage skeen@0: 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@13: spell.current = SerpentStingID --SS; skeen@13: else skeen@13: spell.next = SerpentStingID --SS; skeen@13: end skeen@15: elseif (kill_command_cooldown < 1) then skeen@0: if (focus >= 40) then skeen@9: spell.current = KillCommandID --KC skeen@0: else skeen@9: spell.next = KillCommandID --KC skeen@0: end skeen@0: elseif ((TargetsPercentOfHealth < 20) and (kill_shot_cooldown<1)) then skeen@9: spell.current = KillShotID --Kill Shot skeen@13: --TODO: FOCUS FIRE skeen@13: elseif (focus >= 60) then skeen@9: spell.current = ArcaneShotID --Arcane Shot skeen@0: else skeen@9: spell.current = CobraShotID --Cobra Shot skeen@0: end skeen@0: skeen@0: if (rapid_fire_cooldown < 1) then skeen@9: spell.cd1 = RapidFireID --Rapid fire skeen@0: end skeen@0: skeen@0: if (focus_fire_cooldown < 1) then skeen@9: spell.cd2 = FocusFireID --Focus fire skeen@0: end skeen@0: skeen@13: if (Readiness_cooldown < 1) then skeen@13: spell.cd3 = ReadinessID --Readiness skeen@0: end skeen@0: skeen@0: if (bestial_wrath_cooldown < 1) then skeen@9: spell.cd4 = BestialWrathID --Bestial Wrath skeen@0: end skeen@0: 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@9: SkeenPlugin.Version = "4.3.0" skeen@0: SkeenPlugin.Rotation = Rotation skeen@0: skeen@9: local SkeenCore3 = _G["SkeenCore3"] skeen@0: SkeenCore3:RegisterPlugin(SkeenPlugin) skeen@0: