ConcurrentLinkedQueue<L2Effect> eff = target.getEffectList().getAllEffects();
if(eff.size() == 0)
{
break;
}
L2Effect e = eff.toArray(new L2Effect[eff.size()])[Rnd.get(eff.size())];
L2Skill skill = e.getSkill();
// Если у бафа выше уровень чем у скилла Cancel, то есть шанс, что этот баф не снимется
if(!skill.isOffensive() && skill.getMagicLevel() > getMagicLevel() && Rnd.chance(skill.getMagicLevel() - getMagicLevel()))
{
counter++;
antiloop--;
continue;
}
if(skill.isCancelable())
{
e.exit();
counter++;
}
antiloop--;
}
}
else
{
counter = 0;
if(_dispelType.contains("negative"))
{
for(L2Effect e : target.getEffectList().getAllEffects())
{
if(counter < _negateCount && e.getSkill().isOffensive() && e.getSkill().isCancelable())
{
e.exit();
counter++;
}
}
}
counter = 0;
if(_dispelType.contains("positive"))
{
for(L2Effect e : target.getEffectList().getAllEffects())
{
L2Skill skill = e.getSkill();
if(counter < _negateCount && !skill.isOffensive() && skill.isCancelable())
{
// Если у бафа выше уровень чем у скилла Cancel, то есть шанс, что этот баф не снимется
if(skill.getMagicLevel() > getMagicLevel() && Rnd.chance(skill.getMagicLevel() - getMagicLevel()))
{
counter++;
continue;
}
e.exit();
counter++;
}
}
}
}