short GetEffectModLevel(short level, sbyte mod)
{
if (mod == 0)
{
return 0;
}
else if (mod == 31)
{
return level;
}
else if (level < -63 || level > 63)
{
return (short)((mod * (level + 1)) >> 6);
}
else if (mod < 0)
{
if (level < 0)
return GetEffectModifier((ushort)(((-level) << 5) - mod));
else
return (short)-GetEffectModifier((ushort)((level << 5) - mod));
}
else
{
if (level < 0)
return (short)-GetEffectModifier((ushort)(((-level) << 5) + mod));
else
return GetEffectModifier((ushort)(((-level) << 5) + mod));
}
}