Пример #1
0
        public void SpawnEel(Mobile m)
        {
            Map map = this.Map;

            int x = m.X; int y = m.Y; int z = m.Z;

            Point3D loc = m.Location;

            for (int j = 0; j < 3; j++)
            {
                for (int i = 0; i < 25; i++)
                {
                    x = Utility.RandomMinMax(loc.X - 1, loc.X + 1);
                    y = Utility.RandomMinMax(loc.Y - 1, loc.Y + 1);

                    if (Spells.SpellHelper.CheckMulti(new Point3D(x, y, m.Z), map) || map.CanSpawnMobile(x, y, z))
                    {
                        ParasiticEel eel = new ParasiticEel(this);
                        eel.MoveToWorld(new Point3D(x, y, loc.Z), map);

                        if (m is PlayerMobile)
                        {
                            eel.Combatant = m;
                        }

                        break;
                    }
                }
            }

            m_NextSpawn = DateTime.UtcNow + SpawnRate;
        }
        public void SpawnEel()
        {
            Map map = this.Map;

            List <Mobile> list = new List <Mobile>();

            IPooledEnumerable eable = this.GetMobilesInRange(12);

            foreach (Mobile mob in eable)
            {
                if (!CanBeHarmful(mob, false) || mob == this || (mob is BaseCreature && ((BaseCreature)mob).GetMaster() == this))
                {
                    continue;
                }
                if (mob.Player)
                {
                    list.Add(mob);
                }
                if (mob is BaseCreature && (((BaseCreature)mob).Controlled || ((BaseCreature)mob).Summoned || ((BaseCreature)mob).Team != this.Team))
                {
                    list.Add(mob);
                }
            }
            eable.Free();

            if (list.Count == 0)
            {
                return;
            }

            Mobile spawn = list[Utility.Random(list.Count)];

            int x = spawn.X; int y = spawn.Y; int z = spawn.Z;

            Point3D loc = spawn.Location;

            for (int i = 0; i < 25; i++)
            {
                x = Utility.RandomMinMax(loc.X - 1, loc.X + 1);
                y = Utility.RandomMinMax(loc.Y - 1, loc.Y + 1);

                if (Spells.SpellHelper.CheckMulti(new Point3D(x, y, spawn.Z), map) || map.CanSpawnMobile(x, y, z))
                {
                    ParasiticEel eel = new ParasiticEel(this);
                    eel.MoveToWorld(new Point3D(x, y, loc.Z), map);

                    if (spawn is PlayerMobile)
                    {
                        eel.Combatant = spawn;
                    }

                    m_NextSpawn = DateTime.UtcNow + SpawnRate;
                    return;
                }
            }
        }
Пример #3
0
        public void SpawnEel(Mobile m)
        {
            Map map = this.Map;

            int x = m.X; int y = m.Y; int z = m.Z;

            Point3D loc = m.Location;

            for (int j = 0; j < 3; j++)
            {
                for (int i = 0; i < 25; i++)
                {
                    x = Utility.RandomMinMax(loc.X - 1, loc.X + 1);
                    y = Utility.RandomMinMax(loc.Y - 1, loc.Y + 1);

                    if (Spells.SpellHelper.CheckMulti(new Point3D(x, y, m.Z), map) || map.CanSpawnMobile(x, y, z))
                    {
                        ParasiticEel eel = new ParasiticEel(this);
                        eel.MoveToWorld(new Point3D(x, y, loc.Z), map);

                        if (m is PlayerMobile)
                            eel.Combatant = m;

                        break;
                    }
                }
            }

            m_NextSpawn = DateTime.UtcNow + SpawnRate;
        }