rendered paste body public boolean calcBlueSkillSuccess(L2Character activeChar, L2Character target, L2Skill skill)
{
int atk = 0;
int def = 0;
int modifier = 0;
switch (skill.getSkillType()) {
case STUN:
atk = activeChar.getPAtk(activeChar);
def = target.getPDef(target);
modifier = target.getWIT();
break;
case ROOT:
atk = activeChar.getMAtk(activeChar, skill);
def = target.getMDef(target, skill);
modifier = target.getDEX();
break;
case PARALYZE:
atk = activeChar.getPAtk(activeChar);
def = target.getPDef(target);
modifier = target.getWIT();
break;
case SLEEP:
atk = activeChar.getMAtk(activeChar, skill);
def = target.getMDef(target, skill);
modifier = target.getWIT();
break;
default:
atk = activeChar.getPAtk(activeChar);
def = target.getPDef(target);
modifier = target.getCON();
break;
}
def = _rnd.nextInt(modifier) * (def / modifier);
double rateMin = _rnd.nextInt(100); // Minimum success rate required
double rate = ((double)(atk - def) / (double)(atk + def)) * 100.0; // Actual success rate
if (rate > 100) rate = 100; // We shouldn't have more than 100% success rate
if (rate < 1) rate = 1; // We shouldn't have less than 1% success rate
String msg = skill.getName() + " success rate: " + (int)rate + "/" + (int)rateMin;
if (activeChar instanceof L2PcInstance)
((L2PcInstance)activeChar).sendMessage(msg);
if (target instanceof L2PcInstance)
((L2PcInstance)target).sendMessage(msg);
return (rateMin <= rate);
}