private static void GainXPFromDamageInflicted(CharacterInstance ch, CharacterInstance victim, int dam, int dt) { if (dam <= 0 || ch == victim || ch.IsNpc() || ch.CurrentFighting == null || ch.CurrentFighting.Experience <= 0) { return; } int xpGain; if (ch.CurrentFighting.Who == victim) { xpGain = ch.CurrentFighting.Experience * dam / victim.MaximumHealth; } else { xpGain = (int)(ch.ComputeExperienceGain(victim) * 0.85f * dam) / victim.MaximumHealth; } if (dt == RepositoryManager.Instance.GetEntity <SkillData>("backstab").ID || dt == RepositoryManager.Instance.GetEntity <SkillData>("circle").ID) { xpGain = 0; } ((PlayerInstance)ch).GainXP(xpGain); }