All pastes #17949 Raw Edit

Mine

public java v1 · immutable
#17949 ·published 2005-07-18 01:44 UTC
rendered paste body
// spoil.java    public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)    {         if (!(activeChar instanceof L2PcInstance))			return;		L2Object[] targetList = skill.getTargetList(activeChar);		for (int index = 0; index < targetList.length; index++) {			if (!(targetList[index] instanceof L2MonsterInstance))				continue;			L2MonsterInstance target = (L2MonsterInstance) targetList[index];			// ootz0rz			// matk/mdef based spoil? wth!?			// boolean spoil = Formulas.getInstance().calcMagicAffected(activeChar, target, skill);						// init vars			boolean canSpoilLowerLevel = Config.CAN_SPOIL_LOWER_LEVEL_MOBS;			boolean spoil = false;			boolean wasNegative = false;			double x = 0;			double lvlDifference = 0;			double rateOfSpoil = 0;			double 	maxLevelDifference = 	Config.MAXIMUM_PLAYER_AND_MOB_LEVEL_DIFFERENCE;			double 	baseRateOfSpoil = 		Config.BASE_SPOIL_RATE;			double 	minimumRateOfSpoil = 	Config.MINIMUM_SPOIL_RATE;			double 	spoilLevelLimit = 		Config.SPOIL_LEVEL_DIFFERENCE_LIMIT;			int 	maxLevelOfSpoil = 		Config.LAST_LEVEL_SPOIL_IS_LEARNED;			int mobLevel = target.getLevel();			int playerLevel = activeChar.getLevel();			int spoilCheck = 0;			int spoilLevelANDPlayerLevelDifference = 0;						Random rand = new Random();			consolePrint("SSS ------------------------");			consolePrint("SSS --- Spoil attempted by: "+activeChar.getName()+"("+playerLevel+") on monster: "+target.getName()+"("+mobLevel+")");						// first make sure target mob is alive			if ( target.isDead() == false ) {							// lvl diff				lvlDifference = mobLevel - playerLevel;				consolePrint("SSS --- LVL Diff: "+lvlDifference);								// rate of spoil				x = lvlDifference / maxLevelDifference;				consolePrint("SSS --- X("+lvlDifference+"/"+maxLevelDifference+": "+x);				if ( x < 0 ) {					x *= -1;					wasNegative = true;				}				if ( canSpoilLowerLevel == true && wasNegative ) {					rateOfSpoil = baseRateOfSpoil;					consolePrint("SSS --- rateOfSpoil[1.1]: "+rateOfSpoil);				}				else {					if ( x > 1 ) x = 1;					rateOfSpoil = baseRateOfSpoil * ( 1 - Math.pow(x, 2) );					consolePrint("SSS --- rateOfSpoil[1.2]: "+rateOfSpoil);					// check for min rate					if ( rateOfSpoil < minimumRateOfSpoil ) rateOfSpoil = minimumRateOfSpoil;				}				consolePrint("SSS --- rateOfSpoil[2]: "+rateOfSpoil);								// now check for level of spoil skill				if ( playerLevel > maxLevelOfSpoil ) playerLevel = maxLevelOfSpoil;				consolePrint("SSS --- [1]skill.getId("+skill.getId()+")");				int classID = activeChar.getClassIDOnly(activeChar.getObjectId());				consolePrint("SSS --- [2]classID("+activeChar.getClassIDOnly(activeChar.getObjectId())+"): "+classID+"");								consolePrint("SSS --- [3]skill.getLevel("+skill.getLevel()+")");				spoilCheck = SkillTreeTable.getMinSkillLevel(skill.getId(), classID, skill.getLevel());				consolePrint("SSS --- spoilCheck[1]("+skill.getId()+", "+classID+", "+skill.getLevel()+"): "+spoilCheck);				spoilLevelANDPlayerLevelDifference = playerLevel - spoilCheck;				if ( spoilLevelANDPlayerLevelDifference < 0 ) spoilLevelANDPlayerLevelDifference *= -1;				consolePrint("SSS --- spoil/lvldiff[0]: "+spoilLevelANDPlayerLevelDifference);								if ( spoilLevelANDPlayerLevelDifference > spoilLevelLimit ) {					spoilLevelANDPlayerLevelDifference /= spoilLevelLimit;					consolePrint("SSS --- spoil/lvldiff[1]: "+spoilLevelANDPlayerLevelDifference);										if ( spoilLevelANDPlayerLevelDifference < 0 ) spoilLevelANDPlayerLevelDifference *= -1;					if ( spoilLevelANDPlayerLevelDifference > 1 ) spoilLevelANDPlayerLevelDifference = 1;					consolePrint("SSS --- spoil/lvldiff[2]: "+spoilLevelANDPlayerLevelDifference);										double rateOfSpoilMultiplier = (baseRateOfSpoil * ( 1 - Math.pow(spoilLevelANDPlayerLevelDifference, 2) ))/100;					consolePrint("SSS --- rateOfSpoilMultiplier: "+rateOfSpoilMultiplier);					rateOfSpoil *= rateOfSpoilMultiplier;					consolePrint("SSS --- rateOfSpoil[2b]: "+rateOfSpoil);					if ( rateOfSpoil < minimumRateOfSpoil ) rateOfSpoil = minimumRateOfSpoil;					consolePrint("SSS --- rateOfSpoil[2c]: "+rateOfSpoil);				}				consolePrint("SSS --- rateOfSpoil[3]: "+rateOfSpoil);												// now do randomization				int randomSuccessRate = rand.nextInt(99);							if ( randomSuccessRate < rateOfSpoil ) spoil = true;				consolePrint("SSS --- spoil success: "+spoil);				consolePrint("SSS ------------------------");			}			else {				consolePrint("SSS --- TARGET IS DEAD! Set spoil to fail!");				consolePrint("SSS ------------------------");			}			if (spoil) {				target.activateSpoil();				activeChar.sendPacket(new SystemMessage(SystemMessage.SPOIL_SUCCESS));			} else {				SystemMessage sm = new SystemMessage(614);				sm.addString("Spoil failed");				activeChar.sendPacket(sm);			}			target.addDamageHate(activeChar, 0, (int)skill.getPower());			target.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, activeChar);			activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);		}    } //SkillTreeTable.java    protected static void consolePrint(String text) {    	if ( Config.DEBUG == true ) System.out.println(text);    }        public static int getMinSkillLevel(int skillID, int classID, int skillLVL) {    	L2PcInstance player = null;        java.sql.Connection con = null;        int minLVL = 0;        consolePrint("getMinSkillLevel --- class_id="+classID+" | skill_id="+skillID+" | level="+skillLVL+"");        try        {            con = L2DatabaseFactory.getInstance().getConnection();            PreparedStatement statement = con.prepareStatement("SELECT `min_level` FROM skill_trees WHERE class_id=? AND skill_id=? AND level=?");            statement.setInt(1, classID);            statement.setInt(2, skillID);            statement.setInt(3, skillLVL);            consolePrint("getMinSkillLevel --- statement: (SELECT `min_level` FROM skill_trees WHERE class_id="+classID+" AND skill_id="+skillID+" AND level="+skillLVL+")");            ResultSet rset = statement.executeQuery();            consolePrint("getMinSkillLevel --- rset: ("+rset+")");                        while (rset.next())            {            	minLVL = rset.getInt("min_level");            	consolePrint("getMinSkillLevel --- min_level("+rset.getInt("min_level")+"): ("+minLVL+")");                break;            }                        rset.close();            statement.close();        }        catch (Exception e)        {			_log.log(Level.WARNING, "could not get char data:", e);        }         finally         {            try { con.close(); } catch (Exception e) {}        }        consolePrint("getMinSkillLevel --- return: ("+minLVL+")");        return minLVL;    }//L2Character.java    public int getClassIDOnly(int objectId) {    	L2PcInstance player = null;        java.sql.Connection con = null;        int classId = 0;        consolePrint("getClassIDOnly --- Lookup objectId: ("+objectId+")");        try        {            con = L2DatabaseFactory.getInstance().getConnection();            PreparedStatement statement = con.prepareStatement("SELECT `classid` FROM characters WHERE obj_id=?");            statement.setInt(1, objectId);            consolePrint("getClassIDOnly --- statement: (SELECT `classid` FROM characters WHERE obj_id="+objectId+")");            ResultSet rset = statement.executeQuery();            consolePrint("getClassIDOnly --- rset: ("+rset+")");                        while (rset.next())            {            	classId = rset.getInt("classid");            	consolePrint("getClassIDOnly --- classId("+rset.getInt("classid")+"): ("+classId+")");                break;            }                        rset.close();            statement.close();        }        catch (Exception e)        {			_log.log(Level.WARNING, "could not get char data:", e);        }         finally         {            try { con.close(); } catch (Exception e) {}        }        consolePrint("getClassIDOnly --- return: ("+classId+")");        return classId;    }