This article is precisely for remove this multiplication,
it is used to group or all alone is the same rate exp.
change
Code:
private int GetXP(NpcMonsterDTO monster, Group group) //Level xp
{
int partySize = 1;
double partyPenalty = 1d;
int levelDifference = Level - monster.Level;
if (group != null)
{
int levelSum = group.Characters.Sum(g => g.Character.Level);
partySize = group.CharacterCount;
partyPenalty = (6f / partySize) / levelSum;
}
int xpcalculation = levelDifference < 15 ? monster.XP : monster.XP / 3 * 2;
int xp = (int)Math.Round(xpcalculation * CharacterHelper.ExperiencePenalty(Level, monster.Level) * ServerManager.Instance.Configuration.RateXP * MapInstance.XpRate);
if (partySize > 1 && group != null)
{
xp = (int)Math.Round(xp / (Level * partyPenalty));
}
return xp;
}
Code:
private int GetXP(NpcMonsterDTO monster, Group group) //Level xp
{
int levelDifference = Level - monster.Level;
if (group != null)
{
int levelSum = group.Characters.Sum(g => g.Character.Level);
}
int xpcalculation = levelDifference < 15 ? monster.XP : monster.XP / 3 * 2;
int xp = (int)Math.Round(xpcalculation * CharacterHelper.ExperiencePenalty(Level, monster.Level) * ServerManager.Instance.Configuration.RateXP * MapInstance.XpRate);
return xp;
}






