/// <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)); } }
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)); }
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)); }
/// <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)); } }