local PSBT_Module = PSBT_Module local PSBT_Auras = PSBT_Module:Subclass() local CBM = CALLBACK_MANAGER local kVerison = 1.0 local EFFECT_RESULT_FADED = EFFECT_RESULT_FADED local EFFECT_RESULT_GAINED = EFFECT_RESULT_GAINED local PSBT_EVENTS = PSBT_EVENTS local PSBT_AREAS = PSBT_AREAS local PSBT_MODULES = PSBT_MODULES local PSBT_STRINGS = PSBT_STRINGS local zo_strformat = zo_strformat function PSBT_Auras:Initialize( ... ) PSBT_Module.Initialize( self, ... ) self:RegisterForEvent( EVENT_EFFECT_CHANGED, function( ... ) self:OnEffectChanged( ... ) end ) self._gained = GetString( _G[ PSBT_STRINGS.AURA_GAINED ] ) self._fades = GetString( _G[ PSBT_STRINGS.AURA_FADES ] ) end function PSBT_Auras:OnEffectChanged( changeType, effectSlot, effectName, unitTag, beginTime, endTime, stackCount, iconName, buffType, effectType, abilityType, statusEffectType ) if ( unitTag ~= 'player' ) then return end if ( iconName == '/esoui/art/icons/ability_warrior_008.dds') then return end if ( changeType == EFFECT_RESULT_FADED ) then self:Remove( effectName, iconName ) elseif ( changeType == EFFECT_RESULT_GAINED ) then self:Add( effectName, iconName ) end end function PSBT_Auras:Add( name, iconName ) self:NewEvent( PSBT_AREAS.NOTIFICATION, true, iconName, zo_strformat( self._gained, name ) ) end function PSBT_Auras:Remove( name, iconName ) self:NewEvent( PSBT_AREAS.NOTIFICATION, true, iconName, zo_strformat( self._fades, name ) ) end CBM:RegisterCallback( PSBT_EVENTS.LOADED, function( psbt ) psbt:RegisterModule( PSBT_MODULES.AURAS, PSBT_Auras:New( psbt ), kVerison ) end)