示例#1
0
        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);
        }