/// <summary>
/// The Respawn Interval of this mob in milliseconds
/// </summary>
public virtual int RespawnInterval
{
get
{
if ( m_respawnInterval > 0 || m_respawnInterval < 0 )
return m_respawnInterval;
int minutes = Util.Random(ServerProperties.Properties.NPC_MIN_RESPAWN_INTERVAL, ServerProperties.Properties.NPC_MIN_RESPAWN_INTERVAL + 5);
if (Name != Name.ToLower())
{
minutes += 5;
}
if (Level <= 65 && Realm == 0)
{
return minutes * 60000;
}
else if (Realm != 0)
{
// 5 to 10 minutes for realm npc's
return Util.Random(5 * 60000, 10 * 60000);
}
else
{
int add = (Level - 65) + ServerProperties.Properties.NPC_MIN_RESPAWN_INTERVAL;
return (minutes + add) * 60000;
}
}
set
{
m_respawnInterval = value;
}
}
int respawnInt = RespawnInterval;
if (respawnInt > 0)
{
lock (m_respawnTimerLock)
{
if (m_respawnTimer == null)
{
m_respawnTimer = new RegionTimer(this);
m_respawnTimer.Callback = new RegionTimerCallback(RespawnTimerCallback);
}
else if (m_respawnTimer.IsAlive)
{
m_respawnTimer.Stop();
}
// register Mob as "respawning"
CurrentRegion.MobsRespawning.TryAdd(this, respawnInt);
m_respawnTimer.Start(respawnInt);
}
}
// Set respawn to false
foreach(GameNPC mob in GetMobsInsideInstance(true))
{
mob.RespawnInterval = -1;
}
Users browsing this forum: No registered users and 1 guest