annotate SkeenCore3HunterBeastMastery.lua @ 37:14aa83988862 v1.5.10

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