The problem is that 25% is the change of the effect to be canceled.
The current skill handler has
int count = skill.getMaxNegatedEffects();
so with many buffs the limit is always reached, meaning you always get max cancels on large buff count.
Chance must be 25% (XML part is correct)
but skill handler should have a random limit based on skill.getMaxNegatedEffects()
instead of always getting max cancel count (100%)
Fixed on http://trac.assembla.com/FreyaWorld/changeset/66