private void Game_OnGameUpdate(EventArgs args)
        {
            if (!IsActive() || _ult == null || ObjectManager.Player.Spellbook.GetSpell(_ult.SpellSlot).State != SpellState.Ready)
            {
                return;
            }

            var tempDamages =
                new Dictionary <Obj_AI_Hero, List <ActivatorOld.IncomingDamage> >(ActivatorOld.Damages);

            foreach (var damage in tempDamages)
            {
                if (ActivatorOld.CalcMaxDamage(damage.Key) > damage.Key.Health &&
                    (damage.Key.Distance(ObjectManager.Player.ServerPosition) < _ult.Range))
                {
                    if (!AutoUltActivator.GetMenuItem("SAssembliesActivatorsAutoUltAlly").GetValue <bool>() &&
                        damage.Key.NetworkId != ObjectManager.Player.NetworkId)
                    {
                        continue;
                    }
                    if (_ult.Target)
                    {
                        Packet.C2S.Cast.Encoded(new Packet.C2S.Cast.Struct(damage.Key.NetworkId, _ult.SpellSlot)).Send();
                        return;
                    }
                    if (damage.Key.NetworkId == ObjectManager.Player.NetworkId)
                    {
                        Packet.C2S.Cast.Encoded(new Packet.C2S.Cast.Struct(damage.Key.NetworkId, _ult.SpellSlot)).Send();
                        return;
                    }
                }
            }
        }
