public static Obj_AI_Hero GetTarget(float range, TargetSelector.DamageType damageType, bool ignoreShield = true, IEnumerable<Obj_AI_Hero> ignoredChamps = null, Vector3? rangeCheckFrom = null) { if (_lastTarget == null || !_lastTarget.IsValidTarget() || _lastDamageType != damageType) { var newTarget = TargetSelector.GetTarget(range, damageType, ignoreShield, ignoredChamps, rangeCheckFrom); _lastTarget = newTarget; _lastDamageType = damageType; return newTarget; } if (_lastTarget.IsValidTarget(range) && damageType == _lastDamageType) { return _lastTarget; } var newTarget2 = TargetSelector.GetTarget(range, damageType, ignoreShield, ignoredChamps, rangeCheckFrom); _lastTarget = newTarget2; _lastDamageType = damageType; return newTarget2; }
public Smite(TargetSelector.DamageType dmgtype, Menu activator) { DamageType = dmgtype; SetSlot(); if (Slot != SpellSlot.Unknown) { Range = 700f; CanCastOnEnemy = Blue.Any(i => Items.HasItem(i)) || Red.Any(i => Items.HasItem(i)); #region jungle minions if (LeagueSharp.Common.Utility.Map.GetMap().Type.Equals(LeagueSharp.Common.Utility.Map.MapType.TwistedTreeline)) { JungleMinions = new string[] { "TT_Spiderboss", "TT_NWraith", "TT_NGolem", "TT_NWolf" }; } else { JungleMinions = new string[] { "SRU_Blue", "SRU_Gromp", "SRU_Murkwolf", "SRU_Razorbeak", "SRU_Red", "SRU_Krug", "SRU_Dragon", "SRU_Baron", "Sru_Crab" }; } #endregion summoners = new Menu("Smite", "summonersmite"); summoners.AddItem(new MenuItem("SMITEENEMY", "Auto Smite Enemy")).SetValue(true) .ValueChanged += (s, ar) => { bool newVal = ar.GetNewValue<bool>(); ((MenuItem)s).Permashow(ar.GetNewValue<bool>(), newVal ? "Auto Smite Enemy" : null); }; summoners.AddItem(new MenuItem("SMITEJUNGLE", "Auto Smite Monster")).SetValue(true) .ValueChanged += (s, ar) => { bool newVal = ar.GetNewValue<bool>(); ((MenuItem)s).Permashow(ar.GetNewValue<bool>(), newVal ? "Auto Smite Monster" : null); }; summoners.AddItem(new MenuItem("SMITEENABLE", "Enabled").SetValue<KeyBind>(new KeyBind(32, KeyBindType.Press))); summoners.Item("SMITEENEMY").Permashow(true, "Auto Smite Enemy"); summoners.Item("SMITEJUNGLE").Permashow(true, "Auto Smite Monster"); activator.AddSubMenu(summoners); } }
public Ignite(TargetSelector.DamageType dmgtype, Menu activator) { DamageType = dmgtype; SetSlot(); if (Slot != SpellSlot.Unknown) { Range = 550f; summoners = new Menu("Ignite", "summonerignite"); summoners.AddItem(new MenuItem("IGNITEENEMY", "Use Ignite")).SetValue(true); summoners.AddItem(new MenuItem("IGNITEKS", "Use Ignite to KS")).SetValue(true) .ValueChanged += (s, ar) => { bool newVal = ar.GetNewValue<bool>(); ((MenuItem)s).Permashow(ar.GetNewValue<bool>(), newVal ? "Ignite Kill Steal" : null); }; summoners.AddItem(new MenuItem("IGNITEENABLE", "Enabled").SetValue<KeyBind>(new KeyBind(32, KeyBindType.Press))); summoners.Item("IGNITEKS").Permashow(true, "Ignite Killsteal"); activator.AddSubMenu(summoners); } }
internal static bool isKillableAndValidTarget(this AIHeroClient Target, double CalculatedDamage, TargetSelector.DamageType damageType, float distance = float.MaxValue) { if (Target == null || !Target.IsValidTarget(distance) || Target.Health <= 0 || Target.CharData.BaseSkinName == "gangplankbarrel") { return(false); } if (Target.HasBuff("kindredrnodeathbuff")) { return(false); } // Tryndamere's Undying Rage (R) if (Target.HasBuff("Undying Rage") && Target.Health <= Target.MaxHealth * 0.10f) { return(false); } // Kayle's Intervention (R) if (Target.HasBuff("JudicatorIntervention")) { return(false); } // Poppy's Diplomatic Immunity (R) if (Target.HasBuff("DiplomaticImmunity") && !ObjectManager.Player.HasBuff("poppyulttargetmark")) { //TODO: Get the actual target mark buff name return(false); } // Banshee's Veil (PASSIVE) if (Target.HasBuff("BansheesVeil")) { // TODO: Get exact Banshee's Veil buff name. return(false); } // Sivir's Spell Shield (E) if (Target.HasBuff("SivirShield")) { // TODO: Get exact Sivir's Spell Shield buff name return(false); } // Nocturne's Shroud of Darkness (W) if (Target.HasBuff("ShroudofDarkness")) { // TODO: Get exact Nocturne's Shourd of Darkness buff name return(false); } if (ObjectManager.Player.HasBuff("summonerexhaust")) { CalculatedDamage *= 0.6; } if (Target.ChampionName == "Blitzcrank") { if (!Target.HasBuff("manabarriercooldown")) { if (Target.Health + Target.HPRegenRate + (damageType == TargetSelector.DamageType.Physical ? Target.AttackShield : Target.MagicShield) + (Target.Mana * 0.6) + Target.PARRegenRate < CalculatedDamage) { return(true); } } } if (Target.ChampionName == "Garen") { if (Target.HasBuff("GarenW")) { CalculatedDamage *= 0.7; } } if (Target.HasBuff("FerociousHowl")) { CalculatedDamage *= 0.3; } return(Target.Health + Target.HPRegenRate + (damageType == TargetSelector.DamageType.Physical ? Target.AttackShield : Target.MagicShield) < CalculatedDamage - 2); }
internal static bool isKillableAndValidTarget(this Obj_AI_Minion Target, double CalculatedDamage, TargetSelector.DamageType damageType, float distance = float.MaxValue) { if (Target == null || !Target.IsValidTarget(distance) || Target.Health <= 0 || Target.HasBuffOfType(BuffType.SpellImmunity) || Target.HasBuffOfType(BuffType.SpellShield) || Target.CharData.BaseSkinName == "gangplankbarrel") { return(false); } if (ObjectManager.Player.HasBuff("summonerexhaust")) { CalculatedDamage *= 0.6; } BuffInstance dragonSlayerBuff = ObjectManager.Player.GetBuff("s5test_dragonslayerbuff"); if (dragonSlayerBuff != null) { if (dragonSlayerBuff.Count >= 4) { CalculatedDamage += dragonSlayerBuff.Count == 5 ? CalculatedDamage * 0.30 : CalculatedDamage * 0.15; } if (Target.CharData.BaseSkinName.ToLowerInvariant().Contains("dragon")) { CalculatedDamage *= 1 - (dragonSlayerBuff.Count * 0.07); } } if (Target.CharData.BaseSkinName.ToLowerInvariant().Contains("baron") && ObjectManager.Player.HasBuff("barontarget")) { CalculatedDamage *= 0.5; } return(Target.Health + Target.HPRegenRate + (damageType == TargetSelector.DamageType.Physical ? Target.AttackShield : Target.MagicShield) < CalculatedDamage - 2); }
public Obj_AI_Hero GetTarget( float vRange = 0, TargetSelector.DamageType vDamageType = TargetSelector.DamageType.Physical) { return(TsEnemy); }
public static void GTarget(Spell spell, TargetSelector.DamageType dmgtype) { TargetSelector.GetTarget(spell.Range, dmgtype); }
/// <summary> /// Represents a "combo" and it's logic. Manages skill logic. /// </summary> public ComboProvider(float targetSelectorRange, IEnumerable <Skill> skills, Orbwalking.Orbwalker orbwalker) { Skills = skills as List <Skill> ?? skills.ToList(); DamageType = Skills.Count(spell => spell.DamageType == TargetSelector.DamageType.Magical) > Skills.Count(spell => spell.DamageType == TargetSelector.DamageType.Physical) ? TargetSelector.DamageType.Magical : TargetSelector.DamageType.Physical; TargetRange = targetSelectorRange; Orbwalker = orbwalker; LeagueSharp.Common.AntiGapcloser.Spells.ForEach(spell => { var champ = HeroManager.Enemies.FirstOrDefault(enemy => enemy.ChampionName.Equals(spell.ChampionName, StringComparison.InvariantCultureIgnoreCase)); if (champ != null && !GapcloserCancel.ContainsKey(champ.ChampionName)) { GapcloserCancel.Add(champ.ChampionName, true); } }); LeagueSharp.Common.AntiGapcloser.OnEnemyGapcloser += OnGapcloser; InitInterruptable(); Interrupter2.OnInterruptableTarget += OnInterrupter; Drawing.OnDraw += _ => { foreach (var skill in Skills) { skill.Draw(); } if (!_drawingsEnabled) { return; } if (_targetDrawing.Active && Target.IsValidTarget()) { Render.Circle.DrawCircle(Target.Position, 100, _targetDrawing.Color); } if (_deadDrawing.Active) { foreach (var enemy in HeroManager.Enemies) { if (enemy.IsValidTarget(TargetRange) && ShouldBeDead(enemy)) { Render.Circle.DrawCircle(enemy.Position, 200, _deadDrawing.Color); } } } //foreach (var enemy in ObjectManager.Get<Obj_AI_Base>()) // if (enemy.IsValidTarget() && ShouldBeDead(enemy)) // Render.Circle.DrawCircle(enemy.Position, 200, _deadDrawing.Color); }; Spellbook.OnCastSpell += (sender, args) => { if (!sender.Owner.IsMe) { return; } for (int i = 0; i < _queuedCasts.Count; i++) { if (_queuedCasts[i].Item1.Slot == args.Slot) { _queuedCasts.RemoveAt(i); break; } } }; foreach (var mode in Enum.GetValues(typeof(Orbwalking.OrbwalkingMode)).Cast <Orbwalking.OrbwalkingMode>()) { ManaManager[mode] = 0; } Orbwalking.AfterAttack += (s, a) => IsAfterAttack = true; }
public static Obj_AI_Base GetTarget(float range, TargetSelector.DamageType damageType) { return(TargetSelector.GetTarget(range, damageType)); }
static void InitSpell(SpellSlot slot, float range, TargetSelector.DamageType type) { Spell = new Spell(slot, range, type); }
public Obj_AI_Hero GetTarget(float vRange = 0, TargetSelector.DamageType vDamageType = TargetSelector.DamageType.Physical) { return(Math.Abs(vRange) < 0.00001 ? null : TsEnemy); }
public SpellEx(SpellSlot slot, float range = 3.402823E+38f, TargetSelector.DamageType damageType = TargetSelector.DamageType.Physical) : base(slot, range, damageType) { Obj_AI_Base.OnProcessSpellCast += ProcessSpell; }
private static AIHeroClient GetTarget(float range, TargetSelector.DamageType damageType = TargetSelector.DamageType.Physical) { var currTarget = TargetSelector.GetTarget(range, damageType); return(currTarget != null && currTarget.IsValid ? currTarget : null); }
public KalistaQ(SpellSlot slot, float range, TargetSelector.DamageType damageType) : base(slot, range, damageType) { }
public _TargetSelector(Menu subMenu, TargetSelector.DamageType damageType, Mode mode, bool includeShields = true) { menu = subMenu.AddSubMenu("Target Selector"); menu.DropDown("TSMode", "Targetting Mode", new string[] { "Auto Priority", "Lowest HP", "LessCast", "Most AD", "Most AP", "Closest", "Closest Mouse", "LessCast" }, (int)mode); menu.Boolean("selected", "Priority Selected Target"); if (Enemies.Count == 0) { menu.AddSeparator("- No Enemy Avaliable -"); } else { menu.AddSeparator("Settings Enemies's Priority"); foreach (var enemy in Enemies) { menu.Slider(enemy.ChampionName, enemy.ChampionName, 1, 5, GetPriority(enemy)); } } if (damageType == TargetSelector.DamageType.Magical) { IsValid = (unit) => { foreach (var buff in unit.Buffs) { if (buff.IsActive) { if (!ShouldAttack(unit, buff.DisplayName)) { return(false); } switch (buff.DisplayName) { case "SivirShield": { return(false); } case "ShroudofDarkness": { return(false); } default: break; } } } return(true); }; } else { IsValid = (unit) => { foreach (var buff in unit.Buffs) { if (buff.IsActive && !ShouldAttack(unit, buff.DisplayName)) { return(false); } } return(true); }; } }
/// <summary> /// Call to initialize all stuffs. If skills access the menu, this should be called after the menu creation /// </summary> public virtual void Initialize(TargetSelector.DamageType damageType) { DamageType = damageType; Initialize(); }
public static bool isKillableAndValidTarget(this Obj_AI_Base Target, double CalculatedDamage, TargetSelector.DamageType damageType, float distance = float.MaxValue) { if (Target == null || !Target.IsValidTarget(distance) || Target.IsDead || Target.CharData.BaseSkinName == "GangPlankBarrel") { return(false); } if (Target.HasBuff("KindredRNoDeathBuff") && Target.Health <= Target.MaxHealth * 0.10f) { return(false); } if (Target.HasBuff("Undying Rage") && Target.Health <= Target.MaxHealth * 0.05f) { return(false); } if (Target.HasBuff("JudicatorIntervention")) { return(false); } if (Target.HasBuff("BansheesVeil")) { return(false); } if (Target.HasBuff("SivirShield")) { return(false); } if (Target.HasBuff("ShroudofDarkness")) { return(false); } if (ObjectManager.Player.HasBuff("SummonerExhaust")) { CalculatedDamage *= 0.6; } if (Target.CharData.BaseSkinName == "Blitzcrank") { if (!Target.HasBuff("ManaBarrierCoolDown")) { if (Target.Health + Target.HPRegenRate + (damageType == TargetSelector.DamageType.Physical ? Target.PhysicalShield : Target.MagicalShield) + (Target.Mana * 0.6) + Target.PARRegenRate < CalculatedDamage) { return(true); } } } if (Target.CharData.BaseSkinName == "Garen") { if (Target.HasBuff("GarenW")) { CalculatedDamage *= 0.7; } } if (Target.HasBuff("FerociousHowl")) { CalculatedDamage *= 0.3; } BuffInstance dragonSlayerBuff = ObjectManager.Player.GetBuff("s5test_dragonslayerbuff"); if (dragonSlayerBuff != null) { if (Target.IsMinion) { if (dragonSlayerBuff.Count >= 4) { CalculatedDamage += dragonSlayerBuff.Count == 5 ? CalculatedDamage * 0.30 : CalculatedDamage * 0.15; } if (Target.CharData.BaseSkinName.ToLowerInvariant().Contains("dragon")) { CalculatedDamage *= 1 - (dragonSlayerBuff.Count * 0.07); } } } if (Target.CharData.BaseSkinName.ToLowerInvariant().Contains("baron") && ObjectManager.Player.HasBuff("barontarget")) { CalculatedDamage *= 0.5; } return(Target.Health + Target.HPRegenRate + (damageType == TargetSelector.DamageType.Physical ? Target.PhysicalShield : Target.MagicalShield) < CalculatedDamage - 2); }
public static Obj_AI_Hero GetNearlyKillableTarget(Spell Spell, SpellSlot[] slots, TargetSelector.DamageType DamageType) { var targetSelectorTarget = TargetSelector.GetTarget(Spell.Range, TargetSelector.DamageType.Magical); var targetSelectorTargetIsKillable = Spell.GetDamage(targetSelectorTarget) > targetSelectorTarget.Health + 5; foreach (var target in HeroManager.Enemies.Where(n => n.IsValidTarget(Spell.Range))) { var SpellDamage = Spell.GetDamage(target); if (target.Health + 5 > SpellDamage && target.Health + 5 < SpellDamage + ObjectManager.Player.GetAutoAttackDamage(target) + ObjectManager.Player.GetComboDamage(target, slots .Except(new List <SpellSlot>() { Spell.Slot }).ToList())) { return(target); } } return(targetSelectorTargetIsKillable ? targetSelectorTarget : null); }
internal static bool IsKillableAndValidTarget(this Obj_AI_Base target, double calculatedDamage, TargetSelector.DamageType damageType, float distance = float.MaxValue) { if (target == null || !target.IsValidTarget(distance) || target.CharData.BaseSkinName == "gangplankbarrel") { return(false); } if (target.HasBuff("kindredrnodeathbuff")) { return(false); } // Tryndamere's Undying Rage (R) if (target.HasBuff("Undying Rage")) { return(false); } // Kayle's Intervention (R) if (target.HasBuff("JudicatorIntervention")) { return(false); } // Poppy's Diplomatic Immunity (R) if (target.HasBuff("DiplomaticImmunity") && !ObjectManager.Player.HasBuff("poppyulttargetmark")) { //TODO: Get the actual target mark buff name return(false); } // Banshee's Veil (PASSIVE) if (target.HasBuff("BansheesVeil")) { // TODO: Get exact Banshee's Veil buff name. return(false); } // Sivir's Spell Shield (E) if (target.HasBuff("SivirShield")) { // TODO: Get exact Sivir's Spell Shield buff name return(false); } // Nocturne's Shroud of Darkness (W) if (target.HasBuff("ShroudofDarkness")) { // TODO: Get exact Nocturne's Shourd of Darkness buff name return(false); } if (ObjectManager.Player.HasBuff("summonerexhaust")) { calculatedDamage *= 0.6; } if (target.CharData.BaseSkinName == "Blitzcrank") { if (!target.HasBuff("manabarriercooldown")) { if (target.Health + target.HPRegenRate + (damageType == TargetSelector.DamageType.Physical ? target.PhysicalShield : target.MagicalShield) + target.Mana * 0.6 + target.PARRegenRate < calculatedDamage) { return(true); } } } if (target.CharData.BaseSkinName == "Garen") { if (target.HasBuff("GarenW")) { calculatedDamage *= 0.7; } } if (target.HasBuff("FerociousHowl")) { calculatedDamage *= 0.3; } var dragonSlayerBuff = ObjectManager.Player.GetBuff("s5test_dragonslayerbuff"); if (dragonSlayerBuff != null) { if (target.IsMinion) { if (dragonSlayerBuff.Count >= 4) { calculatedDamage += dragonSlayerBuff.Count == 5 ? calculatedDamage * 0.30 : calculatedDamage * 0.15; } if (target.CharData.BaseSkinName.ToLowerInvariant().Contains("dragon")) { calculatedDamage *= 1 - dragonSlayerBuff.Count * 0.07; } } } if (target.CharData.BaseSkinName.ToLowerInvariant().Contains("baron") && ObjectManager.Player.HasBuff("barontarget")) { calculatedDamage *= 0.5; } return(target.Health + target.HPRegenRate + (damageType == TargetSelector.DamageType.Physical ? target.PhysicalShield : target.MagicalShield) < calculatedDamage - 2); }
} //TODO: check if TotalMagicDamage is really AP public BrandR(SpellSlot slot, float range = 3.402823E+38f, TargetSelector.DamageType damageType = TargetSelector.DamageType.Physical) : base(slot, range, damageType) { OnlyUpdateIfTargetValid = true; }
// As I gain more experience/knowledge with programming ill expand this class with more useful functions as well as improve them. public static Vector3 BestPosition(Spell spell, float spellRadius, TargetSelector.DamageType damageType) { float x = 0; float y = 0; float z = 0; var playercount = 0; List <Vector3> lstEnemyPosition = new List <Vector3>(); List <int> lstEnemiesitCount = new List <int>(); List <Vector3> lstBestPositions = new List <Vector3>(); foreach ( var enemy in ObjectManager.Get <Obj_AI_Hero>() .Where(enemy => enemy.IsValidTarget(spell.Range + spellRadius / 2))) { lstEnemyPosition.Add(enemy.Position); x += enemy.Position.X; y += enemy.Position.Y; z += enemy.Position.Z; playercount++; } Vector3 centroid = new Vector3(x / playercount, y / playercount, z / playercount); if (playercount >= 2) { for (int i = 0; i <= playercount - 1; i++) { Vector3 newPosition = new Vector3((lstEnemyPosition[i].X + centroid.X) / 2, (lstEnemyPosition[i].Y + centroid.Y) / 2, (lstEnemyPosition[i].Z + centroid.Z) / 2); lstEnemiesitCount.Add(newPosition.CountEnemiesInRange(spellRadius)); lstBestPositions.Add(newPosition); } for (int j = 0; j < lstEnemiesitCount.Count - 1; j++) { int minKey = j; for (int k = j + 1; k < lstEnemiesitCount.Count - 1; k++) { if (lstEnemiesitCount[k] > lstEnemiesitCount[minKey]) { minKey = k; } } Vector3 temp = lstBestPositions[minKey]; int tmp = lstEnemiesitCount[minKey]; lstEnemiesitCount[minKey] = lstEnemiesitCount[j]; lstBestPositions[minKey] = lstBestPositions[j]; lstEnemiesitCount[j] = tmp; lstBestPositions[j] = temp; } if (centroid.CountEnemiesInRange(spellRadius) >= lstBestPositions[0].CountEnemiesInRange(spellRadius)) { return(centroid); } return(lstBestPositions[0]); } return(TargetSelector.GetTarget(spell.Range, damageType).Position); }