using Server;
namespace Server.Items
{
public class AccessCloak : BaseCloak
{
protected AccessLevel InternalAccessTemp;
protected AccessLevel InternalAccessMask;
[CommandProperty(AccessLevel.GameMaster)]
public AccessLevel AccessMask
{
get { return InternalAccessMask; }
set
{
if (value <= InternalAccessTemp)
{ InternalAccessMask = value; }
}
}
public override bool DisplayLootType { get { return false; } }
public override bool DisplayWeight { get { return false; } }
[Constructable]
public AccessCloak()
: this(AccessLevel.Player)
{ }
public AccessCloak(AccessLevel mask)
: base(0x1515)
{
InternalAccessMask = mask;
Name = "Access Cloak";
Hue = Utility.RandomDyedHue();
LootType = LootType.Blessed;
StrRequirement = 0;
Weight = 0;
}
public override bool OnEquip(Mobile from)
{
if (BlessedFor == null)
{
BlessedFor = from;
InternalAccessTemp = BlessedFor.AccessLevel;
}
if (BlessedFor != from)
{
from.SendMessage("That does not belong to you.");
return false;
}
BlessedFor.AccessLevel = InternalAccessMask;
return base.OnEquip(from);
}
public override void OnRemoved(object parent)
{
if (BlessedFor != null)
{ BlessedFor.AccessLevel = InternalAccessTemp; }
base.OnRemoved(parent);
}
public override void OnDelete()
{
if (BlessedFor != null)
{ BlessedFor.AccessLevel = InternalAccessTemp; }
base.OnDelete();
}
public override void AddNameProperty(ObjectPropertyList list)
{
base.AddNameProperty(list);
list.Add("<basefont color=#{0:X6}>Cloak: {1} => {2}<basefont color=#FFFFFF>", System.Drawing.Color.Gold.ToArgb(), InternalAccessTemp, InternalAccessMask);
}
public AccessCloak(Serial serial)
: base(serial)
{ }
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
const int version = 0;
writer.Write(version);
switch (version)
{
case 0:
{
writer.Write(BlessedFor);
writer.Write((int)InternalAccessMask);
writer.Write((int)InternalAccessTemp);
} break;
}
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
switch (version)
{
case 0:
{
BlessedFor = reader.ReadMobile();
InternalAccessMask = (AccessLevel)reader.ReadInt();
InternalAccessTemp = (AccessLevel)reader.ReadInt();
} break;
}
}
}
}