// RunUO 2.0 Venus Düzenlemesi <admin@venus.gen.tr>

// Bu script champ ve rare spawn alanlarındaki ölü karakterlere önce uyarı
// verir 2 dakika içinde oradan ayrılmazlarsa Britain Otel'e bırakır...

using System;
using System.Collections;
using Server;
using Server.Mobiles;
using Server.Items;
using Server.Engines.CannedEvil;

namespace Server.GuardSystem
{
	public class SpyGuard
	{
		private static Hashtable Uyari = new Hashtable();

		public static void Initialize()
		{
			new SpyControl().Start();
		}
		private class SpyControl : Timer
		{
			public SpyControl() : base( TimeSpan.FromSeconds( 2.0 ), TimeSpan.FromMinutes( 2.0 ) )
			{
				Priority = TimerPriority.OneMinute;
			}
			protected override void OnTick()
			{
				Point3D loc = new Point3D(1482, 1612, 20);
				Map map = Map.Felucca;

				foreach ( Item item in World.Items.Values )
				{
					if ( item != null && ( item is ChampionSpawn || ( item is Spawner && RareSpawn( item ) ) ) )
					{
						int x1 = item.X - 20;
						int y1 = item.Y - 20;
						int x2 = item.X + 20;
						int y2 = item.Y + 20;
						foreach ( Network.NetState state in Network.NetState.Instances )
						{
							Mobile from = state.Mobile;
							if ( from != null && !from.Alive )
							{
								if ( from.X > x1 && from.X < x2 && from.Y > y1 && from.Y < y2 )
								{
									if ( Uyari[from] != null && (int)Uyari[from] == 1 )
									{
										Uyari.Remove( from );
										from.MoveToWorld( loc, Map.Felucca );
										BaseCreature.TeleportPets( from, loc, Map.Felucca );
									}
									else
									{
										from.SendMessage(1150, "2 dakika içinde reslenmezseniz SPY olduğunuza karar verilecek ve buradan uzaklaştırılacaksınız..");
										Uyari[from] = 1;
									}
								}
							}
						}	
					}	
				}
			}
			public static bool RareSpawn( Item item )
			{
				Spawner spawner = (Spawner)item;
				if ( spawner == null )
					return false;
				for ( int i = 0; i < spawner.CreaturesName.Count; ++i )
				{
					String ad = ((String)(spawner.CreaturesName[i])).ToLower();
					if ( ad == "nightmare" || ad == "firesteed" || ad == "unicorn" || ad == "kirin" || ad == "silversteed" )
						return true;
				}
				return false;
			}
		}
	}
}
