/Tukui/modules/buffs/raidbuffsreminder.lua

http://github.com/Asphyxia/Tukui · Lua · 315 lines · 278 code · 22 blank · 15 comment · 41 complexity · f208e96cb0b8870b4bbf8e0583f26506 MD5 · raw file

  1. local T, C, L = unpack(select(2, ...)) -- Import Functions/Constants, Config, Locales
  2. if C["buffreminder"].raidbuffreminder ~= true then return end
  3. --------------------------------------------------------------------------------------------
  4. -- Raid Buff Reminder (Bar in the topright corner below minimap)
  5. --------------------------------------------------------------------------------------------
  6. BuffReminderRaidBuffs = {
  7. Flask = {
  8. 79470, --"Flask of the Draconic Mind"
  9. 94160, --"Flask of Flowing Water"
  10. 79469, --"Flask of Steelskin"
  11. 79471, --"Flask of the Winds
  12. 79472, --"Flask of Titanic Strength"
  13. 79638, --"Flask of Enhancement-STR"
  14. 79639, --"Flask of Enhancement-AGI"
  15. 79640, --"Flask of Enhancement-INT"
  16. 92679, --Flask of battle
  17. },
  18. BattleElixir = {
  19. --Scrolls
  20. 89343, --Agility
  21. 63308, --Armor
  22. 89347, --Int
  23. 89342, --Spirit
  24. 63306, --Stam
  25. 89346, --Strength
  26. --Elixirs
  27. 79481, --Hit
  28. 79632, --Haste
  29. 79477, --Crit
  30. 79635, --Mastery
  31. 79474, --Expertise
  32. 79468, --Spirit
  33. },
  34. GuardianElixir = {
  35. 79480, --Armor
  36. 79631, --Resistance+90
  37. },
  38. Food = {
  39. 87545, --90 STR
  40. 87546, --90 AGI
  41. 87547, --90 INT
  42. 87548, --90 SPI
  43. 87549, --90 MAST
  44. 87550, --90 HIT
  45. 87551, --90 CRIT
  46. 87552, --90 HASTE
  47. 87554, --90 DODGE
  48. 87555, --90 PARRY
  49. 87635, --90 EXP
  50. 87556, --60 STR
  51. 87557, --60 AGI
  52. 87558, --60 INT
  53. 87559, --60 SPI
  54. 87560, --60 MAST
  55. 87561, --60 HIT
  56. 87562, --60 CRIT
  57. 87563, --60 HASTE
  58. 87564, --60 DODGE
  59. 87634, --60 EXP
  60. 87554, --Seafood Feast
  61. },
  62. }
  63. --Locals
  64. local flaskbuffs = BuffReminderRaidBuffs["Flask"]
  65. local battleelixirbuffs = BuffReminderRaidBuffs["BattleElixir"]
  66. local guardianelixirbuffs = BuffReminderRaidBuffs["GuardianElixir"]
  67. local foodbuffs = BuffReminderRaidBuffs["Food"]
  68. local battleelixired
  69. local guardianelixired
  70. --Setup Caster Buffs (atm for Warlock)
  71. local function SetCasterOnlyBuffs()
  72. if T.myclass == "WARLOCK" then
  73. Spell3Buff = {
  74. 1126, -- "Mark of the wild"
  75. 90363, --"Embrace of the Shale Spider"
  76. 20217, --"Greater Blessing of Kings",
  77. }
  78. Spell4Buff = {
  79. 24907, --Druid's aura 5% haste
  80. 3738, --Totem 5% haste
  81. 49868, --Shadowpriest's aura 5% haste
  82. }
  83. Spell5Buff = {
  84. 28176, --Fel Armor
  85. }
  86. Spell6Buff = {
  87. 85768, -- Warlock buff 3% haste (self)
  88. }
  89. else
  90. Spell3Buff = {
  91. 1126, -- "Mark of the wild"
  92. 90363, --"Embrace of the Shale Spider"
  93. 20217, --"Greater Blessing of Kings",
  94. }
  95. Spell4Buff = {
  96. 61316, --"Dalaran Brilliance"
  97. 1459, --"Arcane Brilliance"
  98. }
  99. Spell5Buff = {
  100. 19740, --"Blessing of Might"
  101. 5675, --"Mana Spring Totem"
  102. }
  103. Spell6Buff = {
  104. 53646, --10% spd aura
  105. 77747, -- 10% spd totem
  106. }
  107. end
  108. end
  109. --Setup everyone else's buffs
  110. local function SetBuffs()
  111. Spell3Buff = {
  112. 1126, -- "Mark of the wild"
  113. 90363, --"Embrace of the Shale Spider"
  114. 20217, --"Greater Blessing of Kings",
  115. }
  116. Spell4Buff = {
  117. 19740, --"Blessing of Might"
  118. 30808, --"Unleashed Rage"
  119. 53138, --Abom Might
  120. 19506, --Trushot
  121. }
  122. Spell5Buff = {
  123. 469, -- Commanding
  124. 6307, -- Blood Pact
  125. 90364, -- Qiraji Fortitude
  126. 72590, -- Drums of fortitude
  127. 21562, -- Fortitude
  128. }
  129. Spell6Buff = {
  130. 57330, --DK str/agi
  131. 8075, --Totem str/agi
  132. }
  133. end
  134. -- we need to check if you have two differant elixirs if your not flasked, before we say your not flasked
  135. local function CheckElixir(unit)
  136. if (battleelixirbuffs and battleelixirbuffs[1]) then
  137. for i, battleelixirbuffs in pairs(battleelixirbuffs) do
  138. local spellname = select(1, GetSpellInfo(battleelixirbuffs))
  139. if UnitAura("player", spellname) then
  140. FlaskFrame.t:SetTexture(select(3, GetSpellInfo(battleelixirbuffs)))
  141. battleelixired = true
  142. break
  143. else
  144. battleelixired = false
  145. end
  146. end
  147. end
  148. if (guardianelixirbuffs and guardianelixirbuffs[1]) then
  149. for i, guardianelixirbuffs in pairs(guardianelixirbuffs) do
  150. local spellname = select(1, GetSpellInfo(guardianelixirbuffs))
  151. if UnitAura("player", spellname) then
  152. guardianelixired = true
  153. if not battleelixired then
  154. FlaskFrame.t:SetTexture(select(3, GetSpellInfo(guardianelixirbuffs)))
  155. end
  156. break
  157. else
  158. guardianelixired = false
  159. end
  160. end
  161. end
  162. if guardianelixired == true and battleelixired == true then
  163. FlaskFrame:SetAlpha(0.2)
  164. return
  165. else
  166. FlaskFrame:SetAlpha(1)
  167. end
  168. end
  169. --Main Script
  170. local function OnAuraChange(self, event, arg1, unit)
  171. if (event == "UNIT_AURA" and arg1 ~= "player") then
  172. return
  173. end
  174. --If We're a caster we may want to see differant buffs
  175. if T.Role == "Caster" then
  176. SetCasterOnlyBuffs()
  177. else
  178. SetBuffs()
  179. end
  180. --Start checking buffs to see if we can find a match from the list
  181. if (flaskbuffs and flaskbuffs[1]) then
  182. FlaskFrame.t:SetTexture(select(3, GetSpellInfo(flaskbuffs[1])))
  183. for i, flaskbuffs in pairs(flaskbuffs) do
  184. local spellname = select(1, GetSpellInfo(flaskbuffs))
  185. if UnitAura("player", spellname) then
  186. FlaskFrame.t:SetTexture(select(3, GetSpellInfo(flaskbuffs)))
  187. FlaskFrame:SetAlpha(0.2)
  188. break
  189. else
  190. CheckElixir()
  191. end
  192. end
  193. end
  194. if (foodbuffs and foodbuffs[1]) then
  195. FoodFrame.t:SetTexture(select(3, GetSpellInfo(foodbuffs[1])))
  196. for i, foodbuffs in pairs(foodbuffs) do
  197. local spellname = select(1, GetSpellInfo(foodbuffs))
  198. if UnitAura("player", spellname) then
  199. FoodFrame:SetAlpha(0.2)
  200. FoodFrame.t:SetTexture(select(3, GetSpellInfo(foodbuffs)))
  201. break
  202. else
  203. FoodFrame:SetAlpha(1)
  204. end
  205. end
  206. end
  207. for i, Spell3Buff in pairs(Spell3Buff) do
  208. local spellname = select(1, GetSpellInfo(Spell3Buff))
  209. if UnitAura("player", spellname) then
  210. Spell3Frame:SetAlpha(0.2)
  211. Spell3Frame.t:SetTexture(select(3, GetSpellInfo(Spell3Buff)))
  212. break
  213. else
  214. Spell3Frame:SetAlpha(1)
  215. Spell3Frame.t:SetTexture(select(3, GetSpellInfo(Spell3Buff)))
  216. end
  217. end
  218. for i, Spell4Buff in pairs(Spell4Buff) do
  219. local spellname = select(1, GetSpellInfo(Spell4Buff))
  220. if UnitAura("player", spellname) then
  221. Spell4Frame:SetAlpha(0.2)
  222. Spell4Frame.t:SetTexture(select(3, GetSpellInfo(Spell4Buff)))
  223. break
  224. else
  225. Spell4Frame:SetAlpha(1)
  226. Spell4Frame.t:SetTexture(select(3, GetSpellInfo(Spell4Buff)))
  227. end
  228. end
  229. for i, Spell5Buff in pairs(Spell5Buff) do
  230. local spellname = select(1, GetSpellInfo(Spell5Buff))
  231. if UnitAura("player", spellname) then
  232. Spell5Frame:SetAlpha(0.2)
  233. Spell5Frame.t:SetTexture(select(3, GetSpellInfo(Spell5Buff)))
  234. break
  235. else
  236. Spell5Frame:SetAlpha(1)
  237. Spell5Frame.t:SetTexture(select(3, GetSpellInfo(Spell5Buff)))
  238. end
  239. end
  240. for i, Spell6Buff in pairs(Spell6Buff) do
  241. local spellname = select(1, GetSpellInfo(Spell6Buff))
  242. if UnitAura("player", spellname) then
  243. Spell6Frame:SetAlpha(0.2)
  244. Spell6Frame.t:SetTexture(select(3, GetSpellInfo(Spell6Buff)))
  245. break
  246. else
  247. Spell6Frame:SetAlpha(1)
  248. Spell6Frame.t:SetTexture(select(3, GetSpellInfo(Spell6Buff)))
  249. end
  250. end
  251. end
  252. local bsize = 20
  253. --Create the Main bar
  254. local raidbuff_reminder = CreateFrame("Frame", "RaidBuffReminder", TukuiMinimap)
  255. raidbuff_reminder:CreatePanel("Default", bsize + 8, 153, "LEFT", TukuiMinimap, "RIGHT", 3, 0)
  256. raidbuff_reminder:CreateShadow("Default")
  257. raidbuff_reminder:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED")
  258. raidbuff_reminder:RegisterEvent("UNIT_INVENTORY_CHANGED")
  259. raidbuff_reminder:RegisterEvent("UNIT_AURA")
  260. raidbuff_reminder:RegisterEvent("PLAYER_REGEN_ENABLED")
  261. raidbuff_reminder:RegisterEvent("PLAYER_REGEN_DISABLED")
  262. raidbuff_reminder:RegisterEvent("PLAYER_ENTERING_WORLD")
  263. raidbuff_reminder:RegisterEvent("UPDATE_BONUS_ACTIONBAR")
  264. raidbuff_reminder:RegisterEvent("CHARACTER_POINTS_CHANGED")
  265. raidbuff_reminder:RegisterEvent("ZONE_CHANGED_NEW_AREA")
  266. raidbuff_reminder:SetScript("OnEvent", OnAuraChange)
  267. --Function to create buttons
  268. local function CreateButton(name, relativeTo, firstbutton)
  269. local button = CreateFrame("Frame", name, RaidBuffReminder)
  270. if firstbutton == true then
  271. button:CreatePanel("Default", bsize, bsize, "TOP", relativeTo, "TOP", 0, -4)
  272. else
  273. button:CreatePanel("Default", bsize, bsize, "TOP", relativeTo, "BOTTOM", 0, -5)
  274. end
  275. button:SetFrameLevel(RaidBuffReminder:GetFrameLevel() + 2)
  276. button.FrameBackdrop = CreateFrame("Frame", nil, button)
  277. button.FrameBackdrop:SetTemplate("Default")
  278. button.FrameBackdrop:SetPoint("TOPLEFT", -2, 2)
  279. button.FrameBackdrop:SetPoint("BOTTOMRIGHT", 2, -2)
  280. button.FrameBackdrop:SetFrameLevel(button:GetFrameLevel() - 1)
  281. button.t = button:CreateTexture(name..".t", "OVERLAY")
  282. button.t:SetTexCoord(0.1, 0.9, 0.1, 0.9)
  283. button.t:SetAllPoints(button)
  284. end
  285. --Create Buttons
  286. do
  287. CreateButton("FlaskFrame", RaidBuffReminder, true)
  288. CreateButton("FoodFrame", FlaskFrame, false)
  289. CreateButton("Spell3Frame", FoodFrame, false)
  290. CreateButton("Spell4Frame", Spell3Frame, false)
  291. CreateButton("Spell5Frame", Spell4Frame, false)
  292. CreateButton("Spell6Frame", Spell5Frame, false)
  293. end