Exemplo n.º 1
0
        public static void FlameCross(Mobile from)
        {
            if (!CanUse(from))
            {
                return;
            }

            Point3D   point  = from.Location;
            Direction d      = Direction.North;
            int       itemid = 0x3996;
            Map       map    = from.Map;

            for (int i = 0; i < 8; i++)
            {
                switch (i)
                {
                case 1:
                {
                    d      = Direction.Right;
                    itemid = 0;
                }
                break;

                case 2:
                {
                    d      = Direction.East;
                    itemid = 0x398C;
                }
                break;

                case 3:
                {
                    d      = Direction.Down;
                    itemid = 0;
                }
                break;

                case 4:
                {
                    d      = Direction.South;
                    itemid = 0x3996;
                }
                break;

                case 5:
                {
                    d      = Direction.Left;
                    itemid = 0;
                }
                break;

                case 6:
                {
                    d      = Direction.West;
                    itemid = 0x398C;
                }
                break;

                case 7:
                {
                    d      = Direction.Up;
                    itemid = 0;
                }
                break;
                }

                for (int j = 0; j < 16; j++)
                {
                    Ability.IncreaseByDirection(ref point, d);

                    if (from.CanSee(point))
                    {
                        // Damage was 2 on the nightmare which has 30~40% fire res. 4 - 35% = 2.6, close enough for me.
                        if (itemid != 0)
                        {
                            new FireFieldSpell.FireFieldItem(itemid, point, from, from.Map, TimeSpan.FromSeconds(30), 1, 100);
                        }
                        else
                        {
                            new OtherFireFieldItem(0x3996, point, from, from.Map, TimeSpan.FromSeconds(30), 1, 80);
                            new OtherFireFieldItem(0x398C, point, from, from.Map, TimeSpan.FromSeconds(30), 1, 80);
                        }
                    }
                }

                point = from.Location;
            }

            Effects.PlaySound(point, map, 0x44B);
        }