final double targetBasicProperty = getAbnormalResist(skill.getBasicProperty(), target);
final double baseMod = ((((((magicLevel - target.getLevel()) + 3) * skill.getLvlBonusRate()) + activateRate) + 30.0) - targetBasicProperty);
final double elementMod = calcAttributeBonus(attacker, target, skill);
final double traitMod = calcGeneralTraitBonus(attacker, target, skill.getTraitType(), false);
final double basicPropertyResist = getBasicPropertyResistBonus(skill.getBasicProperty(), target);
final double buffDebuffMod = skill.isDebuff() ? target.getStat().getValue(Stat.RESIST_ABNORMAL_DEBUFF, 1) : 1;
final double rate = baseMod * elementMod * traitMod * buffDebuffMod;
final double finalRate = traitMod > 0 ? CommonUtil.constrain(rate, skill.getMinChance(), skill.getMaxChance()) * basicPropertyResist : 0;