Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
 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);
         }
     }
 }