Esempio n. 1
0
		/// <summary>
		/// Method to check the area for heals
		/// </summary>
		/// <param name="guard">The guard object</param>
		public static void CheckAreaForHeals(GameKeepGuard guard)
		{
			GameLiving target = null;
			foreach (GamePlayer player in guard.GetPlayersInRadius(2000))
			{
				if(!player.IsAlive) continue;
				if (GameServer.ServerRules.IsSameRealm(player, guard, true))
				{
					if (player.HealthPercent < 60)
					{
						target = player;
						break;
					}
				}
			}

			if (target == null)
			{
				foreach (GameNPC npc in guard.GetNPCsInRadius(2000))
				{
					if (npc is GameSiegeWeapon) continue;
					if (GameServer.ServerRules.IsSameRealm(npc, guard, true))
					{
						if (npc.HealthPercent < 60)
						{
							target = npc;
							break;
						}
					}
				}
			}

			if (target != null)
			{
				GamePlayer LOSChecker = null;
				if (target is GamePlayer)
				{
					LOSChecker = target as GamePlayer;
				}
				else
				{
					foreach (GamePlayer player in guard.GetPlayersInRadius(WorldMgr.VISIBILITY_DISTANCE))
					{
						LOSChecker = player;
						break;
					}
				}
				if (LOSChecker == null)
					return;
				if(!target.IsAlive) return;
				guard.TargetObject = target;
				LOSChecker.Out.SendCheckLOS(guard, target, new CheckLOSResponse(guard.GuardStartSpellHealCheckLOS));
			}
		}
Esempio n. 2
0
        public static void CheckForNuke(GameKeepGuard guard)
        {
            if (guard == null)
            {
                return;
            }

            GameLiving target = guard.TargetObject as GameLiving;

            if (target == null)
            {
                return;
            }

            if (!target.IsAlive)
            {
                return;
            }

            if (target is GamePlayer && !GameServer.KeepManager.IsEnemy(guard, target as GamePlayer, true))
            {
                return;
            }

            if (!guard.IsWithinRadius(target, WorldMgr.VISIBILITY_DISTANCE))
            {
                guard.TargetObject = null; return;
            }
            GamePlayer LOSChecker = null;

            if (target is GamePlayer)
            {
                LOSChecker = target as GamePlayer;
            }
            else
            {
                foreach (GamePlayer player in guard.GetPlayersInRadius(WorldMgr.VISIBILITY_DISTANCE))
                {
                    LOSChecker = player;
                    break;
                }
            }

            if (LOSChecker == null)
            {
                return;
            }

            LOSChecker.Out.SendCheckLOS(guard, target, new CheckLOSResponse(guard.GuardStartSpellNukeCheckLOS));
        }
Esempio n. 3
0
		public static void CheckForNuke(GameKeepGuard guard)
		{
			if(guard==null) return;
			GameLiving target = guard.TargetObject as GameLiving;
			if(target==null) return;
			if(!target.IsAlive) return;
			if(target is GamePlayer && !GameServer.KeepManager.IsEnemy(guard, target as GamePlayer, true)) return;
            if ( !guard.IsWithinRadius( target, WorldMgr.VISIBILITY_DISTANCE ) ) { guard.TargetObject = null; return; }
			GamePlayer LOSChecker = null;
			if (target is GamePlayer) LOSChecker = target as GamePlayer;
			else
			{
				foreach (GamePlayer player in guard.GetPlayersInRadius(WorldMgr.VISIBILITY_DISTANCE))
				{
					LOSChecker = player;
					break;
				}
			}
			if (LOSChecker == null)	return;
			LOSChecker.Out.SendCheckLOS(guard, target, new CheckLOSResponse(guard.GuardStartSpellNukeCheckLOS));
		}
Esempio n. 4
0
        /// <summary>
        /// Method to check the area for heals
        /// </summary>
        /// <param name="guard">The guard object</param>
        public static void CheckAreaForHeals(GameKeepGuard guard)
        {
            GameLiving target = null;

            foreach (GamePlayer player in guard.GetPlayersInRadius(2000))
            {
                if (!player.IsAlive)
                {
                    continue;
                }
                if (GameServer.ServerRules.IsSameRealm(player, guard, true))
                {
                    if (player.HealthPercent < DOL.GS.ServerProperties.Properties.KEEP_HEAL_THRESHOLD)
                    {
                        target = player;
                        break;
                    }
                }
            }

            if (target == null)
            {
                foreach (GameNPC npc in guard.GetNPCsInRadius(2000))
                {
                    if (npc is GameSiegeWeapon)
                    {
                        continue;
                    }
                    if (GameServer.ServerRules.IsSameRealm(npc, guard, true))
                    {
                        if (npc.HealthPercent < DOL.GS.ServerProperties.Properties.KEEP_HEAL_THRESHOLD)
                        {
                            target = npc;
                            break;
                        }
                    }
                }
            }

            if (target != null)
            {
                GamePlayer LOSChecker = null;
                if (target is GamePlayer)
                {
                    LOSChecker = target as GamePlayer;
                }
                else
                {
                    foreach (GamePlayer player in guard.GetPlayersInRadius(WorldMgr.VISIBILITY_DISTANCE))
                    {
                        LOSChecker = player;
                        break;
                    }
                }
                if (LOSChecker == null)
                {
                    return;
                }
                if (!target.IsAlive)
                {
                    return;
                }
                guard.TargetObject = target;
                LOSChecker.Out.SendCheckLOS(guard, target, new CheckLOSResponse(guard.GuardStartSpellHealCheckLOS));
            }
        }