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,184 @@
using System;
namespace Server.Items
{
public class PeerlessKey : Item
{
private int m_Lifespan;
private Timer m_Timer;
private Map m_Map;
[CommandProperty(AccessLevel.GameMaster)]
public Map _Map
{
get { return m_Map; }
set
{
m_Map = value;
InvalidateProperties();
}
}
[Constructable]
public PeerlessKey(int itemID)
: base(itemID)
{
LootType = LootType.Blessed;
if (Lifespan > 0)
{
m_Lifespan = Lifespan;
StartTimer();
}
}
public PeerlessKey(Serial serial)
: base(serial)
{
}
public virtual int Lifespan { get { return 604800; } }
public virtual bool UseSeconds { get { return false; } }
[CommandProperty(AccessLevel.GameMaster)]
public int TimeLeft
{
get { return m_Lifespan; }
set
{
m_Lifespan = value;
InvalidateProperties();
}
}
public override void GetProperties(ObjectPropertyList list)
{
base.GetProperties(list);
if (_Map != null)
{
if (_Map == Map.Felucca)
list.Add(1012001); // Felucca
else if (_Map == Map.Trammel)
list.Add(1012000); // Trammel
else if (_Map == Map.Ilshenar)
list.Add(1012002); // Ilshenar
else if (_Map == Map.Malas)
list.Add(1060643); // Malas
else if (_Map == Map.Tokuno)
list.Add(1063258); // Tokuno Islands
}
if (Lifespan > 0)
{
if (UseSeconds)
list.Add(1072517, m_Lifespan.ToString()); // Lifespan: ~1_val~ seconds
else
{
TimeSpan t = TimeSpan.FromSeconds(TimeLeft);
int weeks = (int)t.Days / 7;
int days = t.Days;
int hours = t.Hours;
int minutes = t.Minutes;
if (weeks > 1)
list.Add(1153092, (t.Days / 7).ToString()); // Lifespan: ~1_val~ weeks
else if (days > 1)
list.Add(1153091, t.Days.ToString()); // Lifespan: ~1_val~ days
else if (hours > 1)
list.Add(1153090, t.Hours.ToString()); // Lifespan: ~1_val~ hours
else if (minutes > 1)
list.Add(1153089, t.Minutes.ToString()); // Lifespan: ~1_val~ minutes
else
list.Add(1072517, t.Seconds.ToString()); // Lifespan: ~1_val~ seconds
}
}
}
public virtual void StartTimer()
{
if (m_Timer != null)
return;
m_Timer = Timer.DelayCall(TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(10), new TimerCallback(Slice));
m_Timer.Priority = TimerPriority.OneSecond;
}
public virtual void StopTimer()
{
if (m_Timer != null)
m_Timer.Stop();
m_Timer = null;
}
public virtual void Slice()
{
m_Lifespan -= 10;
InvalidateProperties();
if (m_Lifespan <= 0)
Decay();
}
public virtual void Decay()
{
if (RootParent is Mobile)
{
Mobile parent = (Mobile)RootParent;
if (Name == null)
parent.SendLocalizedMessage(1072515, "#" + LabelNumber); // The ~1_name~ expired...
else
parent.SendLocalizedMessage(1072515, Name); // The ~1_name~ expired...
Effects.SendLocationParticles(EffectItem.Create(parent.Location, parent.Map, EffectItem.DefaultDuration), 0x3728, 8, 20, 5042);
Effects.PlaySound(parent.Location, parent.Map, 0x201);
}
else
{
Effects.SendLocationParticles(EffectItem.Create(Location, Map, EffectItem.DefaultDuration), 0x3728, 8, 20, 5042);
Effects.PlaySound(Location, Map, 0x201);
}
StopTimer();
Delete();
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)1); // version
writer.Write(m_Map);
writer.Write((int)m_Lifespan);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
switch (version)
{
case 1:
{
m_Map = reader.ReadMap();
goto case 0;
}
case 0:
{
m_Lifespan = reader.ReadInt();
break;
}
}
StartTimer();
}
}
}