void IChampion.Flee() { try { Orbwalker.SetAttack(false); Orbwalking.MoveTo(Game.CursorPos, Orbwalker.HoldAreaRadius); Flee(); Utility.DelayAction.Add( 750, delegate { if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Flee) { ItemManager.UseFleeItems(); } }); Utility.DelayAction.Add( 125, delegate { if (Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Flee) { Orbwalker.SetAttack(true); } }); } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }
private void OnCoreBoot(EventArgs args) { try { OnLoad(); SetupSpells(); SetupMenu(); Weights.Range = Math.Max( Weights.Range, Spells.Select(e => e.Range).DefaultIfEmpty(Orbwalking.GetRealAutoAttackRange(null) * 1.2f).Max()); Core.OnPreUpdate += OnCorePreUpdate; Core.OnPostUpdate += OnCorePostUpdate; Orbwalking.BeforeAttack += OnOrbwalkingBeforeAttack; Orbwalking.AfterAttack += OnOrbwalkingAfterAttack; Obj_AI_Base.OnProcessSpellCast += OnObjAiBaseProcessSpellCast; Drawing.OnDraw += OnDrawingDraw; } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }
protected override void Combo() { var q = Menu.Item(Menu.Name + ".combo.q").GetValue <bool>(); var e = Menu.Item(Menu.Name + ".combo.e").GetValue <bool>(); var r = _ultimate.IsActive(UltimateModeType.Combo); if (e && !Q.IsCharging && E.IsReady()) { var target = TargetSelector.GetTarget(E); if (target != null) { var stacks = W.Level == 0 && Menu.Item(Menu.Name + ".combo.e-settings.stacks").GetValue <Slider>().Value > 0; if (Menu.Item(Menu.Name + ".combo.e-settings.always").GetValue <bool>() || stacks || GetWStacks(target) >= Menu.Item(Menu.Name + ".combo.e-settings.stacks").GetValue <Slider>().Value || E.IsKillable(target) || CPrediction.Circle(E, target, E.GetHitChance("combo")).TotalHits >= Menu.Item(Menu.Name + ".combo.e-settings.min").GetValue <Slider>().Value) { ELogic(target, E.GetHitChance("combo")); } } } if (q && Q.IsReady()) { var target = TargetSelector.GetTarget((Q.ChargedMaxRange + Q.Width) * 1.1f, Q.DamageType); if (target != null) { var stacks = W.Level == 0 && Menu.Item(Menu.Name + ".combo.q-settings.stacks").GetValue <Slider>().Value > 0; if (Q.IsCharging || Menu.Item(Menu.Name + ".combo.q-settings.always").GetValue <bool>() || target.Distance(Player) > Orbwalking.GetRealAutoAttackRange(target) * 1.2f || stacks || GetWStacks(target) >= Menu.Item(Menu.Name + ".combo.q-settings.stacks").GetValue <Slider>().Value || CPrediction.Line(Q, target, Q.GetHitChance("combo")).TotalHits >= Menu.Item(Menu.Name + ".combo.q-settings.min").GetValue <Slider>().Value || Q.IsKillable(target)) { QLogic( target, Q.GetHitChance("combo"), Menu.Item(Menu.Name + ".combo.q-settings.fast-cast-min").GetValue <Slider>().Value); } } } if (r && R.IsReady()) { var target = TargetSelector.GetTarget(R); if (target != null) { if (!RLogic(UltimateModeType.Combo, R.GetHitChance("combo"), target)) { RLogicSingle(UltimateModeType.Combo, R.GetHitChance("combo")); } } } }
private float CalcComboDamage(Obj_AI_Hero target, float resMulti, bool rangeCheck, bool q, bool e, bool r) { try { if (target == null) { return(0); } float damage = 0; var totalMana = 0f; if (r && R.IsReady() && (!rangeCheck || R.IsInRange(target))) { var rMana = R.ManaCost * resMulti; if (totalMana + rMana <= Player.Mana) { totalMana += rMana; damage += R.GetDamage(target); } } if (q && Q.IsReady() && (!rangeCheck || Q.IsInRange(target, Q.ChargedMaxRange))) { var qMana = Q.ManaCost * resMulti; if (totalMana + qMana <= Player.Mana) { totalMana += qMana; damage += GetQDamage(target, 1); } } if (e && E.IsReady() && (!rangeCheck || E.IsInRange(target, E.Range + E.Width))) { var eMana = E.ManaCost * resMulti; if (totalMana + eMana <= Player.Mana) { damage += E.GetDamage(target); } } if (!rangeCheck || Orbwalking.InAutoAttackRange(target)) { damage += 5f * (float)Player.GetAutoAttackDamage(target); } damage += ItemManager.CalculateComboDamage(target, rangeCheck); damage += SummonerManager.CalculateComboDamage(target, rangeCheck); return(damage); } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } return(0); }
protected override void Killsteal() { if (Menu.Item(Menu.Name + ".killsteal.q").GetValue <bool>() && Q.IsReady()) { var killable = GameObjects.EnemyHeroes.FirstOrDefault( e => e.IsValidTarget(Q.Range) && !Orbwalking.InAutoAttackRange(e) && (QIsKillable(e, 1) || QMaxRangeHit(e) && QIsKillable(e, 2))); if (killable != null) { QLogic(killable, HitChance.High, 100); } } }
protected override void Harass() { if (!ResourceManager.Check("harass") && !Q.IsCharging) { return; } if (Menu.Item(Menu.Name + ".harass.e").GetValue <bool>() && !Q.IsCharging && E.IsReady()) { var target = TargetSelector.GetTarget(E); if (target != null) { var stacks = W.Level == 0 && Menu.Item(Menu.Name + ".harass.e-settings.stacks").GetValue <Slider>().Value > 0; if (Menu.Item(Menu.Name + ".harass.e-settings.always").GetValue <bool>() || stacks || GetWStacks(target) >= Menu.Item(Menu.Name + ".harass.e-settings.stacks").GetValue <Slider>().Value || E.IsKillable(target) || CPrediction.Circle(E, target, E.GetHitChance("harass")).TotalHits >= Menu.Item(Menu.Name + ".combo.e-settings.min").GetValue <Slider>().Value) { ELogic(target, E.GetHitChance("harass")); } } } if (Menu.Item(Menu.Name + ".harass.q").GetValue <bool>() && Q.IsReady()) { var target = TargetSelector.GetTarget((Q.ChargedMaxRange + Q.Width) * 1.1f, Q.DamageType); if (target != null) { var stacks = W.Level == 0 && Menu.Item(Menu.Name + ".harass.q-settings.stacks").GetValue <Slider>().Value > 0; if (Q.IsCharging || Menu.Item(Menu.Name + ".harass.q-settings.always").GetValue <bool>() || target.Distance(Player) > Orbwalking.GetRealAutoAttackRange(target) * 1.2f || stacks || GetWStacks(target) >= Menu.Item(Menu.Name + ".harass.q-settings.stacks").GetValue <Slider>().Value || Q.IsKillable(target) || CPrediction.Line(Q, target, Q.GetHitChance("harass")).TotalHits >= Menu.Item(Menu.Name + ".harass.q-settings.min").GetValue <Slider>().Value) { QLogic( target, Q.GetHitChance("harass"), Menu.Item(Menu.Name + ".harass.q-settings.fast-cast-min").GetValue <Slider>().Value); } } } }
public static void Muramana(Obj_AI_Hero target, bool activate, float overrideRange = -1f) { try { var muramana = ObjectManager.Player.GetSpellSlot("Muramana"); if (muramana == SpellSlot.Unknown || !muramana.IsReady()) { return; } var hasBuff = ObjectManager.Player.HasBuff("Muramana"); if ((activate && !hasBuff && (_menu == null || _menu.Item(_menu.Name + ".muramana.combo").GetValue <bool>() && ObjectManager.Player.CountEnemiesInRange( overrideRange > 0 ? overrideRange : Orbwalking.GetRealAutoAttackRange(ObjectManager.Player)) >= _menu.Item(_menu.Name + ".muramana.min-enemies-range").GetValue <Slider>().Value&& ObjectManager.Player.ManaPercent >= _menu.Item(_menu.Name + ".muramana.player-mana-above").GetValue <Slider>().Value&& ObjectManager.Player.HealthPercent <= _menu.Item(_menu.Name + ".muramana.player-health-below").GetValue <Slider>().Value&& ObjectManager.Player.HealthPercent >= _menu.Item(_menu.Name + ".muramana.player-health-above").GetValue <Slider>().Value&& (target == null || target.HealthPercent <= _menu.Item(_menu.Name + ".muramana.target-health-below").GetValue <Slider>().Value&& target.HealthPercent >= _menu.Item(_menu.Name + ".muramana.target-health-above").GetValue <Slider>().Value))) || !activate && hasBuff) { ObjectManager.Player.Spellbook.CastSpell(muramana); } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }
protected override void OnPostUpdate() { Orbwalker.SetAttack(!Q.IsCharging); if (_ultimate.IsActive(UltimateModeType.Assisted) && R.IsReady()) { if (_ultimate.ShouldMove(UltimateModeType.Assisted)) { Orbwalking.MoveTo(Game.CursorPos, Orbwalker.HoldAreaRadius); } if (!RLogic(UltimateModeType.Assisted, R.GetHitChance("combo"), TargetSelector.GetTarget(R))) { RLogicSingle(UltimateModeType.Assisted, R.GetHitChance("combo")); } } if (_ultimate.IsActive(UltimateModeType.Auto) && R.IsReady()) { if (!RLogic(UltimateModeType.Auto, R.GetHitChance("combo"), TargetSelector.GetTarget(R))) { RLogicSingle(UltimateModeType.Auto, R.GetHitChance("combo")); } } }
private void OnOrbwalkingBeforeAttack(Orbwalking.BeforeAttackEventArgs args) { try { if (args.Unit.IsMe) { if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo) { var enemy = args.Target as Obj_AI_Hero; if (enemy != null) { ItemManager.Muramana(enemy, true); } } else { ItemManager.Muramana(null, false); } } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }
static ItemManager() { try { // Speed + Atk Speed Youmuu = new CustomItem { Name = "youmuus-ghostblade", DisplayName = "Youmuu's Ghostblade", Item = ItemData.Youmuus_Ghostblade.GetItem(), Flags = ItemFlags.Offensive | ItemFlags.Flee, CombatFlags = CombatFlags.Melee | CombatFlags.Ranged, EffectFlags = EffectFlags.AttackSpeed | EffectFlags.MovementSpeed, CastType = CastType.Self, Range = ObjectManager.Player.IsMelee ? ObjectManager.Player.AttackRange * 3 : Orbwalking.GetRealAutoAttackRange(ObjectManager.Player) }; // AOE damage, only melee Tiamat = new CustomItem { Name = "tiamat", DisplayName = "Tiamat", Item = ItemData.Tiamat_Melee_Only.GetItem(), Flags = ItemFlags.Offensive, CombatFlags = CombatFlags.Melee, EffectFlags = EffectFlags.Damage, CastType = CastType.Self, Damage = Damage.DamageItems.Tiamat, Range = ItemData.Tiamat_Melee_Only.GetItem().Range }; // AOE damage, only melee Hydra = new CustomItem { Name = "hydra", DisplayName = "Hydra", Item = ItemData.Ravenous_Hydra_Melee_Only.GetItem(), Flags = ItemFlags.Offensive, CombatFlags = CombatFlags.Melee, EffectFlags = EffectFlags.Damage, CastType = CastType.Self, Damage = Damage.DamageItems.Hydra, Range = ItemData.Ravenous_Hydra_Melee_Only.GetItem().Range }; // Slow + Damage BilgewaterCutlass = new CustomItem { Name = "bilgewater-cutlass", DisplayName = "Bilgewater Cutlass", Item = ItemData.Bilgewater_Cutlass.GetItem(), Flags = ItemFlags.Offensive | ItemFlags.Flee, CombatFlags = CombatFlags.Melee | CombatFlags.Ranged, EffectFlags = EffectFlags.Damage | EffectFlags.MovementSlow, CastType = CastType.Target, Damage = Damage.DamageItems.Bilgewater, Range = ItemData.Bilgewater_Cutlass.GetItem().Range }; // Slow + Damage BladeRuinedKing = new CustomItem { Name = "blade-ruined-king", DisplayName = "Blade of the Ruined King", Item = ItemData.Blade_of_the_Ruined_King.GetItem(), Flags = ItemFlags.Offensive | ItemFlags.Flee, CombatFlags = CombatFlags.Melee | CombatFlags.Ranged, EffectFlags = EffectFlags.Damage | EffectFlags.MovementSlow, CastType = CastType.Target, Damage = Damage.DamageItems.Botrk, Range = ItemData.Blade_of_the_Ruined_King.GetItem().Range }; // Damage + Slow HextechGunblade = new CustomItem { Name = "hextech-gunblade", DisplayName = "Hextech Gunblade", Item = ItemData.Hextech_Gunblade.GetItem(), Flags = ItemFlags.Offensive | ItemFlags.Flee, CombatFlags = CombatFlags.Melee | CombatFlags.Ranged, EffectFlags = EffectFlags.Damage | EffectFlags.MovementSlow, CastType = CastType.Target, Damage = Damage.DamageItems.Hexgun, Range = ItemData.Hextech_Gunblade.GetItem().Range }; // AOE Shield LocketIronSolari = new CustomItem { Name = "locket-iron-solari", DisplayName = "Locket of the Iron Solari", Item = ItemData.Locket_of_the_Iron_Solari.GetItem(), Flags = ItemFlags.Supportive | ItemFlags.Defensive, CombatFlags = CombatFlags.Melee | CombatFlags.Ranged, EffectFlags = EffectFlags.Shield, CastType = CastType.Self, Range = ItemData.Locket_of_the_Iron_Solari.GetItem().Range }; // Remove stun + heal MikaelsCrucible = new CustomItem { Name = "mikaels-crucible", DisplayName = "Mikael's Crucible", Item = ItemData.Mikaels_Crucible.GetItem(), Flags = ItemFlags.Supportive, CombatFlags = CombatFlags.Melee | CombatFlags.Ranged, EffectFlags = EffectFlags.RemoveStun | EffectFlags.Heal, CastType = CastType.Target, Range = ItemData.Mikaels_Crucible.GetItem().Range }; // Place wards Sightstone = new CustomItem { Name = "sightstone", DisplayName = "Sightstone", Item = ItemData.Sightstone.GetItem(), Flags = ItemFlags.Supportive, CombatFlags = CombatFlags.Melee | CombatFlags.Ranged, CastType = CastType.Position, Range = ItemData.Sightstone.GetItem().Range }; // Place wards RubySightstone = new CustomItem { Name = "ruby-sightstone", DisplayName = "Ruby Sightstone", Item = ItemData.Ruby_Sightstone.GetItem(), Flags = ItemFlags.Supportive, CombatFlags = CombatFlags.Melee | CombatFlags.Ranged, CastType = CastType.Position, Range = ItemData.Ruby_Sightstone.GetItem().Range }; Items = new List <CustomItem> { Youmuu, Tiamat, Hydra, BilgewaterCutlass, BladeRuinedKing, HextechGunblade, MikaelsCrucible, LocketIronSolari, Sightstone, RubySightstone }; MaxRange = Items.Max(s => s.Range); } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }