/// <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 ///Маны нету { } } }
/// <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 ///Маны нету { } } }
/// <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 ///Маны нету { } } }