rendered paste body public boolean calcSkillSuccess(L2Character player, L2Character target, L2Skill skill, boolean ss, boolean sps, boolean bss ) { if(Config.ALT_GAME_SKILL_FORMULAS.equalsIgnoreCase("alt") || Config.ALT_GAME_SKILL_FORMULAS.equalsIgnoreCase("true")) return calcAltSkillSuccess(player, target, skill, bss, sps, ss);// ============================================================================================================================================================= // check the skill level, type, power of the player SkillType type = skill.getSkillType(); double maxLevel = ((SkillTable.getInstance().getMaxLevel(skill.getId(),skill.getLevel())) / Config.MAX_SKILL_LEVEL); double skillLevel = (skill.getLevel() * maxLevel * 0.5); double skillPower = (skill.getPower() * 0.01);// =============================================================================================================================================================// setting the variables for success calculation boolean success = false; double rate = 1; int check = _rnd.nextInt(100);// ============================================================================================================================================================= // check the level difference between player and target double LEVEL = 0; int plvl = player.getLevel(); int tlvl = target.getLevel(); int l1 = plvl - tlvl; int l2 = tlvl - plvl; if (plvl >= tlvl) LEVEL = (100 + l1) * 0.6; else LEVEL = (100 - l2) * 0.6;// ============================================================================================================================================================= // check the matk/mdef difference between player and target double MAGIC = 0; double matk = player.getMAtk(target, skill); double mdef = target.getMDef(player, skill); double m1 = matk - mdef; double m2 = mdef - matk; if (matk >= mdef) MAGIC = (3000 + m1) * (0.0045); else MAGIC = (3000 - m2) * (0.0045);// ============================================================================================================================================================= // check the patk/pdef difference between player and target double POWER = 0; double patk = player.getPAtk(target); double pdef = target.getPDef(player); double p1 = patk - pdef; double p2 = pdef - patk; if (patk >= pdef) POWER = (3000 + p1) * (0.0045); else POWER = (3000 - p2) * (0.0045);// =============================================================================================================================================================// calculating the defense check modifier double mcheck = LEVEL + MAGIC + skillLevel; double pcheck = LEVEL + POWER + skillLevel;// ============================================================================================================================================================= // get the stats of the target double tWIT = (target.getWIT() * 0.40); double tMEN = (target.getMEN() * 0.40); double tCON = (target.getCON() * 0.40); double tDEX = (target.getDEX() * 0.40);// ============================================================================================================================================================= // get the stats of the attacker double aINT = (player.getINT() * 0.10); double aDEX = (player.getDEX() * 0.10); double aSTR = (player.getSTR() * 0.10); double aWIT = (player.getWIT() * 0.10);// ============================================================================================================================================================= switch(type) {// =============================================================================================================================================================// WIT affected resistances// ============================================================================================================================================================= case SLEEP: if (target instanceof L2RaidBossInstance) rate = 0; else { if (target.getSleepRes() == 0) rate = (mcheck + aWIT) - tWIT; else rate = (mcheck + aWIT) - (tWIT + (target.getSleepRes()* Config.RESISTANCE_PERCENT)); } break;// ============================================================================================================================================================= case MUTE: if (target instanceof L2RaidBossInstance) rate = 0; else { if (target.getMuteRes() == 0) rate = (mcheck + aWIT) - tWIT; else rate = (mcheck + aWIT) - (tWIT + (target.getMuteRes()* Config.RESISTANCE_PERCENT)); } break;// ============================================================================================================================================================= case ROOT: if (target instanceof L2RaidBossInstance) rate = 0; else { if (target.getRootRes() == 0) rate = (mcheck + aWIT) - tWIT; else rate = (mcheck + aWIT) - (tWIT + (target.getRootRes()* Config.RESISTANCE_PERCENT)); } break;// ============================================================================================================================================================= case PARALYZE: if (target instanceof L2RaidBossInstance) rate = 0; else { if (target.getMovementRes() == 0) rate = (mcheck + aWIT) - tWIT; else rate = (mcheck + aWIT) - (tWIT + (target.getMovementRes()* Config.RESISTANCE_PERCENT)); } break;// ============================================================================================================================================================= case FEAR: if (target instanceof L2RaidBossInstance) rate = 0; else { if (target.getFearRes() == 0) rate = (mcheck + aWIT) - tWIT; else rate = (mcheck + aWIT) - (tWIT + (target.getFearRes()* Config.RESISTANCE_PERCENT)); } break;// ============================================================================================================================================================= // MEN affected resistances// ============================================================================================================================================================= case AGGDAMAGE: if (target.getAggressionRes() == 0) rate = (mcheck + aINT) - tMEN; else rate = (mcheck + aINT) - (tMEN + (target.getAggressionRes()* Config.RESISTANCE_PERCENT)); break;// ============================================================================================================================================================= case POISON: if (target.getPoisonRes() == 0) rate = (mcheck + aINT) - tMEN; else rate = (mcheck + aINT) - (tMEN + (target.getPoisonRes()* Config.RESISTANCE_PERCENT)); break;// ============================================================================================================================================================= case CONFUSION: if (target instanceof L2RaidBossInstance) rate = 0; else { if (target.getConfusionRes() == 0) rate = (mcheck + aINT) - tMEN; else rate = (mcheck + aINT) - (tMEN + (target.getConfusionRes()* Config.RESISTANCE_PERCENT)); } break;// ============================================================================================================================================================= case DATK: if (target.getDarknessRes() == 0) rate = mcheck + aINT - tMEN; else rate = mcheck + aINT - (tMEN + (target.getDarknessRes()* Config.RESISTANCE_PERCENT)); break;// ============================================================================================================================================================= case SATK: if (target.getSacredRes() == 0) rate = (mcheck + aINT) - tMEN; else rate = (mcheck + aINT) - (tMEN + (target.getSacredRes()* Config.RESISTANCE_PERCENT)); break;// =============================================================================================================================================================// CON affected resistances case BLEED: if (target.getBleedRes() == 0) rate = (pcheck + aDEX) - tCON; else rate = (pcheck + aDEX) - (tCON + (target.getBleedRes()* Config.RESISTANCE_PERCENT)); break;// ============================================================================================================================================================= // For normal Stun Attack, with skillType = STUN case STUN: if (target instanceof L2RaidBossInstance) rate = 0; else { if (target.getStunRes() == 0) rate = (pcheck + aDEX) - tCON; else rate = (pcheck + aDEX) - (tCON + (target.getStunRes()* Config.RESISTANCE_PERCENT)); } break;// ============================================================================================================================================================= // For normal Stun attack with skillType = PDAM default: if (target instanceof L2RaidBossInstance) rate = 0; else { if (target.getStunRes() == 0) rate = (pcheck + skillPower + aSTR) - (tCON + tDEX); else rate = (pcheck + skillPower + aSTR) - (tCON + tDEX + (target.getStunRes()* Config.RESISTANCE_PERCENT)); } break; }// ============================================================================================================================================================= if (rate < 0) rate = 0; if (rate >= check) success = true; else success = false; return success; }// =============================================================================================================================================================// ============================================================================================================================================================= //l2j's default calculations public boolean calcAltSkillSuccess(L2Character player, L2Character target, L2Skill skill, boolean ss, boolean sps, boolean bss )