Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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)
- {
- L2SummonInstance summon = null;
- List<L2PlayableInstance> validMembers = getValidMembers(rewardedMembers, topLvl);
- long CalcXPReward;
- int CalcSPReward;
- float penalty;
- double sqLevel;
- double preCalculationExp;
- double preCalculationSp;
- xpReward *= getExpBonus(validMembers.size());
- spReward *= getSpBonus(validMembers.size());
- xpReward_pr *= getExpBonus(validMembers.size());
- spReward_pr *= getSpBonus(validMembers.size());
- xpReward_run *= getExpBonus(validMembers.size());
- spReward_run *= getSpBonus(validMembers.size());
- double sqLevelSum = 0;
- for (L2PlayableInstance character : validMembers)
- sqLevelSum += (character.getLevel() * character.getLevel());
- // Go through the L2PcInstances and L2PetInstances (not L2SummonInstances) that must be rewarded
- synchronized (rewardedMembers)
- {
- for (L2Character member : rewardedMembers)
- {
- if (member.isDead())
- continue;
- CalcXPReward=xpReward;
- CalcSPReward=spReward;
- if(member.getActingPlayer()!=null)
- {
- if (member.getActingPlayer().getPremiumService()>0)
- {
- CalcXPReward=xpReward_pr;
- CalcSPReward=spReward_pr;
- }
- for (L2ItemInstance item : member.getInventory().getItems())
- {
- if (item != null && (item.getItemId() >= 15001 && item.getItemId() <= 15006))
- {
- CalcXPReward=xpReward_run;
- }
- if (item != null && (item.getItemId() >= 15007 && item.getItemId() <= 15012))
- {
- CalcSPReward=spReward_run;
- }
- }
- }
- penalty = 0;
- // The L2SummonInstance penalty
- if (member.getPet() instanceof L2SummonInstance)
- {
- summon = (L2SummonInstance) member.getPet();
- penalty = summon.getExpPenalty();
- }
- // Pets that leech xp from the owner (like babypets) do not get rewarded directly
- if (member instanceof L2PetInstance)
- {
- if (((L2PetInstance) member).getPetData().getOwnerExpTaken() > 0)
- continue;
- penalty = (float) 0.85;
- }
- // Calculate and add the EXP and SP reward to the member
- if (validMembers.contains(member))
- {
- sqLevel = member.getLevel() * member.getLevel();
- preCalculationExp = (sqLevel / sqLevelSum) * (1 - penalty);
- preCalculationSp = (sqLevel / sqLevelSum);
- // Add the XP/SP points to the requested party member
- if (!member.isDead())
- {
- long addexp = Math.round(member.calcStat(Stats.EXPSP_RATE, CalcXPReward * preCalculationExp, null, null));
- int addsp = (int) member.calcStat(Stats.EXPSP_RATE, CalcSPReward * preCalculationSp, null, null);
- // Set new karma.
- ((L2PcInstance)member).UpdateKarma(addexp);
- member.addExpAndSp(addexp,addsp);
- }
- }
- else
- member.addExpAndSp(0, 0);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement