ModernUO/Projects/Scripts/Mobiles/Guards/BaseGuard.cs
2019-11-11 08:46:11 -08:00

75 lines
No EOL
1.6 KiB
C#

using Server.Items;
namespace Server.Mobiles
{
public abstract class BaseGuard : Mobile
{
public BaseGuard(Mobile target)
{
if (target != null)
{
Location = target.Location;
Map = target.Map;
Effects.SendLocationParticles(EffectItem.Create(Location, Map, EffectItem.DefaultDuration), 0x3728, 10, 10,
5023);
}
}
public BaseGuard(Serial serial) : base(serial)
{
}
public abstract Mobile Focus{ get; set; }
public static void Spawn(Mobile caller, Mobile target, int amount = 1, bool onlyAdditional = false)
{
if (target?.Deleted != false)
return;
foreach (Mobile m in target.GetMobilesInRange(15))
if (m is BaseGuard g)
{
if (g.Focus == null) // idling
{
g.Focus = target;
--amount;
}
else if (g.Focus == target && !onlyAdditional)
{
--amount;
}
}
while (amount-- > 0)
caller.Region.MakeGuard(target);
}
public override bool OnBeforeDeath()
{
Effects.SendLocationParticles(EffectItem.Create(Location, Map, EffectItem.DefaultDuration), 0x3728, 10, 10,
2023);
PlaySound(0x1FE);
Delete();
return false;
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}