private static void Skills_Delta(PacketReader pvSrc, bool hasCapData) { Skill skill = Engine.Skills[pvSrc.ReadInt16()]; if (skill != null) { float num = ((float) pvSrc.ReadInt16()) / 10f; if (skill.Value != num) { float num2 = num - skill.Value; int num3 = Math.Sign(num2); Engine.AddTextMessage(string.Format("Your skill in {0} has {1} by {2:F1}. Is it now {3:F1}.", new object[] { skill.Name, (num2 > 0f) ? "increased" : "decreased", Math.Abs(num2), num }), Engine.GetFont(3), Hues.Load(0x59)); skill.Value = num; } skill.Real = ((float) pvSrc.ReadInt16()) / 10f; skill.Lock = (SkillLock) pvSrc.ReadByte(); if (hasCapData) { pvSrc.Seek(2, SeekOrigin.Current); } if (Engine.m_SkillsOpen && (Engine.m_SkillsGump != null)) { Engine.m_SkillsGump.OnSkillChange(skill); } } }
private static void ChangeCharacter(PacketReader pvSrc) { int num = pvSrc.ReadByte(); int num2 = pvSrc.ReadByte(); string[] strArray = new string[5]; for (int i = 0; i < 5; i++) { strArray[i] = pvSrc.ReadString(30); pvSrc.Seek(30, SeekOrigin.Current); } if (!pvSrc.Finished || (num2 != 0)) { pvSrc.Trace(); } Engine.AddTextMessage("That is not supported."); }
private static void Skills_Absolute(PacketReader pvSrc, bool hasCapData) { int num; Client.Skills skills = Engine.Skills; while ((num = pvSrc.ReadInt16()) > 0) { Skill skill = skills[num - 1]; if (skill != null) { skill.Value = ((float) pvSrc.ReadInt16()) / 10f; skill.Real = ((float) pvSrc.ReadInt16()) / 10f; skill.Lock = (SkillLock) pvSrc.ReadByte(); if (hasCapData) { pvSrc.Seek(2, SeekOrigin.Current); } if (Engine.m_SkillsOpen && (Engine.m_SkillsGump != null)) { Engine.m_SkillsGump.OnSkillChange(skill); } } } }
private static void ServerChange(PacketReader pvSrc) { Engine.Multis.Clear(); Mobile player = World.Player; if (player != null) { short x = pvSrc.ReadInt16(); short y = pvSrc.ReadInt16(); short z = pvSrc.ReadInt16(); World.SetLocation(x, y, z); player.SetLocation(x, y, z); player.UpdateReal(); } else { pvSrc.Seek(6, SeekOrigin.Current); } }
private static void Prompt_Unicode(PacketReader pvSrc) { int serial = pvSrc.ReadInt32(); int prompt = pvSrc.ReadInt32(); int num3 = pvSrc.ReadInt32(); pvSrc.Seek(4, SeekOrigin.Current); string text = ""; if (pvSrc.ReadInt16() != 0) { pvSrc.Trace(); pvSrc.Seek(-2, SeekOrigin.Current); text = pvSrc.ReadUnicodeLEString(); } Engine.Prompt = new UnicodePrompt(serial, prompt, text); }
private static void MultiTarget(PacketReader pvSrc) { pvSrc.ReadByte(); Engine.m_MultiPreview = true; Engine.m_MultiSerial = pvSrc.ReadInt32(); Engine.TargetHandler = new MultiTargetHandler(Engine.m_MultiSerial); pvSrc.Seek(12, SeekOrigin.Current); Engine.m_MultiID = pvSrc.ReadInt16(); Engine.m_xMultiOffset = pvSrc.ReadInt16(); Engine.m_yMultiOffset = pvSrc.ReadInt16(); Engine.m_zMultiOffset = pvSrc.ReadInt16(); ArrayList list = new ArrayList(Engine.Multis.Load(Engine.m_MultiID)); int count = list.Count; int x = 0x3e8; int y = 0x3e8; int num4 = -1000; int num5 = -1000; for (int i = 0; i < count; i++) { MultiItem item = (MultiItem) list[i]; if (item.X < x) { x = item.X; } if (item.X > num4) { num4 = item.X; } if (item.Y < y) { y = item.Y; } if (item.Y > num5) { num5 = item.Y; } } Engine.m_MultiMinX = x; Engine.m_MultiMinY = y; Engine.m_MultiMaxX = num4; Engine.m_MultiMaxY = num5; ArrayList list2 = new ArrayList(list.Count); for (int j = x; j <= num4; j++) { for (int k = y; k <= num5; k++) { ArrayList list3 = new ArrayList(8); count = list.Count; int index = 0; while (index < count) { MultiItem item2 = (MultiItem) list[index]; if ((item2.X == j) && (item2.Y == k)) { list3.Add(StaticItem.Instantiate(item2.ItemID, (sbyte) item2.Z, item2.Flags)); list.RemoveAt(index); count--; } else { index++; } } list3.Sort(TileSorter.Comparer); count = list3.Count; for (index = 0; index < count; index++) { StaticItem item3 = (StaticItem) list3[index]; MultiItem item4 = new MultiItem { X = (short) j, Y = (short) k, Z = item3.Z, ItemID = (short) ((item3.ID & 0x3fff) | 0x4000), Flags = item3.Serial }; list2.Add(item4); } } } Engine.m_MultiList = list2; }
private static void Mobile_Moving(PacketReader pvSrc) { Mobile m = World.FindMobile(pvSrc.ReadInt32()); if (m != null) { bool flag = false; m.Body = pvSrc.ReadInt16(); if (!m.Player) { int x = pvSrc.ReadInt16(); int y = pvSrc.ReadInt16(); int z = pvSrc.ReadSByte(); int dir = pvSrc.ReadByte(); m.Walking.Enqueue(WalkAnimation.PoolInstance(m, x, y, z, dir)); if (m.Walking.Count > 4) { WalkAnimation animation = (WalkAnimation) m.Walking.Dequeue(); m.SetLocation((short) animation.NewX, (short) animation.NewY, (short) animation.NewZ); animation.Dispose(); flag = true; } ((WalkAnimation) m.Walking.Peek()).Start(); m.SetReal(x, y, z); } else { pvSrc.Seek(6, SeekOrigin.Current); } m.Hue = pvSrc.ReadInt16(); m.Flags.Value = pvSrc.ReadByte(); m.Notoriety = (Notoriety) pvSrc.ReadByte(); m.IsMoving = !m.Player || Engine.amMoving; if (!m.Visible) { m.Visible = true; m.Update(); } else if (flag) { m.Update(); } if (m.Paperdoll != null) { Gumps.OpenPaperdoll(m, m.PaperdollName, m.PaperdollCanDrag); } } }