Advertisement
Guest User

Untitled

a guest
Feb 19th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.26 KB | None | 0 0
  1. public void distributeXpAndSp(long xpReward_pr, int spReward_pr, long xpReward_run, int spReward_run, long xpReward, int spReward, List<L2PlayableInstance> rewardedMembers, int topLvl, L2NpcInstance target, int partyDmg, boolean isChampion)
  2. {
  3. L2SummonInstance summon = null;
  4. List<L2PlayableInstance> validMembers = getValidMembers(rewardedMembers, topLvl);
  5.  
  6. long CalcXPReward;
  7. int CalcSPReward;
  8. float penalty;
  9. double sqLevel;
  10. double preCalculationExp;
  11. double preCalculationSp;
  12.  
  13. xpReward *= getExpBonus(validMembers.size());
  14. spReward *= getSpBonus(validMembers.size());
  15. xpReward_pr *= getExpBonus(validMembers.size());
  16. spReward_pr *= getSpBonus(validMembers.size());
  17. xpReward_run *= getExpBonus(validMembers.size());
  18. spReward_run *= getSpBonus(validMembers.size());
  19.  
  20. double sqLevelSum = 0;
  21. for (L2PlayableInstance character : validMembers)
  22. sqLevelSum += (character.getLevel() * character.getLevel());
  23.  
  24. // Go through the L2PcInstances and L2PetInstances (not L2SummonInstances) that must be rewarded
  25. synchronized (rewardedMembers)
  26. {
  27. for (L2Character member : rewardedMembers)
  28. {
  29. if (member.isDead())
  30. continue;
  31. CalcXPReward=xpReward;
  32. CalcSPReward=spReward;
  33. if(member.getActingPlayer()!=null)
  34. {
  35. if (member.getActingPlayer().getPremiumService()>0)
  36. {
  37. CalcXPReward=xpReward_pr;
  38. CalcSPReward=spReward_pr;
  39. }
  40.  
  41. for (L2ItemInstance item : member.getInventory().getItems())
  42. {
  43. if (item != null && (item.getItemId() >= 15001 && item.getItemId() <= 15006))
  44. {
  45. CalcXPReward=xpReward_run;
  46. }
  47. if (item != null && (item.getItemId() >= 15007 && item.getItemId() <= 15012))
  48. {
  49. CalcSPReward=spReward_run;
  50. }
  51. }
  52. }
  53. penalty = 0;
  54.  
  55. // The L2SummonInstance penalty
  56. if (member.getPet() instanceof L2SummonInstance)
  57. {
  58. summon = (L2SummonInstance) member.getPet();
  59. penalty = summon.getExpPenalty();
  60. }
  61. // Pets that leech xp from the owner (like babypets) do not get rewarded directly
  62. if (member instanceof L2PetInstance)
  63. {
  64. if (((L2PetInstance) member).getPetData().getOwnerExpTaken() > 0)
  65. continue;
  66.  
  67. penalty = (float) 0.85;
  68. }
  69.  
  70. // Calculate and add the EXP and SP reward to the member
  71. if (validMembers.contains(member))
  72. {
  73. sqLevel = member.getLevel() * member.getLevel();
  74. preCalculationExp = (sqLevel / sqLevelSum) * (1 - penalty);
  75. preCalculationSp = (sqLevel / sqLevelSum);
  76.  
  77. // Add the XP/SP points to the requested party member
  78. if (!member.isDead())
  79. {
  80. long addexp = Math.round(member.calcStat(Stats.EXPSP_RATE, CalcXPReward * preCalculationExp, null, null));
  81. int addsp = (int) member.calcStat(Stats.EXPSP_RATE, CalcSPReward * preCalculationSp, null, null);
  82.  
  83. // Set new karma.
  84. ((L2PcInstance)member).UpdateKarma(addexp);
  85.  
  86. member.addExpAndSp(addexp,addsp);
  87. }
  88. }
  89. else
  90. member.addExpAndSp(0, 0);
  91. }
  92. }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement