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