示例#1
0
        private static void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.LSIsValidTarget(3000) || sender.Team != ObjectManager.Player.Team || sender is AIHeroClient ||
                !Utility.IsAutoAttack(args.SData.Name) || !(args.Target is Obj_AI_Base) ||
                sender.Type == GameObjectType.obj_AI_Turret)
            {
                return;
            }

            var target = (Obj_AI_Base)args.Target;

            if (ActiveAttacks.ContainsKey(sender.NetworkId))
            {
                ActiveAttacks.Remove(sender.NetworkId);
            }

            var attackData = new PredictedDamage(
                sender,
                target,
                Utils.TickCount,
                sender.AttackCastDelay * 1000f,
                sender.AttackDelay * 1000f,
                sender.IsMelee() ? float.MaxValue : args.SData.MissileSpeed,
                sender.GetAutoAttackDamage(target) - 1);

            ActiveAttacks.Add(sender.NetworkId, attackData);
        }
示例#2
0
        private static void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (args.SData == null)
            {
                return;
            }
            var targed = args.Target as Obj_AI_Base;

            if (targed != null)
            {
                if (targed.Type == GameObjectType.AIHeroClient && targed.Team != sender.Team && sender.IsMelee)
                {
                    IncomingDamageList.Add(new UnitIncomingDamage
                    {
                        Damage          = DamageLibrary.GetSpellDamage((AIHeroClient)sender, (AIHeroClient)targed, Extensions.GetSpellSlotFromName((AIHeroClient)args.Target, args.SData.Name)),
                        TargetNetworkId = args.Target.NetworkId,
                        Time            = Game.Time,
                        Skillshot       = false
                    });
                }
                if (sender.Team != ObjectManager.Player.Team || !sender.IsValidTarget(3000) ||
                    !EloBuddy.SDK.Constants.AutoAttacks.IsAutoAttack(args.SData.Name) || !(args.Target is Obj_AI_Base))
                {
                    return;
                }
                var target = (Obj_AI_Base)args.Target;
                ActiveAttacks.Remove(sender.NetworkId);

                var attackData = new PredictedDamage(
                    sender,
                    target,
                    GameTimeTickCount - Game.Ping / 2,
                    sender.AttackCastDelay * 1000,
                    sender.AttackDelay * 1000 - (sender is Obj_AI_Turret ? 70 : 0),
                    sender.IsMelee ? int.MaxValue : (int)args.SData.MissileSpeed,
                    sender.GetAutoAttackDamage(target, true));
                ActiveAttacks.Add(sender.NetworkId, attackData);
            }
            else
            {
                foreach (
                    var champion in
                    ChampionList.Where(
                        champion =>
                        !champion.IsDead && champion.IsVisible && champion.Team != sender.Team &&
                        champion.Distance(sender) < 2000))
                {
                    if (CanHitSkillShot(champion, args))
                    {
                        IncomingDamageList.Add(new UnitIncomingDamage
                        {
                            Damage          = DamageLibrary.GetSpellDamage((AIHeroClient)sender, (AIHeroClient)targed, Extensions.GetSpellSlotFromName((AIHeroClient)champion, args.SData.Name)),
                            TargetNetworkId = champion.NetworkId,
                            Time            = Game.Time,
                            Skillshot       = true
                        });
                    }
                }
            }
        }
示例#3
0
            /// <summary>
            /// Fired when the game processes a spell cast.
            /// </summary>
            /// <param name="sender">The sender.</param>
            /// <param name="args">The <see cref="GameObjectProcessSpellCastEventArgs"/> instance containing the event data.</param>
            private static void ObjAiBaseOnOnProcessSpellCast(
                Obj_AI_Base sender,
                GameObjectProcessSpellCastEventArgs args)
            {
                if (!sender.IsValidTarget(3000, false) || sender.Team != ObjectManager.Player.Team ||
                    sender is AIHeroClient || !(args.Target is Obj_AI_Base))
                {
                    return;
                }

                var target = (Obj_AI_Base)args.Target;

                ActiveAttacks.Remove(sender.NetworkId);

                var attackData = new PredictedDamage(
                    sender,
                    target,
                    Helper.GameTimeTickCount - Game.Ping / 2,
                    sender.AttackCastDelay * 1000,
                    sender.AttackDelay * 1000 - (sender is Obj_AI_Turret ? 70 : 0),
                    sender.IsMelee ? int.MaxValue : (int)args.SData.MissileSpeed,
                    (float)sender.GetAutoAttackDamage(target, true));

                ActiveAttacks.Add(sender.NetworkId, attackData);
            }
