Beispiel #1
0
        // Auto Q after kill if Enemies
        private static void Game_OnNotify(GameNotifyEventArgs args)
        {
            switch (args.EventId)
            {
            case GameEventId.OnChampionKill:
                if (WasYourKill() && TwitchMenu.Item("QKill").GetValue <bool>() && Player.GetEnemiesInRange(_q.Range).Count >= TwitchMenu.Item("QFleeCount").GetValue <Slider>().Value&& _q.IsReady())
                {
                    _q.Cast();
                }
                break;

            case GameEventId.OnDamageTaken:
                if (TwitchMenu.Item("EBeforeDeath").GetValue <bool>() && (Player.HealthPercent <= 15 || (lastHpPercent - Player.HealthPercent) > 25) && _e.IsReady())
                {
                    _e.Cast();
                }
                lastHpPercent = Player.HealthPercent;
                break;

            case GameEventId.OnBuff:
                if (Player.HasBuff("TwitchHideInShadows"))
                {
                    buffPosition = Player.Position;
                }
                break;
            }
        }
Beispiel #2
0
        static void Game_OnGameLoad()
        {
            // Verify champion
            if (Player.ChampionName != ChampionName)
            {
                return;
            }

            Notifications.AddNotification("Twitch by TheOBJop", 2);

            // Spells
            _q = new Spell(SpellSlot.Q, 1500);
            _w = new Spell(SpellSlot.W, 950);
            _w.SetSkillshot(0.25f, 120f, 1400f, false, SkillshotType.SkillshotCircle);
            _e = new Spell(SpellSlot.E, 1200);
            _r = new Spell(SpellSlot.R, 850);

            lastKills = Player.ChampionsKilled;

            // Menu
            TwitchMenu.Init();

            CustomDamageIndicator.Initialize(GetDamage);

            // Listen to Events
            Game.OnUpdate            += Game_OnUpdate;
            CustomEvents.Unit.OnDash += Unit_OnDash;
            Game.OnNotify            += Game_OnNotify;
            Drawing.OnDraw           += Drawing_OnDraw;
        }
Beispiel #3
0
        private static void JungleClear()
        {
            var minions = MinionManager.GetMinions(_e.Range, MinionTypes.All, MinionTeam.Neutral);

            if (minions == null)
            {
                return;
            }

            var highestHealthMinion = minions.FirstOrDefault(buff => buff.IsValidTarget() && FocusMinions.Contains(buff.CharData.BaseSkinName));
            var centerMinion        = _w.GetCircularFarmLocation(minions);
            var useE        = TwitchMenu.Item("EJGClear").GetValue <bool>();
            var useW        = TwitchMenu.Item("WJGClear").GetValue <bool>();
            var minMobsForW = TwitchMenu.Item("WJGMinionCount").GetValue <Slider>().Value;
            var minMana     = TwitchMenu.Item("JGMana").GetValue <Slider>().Value;

            if (useW && _w.IsReady() && (minions.Count(m => Player.Distance(m, false) < _w.Range) >= minMobsForW) && Player.ManaPercent > minMana)
            {
                _w.Cast(centerMinion.Position);
            }

            if (highestHealthMinion == null)
            {
                return;
            }

            if (useE && _e.IsReady() && _e.IsKillable(highestHealthMinion) && Player.ManaPercent > minMana)
            {
                _e.Cast(highestHealthMinion);
            }
        }
Beispiel #4
0
        private static void LaneClear()
        {
            var minions = MinionManager.GetMinions(_e.Range, MinionTypes.All, MinionTeam.Enemy);

            if (minions == null)
            {
                return;
            }

            var centerMinion = _w.GetCircularFarmLocation(minions);
            var useE         = TwitchMenu.Item("ELaneClear").GetValue <bool>();
            var minMobsForE  = TwitchMenu.Item("ELaneMinionCount").GetValue <Slider>().Value;
            var useW         = TwitchMenu.Item("WLaneClear").GetValue <bool>();
            var minMobsForW  = TwitchMenu.Item("WLaneMinionCount").GetValue <Slider>().Value;
            var minMana      = TwitchMenu.Item("LaneMana").GetValue <Slider>().Value;

            if (useE && _e.IsReady() && minions.Count(m => _e.CanCast(m) && m.Health <= _e.GetDamage(m)) >= minMobsForE && Player.ManaPercent > minMana)
            {
                _e.Cast();
            }

            if (useW && _w.IsReady() && (minions.Count(m => Player.Distance(m, false) < _w.Range) >= minMobsForW) && Player.ManaPercent > minMana)
            {
                _w.Cast(centerMinion.Position);
            }
        }
