Server.Mobiles.BaseAI.AITimer.OnTick C# (CSharp) Méthode

OnTick() protected méthode

protected OnTick ( ) : void
Résultat void
			protected override void OnTick()
			{
				if (m_Owner.m_Mobile.Deleted)
				{
					Stop();
					return;
				}
				else if (m_Owner.m_Mobile.Map == null || m_Owner.m_Mobile.Map == Map.Internal)
				{
					m_Owner.Deactivate();
					return;
				}
				else if (m_Owner.m_Mobile.PlayerRangeSensitive)//have to check this in the timer....
				{
					Sector sect = m_Owner.m_Mobile.Map.GetSector(m_Owner.m_Mobile);
					if (!sect.Active)
					{
						m_Owner.Deactivate();
						return;
					}
				}

				m_Owner.m_Mobile.OnThink();

				if (m_Owner.m_Mobile.Deleted)
				{
					Stop();
					return;
				}
				else if (m_Owner.m_Mobile.Map == null || m_Owner.m_Mobile.Map == Map.Internal)
				{
					m_Owner.Deactivate();
					return;
				}

				if (m_Owner.m_Mobile.BardPacified)
				{
					m_Owner.DoBardPacified();
				}
				else if (m_Owner.m_Mobile.BardProvoked)
				{
					m_Owner.DoBardProvoked();
				}
				else
				{
					if (!m_Owner.m_Mobile.Controlled)
					{
						if (!m_Owner.Think())
						{
							Stop();
							return;
						}
					}
					else
					{
						if (!m_Owner.Obey())
						{
							Stop();
							return;
						}
					}
				}

				if (m_Owner.CanDetectHidden && DateTime.Now > m_Owner.m_NextDetectHidden)
				{
					m_Owner.DetectHidden();

					// Not exactly OSI style, approximation.
					int delay = (15000 / m_Owner.m_Mobile.Int);

					if (delay > 60)
						delay = 60;

					int min = delay * (9 / 10); // 13s at 1000 int, 33s at 400 int, 54s at <250 int
					int max = delay * (10 / 9); // 16s at 1000 int, 41s at 400 int, 66s at <250 int

					m_Owner.m_NextDetectHidden = DateTime.Now + TimeSpan.FromSeconds(Utility.RandomMinMax(min, max));
				}
			}
		}
BaseAI.AITimer