private static void ObjMissileClientOnCreate(GameObject sender, EventArgs args)
 {
     if (!sender.IsValid<MissileClient>())
     {
         return;
     }
     var missile = (MissileClient) sender;
     if (!missile.SpellCaster.IsValid<Obj_AI_Hero>() || missile.SpellCaster.Team == ObjectManager.Player.Team)
     {
         return;
     }
     var unit = (Obj_AI_Hero) missile.SpellCaster;
     var spellData = SpellDatabase.GetByMissileName(missile.SData.Name);
     if (spellData == null)
     {
         return;
     }
     var missilePosition = missile.Position.To2D();
     var unitPosition = missile.StartPosition.To2D();
     var endPos = missile.EndPosition.To2D();
     var direction = (endPos - unitPosition).Normalized();
     if (unitPosition.Distance(endPos) > spellData.Range || spellData.FixedRange)
     {
         endPos = unitPosition + direction * spellData.Range;
     }
     if (spellData.ExtraRange != -1)
     {
         endPos = endPos +
                  Math.Min(spellData.ExtraRange, spellData.Range - endPos.Distance(unitPosition)) * direction;
     }
     var castTime = Utils.GameTimeTickCount - Game.Ping / 2 - (spellData.MissileDelayed ? 0 : spellData.Delay) -
                    (int) (1000 * missilePosition.Distance(unitPosition) / spellData.MissileSpeed);
     TriggerOnDetectSkillshot(DetectionType.RecvPacket, spellData, castTime, unitPosition, endPos, unit);
 }
示例#2
0
文件: Fizz.cs 项目: aikoy/ezEvade
        private static void OnCreateObj_FizzMarinerDoom(GameObject obj, EventArgs args, SpellData spellData)
        {
            if (!obj.IsValid<MissileClient>())
                return;

            MissileClient missile = (MissileClient)obj;

            if (missile.SpellCaster != null && missile.SpellCaster.Team != ObjectManager.Player.Team &&
                missile.SData.Name == "FizzMarinerDoomMissile")
            {
                SpellDetector.CreateSpellData(missile.SpellCaster, missile.StartPosition, missile.EndPosition,
                spellData, null, 500, true, SpellType.Circular, false, spellData.secondaryRadius);

                /*foreach (KeyValuePair<int, Spell> entry in SpellDetector.spells)
                {
                    var spell = entry.Value;

                    if (spell.info.spellName == "FizzMarinerDoom" &&
                        spell.spellObject != null && spell.spellObject.NetworkId == missile.NetworkId)
                    {
                        if (spell.spellType == SpellType.Circular)
                        {                            
                            spell.spellObject = null;
                        }
                    }
                }*/
            }
        }
示例#3
0
        private void RangeAttackOnCreate(GameObject sender, EventArgs args)
        {
            if (!sender.IsValid<Obj_SpellMissile>())
            {
                return;
            }

            var missile = (Obj_SpellMissile) sender;

            // Caster ally hero / not me
            if (!missile.SpellCaster.IsValid<Obj_AI_Hero>() || !missile.SpellCaster.IsAlly || missile.SpellCaster.IsMe ||
                missile.SpellCaster.IsMelee())
            {
                return;
            }

            // Target enemy hero
            if (!missile.Target.IsValid<Obj_AI_Hero>() || !missile.Target.IsEnemy)
            {
                return;
            }

            var caster = (Obj_AI_Hero) missile.SpellCaster;

            if (E.IsReady() && E.IsInRange(missile.SpellCaster) && ConfigValue<bool>("Misc.E.AA." + caster.ChampionName))
            {
                E.Cast(caster); // add delay
            }
        }
示例#4
0
文件: Gametroys.cs 项目: CONANLXF/AIO
        static void GameObject_OnCreate(GameObject obj, EventArgs args)
        {
            if (obj.IsValid<MissileClient>())
                return;

            foreach (var troy in Gametroy.Objects)
            {
                if (obj.Name.Contains(troy.Name) && obj.IsValid<GameObject>())
                {
                    troy.Obj = obj;
                    troy.Start = Utils.GameTimeTickCount;

                    if (!troy.Included)
                         troy.Included = Essentials.HeroInGame(troy.Owner);
                }
            }
        }
示例#5
0
 private void OnObjCreate(GameObject sender, System.EventArgs args)
 {
     if (sender.IsValid<Obj_AI_Minion>() 
         && sender.IsAlly 
         && sender.Name.Equals("ThreshLantern", StringComparison.OrdinalIgnoreCase))
     {
         LanternObject = sender;
     }
 }
示例#6
0
        /// <summary>
        ///     Handles the OnCreate event of the GameObject class.
        /// </summary>
        /// <param name="sender">
        ///     The sender.
        /// </param>
        /// <param name="args">
        ///     The <see cref="EventArgs" /> instance containing the event data.
        /// </param>
        private static void GameObject_OnCreate(GameObject sender, EventArgs args)
        {
            if (!sender.IsAlly || !sender.IsValid<Obj_AI_Base>())
            {
                return;
            }

            var obj = (Obj_AI_Base)sender;

            if (obj.CharData.BaseSkinName.Equals("syndrasphere"))
            {
                Orbs.Add(obj);
            }
        }
示例#7
0
        static void GameObject_OnCreate(GameObject obj, EventArgs args)
        {
            foreach (var troy in Troy.Troys)
            {
                if (obj.Name.Contains(troy.Name) && obj.IsValid<GameObject>())
                {
                    troy.Obj = obj;
                    troy.Start = Utils.GameTimeTickCount;

                    if (!troy.Included)
                         troy.Included = true;
                }
            }
        }
示例#8
0
        private void SpellMissile_OnCreate(GameObject obj, EventArgs args)
        {
            if (!obj.IsValid<Obj_SpellMissile>())
                return;

            Obj_SpellMissile missile = (Obj_SpellMissile)obj;
            SpellData spellData;

            if (missile.SpellCaster != null && missile.SpellCaster.Team != myHero.Team &&
                missile.SData.Name != null && onMissileSpells.TryGetValue(missile.SData.Name, out spellData)
                && missile.StartPosition != null && missile.EndPosition != null)
            {
                if (missile.StartPosition.Distance(myHero.Position) < spellData.range + 1000)
                {
                    var hero = missile.SpellCaster;

                    if (hero.IsVisible)
                    {
                        if (spellData.usePackets)
                        {
                            CreateSpellData(hero, missile.StartPosition, missile.EndPosition, spellData, obj);
                            return;
                        }


                        foreach (KeyValuePair<int, Spell> entry in spells)
                        {
                            Spell spell = entry.Value;

                            if (spell.info.missileName == missile.SData.Name
                                && spell.heroID == missile.SpellCaster.NetworkId)
                            {
                                if (spell.info.isThreeWay == false && spell.info.isSpecial == false)
                                {
                                    spell.spellObject = obj;
                                    //Game.PrintChat("aquired: " + (obj.Position.To2D().Distance(spell.startPos)));
                                }
                            }
                        }
                    }
                    else
                    {
                        if (Evade.menu.SubMenu("Main").Item("DodgeFOWSpells").GetValue<bool>())
                        {
                            CreateSpellData(hero, missile.StartPosition, missile.EndPosition, spellData, obj);
                        }
                    }
                }
            }
        }
