public static bool CanKill(this Spell spell, Obj_AI_Base target) { return spell.CanCast(target) && spell.IsKillable(target); }
public static void SmartCast(this LeagueSharp.SDK.Spell spell, Obj_AI_Base target = null, HitChance hitchance = HitChance.Medium, int minimunHits = 0) { if (target == null) return; if (!spell.CanCast(target)) return; if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Harass)) { if (spell.IsSkillshot) { if (spell.Collision) { if (Me.CountEnemyHeroesInRange(spell.Range) <= (minimunHits == 0 ? 2 : minimunHits)) { spell.CastOnBestTarget(0f, true); return; } if (Me.CountEnemyHeroesInRange(spell.Range) >= (minimunHits == 0 ? 2 : minimunHits)) { spell.CastOnBestTarget(0f, true, 1); return; } } else { spell.CastIfHitchanceMinimum(target, hitchance); return; } } else { spell.CastOnUnit(target); return; } } if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear)) { if (spell.Collision) { spell.CastIfHitchanceMinimum(target, HitChance.Low); return; } else { var minions = GameObjects.EnemyMinions.Where(m => m.LSIsValidTarget()) .OrderBy(m => m.Distance(target)) .ThenBy(m => m.Health) .ToList(); if (minions != null) { switch (spell.Type) { case SkillshotType.SkillshotLine: var posLine = spell.GetLineFarmLocation(minions); if (posLine.MinionsHit >= (minimunHits == 0 ? 1 : minimunHits)) { spell.Cast(posLine.Position); return; } break; case SkillshotType.SkillshotCircle: var posCircle = spell.GetCircularFarmLocation(minions); if (posCircle.MinionsHit >= (minimunHits == 0 ? 1 : minimunHits)) { spell.Cast(posCircle.Position); return; } break; case SkillshotType.SkillshotCone: var posCone = spell.GetLineFarmLocation(minions, spell.Width); if (posCone.MinionsHit >= (minimunHits == 0 ? 1 : minimunHits)) { spell.Cast(posCone.Position); return; } break; } } spell.CastIfHitchanceMinimum(target, HitChance.Medium); } } else { spell.CastOnUnit(target); } if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit)) { if (spell.IsSkillshot) { spell.CastIfHitchanceMinimum(target, HitChance.Low); return; } spell.CastOnUnit(target); } }
public static bool IsCastable(this Spell spell, Obj_AI_Base target, bool ks = false, bool checkKillable = true) { return spell.CanCast(target) && spell.IsActive(ks) && (!checkKillable || spell.IsKillable(target)); }
public static bool CanCast(this Obj_AI_Base target, Spell.Targeted spell, Menu m) { var asBase = spell as Spell.SpellBase; return target.CanCast(asBase, m); }
public static bool CanCast(this Obj_AI_Base target, Spell.Skillshot spell, Menu m, int hitchancePercent = 75) { var asBase = spell as Spell.SpellBase; var pred = spell.GetPrediction(target); return target.CanCast(asBase, m) && pred.HitChancePercent >= 75; }
/// <summary> /// Checks if given unit can become invisible /// </summary> /// <param name="hero"> /// The hero. /// </param> /// <returns> /// The <see cref="bool" />. /// </returns> public static bool CanGoInvis(this Hero hero) { var n = hero.Handle + "CanGoInvis"; if (!Utils.SleepCheck(n)) { return boolDictionary[n]; } Ability invis = null; Ability riki = null; foreach (var x in hero.Spellbook.Spells) { var name = x.StoredName(); if (name == "bounty_hunter_wind_walk" || name == "clinkz_skeleton_walk" || name == "templar_assassin_meld") { invis = x; break; } if (name == "riki_permanent_invisibility") { riki = x; } } if (invis == null) { invis = hero.Inventory.Items.FirstOrDefault( x => x.StoredName() == "item_invis_sword" || x.StoredName() == "item_silver_edge" || x.StoredName() == "item_glimmer_cape"); } var canGoInvis = (invis != null && hero.CanCast() && invis.CanBeCasted()) || (riki != null && riki.Level > 0 && !hero.IsSilenced()); if (!boolDictionary.ContainsKey(n)) { boolDictionary.Add(n, canGoInvis); } else { boolDictionary[n] = canGoInvis; } Utils.Sleep(150, n); return canGoInvis; }