protected IList SelectTargets() { ArrayList list = new ArrayList(20); foreach (GamePlayer player in WorldMgr.GetPlayersCloseToSpot(CurrentRegionID, GroundTarget.X, GroundTarget.Y, GroundTarget.Z, (ushort)150)) { if (GameServer.ServerRules.IsAllowedToAttack(Owner, player, true)) { list.Add(player); } } foreach (GameNPC npc in WorldMgr.GetNPCsCloseToSpot(CurrentRegionID, GroundTarget.X, GroundTarget.Y, GroundTarget.Z, (ushort)150)) { if (GameServer.ServerRules.IsAllowedToAttack(Owner, npc, true)) { list.Add(npc); } } if (!list.Contains(TargetObject)) { list.Add(TargetObject); } return(list); }
public override void FinishSpellCast(GameLiving target) { if (target == null && Spell.Target.ToLower() != "area") { return; } if (Caster == null) { return; } if (Caster is GamePlayer && Caster.IsStealthed) { (Caster as GamePlayer).Stealth(false); } if (Spell.Target.ToLower() == "area") { // always put archer into combat when using area (volley) Caster.LastAttackTickPvE = Caster.CurrentRegion.Time; Caster.LastAttackTickPvP = Caster.CurrentRegion.Time; foreach (GameLiving npc in WorldMgr.GetNPCsCloseToSpot(Caster.CurrentRegionID, Caster.GroundTarget.X, Caster.GroundTarget.Y, Caster.GroundTarget.Z, (ushort)Spell.Radius)) { if (npc.Realm == 0 || Caster.Realm == 0) { npc.LastAttackedByEnemyTickPvE = npc.CurrentRegion.Time; } } } else { if (target.Realm == 0 || Caster.Realm == 0) { target.LastAttackedByEnemyTickPvE = target.CurrentRegion.Time; Caster.LastAttackTickPvE = Caster.CurrentRegion.Time; } else { target.LastAttackedByEnemyTickPvP = target.CurrentRegion.Time; Caster.LastAttackTickPvP = Caster.CurrentRegion.Time; } } base.FinishSpellCast(target); }
private void getTargets() { foreach (GamePlayer target in WorldMgr.GetPlayersCloseToSpot(region, traparea.X, traparea.Y, traparea.Z, 350)) { if (GameServer.ServerRules.IsAllowedToAttack(owner, target, true)) { DamageTarget(target); } } foreach (GameNPC target in WorldMgr.GetNPCsCloseToSpot(region, traparea.X, traparea.Y, traparea.Z, 350)) { if (GameServer.ServerRules.IsAllowedToAttack(owner, target, true)) { DamageTarget(target); } } }