public void Execute(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs args) { /*if (!sender.IsEnemy) * return; * * if (SoulBoundAlly == null) * return; * * if ((!(sender is Obj_AI_Hero) || args.SpellData.ConsideredAsAutoAttack) && args.Target != null && * args.Target.NetworkId == SoulBoundAlly.NetworkId) * { * IncDamage[ * SoulBoundAlly.ServerPosition.Distance(sender.ServerPosition) / args.SpellData.MissileSpeed + * Game.TickCount] = (float) sender.GetAutoAttackDamage(SoulBoundAlly); * } * else * { * var attacker = sender as Obj_AI_Hero; * if (attacker == null) * return; * * var slot = attacker.GetSpellSlotFromName(args.SpellData.Name); * * if (slot == SpellSlot.Unknown) * return; * * //TODO summoner spells damage * if (slot == SpellSlot.Q || slot == SpellSlot.W || slot == SpellSlot.E || slot == SpellSlot.R) * if (args.Target != null && args.Target.NetworkId == SoulBoundAlly.NetworkId || * args.End.Distance(SoulBoundAlly.ServerPosition) < * Math.Pow(args.SpellData.LineWidth, 2)) * InstDamage[Game.TickCount + 2] = (float) attacker.GetSpellDamage(SoulBoundAlly, slot); * }*/ }
private static void OnProcessSpellCast(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs Args) { try { if (sender.IsMe) { if (Args.SpellData.Name.Contains("KatarinaW")) { lastWTime = Game.TickCount; } if (Args.SpellData.Name.Contains("KatarinaE")) { lastETime = Game.TickCount; if (MiscMenu["FlowersKatarina.MiscMenu.OneKeyEW"].As <MenuKeyBind>().Enabled&& W.Ready) { W.Cast(); } } } } catch (Exception ex) { Console.WriteLine("Error in MyEventManager.OnProcessSpellCast." + ex); } }
private static void OnProcessSpellCast(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs Args) { try { if (sender.IsMe && Orbwalker.Mode == OrbwalkingMode.Combo) { RivenDoubleCastEvent(Args.SpellData.Name, BurstMenu["FlowersRiven.BurstMenu.Key"].As <MenuKeyBind>().Enabled); } else if (sender.IsEnemy && sender.Type == GameObjectType.obj_AI_Hero && !string.IsNullOrEmpty(Args.SpellData.Name) && !Args.SpellData.Name.Contains("attack")) { if (EvadeMenu["FlowersRiven.EvadeMenu.Use E"].Enabled && E.Ready) { if (Args.SpellData.TargettingType == 1 && Args.Target != null && Args.Target.IsMe) { E.Cast(Game.CursorPos); } } } } catch (Exception ex) { Console.WriteLine("Error in MyEventManager.OnProcessSpellCast." + ex); } }
private static void ObjAiBaseOnOnProcessSpellCast(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs e) { if (sender.IsMe && e.SpellSlot == SpellSlot.E) { RushToTarget = true; } }
internal static void Obj_AI_Base_OnStealth(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs args) { #region Stealth var attacker = sender as Obj_AI_Hero; if (attacker == null || attacker.IsAlly || !attacker.IsValid) { return; } foreach (var hero in ZLib.GetUnits().Where(h => h.Instance.Distance(attacker) <= 1000)) { foreach (var entry in ZLib.CachedSpells.Where(s => s.EventTypes.Contains(EventType.Stealth))) { if (entry.SpellName.ToLower() == args.SpellData.Name.ToLower()) { EmulateDamage(sender, hero, new Gamedata { SpellName = "Stealth" }, EventType.Stealth, "process.onstealth"); break; } } } #endregion }
//private static void ImplementationOnPostAttack(object o, PostAttackEventArgs e) //{ // if (e.Target == null || !e.Target.IsValid) // return; // if (e.Target.Name == "Barrel" && Game.TickCount - LastAutoAttack >= 500) // { // LastAutoAttack = Game.TickCount; // var barrel = (Barrel)e.Target; // if (barrel != null) // { // if (barrel.Health > 1) // barrel.Decay(Game.Ping); // } // } //} private static void ObjAiBaseOnOnProcessAutoAttack(Obj_AI_Base obj, Obj_AI_BaseMissileClientDataEventArgs e) { if (e.Target == null || !e.Target.IsValid) { return; } if (e.Target.Name == "Barrel") { var barrel = (Barrel)e.Target; if (barrel != null) { if (barrel.Health > 1) { if (e.Sender.IsMelee) { barrel.Decay((int)((Player.AttackCastDelay * 1000) + Game.Ping)); } else { barrel.Decay((int)(e.Start.Distance(e.End) / e.SpellData.MissileSpeed) + Game.Ping); } } } } }
private static void Obj_AI_Base_OnProcessAutoAttack(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs e) { //Ignore auto attacks happening too far away if (sender == null || !sender.IsValidTarget(4000, true) || sender is Obj_AI_Hero) { return; } //Only process for minion targets var targetM = e.Target as Obj_AI_Minion; if (targetM == null) { return; } AutoAttack attack; if (sender.IsMelee) { attack = new MeleeAttack(sender, targetM, 0); } else { attack = new RangedAttack(sender, targetM, 0); } Attacks.AddAttack(attack); }
private static void ObjAiBaseOnOnProcessSpellCast(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs e) { if (sender.IsMe && e.SpellSlot == SpellSlot.R) { LastUltTime = Game.TickCount; } }
public static void OnProcessSpellCast(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs args) { if (sender.IsMe && args.SpellSlot == SpellSlot.R) { LastR = Game.TickCount; } }
private static void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs args) { if (sender.IsMe && args.SpellData.Name.ToLower() == "jhinr") { _rPosCast = args.End; } }
/// <summary> /// Called on do-cast. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The <see cref="Obj_AI_BaseMissileClientDataEventArgs" /> instance containing the event data.</param> public void OnProcessSpellCast(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs args) { if (sender.IsMe) { /// <summary> /// Initializes the orbwalkingmodes. /// </summary> switch (ImplementationClass.IOrbwalker.Mode) { case OrbwalkingMode.Combo: switch (args.SpellData.Name) { //case "CaitlynEntrapment": case "CaitlynEntrapmentMissile": if (SpellClass.W.Ready && MenuClass.Spells["w"]["triplecombo"].As <MenuBool>().Enabled) { var bestTarget = GameObjects.EnemyHeroes .Where(t => !Invulnerable.Check(t) && t.IsValidTarget(SpellClass.W.Range)) .MinBy(o => o.Distance(args.End)); if (bestTarget != null && CanTrap(bestTarget)) { SpellClass.W.Cast(UtilityClass.Player.ServerPosition.Extend(bestTarget.ServerPosition, UtilityClass.Player.Distance(bestTarget) + bestTarget.BoundingRadius)); UpdateEnemyTrapTime(bestTarget.NetworkId); } } break; } break; } } }
private void SpellDetector_OnProcessSpecialSpell(Obj_AI_Base hero, Obj_AI_BaseMissileClientDataEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs) { if (spellData.spellName == "GravesQLineSpell") { var newData = (SpellData)spellData.Clone(); newData.isPerpendicular = true; newData.secondaryRadius = 255f; newData.updatePosition = false; newData.extraEndTime = 1300; var end = args.End; var start = args.Start; if (end.Distance(start) > newData.range) { end = args.Start + (args.End - args.Start).Normalized() * newData.range; } if (end.Distance(start) < newData.range) { end = args.Start + (args.End - args.Start).Normalized() * newData.range; } var w = EvadeHelper.GetNearWallPoint(start, end); if (w != default(Vector3)) { end = w; } //SpellDetector.CreateSpellData(hero, hero.ServerPosition, end, spellData); SpellDetector.CreateSpellData(hero, hero.ServerPosition, end, newData); } }
private static void AutoAttack(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs args) { var attack = sender as Obj_AI_Hero; var target = args.Target as Obj_AI_Hero; if (attack != null && attack.IsEnemy && attack.IsHero && Main["combo"]["autoW"].As <MenuSliderBool>().Enabled&& Player.ManaPercent() >= Main["combo"]["autoW"].As <MenuSliderBool>().Value&& W.Ready) { foreach (var ally in GameObjects.AllyHeroes.Where(x => !x.IsDead && x.IsMe)) { if (target != null) { foreach (var sword in GameObjects.AllGameObjects) { if (sword.Name == "ShenSpiritUnit" && ally.Distance(sword.Position) <= 350 && Main["combo"]["autoWS"].As <MenuBool>().Enabled) { W.Cast(); } else if (!Main["combo"]["autoWS"].As <MenuBool>().Enabled&& Player.CountEnemyHeroesInRange(650) >= 1) { W.Cast(); } } } } } }
private void Game_OnProcessSpell(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs args) { if (!sender.IsMe) { return; } string name; if (SpellDetector.channeledSpells.TryGetValue(args.SpellData.Name.ToLower(), out name)) { isChanneling = true; channelPosition = myHero.ServerPosition.To2D(); } if (ObjectCache.menuCache.cache["CalculateWindupDelay"].As <MenuBool>().Enabled) { var castTime = (sender.SpellBook.CastEndTime - Game.ClockTime) * 1000; if (castTime > 0 && args.SpellData.ConsideredAsAutoAttack && Math.Abs(castTime - myHero.AttackCastDelay * 1000) > 1) { lastWindupTime = EvadeUtils.TickCount + castTime - Game.Ping / 2; if (isDodging) { SpellDetector_OnProcessDetectedSpells(); //reprocess } } } }
/// <summary> /// Called on do-cast. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The <see cref="Obj_AI_BaseMissileClientDataEventArgs" /> instance containing the event data.</param> private static void OnProcessAutoAttack(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs args) { if (sender is Obj_AI_Hero) { Console.WriteLine("Autoattack Name: " + args.SpellData.Name); } }
/// <summary> /// Called while processing spellcast operations. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The <see cref="Obj_AI_BaseMissileClientDataEventArgs" /> instance containing the event data.</param> public void OnPerformCast(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs args) { if (sender.IsMe) { switch (args.SpellSlot) { /// <summary> /// The W->E Combo Logic. /// </summary> case SpellSlot.W: if (SpellClass.E.Ready) { switch (ImplementationClass.IOrbwalker.Mode) { case OrbwalkingMode.Combo: if (MenuClass.Spells["e"]["combo"].As <MenuBool>().Enabled) { SpellClass.E.Cast(args.End); } break; } } break; } } }
private void Game_OnProcessSpell(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs args) { if (!sender.IsMe) { return; } if (SpellDetector.ChanneledSpells.TryGetValue(args.SpellData.Name.ToLower(), out _)) { IsChanneling = true; ChannelPosition = MyHero.ServerPosition.To2D(); } if (!ObjectCache.MenuCache.Cache["CalculateWindupDelay"].As <MenuBool>().Enabled) { return; } var castTime = (sender.SpellBook.CastEndTime - Game.ClockTime) * 1000; if (!(castTime > 0) || !args.SpellData.ConsideredAsAutoAttack || !(Math.Abs(castTime - MyHero.AttackCastDelay * 1000) > 1)) { return; } LastWindupTime = Environment.TickCount + castTime - Game.Ping / 2f; if (IsDodging) { SpellDetector_OnProcessDetectedSpells(); } }
private static void Obj_AI_Hero_OnProcessSpellCast(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs e) { if (sender.IsMelee && e.SpellSlot == SpellSlot.R && e.SpellData.Name == "OrnnR") { LastRCast = Game.TickCount; } }
private static void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs e) { if (sender.IsMe && e.SpellSlot == SpellSlot.E) { ECasted = Game.TickCount; } }
private void ProcessSpell_HeimerdingerW(Obj_AI_Base hero, Obj_AI_BaseMissileClientDataEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs) { if (spellData.SpellName == "HeimerdingerW") { specialSpellArgs.NoProcess = true; } }
private static void Obj_AI_Base_OnProcessAutoAttack(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs args) { if (sender == null || args.Target == null) { return; } var bTarget = args.Target as Obj_AI_Base; if (bTarget == null) { return; } var tSender = sender as Obj_AI_Turret; if (tSender == null) { return; } if (!Turrets.ContainsKey(tSender.NetworkId)) { return; } Turrets[tSender.NetworkId]?.OnAttack(tSender, bTarget, args); }
private static void OnProcessAutoAttack(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs Args) { if (sender == null || sender.Type != GameObjectType.obj_AI_Hero || !sender.IsEnemy || !sender.IsMelee) { return; } if (string.IsNullOrEmpty(Args.SpellData.Name) || Args.Target == null || !Args.Target.IsMe || Menu["Gapcloser." + sender.UnitSkinName.ToLower()].As <Menu>()["Gapcloser." + sender.UnitSkinName.ToLower() + ".Melee"] == null || !Menu["Gapcloser." + sender.UnitSkinName.ToLower()].As <Menu>()["Gapcloser." + sender.UnitSkinName.ToLower() + ".Melee"].As <MenuSliderBool>().Enabled) { return; } if (!Gapclosers.ContainsKey(sender.NetworkId)) { Gapclosers.Add(sender.NetworkId, new GapcloserArgs()); } Gapclosers[sender.NetworkId].Unit = (Obj_AI_Hero)sender; Gapclosers[sender.NetworkId].Slot = SpellSlot.Unknown; Gapclosers[sender.NetworkId].Type = SpellType.Melee; Gapclosers[sender.NetworkId].SpellName = Args.SpellData.Name; Gapclosers[sender.NetworkId].StartPosition = Args.Start; Gapclosers[sender.NetworkId].EndPosition = Args.End; Gapclosers[sender.NetworkId].StartTick = Game.TickCount; }
private static void ProcessSpell_ZedShuriken(Obj_AI_Base hero, Obj_AI_BaseMissileClientDataEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs) { if (spellData.spellName == "ZedQ") { foreach (var entry in ObjectTracker.objTracker) { var info = entry.Value; if (info.Name == "Shadow") { if (info.usePosition == false && (info.obj == null || !info.obj.IsValid || info.obj.IsDead)) { DelayAction.Add(1, () => ObjectTracker.objTracker.Remove(info.obj.NetworkId)); } else { Vector3 endPos2; if (info.usePosition == false) { endPos2 = info.obj.Position.Extend(args.End, spellData.range); SpellDetector.CreateSpellData(hero, info.obj.Position, endPos2, spellData, null, 0, false); } else { endPos2 = info.position.Extend(args.End, spellData.range); SpellDetector.CreateSpellData(hero, info.position, endPos2, spellData, null, 0, false); } } } } } }
public void OnProcessSpellCast(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs args) { if (sender is Obj_AI_Turret && args.Target.IsMe && E.Ready && Champions.Fizz.MenuClass.miscoptionsmenu["UseETower"].Enabled) { E.Cast(Game.CursorPos); } if (!sender.IsMe) { return; } if (args.SpellData.Name == "FizzQ") { /*if (IOrbwalker.Mode == OrbwalkingMode.Combo) * { * DelayAction.Queue((int)(sender.SpellBook.CastEndTime - Game.ClockTime) + Game.Ping / 2 + 250, () => W.Cast()); * }*/ if (IOrbwalker.Mode == OrbwalkingMode.Mixed && E.Ready) { //THEN HARASS. SET LAST POSITION BEFORE CASTING. LastHarassPos = Player.ServerPosition; } } if (args.SpellData.Name == "FizzETwo" || args.SpellData.Name == "FizzEBuffer") { //Get rid of last pos since we are landing now. For next harass. LastHarassPos = null; } }
private static void OnProcessSpellCast(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs Args) { if (sender == null || !sender.IsValid || sender.Type != GameObjectType.obj_AI_Hero || !sender.IsEnemy || string.IsNullOrEmpty(Args.SpellData.Name) || Args.SpellData.Name.ToLower().Contains("attack") || Args.SpellData.Name.ToLower().Contains("crit")) { return; } if (Spells.All( x => !string.Equals(x.SpellName, Args.SpellData.Name, StringComparison.CurrentCultureIgnoreCase)) || !Menu["Gapcloser" + sender.UnitSkinName.ToLower()].As <Menu>() ["Gapcloser" + sender.UnitSkinName.ToLower() + "." + Args.SpellData.Name.ToLower()].As <MenuBool>().Enabled) { return; } if (!Gapclosers.ContainsKey(sender.NetworkId)) { Gapclosers.Add(sender.NetworkId, new GapcloserArgs()); } Gapclosers[sender.NetworkId].Unit = (Obj_AI_Hero)sender; Gapclosers[sender.NetworkId].Slot = Args.SpellSlot; Gapclosers[sender.NetworkId].Type = Args.Target != null ? SpellType.Targeted : SpellType.SkillShot; Gapclosers[sender.NetworkId].SpellName = Args.SpellData.Name; Gapclosers[sender.NetworkId].StartPosition = Args.Start; Gapclosers[sender.NetworkId].EndPosition = Args.End; Gapclosers[sender.NetworkId].StartTick = Game.TickCount; Gapclosers[sender.NetworkId].HaveShield = HaveShiledBuff(sender); }
public static void OnProcessSpellCast(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs args) { if (!MenuConfig.Combo["Dodge"].Enabled || sender == null || !sender.IsHero || !sender.IsEnemy) { return; } var missile = SpellDatabase.GetByName(args.SpellData.Name); if (missile == null) { return; } var minion = GameObjects.Minions.Where(x => x.Distance(Global.Player) <= SpellConfig.E.Range && !x.HasBuff("YasuoDashWrapper")). OrderBy(x => x.Distance(Game.CursorPos)). FirstOrDefault(); if (args.End.Distance(Global.Player.ServerPosition) <= 140 && SpellConfig.E.Ready && minion != null) { SpellConfig.E.CastOnUnit(minion); } if (args.End.Distance(Global.Player.ServerPosition) <= 300 && SpellConfig.W.Ready && missile.CollisionObjects.Any(x => x.HasFlag(CollisionableObjects.YasuoWall))) { SpellConfig.W.Cast(sender.ServerPosition); } }
private static void OnProcessAutoAttackDelayEvent(Obj_AI_BaseMissileClientDataEventArgs Args) { var target = Args.Target as AttackableUnit; if (target == null || target.IsDead || !target.IsValidTarget()) { return; } switch (Orbwalker.Mode) { case OrbwalkingMode.Combo: if (BurstMenu["FlowersRiven.BurstMenu.Key"].As <MenuKeyBind>().Enabled) { BurstAfterAttackEvent(); } else { ComboAfterAttackEvent(target); } break; case OrbwalkingMode.Mixed: HarassAfterAttackEvent(target); break; case OrbwalkingMode.Laneclear: ClearFarmAfterAttackEvent(target); break; } }
private static void ProcessSpell_AzirSoldier(Obj_AI_Base hero, Obj_AI_BaseMissileClientDataEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs) { if (spellData.SpellName == "AzirQWrapper") { foreach (var entry in ObjectTracker.ObjTracker) { var info = entry.Value; if (info.Name == "AzirQSoldier") { foreach (var objEntry in info.ObjList) { var soldier = objEntry.Value; if (soldier == null || !soldier.IsValid || soldier.IsDead) { continue; } var maxMenuSliderange = 875 + hero.Distance(soldier.Position); var start = soldier.Position; var end = args.End; if (start.Distance(end) > maxMenuSliderange) { end = start + (end - start).Normalized() * maxMenuSliderange; } SpellDetector.CreateSpellData(hero, start, end, spellData, soldier); } } } specialSpellArgs.NoProcess = true; } }
private static void ProcessSpell_OrianaRedactCommand(Obj_AI_Base hero, Obj_AI_BaseMissileClientDataEventArgs args) { if (!hero.IsValid && hero.Type == GameObjectType.obj_AI_Hero) { return; } var champ = (Obj_AI_Hero)hero; if (champ.ChampionName == "Orianna" && champ.CheckTeam()) { if (args.SpellData.Name == "OrianaRedactCommand") { foreach (var entry in ObjectTracker.ObjTracker) { var info = entry.Value; if (entry.Value.Name == "TheDoomBall") { info.UsePosition = false; info.Obj = args.Target; } } } } }
private static void OnProcessAutoAttack(Obj_AI_Base sender, Obj_AI_BaseMissileClientDataEventArgs args) { if (sender == null || !sender.IsHero || !sender.IsEnemy || !sender.IsValidTarget()) { return; } if (string.IsNullOrEmpty(args.SpellData.Name) || args.Target == null || !args.Target.IsMe || !Menu[sender.UnitSkinName][sender.UnitSkinName + ".Melee"].Enabled) { return; } if (!Gapclosers.ContainsKey(sender.NetworkId)) { Gapclosers.Add(sender.NetworkId, new GapcloserArgs()); } var gapclosers = Gapclosers[sender.NetworkId]; gapclosers.Unit = (Obj_AI_Hero)sender; gapclosers.Slot = SpellSlot.Unknown; gapclosers.Type = SpellType.Melee; gapclosers.SpellName = args.SpellData.Name; gapclosers.StartPosition = args.Start; gapclosers.EndPosition = args.End; gapclosers.StartTick = Game.TickCount; }