示例#9
0
        private void SpellMissile_OnCreateOld(GameObject sender, EventArgs args)
        {
            if (sender.IsEnemy || sender.Type != GameObjectType.MissileClient || !sender.IsValid<MissileClient>())
                return;

            MissileClient missile = (MissileClient)sender;

            if (missile.SData.Name != null)
            {
                if (missile.SData.Name == MissileName || missile.SData.Name == MissileReturnName)
                {
                    Missile = missile;
                }
            }
        }
示例#10
0
        private void Obj_SpellMissile_OnDelete(GameObject sender, EventArgs args)
        {
            if (sender.IsEnemy || sender.Type != GameObjectType.MissileClient || !sender.IsValid<MissileClient>())
                return;

            MissileClient missile = (MissileClient)sender;

            if ( missile.SData.Name != null)
            {
                if(missile.SData.Name == "AhriOrbReturn")
                    QMissile = null;
                if (missile.SData.Name == "AhriSeduceMissile")
                    EMissile = null;
            }
        }
示例#11
0
文件: Fizz.cs 项目: aikoy/ezEvade
        private static void OnDeleteObj_FizzMarinerDoom(GameObject obj, EventArgs args, SpellData spellData)
        {
            //need to track where bait is attached to

            if (!obj.IsValid<MissileClient>())
                return;

            MissileClient missile = (MissileClient)obj;

            if (missile.SpellCaster != null && missile.SpellCaster.Team != ObjectManager.Player.Team &&
                missile.SData.Name == "FizzMarinerDoomMissile")
            {
                SpellDetector.CreateSpellData(missile.SpellCaster, missile.StartPosition, missile.EndPosition,
                spellData, null, 1000, true, SpellType.Circular, false, 350);
            }
        }
