#region using System; using System.Drawing; using System.Linq; using DetuksSharp; using LeagueSharp; using LeagueSharp.Common; #endregion namespace Marksman.Champions { internal class Twitch : Champion { public static Spell W; public static Spell E; public Twitch() { W = new Spell(SpellSlot.W, 950); W.SetSkillshot(0.25f, 120f, 1400f, false, SkillshotType.SkillshotCircle); E = new Spell(SpellSlot.E, 1200); Utility.HpBarDamageIndicator.DamageToUnit = GetComboDamage; Utility.HpBarDamageIndicator.Enabled = true; Utils.Utils.PrintMessage("Twitch loaded."); } public override void DeathWalker_AfterAttack(AttackableUnit unit, AttackableUnit target) { var t = target as Obj_AI_Hero; if (t == null || (!ComboActive && !HarassActive) || !unit.IsMe) return; var useW = GetValue("UseW" + (ComboActive ? "C" : "H")); if (useW && W.IsReady()) W.Cast(t, false, true); } public override void Drawing_OnDraw(EventArgs args) { Spell[] spellList = {W}; foreach (var spell in spellList) { var menuItem = GetValue("Draw" + spell.Slot); if (menuItem.Active) Render.Circle.DrawCircle(ObjectManager.Player.Position, spell.Range, menuItem.Color); } } public override void Game_OnGameUpdate(EventArgs args) { if (DeathWalker.canMove() && (ComboActive || HarassActive)) { var useW = GetValue("UseW" + (ComboActive ? "C" : "H")); var useE = GetValue("UseE" + (ComboActive ? "C" : "H")); if (useW) { var wTarget = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical); if (W.IsReady() && wTarget.IsValidTarget()) W.Cast(wTarget, false, true); } if (useE && E.IsReady()) { var eTarget = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical); if (eTarget.IsValidTarget(E.Range)) { foreach ( var buff in eTarget.Buffs.Where(buff => buff.DisplayName.ToLower() == "twitchdeadlyvenom") .Where(buff => buff.Count == 6)) { E.Cast(); } } // credits iMeh var minions = MinionManager.GetMinions(E.Range, MinionTypes.All, MinionTeam.NotAlly); foreach (var m in minions) { switch (GetValue("E.Mobs").SelectedIndex) { case 0: if ((m.CharData.BaseSkinName.Contains("MinionSiege") || m.CharData.BaseSkinName.Contains("Dragon") || m.CharData.BaseSkinName.Contains("Baron")) && E.IsKillable(m)) { E.Cast(); } break; case 1: if ((m.CharData.BaseSkinName.Contains("Dragon") || m.CharData.BaseSkinName.Contains("Baron")) && E.IsKillable(m)) { E.Cast(); } break; case 2: if (m.CharData.BaseSkinName.Contains("MinionSiege") && E.IsKillable(m)) { E.Cast(); } break; } } } } if (GetValue("UseEM") && E.IsReady()) { foreach ( var hero in ObjectManager.Get() .Where( hero => hero.IsValidTarget(E.Range) && (ObjectManager.Player.GetSpellDamage(hero, SpellSlot.E) - 10 > hero.Health))) { E.Cast(); } } } private static float GetComboDamage(Obj_AI_Hero t) { var fComboDamage = 0f; if (E.IsReady()) fComboDamage += (float) ObjectManager.Player.GetSpellDamage(t, SpellSlot.E); if (ObjectManager.Player.GetSpellSlot("summonerdot") != SpellSlot.Unknown && ObjectManager.Player.Spellbook.CanUseSpell(ObjectManager.Player.GetSpellSlot("summonerdot")) == SpellState.Ready && ObjectManager.Player.Distance(t) < 550) fComboDamage += (float) ObjectManager.Player.GetSummonerSpellDamage(t, Damage.SummonerSpell.Ignite); if (Items.CanUseItem(3144) && ObjectManager.Player.Distance(t) < 550) fComboDamage += (float) ObjectManager.Player.GetItemDamage(t, Damage.DamageItems.Bilgewater); if (Items.CanUseItem(3153) && ObjectManager.Player.Distance(t) < 550) fComboDamage += (float) ObjectManager.Player.GetItemDamage(t, Damage.DamageItems.Botrk); return fComboDamage; } public override bool ComboMenu(Menu config) { config.AddItem(new MenuItem("UseWC" + Id, "Use W").SetValue(true)); config.AddItem(new MenuItem("UseEC" + Id, "Use E max Stacks").SetValue(true)); return true; } public override bool HarassMenu(Menu config) { config.AddItem(new MenuItem("UseWH" + Id, "Use W").SetValue(false)); config.AddItem(new MenuItem("UseEH" + Id, "Use E at max Stacks").SetValue(false)); return true; } public override bool DrawingMenu(Menu config) { config.AddItem( new MenuItem("DrawW" + Id, "W range").SetValue(new Circle(true, Color.FromArgb(100, 255, 0, 255)))); var dmgAfterComboItem = new MenuItem("DamageAfterCombo", "Damage After Combo").SetValue(true); Config.AddItem(dmgAfterComboItem); return true; } public override bool MiscMenu(Menu config) { config.AddItem(new MenuItem("UseEM" + Id, "Use E KS").SetValue(true)); return true; } public override bool ExtrasMenu(Menu config) { return true; } public override bool LaneClearMenu(Menu config) { config.AddItem( new MenuItem("E.Mobs" + Id, "Kill mobs with E").SetValue( new StringList(new[] {"All Mobs", "Baron + Dragon", "Siege Minion", "None"}))); return true; } } }