diff --git a/src/engine/net/client/msg/VendorDialogMsg.java b/src/engine/net/client/msg/VendorDialogMsg.java index 49bb8978..11014670 100644 --- a/src/engine/net/client/msg/VendorDialogMsg.java +++ b/src/engine/net/client/msg/VendorDialogMsg.java @@ -161,12 +161,12 @@ public class VendorDialogMsg extends ClientNetMsg { } playerCharacter.isBoxed = false; playerCharacter.title = CharacterTitle.NONE; - InterestManager.reloadCharacter(playerCharacter); + InterestManager.setObjectDirty(playerCharacter); playerCharacter.removeEffectBySource(Enum.EffectSourceType.DeathShroud,50,true); for(PlayerCharacter box : currentBoxes) { box.isBoxed = true; box.title = CharacterTitle.BOX; - InterestManager.reloadCharacter(box); + InterestManager.setObjectDirty(box); } } Dispatch dispatch = Dispatch.borrow(playerCharacter, msg); diff --git a/src/engine/objects/Experience.java b/src/engine/objects/Experience.java index 31bd4ab0..9f454817 100644 --- a/src/engine/objects/Experience.java +++ b/src/engine/objects/Experience.java @@ -460,7 +460,8 @@ public class Experience { return; // Get XP and adjust for Mob Level with world xp modifier taken into account - grantedExperience = (double) LOOTMANAGER.NORMAL_EXP_RATE * maxXPPerKill(killer.getLevel()); + float mdofier = LOOTMANAGER.NORMAL_EXP_RATE; + grantedExperience = maxXPPerKill(killer.getLevel()); grantedExperience *= getConMod(killer, mob); // Modify for hotzone diff --git a/src/engine/objects/PlayerCharacter.java b/src/engine/objects/PlayerCharacter.java index 8271ee7c..e9da5652 100644 --- a/src/engine/objects/PlayerCharacter.java +++ b/src/engine/objects/PlayerCharacter.java @@ -1827,20 +1827,18 @@ public class PlayerCharacter extends AbstractCharacter { //see if we shold grant xp to attacker boolean doPVPEXP = false; long lastKill = att.getLastKillOfTarget(this.getObjectUUID()); - if ((System.currentTimeMillis() - lastKill) > MBServerStatics.PLAYER_KILL_XP_TIMER) - if (attacker.getLevel() > 39 && this.getLevel() > 39) { - Guild aN = null; - Guild tN = null; - if (attacker.getGuild() != null) - aN = attacker.getGuild().getNation(); - if (this.getGuild() != null) - tN = this.getGuild().getNation(); - if (aN == null || tN == null || aN.isEmptyGuild() || Guild.sameGuild(aN, tN) || this.isDeathShroud()) { - //skip giving xp if same guild or attacker is errant, or target is in death shroud. - } else { - doPVPEXP = true; - } - } + + Guild aN = null; + Guild tN = null; + if (attacker.getGuild() != null) + aN = attacker.getGuild().getNation(); + if (this.getGuild() != null) + tN = this.getGuild().getNation(); + + if (aN != null || tN != null || !aN.equals(tN) || !this.isDeathShroud()) { + doPVPEXP = true; + } + //apply death shroud to non safeholds. Zone zone = ZoneManager.findSmallestZone(this.getLoc()); @@ -2926,8 +2924,9 @@ public class PlayerCharacter extends AbstractCharacter { xp *= 2; // Stop players from getting experience past the cap - if (this.exp + xp >= Experience.getBaseExperience(MBServerStatics.LEVELCAP)) - xp = Experience.getBaseExperience(MBServerStatics.LEVELCAP) - this.exp + 1; + int levelCap = MBServerStatics.LEVELCAP; + if (this.exp + xp >= Experience.getBaseExperience(levelCap)) + xp = Experience.getBaseExperience(levelCap) - this.exp + 1; if (xp == 0) xp = 1;