示例#4
0
        private static void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (sender.Team != ObjectManager.Player.Team || !sender.IsValidTarget(3000) || !args.SData.IsAutoAttack() || !(args.Target is Obj_AI_Base))
            {
                return;
            }

            var target = (Obj_AI_Base)args.Target;

            ActiveAttacks.Remove(sender.NetworkId);

            var attackData = new PredictedDamage(sender, target, Game.TicksPerSecond - Game.Ping / 2, sender.AttackCastDelay * 1000,
                                                 sender.AttackDelay * 1000 - (sender is Obj_AI_Turret ? 70 : 0), sender.IsMelee ? int.MaxValue : (int)args.SData.MissileSpeed,
                                                 sender.GetAutoAttackDamage(target, true));

            ActiveAttacks.Add(sender.NetworkId, attackData);
        }
示例#5
0
        /// <summary>
        ///     Process Spell Cast subscribed event function.
        /// </summary>
        /// <param name="sender"><see cref="Obj_AI_Base" /> sender</param>
        /// <param name="args">Processed Spell Cast Data</param>
        private static void ObjAiBaseOnOnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsValidTarget(3000, false) || sender.Team != ObjectManager.Player.Team || sender is Obj_AI_Hero ||
                !args.SData.ConsideredAsAutoAttack || !(args.Target is Obj_AI_Base))
            {
                return;
            }

            var target = (Obj_AI_Base)args.Target;

            ActiveAttacks.Remove(sender.NetworkId);

            var attackData = new PredictedDamage(
                sender, target, Variables.TickCount - Game.Ping / 2, sender.AttackCastDelay * 1000,
                sender.AttackDelay * 1000 - (sender is Obj_AI_Turret ? 70 : 0),
                sender.CombatType == GameObjectCombatType.Melee ? int.MaxValue : (int)args.SData.MissileSpeed,
                sender.TotalAttackDamage);

            ActiveAttacks.Add(sender.NetworkId, attackData);
        }
示例#6
0
        private static void ObjAiBaseOnOnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (sender.IsValidTarget(3000, false) && sender.Team == ObjectManager.Player.Team &&
                !(sender is Obj_AI_Hero))
            {
                if (Orbwalking.IsAutoAttack(args.SData.Name))
                {
                    if (args.Target is Obj_AI_Base)
                    {
                        var target = (Obj_AI_Base)args.Target;
                        ActiveAttacks.Remove(sender.NetworkId);

                        var attackData = new PredictedDamage(
                            sender, target, Environment.TickCount - Game.Ping / 2, sender.AttackCastDelay * 1000,
                            sender.AttackDelay * 1000 - (sender is Obj_AI_Turret ? 70 : 0), sender.IsMelee() ? int.MaxValue : (int)args.SData.MissileSpeed,
                            (float)sender.GetAutoAttackDamage(target, true));
                        ActiveAttacks.Add(sender.NetworkId, attackData);
                    }
                }
            }
        }
示例#7
0
        private static void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsValidTarget(3000, false) || sender.Team != ObjectManager.Player.Team || sender is Obj_AI_Hero || !Orbwalking.Utility.IsAutoAttack(args.SData.Name) || !(args.Target is Obj_AI_Base))
            {
                return;
            }

            var target = (Obj_AI_Base)args.Target;

            ActiveAttacks.Remove(sender.NetworkId);

            var attackData = new PredictedDamage(
                sender,
                target,
                Utils.TickCount - Game.Ping / 2,
                sender.AttackCastDelay * 1000f,
                sender.AttackDelay * 1000f,
                sender.IsMelee() ? int.MaxValue : (int)args.SData.MissileSpeed,
                (float)sender.GetAutoAttackDamage(target, false));

            ActiveAttacks.Add(sender.NetworkId, attackData);
        }
