Provides information an API regarding interruptable spells.
Example #1
0
        private void OnInterrupter(Obj_AI_Hero sender, DZInterrupter.InterruptableTargetEventArgs args)
        {
            if (Variables.Spells[SpellSlot.R].IsReady() 
                && sender.IsValidTarget(Variables.Spells[SpellSlot.Q].Range) 
                && args.DangerLevel >= DZInterrupter.DangerLevel.High
                && Variables.AssemblyMenu.GetItemValue<bool>("dzaio.champion.orianna.extra.interrupter"))
            {
                switch (
                    Variables.AssemblyMenu.GetItemValue<StringList>("dzaio.champion.orianna.extra.interrupter.mode")
                        .SelectedIndex)
                {
                    case 0:
                        this.BallManager.ProcessCommand(new Command()
                        {
                            SpellCommand = Commands.Q,
                            Where = sender.ServerPosition
                        });

                        var actionDelay =
                            (int)
                                (BallManager.BallPosition.Distance(sender.ServerPosition) /
                                 Variables.Spells[SpellSlot.Q].Speed * 1000f +
                                 Variables.Spells[SpellSlot.Q].Delay * 1000f + Game.Ping / 2f + 100f);

                        Utility.DelayAction.Add(
                            actionDelay, () =>
                            {
                                var enemiesInRange =
                                    BallManager.BallPosition.GetEnemiesInRange(Variables.Spells[SpellSlot.R].Range);

                                if (enemiesInRange.Count >= 1 &&
                                    enemiesInRange.Any(n => n.NetworkId == sender.NetworkId))
                                {
                                    Variables.Spells[SpellSlot.R].Cast();
                                }
                            });
                
                    break;
                    case 1:
                        var ballPosition = BallManager.BallPosition;
                        if (sender.IsValidTarget(Variables.Spells[SpellSlot.R].Range / 2f, true, ballPosition))
                        {
                            var enemiesInRange =
                                    BallManager.BallPosition.GetEnemiesInRange(Variables.Spells[SpellSlot.R].Range);

                            if (enemiesInRange.Count >= 1 &&
                                enemiesInRange.Any(n => n.NetworkId == sender.NetworkId))
                            {
                                Variables.Spells[SpellSlot.R].Cast();
                            }
                        }
                    break;
                }
                

                
            }
        }
Example #2
0
 private void OnInterrupter(Obj_AI_Hero sender, DZInterrupter.InterruptableTargetEventArgs args)
 {
     if (Variables.AssemblyMenu.GetItemValue<bool>("dzaio.champion.trundle.extra.interrupter")
         && ObjectManager.Player.ManaPercent > 20
         && args.DangerLevel > DZInterrupter.DangerLevel.Medium
         && sender.IsValidTarget(Variables.Spells[SpellSlot.E].Range)
         && Variables.Spells[SpellSlot.E].IsReady())
     {
         Variables.Spells[SpellSlot.E].Cast(sender.ServerPosition);
     }
 }
Example #3
0
 private void OnInterrupter(Obj_AI_Hero sender, DZInterrupter.InterruptableTargetEventArgs args)
 {
     if (Variables.AssemblyMenu.GetItemValue<bool>("dzaio.champion.veigar.extra.interrupter")
         && ObjectManager.Player.ManaPercent > 20
         && args.DangerLevel > DZInterrupter.DangerLevel.Medium
         && sender.IsValidTarget(Variables.Spells[SpellSlot.E].Range)
         && Variables.Spells[SpellSlot.E].IsReady())
     {
         Variables.Spells[SpellSlot.E].SPredictionCastRing(sender, 80f, HitChance.Medium);
     }
 }
Example #4
0
 private void OnInterrupter(Obj_AI_Hero sender, DZInterrupter.InterruptableTargetEventArgs args)
 {
     if (Variables.Spells[SpellSlot.R].IsReady() &&
         Variables.AssemblyMenu.GetItemValue<bool>("dzaio.champion.warwick.extra.interruptR") &&
         args.DangerLevel >= DZInterrupter.DangerLevel.High)
     {
         var interruptPosition = sender.ServerPosition;
         if (interruptPosition.IsSafe() && sender.IsValidTarget(Variables.Spells[SpellSlot.R].Range))
         {
             Variables.Spells[SpellSlot.R].CastOnUnit(sender);
         }
     }
 }
Example #5
0
 private void OnInterrupter(Obj_AI_Hero sender, DZInterrupter.InterruptableTargetEventArgs args)
 {
     if (Variables.AssemblyMenu.GetItemValue<bool>("dzaio.champion.bard.extra.interrupter") 
         && Variables.Spells[SpellSlot.Q].IsReady()
         && sender.IsValidTarget()
         && args.DangerLevel >= DZInterrupter.DangerLevel.High)
     {
         HandleQ(sender);
     }
 }
Example #6
0
 private void OnInterrupter(Obj_AI_Hero sender, DZInterrupter.InterruptableTargetEventArgs args)
 {
     
 }
Example #7
0
        private void OnInterrupter(Obj_AI_Hero sender, DZInterrupter.InterruptableTargetEventArgs args)
        {
            if (args.DangerLevel > DZInterrupter.DangerLevel.Medium)
            {
                var qRangeReduction = 0.75f;
                var qJumpRange = 280f;
                var qTickInterval = 500f;


                var target = sender;

                if (target.IsValidTarget(Variables.Spells[SpellSlot.Q].Range*qRangeReduction))
                {
                    //Calculate the dash End Position and update the prediction accordingly
                    var dashEndPos = ObjectManager.Player.GetDashInfo().EndPos;
                    var QPrediction = Variables.Spells[SpellSlot.Q].GetPrediction(target);

                    if (dashEndPos != Vector2.Zero)
                    {
                        Variables.Spells[SpellSlot.Q].UpdateSourcePosition(dashEndPos.To3D());
                        QPrediction = Variables.Spells[SpellSlot.Q].GetPrediction(target);
                        Variables.Spells[SpellSlot.Q].UpdateSourcePosition(ObjectManager.Player.ServerPosition);
                    }

                    if (QPrediction.Hitchance >= HitChance.High && Variables.Spells[SpellSlot.Q].IsKillable(target))
                    {
                        if (IsPlayerNotBusy() && (Environment.TickCount - LastQCastTick >= qTickInterval))
                        {
                            Variables.Spells[SpellSlot.Q].Cast(QPrediction.CastPosition);
                            LastQCastTick = Environment.TickCount;
                        }
                    }
                }
            }
        }