Exemple #1
0
        /// <summary>
        /// Запуск пули
        /// </summary>
        /// <param name="property">Уровень прокача способности, умножется на 5 и получается магический урон стрелы</param>
        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.Hexed &&
                !Paused)
            {
                if (unit.Mana >= ManaCost)
                ///Проверка есть ли мана на каст
                {
                    //Speed = unit.AttackSpeed;

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

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

                    Culdaun = unit.AttackSpeed * 2;
                    if (Culdaun < StaticVaribl.AttackSpeedRangeMaximum)
                    {
                        Culdaun = StaticVaribl.AttackSpeedRangeMaximum;
                    }


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

                    /// Если есть скади
                    if (UnitGenerator.HasSkadi(unit))
                    {
                        UC_Skadi skadiArrow = new UC_Skadi();
                        skadiArrow.ChengAngel(unit.Angel);
                        bullArrow.GameObject.View = skadiArrow;
                    }
                    else
                    {
                        ///Создаем визуальный объект стрела
                        UC_Sniper_Headshot arrow = new UC_Sniper_Headshot();
                        arrow.ChengAngel(unit.Angel);
                        bullArrow.GameObject.View = arrow;
                    }

                    bullArrow.UnitUsed   = unit;
                    bullArrow.PositionX  = unit.PositionX;
                    bullArrow.PositionY  = unit.PositionY;
                    bullArrow.Speed      = Speed;
                    bullArrow.DemagePhys = unit.Demage;

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

                    int bonusDemagePerBushHit = 5;
                    int chans = 25;

                    if (LevelCast == 1)
                    {
                        bonusDemagePerBushHit = 5;
                        chans = 25;
                    }
                    else if (LevelCast == 2)
                    {
                        bonusDemagePerBushHit = 10;
                        chans = 30;
                    }
                    else if (LevelCast == 3)
                    {
                        bonusDemagePerBushHit = 15;
                        chans = 35;
                    }

                    ///Мкб микробаши не стакаются со снайперовыми
                    Random rand = new Random((int)DateTime.Now.Ticks);
                    if (chans > rand.Next(0, 100))
                    {
                        bullArrow.StunDuration = 1;
                        bullArrow.DemagePhys  += bonusDemagePerBushHit;
                    }

                    bullArrow.CurrentMap = map;
                    bullArrow.Angel      = unit.Angel;
                    bullArrow.Range      = _unit.Range;
                    ///Поведение такое же как у стрел боника
                    bullArrow.Spells.Add(new SPB_FireArrow()
                    {
                        Name = "Fly"
                    });

                    ///И его же добавим в масив всех объектов
                    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");

                    ///Таймер кулдауна заклинания
                    _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
                ///Маны нету
                {
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Запуск пули
        /// </summary>
        /// <param name="property">Уровень прокача способности, умножется на 5 и получается магический урон стрелы</param>
        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.Hexed &&
                !Paused)
            {
                if (unit.Mana >= ManaCost)
                ///Проверка есть ли мана на каст
                {
                    //Speed = unit.AttackSpeed;

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

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

                    Culdaun = unit.AttackSpeed * 2;
                    if (Culdaun < StaticVaribl.AttackSpeedRangeMaximum)
                    {
                        Culdaun = StaticVaribl.AttackSpeedRangeMaximum;
                    }

                    Bullet bullArrow = new Bullet();

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

                    /// Если есть скади
                    if (UnitGenerator.HasSkadi(unit))
                    {
                        UC_Skadi skadiArrow = new UC_Skadi();
                        skadiArrow.ChengAngel(unit.Angel);
                        bullArrow.GameObject.View = skadiArrow;
                    }
                    else
                    {
                        ///Создаем визуальный объект стрела
                        UC_Sf_Bullet arrow = new UC_Sf_Bullet();
                        arrow.ChengAngel(unit.Angel);
                        bullArrow.GameObject.View = arrow;
                    }


                    bullArrow.UnitUsed   = unit;
                    bullArrow.PositionX  = unit.PositionX;
                    bullArrow.PositionY  = unit.PositionY;
                    bullArrow.Speed      = Speed;
                    bullArrow.DemagePhys = unit.Demage;

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


                    #region SoulCount
                    Buff buff = _unit.Buffs.FirstOrDefault(p => p.Name == "SoulCount");
                    if (buff == null)
                    {
                        buff = new Buff()
                        {
                            Passive  = true,
                            Duration = LevelCast,
                            Name     = "SoulCount"
                        };
                        _unit.Buffs.Add(buff);
                    }
                    bullArrow.DemagePhys += buff.SoulCount;
                    #endregion

                    if (LevelCast == 1)
                    {
                        buff.MaxSoulCount    = 12;
                        bullArrow.MinusArmor = 1;
                    }
                    else if (LevelCast == 2)
                    {
                        buff.MaxSoulCount    = 20;
                        bullArrow.MinusArmor = 2;
                    }
                    else if (LevelCast == 3)
                    {
                        buff.MaxSoulCount    = 32;
                        bullArrow.MinusArmor = 3;
                    }

                    bullArrow.CurrentMap = map;
                    bullArrow.Angel      = unit.Angel;
                    bullArrow.Range      = _unit.Range;
                    ///Поведение такое же как у стрел боника
                    bullArrow.Spells.Add(new SPB_FireArrow()
                    {
                        Name = "Fly"
                    });

                    ///И его же добавим в масив всех объектов
                    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");

                    ///Таймер кулдауна заклинания
                    _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
                ///Маны нету
                {
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// Запуск стрелы
        /// </summary>
        /// <param name="property">Уровень прокача способности, умножется на 5 и получается магический урон стрелы</param>
        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.Hexed &&
                !Paused)
            {
                if (unit.Mana >= ManaCost)
                ///Проверка есть ли мана на каст
                {
                    Speed = unit.AttackSpeed;

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


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

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

                        /// Если есть скади
                        if (UnitGenerator.HasSkadi(unit))
                        {
                            UC_Skadi skadiArrow = new UC_Skadi();
                            skadiArrow.ChengAngel(unit.Angel);
                            bullArrow.GameObject.View = skadiArrow;
                        }
                        else
                        {
                            ///Создаем визуальный объект стрела
                            UC_Jinx_Zap arrow = new UC_Jinx_Zap();
                            arrow.ChengAngel(unit.Angel);
                            bullArrow.GameObject.View = arrow;
                        }



                        bullArrow.UnitUsed   = unit;
                        bullArrow.PositionX  = unit.PositionX;
                        bullArrow.PositionY  = unit.PositionY;
                        bullArrow.Speed      = Speed / 2;
                        bullArrow.DemagePhys = unit.Demage;
                        bullArrow.Name       = "SP_Jinx_Zap";
                        ///Магический урон зависит от прокача стрел
                        //bullArrow.DemageMagic = 5 * (int)property;

                        if (LevelCast == 1)
                        {
                            bullArrow.DemagePhys += 5;
                            bullArrow.SpeedSlow   = 0.05;
                        }
                        else if (LevelCast == 2)
                        {
                            bullArrow.DemagePhys += 10;
                            bullArrow.SpeedSlow   = 0.15;
                        }
                        else if (LevelCast == 3)
                        {
                            bullArrow.DemagePhys += 15;
                            bullArrow.SpeedSlow   = 0.2;
                        }
                        bullArrow.DemagePhys += BonusDemage;

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

                        UnitGenerator.MKB_Bush(bullArrow, unit);


                        bullArrow.Spells.Add(new SPB_Jakiro_Liquid_Fire()
                        {
                            Name = "Fly"
                        });

                        ///И его же добавим в масив всех объектов
                        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");
                    }
                    else
                    {
                        ///Создаем визуальный объект стрела
                        UC_Jinx_Zap_Roket arrow = new UC_Jinx_Zap_Roket();
                        arrow.ChengAngelArrow(_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       = Speed / 2;
                        bullArrow.DemageMagic = unit.Demage;
                        bullArrow.Name        = "Jinx_Zap_Roket";
                        ///Магический урон зависит от прокача стрел
                        //bullArrow.DemageMagic = 5 * (int)property;

                        if (LevelCast == 1)
                        {
                            bullArrow.DemageMagic += 5;
                        }
                        else if (LevelCast == 2)
                        {
                            bullArrow.DemageMagic += 10;
                        }
                        else if (LevelCast == 3)
                        {
                            bullArrow.DemageMagic += 15;
                        }

                        bullArrow.Splash       = Splash;
                        bullArrow.DemageMagic += BonusDemage;

                        bullArrow.CurrentMap = map;
                        bullArrow.Angel      = unit.Angel;
                        bullArrow.Range      = _unit.Range + BonusRange;

                        UnitGenerator.MKB_Bush(bullArrow, unit);

                        bullArrow.Spells.Add(new SPB_Jinx_Zap_Roket()
                        {
                            Name = "Fly"
                        });

                        ///И его же добавим в масив всех объектов
                        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");
                    }
                    ///Таймер кулдауна заклинания
                    _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
                ///Маны нету
                {
                }
            }
        }