示例#8
0
        /// <summary>
        /// Fired when the game processes a spell cast.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="AIBaseClientProcessSpellCastEventArgs"/> instance containing the event data.</param>
        private static void ObjAiBaseOnOnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
        {
            if (sender.Team != ObjectManager.Player.Team || !sender.IsValidTarget(3000, false) || !Orbwalking.IsAutoAttack(args.SData.Name) || !(args.Target is AIBaseClient))
            {
                return;
            }

            var target = (AIBaseClient)args.Target;

            ActiveAttacks.Remove((uint)sender.NetworkId);

            var attackData = new PredictedDamage(
                sender,
                target,
                sender.Position,
                Variables.GameTimeTickCount - Game.Ping / 2,
                sender.AttackCastDelay * 1000,
                sender.AttackDelay * 1000 - (sender is AITurretClient ? 70 : 0),
                sender.IsMelee ? int.MaxValue : (int)args.SData.MissileSpeed,
                (float)sender.GetAutoAttackDamage(target));

            ActiveAttacks.Add((uint)sender.NetworkId, attackData);
        }
        private static void ObjAiBaseOnOnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsValidTarget(3000, false) || sender.Team != ObjectManager.Player.Team || sender is Obj_AI_Hero
                || !Orbwalking.IsAutoAttack(args.SData.Name) || !(args.Target is Obj_AI_Base))
            {
                return;
            }

            var target = (Obj_AI_Base)args.Target;
            ActiveAttacks.Remove(sender.NetworkId);

            var attackData = new PredictedDamage(
                sender,
                target,
                Utils.GameTimeTickCount - Game.Ping / 2,
                sender.AttackCastDelay * 1000,
                sender.AttackDelay * 1000 - (sender is Obj_AI_Turret ? 70 : 0),
                sender.IsMelee() ? int.MaxValue : (int)args.SData.MissileSpeed,
                (float)sender.GetAutoAttackDamage(target, true));
            ActiveAttacks.Add(sender.NetworkId, attackData);
        }
示例#10
0
        /// <summary>
        /// Fired when the game processes a spell cast.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="GameObjectProcessSpellCastEventArgs"/> instance containing the event data.</param>
        private static void ObjAiBaseOnOnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsValid || sender.Distance(ObjectManager.Player) > 3000 ||
                sender.Team != ObjectManager.Player.Team || sender is AIHeroClient
                || args.SData.IsAutoAttack() || !(args.Target is Obj_AI_Base))
            {
                return;
            }

            var target = (Obj_AI_Base)args.Target;
            ActiveAttacks.Remove(sender.NetworkId);

            var attackData = new PredictedDamage(
                sender,
                target,
                Environment.TickCount - Game.Ping / 2,
                sender.AttackCastDelay * 1000,
                sender.AttackDelay * 1000 - (sender is Obj_AI_Turret ? 70 : 0),
                sender.IsMelee ? int.MaxValue : (int)args.SData.MissileSpeed,
                (float)sender.GetAutoAttackDamage(target, true));
            ActiveAttacks.Add(sender.NetworkId, attackData);
        }
示例#11
0
        private static void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsValidTarget(3000, false) || sender.Team != ObjectManager.Player.Team || sender is Obj_AI_Hero || !Orbwalking.Utility.IsAutoAttack(args.SData.Name) || !(args.Target is Obj_AI_Base) || sender.Type == GameObjectType.obj_AI_Turret)
                return;

            var target = (Obj_AI_Base)args.Target;
            if(ActiveAttacks.ContainsKey(sender.NetworkId))
                ActiveAttacks.Remove(sender.NetworkId);

            var attackData = new PredictedDamage(
                sender,
                target,
                Utils.TickCount,
                sender.AttackCastDelay * 1000f,
                sender.AttackDelay * 1000f,
                sender.IsMelee() ? float.MaxValue : args.SData.MissileSpeed,
                (float)sender.GetAutoAttackDamage(target) - 1);
            ActiveAttacks.Add(sender.NetworkId, attackData);
        }
        private static void ObjAiBaseOnOnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (sender.IsValidTarget(3000, false) && sender.Team == ObjectManager.Player.Team &&
                !(sender is Obj_AI_Hero))
            {
                if (Orbwalking.IsAutoAttack(args.SData.Name))
                {
                    if (args.Target is Obj_AI_Base)
                    {
                        var target = (Obj_AI_Base) args.Target;
                        ActiveAttacks.Remove(sender.NetworkId);

                        var attackData = new PredictedDamage(
                            sender, target, Environment.TickCount - Game.Ping / 2, sender.AttackCastDelay * 1000,
                            sender.AttackDelay * 1000 - (sender is Obj_AI_Turret ? 70 : 0), sender.IsMelee() ? int.MaxValue : (int) args.SData.MissileSpeed,
                            (float) CalcMinionToMinionDmg(sender, target));
                        ActiveAttacks.Add(sender.NetworkId, attackData);
                    }
                }
            }
        }
