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,45 @@
using System;
namespace Server.Items
{
[FlipableAttribute(0x1B09, 0x1B10)]
public class BonePile : Item, IScissorable
{
[Constructable]
public BonePile()
: base(0x1B09 + Utility.Random(8))
{
this.Stackable = false;
this.Weight = 10.0;
}
public BonePile(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
public bool Scissor(Mobile from, Scissors scissors)
{
if (this.Deleted || !from.CanSee(this))
return false;
base.ScissorHelper(from, new Bone(), Utility.RandomMinMax(10, 15));
return true;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,22 @@
using System;
namespace Server
{
[AttributeUsage(AttributeTargets.Class)]
public class CorpseNameAttribute : Attribute
{
private readonly string m_Name;
public CorpseNameAttribute(string name)
{
this.m_Name = name;
}
public string Name
{
get
{
return this.m_Name;
}
}
}
}

View File

@@ -0,0 +1,119 @@
using System;
namespace Server.Items
{
public class DecayedCorpse : Container
{
private static readonly TimeSpan m_DefaultDecayTime = TimeSpan.FromMinutes(7.0);
private Timer m_DecayTimer;
private DateTime m_DecayTime;
public DecayedCorpse(string name)
: base(Utility.Random(0xECA, 9))
{
this.Movable = false;
this.Name = name;
this.BeginDecay(m_DefaultDecayTime);
}
public DecayedCorpse(Serial serial)
: base(serial)
{
}
// Do not display (x items, y stones)
public override bool DisplaysContent
{
get
{
return false;
}
}
public void BeginDecay(TimeSpan delay)
{
if (this.m_DecayTimer != null)
this.m_DecayTimer.Stop();
this.m_DecayTime = DateTime.UtcNow + delay;
this.m_DecayTimer = new InternalTimer(this, delay);
this.m_DecayTimer.Start();
}
public override void OnAfterDelete()
{
if (this.m_DecayTimer != null)
this.m_DecayTimer.Stop();
this.m_DecayTimer = null;
}
// Do not display (x items, y stones)
public override bool CheckContentDisplay(Mobile from)
{
return false;
}
public override void AddNameProperty(ObjectPropertyList list)
{
list.Add(1046414, this.Name); // the remains of ~1_NAME~
}
public override void OnSingleClick(Mobile from)
{
this.LabelTo(from, 1046414, this.Name); // the remains of ~1_NAME~
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)1); // version
writer.Write(this.m_DecayTimer != null);
if (this.m_DecayTimer != null)
writer.WriteDeltaTime(this.m_DecayTime);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
switch ( version )
{
case 0:
{
this.BeginDecay(m_DefaultDecayTime);
break;
}
case 1:
{
if (reader.ReadBool())
this.BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow);
break;
}
}
}
private class InternalTimer : Timer
{
private readonly DecayedCorpse m_Corpse;
public InternalTimer(DecayedCorpse c, TimeSpan delay)
: base(delay)
{
this.m_Corpse = c;
this.Priority = TimerPriority.FiveSeconds;
}
protected override void OnTick()
{
this.m_Corpse.Delete();
}
}
}
}

View File

@@ -0,0 +1,134 @@
using System;
namespace Server.Items
{
public enum HeadType
{
Regular,
Duel,
Tournament
}
public class Head : Item
{
private string m_PlayerName;
private HeadType m_HeadType;
[Constructable]
public Head()
: this(null)
{
}
[Constructable]
public Head(string playerName)
: this(HeadType.Regular, playerName)
{
}
[Constructable]
public Head(HeadType headType, string playerName)
: base(0x1DA0)
{
this.m_HeadType = headType;
this.m_PlayerName = playerName;
}
public Head(Serial serial)
: base(serial)
{
}
[CommandProperty(AccessLevel.GameMaster)]
public string PlayerName
{
get
{
return this.m_PlayerName;
}
set
{
this.m_PlayerName = value;
}
}
[CommandProperty(AccessLevel.GameMaster)]
public HeadType HeadType
{
get
{
return this.m_HeadType;
}
set
{
this.m_HeadType = value;
}
}
public override string DefaultName
{
get
{
if (this.m_PlayerName == null)
return base.DefaultName;
switch ( this.m_HeadType )
{
default:
return String.Format("the head of {0}", this.m_PlayerName);
case HeadType.Duel:
return String.Format("the head of {0}, taken in a duel", this.m_PlayerName);
case HeadType.Tournament:
return String.Format("the head of {0}, taken in a tournament", this.m_PlayerName);
}
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)1); // version
writer.Write((string)this.m_PlayerName);
writer.WriteEncodedInt((int)this.m_HeadType);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
switch ( version )
{
case 1:
this.m_PlayerName = reader.ReadString();
this.m_HeadType = (HeadType)reader.ReadEncodedInt();
break;
case 0:
string format = this.Name;
if (format != null)
{
if (format.StartsWith("the head of "))
format = format.Substring("the head of ".Length);
if (format.EndsWith(", taken in a duel"))
{
format = format.Substring(0, format.Length - ", taken in a duel".Length);
this.m_HeadType = HeadType.Duel;
}
else if (format.EndsWith(", taken in a tournament"))
{
format = format.Substring(0, format.Length - ", taken in a tournament".Length);
this.m_HeadType = HeadType.Tournament;
}
}
this.m_PlayerName = format;
this.Name = null;
break;
}
}
}
}

