rendered paste bodyIndex: D:/Program Files/eclipse/workspace/l2j/java/net/sf/l2j/gameserver/model/L2Summon.java===================================================================--- D:/Program Files/eclipse/workspace/l2j/java/net/sf/l2j/gameserver/model/L2Summon.java (revision 1585)+++ D:/Program Files/eclipse/workspace/l2j/java/net/sf/l2j/gameserver/model/L2Summon.java (working copy)@@ -373,4 +373,13 @@ { super.useMagic(skill); }+ + public void setExpPenalty(float expPenalty)+ {+ + }+ public float getExpPenalty()+ {+ return 0;+ } }Index: D:/Program Files/eclipse/workspace/l2j/java/net/sf/l2j/gameserver/model/actor/instance/L2PetInstance.java===================================================================--- D:/Program Files/eclipse/workspace/l2j/java/net/sf/l2j/gameserver/model/actor/instance/L2PetInstance.java (revision 1585)+++ D:/Program Files/eclipse/workspace/l2j/java/net/sf/l2j/gameserver/model/actor/instance/L2PetInstance.java (working copy)@@ -692,9 +692,20 @@ // Set the new Experience value of the L2PcInstance getStat().addExp(-lostExp); }+ + private float _expPenalty = 0;+ + public void setExpPenalty(float expPenalty)+ {+ _expPenalty = expPenalty;+ }+ public float getExpPenalty()+ {+ return _expPenalty;+ } - + public void addExpAndSp(int addToExp, int addToSp, float _expPenalty) { getStat().addExpAndSp(addToExp, addToSp, _expPenalty); } public void addExpAndSp(int addToExp, int addToSp) { getStat().addExpAndSp(addToExp, addToSp); } public int getExpForThisLevel() { return getStat().getExpForLevel(getLevel()); } public int getExpForNextLevel() { return getStat().getExpForLevel(getLevel() + 1); }Index: D:/Program Files/eclipse/workspace/l2j/java/net/sf/l2j/gameserver/model/actor/stat/PetStat.java===================================================================--- D:/Program Files/eclipse/workspace/l2j/java/net/sf/l2j/gameserver/model/actor/stat/PetStat.java (revision 1585)+++ D:/Program Files/eclipse/workspace/l2j/java/net/sf/l2j/gameserver/model/actor/stat/PetStat.java (working copy)@@ -34,7 +34,20 @@ return true; }+ + public boolean addExpAndSp(int addToExp, int addToSp, float _expPenalty)+ {+ addToExp = (int)(addToExp*_expPenalty);+ addToSp = (int)(addToSp*_expPenalty);+ if (!super.addExpAndSp(addToExp, addToSp)) return false; + SystemMessage sm = new SystemMessage(SystemMessage.PET_EARNED_S1_EXP);+ sm.addNumber(addToExp);+ getActiveChar().getOwner().sendPacket(sm);++ return true;+ } + public boolean addExpAndSp(int addToExp, int addToSp) { if (!super.addExpAndSp(addToExp, addToSp)) return false;Index: D:/Program Files/eclipse/workspace/l2j/java/net/sf/l2j/gameserver/model/L2Attackable.java===================================================================--- D:/Program Files/eclipse/workspace/l2j/java/net/sf/l2j/gameserver/model/L2Attackable.java (revision 1585)+++ D:/Program Files/eclipse/workspace/l2j/java/net/sf/l2j/gameserver/model/L2Attackable.java (working copy)@@ -548,7 +548,10 @@ attackerParty = ((L2PcInstance)attacker).getParty(); else return;- + if (attacker instanceof L2PcInstance && ((L2PcInstance)attacker).getPet() instanceof L2PetInstance)+ {+ penalty = ((L2PetInstance)((L2PcInstance)attacker).getPet()).getExpPenalty();+ } // If this attacker is a L2PcInstance with a summoned L2SummonInstance, get Exp Penalty applied for the current summoned L2SummonInstance if (attacker instanceof L2PcInstance && ((L2PcInstance)attacker).getPet() instanceof L2SummonInstance) {@@ -578,6 +581,10 @@ // Distribute the Exp and SP between the L2PcInstance and its L2Summon attacker.addExpAndSp((int)attacker.calcStat(Stats.EXPSP_RATE, exp, null, null), (int)attacker.calcStat(Stats.EXPSP_RATE, sp, null, null));+ if (attacker instanceof L2PcInstance && ((L2PcInstance)attacker).getPet() instanceof L2PetInstance)+ {+ ((L2PetInstance)((L2PcInstance)attacker).getPet()).addExpAndSp(exp, sp, penalty);+ } } } elseIndex: D:/Program Files/eclipse/workspace/l2j/java/net/sf/l2j/gameserver/model/L2Party.java===================================================================--- D:/Program Files/eclipse/workspace/l2j/java/net/sf/l2j/gameserver/model/L2Party.java (revision 1585)+++ D:/Program Files/eclipse/workspace/l2j/java/net/sf/l2j/gameserver/model/L2Party.java (working copy)@@ -27,6 +27,7 @@ import net.sf.l2j.gameserver.SevenSignsFestival; import net.sf.l2j.gameserver.lib.Rnd; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;+import net.sf.l2j.gameserver.model.actor.instance.L2PetInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance; import net.sf.l2j.gameserver.model.actor.instance.L2SummonInstance; import net.sf.l2j.gameserver.serverpackets.PartySmallWindowAdd;@@ -579,6 +580,11 @@ // Add the XP/SP points to the requested party member member.addExpAndSp((int)member.calcStat(Stats.EXPSP_RATE, xpReward * preCalculation, null, null), (int)member.calcStat(Stats.EXPSP_RATE, spReward * preCalculation, null, null));+ + if (member instanceof L2PetInstance)+ {+ ((L2PetInstance)member).getStat().addExpAndSp((int)(xpReward * preCalculation),(int)(spReward * preCalculation), ((L2PetInstance)member).getExpPenalty());+ } } } }