Пример #1
0
 public static void DoWalk(Direction d, bool fromRenderer)
 {
     fromRenderer = false;
     if (!m_InResync)
     {
         Mobile player = World.Player;
         if (((player != null) && (player.Walking.Count <= 0)) && ((player.Body == 0x3db) || (m_WalkReq < (m_WalkAck + m_WalkAckSync))))
         {
             if (m_Stealth && (m_StealthSteps == 0))
             {
                 if (DateTime.Now >= (m_LastStealthUse + TimeSpan.FromSeconds(2.0)))
                 {
                     Skills[SkillName.Stealth].Use();
                     m_LastStealthUse = DateTime.Now;
                 }
             }
             else
             {
                 GContextMenu.Close();
                 int x = player.X;
                 int y = player.Y;
                 int z = player.Z;
                 bool ghost = player.Ghost;
                 bool flag2 = !ghost && ((player.StamCur <= 0) && (player.StamMax > 0));
                 bool flag3 = !flag2 && ((player.StamCur == 1) && (player.StamMax > 0));
                 if (flag2 || flag3)
                 {
                     flag2 = flag3 = !UsePotion(PotionType.Red);
                 }
                 if (!flag2)
                 {
                     int num4;
                     int num5;
                     if (m_Stealth)
                     {
                         flag3 = true;
                     }
                     if (!Walking.Calculate(x, y, z, d, out num4, out num5))
                     {
                         if ((player.Direction & 7) != (num5 & 7))
                         {
                             WalkAnimation animation = WalkAnimation.PoolInstance(player, player.X, player.Y, player.Z, num5);
                             player.Walking.Enqueue(animation);
                             player.IsMoving = true;
                             animation.Start();
                             SendMovementRequest(num5, player.X, player.Y, player.Z);
                             if (player.Direction != num5)
                             {
                                 EquipSort(player, num5);
                                 player.Direction = (byte) num5;
                             }
                         }
                         else
                         {
                             player.MovedTiles = 0;
                             player.HorseFootsteps = 0;
                             player.IsMoving = false;
                         }
                     }
                     else
                     {
                         num5 &= 7;
                         num5 |= (!flag3 && (m_dMouse > (GameWidth / 3))) ? 0x80 : 0;
                         if (!flag3 && World.CharData.AlwaysRun)
                         {
                             num5 |= 0x80;
                         }
                         int num6 = x;
                         int num7 = y;
                         if (fromRenderer || ((num5 & 7) == (player.Direction & 7)))
                         {
                             Walking.Offset(num5, ref num6, ref num7);
                         }
                         else
                         {
                             num4 = player.Z;
                         }
                         if (((m_LeapFrog != null) && !m_LeapFrog.InSquareRange(new Point(num6, num7), 2)) && m_LeapFrog.InSquareRange(x, y, 2))
                         {
                             if ((m_LastLeapfrogPickup + TimeSpan.FromSeconds(0.1)) < DateTime.Now)
                             {
                                 m_LastLeapfrogPickup = DateTime.Now;
                                 Walking.Offset(num5, ref num6, ref num7);
                                 Network.Send(new PPickupItem(m_LeapFrog, m_LeapFrog.Amount));
                                 Network.Send(new PDropItem(m_LeapFrog.Serial, (short) num6, (short) num7, (sbyte) num4, -1));
                             }
                         }
                         else
                         {
                             WalkAnimation animation2 = WalkAnimation.PoolInstance(player, num6, num7, num4, num5);
                             player.Walking.Enqueue(animation2);
                             bool isMoving = player.IsMoving;
                             player.IsMoving = true;
                             animation2.Start();
                             player.SetReal(num6, num7, num4);
                             if (!isMoving && animation2.Advance)
                             {
                                 World.Offset(animation2.xOffset, animation2.yOffset);
                                 Effects.Offset(animation2.xOffset, animation2.yOffset);
                             }
                             Redraw();
                             if ((num5 & 7) != (player.Direction & 7))
                             {
                                 SendMovementRequest(num5, player.X, player.Y, player.Z);
                                 if (!fromRenderer)
                                 {
                                     if (player.Direction != num5)
                                     {
                                         EquipSort(player, num5);
                                         player.Direction = (byte) num5;
                                     }
                                     return;
                                 }
                             }
                             if (!ghost && (player.Body != 0x3db))
                             {
                                 MapPackage cache = Map.GetCache();
                                 ArrayList list = cache.cells[num6 - cache.CellX, num7 - cache.CellY];
                                 for (int i = 0; i < list.Count; i++)
                                 {
                                     ICell cell = (ICell) list[i];
                                     if ((cell is DynamicItem) && ((DynamicItem) cell).m_Item.IsDoor)
                                     {
                                         Network.Send(new POpenDoor());
                                         break;
                                     }
                                 }
                             }
                             if (m_Stealth)
                             {
                                 m_StealthSteps--;
                             }
                             SendMovementRequest(num5, num6, num7, num4);
                             if (player.Direction != num5)
                             {
                                 EquipSort(player, num5);
                                 player.Direction = (byte) num5;
                             }
                             if (((Gumps.Drag == null) || (Gumps.Drag.GetType() != typeof(GDraggedItem))) && ((DateTime.Now - m_LastAction) > TimeSpan.FromSeconds(0.5)))
                             {
                                 if (m_IVArray == null)
                                 {
                                     m_IVArray = new IItemValidator[2];
                                 }
                                 if (m_Regs == null)
                                 {
                                     m_Regs = new PlayerDistanceValidator(new PickupValidator(ReagentValidator.Validator), 2);
                                     m_IVArray[0] = m_Regs;
                                     m_IVArray[1] = new PlayerDistanceValidator(new PickupValidator(new ItemIDValidator(new int[] { 0x26ac })), 2);
                                 }
                                 IItemValidator check = new PlayerDistanceValidator(new ItemIDValidator(new int[] { 0x2006 }), 2);
                                 Item[] itemArray = World.FindItems(check);
                                 ArrayList list2 = new ArrayList();
                                 AosAppraiser instance = LootAppraiser.Instance;
                                 for (int j = 0; j < itemArray.Length; j++)
                                 {
                                     Item item2 = itemArray[j];
                                     if ((item2.LastTextHue != null) && ((item2.LastTextHue.HueID() & 0x7fff) == 0x59))
                                     {
                                         AosAppraiser.m_BlueCorpse = true;
                                     }
                                     else
                                     {
                                         AosAppraiser.m_BlueCorpse = false;
                                     }
                                     ArrayList items = item2.Items;
                                     for (int k = 0; k < items.Count; k++)
                                     {
                                         Item item = (Item) items[k];
                                         Appraisal appraisal = instance.Appraise(item);
                                         if ((appraisal != null) && !appraisal.IsWorthless)
                                         {
                                             list2.Add(appraisal);
                                         }
                                     }
                                 }
                                 if (list2.Count > 0)
                                 {
                                     list2.Sort();
                                     Appraisal appraisal2 = (Appraisal) list2[0];
                                     Item item4 = appraisal2.Item;
                                     ObjectPropertyList propertyList = item4.PropertyList;
                                     string text = null;
                                     if (propertyList.Properties.Length > 0)
                                     {
                                         text = propertyList.Properties[0].Text;
                                     }
                                     if ((text == null) || (text == ""))
                                     {
                                         text = Localization.GetString(0xf9060 + (item4.ID & 0x3fff));
                                     }
                                     string str2 = string.Format("Looting {0}.", text);
                                     if (list2.Count > 1)
                                     {
                                         str2 = string.Format("{0} There are {1} other valued item{2} to loot.", str2, list2.Count - 1, (list2.Count == 2) ? "" : "s");
                                     }
                                     AddTextMessage(str2, DefaultFont, Hues.Load(0x35));
                                     Mobile mobile2 = World.Player;
                                     if (mobile2 != null)
                                     {
                                         Network.Send(new PPickupItem(item4, item4.Amount));
                                         Network.Send(new PDropItem(item4.Serial, -1, -1, 0, mobile2.Serial));
                                     }
                                 }
                                 Item item5 = World.CharData.AutoPickup ? World.FindItem(m_IVArray) : null;
                                 if (World.CharData.Archery && (item5 == null))
                                 {
                                     if (m_Ammo == null)
                                     {
                                         m_Ammo = new PlayerDistanceValidator(new PickupValidator(new ItemIDValidator(new int[] { 0xf3f, 0x1bfb })), 2);
                                     }
                                     item5 = World.FindItem(m_Ammo);
                                 }
                                 if (item5 != null)
                                 {
                                     Item regBag = null;
                                     if (ReagentValidator.Validator.IsValid(item5))
                                     {
                                         regBag = World.CharData.RegBag;
                                     }
                                     if (regBag == null)
                                     {
                                         regBag = player.Backpack;
                                     }
                                     if (regBag != null)
                                     {
                                         QueueAutoMove(item5, item5.Amount, -1, -1, 0, regBag.Serial);
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }
Пример #2
0
        public static void commandEntered(string cmd)
        {
            if ((cmd.Length > 0) && !m_SayMacro)
            {
                m_LastCommand = cmd;
            }
            if (m_Prompt != null)
            {
                m_Prompt.OnReturn(cmd);
                m_Prompt = null;
            }
            else
            {
                cmd = cmd.Trim();
                if (cmd.Length > 0)
                {
                    int count = m_Plugins.Count;
                    for (int i = 0; i < count; i++)
                    {
                        Plugin plugin = (Plugin) m_Plugins[i];
                        if (plugin.OnCommandEntered(cmd))
                        {
                            return;
                        }
                    }
                    if (cmd.StartsWith("--") && UOAM.Connected)
                    {
                        UOAM.Chat(cmd.Substring(2));
                    }
                    else if (!cmd.StartsWith("/"))
                    {
                        if (!cmd.StartsWith(". "))
                        {
                            Network.Send(new PUnicodeSpeech(cmd));
                        }
                        else
                        {
                            object obj2;
                            string[] strArray = cmd.Substring(". ".Length).Split(new char[] { ' ' });
                            if (((strArray.Length > 0) && ((obj2 = strArray[0].ToLower()) != null)) && ((obj2 = <PrivateImplementationDetails>.$$method0x60008d2-1[obj2]) != null))
                            {
                                switch (((int) obj2))
                                {
                                    case 0:
                                    {
                                        Gump g = Gumps.FindGumpByGUID("Volume");
                                        if (g != null)
                                        {
                                            Gumps.Destroy(g);
                                            break;
                                        }
                                        Gumps.Desktop.Children.Add(new GVolumeControl());
                                        break;
                                    }
                                    case 1:
                                    {
                                        int num4 = 0;
                                        try
                                        {
                                            if (strArray.Length > 1)
                                            {
                                                num4 = Convert.ToInt32(strArray[1]);
                                            }
                                        }
                                        catch
                                        {
                                            num4 = 0;
                                        }
                                        if (num4 < 1)
                                        {
                                            AddTextMessage("Usage: DefaultRegs <amount>");
                                        }
                                        else
                                        {
                                            World.CharData.DefaultRegs = num4;
                                            AddTextMessage(string.Format("Default reagent amount changed to {0}.", num4));
                                        }
                                        break;
                                    }
                                    case 2:
                                    {
                                        bool flag = !World.CharData.AlwaysRun;
                                        if ((strArray.Length <= 1) || !(strArray[0].ToLower() == "on"))
                                        {
                                            if ((strArray.Length > 1) && (strArray[0].ToLower() == "off"))
                                            {
                                                flag = false;
                                            }
                                        }
                                        else
                                        {
                                            flag = true;
                                        }
                                        World.CharData.AlwaysRun = flag;
                                        return;
                                    }
                                    case 3:
                                        TargetHandler = new SetRegBagTargetHandler();
                                        AddTextMessage("Target your destination reagent container.");
                                        break;

                                    case 4:
                                        TargetHandler = new SetRegStockTargetHandler();
                                        AddTextMessage("Target your source reagent container.");
                                        break;

                                    case 5:
                                    {
                                        int num5 = 0;
                                        foreach (Mobile mobile2 in World.Mobiles.Values)
                                        {
                                            if ((World.InRange(mobile2) && mobile2.Visible) && mobile2.m_IsFactionGuard)
                                            {
                                                mobile2.QueryStats();
                                                mobile2.OpenStatus(false);
                                                if (mobile2.StatusBar != null)
                                                {
                                                    mobile2.StatusBar.Gump.X = (GameX + 10) + ((num5 / 6) * (mobile2.StatusBar.Gump.Width + 10));
                                                    mobile2.StatusBar.Gump.Y = (GameY + 10) + ((num5 % 6) * (mobile2.StatusBar.Gump.Height + 10));
                                                    num5++;
                                                }
                                            }
                                        }
                                        break;
                                    }
                                    case 6:
                                    {
                                        Mobile player = World.Player;
                                        if (player != null)
                                        {
                                            for (int j = 0; j < Multis.Items.Count; j++)
                                            {
                                                Item item = (Item) Multis.Items[j];
                                                if (item.InWorld && item.IsMulti)
                                                {
                                                    CustomMultiEntry customMulti = CustomMultiLoader.GetCustomMulti(item.Serial, item.Revision);
                                                    Multi m = null;
                                                    if (customMulti != null)
                                                    {
                                                        m = customMulti.Multi;
                                                    }
                                                    if (m == null)
                                                    {
                                                        m = item.Multi;
                                                    }
                                                    if ((m != null) && Multis.IsInMulti(item, m, player.X, player.Y, player.Z))
                                                    {
                                                        ArrayList dataStore = GetDataStore();
                                                        foreach (Mobile mobile4 in World.Mobiles.Values)
                                                        {
                                                            switch (mobile4.Notoriety)
                                                            {
                                                                case Notoriety.Attackable:
                                                                case Notoriety.Criminal:
                                                                case Notoriety.Enemy:
                                                                case Notoriety.Murderer:
                                                                    if ((((mobile4 != player) && !mobile4.Flags[MobileFlag.YellowHits]) && (!mobile4.m_IsFriend && mobile4.Visible)) && World.InRange(mobile4))
                                                                    {
                                                                        int xReal = mobile4.XReal;
                                                                        int yReal = mobile4.YReal;
                                                                        int zReal = mobile4.ZReal;
                                                                        if (Multis.RunUO_IsInside(item, m, xReal, yReal, zReal))
                                                                        {
                                                                            dataStore.Add(mobile4);
                                                                        }
                                                                    }
                                                                    break;
                                                            }
                                                        }
                                                        if (dataStore.Count > 0)
                                                        {
                                                            dataStore.Sort(TargetSorter.Comparer);
                                                            Mobile mobile5 = (Mobile) dataStore[0];
                                                            Network.Send(new PUnicodeSpeech("; i ban thee"));
                                                            Network.Send(new PTarget_Spoof(0, -559038737, ServerTargetFlags.None, mobile5.Serial, mobile5.X, mobile5.Y, mobile5.Z, mobile5.Body));
                                                            PacketHandlers.m_CancelTarget = true;
                                                        }
                                                        ReleaseDataStore(dataStore);
                                                        break;
                                                    }
                                                }
                                            }
                                            break;
                                        }
                                        break;
                                    }
                                    case 7:
                                    {
                                        if (strArray.Length != 2)
                                        {
                                            break;
                                        }
                                        int level = m_Multis.m_Level;
                                        switch (strArray[1].ToLower())
                                        {
                                            case "0":
                                            case "5":
                                            case "off":
                                                level = 5;
                                                break;

                                            case "1":
                                                level = 1;
                                                break;

                                            case "2":
                                                level = 2;
                                                break;

                                            case "3":
                                                level = 3;
                                                break;

                                            case "4":
                                                level = 4;
                                                break;

                                            case "up":
                                                level++;
                                                break;

                                            case "down":
                                                level--;
                                                break;
                                        }
                                        if (level > 5)
                                        {
                                            level = 5;
                                        }
                                        else if (level < 1)
                                        {
                                            level = 1;
                                        }
                                        if (m_Multis.m_Level != level)
                                        {
                                            m_Multis.m_Level = level;
                                            Map.Invalidate();
                                        }
                                        return;
                                    }
                                    case 8:
                                    {
                                        int defaultRegs = World.CharData.DefaultRegs;
                                        try
                                        {
                                            if (strArray.Length > 1)
                                            {
                                                defaultRegs = Convert.ToInt32(strArray[1]);
                                            }
                                        }
                                        catch
                                        {
                                            defaultRegs = World.CharData.DefaultRegs;
                                        }
                                        Item stock = World.CharData.Stock;
                                        Item regBag = World.CharData.RegBag;
                                        if ((stock != null) && (regBag != null))
                                        {
                                            MakeRegsTargetHandler.Transfer(stock, regBag, defaultRegs);
                                        }
                                        else
                                        {
                                            TargetHandler = new MakeRegsTargetHandler(defaultRegs, stock, regBag);
                                            if (stock == null)
                                            {
                                                AddTextMessage("Target your source reagent container.");
                                            }
                                            else
                                            {
                                                AddTextMessage("Target your destination reagent container.");
                                            }
                                        }
                                        break;
                                    }
                                    case 9:
                                        if (m_QamList.Count <= 0)
                                        {
                                            AddTextMessage("There are no item movements currently queued.");
                                            break;
                                        }
                                        m_QamList.Clear();
                                        if (m_QamTimer != null)
                                        {
                                            m_QamTimer.Stop();
                                        }
                                        m_QamTimer = null;
                                        AddTextMessage("The item movement queue has been cleared.");
                                        break;

                                    case 10:
                                        TargetHandler = new FriendTargetHandler();
                                        AddTextMessage("Target the player to toggle friendship status.", DefaultFont, Hues.Load(0x59));
                                        break;

                                    case 11:
                                        World.CharData.AutoPickup = !World.CharData.AutoPickup;
                                        AddTextMessage(World.CharData.AutoPickup ? "You like good stuff." : "You hate things.");
                                        break;

                                    case 12:
                                        World.CharData.Archery = !World.CharData.Archery;
                                        AddTextMessage(World.CharData.Archery ? "You are an archer." : "You aren't an archer.");
                                        break;

                                    case 13:
                                        World.CharData.LootGold = !World.CharData.LootGold;
                                        AddTextMessage(World.CharData.LootGold ? "You like gold." : "You hate gold.");
                                        break;

                                    case 14:
                                    {
                                        Mobile mob = World.Player;
                                        if (mob != null)
                                        {
                                            string mobilePath = Macros.GetMobilePath(mob);
                                            string path = FileManager.BasePath(string.Format("Data/Plugins/Macros/{0}.txt", mobilePath));
                                            string str8 = "Macros";
                                            string str9 = FileManager.BasePath(string.Format("Data/Plugins/Macros/{0}.txt", str8));
                                            if (GMacroEditorForm.IsOpen)
                                            {
                                                AddTextMessage("Close the macro editor before running this command.");
                                            }
                                            else if (File.Exists(path))
                                            {
                                                AddTextMessage("Macro definitions unique to your character were already found.");
                                            }
                                            else if (!File.Exists(str9))
                                            {
                                                AddTextMessage("No default macro definnitions were found.");
                                            }
                                            else
                                            {
                                                File.Copy(str9, path);
                                                Macros.Load();
                                                AddTextMessage("Default macro definitions have been copied. Any macro changes you make will now be unique to this character.");
                                            }
                                            break;
                                        }
                                        break;
                                    }
                                    case 15:
                                        TargetHandler = new NullTargetHandler();
                                        break;

                                    case 0x10:
                                    {
                                        Mobile p = World.Player;
                                        if (p != null)
                                        {
                                            bool flag2 = false;
                                            foreach (Mobile mobile8 in World.Mobiles.Values)
                                            {
                                                if (mobile8.InSquareRange(p, 8) && ((mobile8.Body == 400) || (mobile8.Body == 0x191)))
                                                {
                                                    Item item4 = mobile8.FindEquip(Layer.Shoes);
                                                    if (((item4 != null) && (item4.Hue == 0)) && (((item4.ID == 0x1711) || (item4.ID == 0x170b)) || (item4.ID == 0x170c)))
                                                    {
                                                        item4 = mobile8.FindEquip(Layer.TwoHanded);
                                                        if (((item4 != null) && (item4.Hue == 0)) && (((item4.ID == 0xe89) || (item4.ID == 0xe8a)) || ((item4.ID == 0xe81) || (item4.ID == 0xe82))))
                                                        {
                                                            m_ContextQueue = 0x17d7;
                                                            m_BuyHorse = mobile8;
                                                            Network.Send(new PPopupRequest(mobile8));
                                                            mobile8.AddTextMessage("Vendor", "Buying horse.", DefaultFont, Hues.Load(0x59), false);
                                                            flag2 = true;
                                                            break;
                                                        }
                                                    }
                                                }
                                            }
                                            if (!flag2)
                                            {
                                                AddTextMessage("Vendor not found.", DefaultFont, Hues.Load(0x26));
                                            }
                                            return;
                                        }
                                        break;
                                    }
                                    case 0x11:
                                    {
                                        Item item5 = World.FindItem(new PlayerDistanceValidator(new ItemIDValidator(new int[] { 0xf6c }), 1));
                                        if (item5 != null)
                                        {
                                            item5.Use();
                                            item5.AddTextMessage("Moongate", "Using.", DefaultFont, Hues.Load(0x59), false);
                                            break;
                                        }
                                        AddTextMessage("Moongate not found.", DefaultFont, Hues.Load(0x26));
                                        break;
                                    }
                                    case 0x12:
                                    {
                                        Gump drag = Gumps.Drag;
                                        if (!(drag is GDraggedItem))
                                        {
                                            m_LeapFrog = null;
                                            AddTextMessage("You are not holding an item. Leapfrog cleared.");
                                            break;
                                        }
                                        m_LeapFrog = ((GDraggedItem) drag).Item;
                                        AddTextMessage("Item set.");
                                        break;
                                    }
                                    case 0x13:
                                    {
                                        IItemValidator check = new PlayerDistanceValidator(new ItemIDValidator(new int[] { 0x2006 }), 2);
                                        Item[] itemArray = World.FindItems(check);
                                        ArrayList list2 = new ArrayList();
                                        AosAppraiser instance = LootAppraiser.Instance;
                                        for (int k = 0; k < itemArray.Length; k++)
                                        {
                                            Item item6 = itemArray[k];
                                            if ((item6.LastTextHue == null) || ((item6.LastTextHue.HueID() & 0x7fff) != 0x59))
                                            {
                                                AosAppraiser.m_BlueCorpse = false;
                                                ArrayList items = item6.Items;
                                                for (int n = 0; n < items.Count; n++)
                                                {
                                                    Item item7 = (Item) items[n];
                                                    Appraisal appraisal = instance.Appraise(item7);
                                                    if (appraisal != null)
                                                    {
                                                        list2.Add(appraisal);
                                                    }
                                                }
                                            }
                                        }
                                        if (list2.Count > 0)
                                        {
                                            list2.Sort();
                                            Appraisal appraisal2 = (Appraisal) list2[0];
                                            Item item8 = appraisal2.Item;
                                            ObjectPropertyList propertyList = item8.PropertyList;
                                            string text = null;
                                            if (propertyList.Properties.Length > 0)
                                            {
                                                text = propertyList.Properties[0].Text;
                                            }
                                            if ((text == null) || (text == ""))
                                            {
                                                text = Localization.GetString(0xf9060 + (item8.ID & 0x3fff));
                                            }
                                            string str11 = string.Format("Looting {0}.", text);
                                            if (list2.Count > 1)
                                            {
                                                str11 = string.Format("{0} There are {1} other valued item{2} to loot.", str11, list2.Count - 1, (list2.Count == 2) ? "" : "s");
                                            }
                                            AddTextMessage(str11, DefaultFont, Hues.Load(0x35));
                                            Mobile mobile9 = World.Player;
                                            if (mobile9 != null)
                                            {
                                                Network.Send(new PPickupItem(item8, item8.Amount));
                                                Network.Send(new PDropItem(item8.Serial, -1, -1, 0, mobile9.Serial));
                                            }
                                        }
                                        else
                                        {
                                            AddTextMessage("Nothing was found to loot.", DefaultFont, Hues.Load(0x22));
                                        }
                                        break;
                                    }
                                    case 20:
                                    {
                                        IItemValidator validator2 = new PlayerDistanceValidator(new ItemIDValidator(new int[] { 0x2006 }), 2);
                                        Item[] itemArray2 = World.FindItems(validator2);
                                        ArrayList list5 = new ArrayList();
                                        AosAppraiser appraiser2 = LootAppraiser.Instance;
                                        for (int num14 = 0; num14 < itemArray2.Length; num14++)
                                        {
                                            Item item9 = itemArray2[num14];
                                            if ((item9.LastTextHue != null) && ((item9.LastTextHue.HueID() & 0x7fff) == 0x59))
                                            {
                                                AosAppraiser.m_BlueCorpse = true;
                                            }
                                            else
                                            {
                                                AosAppraiser.m_BlueCorpse = false;
                                            }
                                            ArrayList list6 = item9.Items;
                                            for (int num15 = 0; num15 < list6.Count; num15++)
                                            {
                                                Item item10 = (Item) list6[num15];
                                                Appraisal appraisal3 = appraiser2.Appraise(item10);
                                                if ((appraisal3 != null) && !appraisal3.IsWorthless)
                                                {
                                                    list5.Add(appraisal3);
                                                }
                                            }
                                        }
                                        if (list5.Count > 0)
                                        {
                                            list5.Sort();
                                            Appraisal appraisal4 = (Appraisal) list5[0];
                                            Item item11 = appraisal4.Item;
                                            ObjectPropertyList list7 = item11.PropertyList;
                                            string str12 = null;
                                            if (list7.Properties.Length > 0)
                                            {
                                                str12 = list7.Properties[0].Text;
                                            }
                                            if ((str12 == null) || (str12 == ""))
                                            {
                                                str12 = Localization.GetString(0xf9060 + (item11.ID & 0x3fff));
                                            }
                                            string str13 = string.Format("Looting {0}.", str12);
                                            if (list5.Count > 1)
                                            {
                                                str13 = string.Format("{0} There are {1} other valued item{2} to loot.", str13, list5.Count - 1, (list5.Count == 2) ? "" : "s");
                                            }
                                            AddTextMessage(str13, DefaultFont, Hues.Load(0x35));
                                            Mobile mobile10 = World.Player;
                                            if (mobile10 != null)
                                            {
                                                Network.Send(new PPickupItem(item11, item11.Amount));
                                                Network.Send(new PDropItem(item11.Serial, -1, -1, 0, mobile10.Serial));
                                            }
                                        }
                                        else
                                        {
                                            AddTextMessage("Nothing was found to loot.", DefaultFont, Hues.Load(0x22));
                                        }
                                        break;
                                    }
                                    case 0x15:
                                    {
                                        IPAddress address;
                                        int num16;
                                        if (strArray.Length != 5)
                                        {
                                            AddTextMessage("Usage: uoam <name> <password> <address> <port>");
                                            break;
                                        }
                                        string username = strArray[1];
                                        string password = strArray[2];
                                        try
                                        {
                                            address = IPAddress.Parse(strArray[3]);
                                            num16 = Convert.ToInt32(strArray[4]);
                                        }
                                        catch
                                        {
                                            AddTextMessage("Usage: uoam <name> <password> <address> <port>");
                                            break;
                                        }
                                        UOAM.Connect(username, password, address, num16);
                                        break;
                                    }
                                    case 0x16:
                                    {
                                        MapPackage cache = Map.GetCache();
                                        if (cache.cells != null)
                                        {
                                            Mobile mobile11 = World.Player;
                                            if (mobile11 != null)
                                            {
                                                int num17 = mobile11.X - cache.CellX;
                                                int num18 = mobile11.Y - cache.CellY;
                                                if (((num17 >= 0) && (num17 < cache.cells.GetLength(0))) && ((num18 >= 0) && (num18 < cache.cells.GetLength(1))))
                                                {
                                                    ArrayList list8 = cache.cells[num17, num18];
                                                    if (list8 != null)
                                                    {
                                                        if (list8.Count <= 0)
                                                        {
                                                            AddTextMessage("Nothing there.");
                                                            break;
                                                        }
                                                        ICell cell = (ICell) list8[list8.Count - 1];
                                                        if (!(cell is MobileCell))
                                                        {
                                                            if (cell is DynamicItem)
                                                            {
                                                                Target(((DynamicItem) cell).m_Item);
                                                            }
                                                            else if (cell is StaticItem)
                                                            {
                                                                Target(new StaticTarget(mobile11.X, mobile11.Y, ((StaticItem) cell).m_Z, ((StaticItem) cell).m_RealID, ((StaticItem) cell).m_RealID, ((StaticItem) cell).m_Hue));
                                                            }
                                                            else if (cell is LandTile)
                                                            {
                                                                Target(new LandTarget(mobile11.X, mobile11.Y, ((LandTile) cell).m_Z));
                                                            }
                                                            break;
                                                        }
                                                        Target(((MobileCell) cell).m_Mobile);
                                                    }
                                                }
                                            }
                                        }
                                        break;
                                    }
                                    case 0x17:
                                        m_AlternateFont = !m_AlternateFont;
                                        AddTextMessage(string.Format("Alternate font is now {0}.", m_AlternateFont ? "on" : "off"));
                                        break;

                                    case 0x18:
                                    {
                                        bool flag3 = !m_Sounds.Enabled;
                                        try
                                        {
                                            flag3 = strArray[1].ToLower() != "off";
                                        }
                                        catch
                                        {
                                            flag3 = !m_Sounds.Enabled;
                                        }
                                        m_Sounds.Enabled = flag3;
                                        AddTextMessage(string.Format("Sounds are now {0}.", flag3 ? "on" : "off"));
                                        break;
                                    }
                                    case 0x19:
                                    {
                                        bool flag4 = !World.CharData.QueueTargets;
                                        try
                                        {
                                            flag4 = strArray[1].ToLower() != "off";
                                        }
                                        catch
                                        {
                                            flag4 = !World.CharData.QueueTargets;
                                        }
                                        World.CharData.QueueTargets = flag4;
                                        AddTextMessage(string.Format("Target queueing is now {0}.", flag4 ? "on" : "off"));
                                        break;
                                    }
                                    case 0x1a:
                                    {
                                        IEnumerator enumerator = World.Mobiles.Values.GetEnumerator();
                                        int num19 = 0;
                                        while (enumerator.MoveNext())
                                        {
                                            Mobile current = (Mobile) enumerator.Current;
                                            if (((current.Visible && (current.Notoriety == Notoriety.Murderer)) && (!current.Human && !current.Ghost)) && World.InRange(current))
                                            {
                                                Timer timer = new Timer(new OnTick(Engine.DelayedPackets_OnTick), num19++ * 0x4e2, 1);
                                                timer.SetTag("Packets", new Packet[] { new PAttackRequest(current) });
                                                timer.Start(false);
                                            }
                                        }
                                        break;
                                    }
                                    case 0x1b:
                                        TargetHandler = new MoveTargetHandler();
                                        AddTextMessage("Target one of the items to move.");
                                        break;

                                    case 0x1c:
                                        TargetHandler = new OverrideHueTargetHandler(0x489, "Inflame request canceled.");
                                        AddTextMessage("Target an item.");
                                        break;

                                    case 0x1d:
                                        TargetHandler = new OverrideHueTargetHandler(-1, "Douse request canceled.");
                                        AddTextMessage("Target an item.");
                                        break;

                                    case 30:
                                    {
                                        NotoQueryType on = (NotoQueryType) ((1 + World.CharData.NotoQuery) % 3);
                                        try
                                        {
                                            switch (strArray[1].ToLower())
                                            {
                                                case "on":
                                                    on = NotoQueryType.On;
                                                    break;

                                                case "off":
                                                    on = NotoQueryType.Off;
                                                    break;

                                                case "smart":
                                                    on = NotoQueryType.Smart;
                                                    break;
                                            }
                                        }
                                        catch
                                        {
                                        }
                                        World.CharData.NotoQuery = on;
                                        AddTextMessage(string.Format("Notoriety query is now {0}.", on.ToString().ToLower()));
                                        break;
                                    }
                                    case 0x1f:
                                        Network.Send(new PWrestleDisarm());
                                        break;

                                    case 0x20:
                                        Network.Send(new PWrestleStun());
                                        break;

                                    case 0x21:
                                    {
                                        bool flag5 = !GFader.Fade;
                                        try
                                        {
                                            flag5 = strArray[1].ToLower() != "off";
                                        }
                                        catch
                                        {
                                            flag5 = !GFader.Fade;
                                        }
                                        GFader.Fade = flag5;
                                        AddTextMessage(string.Format("Interface fading is now {0}.", flag5 ? "on" : "off"));
                                        break;
                                    }
                                    case 0x22:
                                        TargetHandler = new DragToBagTargetHandler(false);
                                        AddTextMessage("Target one of the items to move.");
                                        break;

                                    case 0x23:
                                        TargetHandler = new DragToBagTargetHandler(true);
                                        AddTextMessage("Target one of the items to click and move.");
                                        break;

                                    case 0x24:
                                    {
                                        int xOffset = 0;
                                        int yOffset = 0;
                                        if ((strArray.Length == 3) || (strArray.Length == 1))
                                        {
                                            if (strArray.Length == 3)
                                            {
                                                try
                                                {
                                                    xOffset = Convert.ToInt32(strArray[1]);
                                                }
                                                catch
                                                {
                                                }
                                                try
                                                {
                                                    yOffset = Convert.ToInt32(strArray[2]);
                                                }
                                                catch
                                                {
                                                }
                                            }
                                            TargetHandler = new BringToTargetHandler(xOffset, yOffset);
                                            AddTextMessage("Target the destination item.");
                                        }
                                        else
                                        {
                                            AddTextMessage("Format: bringto [x y]");
                                        }
                                        break;
                                    }
                                    case 0x25:
                                        Ignore();
                                        break;

                                    case 0x26:
                                        TargetHandler = new RemoveTargetHandler();
                                        AddTextMessage("Remove what?");
                                        break;

                                    case 0x27:
                                        TargetHandler = new StackTargetHandler();
                                        AddTextMessage("Target the destination item.");
                                        break;

                                    case 40:
                                        TargetHandler = new RegDropTargetHandler();
                                        AddTextMessage("Target the destination container.");
                                        break;

                                    case 0x29:
                                        TargetHandler = new TurnTargetHandler();
                                        AddTextMessage("Turn to where?");
                                        break;

                                    case 0x2a:
                                    {
                                        bool flag6 = !NewConfig.SmoothWalk;
                                        try
                                        {
                                            flag6 = strArray[1].ToLower() != "off";
                                        }
                                        catch
                                        {
                                            flag6 = !NewConfig.SmoothWalk;
                                        }
                                        NewConfig.SmoothWalk = flag6;
                                        AddTextMessage(string.Format("Smooth walking is now {0}.", flag6 ? "on" : "off"));
                                        break;
                                    }
                                    case 0x2b:
                                    {
                                        int num22 = 100;
                                        try
                                        {
                                            num22 = Convert.ToInt32(cmd.Split(new char[] { ' ' })[1]);
                                        }
                                        catch
                                        {
                                            num22 = 100;
                                        }
                                        Timer timer2 = new Timer(new OnTick(Engine.TimeRefresh_OnTick), 1, 1);
                                        timer2.SetTag("Frames", num22);
                                        timer2.Start(false);
                                        break;
                                    }
                                    case 0x2c:
                                    {
                                        string str16 = null;
                                        try
                                        {
                                            str16 = strArray[1];
                                        }
                                        catch
                                        {
                                            AddTextMessage("Format: music <on | off | stop>");
                                            break;
                                        }
                                        switch (str16.ToLower())
                                        {
                                            case "on":
                                                NewConfig.PlayMusic = true;
                                                return;

                                            case "off":
                                                NewConfig.PlayMusic = false;
                                                Music.Stop();
                                                return;

                                            case "stop":
                                                Music.Stop();
                                                return;
                                        }
                                        AddTextMessage("Format: music <on | off | stop>");
                                        break;
                                    }
                                    case 0x2d:
                                        TargetHandler = new TraceTargetHandler();
                                        AddTextMessage("Target the dynamic item or mobile to trace.");
                                        break;

                                    case 0x2e:
                                        TargetHandler = new ExportTargetHandler();
                                        AddTextMessage("Target the first location of a bounding box.");
                                        break;

                                    case 0x2f:
                                    {
                                        if (!GMPrivs)
                                        {
                                            AddTextMessage("You do not have access to this command.");
                                            break;
                                        }
                                        string str17 = null;
                                        try
                                        {
                                            str17 = strArray[1];
                                        }
                                        catch
                                        {
                                            AddTextMessage("Format: ack <number>");
                                            break;
                                        }
                                        try
                                        {
                                            m_WalkAckSync = Convert.ToInt32(str17);
                                        }
                                        catch
                                        {
                                            AddTextMessage("Format: ack <number>");
                                            break;
                                        }
                                        AddTextMessage(string.Format("Maximum outstanding walk requests: {0}", m_WalkAckSync));
                                        break;
                                    }
                                    case 0x30:
                                    {
                                        if (!GMPrivs)
                                        {
                                            AddTextMessage("You do not have access to this command.");
                                            break;
                                        }
                                        string str18 = null;
                                        try
                                        {
                                            str18 = strArray[1];
                                        }
                                        catch
                                        {
                                            AddTextMessage("Format: runspeed <number>");
                                            break;
                                        }
                                        try
                                        {
                                            m_RunSpeed = ((float) Convert.ToInt32(str18)) / 1000f;
                                        }
                                        catch
                                        {
                                            AddTextMessage("Format: runspeed <number>");
                                            break;
                                        }
                                        AddTextMessage(string.Format("Run speed set to: {0} seconds", m_RunSpeed));
                                        break;
                                    }
                                    case 0x31:
                                    {
                                        if (!GMPrivs)
                                        {
                                            AddTextMessage("You do not have access to this command.");
                                            break;
                                        }
                                        string str19 = null;
                                        try
                                        {
                                            str19 = strArray[1];
                                        }
                                        catch
                                        {
                                            AddTextMessage("Format: walkspeed <number>");
                                            break;
                                        }
                                        try
                                        {
                                            m_WalkSpeed = ((float) Convert.ToInt32(str19)) / 1000f;
                                        }
                                        catch
                                        {
                                            AddTextMessage("Format: walkspeed <number>");
                                            break;
                                        }
                                        AddTextMessage(string.Format("Walk speed set to: {0} seconds", m_WalkSpeed));
                                        break;
                                    }
                                    case 50:
                                    {
                                        if (!GMPrivs)
                                        {
                                            AddTextMessage("You do not have access to this command.");
                                            break;
                                        }
                                        string str20 = null;
                                        try
                                        {
                                            str20 = strArray[1];
                                        }
                                        catch
                                        {
                                        }
                                        if (str20 == "on")
                                        {
                                            m_Weather = true;
                                            AddTextMessage("Weather turned on.");
                                        }
                                        else if (str20 == "off")
                                        {
                                            m_Weather = false;
                                            PacketHandlers.ClearWeather();
                                            AddTextMessage("Weather turned off.");
                                        }
                                        else
                                        {
                                            m_Weather = !m_Weather;
                                            if (!m_Weather)
                                            {
                                                PacketHandlers.ClearWeather();
                                            }
                                            AddTextMessage(string.Format("Weather turned {0}.", m_Weather ? "on" : "off"));
                                        }
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        switch (Party.State)
                        {
                            case PartyState.Alone:
                                if (!cmd.ToLower().StartsWith("/add"))
                                {
                                    AddTextMessage(string.Format("Note to self: {0}", cmd.Substring(1)), DefaultFont, Hues.Load(0x3b2));
                                    break;
                                }
                                Network.Send(new PParty_AddMember());
                                break;

                            case PartyState.Joining:
                            {
                                string str2 = cmd.ToLower();
                                if (!str2.StartsWith("/accept"))
                                {
                                    if (str2.StartsWith("/decline"))
                                    {
                                        Network.Send(new PParty_Decline(Party.Leader));
                                    }
                                    else
                                    {
                                        AddTextMessage("Use '/accept' or '/decline'.", DefaultFont, Hues.Load(0x3b2));
                                    }
                                    break;
                                }
                                Network.Send(new PParty_Accept(Party.Leader));
                                break;
                            }
                            case PartyState.Joined:
                            {
                                string str3 = cmd.ToLower();
                                if (!Party.IsLeader || !str3.StartsWith("/add"))
                                {
                                    if (Party.IsLeader && str3.StartsWith("/rem"))
                                    {
                                        Network.Send(new PParty_RemoveMember());
                                    }
                                    else if (str3.StartsWith("/quit"))
                                    {
                                        Network.Send(new PParty_Quit());
                                    }
                                    else if (str3.StartsWith("/loot on"))
                                    {
                                        Network.Send(new PParty_SetCanLoot(true));
                                    }
                                    else if (str3.StartsWith("/loot off"))
                                    {
                                        Network.Send(new PParty_SetCanLoot(false));
                                    }
                                    else if (str3.StartsWith("/loot"))
                                    {
                                        AddTextMessage("Use '/loot on' or '/loot off'.");
                                    }
                                    else if (Party.Members.Length > 1)
                                    {
                                        if ((cmd.Length >= 2) && char.IsDigit(cmd, 1))
                                        {
                                            try
                                            {
                                                int index = Convert.ToInt32(cmd.Substring(1, 1)) - 1;
                                                if ((index >= 0) && (index < Party.Members.Length))
                                                {
                                                    if (index == Party.Index)
                                                    {
                                                        AddTextMessage(string.Format("Note to self: {0}", cmd.Substring(2)), DefaultFont, Hues.Load(0x3b2));
                                                    }
                                                    else
                                                    {
                                                        string str4;
                                                        Mobile mobile = World.Player;
                                                        if (((mobile == null) || ((str4 = mobile.Name) == null)) || ((str4 = str4.Trim()).Length <= 0))
                                                        {
                                                            str4 = "You";
                                                        }
                                                        AddTextMessage(string.Format("<{0}> {1}", str4, cmd.Substring(2)), DefaultFont, Hues.Load(World.CharData.WhisperHue));
                                                        Network.Send(new PParty_PrivateMessage(Party.Members[index], cmd.Substring(2)));
                                                    }
                                                    break;
                                                }
                                            }
                                            catch
                                            {
                                            }
                                        }
                                        Network.Send(new PParty_PublicMessage(cmd.Substring(1)));
                                    }
                                    else
                                    {
                                        AddTextMessage(string.Format("Note to self: {0}", cmd.Substring(1)), DefaultFont, Hues.Load(0x3b2));
                                    }
                                    break;
                                }
                                Network.Send(new PParty_AddMember());
                                break;
                            }
                        }
                    }
                }
            }
        }