using System; using System.Buffers.Binary; using Server.Network; namespace Server.Items { public class Blocker : Item { private const ushort GMItemId = 0x1183; [Constructible] public Blocker() : base(0x21A4) => Movable = false; public Blocker(Serial serial) : base(serial) { } public override int LabelNumber => 503057; // Impassable! public override void SendWorldPacketTo(NetState ns, ReadOnlySpan world = default) { var mob = ns.Mobile; if (AccessLevel.GameMaster >= mob?.AccessLevel) { base.SendWorldPacketTo(ns, world); return; } SendGMItem(ns); } private void SendGMItem(NetState ns) { // GM Packet Span buffer = stackalloc byte[OutgoingEntityPackets.MaxWorldEntityPacketLength].InitializePacket(); int length; if (ns.StygianAbyss) { length = OutgoingEntityPackets.CreateWorldEntity(buffer, this, ns.HighSeas); BinaryPrimitives.WriteUInt16BigEndian(buffer[8..10], GMItemId); } else { length = OutgoingItemPackets.CreateWorldItem(buffer, this); BinaryPrimitives.WriteUInt16BigEndian(buffer[7..9], GMItemId); } ns.Send(buffer[..length]); } public override void Serialize(IGenericWriter writer) { base.Serialize(writer); writer.Write(0); } public override void Deserialize(IGenericReader reader) { base.Deserialize(reader); var version = reader.ReadInt(); } } }