6565
6666local function filter_exists_substring (status , key , subkey , value )
6767 local filter = filter_get_value (status , key , subkey , default or ' ' )
68- return strfind ( filter , value )~= nil
68+ return tcontains ( { strsplit ( ' | ' , filter ) } , value )
6969end
7070
7171local function get_new_aura_status_key (data )
@@ -225,7 +225,9 @@ local function MakeBuffsOptions(status, options)
225225 return filter_get_value (status , ' aura_filter' , ' filter' , ' HELPFUL' )== ' HELPFUL' and filter_get_value (status , ' aura_filter' , ' blizFilter' )== nil
226226 end ,
227227 set = function (info , v )
228- filter_set_value (status , ' aura_filter' , ' filter' , (not v ) and ' HELPFUL|PLAYER|RAID' or nil )
228+ if v then
229+ filter_set_value (status , ' aura_filter' , ' filter' , (not v ) and ' HELPFUL|PLAYER|RAID' or nil )
230+ end
229231 end ,
230232 }
231233 options .filter_player = {
@@ -240,19 +242,44 @@ local function MakeBuffsOptions(status, options)
240242 filter_toggle_substring ( status , ' aura_filter' , ' filter' , ' PLAYER' , ' HELPFUL' )
241243 end ,
242244 }
243- options .filter_raid = {
245+ options .filter_raid_combat = {
244246 type = " toggle" ,
245247 order = 40 ,
246248 width = " full" ,
247- name = L [" Buffs that are relevant for your player class" ],
249+ name = L [" Buffs relevant for your class" ],
250+ get = function ()
251+ return filter_exists_substring ( status , ' aura_filter' , ' filter' , ' RAID_IN_COMBAT' )
252+ end ,
253+ set = function ()
254+ filter_toggle_substring ( status , ' aura_filter' , ' filter' , ' RAID_IN_COMBAT' , ' HELPFUL' )
255+ end ,
256+ hidden = function () return Grid2 .versionCli <= 120000 end ,
257+ }
258+ options .filter_raid = {
259+ type = " toggle" ,
260+ order = 43 ,
261+ width = " full" ,
262+ name = L [" Buffs relevant for your class (light version)" ],
248263 get = function ()
249264 return filter_exists_substring ( status , ' aura_filter' , ' filter' , ' RAID' )
250265 end ,
251266 set = function ()
252267 filter_toggle_substring ( status , ' aura_filter' , ' filter' , ' RAID' , ' HELPFUL' )
253268 end ,
254269 }
255- options .filter_defensives = {
270+ options .filter_defensive = {
271+ type = " toggle" ,
272+ order = 45 ,
273+ width = " full" ,
274+ name = L [" Big defensive buff" ],
275+ get = function ()
276+ return filter_exists_substring ( status , ' aura_filter' , ' filter' , ' BIG_DEFENSIVE' )
277+ end ,
278+ set = function ()
279+ filter_toggle_substring ( status , ' aura_filter' , ' filter' , ' BIG_DEFENSIVE' , ' HELPFUL' )
280+ end ,
281+ }
282+ options .filter_external_defensives = {
256283 type = " toggle" ,
257284 order = 50 ,
258285 width = " full" ,
@@ -278,7 +305,7 @@ local function MakeBuffsOptions(status, options)
278305 filter_set_value (status , ' aura_filter' , ' blizFilter' , v and ' HELPFUL|RAID' or nil )
279306 end ,
280307 }
281- options .filter_bliz_defensives = {
308+ options .filter_bliz_defensive = {
282309 type = " toggle" ,
283310 order = 70 ,
284311 width = " full" ,
@@ -389,8 +416,10 @@ local function MakeDebuffsFilterOptions(status, options)
389416 filter_get_value (status , ' aura_filter' , ' blizFilter' )== nil
390417 end ,
391418 set = function (info , v )
392- filter_set_value (status , ' aura_filter' , ' filter' , (not v ) and ' HARMFUL|PLAYER|RAID' or nil )
393- filter_set_value (status , ' aura_filter' , ' typed' , nil )
419+ if v then
420+ filter_set_value (status , ' aura_filter' , ' filter' , (not v ) and ' HARMFUL|PLAYER|RAID' or nil )
421+ filter_set_value (status , ' aura_filter' , ' typed' , nil )
422+ end
394423 end ,
395424 }
396425 options .filter_player = {
@@ -405,16 +434,16 @@ local function MakeDebuffsFilterOptions(status, options)
405434 filter_toggle_substring ( status , ' aura_filter' , ' filter' , ' PLAYER' , ' HARMFUL' )
406435 end ,
407436 }
408- options .filter_raid = {
437+ options .filter_raid_dispel = {
409438 type = " toggle" ,
410439 order = 40 ,
411440 width = " full" ,
412441 name = L [" Debuffs that i can dispel" ],
413442 get = function ()
414- return filter_exists_substring ( status , ' aura_filter' , ' filter' , ' RAID' )
443+ return filter_exists_substring ( status , ' aura_filter' , ' filter' , Grid2 . versionCli <= 120000 and ' RAID' or ' RAID_PLAYER_DISPELLABLE ' )
415444 end ,
416445 set = function ()
417- filter_toggle_substring ( status , ' aura_filter' , ' filter' , ' RAID' , ' HARMFUL' )
446+ filter_toggle_substring ( status , ' aura_filter' , ' filter' , Grid2 . versionCli <= 120000 and ' RAID' or ' RAID_PLAYER_DISPELLABLE ' , ' HARMFUL' )
418447 end ,
419448 }
420449 options .filter_nameplate = {
@@ -429,7 +458,7 @@ local function MakeDebuffsFilterOptions(status, options)
429458 filter_toggle_substring ( status , ' aura_filter' , ' filter' , ' INCLUDE_NAME_PLATE_ONLY' , ' HARMFUL' )
430459 end ,
431460 }
432- options .debuffs_typed = {
461+ options .filter_typed = {
433462 type = " toggle" ,
434463 order = 60 ,
435464 width = " full" ,
@@ -442,7 +471,7 @@ local function MakeDebuffsFilterOptions(status, options)
442471 filter_set_value ( status , ' aura_filter' , ' typed' , v , false )
443472 end ,
444473 }
445- options .debuffs_typeless = {
474+ options .filter_typeless = {
446475 type = " toggle" ,
447476 order = 70 ,
448477 width = " full" ,
@@ -460,6 +489,20 @@ local function MakeDebuffsFilterOptions(status, options)
460489 filter_set_value ( status , ' aura_filter' , ' typed' , v )
461490 end ,
462491 }
492+ options .filter_control = {
493+ type = " toggle" ,
494+ order = 75 ,
495+ width = " full" ,
496+ name = L [" Crowd control debuffs" ],
497+ desc = L [" Display only debuffs that limit mobility or actions." ],
498+ get = function ()
499+ return filter_exists_substring ( status , ' aura_filter' , ' filter' , ' CROWD_CONTROL' )
500+ end ,
501+ set = function ()
502+ filter_toggle_substring ( status , ' aura_filter' , ' filter' , ' CROWD_CONTROL' , ' HARMFUL' )
503+ end ,
504+ hidden = function () return Grid2 .versionCli <= 120000 end , -- available only on midnight beta
505+ }
463506 options .filter_bliz_debuffs = {
464507 type = " toggle" ,
465508 order = 80 ,
@@ -533,7 +576,7 @@ function Grid2Options:MakeMidnightDispellableByMeOptions(status, options)
533576 name = L [" Get Dispellable debuffs from Blizzard Unit Frames" ],
534577 get = function () return status .dbx .blizFilter ~= nil end ,
535578 set = function (_ , v )
536- status .dbx .blizFilter = v and " HARMFUL|RAID " or nil
579+ status .dbx .blizFilter = v and " HARMFUL|RAID_PLAYER_DISPELLABLE " or nil
537580 refresh_aura_status (status )
538581 end ,
539582 }
0 commit comments