All pastes #37233 Raw Edit

Anonymous

public java v1 · immutable
#37233 ·published 2006-01-18 13:59 UTC
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 )