annotate SkeenCore3BeastMasteryHunter.lua @ 27:73b302b898ba v1.5.5

Fixed database name
author Emil Madsen <skeen@cs.au.dk>
date Tue, 03 Dec 2013 22:16:11 +0100
parents a03c3c813e3e
children
rev   line source
skeen@0 1 --
skeen@0 2 -- SkeenCore3BeastMasteryHunter
skeen@0 3 --
skeen@5 4 local LibSkeenCore = LibStub("LibSkeenCore");
skeen@0 5
skeen@25 6 local function Plugin_Registed()
skeen@25 7 -- Default saved variables
skeen@27 8 if SkeenBeastMasteryHunterdb == nil then
skeen@27 9 SkeenBeastMasteryHunterdb = {} -- fresh start
skeen@25 10 end
skeen@25 11
skeen@25 12 -- Load defaults
skeen@27 13 if SkeenBeastMasteryHunterdb.SuggestHuntersMark == nil then
skeen@27 14 SkeenBeastMasteryHunterdb.SuggestHuntersMark = false
skeen@25 15 end
skeen@25 16 end
skeen@25 17
skeen@25 18 local Option_Functions = {}
skeen@25 19
skeen@25 20 function Option_Functions:GetHuntersMark()
skeen@27 21 return SkeenBeastMasteryHunterdb.SuggestHuntersMark
skeen@25 22 end
skeen@25 23
skeen@25 24
skeen@25 25 function Option_Functions:ToggleHuntersMark()
skeen@27 26 SkeenBeastMasteryHunterdb.SuggestHuntersMark = not SkeenBeastMasteryHunterdb.SuggestHuntersMark
skeen@25 27 end
skeen@25 28
skeen@25 29
skeen@25 30 local function Option_Frame()
skeen@25 31 local panel = CreateFrame("FRAME")
skeen@25 32
skeen@25 33 local string
skeen@25 34 local checkbox
skeen@25 35
skeen@25 36 local y = -40
skeen@25 37 local string_X = 10
skeen@25 38 local checkbox_X = -10
skeen@25 39
skeen@25 40 string = panel:CreateFontString(nil,"OVERLAY","GameFontNormal")
skeen@25 41 string:SetText("Suggest Hunters Mark in Rotation")
skeen@25 42 string:SetPoint("TOPLEFT", string_X, y)
skeen@25 43
skeen@25 44 checkbox = CreateFrame("CheckButton", nil, panel, "OptionsCheckButtonTemplate")
skeen@25 45 checkbox:SetWidth(18)
skeen@25 46 checkbox:SetHeight(18)
skeen@25 47 checkbox:SetScript("OnClick", function() Option_Functions:ToggleVanish() end)
skeen@25 48 checkbox:SetPoint("TOPRIGHT", checkbox_X, y)
skeen@25 49 checkbox:SetChecked(Option_Functions:ToggleHuntersMark())
skeen@25 50
skeen@25 51 return panel
skeen@25 52 end
skeen@25 53
skeen@21 54 local function Cooldowns()
skeen@21 55
skeen@21 56 -- Ability SpellID
skeen@21 57 local RapidFireID = 3045
skeen@21 58 local StampedeID = 121818
skeen@21 59 local ReadinessID = 23989
skeen@21 60 local BestialWrathID = 19574
skeen@21 61
skeen@21 62 return {RapidFireID, StampedeID, ReadinessID, BestialWrathID}
skeen@21 63 end
skeen@21 64
skeen@0 65 local function Rotation()
skeen@0 66
skeen@9 67 -- Hide the frame, if the target is dead, non existing or friendly.
skeen@17 68 if UnitName("target") == nil or UnitIsFriend("player","target") ~= nil or UnitHealth("target") == 0 then
skeen@17 69 return nil
skeen@17 70 end
skeen@17 71
skeen@17 72 --Information from;
skeen@17 73 --http://www.wowpedia.org/API_GetTalentInfo_(Mists)
skeen@25 74 local fervor_chosen = LibSkeenCore:HasChosenTalent(10)
skeen@25 75 local dire_beast_chosen = LibSkeenCore:HasChosenTalent(11)
skeen@25 76 local thrill_of_the_hunt_chosen = LibSkeenCore:HasChosenTalent(12)
skeen@19 77 local glaive_toss_chosen = LibSkeenCore:HasChosenTalent(16)
skeen@19 78 local powershot_chosen = LibSkeenCore:HasChosenTalent(17)
skeen@19 79 local barrage_chosen = LibSkeenCore:HasChosenTalent(18)
skeen@17 80
skeen@9 81 -- The table used for spell information (returned to the callee)
skeen@9 82 local spell = {}
skeen@0 83 spell.current = nil
skeen@0 84 spell.next = nil
skeen@0 85 spell.cd1 = nil
skeen@0 86 spell.cd2 = nil
skeen@0 87 spell.cd3 = nil
skeen@0 88 spell.cd4 = nil
skeen@17 89
skeen@9 90 -- Ability SpellID
skeen@17 91 local KillCommandID = 34026
skeen@17 92 local KillShotID = 53351
skeen@17 93 local FocusFireID = 82692
skeen@17 94 local FervorID = 82726
skeen@25 95 local DireBeastID = 120679
skeen@25 96 local ThrillOfTheHuntID = 109306
skeen@17 97 local SerpentStingID = 1978
skeen@17 98 local ArcaneShotID = 3044
skeen@17 99 local CobraShotID = 77767
skeen@17 100 local HuntersMarkID = 1130
skeen@17 101 local GlaiveTossID = 117050
skeen@17 102 local PowershotID = 109259
skeen@17 103 local BarrageID = 120360
skeen@17 104 local FrenzyID = 19615
skeen@9 105
skeen@17 106 local focus = UnitPower("player")
skeen@0 107
skeen@0 108 --Cooldowns
skeen@17 109 local kill_command_cooldown = LibSkeenCore:GetCooldown(KillCommandID) --"Kill Command"
skeen@17 110 local kill_shot_cooldown = LibSkeenCore:GetCooldown(KillShotID) --"Kill Shot"
skeen@17 111 local fervor_cooldown = LibSkeenCore:GetCooldown(FervorID) --"Fervor"
skeen@25 112 local dire_beast_cooldown = LibSkeenCore:GetCooldown(DireBeastID) --"Dire Beast"
skeen@25 113 local thrill_of_the_hunt_cooldown = LibSkeenCore:GetCooldown(ThrillOfTheHuntID) --"Fervor"
skeen@17 114 local glaive_toss_cooldown = LibSkeenCore:GetCooldown(GlaiveTossID) --"Glaive Toss"
skeen@17 115 local powershot_cooldown = LibSkeenCore:GetCooldown(PowershotID) --"Powershot"
skeen@17 116 local barrage_cooldown = LibSkeenCore:GetCooldown(BarrageID) --"Barrage"
skeen@13 117
skeen@0 118 --Debuff
skeen@9 119 local serpent_sting_duration = LibSkeenCore:GetDebuffDuration(SerpentStingID) --"Serpent Sting"
skeen@17 120 local HuntersMark_duration = LibSkeenCore:GetDebuffDuration(HuntersMarkID) --"Hunters Mark"
skeen@17 121
skeen@17 122 --BuffStacks
skeen@17 123 local frenzy_stacks = LibSkeenCore:GetBuffCount(FrenzyID)
skeen@0 124
skeen@0 125 -- Get the target's health percentage
skeen@17 126 local TargetsPercentOfHealth = (UnitHealth("target") / UnitHealthMax("target") * 100);
skeen@0 127
skeen@25 128 -- Apply Hunter's Mark Icon Hunter's Mark on the target.
skeen@27 129 if (HuntersMark_duration < 1 and Option_Functions:GetHuntersMark()) then
skeen@13 130 spell.current = HuntersMarkID
skeen@25 131 -- Cast Kill Command Icon Kill Command on cooldown.
skeen@25 132 elseif(kill_command_cooldown < 1) then
skeen@25 133 if (focus >= 40) then
skeen@25 134 spell.current = KillCommandID
skeen@25 135 else
skeen@25 136 spell.next = KillCommandID
skeen@25 137 end
skeen@25 138 -- Cast Kill Shot Icon Kill Shot (only available below 20% health).
skeen@25 139 elseif ((TargetsPercentOfHealth < 20) and (kill_shot_cooldown<1)) then
skeen@25 140 spell.current = KillShotID
skeen@25 141 -- Apply and maintain Serpent Sting Icon Serpent Sting to the target
skeen@25 142 -- it will be refreshed by Cobra Shot Icon Cobra Shot so it only needs to be done once, normally.
skeen@13 143 elseif (serpent_sting_duration < 1) then
skeen@13 144 if (focus >= 25) then
skeen@17 145 spell.current = SerpentStingID
skeen@13 146 else
skeen@17 147 spell.next = SerpentStingID
skeen@13 148 end
skeen@25 149 -- Cast your Tier 6 talent (normally Glaive Toss Icon Glaive Toss)
skeen@25 150 elseif (glaive_toss_chosen == true) and (glaive_toss_cooldown < 1) then
skeen@25 151 if (focus >= 15) then
skeen@25 152 spell.current = GlaiveTossID
skeen@25 153 else
skeen@25 154 spell.next = GlaiveTossID
skeen@25 155 end
skeen@25 156 elseif (powershot_chosen == true) and (powershot_cooldown < 1) and (focus >= 20) then
skeen@25 157 if (focus >= 20) then
skeen@25 158 spell.current = PowershotID
skeen@25 159 else
skeen@25 160 spell.next = PowershotID
skeen@25 161 end
skeen@25 162 elseif (barrage_chosen == true) and (barrage_cooldown < 1) then
skeen@25 163 if (focus >= 30) then
skeen@25 164 spell.current = BarrageID
skeen@25 165 else
skeen@25 166 spell.next = BarrageID
skeen@25 167 end
skeen@25 168 -- Cast your Tier 4 talent (normally Dire Beast Icon Dire Beast).
skeen@25 169 elseif (fervor_chosen == true) and (fervor_cooldown < 1) then
skeen@25 170 spell.current = FervorID
skeen@25 171 elseif (dire_beast_chosen == true) and (dire_beast_cooldown < 1) then
skeen@25 172 spell.current = DireBeastID
skeen@25 173 elseif (thrill_of_the_hunt_chosen == true) and (thrill_of_the_hunt_cooldown < 1) then
skeen@25 174 spell.current = ThrillOfTheHuntID
skeen@25 175 -- Cast Focus Fire Icon Focus Fire when your pet's Frenzy Icon Frenzy reaches 5 stacks (the icon will glow)
skeen@17 176 elseif (frenzy_stacks == 5) then
skeen@17 177 spell.current = FocusFireID
skeen@13 178 elseif (focus >= 60) then
skeen@17 179 spell.current = ArcaneShotID
skeen@0 180 else
skeen@17 181 spell.current = CobraShotID
skeen@0 182 end
skeen@17 183
skeen@0 184 return spell
skeen@0 185 end
skeen@0 186
skeen@0 187 local SkeenPlugin = {}
skeen@9 188 SkeenPlugin.Name = "Hunter: Beast Mastery"
skeen@0 189 SkeenPlugin.Class = "HUNTER"
skeen@0 190 SkeenPlugin.Spec = 1
skeen@25 191 SkeenPlugin.Version = "5.4.0"
skeen@0 192 SkeenPlugin.Rotation = Rotation
skeen@21 193 SkeenPlugin.Cooldowns = Cooldowns
skeen@25 194 SkeenPlugin.Plugin_Registed = Plugin_Registed
skeen@25 195 SkeenPlugin.Option_Frame = Option_Frame
skeen@0 196
skeen@9 197 local SkeenCore3 = _G["SkeenCore3"]
skeen@0 198 SkeenCore3:RegisterPlugin(SkeenPlugin)