示例#12
0
        private static void SpellMissile_OnCreate(GameObject sender, EventArgs args)
        {
            try
            {
                if (!sender.IsValid <MissileClient>())
                {
                    return;
                }

                if (!Menu.Item("TargetedActive").GetValue <bool>())
                {
                    return;
                }

                var missile = (MissileClient)sender;

                if (!missile.SpellCaster.IsValid <Obj_AI_Hero>() || !missile.SpellCaster.IsEnemy)
                {
                    return;
                }

                if (!missile.Target.IsValid <Obj_AI_Hero>() || !missile.Target.IsAlly)
                {
                    return;
                }

                var caster = (Obj_AI_Hero)missile.SpellCaster;
                var target = (Obj_AI_Hero)missile.Target;

                if (
                    Menu.SubMenu("Detector")
                    .SubMenu("Targeted")
                    .Item("Detector.Targeted." + target.ChampionName)
                    .GetValue <bool>())
                {
                    if (OnTargetedProtection != null)
                    {
                        OnTargetedProtection(caster, target, missile.SData);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
示例#13
0
        private void SpellMissile_OnCreateOld(GameObject sender, EventArgs args)
        {
            if (sender.IsEnemy || sender.Type != GameObjectType.MissileClient || !sender.IsValid <MissileClient>())
            {
                return;
            }

            MissileClient missile = (MissileClient)sender;

            if (missile.SData.Name != null)
            {
                if (missile.SData.Name == MissileName || missile.SData.Name == MissileReturnName)
                {
                    Missile = missile;
                }
            }
        }
        private static void Obj_SpellMissile_OnCreate(GameObject sender, EventArgs args)
        {
            // Deny InvalidCastException
            if (sender is Obj_LampBulb)
            {
                return;
            }

            if (sender.IsValid <Obj_SpellMissile>())
            {
                var missile = (Obj_SpellMissile)sender;
                if (missile.SpellCaster.IsValid <Obj_AI_Hero>() && IsAutoAttack(missile.SData.Name))
                {
                    FireAfterAttack(missile.SpellCaster, _lastTarget);
                }
            }
        }
示例#15
0
        private static void DebugSpellMissileOnCreate(GameObject sender, EventArgs args)
        {
            if (!sender.IsValid <MissileClient>())
            {
                return;
            }

            var missile = (MissileClient)sender;

            if (missile.SpellCaster.IsValid <AIHeroClient>())
            {
                Console.WriteLine(
                    "{0} Missile Created:{1} Distance:{2} Radius:{3} Speed:{4}", System.Environment.TickCount,
                    missile.SData.Name, missile.StartPosition.LSDistance(missile.EndPosition),
                    missile.SData.CastRadiusSecondary, missile.SData.MissileSpeed);
            }
        }
示例#16
0
        private static void SpellMissileOnCreate(GameObject sender, EventArgs args)
        {
            if (!sender.IsValid <Obj_SpellMissile>())
            {
                return; // only valid missile
            }

            var missile = (Obj_SpellMissile)sender;
            var unit    = missile.SpellCaster;

            if (!unit.IsValid <Obj_AI_Hero>())
            {
                return; // only valid hero
            }

            var spellData = SkillshotDatabase.GetByMissileName(missile.SData.Name);

            if (spellData == null)
            {
                return; // only if database contains skillshot
            }

            var missilePosition = missile.Position.To2D();
            var unitPosition    = missile.StartPosition.To2D();
            var endPos          = missile.EndPosition.To2D();

            //Calculate the real end Point:
            var direction = (endPos - unitPosition).Normalized();

            if (unitPosition.Distance(endPos) > spellData.Range || spellData.FixedRange)
            {
                endPos = unitPosition + direction * spellData.Range;
            }

            if (spellData.ExtraRange != -1)
            {
                endPos = endPos +
                         Math.Min(spellData.ExtraRange, spellData.Range - endPos.Distance(unitPosition)) * direction;
            }

            var castTime = Environment.TickCount - Game.Ping / 2 - (spellData.MissileDelayed ? 0 : spellData.Delay) -
                           (int)(1000 * missilePosition.Distance(unitPosition) / spellData.MissileSpeed);

            //Trigger the skillshot detection callbacks.
            TriggerOnDetectSkillshot(DetectionType.RecvPacket, spellData, castTime, unitPosition, endPos, unit);
        }
示例#17
0
        private static void DebugSpellMissileOnDelete(GameObject sender, EventArgs args)
        {
            if (!sender.IsValid <Obj_SpellMissile>())
            {
                return;
            }

            var missile = (Obj_SpellMissile)sender;

            if (missile.SpellCaster.IsValid <Obj_AI_Hero>())
            {
                Console.WriteLine("{0} Missile Deleted:{1} Distance:{2}",
                                  Environment.TickCount,
                                  missile.SData.Name,
                                  missile.EndPosition.Distance(missile.Position));
            }
        }
示例#18
0
        private void SpellMissile_OnDelete(GameObject obj, EventArgs args)
        {
            if (!obj.IsValid <Obj_SpellMissile>())
            {
                return;
            }

            Obj_SpellMissile missile = (Obj_SpellMissile)obj;

            //SpellData spellData;

            foreach (var spell in spells.Values.ToList().Where(
                         s => (s.spellObject != null && s.spellObject.NetworkId == obj.NetworkId))) //isAlive
            {
                DeleteSpell(spell.spellID);
            }
        }
示例#19
0
        private void Obj_SpellMissile_OnDelete(GameObject sender, EventArgs args)
        {
            if (sender.IsEnemy || sender.Type != GameObjectType.MissileClient || !sender.IsValid <MissileClient>())
            {
                return;
            }

            MissileClient missile = (MissileClient)sender;

            if (missile.SData.Name != null)
            {
                if (missile.SData.Name.ToLower() == MissileReturnName.ToLower())
                {
                    Missile = null;
                }
            }
        }
示例#20
0
        private void SpellMissile_OnDeleteOld(GameObject obj, EventArgs args)
        {
            if (!obj.IsValid <MissileClient>())
            {
                return;
            }

            MissileClient missile = (MissileClient)obj;

            //SpellData spellData;

            foreach (var spell in spells.Values.ToList().Where(
                         s => (s.spellObject != null && s.spellObject.NetworkId == obj.NetworkId))) //isAlive
            {
                DelayAction.Add(1, () => DeleteSpell(spell.spellID));
            }
        }
示例#21
0
文件: Fizz.cs 项目: hehelmaoCx/Ports
        private static void OnDeleteObj_FizzMarinerDoom(GameObject obj, EventArgs args, SpellData spellData)
        {
            //need to track where bait is attached to

            if (!obj.IsValid <MissileClient>())
            {
                return;
            }

            MissileClient missile = (MissileClient)obj;

            if (missile.SpellCaster != null && missile.SpellCaster.Team != ObjectManager.Player.Team &&
                missile.SData.Name == "FizzMarinerDoomMissile")
            {
                SpellDetector.CreateSpellData(missile.SpellCaster, missile.StartPosition, missile.EndPosition,
                                              spellData, null, 1000, true, SpellType.Circular, false, 350);
            }
        }
示例#22
0
 private static void ObjMissileClientOnCreate(GameObject sender, EventArgs args)
 {
     if (!sender.IsValid<MissileClient>())
     {
         return;
     }
     var missile = (MissileClient) sender;
     if (!missile.SpellCaster.IsValid<Obj_AI_Hero>() || missile.SpellCaster.Team == ObjectManager.Player.Team)
     {
         return;
     }
     var spellData = SpellDatabase.GetByMissileName(missile.SData.Name);
     if (spellData == null)
     {
         return;
     }
     Utility.DelayAction.Add(0, () => ObjMissileClientOnCreateDelayed(missile, spellData));
 }
示例#23
0
        private static void OnCreateWardForFlee(GameObject sender, EventArgs args)
        {
            if ((Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Flee && !GetValue <KeyBind>("Combo", "Star").Active) ||
                !W.IsReady() || !IsWOne || !sender.IsValid <Obj_AI_Minion>())
            {
                return;
            }
            var ward = (Obj_AI_Minion)sender;

            if (!ward.IsAlly || !IsWard(ward) || !W.IsInRange(ward) || Utils.GameTimeTickCount - _limitWardTime > 1000 || ward.Distance(_limitWardPos) > 200)
            {
                return;
            }
            if (W.CastOnUnit(ward))
            {
                _limitWardPos = new Vector3();
            }
        }
示例#24
0
        static void GameObject_OnDelete(GameObject obj, EventArgs args)
        {
            if (obj.IsValid <MissileClient>())
            {
                return;
            }

            foreach (var troy in Gametroy.Troys)
            {
                if (troy.Included && obj.Name.ToLower().Contains(troy.Name.ToLower()))
                {
                    troy.Obj      = null;
                    troy.Start    = 0;
                    troy.Limiter  = 0; // reset limiter
                    troy.Included = false;
                }
            }
        }
示例#25
0
        private static void OnCreateObjMissile(GameObject sender, EventArgs args)
        {
            if (!sender.IsValid <Obj_SpellMissile>())
            {
                return;
            }
            var missile = (Obj_SpellMissile)sender;

            if (!missile.SData.IsAutoAttack())
            {
                return;
            }
            if (missile.SpellCaster.IsMe && !missile.SpellCaster.IsMelee())
            {
                FireAfterAttack(LastTarget);
                LastRealAttack = Environment.TickCount;
            }
        }
示例#26
0
文件: Gametroys.cs 项目: CONANLXF/AIO
        static void GameObject_OnDelete(GameObject obj, EventArgs args)
        {
            if (obj.IsValid<MissileClient>())
                return;

            foreach (var troy in Gametroy.Objects)
            {
                if (obj.Name.Contains(troy.Name))
                {
                    troy.Obj = null;
                    troy.Start = 0;
                    troy.Limiter = 0; // reset limiter

                    if (troy.Included)
                        troy.Included = false;
                }
            }
        }
示例#27
0
        private static void OnCreate(GameObject sender, EventArgs args)
        {
            if (!sender.IsValid <MissileClient>())
            {
                return;
            }

            var missile = (MissileClient)sender;

            if (!missile.SpellCaster.IsValid <Obj_AI_Hero>() || missile.SpellCaster.Team == ObjectManager.Player.Team)
            {
                return;
            }

            var unit      = (Obj_AI_Hero)missile.SpellCaster;
            var spellData =
                Spells.FirstOrDefault(
                    i =>
                    i.SpellNames.Contains(missile.SData.Name.ToLower()) &&
                    Menu.SubMenu("ET_" + i.ChampionName).Item(i.MissileName, true) != null &&
                    Menu.SubMenu("ET_" + i.ChampionName).Item(i.MissileName, true).GetValue <bool>());

            if (spellData == null && missile.SData.IsAutoAttack() &&
                (!missile.SData.Name.ToLower().Contains("crit")
                        ? Menu.Item("BAttack", true).GetValue <bool>() &&
                 ObjectManager.Player.HealthPercent < Menu.Item("BAttackHpU", true).GetValue <Slider>().Value
                        : Menu.Item("CAttack", true).GetValue <bool>() &&
                 ObjectManager.Player.HealthPercent < Menu.Item("CAttackHpU", true).GetValue <Slider>().Value))
            {
                spellData = new SpellData
                {
                    ChampionName = unit.ChampionName, SpellNames = new[] { missile.SData.Name }
                };
            }

            if (spellData == null || !missile.Target.IsMe)
            {
                return;
            }

            DetectedTargets.Add(new Targets {
                Start = unit.ServerPosition, Obj = missile
            });
        }
示例#28
0
        private static void OnCreate(GameObject sender)
        {
            if (!sender.IsValid <MissileClient>())
            {
                return;
            }

            var missile = (MissileClient)sender;

            if (!missile.SpellCaster.IsValid <Obj_AI_Hero>() ||
                missile.SpellCaster.Team == ObjectManager.GetLocalPlayer().Team)
            {
                return;
            }

            var unit      = (Obj_AI_Hero)missile.SpellCaster;
            var spellData =
                Spells.FirstOrDefault(
                    i =>
                    i.SpellNames.Contains(missile.SpellData.Name.ToLower()) &&
                    SpellMenu["Brian.EvadeTargetMenu." + i.MissileName].Enabled);

            if (spellData == null && missile.SpellData.IsAutoAttack() &&
                (!missile.SpellData.Name.ToLower().Contains("crit")
                        ? AttackMenu["Brian.EvadeTargetMenu.BAttack"].Enabled &&
                 ObjectManager.GetLocalPlayer().HealthPercent() < AttackMenu["Brian.EvadeTargetMenu.BAttackHpU"].Value
                        : AttackMenu["Brian.EvadeTargetMenu.CAttack"].Enabled &&
                 ObjectManager.GetLocalPlayer().HealthPercent() < AttackMenu["Brian.EvadeTargetMenu.CAttackHpU"].Value))
            {
                spellData = new SpellData
                {
                    ChampionName = unit.ChampionName, SpellNames = new[] { missile.SpellData.Name }
                };
            }

            if (spellData == null || !missile.Target.IsMe)
            {
                return;
            }

            DetectedTargets.Add(new Targets {
                Start = unit.ServerPosition, Obj = missile, Time = Game.TickCount
            });
        }
示例#29
0
文件: Fizz.cs 项目: Hahahamemes/Ports
        private static void OnCreateObj_FizzMarinerDoom(GameObject obj, EventArgs args, SpellData spellData)
        {
            if (!obj.IsValid <MissileClient>())
            {
                return;
            }

            var missile = (MissileClient)obj;

            var dist   = missile.StartPosition.Distance(missile.EndPosition);
            var radius = dist > 910 ? 400 : (dist >= 455 ? 300 : 200);

            if (missile.SpellCaster != null && missile.SpellCaster.CheckTeam() &&
                missile.SData.Name == "FizzRMissile")
            {
                SpellDetector.CreateSpellData(missile.SpellCaster, missile.StartPosition, missile.EndPosition,
                                              spellData, null, 500, true, SpellType.Circular, false, radius);
            }
        }
示例#30
0
 private void OnCreateObject(GameObject sender, EventArgs args)
 {
     if (!_menuhandler.GetValue <bool>((Menu)_Mainmenu.Item("Global Switches"), "ward_tracker"))
     {
         return;
     }
     if (sender != null && sender.IsValid() &&
         (sender.Name.Contains("Ward") || sender.Name.Contains("JammerDevice") ||
          sender.Name.Contains("DoABarrelRoll") && _menuhandler.GetValue <bool>(_menu, "maokai") ||
          sender.Name.Contains("Noxious") && _menuhandler.GetValue <bool>(_menu, "teemo") ||
          sender.Name.Contains("Seed") && _menuhandler.GetValue <bool>(_menu, "zyra") ||
          sender.Name.Contains("Cupcake") && _menuhandler.GetValue <bool>(_menu, "caitlyn")))
     {
         if (sender.Name != "WardCorpse")
         {
             var x = new WardType(sender, Game.Time);
             if (sender.Name.Contains("DoABarrelRoll")) //Maokai
             {
                 x.override_time = 30;
             }
             if (sender.Name.Contains("Seed")) //Maokai
             {
                 x.override_time = 60;
             }
             if (sender.Name.Contains("Cupcake")) //Caitlyn
             {
                 x.override_time = 90;
             }
             wards.Add(x);
         }
     }
     else
     {
         foreach (var ward in wards)
         {
             if (!ward.ward.IsValid() || ward.ward.Health == 0 || ward.ward.Position == sender.Position)
             {
                 wards.Remove(ward);
                 break;
             }
         }
     }
 }
示例#31
0
            private static void OnCreateWardForJump(GameObject sender, EventArgs args)
            {
                if (!GetValue <KeyBind>("Insec", "NormalInsec").Active || !IsReady || !W.IsReady() || !IsWOne ||
                    !sender.IsValid <Obj_AI_Minion>())
                {
                    return;
                }
                var ward = (Obj_AI_Minion)sender;

                if (!ward.IsAlly || !IsWard(ward) || !W.IsInRange(ward) || Utils.GameTimeTickCount - LastWardTime > 1000 ||
                    ward.Distance(_lastWardPos) > 200)
                {
                    return;
                }
                if (W.CastOnUnit(ward, PacketCast))
                {
                    _lastWardPos = new Vector3();
                }
            }
示例#32
0
        private void SpellMissile_OnDelete(GameObject obj, EventArgs args)
        {
            if (!obj.IsValid <MissileClient>())
            {
                return;
            }

            MissileClient missile = (MissileClient)obj;

            //SpellData spellData;

            foreach (var spell in spells.Values.ToList().Where(
                         s => (s.spellObject != null && s.spellObject.NetworkId == obj.NetworkId))) //isAlive
            {
                //Console.WriteLine("Distance: " + obj.Position.Distance(myHero.Position));

                DelayAction.Add(1, () => DeleteSpell(spell.spellID));
            }
        }
示例#33
0
        /// <summary>
        ///     Delete the missiles that collide.
        /// </summary>
        private static void SpellMissileOnDelete(GameObject sender, EventArgs args)
        {
            if (OnDeleteMissile == null)
            {
                return; // no subscriptions
            }

            if (!sender.IsValid <MissileClient>())
            {
                return; // only valid missile
            }

            var missile = (MissileClient)sender;
            var unit    = missile.SpellCaster;

            if (!unit.IsValid <AIHeroClient>())
            {
                return; // only valid hero
            }

            var spellName = missile.SData.Name;

            foreach (var skillshot in ActiveSkillshots)
            {
                if (skillshot.SkillshotData.MissileSpellName == spellName &&
                    (skillshot.Caster.NetworkId == unit.NetworkId &&
                     (missile.EndPosition.To2D() - missile.StartPosition.To2D()).AngleBetween(skillshot.Direction) < 10) &&
                    skillshot.SkillshotData.CanBeRemoved)
                {
                    OnDeleteMissile(skillshot, missile);
                    break;
                }
            }

            ActiveSkillshots.RemoveAll(
                skillshot =>
                (skillshot.SkillshotData.MissileSpellName == spellName ||
                 skillshot.SkillshotData.ExtraMissileNames.Contains(spellName)) &&
                (skillshot.Caster.NetworkId == unit.NetworkId &&
                 ((missile.EndPosition.To2D() - missile.StartPosition.To2D()).AngleBetween(skillshot.Direction) < 10) &&
                 skillshot.SkillshotData.CanBeRemoved || skillshot.SkillshotData.ForceRemove));     //
        }
示例#34
0
 public override void Unregister(GameObject Object)
 {
     Object.UnregisterEffectEvent(this, "BeginAttack");
     Object.UnregisterEffectEvent(this, "BodyPositionChanged");
     Object.UnregisterEffectEvent(this, "CanChangeBodyPosition");
     Object.UnregisterEffectEvent(this, "CanChangeMovementMode");
     Object.UnregisterEffectEvent(this, "EndTurn");
     Object.UnregisterEffectEvent(this, "IsMobile");
     Object.UnregisterEffectEvent(this, "LeaveCell");
     Object.UnregisterEffectEvent(this, "MovementModeChanged");
     if (DestroyOnBreak != null)
     {
         if (DestroyOnBreak.IsValid())
         {
             DestroyOnBreak.Destroy();
         }
         DestroyOnBreak = null;
     }
     base.Unregister(Object);
 }
示例#35
0
        private void Obj_SpellMissile_OnDelete(GameObject sender, EventArgs args)
        {
            if (!sender.IsValid <MissileClient>())
            {
                return;
            }
            MissileClient missile = (MissileClient)sender;

            if (missile.IsValid && missile.IsAlly && missile.SData.Name != null)
            {
                if (missile.SData.Name == "AhriOrbReturn")
                {
                    QMissile = null;
                }
                if (missile.SData.Name == "AhriSeduceMissile")
                {
                    EMissile = null;
                }
            }
        }
示例#36
0
        private static void ObjMissileClientOnCreate(GameObject sender, EventArgs args)
        {
            if (!sender.IsValid <MissileClient>())
            {
                return;
            }
            var missile = (MissileClient)sender;

            if (!missile.SpellCaster.IsValid <Obj_AI_Hero>() || missile.SpellCaster.Team == ObjectManager.Player.Team)
            {
                return;
            }
            var spellData = SpellDatabase.GetByMissileName(missile.SData.Name);

            if (spellData == null)
            {
                return;
            }
            Utility.DelayAction.Add(0, () => ObjMissileClientOnCreateDelayed(missile, spellData));
        }
示例#37
0
        static void GameObject_OnCreate(GameObject obj, EventArgs args)
        {
            if (obj.IsValid <MissileClient>())
            {
                return;
            }

            foreach (var troy in Gametroy.Troys)
            {
                if (obj.Name.ToLower().Contains(troy.Name.ToLower()))
                {
                    troy.Obj   = obj;
                    troy.Start = Utils.GameTimeTickCount;

                    if (!troy.Included)
                    {
                        troy.Included = Helpers.IsEnemyInGame(troy.Owner);
                    }
                }
            }
        }
示例#38
0
        private static void OnCreateObject(GameObject sender, EventArgs args)
        {
#pragma warning disable 0618
            //wall
            if (sender.IsValid <Obj_SpellLineMissile>())
            {
                if (sender is Obj_SpellLineMissile)
                {
                    Obj_SpellLineMissile missle = (Obj_SpellLineMissile)sender;
                    if (missle.SData.Name == "yasuowmovingwallmisl")
                    {
                        Yasuo.wall.setL(missle);
                    }

                    if (missle.SData.Name == "yasuowmovingwallmisr")
                    {
                        Yasuo.wall.setR(missle);
                    }
                }
            }
        }
示例#39
0
        private static void Obj_SpellMissile_OnDelete(GameObject sender, EventArgs args)
        {
            if (sender.IsEnemy || sender.Type != GameObjectType.MissileClient || !sender.IsValid <MissileClient>())
            {
                return;
            }

            var missile = (MissileClient)sender;

            if (missile.SData.Name != null)
            {
                if (missile.SData.Name == "AhriOrbReturn")
                {
                    QMissile = null;
                }
                if (missile.SData.Name == "AhriSeduceMissile")
                {
                    EMissile = null;
                }
            }
        }
示例#40
0
文件: Ahri.cs 项目: koyvn/hay
        private void SpellMissile_OnCreateOld(GameObject sender, EventArgs args)
        {
            if (sender.IsEnemy || sender.Type != GameObjectType.MissileClient || !sender.IsValid <MissileClient>())
            {
                return;
            }

            MissileClient missile = (MissileClient)sender;

            if (missile.SData.Name != null)
            {
                if (missile.SData.Name == "AhriOrbMissile" || missile.SData.Name == "AhriOrbReturn")
                {
                    QMissile = sender;
                }
                if (missile.SData.Name == "AhriSeduceMissile")
                {
                    EMissile = sender;
                }
            }
        }
示例#41
0
        private static void OnCreateWardForFlee(GameObject sender, EventArgs args)
        {
            if (Orbwalk.CurrentMode != Orbwalker.Mode.Flee || !Q.IsReady() || !sender.IsValid <Obj_AI_Minion>())
            {
                return;
            }
            var ward = (Obj_AI_Minion)sender;

            if (!ward.IsAlly || !IsWard(ward) || !Q.IsInRange(ward) || Utils.GameTimeTickCount - _limitWard > 1000)
            {
                return;
            }
            LeagueSharp.Common.Utility.DelayAction.Add(
                50, () =>
            {
                var buff = ward.GetBuff("sharedstealthwardbuff") ?? ward.GetBuff("sharedvisionwardbuff");
                if (buff != null && buff.Caster.IsMe)
                {
                    Q.CastOnUnit(ward, PacketCast);
                }
            });
        }
示例#42
0
        private static void OnCreateObj_ViktorDeathRay3(GameObject obj, EventArgs args)
        {
            if (!obj.IsValid<MissileClient>())
                return;

            MissileClient missile = (MissileClient)obj;

            SpellData spellData;

            if (missile.SpellCaster != null && missile.SpellCaster.Team != ObjectManager.Player.Team &&
                missile.SData.Name != null && missile.SData.Name == "viktoreaugmissile"
                && SpellDetector.onMissileSpells.TryGetValue("ViktorDeathRay3", out spellData)
                && missile.StartPosition != null && missile.EndPosition != null)
            {
                var missileDist = missile.EndPosition.To2D().Distance(missile.StartPosition.To2D());
                var delay = missileDist / 1.5f + 600;

                spellData.spellDelay = delay;

                SpellDetector.CreateSpellData(missile.SpellCaster, missile.StartPosition, missile.EndPosition, spellData);
            }
        }
示例#43
0
            private static void ObjSpellMissileOnCreate(GameObject sender, EventArgs args)
            {
                if (!sender.IsValid <MissileClient>())
                {
                    return;
                }
                var missile = (MissileClient)sender;

                if (!missile.SpellCaster.IsValid <AIHeroClient>() || missile.SpellCaster.Team == Variables._Player.Team)
                {
                    return;
                }
                var unit      = (AIHeroClient)missile.SpellCaster;
                var spellData =
                    Spells.FirstOrDefault(
                        i =>
                        i.SpellNames.Contains(missile.SData.Name.ToLower()) &&
                        championmenu2[i.MissileName].Cast <CheckBox>().CurrentValue);

                if (spellData == null && //MenuManager.LaneClearMenu["E"].Cast<CheckBox>().CurrentValue
                    (!missile.SData.Name.ToLower().Contains("crit")
                            ? evadeMenu2["BAttack"].Cast <CheckBox>().CurrentValue &&
                     Variables._Player.HealthPercent < evadeMenu2["BAttackHpU"].Cast <Slider>().CurrentValue
                            : evadeMenu2["CAttack"].Cast <CheckBox>().CurrentValue &&
                     Variables._Player.HealthPercent < evadeMenu2["CAttackHpU"].Cast <Slider>().CurrentValue))
                {
                    spellData = new SpellData
                    {
                        ChampionName = unit.ChampionName, SpellNames = new[] { missile.SData.Name }
                    };
                }
                if (spellData == null || !missile.Target.IsMe)
                {
                    return;
                }
                DetectedTargets.Add(new Targets {
                    Start = unit.ServerPosition, Obj = missile
                });
            }
示例#44
0
        /// <summary>
        ///     Called on missle creation.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private static void ObjSpellMissileOnOnCreate(GameObject sender, EventArgs args)
        {
            if (!Misc.SpellE.SpellSlot.IsReady() || !MyMenu.RootMenu.Item("tide.activated").IsActive())
            {
                return;
            }

            if ((MyMenu.RootMenu.Item("tide.mode").GetValue <StringList>().SelectedIndex == 1 &&
                 Program.Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Combo))
            {
                return;
            }

            if (!sender.IsValid <MissileClient>())
            {
                return;
            }

            // Credits to H3H3.
            var missile = (MissileClient)sender;

            if (!missile.SpellCaster.IsValid <AIHeroClient>() || !missile.SpellCaster.IsAlly || missile.SpellCaster.IsMe ||
                missile.SpellCaster.IsMelee())
            {
                return;
            }

            if (!missile.Target.IsValid <AIHeroClient>() || !missile.Target.IsEnemy)
            {
                return;
            }

            var caster = (AIHeroClient)missile.SpellCaster;

            if (ObjectManager.Player.ManaPercent > MyMenu.RootMenu.Item("tide.mana").GetValue <Slider>().Value&& Misc.SpellE.SpellObject.IsInRange(caster))
            {
                Misc.SpellE.SpellObject.CastOnUnit(caster);
            }
        }
示例#45
0
        private void RangeAttackOnCreate(GameObject sender, EventArgs args)
        {
            if (!sender.IsValid<Obj_SpellMissile>())
                return;

            var missile = (Obj_SpellMissile) sender;

            // Caster ally hero / not me
            if (!missile.SpellCaster.IsValid<Obj_AI_Hero>() || !missile.SpellCaster.IsAlly ||
                missile.SpellCaster.IsMe || !missile.SpellCaster.IsHeroType(HeroType.Ad) ||
                missile.SpellCaster.IsMelee())
                return;

            // Target enemy hero
            if (!missile.Target.IsValid<Obj_AI_Hero>() || !missile.Target.IsEnemy)
                return;

            if (E.IsReady() && E.IsInRange(missile.SpellCaster) && ConfigValue<bool>("MiscE"))
            {
                E.CastOnUnit(missile.SpellCaster, UsePackets);
            }
        }
示例#46
0
        private void SpellMissile_OnDeleteOld(GameObject obj, EventArgs args)
        {
            if (!obj.IsValid<MissileClient>())
                return;

            MissileClient missile = (MissileClient)obj;
            //SpellData spellData;

            foreach (var spell in spells.Values.ToList().Where(
                    s => (s.spellObject != null && s.spellObject.NetworkId == obj.NetworkId))) //isAlive
            {
                DelayAction.Add(1, () => DeleteSpell(spell.spellID));
            }
        }
示例#47
0
        private void SpellMissile_OnDelete(GameObject obj, EventArgs args)
        {
            if (!obj.IsValid<MissileClient>())
                return;

            MissileClient missile = (MissileClient)obj;
            //SpellData spellData;

            foreach (var spell in spells.Values.ToList().Where(
                    s => (s.spellObject != null && s.spellObject.NetworkId == obj.NetworkId))) //isAlive
            {
                //Console.WriteLine("Distance: " + obj.Position.Distance(myHero.Position));

                DelayAction.Add(1, () => DeleteSpell(spell.spellID));
            }
        }
示例#48
0
        private void SpellMissile_OnCreateOld(GameObject obj, EventArgs args)
        {
            if (!obj.IsValid<MissileClient>())
                return;

            MissileClient missile = (MissileClient)obj;

            SpellData spellData;

            if (missile.SpellCaster != null && missile.SpellCaster.Team != myHero.Team &&
                missile.SData.Name != null && onMissileSpells.TryGetValue(missile.SData.Name, out spellData)
                && missile.StartPosition != null && missile.EndPosition != null)
            {

                if (missile.StartPosition.LSDistance(myHero.Position) < spellData.range + 1000)
                {
                    var hero = missile.SpellCaster;

                    if (hero.IsVisible)
                    {
                        if (spellData.usePackets)
                        {
                            CreateSpellData(hero, missile.StartPosition, missile.EndPosition, spellData, obj);
                            return;
                        }

                        foreach (KeyValuePair<int, Spell> entry in spells)
                        {
                            Spell spell = entry.Value;

                            var dir = (missile.EndPosition.LSTo2D() - missile.StartPosition.LSTo2D()).LSNormalized();

                            if (spell.info.missileName == missile.SData.Name
                                && spell.heroID == missile.SpellCaster.NetworkId
                                && dir.LSAngleBetween(spell.direction) < 10)
                            {
                                if (spell.info.isThreeWay == false && spell.info.isSpecial == false)
                                {
                                    spell.spellObject = obj;
                                }
                            }
                        }
                    }
                    else
                    {
                        if (ObjectCache.menuCache.cache["DodgeFOWSpells"].Cast<CheckBox>().CurrentValue)
                        {
                            CreateSpellData(hero, missile.StartPosition, missile.EndPosition, spellData, obj);
                        }
                    }
                }
            }
        }
示例#49
0
        private void SpellMissile_OnCreate(GameObject obj, EventArgs args)
        {
            if (!obj.IsValid<MissileClient>())
                return;

            MissileClient missile = (MissileClient)obj;

            // todo: keepo
            //if (missile.SpellCaster.IsMe)
            //    Console.WriteLine("Missile: " + missile.SData.Name);

            SpellData spellData;

            if (missile.SpellCaster != null && missile.SpellCaster.Team != myHero.Team &&
                missile.SData.Name != null && onMissileSpells.TryGetValue(missile.SData.Name, out spellData)
                && missile.StartPosition != null && missile.EndPosition != null)
            {

                if (missile.StartPosition.LSDistance(myHero.Position) < spellData.range + 1000)
                {
                    var hero = missile.SpellCaster;

                    if (hero.IsVisible)
                    {
                        if (spellData.usePackets)
                        {
                            CreateSpellData(hero, missile.StartPosition, missile.EndPosition, spellData, obj);
                            return;
                        }

                        var objectAssigned = false;

                        foreach (KeyValuePair<int, Spell> entry in detectedSpells)
                        {
                            Spell spell = entry.Value;

                            var dir = (missile.EndPosition.LSTo2D() - missile.StartPosition.LSTo2D()).LSNormalized();

                            if (spell.info.missileName.Equals(missile.SData.Name, StringComparison.InvariantCultureIgnoreCase) ||
                               (spell.info.missileName + "_urf").Equals(missile.SData.Name, StringComparison.InvariantCultureIgnoreCase)
                                && spell.heroID == missile.SpellCaster.NetworkId
                                && dir.LSAngleBetween(spell.direction) < 10)
                            {

                                if (spell.info.isThreeWay == false
                                    && spell.info.isSpecial == false)
                                {
                                    spell.spellObject = obj;
                                    objectAssigned = true;
                                    break;

                                    /*if(spell.spellType == SpellType.Line)
                                    {
                                        if (missile.SData.LineWidth != spell.info.radius)
                                        {
                                            Console.WriteLine("Wrong radius " + spell.info.spellName + ": "
                                            + spell.info.radius + " vs " + missile.SData.LineWidth);
                                        }
                                        if (missile.SData.MissileSpeed != spell.info.projectileSpeed)
                                        {
                                            Console.WriteLine("Wrong speed " + spell.info.spellName + ": "
                                            + spell.info.projectileSpeed + " vs " + missile.SData.MissileSpeed);
                                        }

                                    }*/

                                    //var acquisitionTime = EvadeUtils.TickCount - spell.startTime;
                                    //Console.WriteLine("AcquiredTime: " + acquisitionTime);
                                }
                            }
                        }

                        if (objectAssigned == false)
                        {
                            CreateSpellData(hero, missile.StartPosition, missile.EndPosition, spellData, obj);
                        }
                    }
                    else
                    {
                        if (ObjectCache.menuCache.cache["DodgeFOWSpells"].Cast<CheckBox>().CurrentValue)
                        {
                            CreateSpellData(hero, missile.StartPosition, missile.EndPosition, spellData, obj);
                        }
                    }
                }
            }
        }
示例#50
0
        private void Obj_AI_Base_OnCreate(GameObject sender, EventArgs args)
        {
            //return;
            if (sender.IsValid && sender.IsAlly && ObjectManager.Player.Distance(sender.Position) < 200)
            {
                //obj = sender;

                if (!sender.IsValid<MissileClient>())
                    return;

                MissileClient missile = (MissileClient)sender;
                if (missile.SData.LineWidth == 0)
                    return;
                Program.debug(" " + missile.SData.LineWidth + " " + missile.SData.MissileSpeed + " " + (Game.Time - castTime));
                if (missile.IsValid && missile.IsAlly && missile.SData.Name != null && (missile.SData.Name == "SivirQMissile" || missile.SData.Name == "SivirQMissileReturn"))
                {
                    
                }
                //Program.debug(""+);
                //Program.debug("cast time" +(time - Game.Time));
            }
        }
示例#51
0
 private static void OnCreate(GameObject sender, EventArgs args)
 {
     var name = sender.Name.ToLower();
     if (sender.IsValid<Obj_AI_Minion>() && (name.Contains("sru_") || name.Contains("worm")) && sender.Team != GameObjectTeam.Neutral) _minions.Add((Obj_AI_Minion)sender);
 }
示例#52
0
 private static void OnCreate(GameObject sender, EventArgs args)
 {
     if (sender.IsValid<Obj_AI_Turret>()) _turrets.Add((Obj_AI_Turret)sender);
 }
示例#53
0
        private static void OnCreateObject(GameObject sender, EventArgs args)
        {
#pragma warning disable 0618
            //wall
            if (sender.IsValid<Obj_SpellLineMissile>())
            {
                if (sender is Obj_SpellLineMissile)
                {
                    Obj_SpellLineMissile missle = (Obj_SpellLineMissile)sender;
                    if (missle.SData.Name == "yasuowmovingwallmisl")
                    {
                        Yasuo.wall.setL(missle);
                    }

                    if (missle.SData.Name == "yasuowmovingwallmisr")
                    {
                        Yasuo.wall.setR(missle);
                    }
                }
            }
        }
示例#54
0
 private static void Obj_SpellMissile_OnCreate(GameObject sender, EventArgs args)
 {
     if (sender.IsValid<Obj_SpellMissile>())
     {
         var missile = (Obj_SpellMissile)sender;
         if (missile.SpellCaster.IsValid<Obj_AI_Hero>() && IsAutoAttack(missile.SData.Name))
         {
             FireAfterAttack(missile.SpellCaster, _lastTarget);
         }
     }
 }
示例#55
0
        private void Obj_SpellMissile_OnDelete(GameObject sender, EventArgs args)
        {
            if (!sender.IsValid<MissileClient>())
                return;
            MissileClient missile = (MissileClient)sender;

            if (missile.IsValid && missile.IsAlly && missile.SData.Name != null && (missile.SData.Name == "SivirQMissile" || missile.SData.Name == "SivirQMissileReturn"))
            {
                QMissile = null;
            }
        }
示例#56
0
 private static void Obj_AI_Base_OnCreate(GameObject sender, EventArgs args)
 {
     if (sender.IsValid<MissileClient>() && sender.IsAlly)
     {
         var missile = (MissileClient) sender;
         if (missile.SData.Name != null && missile.SData.Name == "VelkozQMissile")
             QMissile = missile;
     }
 }
示例#57
0
 private static void OnCreate(GameObject sender, EventArgs args)
 {
     var name = sender.Name.ToLower();
     if (sender.IsValid<Obj_AI_Minion>() && !name.Contains("sru_") && !name.Contains("ward") && !name.Contains("ttn") && !name.Contains("tt_") && !name.Contains("trinket") && !name.Contains("teemo") && sender.Team != GameObjectTeam.Neutral) _minions.Add((Obj_AI_Minion)sender);
 }
示例#58
0
        private void SpellMissile_OnCreateOld(GameObject sender, EventArgs args)
        {
            if (!sender.IsValid<MissileClient>())
                return;

            MissileClient missile = (MissileClient)sender;

            if (missile.IsValid && missile.IsAlly && missile.SData.Name != null && missile.SData.Name == "DravenR")
            {
                RMissile = sender;
            }
        }
示例#59
0
        private void SpellMissile_OnCreateOld(GameObject sender, EventArgs args)
        {
            if (!sender.IsValid<MissileClient>())
                return;

            MissileClient missile = (MissileClient)sender;

            if (missile.IsValid && missile.IsAlly && missile.SData.Name != null )
            {
                if (missile.SData.Name == "AhriOrbMissile" || missile.SData.Name == "AhriOrbReturn")
                {
                    QMissile = sender;
                }
                if (missile.SData.Name == "AhriSeduceMissile")
                {
                    EMissile = sender;
                }
            }
        }
示例#60
0
        private static void MissileClient_OnSpellMissileCreate(GameObject sender, EventArgs args)
        {
            #region FoW / Missile

            if (!sender.IsValid<MissileClient>())
            {
                return;
            }

            var missile = (MissileClient)sender;
            if (missile.SpellCaster is AIHeroClient && missile.SpellCaster?.Team != Player.Team)
            {
                var startPos = missile.StartPosition.LSTo2D();
                var endPos = missile.EndPosition.LSTo2D();

                var data = Data.Somedata.GetByMissileName(missile.SData.Name.ToLower());
                if (data == null)
                    return;

                var direction = (endPos - startPos).LSNormalized();

                if (startPos.LSDistance(endPos) > data.Range)
                    endPos = startPos + direction * data.Range;

                if (startPos.LSDistance(endPos) < data.Range && data.FixedRange)
                    endPos = startPos + direction * data.Range;

                foreach (var hero in Activator.Allies())
                {
                    // reset if needed
                    Essentials.ResetIncomeDamage(hero.Player);

                    var distance = (1000 * (startPos.LSDistance(hero.Player.ServerPosition) / data.Speed));
                    var endtime = -100 + Game.Ping / 2 + distance;

                    // setup projection
                    var proj = hero.Player.ServerPosition.LSTo2D().LSProjectOn(startPos, endPos);
                    var projdist = hero.Player.ServerPosition.LSTo2D().LSDistance(proj.SegmentPoint);

                    // get the evade time 
                    var evadetime = (int)(1000 *
                       (data.Width - projdist + hero.Player.BoundingRadius) / hero.Player.MoveSpeed);

                    // check if hero on segment
                    if (data.Width + hero.Player.BoundingRadius + 35 <= projdist)
                    {
                        continue;
                    }

                    if (data.Range > 10000)
                    {
                        // ignore if can evade
                        if (hero.Player.NetworkId == Player.NetworkId)
                        {
                            if (hero.Player.CanMove && evadetime < endtime)
                            {
                                // check next player
                                continue;
                            }
                        }
                    }

                    if (Activator.zmenu[data.SDataName + "predict"].Cast<CheckBox>().CurrentValue)
                    {
                        LeagueSharp.Common.Utility.DelayAction.Add(100, () =>
                        {
                            hero.Attacker = missile.SpellCaster;
                            hero.IncomeDamage += 1;
                            hero.HitTypes.Add(HitType.Spell);
                            hero.HitTypes.AddRange(
                                MenuTypes.Where(
                                    x =>
                                        Activator.zmenu[data.SDataName + x.ToString().ToLower()].Cast<CheckBox>().CurrentValue));

                            LeagueSharp.Common.Utility.DelayAction.Add((int)endtime * 2 + (200 - Game.Ping), () =>
                           {
                               hero.Attacker = null;
                               hero.IncomeDamage -= 1;
                               hero.HitTypes.RemoveAll(
                                   x =>
                                       !x.Equals(HitType.Spell) &&
                                       Activator.zmenu[data.SDataName + x.ToString().ToLower()].Cast<CheckBox>().CurrentValue);
                               hero.HitTypes.Remove(HitType.Spell);
                           });
                        });
                    }
                }
            }

            #endregion
        }