AhScript


SUBMITTED BY: Alerand

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

UPDATED: May 7, 2016, 10:47 a.m.

FORMAT: Text only

SIZE: 12.2 kB

HITS: 12240

  1. Skip to content
  2. Personal Open source Business Explore
  3. Sign upSign inPricingBlogSupport
  4. This repository
  5. Search
  6. Watch 1 Star 2 Fork 13 detuks/GoodGuyJodu
  7. Code Issues 0 Pull requests 0 Pulse Graphs
  8. Branch: master Find file Copy pathGoodGuyJodu/DeadMan/Champions/Ashe.cs
  9. 262dc5c on 21 Sep 2015
  10. @detuks detuks Deadman ;D is in well I hope staff guys wont assasinate me
  11. 1 contributor
  12. RawBlameHistory 295 lines (244 sloc) 11.1 KB
  13. #region
  14. using System;
  15. using System.Linq;
  16. using DetuksSharp;
  17. using LeagueSharp;
  18. using LeagueSharp.Common;
  19. using SharpDX;
  20. using SharpDX.Direct3D9;
  21. #endregion
  22. namespace Marksman.Champions
  23. {
  24. internal class Ashe : Champion
  25. {
  26. public static Spell Q;
  27. public static Spell W;
  28. public static Spell E;
  29. public static Spell R;
  30. public Ashe()
  31. {
  32. Q = new Spell(SpellSlot.Q);
  33. W = new Spell(SpellSlot.W, 1200);
  34. E = new Spell(SpellSlot.E);
  35. R = new Spell(SpellSlot.R, 20000);
  36. W.SetSkillshot(250f, (float) (24.32f*Math.PI/180), 902f, true, SkillshotType.SkillshotCone);
  37. E.SetSkillshot(377f, 299f, 1400f, false, SkillshotType.SkillshotLine);
  38. R.SetSkillshot(250f, 130f, 1600f, false, SkillshotType.SkillshotLine);
  39. Obj_AI_Base.OnProcessSpellCast += Game_OnProcessSpell;
  40. Interrupter2.OnInterruptableTarget += Interrupter2_OnInterruptableTarget;
  41. Utility.HpBarDamageIndicator.DamageToUnit = GetComboDamage;
  42. Utility.HpBarDamageIndicator.Enabled = true;
  43. Utils.Utils.PrintMessage("Ashe loaded.");
  44. }
  45. private static bool AsheQCastReady
  46. {
  47. get { return ObjectManager.Player.HasBuff("AsheQCastReady", true); }
  48. }
  49. public bool IsQActive
  50. {
  51. get { return ObjectManager.Player.HasBuff("FrostShot"); }
  52. }
  53. private void Interrupter2_OnInterruptableTarget(Obj_AI_Hero unit, Interrupter2.InterruptableTargetEventArgs args)
  54. {
  55. if (R.IsReady() && Config.Item("RInterruptable" + Id).GetValue<bool>() && unit.IsValidTarget(1500))
  56. {
  57. R.Cast(unit);
  58. }
  59. }
  60. private static float GetComboDamage(Obj_AI_Hero t)
  61. {
  62. var fComboDamage = 0f;
  63. if (W.IsReady())
  64. fComboDamage += (float) ObjectManager.Player.GetSpellDamage(t, SpellSlot.W);
  65. if (R.IsReady())
  66. fComboDamage += (float) ObjectManager.Player.GetSpellDamage(t, SpellSlot.R);
  67. if (ObjectManager.Player.GetSpellSlot("summonerdot") != SpellSlot.Unknown &&
  68. ObjectManager.Player.Spellbook.CanUseSpell(ObjectManager.Player.GetSpellSlot("summonerdot")) ==
  69. SpellState.Ready && ObjectManager.Player.Distance(t) < 550)
  70. fComboDamage += (float) ObjectManager.Player.GetSummonerSpellDamage(t, Damage.SummonerSpell.Ignite);
  71. if (Items.CanUseItem(3144) && ObjectManager.Player.Distance(t) < 550)
  72. fComboDamage += (float) ObjectManager.Player.GetItemDamage(t, Damage.DamageItems.Bilgewater);
  73. if (Items.CanUseItem(3153) && ObjectManager.Player.Distance(t) < 550)
  74. fComboDamage += (float) ObjectManager.Player.GetItemDamage(t, Damage.DamageItems.Botrk);
  75. return fComboDamage;
  76. }
  77. public void Game_OnProcessSpell(Obj_AI_Base unit, GameObjectProcessSpellCastEventArgs spell)
  78. {
  79. if (!Config.Item("EFlash" + Id).GetValue<bool>() || unit.Team == ObjectManager.Player.Team)
  80. return;
  81. if (spell.SData.Name.ToLower() == "summonerflash")
  82. E.Cast(spell.End);
  83. }
  84. public override void Game_OnGameUpdate(EventArgs args)
  85. {
  86. if (LaneClearActive)
  87. {
  88. if (Program.Config.Item("UseQForBigBoys").GetValue<bool>())
  89. JungleFarm();
  90. }
  91. else if (!ComboActive)
  92. {
  93. var t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);
  94. if (!t.IsValidTarget() || !W.IsReady())
  95. return;
  96. if (Program.Config.Item("UseWTH").GetValue<KeyBind>().Active)
  97. {
  98. if (ObjectManager.Player.HasBuff("Recall"))
  99. return;
  100. W.Cast(t);
  101. }
  102. if (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) ||
  103. t.HasBuffOfType(BuffType.Charm) || t.HasBuffOfType(BuffType.Fear) ||
  104. t.HasBuffOfType(BuffType.Taunt) || t.HasBuff("zhonyasringshield") ||
  105. t.HasBuff("Recall"))
  106. {
  107. W.Cast(t.Position);
  108. }
  109. }
  110. /* [ Combo ] */
  111. if (ComboActive)
  112. {
  113. var useQ = Config.Item("UseQC" + Id).GetValue<bool>();
  114. var useW = Config.Item("UseWC" + Id).GetValue<bool>();
  115. var t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);
  116. if (useQ && Q.IsReady() && AsheQCastReady)
  117. {
  118. if (t.IsValidTarget(DeathWalker.getRealAutoAttackRange(null) + 90))
  119. {
  120. Q.Cast();
  121. }
  122. }
  123. if (useW && W.IsReady() && t.IsValidTarget())
  124. {
  125. W.Cast(t);
  126. }
  127. var useR = Program.Config.SubMenu("Combo").Item("UseRC").GetValue<bool>();
  128. if (useR && R.IsReady())
  129. {
  130. var minRRange = Program.Config.SubMenu("Combo").Item("UseRCMinRange").GetValue<Slider>().Value;
  131. var maxRRange = Program.Config.SubMenu("Combo").Item("UseRCMaxRange").GetValue<Slider>().Value;
  132. t = TargetSelector.GetTarget(maxRRange, TargetSelector.DamageType.Physical);
  133. if (!t.IsValidTarget())
  134. return;
  135. var aaDamage = DeathWalker.inAutoAttackRange(t)
  136. ? ObjectManager.Player.GetAutoAttackDamage(t, true)
  137. : 0;
  138. if (t.Health > aaDamage && t.Health <= ObjectManager.Player.GetSpellDamage(t, SpellSlot.R) &&
  139. ObjectManager.Player.Distance(t) >= minRRange)
  140. {
  141. R.Cast(t);
  142. }
  143. }
  144. }
  145. //Harass
  146. if (HarassActive)
  147. {
  148. var target = TargetSelector.GetTarget(1200, TargetSelector.DamageType.Physical);
  149. if (target == null)
  150. return;
  151. if (Config.Item("UseWH" + Id).GetValue<bool>() && W.IsReady())
  152. W.Cast(target);
  153. }
  154. //Manual cast R
  155. if (Config.Item("RManualCast" + Id).GetValue<KeyBind>().Active)
  156. {
  157. var rTarget = TargetSelector.GetTarget(2000, TargetSelector.DamageType.Physical);
  158. R.Cast(rTarget);
  159. }
  160. }
  161. public override bool ComboMenu(Menu config)
  162. {
  163. config.AddItem(new MenuItem("UseQC" + Id, "Q").SetValue(true));
  164. config.AddItem(new MenuItem("UseWC" + Id, "W").SetValue(true));
  165. var xRMenu = new Menu("R", "ComboR");
  166. {
  167. xRMenu.AddItem(new MenuItem("UseRC", "Use").SetValue(true));
  168. xRMenu.AddItem(new MenuItem("UseRCMinRange", "Min. Range").SetValue(new Slider(200, 200, 1000)));
  169. xRMenu.AddItem(new MenuItem("UseRCMaxRange", "Max. Range").SetValue(new Slider(500, 500, 2000)));
  170. xRMenu.AddItem(
  171. new MenuItem("DrawRMin", "Draw Min. R Range").SetValue(
  172. new Circle(true, System.Drawing.Color.DarkRed)));
  173. xRMenu.AddItem(
  174. new MenuItem("DrawRMax", "Draw Max. R Range").SetValue(
  175. new Circle(true, System.Drawing.Color.DarkMagenta)));
  176. config.AddSubMenu(xRMenu);
  177. }
  178. return true;
  179. }
  180. public override bool HarassMenu(Menu config)
  181. {
  182. config.AddItem(new MenuItem("UseWH" + Id, "W").SetValue(true));
  183. config.AddItem(
  184. new MenuItem("UseWTH", "Use W (Toggle)").SetValue(new KeyBind("H".ToCharArray()[0], KeyBindType.Toggle)));
  185. return true;
  186. }
  187. public override bool LaneClearMenu(Menu config)
  188. {
  189. config.AddItem(new MenuItem("UseQForBigBoys", "Use Q For Baron/Dragon/Red/Blue").SetValue(true));
  190. return true;
  191. }
  192. public override bool DrawingMenu(Menu config)
  193. {
  194. config.AddItem(
  195. new MenuItem("DrawW" + Id, "W range").SetValue(new Circle(true, System.Drawing.Color.CornflowerBlue)));
  196. config.AddItem(
  197. new MenuItem("DrawE" + Id, "E range").SetValue(new Circle(true,
  198. System.Drawing.Color.FromArgb(100, 255, 0, 255))));
  199. return true;
  200. }
  201. public override bool MiscMenu(Menu config)
  202. {
  203. config.AddItem(new MenuItem("RInterruptable" + Id, "Auto R Interruptable Spells").SetValue(true));
  204. config.AddItem(new MenuItem("EFlash" + Id, "Use E against Flashes").SetValue(true));
  205. config.AddItem(new MenuItem("RManualCast" + Id, "Cast R Manually(2000 range)"))
  206. .SetValue(new KeyBind('T', KeyBindType.Press));
  207. return true;
  208. }
  209. public override void Drawing_OnDraw(EventArgs args)
  210. {
  211. var drawW = Config.Item("DrawW" + Id).GetValue<Circle>();
  212. if (drawW.Active)
  213. {
  214. Render.Circle.DrawCircle(ObjectManager.Player.Position, W.Range, drawW.Color);
  215. }
  216. var drawE = Config.Item("DrawE" + Id).GetValue<Circle>();
  217. if (drawE.Active)
  218. {
  219. Render.Circle.DrawCircle(ObjectManager.Player.Position, E.Range, drawE.Color);
  220. }
  221. var drawRMin = Program.Config.SubMenu("Combo").Item("DrawRMin").GetValue<Circle>();
  222. if (drawRMin.Active)
  223. {
  224. var minRRange = Program.Config.SubMenu("Combo").Item("UseRCMinRange").GetValue<Slider>().Value;
  225. Render.Circle.DrawCircle(ObjectManager.Player.Position, minRRange, drawRMin.Color, 2);
  226. }
  227. var drawRMax = Program.Config.SubMenu("Combo").Item("DrawRMax").GetValue<Circle>();
  228. if (drawRMax.Active)
  229. {
  230. var maxRRange = Program.Config.SubMenu("Combo").Item("UseRCMaxRange").GetValue<Slider>().Value;
  231. Render.Circle.DrawCircle(ObjectManager.Player.Position, maxRRange, drawRMax.Color, 2);
  232. }
  233. }
  234. private static void JungleFarm()
  235. {
  236. var mobs = MinionManager.GetMinions(ObjectManager.Player.ServerPosition,
  237. DeathWalker.getRealAutoAttackRange(null) + 65, MinionTypes.All,
  238. MinionTeam.Neutral, MinionOrderTypes.MaxHealth);
  239. if (mobs == null)
  240. return;
  241. var mob = mobs[0];
  242. string[] bigBoys = {"Baron", "Dragon", "Red", "Blue"};
  243. foreach (
  244. var xbigBoys in
  245. bigBoys.Where(xbigBoys => mob.Name.Contains(xbigBoys))
  246. .Where(xbigBoys => Q.IsReady() && AsheQCastReady))
  247. {
  248. Q.Cast();
  249. }
  250. }
  251. public override bool ExtrasMenu(Menu config)
  252. {
  253. return true;
  254. }
  255. }
  256. }
  257. Status API Training Shop Blog About
  258. © 2016 GitHub, Inc. Terms Privacy Security Contact Help

comments powered by Disqus