public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets) { if (activeChar.isAlikeDead()) return; int damage = 0; if (Config.DEBUG) if (Config.DEBUG) _log.fine("Begin Skill processing in Pdam.java " + skill.getSkillType()); for(int index = 0;index < targets.length;index++) { L2Character target = (L2Character)targets[index]; if (target.isAlikeDead()) continue; boolean dual = activeChar.isUsingDualWeapon(); boolean shld = Formulas.getInstance().calcShldUse(activeChar, target); boolean crit = Formulas.getInstance().calcCrit(activeChar.getCriticalHit(target, skill)); if(!crit && (skill.getCondition() & L2Skill.COND_CRIT) != 0) damage = 0; else damage = (int)Formulas.getInstance().calcPhysDam( activeChar, target, skill, shld, crit, dual, false); if (damage > 0) { //Start Check For Fatal Counter - MickyLee if (skill.getId() == 314) { //Calculate the amount of lost HP and use that to calculate damage given to target double counterDMG = activeChar.getMaxHp() - activeChar.getCurrentHp(); if (skill.getLevel() == 1) { damage = (int)(counterDMG * .40); } else if (skill.getLevel() == 2) { damage = (int)(counterDMG * .405); } else if (skill.getLevel() == 3) { damage = (int)(counterDMG * .41); } else if (skill.getLevel() == 4) { damage = (int)(counterDMG * .415); } else if (skill.getLevel() == 5) { damage = (int)(counterDMG * .42); } else if (skill.getLevel() == 6) { damage = (int)(counterDMG * .425); } else if (skill.getLevel() == 7) { damage = (int)(counterDMG * .43); } else if (skill.getLevel() == 8) { damage = (int)(counterDMG * .435); } else if (skill.getLevel() == 9) { damage = (int)(counterDMG * .44); } else if (skill.getLevel() == 10) { damage = (int)(counterDMG * .445); } else if (skill.getLevel() == 11) { damage = (int)(counterDMG * .45); } else if (skill.getLevel() == 12) { damage = (int)(counterDMG * .455); } else if (skill.getLevel() == 13) { damage = (int)(counterDMG * .46); } else if (skill.getLevel() == 14) { damage = (int)(counterDMG * .465); } else if (skill.getLevel() == 15) { damage = (int)(counterDMG * .47); } else if (skill.getLevel() == 16) { damage = (int)(counterDMG * .475); } } target.reduceCurrentHp(damage, activeChar); if (activeChar instanceof L2PcInstance) { SystemMessage sm = new SystemMessage(SystemMessage.YOU_DID_S1_DMG); sm.addNumber(damage); activeChar.sendPacket(sm); } // activate attacked effects, if any target.stopEffect(skill.getId()); if (target.getEffect(skill.getId()) != null) target.removeEffect(target.getEffect(skill.getId())); skill.getEffects(activeChar, target); } else { SystemMessage sm = new SystemMessage(614); sm.addString(skill.getName() + " failed."); activeChar.sendPacket(sm); } } }