View File

@@ -0,0 +1,32 @@
using System;
namespace Server.Items
{
public class LeftArm : Item
{
[Constructable]
public LeftArm()
: base(0x1DA1)
{
}
public LeftArm(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,32 @@
using System;
namespace Server.Items
{
public class LeftLeg : Item
{
[Constructable]
public LeftLeg()
: base(0x1DA3)
{
}
public LeftLeg(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,213 @@
#region References
using System.IO;
using Server.Items;
#endregion
namespace Server.Network
{
public sealed class CorpseEquip : Packet
{
public CorpseEquip(Mobile beholder, Corpse beheld)
: base(0x89)
{
var list = beheld.EquipItems;
int count = list.Count;
if (beheld.Hair != null && beheld.Hair.ItemID > 0)
{
count++;
}
if (beheld.FacialHair != null && beheld.FacialHair.ItemID > 0)
{
count++;
}
EnsureCapacity(8 + (count * 5));
m_Stream.Write(beheld.Serial);
for (int i = 0; i < list.Count; ++i)
{
Item item = list[i];
if (!item.Deleted && beholder.CanSee(item) && item.Parent == beheld)
{
m_Stream.Write((byte)(item.Layer + 1));
m_Stream.Write(item.Serial);
}
}
if (beheld.Hair != null && beheld.Hair.ItemID > 0)
{
m_Stream.Write((byte)(Layer.Hair + 1));
m_Stream.Write(HairInfo.FakeSerial(beheld.Owner) - 2);
}
if (beheld.FacialHair != null && beheld.FacialHair.ItemID > 0)
{
m_Stream.Write((byte)(Layer.FacialHair + 1));
m_Stream.Write(FacialHairInfo.FakeSerial(beheld.Owner) - 2);
}
m_Stream.Write((byte)Layer.Invalid);
}
}
public sealed class CorpseContent : Packet
{
public CorpseContent(Mobile beholder, Corpse beheld)
: base(0x3C)
{
var items = beheld.EquipItems;
int count = items.Count;
if (beheld.Hair != null && beheld.Hair.ItemID > 0)
{
count++;
}
if (beheld.FacialHair != null && beheld.FacialHair.ItemID > 0)
{
count++;
}
EnsureCapacity(5 + (count * 19));
long pos = m_Stream.Position;
int written = 0;
m_Stream.Write((ushort)0);
for (int i = 0; i < items.Count; ++i)
{
Item child = items[i];
if (!child.Deleted && child.Parent == beheld && beholder.CanSee(child))
{
m_Stream.Write(child.Serial);
m_Stream.Write((ushort)child.ItemID);
m_Stream.Write((byte)0); // signed, itemID offset
m_Stream.Write((ushort)child.Amount);
m_Stream.Write((short)child.X);
m_Stream.Write((short)child.Y);
m_Stream.Write(beheld.Serial);
m_Stream.Write((ushort)child.Hue);
++written;
}
}
if (beheld.Hair != null && beheld.Hair.ItemID > 0)
{
m_Stream.Write(HairInfo.FakeSerial(beheld.Owner) - 2);
m_Stream.Write((ushort)beheld.Hair.ItemID);
m_Stream.Write((byte)0); // signed, itemID offset
m_Stream.Write((ushort)1);
m_Stream.Write((short)0);
m_Stream.Write((short)0);
m_Stream.Write(beheld.Serial);
m_Stream.Write((ushort)beheld.Hair.Hue);
++written;
}
if (beheld.FacialHair != null && beheld.FacialHair.ItemID > 0)
{
m_Stream.Write(FacialHairInfo.FakeSerial(beheld.Owner) - 2);
m_Stream.Write((ushort)beheld.FacialHair.ItemID);
m_Stream.Write((byte)0); // signed, itemID offset
m_Stream.Write((ushort)1);
m_Stream.Write((short)0);
m_Stream.Write((short)0);
m_Stream.Write(beheld.Serial);
m_Stream.Write((ushort)beheld.FacialHair.Hue);
++written;
}
m_Stream.Seek(pos, SeekOrigin.Begin);
m_Stream.Write((ushort)written);
}
}
public sealed class CorpseContent6017 : Packet
{
public CorpseContent6017(Mobile beholder, Corpse beheld)
: base(0x3C)
{
var items = beheld.EquipItems;
int count = items.Count;
if (beheld.Hair != null && beheld.Hair.ItemID > 0)
{
count++;
}
if (beheld.FacialHair != null && beheld.FacialHair.ItemID > 0)
{
count++;
}
EnsureCapacity(5 + (count * 20));
long pos = m_Stream.Position;
int written = 0;
m_Stream.Write((ushort)0);
for (int i = 0; i < items.Count; ++i)
{
Item child = items[i];
if (!child.Deleted && child.Parent == beheld && beholder.CanSee(child))
{
m_Stream.Write(child.Serial);
m_Stream.Write((ushort)child.ItemID);
m_Stream.Write((byte)0); // signed, itemID offset
m_Stream.Write((ushort)child.Amount);
m_Stream.Write((short)child.X);
m_Stream.Write((short)child.Y);
m_Stream.Write((byte)0); // Grid Location?
m_Stream.Write(beheld.Serial);
m_Stream.Write((ushort)child.Hue);
++written;
}
}
if (beheld.Hair != null && beheld.Hair.ItemID > 0)
{
m_Stream.Write(HairInfo.FakeSerial(beheld.Owner) - 2);
m_Stream.Write((ushort)beheld.Hair.ItemID);
m_Stream.Write((byte)0); // signed, itemID offset
m_Stream.Write((ushort)1);
m_Stream.Write((short)0);
m_Stream.Write((short)0);
m_Stream.Write((byte)0); // Grid Location?
m_Stream.Write(beheld.Serial);
m_Stream.Write((ushort)beheld.Hair.Hue);
++written;
}
if (beheld.FacialHair != null && beheld.FacialHair.ItemID > 0)
{
m_Stream.Write(FacialHairInfo.FakeSerial(beheld.Owner) - 2);
m_Stream.Write((ushort)beheld.FacialHair.ItemID);
m_Stream.Write((byte)0); // signed, itemID offset
m_Stream.Write((ushort)1);
m_Stream.Write((short)0);
m_Stream.Write((short)0);
m_Stream.Write((byte)0); // Grid Location?
m_Stream.Write(beheld.Serial);
m_Stream.Write((ushort)beheld.FacialHair.Hue);
++written;
}
m_Stream.Seek(pos, SeekOrigin.Begin);
m_Stream.Write((ushort)written);
}
}
}

View File

@@ -0,0 +1,45 @@
using System;
namespace Server.Items
{
[FlipableAttribute(0x1B17, 0x1B18)]
public class RibCage : Item, IScissorable
{
[Constructable]
public RibCage()
: base(0x1B17 + Utility.Random(2))
{
this.Stackable = false;
this.Weight = 5.0;
}
public RibCage(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
public bool Scissor(Mobile from, Scissors scissors)
{
if (this.Deleted || !from.CanSee(this))
return false;
base.ScissorHelper(from, new Bone(), Utility.RandomMinMax(3, 5));
return true;
}
}
}

View File

@@ -0,0 +1,32 @@
using System;
namespace Server.Items
{
public class RightArm : Item
{
[Constructable]
public RightArm()
: base(0x1DA2)
{
}
public RightArm(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,32 @@
using System;
namespace Server.Items
{
public class RightLeg : Item
{
[Constructable]
public RightLeg()
: base(0x1DA4)
{
}
public RightLeg(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,33 @@
using System;
namespace Server.Items
{
public class Torso : Item
{
[Constructable]
public Torso()
: base(0x1D9F)
{
this.Weight = 2.0;
}
public Torso(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}