Beispiel #1
0
 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));
     }
 }
Beispiel #2
0
 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));
     }
 }
Beispiel #3
0
 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);
                 }
             }
         }
     }
 }
Beispiel #4
0
 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));
     }
 }
Beispiel #5
0
 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();
     }
 }
Beispiel #6
0
 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;
     }
 }
Beispiel #7
0
 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;
     }
 }
Beispiel #8
0
 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);
     }
 }
Beispiel #9
0
 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));
     }
 }
Beispiel #10
0
 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;
 }
Beispiel #11
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));
 }
Beispiel #12
0
 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));
     }
 }
Beispiel #13
0
 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);
 }
Beispiel #14
0
 private static void Book_PageInfo(PacketReader pvSrc)
 {
     int num = pvSrc.ReadInt32();
     int num2 = pvSrc.ReadUInt16();
 }
Beispiel #15
0
 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));
         }
     }
 }
Beispiel #16
0
 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);
         }
     }
 }
Beispiel #17
0
 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();
         }
     }
 }