Esempio n. 2
0
    void Update()
    {
        if (!activating) {
            //we're not currently using an activator, so actively search for a new one and listen to start activating.
            ray = new Ray(head.position, head.forward);
            if (Physics.Raycast(ray, out hit, range)) {
                activator = (ActivatorOld)hit.transform.GetComponent(typeof(ActivatorOld));

                if (activator != null && Input.GetMouseButtonDown(1)) {
                    activating = activator.Activate(gameObject, this); //started a new activator
                } else if (delayed != null && Input.GetMouseButtonDown(1)) {
                    activating = delayed(gameObject, this); //we have a delayed action, so do it now
                    delayed = null; //reset the delayed action
                }
            }
        } else if (!activator.ActiveUpdate(gameObject)) {
            //we've just stopped activating
            activating = false;
            activator.Deactivate(gameObject);
        }
    }
        private void Game_OnGameUpdate(EventArgs args)
        {
            if (!IsActive() || _qss == null || ObjectManager.Player.Spellbook.GetSpell(_qss.SpellSlot).State != SpellState.Ready)
            {
                return;
            }

            CreateBuffList();

            List <BuffInstance> buffList = ActivatorOld.GetActiveCcBuffs(_buffs);

            if (buffList.Count() >=
                AutoQSSActivator.GetMenuItem("SAssembliesActivatorsAutoQSSMinSpells")
                .GetValue <Slider>()
                .Value)
            {
                Packet.C2S.Cast.Encoded(new Packet.C2S.Cast.Struct(ObjectManager.Player.NetworkId, _qss.SpellSlot)).Send();
            }

            if (ObjectManager.Player.HasBuffOfType(BuffType.Slow))
            {
                Packet.C2S.Cast.Encoded(new Packet.C2S.Cast.Struct(ObjectManager.Player.NetworkId, _qss.SpellSlot)).Send();
            }
        }
        private void Game_OnGameUpdate(EventArgs args)
        {
            if (!IsActive() || _shield == null)
            {
                return;
            }

            var tempDamages =
                new Dictionary <Obj_AI_Hero, List <ActivatorOld.IncomingDamage> >(ActivatorOld.Damages);

            foreach (var damage in ActivatorOld.Damages)
            {
                Obj_AI_Hero hero = damage.Key;

                if (!AutoShieldActivator.GetMenuItem("SAssembliesActivatorsAutoShieldAlly").GetValue <bool>())
                {
                    if (hero.NetworkId != ObjectManager.Player.NetworkId)
                    {
                        continue;
                    }
                }

                foreach (ActivatorOld.IncomingDamage tDamage in tempDamages[hero].ToArray())
                {
                    foreach (Database.Spell spell in Database.GetSpellList())
                    {
                        if (_shield.OnlyAA && !IsAutoAttack(tDamage.SpellName))
                        {
                            tempDamages[hero].Remove(tDamage);
                            continue;
                        }
                        if (spell.Name.Contains(tDamage.SpellName))
                        {
                            if (_shield.OnlyMagic)
                            {
                                if (
                                    !IsDamageType((Obj_AI_Hero)tDamage.Source, tDamage.SpellName,
                                                  Damage.DamageType.Magical))
                                {
                                    tempDamages[hero].Remove(tDamage);
                                    continue;
                                }
                                if (
                                    AutoShieldActivator.GetMenuItem("SAssembliesActivatorsAutoShieldBlockCC")
                                    .GetValue <bool>() &&
                                    !ContainsCc(tDamage.SpellName))
                                {
                                    tempDamages[hero].Remove(tDamage);
                                    continue;
                                }
                            }
                            if (!CheckDamagelevel(tDamage.SpellName) && !_shield.OnlyMagic)
                            {
                                tempDamages[hero].Remove(tDamage);
                                continue;
                            }
                        }
                        if (!AutoShieldActivator.GetMenuItem("SAssembliesActivatorsAutoShieldBlockAA")
                            .GetValue <bool>() && IsAutoAttack(tDamage.SpellName))
                        {
                            tempDamages[hero].Remove(tDamage);
                            continue;
                        }
                        if (AutoShieldActivator.GetMenuItem("SAssembliesActivatorsAutoShieldBlockableSpellsActive")
                            .GetValue <bool>())
                        {
                            foreach (var blockableSpell in GetBlockableSpells())
                            {
                                if (AutoShieldActivatorBlockableSpells.GetMenuItem("SAssembliesActivatorsAutoShieldBlockableSpells" + spell) == null ||
                                    !AutoShieldActivatorBlockableSpells.GetMenuItem("SAssembliesActivatorsAutoShieldBlockableSpells" + spell)
                                    .GetValue <bool>())
                                {
                                    tempDamages[hero].Remove(tDamage);
                                    continue;
                                }
                            }
                        }
                    }
                }
            }

            foreach (var damage in tempDamages)
            {
                //Vector2 d2 = Drawing.WorldToScreen(damage.Key.ServerPosition);
                //Drawing.DrawText(d2.X, d2.Y, System.Drawing.Color.Aquamarine, ActivatorOld.CalcMaxDamage(damage.Key).ToString());

                if (ActivatorOld.CalcMaxDamage(damage.Key) > AutoShieldActivator.GetMenuItem("SAssembliesActivatorsAutoShieldBlockMinDamageAmount")
                    .GetValue <Slider>().Value&&
                    (_shield.OnlySelf || damage.Key.Distance(ObjectManager.Player.ServerPosition) < _shield.Spell.Range))
                {
                    if (!_shield.Spell.IsReady())
                    {
                        break;
                    }
                    if (_shield.Skillshot)
                    {
                        PredictionOutput predOutput = _shield.Spell.GetPrediction(damage.Key);
                        if (predOutput.Hitchance > HitChance.Medium)
                        {
                            Packet.C2S.Cast.Encoded(new Packet.C2S.Cast.Struct(0, _shield.Spell.Slot, -1, predOutput.CastPosition.X, predOutput.CastPosition.Y, predOutput.CastPosition.X, predOutput.CastPosition.Y)).Send();
                        }
                        ObjectManager.Player.Spellbook.CastSpell(_shield.Spell.Slot, predOutput.CastPosition);
                        break;
                    }
                    if (_shield.OnlySelf && damage.Key.NetworkId == ObjectManager.Player.NetworkId)
                    {
                        Packet.C2S.Cast.Encoded(new Packet.C2S.Cast.Struct(damage.Key.NetworkId, _shield.Spell.Slot)).Send();
                        break;
                    }
                    if (_shield.Instant)
                    {
                        Packet.C2S.Cast.Encoded(new Packet.C2S.Cast.Struct(damage.Key.NetworkId, _shield.Spell.Slot)).Send();
                        break;
                    }
                }
            }
        }