//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; } }