public static void TraceExpanded_OnCommand(CommandEventArgs e) { Dictionary <Type, int[]> typeTable = new Dictionary <Type, int[]>(); foreach (Item item in World.Items.Values) { ExpandFlag flags = item.GetExpandFlags(); if ((flags & ~(ExpandFlag.TempFlag | ExpandFlag.SaveFlag)) == 0) { continue; } Type itemType = item.GetType(); do { if (!typeTable.TryGetValue(itemType, out int[] countTable))
public static void TraceExpanded_OnCommand(CommandEventArgs e) { Hashtable typeTable = new Hashtable(); foreach (Item item in World.Items.Values) { ExpandFlag flags = item.GetExpandFlags(); if ((flags & ~(ExpandFlag.TempFlag | ExpandFlag.SaveFlag)) == 0) { continue; } Type itemType = item.GetType(); do { int[] countTable = typeTable[itemType] as int[]; if (countTable == null) { typeTable[itemType] = countTable = new int[9]; } if ((flags & ExpandFlag.Name) != 0) { ++countTable[0]; } if ((flags & ExpandFlag.Items) != 0) { ++countTable[1]; } if ((flags & ExpandFlag.Bounce) != 0) { ++countTable[2]; } if ((flags & ExpandFlag.Holder) != 0) { ++countTable[3]; } if ((flags & ExpandFlag.Blessed) != 0) { ++countTable[4]; } /*if ( ( flags & ExpandFlag.TempFlag ) != 0 ) ++countTable[5]; * * if ( ( flags & ExpandFlag.SaveFlag ) != 0 ) ++countTable[6];*/ if ((flags & ExpandFlag.Weight) != 0) { ++countTable[7]; } if ((flags & ExpandFlag.Spawner) != 0) { ++countTable[8]; } itemType = itemType.BaseType; }while (itemType != typeof(object)); } try { using (StreamWriter op = new StreamWriter("expandedItems.log", true)) { string[] names = { "Name", "Items", "Bounce", "Holder", "Blessed", "TempFlag", "SaveFlag", "Weight", "Spawner" }; ArrayList list = new ArrayList(typeTable); list.Sort(new CountSorter()); foreach (DictionaryEntry de in list) { Type itemType = de.Key as Type; int[] countTable = de.Value as int[]; op.WriteLine("# {0}", itemType.FullName); for (int i = 0; i < countTable.Length; ++i) { if (countTable[i] > 0) { op.WriteLine("{0}\t{1:N0}", names[i], countTable[i]); } } op.WriteLine(); } } } catch (Exception ex) { ExceptionLogging.LogException(ex); } }