Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
using Server;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class SmeltersTalisman : BaseTalisman, IUsesRemaining
|
||||
{
|
||||
public const int DecayPeriod = 24;
|
||||
|
||||
private CraftResource _Resource;
|
||||
private int _UsesRemaining;
|
||||
private Timer m_Timer;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public CraftResource Resource
|
||||
{
|
||||
get { return _Resource; }
|
||||
set
|
||||
{
|
||||
if (_Resource != value)
|
||||
{
|
||||
_Resource = value;
|
||||
Hue = CraftResources.GetHue(_Resource);
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int UsesRemaining
|
||||
{
|
||||
get { return _UsesRemaining; }
|
||||
set
|
||||
{
|
||||
_UsesRemaining = value;
|
||||
|
||||
if (_UsesRemaining <= 0 && this.RootParent is Mobile)
|
||||
((Mobile)RootParent).SendLocalizedMessage(1152621); // Your talisman's magic is exhausted.
|
||||
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool ShowUsesRemaining { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public DateTime Expires { get; set; }
|
||||
|
||||
[Constructable]
|
||||
public SmeltersTalisman(CraftResource resource)
|
||||
: base(0x2F5B)
|
||||
{
|
||||
Resource = resource;
|
||||
|
||||
UsesRemaining = 6000;
|
||||
ShowUsesRemaining = true;
|
||||
|
||||
Expires = DateTime.UtcNow + TimeSpan.FromHours(DecayPeriod);
|
||||
m_Timer = Timer.DelayCall(TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(10), CheckDecay);
|
||||
}
|
||||
|
||||
public void CheckDecay()
|
||||
{
|
||||
if (Expires < DateTime.UtcNow)
|
||||
Decay();
|
||||
else
|
||||
InvalidateProperties();
|
||||
}
|
||||
|
||||
public 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(this.Location, this.Map, EffectItem.DefaultDuration), 0x3728, 8, 20, 5042);
|
||||
Effects.PlaySound(this.Location, this.Map, 0x201);
|
||||
}
|
||||
|
||||
Delete();
|
||||
}
|
||||
|
||||
public override void Delete()
|
||||
{
|
||||
base.Delete();
|
||||
|
||||
if (m_Timer != null)
|
||||
{
|
||||
m_Timer.Stop();
|
||||
m_Timer = null;
|
||||
}
|
||||
}
|
||||
|
||||
public override void AddNameProperty(ObjectPropertyList list)
|
||||
{
|
||||
list.Add(1152599, String.Format("#{0}\t#1152606", CraftResources.GetLocalizationNumber(_Resource))); // ~1_RES~ ~2_TYPE~ Talisman
|
||||
}
|
||||
|
||||
public override void AddUsesRemainingProperties(ObjectPropertyList list)
|
||||
{
|
||||
list.Add(1060584, UsesRemaining.ToString()); // uses remaining: ~1_val~
|
||||
}
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
int left = 0;
|
||||
if (DateTime.UtcNow < Expires)
|
||||
left = (int)(Expires - DateTime.UtcNow).TotalSeconds;
|
||||
|
||||
list.Add(1072517, left.ToString()); // Lifespan: ~1_val~ seconds
|
||||
}
|
||||
|
||||
public SmeltersTalisman(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
|
||||
writer.Write((int)Resource);
|
||||
writer.Write(Expires);
|
||||
writer.Write(UsesRemaining);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
|
||||
Resource = (CraftResource)reader.ReadInt();
|
||||
Expires = reader.ReadDateTime();
|
||||
UsesRemaining = reader.ReadInt();
|
||||
|
||||
if (Expires < DateTime.UtcNow)
|
||||
Decay();
|
||||
else
|
||||
m_Timer = Timer.DelayCall(TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(10), CheckDecay);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user