private void Game_OnUpdate(EventArgs args) { if (q.IsReady() && player.Mana > q.ManaCost) { foreach (Obj_AI_Hero objAiHero in player.GetEnemiesInRange(q.Range).Where(hero => !hero.IsDead && !hero.IsZombie && q.IsKillable(hero))) { PredictionOutput predictionOutput = q.GetPrediction(objAiHero); if ((predictionOutput.Hitchance >= HitChance.High) && ((!q.GetCollision(player.Position.To2D(), new List <Vector2> { predictionOutput.CastPosition.To2D() }).Any()) || q.GetDamage(objAiHero) / 2 > objAiHero.Health)) { q.Cast(predictionOutput.CastPosition); //Console.WriteLine("ks q"); } } } if (e.IsReady() && player.Mana > e.ManaCost) { if (player.GetEnemiesInRange(e.Range).Any(hero => !hero.IsDead && !hero.IsZombie && e.IsKillable(hero))) { e.Cast(); //Console.WriteLine("ks e"); } } if (zedOrbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Combo || !zedShadows.CanCast) { return; } List <Obj_AI_Hero> heroList = ObjectManager.Player.GetEnemiesInRange(2000F); if (heroList.Count() == 1) { Obj_AI_Hero target = heroList.FirstOrDefault(); if (target != null && zedShadows.CanCast && player.Distance(target) > Orbwalking.GetRealAutoAttackRange(target) && player.Distance(target) < w.Range + Orbwalking.GetRealAutoAttackRange(target) && player.GetAutoAttackDamage(target) > target.Health && player.Mana > w.ManaCost) { zedShadows.Cast(target.Position); //Console.WriteLine("ks w 1"); zedShadows.Switch(); //Console.WriteLine("ks w 2"); } } }
private void Harass() { actionQueue.ExecuteNextAction(harasQueue); shadows.Harass(); float maxRange = float.MaxValue; if (!energy.ReadyToHaras) { return; } List <Obj_AI_Hero> blackList = zedMenu.GetBlockList(BlockListType.Harass); if ((w.UseOnHarass && w.IsReady() && w.Instance.ToggleState == 0) && (player.HealthPercent > zedMenu.GetParamSlider("koreanzed.harasmenu.wusage.dontuselowlife") && HeroManager.Enemies.Count( hero => !hero.IsDead && !hero.IsZombie && player.Distance(hero) < 2000F) < zedMenu.GetParamSlider("koreanzed.harasmenu.wusage.dontuseagainst"))) { if (q.UseOnHarass) { if (q.UseOnHarass && q.IsReady() && (player.Mana > q.ManaCost + w.ManaCost)) { switch ((ShadowHarassTrigger)zedMenu.GetParamStringList("koreanzed.harasmenu.wusage.trigger")) { case ShadowHarassTrigger.MaxRange: maxRange = Math.Min(maxRange, q.Range + w.Range); break; case ShadowHarassTrigger.MaxDamage: maxRange = Math.Min(maxRange, w.Range + e.Range); break; } Obj_AI_Hero target = TargetSelector.GetTarget(maxRange, q.DamageType, true, blackList); if (target != null) { shadows.Cast(target); actionQueue.EnqueueAction(harasQueue, () => true, () => shadows.Harass(), () => false); } } } if (e.UseOnHarass && e.IsReady() && (player.Mana > e.ManaCost + w.ManaCost)) { maxRange = Math.Min(maxRange, e.Range + w.Range); Obj_AI_Hero target = TargetSelector.GetTarget(maxRange, e.DamageType, true, blackList); if (target != null) { shadows.Cast(target); actionQueue.EnqueueAction(harasQueue, () => true, () => shadows.Harass(), () => false); } } } if (q.UseOnHarass && energy.ReadyToHaras) { maxRange = Math.Min(maxRange, q.Range); Obj_AI_Hero target = TargetSelector.GetTarget(maxRange, q.DamageType, true, blackList); if (target != null) { PredictionOutput predictionOutput = q.GetPrediction(target); bool checkColision = zedMenu.GetParamBool("koreanzed.harasmenu.checkcollisiononq"); if (predictionOutput.Hitchance >= HitChance.High && (!checkColision || !q.GetCollision( player.Position.To2D(), new List <Vector2>() { predictionOutput.CastPosition.To2D() }).Any())) { q.Cast(predictionOutput.CastPosition); } } } if (e.UseOnHarass && energy.ReadyToHaras) { if (TargetSelector.GetTarget(e.Range, e.DamageType) != null) { e.Cast(); } } LastHit(); }
public void LaneClear(ActionQueue actionQueue, ActionQueueList laneClearQueue) { Obj_AI_Base shadow = GetShadows().FirstOrDefault(); if (!energy.ReadyToLaneClear || shadow == null) { return; } if (e.UseOnLaneClear && e.IsReady()) { int extendedWillHit = MinionManager.GetMinions(shadow.Position, e.Range).Count(); int shortenWillHit = MinionManager.GetMinions(e.Range).Count; int param = zedMenu.GetParamSlider("koreanzed.laneclearmenu.useeif"); if (extendedWillHit >= param || shortenWillHit >= param) { actionQueue.EnqueueAction( laneClearQueue, () => true, () => e.Cast(), () => !e.IsReady()); //Console.WriteLine("shadow lc e 1"); return; } } if (q.UseOnLaneClear && q.IsReady()) { int extendedWillHit = 0; Vector3 extendedFarmLocation = Vector3.Zero; foreach (Obj_AI_Base objAiBase in MinionManager.GetMinions(shadow.Position, q.Range)) { var colisionList = q.GetCollision( shadow.Position.To2D(), new List <Vector2>() { objAiBase.Position.To2D() }, w.Delay); if (colisionList.Count > extendedWillHit) { extendedFarmLocation = colisionList.OrderByDescending(c => c.Distance(shadow.Position)).FirstOrDefault().Position; extendedWillHit = colisionList.Count; } } var shortenFarmLocation = q.GetLineFarmLocation(MinionManager.GetMinions(q.Range)); int shortenWillHit = shortenFarmLocation.MinionsHit; int param = zedMenu.GetParamSlider("koreanzed.laneclearmenu.useqif"); if (CanCast && shadow.Position != Vector3.Zero && extendedWillHit >= param) { actionQueue.EnqueueAction( laneClearQueue, () => CanCast, () => Cast(shadow.Position), () => !CanCast); //Console.WriteLine("shadow lc w 2"); actionQueue.EnqueueAction( laneClearQueue, () => w.Instance.ToggleState != 0, () => q.Cast(extendedFarmLocation), () => !q.IsReady()); //Console.WriteLine("shadow lc q 3"); return; } else if (shortenWillHit >= param) { actionQueue.EnqueueAction( laneClearQueue, () => q.IsReady(), () => q.Cast(shortenFarmLocation.Position), () => !q.IsReady()); //Console.WriteLine("shadow lc q 4"); return; } } }