private static void Obj_AI_Base_OnDamage(AttackableUnit sender, AttackableUnitDamageEventArgs args) { var caster = sender as AIHeroClient; var target = args.Target as AIHeroClient; if (caster == null || target == null || sender.Distance(Player.Instance) > 1500) return; HitMarkPosition = args.Target.Position.WorldToScreen(); CanDrawHitMarker = true; HitMarkerSound.Play(); var hero = AkbarSpells.Spells.FirstOrDefault(x => x.Hero == Player.Instance.Hero && !caster.Spellbook.GetSpell(x.Slot).IsReady); if (args.Source.IsMe && hero!= null && args.Target.IsEnemy) { AkbarSound.Play(); } if (hero != null && sender.IsVisible && !caster.Spellbook.GetSpell(SpellSlot.R).IsReady) { if (hero.Hero == Champion.JarvanIV || hero.Hero == Champion.Darius || hero.Hero == Champion.Aatrox) { DunkSound.Play(); } } Core.DelayAction(() => CanDrawHitMarker = false, 200); }
private static void Obj_AI_Base_OnDamage(AttackableUnit sender, AttackableUnitDamageEventArgs args) { var caster = sender as AIHeroClient; var target = args.Target as AIHeroClient; if (caster == null || target == null || sender.Distance(Player.Instance) > 1500) { return; } HitMarkPosition = args.Target.Position.WorldToScreen(); CanDrawHitMarker = true; HitMarkerSound.Play(); var hero = AkbarSpells.Spells.FirstOrDefault(x => x.Hero == Player.Instance.Hero && !caster.Spellbook.GetSpell(x.Slot).IsReady); if (args.Source.IsMe && hero != null && args.Target.IsEnemy) { AkbarSound.Play(); } if (hero != null && sender.IsVisible && !caster.Spellbook.GetSpell(SpellSlot.R).IsReady) { if (hero.Hero == Champion.JarvanIV || hero.Hero == Champion.Darius || hero.Hero == Champion.Aatrox) { DunkSound.Play(); } } Core.DelayAction(() => CanDrawHitMarker = false, 200); }
private static void Reset(AttackableUnit target, EventArgs args) { if (!MiscMenu["resetaa"].Cast <CheckBox>().CurrentValue) { return; } if (target != null && target.IsEnemy && !target.IsInvulnerable && !target.IsDead && target is AIHeroClient && target.Distance(Kassawin) <= W.Range) { if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) && (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) && (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit)))) { return; } } var e = target as Obj_AI_Base; if (!ComboMenu["usecombow"].Cast <CheckBox>().CurrentValue || !e.IsEnemy) { return; } if (target == null) { return; } if (e.IsValidTarget() && W.IsReady()) { W.Cast(); } }
/// <summary> /// Determines whether the target is a valid target in the auto attack range from the specified check range from /// vector. /// </summary> /// <param name="target">The target.</param> /// <param name="allyIsValidTarget">if set to <c>true</c> allies will be set as valid targets.</param> /// <param name="checkRangeFrom">The check range from.</param> /// <returns><c>true</c> if the target is a valid target in the auto attack range; otherwise, <c>false</c>.</returns> public static bool IsValidAutoRange( this AttackableUnit target, bool allyIsValidTarget = false, Vector3 checkRangeFrom = default(Vector3)) { if (!target.IsValidTarget(allyIsValidTarget: allyIsValidTarget)) { return(false); } return(target.Distance(checkRangeFrom != Vector3.Zero ? checkRangeFrom : Player.ServerPosition) < Player.GetFullAttackRange(target)); }
/// <summary> /// Execute Weaving In AA Range Combo /// </summary> /// <param name="target">The Target</param> /// <param name="args">The Args</param> public static void ExecuteInRangeWeavingCombo(AttackableUnit target, EventArgs args) { try { if (!target.IsValidTarget() || !(target is AIHeroClient) || target == null) { return; } foreach (var Spell in SpellList) { if (!Spell.IsReady()) { continue; } if (Spell.Slot.Equals(SpellSlot.Q) && Config.Combo.GetBool("Q.Use") && Extensions.Player.EnoughMana(Config.Combo.GetSlider("Q.Mana"))) { if (target.Distance(Extensions.Player.ServerPosition) <= Q.Range) { Q.CastMinimumHitchance((AIHeroClient)target, Extensions.GetHitChance(Config.Combo, Q)); } } else if (Spell.Slot.Equals(SpellSlot.W) && Config.Combo.GetBool("W.Use") && Extensions.Player.EnoughMana(Config.Combo.GetSlider("W.Mana"))) { if (target.Distance(Extensions.Player.ServerPosition) <= W.Range) { W.CastMinimumHitchance((AIHeroClient)target, Extensions.GetHitChance(Config.Combo, W)); } } } } catch (Exception e) { Logging.AddEntry(LoggingEntryType.Error, "@Modes.cs: Combo -> Can't execute weaving combo - {0}", e); throw; } }
//---------------------------------------Orbwalker_OnPreAttack---------------------------------------- static void Orbwalker_OnPreAttack(AttackableUnit target, Orbwalker.PreAttackArgs args) { if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) { if (!Menu["AAMaxRange?"].Cast <CheckBox>().CurrentValue&& target.Distance(Player) >= Q.Range - 30) { args.Process = false; } if (!Menu["AA?"].Cast <CheckBox>().CurrentValue) { args.Process = false; } } }
private static void Orbwalker_OnPreAttack(AttackableUnit target, Orbwalker.PreAttackArgs args) { if (Orbwalker.ActiveModesFlags == Orbwalker.ActiveModes.None || _lastChange + 300 > Environment.TickCount) return; var selectedUnit = target as AIHeroClient; if (selectedUnit != null && (Program.HarassMenu["useQHarass"].Cast<CheckBox>().CurrentValue && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Harass) || Program.ComboMenu["useQCombo"].Cast<CheckBox>().CurrentValue && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))) { if (selectedUnit.CountEnemiesInRange(AoeRadius) > 2 || _Player.GetAutoAttackDamage(selectedUnit) * 1.1 >= target.Health + target.AttackShield && _Player.GetAutoAttackDamage(selectedUnit) < target.Health + target.AttackShield) { if (!FishBonesActive) { Program.Spells[SpellSlot.Q].Cast(); _lastChange = Environment.TickCount; } } else { if (FishBonesActive && target.Distance(_Player) < MinigunRange(selectedUnit)) { Program.Spells[SpellSlot.Q].Cast(); _lastChange = Environment.TickCount; } } } else { var minion = target as Obj_AI_Base; if (minion != null && minion.IsMinion && Program.FarmMenu["useQFarm"].Cast<CheckBox>().CurrentValue) { var count = ObjectManager.Get<Obj_AI_Minion>() .Count( a => a.Health < _Player.GetAutoAttackDamage(a) * 1.1 && a.Distance(target) < AoeRadius && a.IsValidTarget()); if (FishBonesActive && count < 2 && target.Distance(_Player) < MinigunRange(minion)) { Program.Spells[SpellSlot.Q].Cast(); _lastChange = Environment.TickCount; } else if (!FishBonesActive && count >= 2) { Program.Spells[SpellSlot.Q].Cast(); _lastChange = Environment.TickCount; } } } args.Process = true; }
private static void Obj_AI_Base_OnDamage(AttackableUnit sender, AttackableUnitDamageEventArgs args) { var caster = sender as AIHeroClient; var target = args.Target as AIHeroClient; if (caster == null || target == null || sender.Distance(Player.Instance) > 1500) { return; } HitMarkPosition = args.Target.Position.WorldToScreen(); CanDrawHitMarker = true; HitMarkerSound.Play(); Core.DelayAction(() => CanDrawHitMarker = false, 200); }
public static void AfterAttack(AttackableUnit target, EventArgs args) { if (target != null && target.IsEnemy && !target.IsInvulnerable && !target.IsDead && target is AIHeroClient && target.Distance(Utils._Player) <= Spells.W.Range) { if ((Orbwalker.ActiveModesFlags == Orbwalker.ActiveModes.Harass || Orbwalker.ActiveModesFlags == Orbwalker.ActiveModes.Combo) && Spells.W.IsReady()) { if (Utils.isChecked(MenuX.Combo, "ComboQ") || Utils.isChecked(MenuX.Harass, "HarassW")) Spells.W.Cast(); } } }
/// <summary> /// Determines whether the target is a valid target in the auto attack range from the specified check range from /// vector. /// </summary> /// <param name="target">The target.</param> /// <param name="allyIsValidTarget">if set to <c>true</c> allies will be set as valid targets.</param> /// <param name="checkRangeFrom">The check range from.</param> /// <returns><c>true</c> if the target is a valid target in the auto attack range; otherwise, <c>false</c>.</returns> public static bool IsValidAutoRange( this AttackableUnit target, bool allyIsValidTarget = false, Vector3 checkRangeFrom = default(Vector3)) { if (target == null || !target.IsValid || target.IsDead || target.IsInvulnerable || !target.IsVisible || !target.IsTargetable) { return(false); } if (!allyIsValidTarget && target.Team == Player.Team) { return(false); } return(target.Distance(checkRangeFrom != Vector3.Zero ? checkRangeFrom : Player.ServerPosition) < Player.GetFullAttackRange(target)); }
/// <summary> /// Determines whether the specified target is a valid target. /// </summary> /// <param name="target">The target.</param> /// <param name="range">The range.</param> /// <param name="allyIsValidTarget">if set to <c>true</c> allies will be set as valid targets.</param> /// <param name="includeBoundingRadius"></param> /// <param name="checkRangeFrom">The check range from position.</param> /// <returns> /// <c>true</c> if the specified target is a valid target; otherwise, <c>false</c>. /// </returns> public static bool IsValidTarget( this AttackableUnit target, float range = float.MaxValue, bool allyIsValidTarget = false, bool includeBoundingRadius = false, Vector3 checkRangeFrom = default(Vector3)) { if (target == null || !target.IsValid || target.IsDead || !target.IsVisible || !target.IsTargetable || target.IsInvulnerable) { return(false); } if (!allyIsValidTarget && target.Team == Player.Team) { return(false); } return(target.Distance(checkRangeFrom != Vector3.Zero ? checkRangeFrom : Player.ServerPosition) < range + (includeBoundingRadius ? Player.BoundingRadius + target.BoundingRadius : 0)); }
public static void AfterAttack(AttackableUnit target, EventArgs args) { if (target != null && target.IsEnemy && !target.IsInvulnerable && !target.IsDead && target is AIHeroClient && target.Distance(Utils._Player) <= Spells.W.Range) { if ((Orbwalker.ActiveModesFlags == Orbwalker.ActiveModes.Harass || Orbwalker.ActiveModesFlags == Orbwalker.ActiveModes.Combo) && Spells.W.IsReady()) { if (Utils.isChecked(MenuX.Combo, "ComboQ") || Utils.isChecked(MenuX.Harass, "HarassW")) { Spells.W.Cast(); } } } }
private void CastQ(AttackableUnit target) { if (q.Name == "ZoeQ") { var playerPos = Player.Position.ToVector2(); if (rBeforeQ) { playerPos = Player.Position.Extend(target.Position, -r.Range).ToVector2(); } var pos = playerPos + 565; List <Vector2> posCanCast = new List <Vector2>(); for (var angle = 0f; angle < 359; angle += 15) { var newPos = pos.RotateAroundPoint(playerPos, (float)(Math.PI * angle / 180.0)); if (!q.CheckCollision(newPos)) { posCanCast.Add(newPos); } //q.Cast(newPos); } if (posCanCast.Count() == 0) { return; } var point = posCanCast.Where(o => o.Distance(target) > target.Distance(Player) && !SPrediction.Collision.CheckCollision(o, target.Position.ToVector2(), qWidth, .25f, 900)) .OrderByDescending(o => o.Distance(target)).FirstOrDefault(); if (point != null) { if (rBeforeQ) { //Game.Print("pos:" + point); var posCastR = Player.Position.Extend(target.Position, -r.Range); r.Cast(posCastR); rBeforeQ = false; Utility.DelayAction.Add((int)(q.Range * 1000 / 900 + Game.Ping), () => { q.Cast(point); Utility.DelayAction.Add((int)(q.Range * 1000 / 900 + Game.Ping), () => { qCanCast = true; }); }); } else { q.Cast(point); qCanCast = false; Utility.DelayAction.Add((int)(q.Range * 1000 / 900 + Game.Ping), () => { if (rAfterQ) { var posCastR = Player.Position.Extend(target.Position, r.Range); r.Cast(posCastR); rAfterQ = false; } qCanCast = true; }); } } else { q.Cast((AIBaseClient)target); } } else if (qCanCast) { q.CastIfHitchanceMinimum((AIBaseClient)target, HitChance.Low); } }
static void Orbwalker_OnPostAttack(AttackableUnit target, EventArgs args) { if (W.IsReady() && UseW && target != null) { if ((Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) && target.Distance(ObjectManager.Player.ServerPosition) <= ObjectManager.Player.AttackRange && (target is AIHeroClient)) || (isClear == true && getSliderItem(LaneClearMenu, "mana") <= Player.Instance.ManaPercent) && (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))) { W.Cast(); } } }
/*private static void Client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) * { * Chat.Print("Failed Downloading: " + e.Error); * AllahAkbar = new SoundPlayer * { * SoundLocation = * SandboxConfig.DataDirectory + @"\JinXXX\" + "Allahu_Akbar_Sound_Effect_Download_Link.wav" * }; * AllahAkbar.Load(); * }*/ /// <summary> /// Called Before Attack /// </summary> /// <param name="target">The Target</param> /// <param name="args">The Args</param> private static void Orbwalker_OnPreAttack(AttackableUnit target, Orbwalker.PreAttackArgs args) { #region Combo if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) { var useQ = Config.ComboMenu["useQ"].Cast <CheckBox>().CurrentValue; // If the player has the rocket if (useQ && Program.Q.IsReady() && Essentials.FishBones()) { //var target = TargetSelector.GetTarget(Essentials.FishBonesRange(), DamageType.Physical); if (target != null && target.IsValidTarget()) { if ((target.Distance(Player.Instance) - target.BoundingRadius - Player.Instance.BoundingRadius) <= Essentials.MinigunRange && target.CountEnemyChampionsInRange(100) < Config.ComboMenu["qCountC"].Cast <Slider>().CurrentValue) { Program.Q.Cast(); Orbwalker.ForcedTarget = target; } } } } #endregion #region LastHit if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit)) { var useQ = Config.LastHitMenu["useQ"].Cast <CheckBox>().CurrentValue; var manaQ = Config.LastHitMenu["manaQ"].Cast <Slider>().CurrentValue; var qCountM = Config.LastHitMenu["qCountM"].Cast <Slider>().CurrentValue; // Force Minigun if there is a lasthittable minion in minigun range and there is no targets more than the setting amount. var kM = Orbwalker.LastHitMinionsList.Where( t => t.IsEnemy && t.Health <= (Player.Instance.GetAutoAttackDamage(t) * 0.9) && t.IsValidTarget() && t.Distance(Player.Instance) <= Essentials.MinigunRange); if (useQ && Essentials.FishBones() && kM.Count() < qCountM) { Program.Q.Cast(); } } #endregion #region Lane Clear if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear)) { var minion = EntityManager.MinionsAndMonsters.GetLaneMinions( EntityManager.UnitTeam.Enemy, Player.Instance.ServerPosition, Essentials.FishBonesRange()).OrderByDescending(t => t.Health); if (Essentials.FishBones()) { foreach (var m in minion) { var minionsAoe = EntityManager.MinionsAndMonsters.EnemyMinions.Count( t => t.IsValidTarget() && t.Distance(m) <= 100); if (m.Distance(Player.Instance) <= Essentials.MinigunRange && m.IsValidTarget() && (minionsAoe < Config.LaneClearMenu["qCountM"].Cast <Slider>().CurrentValue || m.Health > (Player.Instance.GetAutoAttackDamage(m)))) { Q.Cast(); Orbwalker.ForcedTarget = m; } else if (m.Distance(Player.Instance) <= Essentials.MinigunRange && !Orbwalker.LastHitMinionsList.Contains(m)) { Q.Cast(); Orbwalker.ForcedTarget = m; } else { foreach ( var kM in Orbwalker.LastHitMinionsList.Where( kM => kM.IsValidTarget() && kM.Health <= (Player.Instance.GetAutoAttackDamage(kM) * 0.9) && kM.Distance(Player.Instance) <= Essentials.MinigunRange)) { Q.Cast(); Orbwalker.ForcedTarget = kM; } } } } } #endregion if (Essentials.FishBones() && target.IsStructure() && target.Distance(Player.Instance) <= Essentials.MinigunRange) { Q.Cast(); } }
/*private static void Client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) { Chat.Print("Failed Downloading: " + e.Error); AllahAkbar = new SoundPlayer { SoundLocation = SandboxConfig.DataDirectory + @"\JinXXX\" + "Allahu_Akbar_Sound_Effect_Download_Link.wav" }; AllahAkbar.Load(); }*/ /// <summary> /// Called Before Attack /// </summary> /// <param name="target">The Target</param> /// <param name="args">The Args</param> private static void Orbwalker_OnPreAttack(AttackableUnit target, Orbwalker.PreAttackArgs args) { #region Combo if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) { var useQ = Config.ComboMenu["useQ"].Cast<CheckBox>().CurrentValue; // If the player has the rocket if (useQ && Program.Q.IsReady() && Essentials.FishBones()) { //var target = TargetSelector.GetTarget(Essentials.FishBonesRange(), DamageType.Physical); if (target != null && target.IsValidTarget()) { if (Player.Instance.Distance(target) <= Essentials.MinigunRange && target.CountEnemiesInRange(100) < Config.ComboMenu["qCountC"].Cast<Slider>().CurrentValue) { Program.Q.Cast(); Orbwalker.ForcedTarget = target; } } } } #endregion #region LastHit if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit)) { var useQ = Config.LastHitMenu["useQ"].Cast<CheckBox>().CurrentValue; var manaQ = Config.LastHitMenu["manaQ"].Cast<Slider>().CurrentValue; var qCountM = Config.LastHitMenu["qCountM"].Cast<Slider>().CurrentValue; // Force Minigun if there is a lasthittable minion in minigun range and there is no targets more than the setting amount. var kM = Orbwalker.LastHitMinionsList.Where( t => t.IsEnemy && t.Health <= (Player.Instance.GetAutoAttackDamage(t) * 0.9) && t.IsValidTarget() && t.Distance(Player.Instance) <= Essentials.MinigunRange); if (useQ && Essentials.FishBones() && kM.Count() < qCountM) { Program.Q.Cast(); } } #endregion #region Lane Clear if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear)) { var minion = EntityManager.MinionsAndMonsters.GetLaneMinions( EntityManager.UnitTeam.Enemy, Player.Instance.ServerPosition, Essentials.FishBonesRange()).OrderByDescending(t => t.Health); if (Essentials.FishBones()) { foreach (var m in minion) { var minionsAoe = EntityManager.MinionsAndMonsters.EnemyMinions.Count( t => t.IsValidTarget() && t.Distance(m) <= 100); if (m.Distance(Player.Instance) <= Essentials.MinigunRange && m.IsValidTarget() && (minionsAoe < Config.LaneClearMenu["qCountM"].Cast<Slider>().CurrentValue || m.Health > (Player.Instance.GetAutoAttackDamage(m)))) { Q.Cast(); Orbwalker.ForcedTarget = m; } else if (m.Distance(Player.Instance) <= Essentials.MinigunRange && !Orbwalker.LastHitMinionsList.Contains(m)) { Q.Cast(); Orbwalker.ForcedTarget = m; } else { foreach ( var kM in Orbwalker.LastHitMinionsList.Where( kM => kM.IsValidTarget() && kM.Health <= (Player.Instance.GetAutoAttackDamage(kM)*0.9) && kM.Distance(Player.Instance) <= Essentials.MinigunRange)) { Q.Cast(); Orbwalker.ForcedTarget = kM; } } } } } #endregion if (Essentials.FishBones() && target.IsStructure() && target.Distance(Player.Instance) <= Essentials.MinigunRange) { Q.Cast(); } }
private static void OrbwalkerOnOnPostAttack(AttackableUnit target, EventArgs args) { // Use Q // No sense in checking if Q is off cooldown or enemy died if (SpellManager.Q.IsReady() && !target.IsDead && !Player.Instance.Buffs.Any(b => b.Name.Equals("XenZhaoComboTarget", StringComparison.CurrentCultureIgnoreCase) || b.Name.Equals("xenzhaocomboauto", StringComparison.CurrentCultureIgnoreCase) || b.Name.Equals("xenzhaocomboautofinish", StringComparison.CurrentCultureIgnoreCase))) { // Check if we should use Q to attack heroes if ((SettingsModes.Combo.UseQ && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) || (Orbwalker.LaneClearAttackChamps && SettingsModes.LaneClear.UseQ && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear))) { if (target is AIHeroClient && PlayerMana >= SettingsMana.MinQMana) { Debug.WriteChat("Casting Q, because attacking enemy in Combo or Harras"); SpellManager.Q.Cast(); Orbwalker.ResetAutoAttack(); Player.IssueOrder(GameObjectOrder.AttackUnit, target); } } // Check if we should use Q to attack minions/monsters/turrets if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear)) { if (target is Obj_AI_Minion && PlayerMana >= SettingsMana.MinQMana) { if (SettingsModes.JungleClear.UseQ && target.Team == GameObjectTeam.Neutral) { Debug.WriteChat("Casting Q, because attacking monster in Jungle Clear"); SpellManager.Q.Cast(); Orbwalker.ResetAutoAttack(); Player.IssueOrder(GameObjectOrder.AttackUnit, target); } else if (SettingsModes.LaneClear.UseQ && target.Team != GameObjectTeam.Neutral) { Debug.WriteChat("Casting Q, because attacking minion in Lane Clear"); SpellManager.Q.Cast(); Orbwalker.ResetAutoAttack(); Player.IssueOrder(GameObjectOrder.AttackUnit, target); } } } } // Item usage if ((SettingsModes.Combo.UseItems && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) || (SettingsModes.LaneClear.UseItems && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear)) || (SettingsModes.JungleClear.UseItems && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))) { if (Item.HasItem(Tiamat.Id) && Tiamat.IsReady() && !target.IsDead && target.Distance(Player.Instance) < Tiamat.Range) { Tiamat.Cast(); } else if (Item.HasItem(Hydra.Id) && Hydra.IsReady() && !target.IsDead && target.Distance(Player.Instance) < Hydra.Range) { Hydra.Cast(); } // Cutlass/BOTRK usage if (target is AIHeroClient && Item.HasItem(Cutlass.Id) && Cutlass.IsReady() && !target.IsDead && target.Distance(Player.Instance) < Cutlass.Range) { var spellSlot = Player.Instance.InventoryItems.FirstOrDefault(a => a.Id == Cutlass.Id); Player.CastSpell(spellSlot.SpellSlot, target); } else if (target is AIHeroClient && Item.HasItem(BOTRK.Id) && BOTRK.IsReady() && !target.IsDead && target.Distance(Player.Instance) < BOTRK.Range && Player.Instance.HealthPercent <= 90.0f && target.HealthPercent <= 80.0f) { var spellSlot = Player.Instance.InventoryItems.FirstOrDefault(a => a.Id == BOTRK.Id); Player.CastSpell(spellSlot.SpellSlot, target); } } }
/// <summary> /// Returns true if the target is in auto-attack range. /// </summary> /// <param name="target"> /// The target. /// </param> /// <returns> /// The <see cref="bool" />. /// </returns> public static bool InAutoAttackRange(this AttackableUnit target) { return(target.IsValidTarget() && target.Distance(GameObjects.Player) < target.GetRealAutoAttackRange()); }
//---------------------------------------Orbwalker_OnPreAttack---------------------------------------- static void Orbwalker_OnPreAttack(AttackableUnit target, Orbwalker.PreAttackArgs args) { if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) { if (!Menu["AAMaxRange?"].Cast<CheckBox>().CurrentValue && target.Distance(Player) >= Q.Range - 30) args.Process = false; if (!Menu["AA?"].Cast<CheckBox>().CurrentValue) args.Process = false; } }
private static void Reset(AttackableUnit target, EventArgs args) { if (!Misc["aareset"].Cast<CheckBox>().CurrentValue) return; if (target != null && target.IsEnemy && !target.IsInvulnerable && !target.IsDead && target is AIHeroClient && target.Distance(ObjectManager.Player) <= W.Range) if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) && (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) && (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit)))) return; var e = target as Obj_AI_Base; if (!ModesMenu1["ComboW"].Cast<CheckBox>().CurrentValue || !e.IsEnemy) return; if (target == null) return; if (e.IsValidTarget() && W.IsReady()) { W.Cast(); } }
private static void OnBeforeAttack(AttackableUnit target, Orbwalker.PreAttackArgs args) { if (args.Target.Type == GameObjectType.obj_AI_Minion && Config.GlobalToggler) { if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Harass) && Config.IsChecked(Config.Harass, "disableAAIH")) { var air = _Player.CountAlliesInRange(Config.GetSliderValue(Config.Harass, "allyRangeH")); if (air > 1) { var shieldStacks = _Player.GetBuffCount("TalentReaper"); if (shieldStacks > 0 && Config.IsChecked(Config.Harass, "stacksIH")) { } else { args.Process = false; } } } if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) && Config.IsChecked(Config.LaneClear, "disableAAILC")) { var air = _Player.CountAlliesInRange(Config.GetSliderValue(Config.LaneClear, "allyRangeLC")); if (air > 1) { var shieldStacks = _Player.GetBuffCount("TalentReaper"); if (shieldStacks > 0 && Config.IsChecked(Config.LaneClear, "stacksILC")) { } else { if (Config.IsChecked(Config.LaneClear, "pushNoCS")) { var targetMinion = EntityManager.MinionsAndMonsters.EnemyMinions.FirstOrDefault(x => x.Index == target.Index); //var targetMinion = minions.FirstOrDefault(); var aaTravelTime = target.Distance(ObjectManager.Player) / _Player.BasicAttack.MissileSpeed + _Player.AttackDelay + Game.Ping / 2f / 1000; if (Prediction.Health.GetPrediction(targetMinion, (int)(aaTravelTime) * 1000) <= _Player.GetAutoAttackDamage(targetMinion) + 5) { /* * var higherHpMinion = * EntityManager.MinionsAndMonsters.EnemyMinions.FirstOrDefault(hp => hp.Health > target.Health); * target = higherHpMinion; */ args.Process = false; } } else { args.Process = false; } } } } if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit) && Config.IsChecked(Config.LastHit, "disableAAILH")) { var air = _Player.CountAlliesInRange(Config.GetSliderValue(Config.LastHit, "allyRangeLH")); if (air > 1) { var shieldStacks = _Player.GetBuffCount("TalentReaper"); if (shieldStacks > 0 && Config.IsChecked(Config.LastHit, "stacksILH")) { } else { args.Process = false; } } } } }
private static void OrbwalkerOnOnPostAttack(AttackableUnit target, EventArgs args) { // Use Q // No sense in checking if Q is off cooldown or enemy died if (SpellManager.Q.IsReady() && !target.IsDead && !Player.Instance.Buffs.Any(b => b.Name.Equals("XenZhaoComboTarget", StringComparison.CurrentCultureIgnoreCase) || b.Name.Equals("xenzhaocomboauto", StringComparison.CurrentCultureIgnoreCase) || b.Name.Equals("xenzhaocomboautofinish", StringComparison.CurrentCultureIgnoreCase))) { // Check if we should use Q to attack heroes if ((SettingsModes.Combo.UseQ && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) || (Orbwalker.LaneClearAttackChamps && SettingsModes.LaneClear.UseQ && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear))) { if (target is AIHeroClient && PlayerMana >= SettingsMana.MinQMana) { Debug.WriteChat("Casting Q, because attacking enemy in Combo or Harras"); SpellManager.Q.Cast(); Orbwalker.ResetAutoAttack(); Player.IssueOrder(GameObjectOrder.AttackUnit, target); } } // Check if we should use Q to attack minions/monsters/turrets if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear)) { if (target is Obj_AI_Minion && PlayerMana >= SettingsMana.MinQMana) { if (SettingsModes.JungleClear.UseQ && target.Team == GameObjectTeam.Neutral) { Debug.WriteChat("Casting Q, because attacking monster in Jungle Clear"); SpellManager.Q.Cast(); Orbwalker.ResetAutoAttack(); Player.IssueOrder(GameObjectOrder.AttackUnit, target); } else if (SettingsModes.LaneClear.UseQ && target.Team != GameObjectTeam.Neutral) { Debug.WriteChat("Casting Q, because attacking minion in Lane Clear"); SpellManager.Q.Cast(); Orbwalker.ResetAutoAttack(); Player.IssueOrder(GameObjectOrder.AttackUnit, target); } } } } // Item usage if ((SettingsModes.Combo.UseItems && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) || (SettingsModes.LaneClear.UseItems && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear)) || (SettingsModes.JungleClear.UseItems && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))) { if (Item.HasItem(Tiamat.Id) && Tiamat.IsReady() && !target.IsDead && target.Distance(Player.Instance) < Tiamat.Range) { Tiamat.Cast(); } else if (Item.HasItem(Hydra.Id) && Hydra.IsReady() && !target.IsDead && target.Distance(Player.Instance) < Hydra.Range) { Hydra.Cast(); } // Cutlass/BOTRK usage if(target is AIHeroClient && Item.HasItem(Cutlass.Id) && Cutlass.IsReady() && !target.IsDead && target.Distance(Player.Instance) < Cutlass.Range) { var spellSlot = Player.Instance.InventoryItems.FirstOrDefault(a => a.Id == Cutlass.Id); Player.CastSpell(spellSlot.SpellSlot, target); } else if (target is AIHeroClient && Item.HasItem(BOTRK.Id) && BOTRK.IsReady() && !target.IsDead && target.Distance(Player.Instance) < BOTRK.Range && Player.Instance.HealthPercent <= 90.0f && target.HealthPercent <= 80.0f) { var spellSlot = Player.Instance.InventoryItems.FirstOrDefault(a => a.Id == BOTRK.Id); Player.CastSpell(spellSlot.SpellSlot, target); } } }
private static void Obj_AI_Base_OnDamage(AttackableUnit sender, AttackableUnitDamageEventArgs args) { var caster = sender as AIHeroClient; var target = args.Target as AIHeroClient; if (caster == null || target == null || sender.Distance(Player.Instance) > 1500) return; HitMarkPosition = args.Target.Position.WorldToScreen(); CanDrawHitMarker = true; HitMarkerSound.Play(); Core.DelayAction(() => CanDrawHitMarker = false, 200); }
//ResetAA public static void ResetAA(AttackableUnit target, EventArgs args) { var Hydra = Config.MiscMenu["Hydra"].Cast <CheckBox>().CurrentValue; if (!Config.MiscMenu["Qrs"].Cast <CheckBox>().CurrentValue) { return; } if (target != null && target.IsEnemy && !target.IsInvulnerable && !target.IsDead && !target.IsZombie && target.Distance(Program.XinThongDit) <= Spells.Q.Range) { if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) && (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) && (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear)))) { return; } } var e = target as Obj_AI_Base; if (!Config.ComboMenu["Qcb"].Cast <CheckBox>().CurrentValue || !e.IsEnemy) { return; } //if (target == ObjectManager.Get<Obj_AI_Minion>().Where(p => p.IsValidTarget(Spells.E.Range) && p.BaseSkinName.Contains("SRU_Plant"))) return; if (target == null) { return; } if (e.IsValidTarget() && Spells.Q.IsReady()) { Spells.Q.Cast(); if (Items.Hydra.IsOwned() && Items.Hydra.IsReady() && target.IsValidTarget(325)) { Items.Hydra.Cast(); } if (Items.Tiamat.IsOwned() && Items.Tiamat.IsReady() && target.IsValidTarget(325)) { Items.Tiamat.Cast(); } if (Items.Titanic.IsOwned() && target.IsValidTarget(325) && Items.Titanic.IsReady()) { Items.Titanic.Cast(); } } }