Exemplo n.º 1
0
        /// <summary>
        /// Запуск заряженой молнии
        /// </summary>
        public void UseSpall(Map map, Game_Object_In_Call obj, IUnit unit, object property)
        {
            _unit = unit;
            bool upSpell = UnitGenerator.UpPlayerSpell(unit, this);

            if (unit.UnitFrozen == false &&
                !_culdaunBool && LevelCast != 0 &&
                !upSpell && !unit.Silenced &&
                !unit.Hexed &&
                !Paused)
            {
                if (unit.Mana >= ManaCost)
                ///Проверка есть ли мана на каст
                {
                    Speed = unit.AttackSpeed;

                    ///Флаг кулдауна
                    _culdaunBool = true;

                    ///Отнимаем нужное количество
                    unit.Mana -= ManaCost;

                    ///Создаем визуальный объект молния
                    UC_Nature_Wrath arrow = new UC_Nature_Wrath();
                    arrow.ChengAngel(unit.Angel);

                    Bullet bullArrow = new Bullet();
                    bullArrow.GameObject = new Game_Object_In_Call()
                    {
                        EnumCallType = EnumCallType.Bullet,
                        View         = arrow
                    };
                    bullArrow.UnitUsed  = unit;
                    bullArrow.PositionX = unit.PositionX;
                    bullArrow.PositionY = unit.PositionY;
                    bullArrow.Speed     = 0.2;



                    bullArrow.CurrentMap = map;
                    bullArrow.Angel      = unit.Angel;

                    SPB_Item_Maelstrom male = new SPB_Item_Maelstrom(1)
                    {
                        Name = "SP_Nature_Wrath"
                    };
                    bullArrow.Spells.Add(male);

                    bullArrow.TrentDamage = 10;
                    bullArrow.TrentArmor  = 2;
                    bullArrow.LifeTime    = 15;

                    bullArrow.Range       = map.Width * 2;
                    male.HitCount         = 10;
                    male.Multiply         = 30;
                    bullArrow.DemageMagic = 30;

                    ///И его же добавим в масив всех объектов
                    map.GameObjectInCall.Add(bullArrow.GameObject);

                    Canvas.SetLeft(bullArrow.GameObject.View, bullArrow.PositionX * 50);
                    Canvas.SetTop(bullArrow.GameObject.View, bullArrow.PositionY * 50);
                    ///Отображение
                    map.MapCanvas.Children.Add(bullArrow.GameObject.View);

                    bullArrow.UseSpall("SP_Nature_Wrath");

                    ///Таймер кулдауна заклинания
                    _secondTimer = new Storyboard()
                    {
                        Duration = TimeSpan.FromSeconds(Culdaun)
                    };
                    _secondTimer.Completed += _secondTimer_Completed;
                    _secondTimer.Begin();

                    if (Paused)
                    {
                        Pause();
                    }

                    if (StartUseSpell != null)
                    {
                        StartUseSpell(this, null);
                    }

                    UnitGenerator.UpdatePlayerView(unit);
                }
                else
                ///Маны нету
                {
                }
            }
        }
Exemplo n.º 2
0
        private void CreateBullet(EAngel angel, int mode, double speed, Buff buff)
        {
            Bullet bullArrow = new Bullet();

            bullArrow.GameObject = new Game_Object_In_Call()
            {
                EnumCallType = EnumCallType.Bullet,
            };

            ///Создаем визуальный объект стрела
            UC_Sf_Ult arrow = new UC_Sf_Ult();

            arrow.ChengAngel(_unit.Angel);
            bullArrow.GameObject.View = arrow;

            bullArrow.UnitUsed  = _unit;
            bullArrow.PositionX = _unit.PositionX;
            bullArrow.PositionY = _unit.PositionY;
            bullArrow.Speed     = speed;

            if (buff.SoulCount > _damageMagic)
            {
                bullArrow.DemageMagic = buff.SoulCount;
            }
            else
            {
                bullArrow.DemageMagic = _damageMagic;
            }

            //UnitGenerator.MKB_Bush(bullArrow, _unit);
            ///Магический урон зависит от прокача стрел
            //bullArrow.DemageMagic = 5 * (int)property;

            bullArrow.MinusArmor = 3;
            bullArrow.SpeedSlow  = 0.3;

            bullArrow.Mode       = mode;
            bullArrow.CurrentMap = _map;
            bullArrow.Angel      = angel;

            SPB_Item_Maelstrom mel = new SPB_Item_Maelstrom()
            {
                Name = "Fly"
            };

            mel.HitCount    = 10;
            mel.IsSfUlt     = true;
            bullArrow.Range = 3;

            ///Поведение такое же как у стрел боника
            bullArrow.Spells.Add(mel);

            ///И его же добавим в масив всех объектов
            _map.GameObjectInCall.Add(bullArrow.GameObject);

            Canvas.SetLeft(bullArrow.GameObject.View, bullArrow.PositionX * 50);
            Canvas.SetTop(bullArrow.GameObject.View, bullArrow.PositionY * 50);
            ///Отображение
            _map.MapCanvas.Children.Add(bullArrow.GameObject.View);

            bullArrow.UseSpall("Fly");
        }