Teem


SUBMITTED BY: Alerand

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

FORMAT: Text only

SIZE: 7.8 kB

HITS: 10395

  1. #region
  2. using System;
  3. using System.Drawing;
  4. using System.Linq;
  5. using LeagueSharp;
  6. using LeagueSharp.Common;
  7. using Marksman.Utils;
  8. #endregion
  9. namespace Marksman.Champions
  10. {
  11. internal class Sivir : Champion
  12. {
  13. public static Spell Q;
  14. private Menu _menuSupportedSpells;
  15. public Spell E;
  16. public Spell W;
  17. public Sivir()
  18. {
  19. Q = new Spell(SpellSlot.Q, 1220);
  20. Q.SetSkillshot(0.25f, 90f, 1350f, false, SkillshotType.SkillshotLine);
  21. W = new Spell(SpellSlot.W, 593);
  22. E = new Spell(SpellSlot.E);
  23. Obj_AI_Base.OnProcessSpellCast += Obj_AI_Hero_OnProcessSpellCast;
  24. Utils.Utils.PrintMessage("Sivir loaded.");
  25. Utils.Utils.PrintMessage("Sivir E Support Loaded! Please check the Marksman Menu for her E Spell");
  26. }
  27. public void Obj_AI_Hero_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
  28. {
  29. if (!sender.IsMe && sender.IsEnemy && (sender is Obj_AI_Hero) && args.Target.IsMe && E.IsReady() &&
  30. ((Obj_AI_Hero) sender).ChampionName == "Vayne")
  31. {
  32. var buffs = ObjectManager.Player.Buffs.Where(b => b.Name.Contains("silvereddebuff"));
  33. if (buffs.Count() == 2 && Evade.Config.MenuSkillShots.Item("VayneBlockSilverBuff").GetValue<bool>())
  34. E.Cast();
  35. }
  36. }
  37. public override void Game_OnGameUpdate(EventArgs args)
  38. {
  39. if (GetValue<bool>("AutoQ"))
  40. {
  41. var t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
  42. if (Q.IsReady() && t.IsValidTarget())
  43. {
  44. if ((t.HasBuffOfType(BuffType.Slow) || t.HasBuffOfType(BuffType.Stun) ||
  45. t.HasBuffOfType(BuffType.Snare) || t.HasBuffOfType(BuffType.Fear) ||
  46. t.HasBuffOfType(BuffType.Taunt)))
  47. {
  48. CastQ();
  49. }
  50. }
  51. }
  52. if (ComboActive || HarassActive)
  53. {
  54. var useQ = GetValue<bool>("UseQ" + (ComboActive ? "C" : "H"));
  55. if (Q.IsReady() && useQ)
  56. {
  57. var t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
  58. if (t != null)
  59. {
  60. CastQ();
  61. }
  62. }
  63. }
  64. }
  65. public override void DeathWalker_AfterAttack(AttackableUnit unit, AttackableUnit target)
  66. {
  67. var t = target as Obj_AI_Hero;
  68. if (t != null && (ComboActive || HarassActive) && unit.IsMe)
  69. {
  70. var useQ = GetValue<bool>("UseQ" + (ComboActive ? "C" : "H"));
  71. var useW = GetValue<bool>("UseW" + (ComboActive ? "C" : "H"));
  72. if (W.IsReady() && useW)
  73. {
  74. W.Cast();
  75. }
  76. else if (Q.IsReady() && useQ)
  77. {
  78. CastQ();
  79. }
  80. }
  81. }
  82. private static void CastQ()
  83. {
  84. var t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
  85. if (t.IsValidTarget() && Q.IsReady() &&
  86. ObjectManager.Player.Distance(t.ServerPosition) <= Q.Range)
  87. {
  88. var Qpredict = Q.GetPrediction(t);
  89. var hithere = Qpredict.CastPosition.Extend(ObjectManager.Player.Position, -140);
  90. var Hitchance = HitChance.High;
  91. if (ObjectManager.Player.Distance(t) >= 850)
  92. Hitchance = HitChance.VeryHigh;
  93. else if (ObjectManager.Player.Distance(t) < 850 && ObjectManager.Player.Distance(t) > 600)
  94. Hitchance = HitChance.High;
  95. else
  96. Hitchance = HitChance.Medium;
  97. if (Qpredict.Hitchance >= Hitchance)
  98. Q.Cast(hithere);
  99. }
  100. }
  101. public override void Drawing_OnDraw(EventArgs args)
  102. {
  103. Spell[] spellList = {Q};
  104. foreach (var spell in spellList)
  105. {
  106. var menuItem = GetValue<Circle>("Draw" + spell.Slot);
  107. if (menuItem.Active)
  108. Render.Circle.DrawCircle(ObjectManager.Player.Position, spell.Range, menuItem.Color);
  109. }
  110. }
  111. public override bool ComboMenu(Menu config)
  112. {
  113. config.AddItem(new MenuItem("UseQC" + Id, "Use Q").SetValue(true));
  114. config.AddItem(new MenuItem("UseWC" + Id, "Use W").SetValue(true));
  115. return true;
  116. }
  117. public override bool HarassMenu(Menu config)
  118. {
  119. config.AddItem(new MenuItem("UseQH" + Id, "Use Q").SetValue(false));
  120. config.AddItem(new MenuItem("UseWH" + Id, "Use W").SetValue(false));
  121. return true;
  122. }
  123. public override bool MiscMenu(Menu config)
  124. {
  125. config.AddItem(new MenuItem("AutoQ" + Id, "Auto Q on Stun/Slow/Fear/Taunt/Snare").SetValue(true));
  126. return true;
  127. }
  128. public override bool DrawingMenu(Menu config)
  129. {
  130. config.AddItem(
  131. new MenuItem("DrawQ" + Id, "Q range").SetValue(new Circle(true, Color.FromArgb(100, 255, 0, 255))));
  132. return true;
  133. }
  134. public override bool ExtrasMenu(Menu config)
  135. {
  136. return true;
  137. }
  138. public override bool LaneClearMenu(Menu config)
  139. {
  140. return true;
  141. }
  142. private void Game_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
  143. {
  144. if (sender.Type == GameObjectType.obj_AI_Hero && sender.IsEnemy)
  145. {
  146. foreach (var spell in
  147. _menuSupportedSpells.Items.SelectMany(
  148. t =>
  149. SpellList.BuffList.Where(
  150. xSpell => xSpell.CanBlockWith.ToList().Contains(BlockableSpells.SivirE))
  151. .Where(
  152. spell => t.Name == args.SData.Name && t.Name == spell.BuffName && t.GetValue<bool>()))
  153. )
  154. {
  155. switch (spell.SkillType)
  156. {
  157. case SkillShotType.SkillshotCircle:
  158. if (ObjectManager.Player.Distance(args.End) <= 250f)
  159. {
  160. if (E.IsReady())
  161. E.Cast();
  162. }
  163. break;
  164. case SkillShotType.SkillshotLine:
  165. if (ObjectManager.Player.Distance(args.End) <= 100f)
  166. {
  167. if (E.IsReady())
  168. E.Cast();
  169. }
  170. break;
  171. case SkillShotType.SkillshotUnknown:
  172. if (ObjectManager.Player.Distance(args.End) <= 500f ||
  173. ObjectManager.Player.Distance(sender.Position) <= 500)
  174. {
  175. if (E.IsReady())
  176. E.Cast();
  177. }
  178. break;
  179. }
  180. }
  181. }
  182. }
  183. }
  184. }

comments powered by Disqus