Browse Source

Fixed an issue with mob xp scaling

tags/v0.1.2^2^2
Big Bad Waffle 7 years ago
parent
commit
ab1b8d4fde
1 changed files with 8 additions and 9 deletions
  1. +8
    -9
      src/server/components/stats.js

+ 8
- 9
src/server/components/stats.js View File

@@ -205,7 +205,6 @@ define([

kill: function(target) {
var level = target.stats.values.level;
var inc = level * 10;

//Who should get xp?
var aggroList = target.aggro.list;
@@ -217,27 +216,27 @@ define([
if (dmg <= 0)
continue;

var get = inc;
var mult = 1;
//How many party members contributed
// Remember, maybe one of the aggro-ees might be a mob too
var party = a.obj.social ? a.obj.social.party : null;
if (party) {
var mult = aggroList.filter(function(f) {
var partySize = aggroList.filter(function(f) {
return ((a.damage > 0) && (party.indexOf(f.obj.serverId) > -1));
}).length;
mult--;
get *= (1 + (mult * 0.1));
get = ~~get;
partySize--;
mult = (1 + (partySize * 0.1));
}

if (a.obj.stats) {
//Scale xp by source level so you can't just farm low level mobs (or get boosted on high level mobs).
//Mobs that are farther then 10 levels from you, give no xp
//We don't currently do this for quests/herb gathering
var levelDelta = level - a.obj.stats.values.level;
var amount = 0;
var sourceLevel = a.obj.stats.values.level;
var levelDelta = level - sourceLevel;
var amount = level * 10 * mult;
if (Math.abs(levelDelta) <= 10)
amount = ~~((get + (levelDelta * 10)) * Math.pow(1 - (Math.abs(levelDelta) / 10), 2));
amount = ~~(((sourceLevel + levelDelta) * 10) * Math.pow(1 - (Math.abs(levelDelta) / 10), 2) * mult);

a.obj.stats.getXp(amount, this.obj);
}


Loading…
Cancel
Save