From 85b9fd809427e7187037fe34b26c792b815b04f6 Mon Sep 17 00:00:00 2001 From: andreluis034 Date: Fri, 12 Sep 2014 02:14:26 +0100 Subject: [PATCH 1/3] Updated Q and E logic --- Marksman/Vayne.cs | 74 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 58 insertions(+), 16 deletions(-) diff --git a/Marksman/Vayne.cs b/Marksman/Vayne.cs index ff5d055..0f2e89f 100644 --- a/Marksman/Vayne.cs +++ b/Marksman/Vayne.cs @@ -1,9 +1,12 @@ #region using System; +using System.Drawing; using System.Linq; +using System.Security.AccessControl; using LeagueSharp; using LeagueSharp.Common; +using SharpDX; #endregion @@ -13,15 +16,16 @@ internal class Vayne : Champion { public Spell E; public Spell Q; - + public Spell QE; public Vayne() { Utils.PrintMessage("Vayne loaded"); Q = new Spell(SpellSlot.Q, 0f); - E = new Spell(SpellSlot.E, float.MaxValue); + E = new Spell(SpellSlot.E, 550f); E.SetTargetted(0.25f, 2200f); + QE.SetTargetted(0.50f, 2200f); AntiGapcloser.OnEnemyGapcloser += AntiGapcloser_OnEnemyGapcloser; Interrupter.OnPosibleToInterrupt += Interrupter_OnPosibleToInterrupt; @@ -45,34 +49,72 @@ public override void Game_OnGameUpdate(EventArgs args) ((Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Combo || !GetValue("UseEC")) && !GetValue("UseET").Active)) return; - foreach (var hero in from hero in ObjectManager.Get().Where(hero => hero.IsValidTarget(550f)) - let prediction = E.GetPrediction(hero) - where NavMesh.GetCollisionFlags( - prediction.UnitPosition.To2D() - .Extend(ObjectManager.Player.ServerPosition.To2D(), -GetValue("PushDistance").Value) - .To3D()) - .HasFlag(CollisionFlags.Wall) || NavMesh.GetCollisionFlags( - prediction.UnitPosition.To2D() - .Extend(ObjectManager.Player.ServerPosition.To2D(), - -(GetValue("PushDistance").Value / 2)) - .To3D()) - .HasFlag(CollisionFlags.Wall) - select hero) + var normalTarget = SimpleTs.GetTarget(E.Range, SimpleTs.DamageType.Physical); + var qeTarget = SimpleTs.GetTarget(200+E.Range, SimpleTs.DamageType.Physical); + if (normalTarget.IsValid) + { + if (IsStunable(normalTarget)) + { + E.Cast(normalTarget); + } + } + else if (qeTarget.IsValid) { - E.Cast(hero); + if (!IsStunable(qeTarget) || !GetValue("UseQEC") || !Q.IsReady()) + { + return; + } + Q.Cast(qeTarget); + Utility.DelayAction.Add(250, () => E.Cast(qeTarget)); } + + } public override void Orbwalking_AfterAttack(Obj_AI_Base unit, Obj_AI_Base target) { if (unit.IsMe && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo && GetValue("UseQC")) + CastTumble((Obj_AI_Hero) target); + } + + public bool IsStunable(Obj_AI_Hero enemy) + { + var prediction = Vector3.DistanceSquared(enemy.ServerPosition, ObjectManager.Player.ServerPosition) > 550*550 ? QE.GetPrediction(enemy) : E.GetPrediction(enemy); + + if (prediction.Hitchance.Equals(HitChance.OutOfRange)) + { + return false; + } + + var hitbox = (int) enemy.BoundingRadius; + for (var i = 0; i < GetValue("PushDistance").Value; i+=hitbox) + { + if (NavMesh.GetCollisionFlags(prediction.UnitPosition.To2D().Extend(ObjectManager.Player.ServerPosition.To2D(), -i).To3D()).HasFlag(CollisionFlags.Wall)) + { + return true; + } + + } + return false; + } + + public void CastTumble(Obj_AI_Hero target) + { + + var posAfterTumble = Game.CursorPos.To2D().Extend(ObjectManager.Player.ServerPosition.To2D(), -300).To3D(); + var distanceAfterTumble = Vector3.DistanceSquared(posAfterTumble, target.ServerPosition); + if (distanceAfterTumble < 550*550 && distanceAfterTumble > 100*100) + { Q.Cast(Game.CursorPos); + } + } public override void ComboMenu(Menu config) { config.AddItem(new MenuItem("UseQC" + Id, "Use Q").SetValue(true)); config.AddItem(new MenuItem("UseEC" + Id, "Use E").SetValue(true)); + config.AddItem(new MenuItem("UseQEC" + Id, "Use QE if not in E range").SetValue(false)); } public override void MiscMenu(Menu config) From 0dd71addaf3bc2ffceb4716013881704d5711211 Mon Sep 17 00:00:00 2001 From: andreluis034 Date: Fri, 12 Sep 2014 14:58:16 +0100 Subject: [PATCH 2/3] Fixed Q --- Marksman/Vayne.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Marksman/Vayne.cs b/Marksman/Vayne.cs index 0f2e89f..508fd00 100644 --- a/Marksman/Vayne.cs +++ b/Marksman/Vayne.cs @@ -23,6 +23,7 @@ public Vayne() Q = new Spell(SpellSlot.Q, 0f); E = new Spell(SpellSlot.E, 550f); + QE = new Spell(SpellSlot.Q, 750f); E.SetTargetted(0.25f, 2200f); QE.SetTargetted(0.50f, 2200f); @@ -43,6 +44,7 @@ public void Interrupter_OnPosibleToInterrupt(Obj_AI_Base unit, InterruptableSpel E.Cast(unit); } + public override void Game_OnGameUpdate(EventArgs args) { if ((!E.IsReady()) || @@ -71,6 +73,9 @@ public override void Game_OnGameUpdate(EventArgs args) } + + + public override void Orbwalking_AfterAttack(Obj_AI_Base unit, Obj_AI_Base target) { if (unit.IsMe && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo && GetValue("UseQC")) @@ -86,8 +91,7 @@ public bool IsStunable(Obj_AI_Hero enemy) return false; } - var hitbox = (int) enemy.BoundingRadius; - for (var i = 0; i < GetValue("PushDistance").Value; i+=hitbox) + for (var i = 0; i < GetValue("PushDistance").Value; i += (int)enemy.BoundingRadius) { if (NavMesh.GetCollisionFlags(prediction.UnitPosition.To2D().Extend(ObjectManager.Player.ServerPosition.To2D(), -i).To3D()).HasFlag(CollisionFlags.Wall)) { @@ -101,7 +105,7 @@ public bool IsStunable(Obj_AI_Hero enemy) public void CastTumble(Obj_AI_Hero target) { - var posAfterTumble = Game.CursorPos.To2D().Extend(ObjectManager.Player.ServerPosition.To2D(), -300).To3D(); + var posAfterTumble = ObjectManager.Player.ServerPosition.To2D().Extend(Game.CursorPos.To2D(), 300).To3D(); var distanceAfterTumble = Vector3.DistanceSquared(posAfterTumble, target.ServerPosition); if (distanceAfterTumble < 550*550 && distanceAfterTumble > 100*100) { From f94c6ba2f33f0f397c9ee538f259bd1e67f17b1b Mon Sep 17 00:00:00 2001 From: andreluis034 Date: Fri, 12 Sep 2014 15:04:38 +0100 Subject: [PATCH 3/3] Resharp --- Marksman/Vayne.cs | 48 ++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/Marksman/Vayne.cs b/Marksman/Vayne.cs index 508fd00..05666cc 100644 --- a/Marksman/Vayne.cs +++ b/Marksman/Vayne.cs @@ -1,9 +1,6 @@ #region using System; -using System.Drawing; -using System.Linq; -using System.Security.AccessControl; using LeagueSharp; using LeagueSharp.Common; using SharpDX; @@ -17,6 +14,7 @@ internal class Vayne : Champion public Spell E; public Spell Q; public Spell QE; + public Vayne() { Utils.PrintMessage("Vayne loaded"); @@ -35,13 +33,17 @@ public Vayne() public void AntiGapcloser_OnEnemyGapcloser(ActiveGapcloser gapcloser) { if (E.IsReady() && gapcloser.Sender.IsValidTarget(E.Range)) + { E.CastOnUnit(gapcloser.Sender); + } } public void Interrupter_OnPosibleToInterrupt(Obj_AI_Base unit, InterruptableSpell spell) { if (GetValue("UseEInterrupt") && unit.IsValidTarget(550f)) + { E.Cast(unit); + } } @@ -49,16 +51,19 @@ public override void Game_OnGameUpdate(EventArgs args) { if ((!E.IsReady()) || ((Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Combo || !GetValue("UseEC")) && - !GetValue("UseET").Active)) return; + !GetValue("UseET").Active)) + { + return; + } var normalTarget = SimpleTs.GetTarget(E.Range, SimpleTs.DamageType.Physical); - var qeTarget = SimpleTs.GetTarget(200+E.Range, SimpleTs.DamageType.Physical); + var qeTarget = SimpleTs.GetTarget(200 + E.Range, SimpleTs.DamageType.Physical); if (normalTarget.IsValid) { if (IsStunable(normalTarget)) { E.Cast(normalTarget); - } + } } else if (qeTarget.IsValid) { @@ -69,49 +74,51 @@ public override void Game_OnGameUpdate(EventArgs args) Q.Cast(qeTarget); Utility.DelayAction.Add(250, () => E.Cast(qeTarget)); } - - } - - public override void Orbwalking_AfterAttack(Obj_AI_Base unit, Obj_AI_Base target) { if (unit.IsMe && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo && GetValue("UseQC")) + { CastTumble((Obj_AI_Hero) target); + } } public bool IsStunable(Obj_AI_Hero enemy) { - var prediction = Vector3.DistanceSquared(enemy.ServerPosition, ObjectManager.Player.ServerPosition) > 550*550 ? QE.GetPrediction(enemy) : E.GetPrediction(enemy); - + var prediction = + Vector3.DistanceSquared(enemy.ServerPosition, ObjectManager.Player.ServerPosition) > 550 * 550 + ? QE.GetPrediction(enemy) + : E.GetPrediction(enemy); + if (prediction.Hitchance.Equals(HitChance.OutOfRange)) { return false; } - for (var i = 0; i < GetValue("PushDistance").Value; i += (int)enemy.BoundingRadius) + for (var i = 0; i < GetValue("PushDistance").Value; i += (int) enemy.BoundingRadius) { - if (NavMesh.GetCollisionFlags(prediction.UnitPosition.To2D().Extend(ObjectManager.Player.ServerPosition.To2D(), -i).To3D()).HasFlag(CollisionFlags.Wall)) + if ( + NavMesh.GetCollisionFlags( + prediction.UnitPosition.To2D().Extend(ObjectManager.Player.ServerPosition.To2D(), -i).To3D()) + .HasFlag(CollisionFlags.Wall)) { return true; } - } return false; } public void CastTumble(Obj_AI_Hero target) { - - var posAfterTumble = ObjectManager.Player.ServerPosition.To2D().Extend(Game.CursorPos.To2D(), 300).To3D(); + var posAfterTumble = + ObjectManager.Player.ServerPosition.To2D().Extend(Game.CursorPos.To2D(), 300).To3D(); var distanceAfterTumble = Vector3.DistanceSquared(posAfterTumble, target.ServerPosition); - if (distanceAfterTumble < 550*550 && distanceAfterTumble > 100*100) + if (distanceAfterTumble < 550 * 550 && distanceAfterTumble > 100 * 100) { Q.Cast(Game.CursorPos); } - } public override void ComboMenu(Menu config) @@ -127,8 +134,7 @@ public override void MiscMenu(Menu config) new MenuItem("UseET" + Id, "Use E (Toggle)").SetValue( new KeyBind("T".ToCharArray()[0], KeyBindType.Toggle))); config.AddItem(new MenuItem("UseEInterrupt" + Id, "Use E To Interrupt").SetValue(true)); - config.AddItem( - new MenuItem("PushDistance" + Id, "E Push Distance").SetValue(new Slider(425, 475, 300))); + config.AddItem(new MenuItem("PushDistance" + Id, "E Push Distance").SetValue(new Slider(425, 475, 300))); } } } \ No newline at end of file