示例#13
0
        private static void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (args.SData == null)
            {
                return;
            }
            var targed = args.Target as Obj_AI_Base;

            if (targed != null)
            {
                if (targed.Type == GameObjectType.AIHeroClient && targed.Team != sender.Team && sender.IsMelee)
                {
                    IncomingDamageList.Add(new UnitIncomingDamage
                    {
                        Damage = DamageLibrary.GetSpellDamage((AIHeroClient)sender, (AIHeroClient)targed, Extensions.GetSpellSlotFromName((AIHeroClient)args.Target, args.SData.Name)),
                        TargetNetworkId = args.Target.NetworkId,
                        Time = Game.Time,
                        Skillshot = false
                    });
                }
                if (sender.Team != ObjectManager.Player.Team || !sender.IsValidTarget(3000) ||
                !EloBuddy.SDK.Constants.AutoAttacks.IsAutoAttack(args.SData.Name) || !(args.Target is Obj_AI_Base))
                {
                    return;
                }
                var target = (Obj_AI_Base)args.Target;
                ActiveAttacks.Remove(sender.NetworkId);

                var attackData = new PredictedDamage(
                    sender,
                    target,
                    GameTimeTickCount - Game.Ping / 2,
                    sender.AttackCastDelay * 1000,
                    sender.AttackDelay * 1000 - (sender is Obj_AI_Turret ? 70 : 0),
                    sender.IsMelee ? int.MaxValue : (int)args.SData.MissileSpeed,
                    sender.GetAutoAttackDamage(target, true));
                ActiveAttacks.Add(sender.NetworkId, attackData);
            }
            else
            {
                foreach (
                    var champion in
                        ChampionList.Where(
                            champion =>
                                !champion.IsDead && champion.IsVisible && champion.Team != sender.Team &&
                                champion.Distance(sender) < 2000))
                {
                    if (CanHitSkillShot(champion, args))
                    {
                        IncomingDamageList.Add(new UnitIncomingDamage
                        {
                            Damage = DamageLibrary.GetSpellDamage((AIHeroClient)sender, (AIHeroClient)targed, Extensions.GetSpellSlotFromName((AIHeroClient)champion, args.SData.Name)),
                            TargetNetworkId = champion.NetworkId,
                            Time = Game.Time,
                            Skillshot = true
                        });
                    }
                }
            }
        }
示例#14
0
        /// <summary>
        ///     Process Spell Cast subscribed event function.
        /// </summary>
        /// <param name="sender"><see cref="Obj_AI_Base" /> sender</param>
        /// <param name="args">Processed Spell Cast Data</param>
        private static void OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsValidTarget(3000, false) || sender.Team != GameObjects.Player.Team || sender is Obj_AI_Hero
                || !args.SData.ConsideredAsAutoAttack || !(args.Target is Obj_AI_Base))
            {
                return;
            }

            var target = (Obj_AI_Base)args.Target;
            ActiveAttacks.Remove(sender.NetworkId);

            var attackData = new PredictedDamage(
                sender, 
                target, 
                Variables.TickCount - Game.Ping / 2, 
                sender.AttackCastDelay * 1000, 
                sender.AttackDelay * 1000 - (sender is Obj_AI_Turret ? 70 : 0), 
                sender.CombatType == GameObjectCombatType.Melee ? int.MaxValue : (int)args.SData.MissileSpeed, 
                sender.TotalAttackDamage);

            ActiveAttacks.Add(sender.NetworkId, attackData);
        }