public void Read(BitStream stream, Packet packet, Client client) { int playerID = 0, cF = 0; stream.Read(out playerID); stream.Read(out cF); NPCProto proto = (NPCProto)sWorld.VobDict[playerID]; NPCChangedFlags changeFlags = (NPCChangedFlags)cF; zERROR.GetZErr(Process.ThisProcess()).Report(2, 'G', "Getted ChangeFlags: " + changeFlags, 0, "Client.cs", 0); //Equipment: if (changeFlags.HasFlag(NPCChangedFlags.EQUIP_ARMOR)) { Item armor = null; int armorID = 0; stream.Read(out armorID); if (armorID > 0) { armor = (Item)sWorld.VobDict[armorID]; Item oldArmor = proto.Armor; proto.Armor = armor; proto.setArmor(armor); } else { proto.setArmor(null); } } if (changeFlags.HasFlag(NPCChangedFlags.EQUIP_NW)) { Item weapon = null; int weaponID = 0; stream.Read(out weaponID); if (weaponID > 0) { weapon = (Item)sWorld.VobDict[weaponID]; Item oldWeapon = proto.Weapon; proto.Weapon = weapon; proto.setWeapon(weapon); } else { proto.setWeapon(null); } } if (changeFlags.HasFlag(NPCChangedFlags.EQUIP_RW)) { Item weapon = null; int weaponID = 0; stream.Read(out weaponID); if (weaponID > 0) { weapon = (Item)sWorld.VobDict[weaponID]; Item oldWeapon = proto.RangeWeapon; proto.RangeWeapon = weapon; proto.setRangeWeapon(weapon); } else { proto.setRangeWeapon(null); } } if (changeFlags.HasFlag(NPCChangedFlags.WeaponMode)) { int weaponMode = 0; stream.Read(out weaponMode); proto.setWeaponMode(weaponMode); } for (int i = 0; i < 9; i++) { if (changeFlags.HasFlag((NPCChangedFlags)((int)NPCChangedFlags.SLOT1 << i))) { int slotItemID = 0; stream.Read(out slotItemID); if (slotItemID > 0) { Item slotItem = (Item)sWorld.VobDict[slotItemID]; Item oldSlotItem = proto.Slots[i]; proto.Slots[i] = slotItem; } else { proto.Slots[i] = null; } proto.setSlotItem(i, proto.Slots[i]); } } if (changeFlags.HasFlag(NPCChangedFlags.VOBFOCUS)) { int vobID = 0; stream.Read(out vobID); if (vobID == 0) { proto.FocusVob = null; } else { proto.FocusVob = sWorld.VobDict[vobID]; } } if (changeFlags.HasFlag(NPCChangedFlags.ENEMYFOCUS)) { int vobID = 0; stream.Read(out vobID); if (vobID == 0) { proto.Enemy = null; } else { proto.Enemy = (NPCProto)sWorld.VobDict[vobID]; } } if (changeFlags.HasFlag(NPCChangedFlags.MOBINTERACT)) { int vobID = 0; stream.Read(out vobID); if (vobID == 0) { proto.MobInter = null; } else { proto.MobInter = (MobInter)sWorld.VobDict[vobID]; } } if (changeFlags.HasFlag(NPCChangedFlags.ISDEAD)) { bool isdead = false; stream.Read(out isdead); proto.IsDead = isdead; } if (changeFlags.HasFlag(NPCChangedFlags.ISUNCONSCIOUS)) { bool isuncon = false; stream.Read(out isuncon); proto.IsUnconcious = isuncon; } if (changeFlags.HasFlag(NPCChangedFlags.ISSWIMMING)) { bool isswimming = false; stream.Read(out isswimming); proto.IsSwimming = isswimming; } if (changeFlags.HasFlag(NPCChangedFlags.PORTALROOM)) { String portalRoom = ""; stream.Read(out portalRoom); proto.PortalRoom = portalRoom; } if (changeFlags.HasFlag(NPCChangedFlags.ACTIVE_SPELL)) { int vobID = 0; stream.Read(out vobID); if (vobID == 0) { proto.setActiveSpell(null); } else { proto.setActiveSpell((Item)sWorld.VobDict[vobID]); } } }