Twch


SUBMITTED BY: Alerand

DATE: May 7, 2016, 10:59 a.m.

FORMAT: Text only

SIZE: 7.5 kB

HITS: 10147

  1. #region
  2. using System;
  3. using System.Drawing;
  4. using System.Linq;
  5. using DetuksSharp;
  6. using LeagueSharp;
  7. using LeagueSharp.Common;
  8. #endregion
  9. namespace Marksman.Champions
  10. {
  11. internal class Twitch : Champion
  12. {
  13. public static Spell W;
  14. public static Spell E;
  15. public Twitch()
  16. {
  17. W = new Spell(SpellSlot.W, 950);
  18. W.SetSkillshot(0.25f, 120f, 1400f, false, SkillshotType.SkillshotCircle);
  19. E = new Spell(SpellSlot.E, 1200);
  20. Utility.HpBarDamageIndicator.DamageToUnit = GetComboDamage;
  21. Utility.HpBarDamageIndicator.Enabled = true;
  22. Utils.Utils.PrintMessage("Twitch loaded.");
  23. }
  24. public override void DeathWalker_AfterAttack(AttackableUnit unit, AttackableUnit target)
  25. {
  26. var t = target as Obj_AI_Hero;
  27. if (t == null || (!ComboActive && !HarassActive) || !unit.IsMe)
  28. return;
  29. var useW = GetValue<bool>("UseW" + (ComboActive ? "C" : "H"));
  30. if (useW && W.IsReady())
  31. W.Cast(t, false, true);
  32. }
  33. public override void Drawing_OnDraw(EventArgs args)
  34. {
  35. Spell[] spellList = {W};
  36. foreach (var spell in spellList)
  37. {
  38. var menuItem = GetValue<Circle>("Draw" + spell.Slot);
  39. if (menuItem.Active)
  40. Render.Circle.DrawCircle(ObjectManager.Player.Position, spell.Range, menuItem.Color);
  41. }
  42. }
  43. public override void Game_OnGameUpdate(EventArgs args)
  44. {
  45. if (DeathWalker.canMove() && (ComboActive || HarassActive))
  46. {
  47. var useW = GetValue<bool>("UseW" + (ComboActive ? "C" : "H"));
  48. var useE = GetValue<bool>("UseE" + (ComboActive ? "C" : "H"));
  49. if (useW)
  50. {
  51. var wTarget = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);
  52. if (W.IsReady() && wTarget.IsValidTarget())
  53. W.Cast(wTarget, false, true);
  54. }
  55. if (useE && E.IsReady())
  56. {
  57. var eTarget = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical);
  58. if (eTarget.IsValidTarget(E.Range))
  59. {
  60. foreach (
  61. var buff in
  62. eTarget.Buffs.Where(buff => buff.DisplayName.ToLower() == "twitchdeadlyvenom")
  63. .Where(buff => buff.Count == 6))
  64. {
  65. E.Cast();
  66. }
  67. }
  68. // credits iMeh
  69. var minions = MinionManager.GetMinions(E.Range, MinionTypes.All, MinionTeam.NotAlly);
  70. foreach (var m in minions)
  71. {
  72. switch (GetValue<StringList>("E.Mobs").SelectedIndex)
  73. {
  74. case 0:
  75. if ((m.CharData.BaseSkinName.Contains("MinionSiege") || m.CharData.BaseSkinName.Contains("Dragon") ||
  76. m.CharData.BaseSkinName.Contains("Baron")) && E.IsKillable(m))
  77. {
  78. E.Cast();
  79. }
  80. break;
  81. case 1:
  82. if ((m.CharData.BaseSkinName.Contains("Dragon") || m.CharData.BaseSkinName.Contains("Baron")) &&
  83. E.IsKillable(m))
  84. {
  85. E.Cast();
  86. }
  87. break;
  88. case 2:
  89. if (m.CharData.BaseSkinName.Contains("MinionSiege") &&
  90. E.IsKillable(m))
  91. {
  92. E.Cast();
  93. }
  94. break;
  95. }
  96. }
  97. }
  98. }
  99. if (GetValue<bool>("UseEM") && E.IsReady())
  100. {
  101. foreach (
  102. var hero in
  103. ObjectManager.Get<Obj_AI_Hero>()
  104. .Where(
  105. hero =>
  106. hero.IsValidTarget(E.Range) &&
  107. (ObjectManager.Player.GetSpellDamage(hero, SpellSlot.E) - 10 > hero.Health)))
  108. {
  109. E.Cast();
  110. }
  111. }
  112. }
  113. private static float GetComboDamage(Obj_AI_Hero t)
  114. {
  115. var fComboDamage = 0f;
  116. if (E.IsReady())
  117. fComboDamage += (float) ObjectManager.Player.GetSpellDamage(t, SpellSlot.E);
  118. if (ObjectManager.Player.GetSpellSlot("summonerdot") != SpellSlot.Unknown &&
  119. ObjectManager.Player.Spellbook.CanUseSpell(ObjectManager.Player.GetSpellSlot("summonerdot")) ==
  120. SpellState.Ready && ObjectManager.Player.Distance(t) < 550)
  121. fComboDamage += (float) ObjectManager.Player.GetSummonerSpellDamage(t, Damage.SummonerSpell.Ignite);
  122. if (Items.CanUseItem(3144) && ObjectManager.Player.Distance(t) < 550)
  123. fComboDamage += (float) ObjectManager.Player.GetItemDamage(t, Damage.DamageItems.Bilgewater);
  124. if (Items.CanUseItem(3153) && ObjectManager.Player.Distance(t) < 550)
  125. fComboDamage += (float) ObjectManager.Player.GetItemDamage(t, Damage.DamageItems.Botrk);
  126. return fComboDamage;
  127. }
  128. public override bool ComboMenu(Menu config)
  129. {
  130. config.AddItem(new MenuItem("UseWC" + Id, "Use W").SetValue(true));
  131. config.AddItem(new MenuItem("UseEC" + Id, "Use E max Stacks").SetValue(true));
  132. return true;
  133. }
  134. public override bool HarassMenu(Menu config)
  135. {
  136. config.AddItem(new MenuItem("UseWH" + Id, "Use W").SetValue(false));
  137. config.AddItem(new MenuItem("UseEH" + Id, "Use E at max Stacks").SetValue(false));
  138. return true;
  139. }
  140. public override bool DrawingMenu(Menu config)
  141. {
  142. config.AddItem(
  143. new MenuItem("DrawW" + Id, "W range").SetValue(new Circle(true, Color.FromArgb(100, 255, 0, 255))));
  144. var dmgAfterComboItem = new MenuItem("DamageAfterCombo", "Damage After Combo").SetValue(true);
  145. Config.AddItem(dmgAfterComboItem);
  146. return true;
  147. }
  148. public override bool MiscMenu(Menu config)
  149. {
  150. config.AddItem(new MenuItem("UseEM" + Id, "Use E KS").SetValue(true));
  151. return true;
  152. }
  153. public override bool ExtrasMenu(Menu config)
  154. {
  155. return true;
  156. }
  157. public override bool LaneClearMenu(Menu config)
  158. {
  159. config.AddItem(
  160. new MenuItem("E.Mobs" + Id, "Kill mobs with E").SetValue(
  161. new StringList(new[] {"All Mobs", "Baron + Dragon", "Siege Minion", "None"})));
  162. return true;
  163. }
  164. }
  165. }

comments powered by Disqus