Overwrite

Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
Unstable Kitsune
2023-11-28 23:20:26 -05:00
parent 3cd54811de
commit b918192e4e
11608 changed files with 2644205 additions and 47 deletions

View File

@@ -0,0 +1,125 @@
using System;
using Server.Network;
namespace Server.Items
{
public class LOSBlocker : Item
{
[Constructable]
public LOSBlocker()
: base(0x21A2)
{
this.Movable = false;
}
public LOSBlocker(Serial serial)
: base(serial)
{
}
public override string DefaultName
{
get
{
return "no line of sight";
}
}
public static void Initialize()
{
TileData.ItemTable[0x21A2].Flags = TileFlag.Wall | TileFlag.NoShoot;
TileData.ItemTable[0x21A2].Height = 20;
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)1);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
if (version < 1 && this.ItemID == 0x2199)
this.ItemID = 0x21A2;
}
protected override Packet GetWorldPacketFor(NetState state)
{
Mobile mob = state.Mobile;
if (mob != null && mob.AccessLevel >= AccessLevel.GameMaster)
{
return new GMItemPacket(this);
}
return base.GetWorldPacketFor(state);
}
public sealed class GMItemPacket : Packet
{
public GMItemPacket(Item item)
: base(0x1A)
{
this.EnsureCapacity(20);
// 14 base length
// +2 - Amount
// +2 - Hue
// +1 - Flags
uint serial = (uint)item.Serial.Value;
int itemID = 0x36FF;
int amount = item.Amount;
Point3D loc = item.Location;
int x = loc.X;
int y = loc.Y;
int hue = item.Hue;
int flags = item.GetPacketFlags();
int direction = (int)item.Direction;
if (amount != 0)
serial |= 0x80000000;
else
serial &= 0x7FFFFFFF;
this.m_Stream.Write((uint)serial);
this.m_Stream.Write((short)(itemID & TileData.MaxItemValue));
if (amount != 0)
this.m_Stream.Write((short)amount);
x &= 0x7FFF;
if (direction != 0)
x |= 0x8000;
this.m_Stream.Write((short)x);
y &= 0x3FFF;
if (hue != 0)
y |= 0x8000;
if (flags != 0)
y |= 0x4000;
this.m_Stream.Write((short)y);
if (direction != 0)
this.m_Stream.Write((byte)direction);
this.m_Stream.Write((sbyte)loc.Z);
if (hue != 0)
this.m_Stream.Write((ushort)hue);
if (flags != 0)
this.m_Stream.Write((byte)flags);
}
}
}
}