Looks like there's no cap. Possibly there's interference from other focus effects or limits on the spell. *shrug*
Code:
sint32 Mob::GetVulnerability(sint32 damage, Mob *caster, uint32 spell_id, int32 ticsremaining)
{
// If we increased the datatype on GetBuffSlotFromType, this wouldnt be needed
uint32 buff_count = GetMaxTotalSlots();
for(int i = 0; i < buff_count; i++)
{
if(IsEffectInSpell(buffs[i].spellid, SE_SpellVulnerability))
{
// For Clients, Pets and Bots that are casting the spell, see if the vulnerability affects their spell.
if(!caster->IsNPC())
{
sint32 focus = caster->CalcFocusEffect(focusSpellVulnerability, buffs[i].spellid, spell_id);
if(focus == 1)
{
damage += damage * spells[buffs[i].spellid].base[0] / 100;
break;
}
}