//public static void CheckLevelable( ILevelable item, Mobile killer, Mobile killed )
        public static void CheckLevelable(XmlLevelItem item, Mobile killer, Mobile killed)
        {
            if ( (item.Level >= LevelItems.MaxLevelsCap) || (item.Level >= item.MaxLevel) )
                return;

            int exp = CalcExp( killed );
            int oldLevel = item.Level;
            int expcap = CalcExpCap( oldLevel );

            if ( LevelItems.EnableExpCap && exp > expcap )
                exp = expcap;

            item.Experience += exp;

            InvalidateLevel( item );

            if ( item.Level != oldLevel )
                OnLevel( item, oldLevel, item.Level, killer );

            //if ( item is Item )
            //    ((Item)item).InvalidateProperties();
            if (item != null)
                item.InvalidateParentProperties();
        }
        //public static void OnLevel(ILevelable item, int oldLevel, int newLevel, Mobile from)
        public static void OnLevel(XmlLevelItem item, int oldLevel, int newLevel, Mobile from)
        {
            /* This is where we control all our props
            * and their maximum value. */
            int index;
            string itemdesc;

            index = newLevel % 10;
            if (index == 0)
            {
                item.Points += LevelItems.PointsPerLevel * 2;
            }
            else
            {
                item.Points += LevelItems.PointsPerLevel;
            }

            from.PlaySound(0x20F);
            from.FixedParticles(0x376A, 1, 31, 9961, 1160, 0, EffectLayer.Waist);
            from.FixedParticles(0x37C4, 1, 31, 9502, 43, 2, EffectLayer.Waist);

            if (item.AttachedTo is BaseWeapon)
                itemdesc = "weapon";
            else if (item.AttachedTo is BaseArmor)
                itemdesc = "armor";
            else if (item.AttachedTo is BaseJewel)
                itemdesc = "jewelry";
            else if (item.AttachedTo is BaseClothing)
                itemdesc = "clothing";
            else
                itemdesc = "item";

            from.SendMessage("Your " + itemdesc + " has gained a level. It is now level {0}.", newLevel);
        }
        //public static void InvalidateLevel( ILevelable item )
        public static void InvalidateLevel(XmlLevelItem item)
        {
            for (int i = 0; i < ExpTable.Length; ++i)
            {
                if (item.Experience < ExpTable[i])
                    return;

                item.Level = i + 1;
            }
        }