82 lines
2.4 KiB
C#
82 lines
2.4 KiB
C#
using Server;
|
|
using System;
|
|
using Server.Mobiles;
|
|
using Server.Gumps;
|
|
using System.Linq;
|
|
using Server.Regions;
|
|
using System.Xml;
|
|
using Server.Spells;
|
|
|
|
namespace Server.Engines.Exodus
|
|
{
|
|
public class VerLorRegCity : DungeonRegion
|
|
{
|
|
private static readonly Point3D[] Random_Locations =
|
|
{
|
|
new Point3D(1217, 469, -13),
|
|
new Point3D(720, 1356, -60),
|
|
new Point3D(748, 728, -29),
|
|
new Point3D(287, 1016, 0),
|
|
new Point3D(987, 1007, -35),
|
|
new Point3D(1175, 1287, -30),
|
|
new Point3D(1532, 1341, -3),
|
|
new Point3D(527, 218, -44),
|
|
};
|
|
|
|
public VerLorRegCity(XmlElement xml, Map map, Region parent)
|
|
: base(xml, map, parent)
|
|
{
|
|
}
|
|
|
|
public class ExitTimer : Timer
|
|
{
|
|
private static TimeSpan m_Delay = TimeSpan.FromMinutes(2);
|
|
private static TimeSpan m_Warning = TimeSpan.FromMinutes(8);
|
|
VerLorRegCity m_region;
|
|
|
|
public ExitTimer(VerLorRegCity region) : base(m_Warning)
|
|
{
|
|
m_region = region;
|
|
}
|
|
protected override void OnTick()
|
|
{
|
|
foreach (Mobile m in m_region.GetEnumeratedMobiles().Where(m => m is PlayerMobile && m.AccessLevel == AccessLevel.Player))
|
|
{
|
|
m.SendLocalizedMessage(1010589);
|
|
}
|
|
|
|
Timer.DelayCall(m_Delay, new TimerCallback(m_region.MoveLocation));
|
|
}
|
|
}
|
|
|
|
public void MoveLocation()
|
|
{
|
|
foreach (Mobile m in this.GetEnumeratedMobiles().Where(m => m is PlayerMobile && m.AccessLevel == AccessLevel.Player))
|
|
{
|
|
Point3D p = Random_Locations[Utility.Random(Random_Locations.Length)];
|
|
|
|
m.MoveToWorld(p, m.Map);
|
|
BaseCreature.TeleportPets(m, p, m.Map);
|
|
}
|
|
|
|
VerLorRegController.Start();
|
|
}
|
|
|
|
public override bool CheckTravel(Mobile traveller, Point3D p, TravelCheckType type)
|
|
{
|
|
if (traveller.AccessLevel > AccessLevel.Player)
|
|
return true;
|
|
|
|
return type > TravelCheckType.Mark;
|
|
}
|
|
|
|
public override void OnDeath(Mobile m)
|
|
{
|
|
if (VerLorRegController.Mobile != null && VerLorRegController.Mobile == m)
|
|
{
|
|
VerLorRegController.Stop();
|
|
new ExitTimer(this).Start();
|
|
}
|
|
}
|
|
}
|
|
} |