Beispiel #5
0
        private static void Drawing_OnDraw(EventArgs args)
        {
            CustomDamageIndicator.DrawingColor = TwitchMenu.Item("EDamage").GetValue <Circle>().Color;
            CustomDamageIndicator.Enabled      = TwitchMenu.Item("EDamage").GetValue <Circle>().Active;

            if (TwitchMenu.Item("DrawQRange").GetValue <bool>())
            {
                Drawing.DrawCircle(buffPosition, _q.Range, Color.Green);
            }
        }
Beispiel #6
0
        // Anti-Gapclose
        private static void Unit_OnDash(Obj_AI_Base sender, Dash.DashItem args)
        {
            if (!sender.IsEnemy)
            {
                return;
            }

            if (!args.IsBlink && TwitchMenu.Item("WAntigap").GetValue <bool>() && _w.IsReady() && Player.Distance(sender) <= (_w.Range / 1.5) && Player.Distance(args.StartPos) > Player.Distance(args.EndPos))
            {
                _w.Cast(args.EndPos);
            }
        }
Beispiel #7
0
        private static void RToKs()
        {
            AIHeroClient enemy = Player.GetEnemiesInRange(_r.Range).FirstOrDefault(nmy => nmy.HealthPercent < 10);

            if (enemy == null)
            {
                return;
            }

            // Make sure to only KS the enemy (Kinda like auto-activating R to secure kill)
            if (TwitchMenu.Item("RToKS").GetValue <bool>() && _r.IsReady() && Player.Distance(enemy) > 500)
            {
                _r.Cast();
                _orbwalker.ForceTarget(enemy);
            }
        }
Beispiel #8
0
        private static void Game_OnUpdate(EventArgs args)
        {
            // Update Q range based on Movespeed and drawing position
            _q.Range = Player.MoveSpeed * (_q.Level + 3.0f);
            if (!Player.HasBuff("TwitchHideInShadows"))
            {
                buffPosition = Player.Position;
            }

            // Killsteal with E
            if (_e.IsReady())
            {
                if (TwitchMenu.Item("EKillsteal").GetValue <bool>())
                {
                    foreach (var enemy in ObjectManager.Get <AIHeroClient>().Where(enemy => enemy.IsValidTarget(_e.Range) && _e.IsKillable(enemy)))
                    {
                        _e.Cast();
                    }
                }
            }

            // E before death
            if (TwitchMenu.Item("EBeforeDeath").GetValue <bool>() && Player.HealthPercent <= 10 && _e.IsReady())
            {
                _e.Cast();
            }

            // Always KS monsters
            KsMonsters();

            // R to KS
            RToKs();

            // Orbwalker Mode
            switch (_orbwalker.ActiveMode)
            {
            case Orbwalking.OrbwalkingMode.Combo:
                Combo();
                break;

            case Orbwalking.OrbwalkingMode.LaneClear:
                LaneClear();
                JungleClear();
                break;
            }
        }
Beispiel #9
0
        private static void KsMonsters()
        {
            // If not KS enabled, don't KS
            if (!TwitchMenu.Item("KSMonsters").GetValue <bool>())
            {
                return;
            }

            // Find Minions
            var minions = MinionManager.GetMinions(_e.Range, MinionTypes.All, MinionTeam.NotAlly);

            foreach (var m in minions)
            {
                if ((m.CharData.BaseSkinName.Contains("MinionSiege") || m.CharData.BaseSkinName.Contains("Dragon") || m.CharData.BaseSkinName.Contains("Baron")) && _e.IsKillable(m))
                {
                    _e.Cast();
                }
            }
        }
Beispiel #10
0
        private static void Combo()
        {
            var target = TargetSelector.GetTarget(_w.Range, TargetSelector.DamageType.Physical);

            // If target not found, don't do anything.
            if (target == null)
            {
                return;
            }

            // Use W
            if (TwitchMenu.Item("UseWCombo").GetValue <bool>())
            {
                if (target.IsValidTarget(_w.Range) && _w.CanCast(target) && _w.GetPrediction(target).Hitchance >= HitChance.High)
                {
                    _w.Cast(target);
                }
            }

            // Use BoRK
            if (target.Type == Player.Type && target.ServerPosition.Distance(Player.ServerPosition) < 450)
            {
                var hasCutlass = Items.HasItem(3144);
                var hasBork    = Items.HasItem(3153);

                if (hasBork || hasCutlass)
                {
                    var itemId = hasCutlass ? 3144 : 3153;
                    var damage = Player.GetItemDamage(target, Damage.DamageItems.Botrk);
                    if (hasCutlass || Player.Health + damage < Player.MaxHealth)
                    {
                        Items.UseItem(itemId, target);
                    }
                }
            }

            // Use Youmuu's
            if (target.Type == Player.Type && Orbwalking.InAutoAttackRange(target))
            {
                Items.UseItem(3142);
            }
        }