View Single Post
01/10/16, 10:28 AM   #13
coolmodi
AddOn Author - Click to view addons
Join Date: Mar 2015
Posts: 47
Originally Posted by sirinsidiator View Post
You can also just call AddFilterForEvent multiple times for the same event and it will also work.
That's what I tried, but only the last added result would work, don't know what I did wrong then if it should work.

Edit: If anyone ever finds this with the same question, then here's my current solution to multiple results with multiple handlers:

Lua Code:
  1. local filters = {
  2.         [self.onCombatEventDmg] = {
  3.             ACTION_RESULT_DAMAGE,
  4.             ACTION_RESULT_DOT_TICK,    
  5.             ACTION_RESULT_BLOCKED_DAMAGE,
  6.             ACTION_RESULT_DAMAGE_SHIELDED
  7.         },
  8.         [self.onCombatEventDmgCrit] = {
  9.             ACTION_RESULT_CRITICAL_DAMAGE, 
  10.             ACTION_RESULT_DOT_TICK_CRITICAL
  11.         },
  12.         [self.onCombatEventHeal] = {
  13.             ACTION_RESULT_HOT_TICK,
  14.             ACTION_RESULT_HEAL
  15.         },
  16.         [self.onCombatEventHealCrit] = {
  17.             ACTION_RESULT_CRITICAL_HEAL,
  18.             ACTION_RESULT_HOT_TICK_CRITICAL
  19.         }
  20.     }
  21.     local nsInc = 1
  22.     for k,v in pairs(filters) do
  23.         for i=1, #v do
  24.             EVENT_MANAGER:RegisterForEvent(self.name..nsInc, EVENT_COMBAT_EVENT, k)
  25.             EVENT_MANAGER:AddFilterForEvent(self.name..nsInc, EVENT_COMBAT_EVENT, REGISTER_FILTER_COMBAT_RESULT , v[i], REGISTER_FILTER_IS_ERROR, false)
  26.             nsInc = nsInc+1
  27.         end
  28.     end

I could reduce the need for IFs in LUA to checking whether I need to create arrays or not, which should be a major improvement I guess.

Last edited by coolmodi : 01/11/16 at 07:24 PM.
  Reply With Quote