Advertisement
KiLLerBoy_001

RareShare Events.lua

Aug 17th, 2019
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 7.93 KB | None | 0 0
  1. local AddonName, Addon = ...
  2.  
  3. Addon.__Events__ = {}
  4. Addon.Events  = {}
  5.  
  6.  
  7. --[[ ----------------------------------------------------------------------------------
  8.                 Event Functions
  9. -------------------------------------------------------------------------------------]]
  10. function Addon:RegisterEvent(Event, Handler)
  11.     self.EventFrame:RegisterEvent(Event)
  12.     self.__Events__[Event] = Handler
  13. end
  14.  
  15. function Addon:UnregisterEvent(Event)
  16.     self.EventFrame:UnregisterEvent(Event)
  17.     self.__Events__[Event] = nil
  18. end
  19.  
  20. function Addon:RegisterEventTable(EventTable)
  21.     for i,v in pairs(EventTable) do
  22.         self:RegisterEvent(i, v)
  23.     end
  24. end
  25.  
  26. function Addon:UnregisterEventTable(EventTable)
  27.     for i,v in pairs(EventTable) do
  28.         self:UnregisterEvent(i, v)
  29.     end
  30. end
  31.  
  32.  
  33. --[[ ----------------------------------------------------------------------------------
  34.                 Permanent Events
  35. -------------------------------------------------------------------------------------]]
  36. function Addon.__Events__:ADDON_LOADED(addonName)
  37.     if not (AddonName == addonName) then return end
  38.     Addon.TomTom = IsAddOnLoaded("TomTom")
  39.     Addon.InitConfig()
  40.     Addon:InitUI()
  41. end
  42.  
  43. function Addon.__Events__:PLAYER_ENTERING_WORLD(...)
  44.     local Player, Realm = UnitFullName("player")
  45.     Addon.FullPlayerName = Player.."-"..Realm
  46.     Addon:InitModule()
  47.     Addon:InitModuleConfig()
  48.     Addon:InitModuleUI()
  49. end
  50.  
  51. function Addon.__Events__:ZONE_CHANGED(...)
  52.     Addon:InitModule()
  53. end
  54.  
  55. function Addon.__Events__:ZONE_CHANGED_NEW_AREA(...)
  56.     Addon:InitModule()
  57. end
  58.  
  59. Addon:RegisterEventTable(Addon.__Events__)
  60. Addon.EventFrame:SetScript("OnEvent", function(self, event, ...)
  61.     Addon.__Events__[event](self, ...)
  62. end)
  63.  
  64.  
  65. --[[ ----------------------------------------------------------------------------------
  66.                 Dynamic Events
  67. -------------------------------------------------------------------------------------]]
  68. function Addon.Events:CHAT_MSG_CHANNEL(message, author, _, _, _, _, _, _, channelName, ...)
  69.     if channelName == RareShareDB["Config"]["CChannel"]["CName"] and author ~= Addon.FullPlayerName then
  70.         if message:find("%s"..Addon.Loc.Died.."%.") then
  71.             local _, NameReverse = strsplit(" ", message:reverse(), 2)
  72.             local Name = NameReverse:reverse()
  73.             for _, Val in pairs(RareShare.Modules[RareShare.LastMap].Rares) do
  74.                 if Val[1] == Name then
  75.                     Val[4] = true
  76.                     if TomTomLastWaypoint ~= nil then
  77.                         TomTom:RemoveWaypoint(TomTomLastWaypoint)
  78.                         TomTomExpireTimer = nil
  79.                     end
  80.                     return
  81.                 end
  82.             end
  83.         elseif message:find("%%") and message:find("~%(") and message:find("%)") then
  84.             local Part1, Part2 = strsplit("%", message);
  85.             local Name         = Part1:sub(1, Part1:len()-(string.find(Part1:reverse(), "%s")))
  86.             local Module = Addon:GetModule(Addon.LastMap)
  87.             for ID, Val in pairs(Module.Rares) do
  88.                 if Val[1] == Name then
  89.                     Val[2] = time()
  90.                     Val[4] = false
  91.                     if Module.Duplicates then Module:Duplicates(ID) end
  92.                     if (RareShareDB["Config"]["Sound"]["Master"] == true) and (RareShareDB["Config"]["Sound"]["Rares"] == true) then
  93.                         Addon:PlaySound()
  94.                     end
  95.                     if (Addon.TomTom == true) and (RareShareDB["Config"]["TomTom"]["Master"] == true) and (RareShareDB["Config"]["TomTom"]["Rares"] == true) then
  96.                         local x, y = strsplit(",", Part2:match("%d+%.?%d+%,%s%d+%.?%d+"))
  97.                         Addon:CreateTomTomWaypoint(x / 100, y / 100, Name);
  98.                     end
  99.                     return
  100.                 end
  101.             end
  102.         end
  103.     end
  104. end
  105.  
  106.  
  107. function Addon.Events:VIGNETTE_MINIMAP_UPDATED(vignetteGUID, onMinimap)
  108.     local vignetteInfo = C_VignetteInfo.GetVignetteInfo(vignetteGUID)
  109.     if RareShareDB["Config"]["ChatAnnounce"] and vignetteInfo ~= nil then
  110.     local ID = Addon:GetNPCID(vignetteInfo.objectGUID)
  111.     if ID == nil or RareShare.Modules[Addon.LastMap].Rares[ID] == nil then return end
  112.  
  113.         local vignetteInfo = C_VignetteInfo.GetVignetteInfo(vignetteGUID)
  114.         local vignettePosition = C_VignetteInfo.GetVignettePosition(vignetteInfo.vignetteGUID, Addon.LastMap)
  115.    
  116.         local Module    = Addon:GetModule(Addon.LastMap)
  117.         local Name      = Module.Rares[ID][1];
  118.         local X, Y      = (C_VignetteInfo.GetVignettePosition(vignetteInfo.vignetteGUID, Addon.LastMap)):GetXY()
  119.         local X, Y      = RareShare:Round(X * 100, 2), RareShare:Round(Y * 100, 2)
  120.        
  121.         if Module.Rares[ID][2] < time() - RareShare.Cooldown then
  122.             Addon:PreAnnounceRare(ID, Name, X, Y)
  123.             Module.Rares[ID][3] = true
  124.         elseif Module.Rares[ID][3] == false then
  125.             Addon:Log(Name.." "..Addon.Loc.AlreadyAnnounced, 1, Addon.LastMap)
  126.             Module.Rares[ID][3] = true
  127.         end
  128.     end
  129. end
  130.  
  131.  
  132. function Addon.Events:PLAYER_TARGET_CHANGED(...)
  133.     if RareShareDB["Config"]["ChatAnnounce"] then
  134.         local ID = Addon:GetNPCID(UnitGUID("target"))
  135.         if ID == nil or RareShare.Modules[Addon.LastMap].Rares[ID] == nil then return end
  136.        
  137.         local Module    = Addon:GetModule(Addon.LastMap)
  138.         local Name      = UnitName("target");--Module.Rares[ID][1];
  139.         local Health    = UnitHealth("target");
  140.         local HealthMax = UnitHealthMax("target");
  141.         local X, Y      = Addon:GetRarePos(ID)
  142.  
  143.         if Health > 0 then
  144.             if Module.Rares[ID][2] < time() - RareShare.Cooldown then
  145.                 Addon:AnnounceRare(ID, Name, Health, HealthMax, X, Y)
  146.                 Module.Rares[ID][3] = true
  147.             elseif Module.Rares[ID][3] == false then
  148.                 Addon:Log(Name.." "..Addon.Loc.AlreadyAnnounced, 1, Addon.LastMap)
  149.                 Module.Rares[ID][3] = true
  150.             end
  151.         end
  152.     end
  153. end
  154.  
  155. function Addon.Events:UNIT_COMBAT(...)
  156.     if RareShareDB["Config"]["ChatAnnounce"] then
  157.         local ID = Addon:GetNPCID(UnitGUID("target"))
  158.         if ID == nil or RareShare.Modules[Addon.LastMap].Rares[ID] == nil then return end
  159.        
  160.         local Module    = Addon:GetModule(Addon.LastMap)
  161.         local Name      = UnitName("target");--Module.Rares[ID][1];
  162.         local Health    = UnitHealth("target");
  163.         local HealthMax = UnitHealthMax("target");
  164.         local X, Y      = Addon:GetRarePos(ID)
  165.        
  166.         if Health > 0 then
  167.             if Module.Rares[ID][2] < time() - RareShare.Cooldown then
  168.                 Addon:AnnounceRare(ID, Name, Health, HealthMax, X, Y)
  169.                 Module.Rares[ID][3] = true
  170.             elseif Module.Rares[ID][3] == false then
  171.                 Addon:Log(Name.." "..Addon.Loc.AlreadyAnnounced, 1, Addon.LastMap)
  172.                 Module.Rares[ID][3] = true
  173.             end
  174.         end
  175.     end
  176. end
  177.  
  178. function Addon.Events:COMBAT_LOG_EVENT_UNFILTERED(...)
  179.     if (RareShareDB["Config"]["OnDeath"] == true) then
  180.         local _, event, _, _, _, sourceFlags, _, destGUID, _, destFlags = CombatLogGetCurrentEventInfo()
  181.         if bit.band(destFlags, COMBATLOG_OBJECT_TARGET) > 0 then
  182.             if (event == "UNIT_DIED") then
  183.                 local ID = Addon:GetNPCID(destGUID)
  184.                 local Module = Addon:GetModule(Addon.LastMap)
  185.                 if (Module.Rares[ID]) then
  186.                     C_Timer.After(math.random(0, 3), function()
  187.                         if (Module.Rares[ID][4] == false and ID ~= 151623) then
  188.                             SendChatMessage(Module.Rares[ID][1].." "..Addon.Loc.Died..".", "CHANNEL", nil, RareShareDB["Config"]["CChannel"]["CID"])
  189.                             Module.Rares[ID][4] = true
  190.                         end
  191.                     end)
  192.                 end
  193.             end
  194.         end
  195.     end
  196. end
  197.  
  198. --function Addon.Events:VIGNETTES_UPDATED(...)
  199. --    print("VIGNETTES_UPDATED", ...)
  200. --    Addon:CheckVignettes()
  201. --end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement