private static void SellContent(PacketReader pvSrc) { int serial = pvSrc.ReadInt32(); int num2 = pvSrc.ReadInt16(); SellInfo[] info = new SellInfo[num2]; bool flag = false; for (int i = 0; i < num2; i++) { Item item = World.WantItem(pvSrc.ReadInt32()); info[i] = new SellInfo(item, pvSrc.ReadInt16(), pvSrc.ReadUInt16(), pvSrc.ReadUInt16(), pvSrc.ReadUInt16(), pvSrc.ReadString(pvSrc.ReadUInt16())); } if (flag) { Engine.AddTextMessage("Selling items."); Network.Send(new PSellItems(serial, info)); } else { Gumps.Desktop.Children.Add(new GSellGump(serial, info)); } }
private static void WorldItem(PacketReader pvSrc) { int serial = pvSrc.ReadInt32(); int itemID = pvSrc.ReadUInt16(); int num3 = ((serial & 0x80000000L) != 0L) ? pvSrc.ReadInt16() : 0; if ((itemID & 0x8000) != 0) { itemID &= 0x7fff; itemID += pvSrc.ReadSByte(); } int num4 = pvSrc.ReadInt16(); int num5 = pvSrc.ReadInt16(); bool flag2 = (num4 & 0x8000) != 0; bool flag3 = (num5 & 0x8000) != 0; bool flag4 = (num5 & 0x4000) != 0; int num6 = flag2 ? pvSrc.ReadByte() : 0; int num7 = pvSrc.ReadSByte(); int hue = flag3 ? pvSrc.ReadUInt16() : 0; int num9 = flag4 ? pvSrc.ReadByte() : 0; serial &= 0x7fffffff; num4 &= 0x7fff; num5 &= 0x3fff; bool wasFound = false; Item i = World.WantItem(serial, ref wasFound); bool isMulti = i.IsMulti; i.IsMulti = itemID >= 0x4000; int id = 0; if (i.IsMulti) { id = itemID & 0x3fff; Engine.Multis.Register(i, id); itemID = 1; } else if (isMulti) { Engine.Multis.Unregister(i); } Engine.ItemArt.Translate(ref itemID, ref hue); itemID &= 0x3fff; i.SetLocation((short) num4, (short) num5, (short) num7); i.ID = (short) itemID; i.Amount = (short) num3; i.Direction = (byte) num6; i.Hue = (ushort) hue; i.Flags.Value = num9; if ((!i.Visible && (i.IsCorpse || i.IsBones)) && World.CharData.IncomingNames) { i.Look(); } i.Visible = true; i.InWorld = true; if (i.IsEquip) { i.RemoveEquip(); } if (i.Parent != null) { i.Parent.RemoveItem(i); } if ((itemID == 0x2006) && (i.CorpseSerial != 0)) { Mobile mobile = World.FindMobile(i.CorpseSerial); if (mobile != null) { i.Direction = mobile.Direction; i.Visible = false; } } i.Update(); if (i.IsMulti && Engine.GMPrivs) { Engine.AddTextMessage(string.Format("House serial: 0x{0:X}", serial)); } }
private static void PropertyListContent(PacketReader pvSrc) { int num = pvSrc.ReadUInt16(); int serial = pvSrc.ReadInt32(); int num3 = pvSrc.ReadByte(); int num4 = pvSrc.ReadByte(); int number = pvSrc.ReadInt32(); if (((num != 1) || (num3 != 0)) || (num4 != 0)) { pvSrc.Trace(); } ArrayList dataStore = Engine.GetDataStore(); while (true) { int num6 = pvSrc.ReadInt32(); if (num6 == 0) { break; } int length = pvSrc.ReadUInt16(); string arguments = Encoding.Unicode.GetString(pvSrc.ReadBytes(length)); dataStore.Add(new ObjectProperty(num6, arguments)); } ObjectPropertyList list2 = new ObjectPropertyList(serial, number, (ObjectProperty[]) dataStore.ToArray(typeof(ObjectProperty))); Engine.ReleaseDataStore(dataStore); Item item = World.FindItem(serial); if (item != null) { item.PropertyID = number; } Mobile mobile = World.FindMobile(serial); if (mobile != null) { mobile.PropertyID = number; } if (item != null) { object parent = item; bool flag = false; while (parent != null) { if (!(parent is Item)) { break; } Item item2 = (Item) parent; if (((item2.Container != null) && (item2.Container.Gump is GContainer)) && ((GContainer) item2.Container.Gump).m_TradeContainer) { flag = true; } if (flag) { break; } parent = item2.Parent; } if (flag && (parent is Item)) { Item item3 = (Item) parent; if ((item3.Container != null) && (item3.Container.Gump.Tooltip is ItemTooltip)) { GObjectProperties gump = ((ItemTooltip) item3.Container.Gump.Tooltip).Gump as GObjectProperties; if (gump != null) { gump.SetList(0xf9060 + (item3.ID & 0x3fff), item3.PropertyList); } } } } }
private static void ScrollMessage(PacketReader pvSrc) { int num = pvSrc.ReadByte(); int num2 = pvSrc.ReadInt32(); string text = pvSrc.ReadString(pvSrc.ReadUInt16()); if (text != "MISSING UPDATE") { Gumps.Desktop.Children.Add(new GUpdateScroll(text)); } }
private static void Mobile_Incoming(PacketReader pvSrc) { int serial = pvSrc.ReadInt32(); if (!NewConfig.IncomingFix || ((serial & 0x3fffffff) != World.Serial)) { int num10; if ((serial & -1073741824) != 0) { pvSrc.Trace(); } short num2 = pvSrc.ReadInt16(); if ((serial & 0x80000000L) != 0L) { short num3 = pvSrc.ReadInt16(); } short x = pvSrc.ReadInt16(); short y = pvSrc.ReadInt16(); sbyte z = pvSrc.ReadSByte(); byte dir = pvSrc.ReadByte(); short num8 = pvSrc.ReadInt16(); byte num9 = pvSrc.ReadByte(); Notoriety notoriety = (Notoriety) pvSrc.ReadByte(); ArrayList list = new ArrayList(); LayerComparer comparer = LayerComparer.FromDirection(dir); bool wasFound = false; Mobile mobile = World.WantMobile(serial, ref wasFound); while ((num10 = pvSrc.ReadInt32()) > 0) { Item item = World.WantItem(num10); item.Query(); int itemID = pvSrc.ReadInt16(); Layer layer = (Layer) pvSrc.ReadByte(); int hue = ((itemID & 0x8000) != 0) ? pvSrc.ReadUInt16() : 0; if (comparer.IsValid(layer)) { short animation; item.Visible = true; if (item.InWorld) { Map.RemoveItem(item); item.InWorld = false; } else if (item.IsEquip) { item.RemoveEquip(); } else if (item.Parent != null) { item.Parent.RemoveItem(item); } itemID &= 0x3fff; Engine.ItemArt.Translate(ref itemID, ref hue); item.ID = (short) itemID; item.Hue = (ushort) hue; if (layer == Layer.Mount) { animation = (short) Engine.m_Animations.ConvertMountItemToBody(itemID); } else { animation = Map.GetAnimation(itemID); } item.IsEquip = true; item.EquipParent = mobile; list.Add(new EquipEntry(item, animation, layer)); } } list.Sort(comparer); if (mobile.Player) { dir = (byte) (dir & 7); dir = (byte) (dir | ((byte) (mobile.Direction & 0x80))); } if ((!mobile.Visible && !mobile.Player) && World.CharData.IncomingNames) { mobile.Look(); } if ((!mobile.Visible && !mobile.Player) && ((num2 == 400) || (num2 == 0x191))) { bool flag2; if ((World.Player != null) && (World.Player.Notoriety == Notoriety.Murderer)) { flag2 = ((((notoriety == Notoriety.Innocent) || (notoriety == Notoriety.Ally)) || ((notoriety == Notoriety.Attackable) || (notoriety == Notoriety.Enemy))) || (notoriety == Notoriety.Murderer)) || (notoriety == Notoriety.Criminal); } else { flag2 = (((notoriety == Notoriety.Ally) || (notoriety == Notoriety.Attackable)) || ((notoriety == Notoriety.Enemy) || (notoriety == Notoriety.Murderer))) || (notoriety == Notoriety.Criminal); } if (flag2) { mobile.QueryStats(); } } if (!mobile.Player) { mobile.SetLocation(x, y, z); mobile.Direction = dir; mobile.Hue = num8; mobile.Body = num2; mobile.IsMoving = false; mobile.MovedTiles = 0; mobile.HorseFootsteps = 0; mobile.Walking.Clear(); mobile.UpdateReal(); } mobile.Equip = list; mobile.Flags.Value = num9; mobile.Visible = true; mobile.Notoriety = notoriety; mobile.EquipChanged(); mobile.Update(); } }
private static void Mobile_Status(PacketReader pvSrc) { Mobile mobile = World.WantMobile(pvSrc.ReadInt32()); if (mobile != null) { mobile.Refresh = true; mobile.Name = pvSrc.ReadString(30); mobile.HPCur = pvSrc.ReadUInt16(); mobile.HPMax = pvSrc.ReadUInt16(); mobile.IsPet = pvSrc.ReadBoolean(); byte num = pvSrc.ReadByte(); if (num >= 1) { mobile.Gender = pvSrc.ReadByte(); mobile.Str = pvSrc.ReadUInt16(); mobile.Dex = pvSrc.ReadUInt16(); mobile.Int = pvSrc.ReadUInt16(); mobile.StamCur = pvSrc.ReadUInt16(); mobile.StamMax = pvSrc.ReadUInt16(); mobile.ManaCur = pvSrc.ReadUInt16(); mobile.ManaMax = pvSrc.ReadUInt16(); mobile.Gold = pvSrc.ReadInt32(); mobile.Armor = pvSrc.ReadUInt16(); mobile.Weight = pvSrc.ReadUInt16(); if (num >= 2) { mobile.StatCap = pvSrc.ReadUInt16(); if (num >= 3) { mobile.FollowersCur = pvSrc.ReadByte(); mobile.FollowersMax = pvSrc.ReadByte(); if (num >= 4) { mobile.FireResist = pvSrc.ReadInt16(); mobile.ColdResist = pvSrc.ReadInt16(); mobile.PoisonResist = pvSrc.ReadInt16(); mobile.EnergyResist = pvSrc.ReadInt16(); mobile.Luck = pvSrc.ReadUInt16(); mobile.DamageMin = pvSrc.ReadUInt16(); mobile.DamageMax = pvSrc.ReadUInt16(); mobile.TithingPoints = pvSrc.ReadInt32(); if (num > 4) { pvSrc.Trace(); } } else { mobile.FireResist = 0; mobile.ColdResist = 0; mobile.PoisonResist = 0; mobile.EnergyResist = 0; mobile.Luck = 0; mobile.DamageMin = 0; mobile.DamageMax = 0; } } else { mobile.FollowersCur = 0; mobile.FollowersMax = 5; } } else { mobile.StatCap = 0xe1; } } mobile.Refresh = false; } }
private static void Mobile_Attributes_Stamina(PacketReader pvSrc) { Mobile mobile = World.FindMobile(pvSrc.ReadInt32()); if (mobile != null) { mobile.Refresh = true; mobile.StamMax = pvSrc.ReadUInt16(); mobile.StamCur = pvSrc.ReadUInt16(); mobile.Refresh = false; } }
private static void CustomizedHouseContent(PacketReader pvSrc) { int compressionType = pvSrc.ReadByte(); int num2 = pvSrc.ReadByte(); int serial = pvSrc.ReadInt32(); int revision = pvSrc.ReadInt32(); int num5 = pvSrc.ReadUInt16(); int length = pvSrc.ReadUInt16(); byte[] buffer = pvSrc.ReadBytes(length); Item item = World.FindItem(serial); if (((item != null) && (item.Multi != null)) && item.IsMulti) { CustomMultiLoader.SetCustomMulti(serial, revision, item.Multi, compressionType, buffer); } }
private static void EquipItem(PacketReader pvSrc) { Item item = World.WantItem(pvSrc.ReadInt32()); int itemID = pvSrc.ReadInt16() & 0x3fff; item.Query(); if (pvSrc.ReadByte() != 0) { pvSrc.Trace(); } Layer layer = (Layer) pvSrc.ReadByte(); Mobile mobile = World.FindMobile(pvSrc.ReadInt32()); if (mobile != null) { short animation; int hue = pvSrc.ReadUInt16(); item.Visible = true; if (item.InWorld) { Map.RemoveItem(item); item.InWorld = false; } else if (item.IsEquip) { item.RemoveEquip(); } else if (item.Parent != null) { item.Parent.RemoveItem(item); } Engine.ItemArt.Translate(ref itemID, ref hue); item.ID = (short) itemID; item.Hue = (ushort) hue; item.IsEquip = true; item.EquipParent = mobile; if (layer == Layer.Mount) { animation = (short) Engine.m_Animations.ConvertMountItemToBody(itemID); } else { animation = Map.GetAnimation(itemID); } mobile.AddEquip(new EquipEntry(item, animation, layer)); } }
private static void Features(PacketReader pvSrc) { int num = pvSrc.ReadUInt16(); Engine.Features.Chat = (num & 2) != 0; Engine.Features.LBR = (num & 8) != 0; Engine.Features.AOS = (num & 0x10) != 0; }
private static void DragItem(PacketReader pvSrc) { int itemID = pvSrc.ReadInt16(); if (pvSrc.ReadByte() != 0) { pvSrc.Trace(); } ushort hue = pvSrc.ReadUInt16(); int num3 = pvSrc.ReadUInt16(); int sourceSerial = pvSrc.ReadInt32(); int xSource = pvSrc.ReadInt16(); int ySource = pvSrc.ReadInt16(); int zSource = pvSrc.ReadSByte(); int targetSerial = pvSrc.ReadInt32(); int xTarget = pvSrc.ReadInt16(); int yTarget = pvSrc.ReadInt16(); int zTarget = pvSrc.ReadSByte(); bool shouldDouble = false; shouldDouble = Map.m_ItemFlags[itemID & 0x3fff][TileFlag.Generic] && (num3 > 1); if ((itemID >= 0xeea) && (itemID <= 0xef2)) { int num12 = (itemID - 0xeea) / 3; num12 *= 3; num12 += 0xeea; shouldDouble = false; if (num3 <= 1) { itemID = num12; } else if ((num3 >= 2) && (num3 <= 5)) { itemID = num12 + 1; } else { itemID = num12 + 2; } } Engine.Effects.Add(new DragEffect(itemID, sourceSerial, xSource, ySource, zSource, targetSerial, xTarget, yTarget, zTarget, Hues.GetItemHue(itemID, hue), shouldDouble)); }
private static void DisplayQuestionMenu(PacketReader pvSrc) { int serial = pvSrc.ReadInt32(); int menuID = pvSrc.ReadInt16(); string question = pvSrc.ReadString(pvSrc.ReadByte()); AnswerEntry[] answers = new AnswerEntry[pvSrc.ReadByte()]; for (int i = 0; i < answers.Length; i++) { answers[i] = new AnswerEntry(i, pvSrc.ReadInt16(), pvSrc.ReadUInt16(), pvSrc.ReadString(pvSrc.ReadByte())); } if ((answers.Length > 0) && (answers[0].ItemID != 0)) { Gumps.Desktop.Children.Add(new GItemList(serial, menuID, question, answers)); } else { Gumps.Desktop.Children.Add(new GQuestionMenu(serial, menuID, question, answers)); } }
private static void DisplayGump(PacketReader pvSrc) { int serial = pvSrc.ReadInt32(); int dialogID = pvSrc.ReadInt32(); int x = pvSrc.ReadInt32(); int y = pvSrc.ReadInt32(); string layout = pvSrc.ReadString(pvSrc.ReadUInt16()); string[] text = new string[pvSrc.ReadUInt16()]; for (int i = 0; i < text.Length; i++) { text[i] = pvSrc.ReadUnicodeString(pvSrc.ReadUInt16()); } GServerGump.GetCachedLocation(dialogID, ref x, ref y); GServerGump toAdd = new GServerGump(serial, dialogID, x, y, layout, text); Gumps.Desktop.Children.Add(toAdd); }
private static void Book_PageInfo(PacketReader pvSrc) { int num = pvSrc.ReadInt32(); int num2 = pvSrc.ReadUInt16(); }
private static void Mobile_Damage(PacketReader pvSrc) { Mobile m = World.FindMobile(pvSrc.ReadInt32()); if (m != null) { int damage = pvSrc.ReadUInt16(); if (damage > 0) { Gumps.Desktop.Children.Add(new GDamageLabel(damage, m)); } } }
private static void BulletinBoard_SetBody(PacketReader pvSrc) { Item board = World.FindItem(pvSrc.ReadInt32()); if (board != null) { Item item2 = World.WantItem(pvSrc.ReadInt32()); if (item2 != null) { int serial = pvSrc.ReadInt32(); Item thread = null; if (serial >= 0x40000000) { thread = World.WantItem(serial); } string poster = BulletinBoard_ReadString(pvSrc); string subject = BulletinBoard_ReadString(pvSrc); string time = BulletinBoard_ReadString(pvSrc); item2.BulletinHeader = new BBMessageHeader(board, thread, poster, subject, time); int body = pvSrc.ReadUInt16(); int hue = pvSrc.ReadUInt16(); BBPAItem[] items = new BBPAItem[pvSrc.ReadByte()]; for (int i = 0; i < items.Length; i++) { items[i].ItemID = pvSrc.ReadUInt16(); items[i].Hue = pvSrc.ReadUInt16(); } string[] lines = new string[pvSrc.ReadByte()]; for (int j = 0; j < lines.Length; j++) { lines[j] = BulletinBoard_ReadString(pvSrc); } item2.BulletinBody = new BBMessageBody(new BBPosterAppearance(body, hue, items), lines); } } }
private static void Container_Item(PacketReader pvSrc) { int serial = pvSrc.ReadInt32(); int itemID = pvSrc.ReadInt16() + pvSrc.ReadSByte(); int num3 = pvSrc.ReadInt16(); int num4 = pvSrc.ReadInt16(); int num5 = pvSrc.ReadInt16(); int num6 = pvSrc.ReadInt32(); int hue = pvSrc.ReadUInt16(); bool flag = serial < 0x40000000; bool flag2 = num6 < 0x40000000; if (flag && flag2) { Mobile mobile = World.FindMobile(serial); if ((mobile != null) && mobile.Visible) { mobile.Visible = false; mobile.Update(); } } else if (!flag && !flag2) { Item item = World.WantItem(serial); Item item2 = World.WantItem(num6); item.Query(); item.Visible = true; if (item.InWorld) { Map.RemoveItem(item); item.InWorld = false; } else if (item.IsEquip) { item.RemoveEquip(); } else if ((item.Parent != null) && (item.Parent != item2)) { item.Parent.RemoveItem(item); } Engine.ItemArt.Translate(ref itemID, ref hue); item.ID = (short) itemID; item.Hue = (ushort) hue; item.Amount = (short) num3; item.ContainerX = (short) num4; item.ContainerY = (short) num5; item2.AddItem(item); if (((item.Parent != null) && ((item.Parent.ID & 0x3fff) == 0x2006)) && (item.PropertyList == null)) { item.QueryProperties(); } } }