Currently there are 3 functions in oblivion + xOBSE for working with effect shaders: vanilla functions PlayMagicShaderVisuals, StopMagicShaderVisuals and OBSE HasEffectShader. The problem is, it's possible to play multiple "instances" of particular effect shader on one target, but there is no way to know how many "instances" of particular effect shader are playing on particular target (HasEffectShader only returns 0 or 1) and no way to stop certain amount of shader "instances" (StopMagicShaderVisuals will stop all "instances").
Currently there are 3 functions in oblivion + xOBSE for working with effect shaders: vanilla functions PlayMagicShaderVisuals, StopMagicShaderVisuals and OBSE HasEffectShader. The problem is, it's possible to play multiple "instances" of particular effect shader on one target, but there is no way to know how many "instances" of particular effect shader are playing on particular target (HasEffectShader only returns 0 or 1) and no way to stop certain amount of shader "instances" (StopMagicShaderVisuals will stop all "instances").