public static void ResolveExperienceGainChargeLoss(PlayerMobile player, BaseCreature creature, Item item)
        {
            if (player == null || creature == null || item == null)
            {
                return;
            }
            if (item.Deleted)
            {
                return;
            }
            if (item.Aspect == AspectEnum.None)
            {
                return;
            }

            double experienceChance = creature.AspectGearExperienceChanceOnKill();
            int    experienceValue  = creature.AspectGearExperienceEarnedOnKill();

            if (Utility.RandomDouble() <= experienceChance)
            {
                int previousArcaneCharges = item.ArcaneCharges;

                ArcaneChargeLoss(item, experienceValue);

                if (item.TierLevel > 0 && item.TierLevel < MaxTierLevel)
                {
                    item.Experience += experienceValue;

                    if (item.Experience > ExperienceNeededToUpgrade)
                    {
                        item.Experience = ExperienceNeededToUpgrade;
                    }
                }
            }
        }