private static void OnTargetSpellDetection(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { try { if (OnTargetSpell == null) { return; // only if subscribers } if (sender.Position.Distance(ObjectManager.Player.Position) > DetectionRange) { return; // only detect spells in range } if (!sender.IsValid <Obj_AI_Hero>()) { return; // only hero } if (!args.Target.IsValid <Obj_AI_Base>()) { return; // only targeted } if (args.SData.Name.ToLower().Contains("summoner") || args.SData.Name.ToLower().Contains("recall")) { return; // ignore summoners TODO: add summoners to database } // TODO: add menu check var caster = (Obj_AI_Hero)sender; var target = (Obj_AI_Base)args.Target; var data = TargetSpellDatabase.GetByName(args.SData.Name); if (Orbwalking.IsAutoAttack(args.SData.Name)) { data = new TargetSpellData( caster.ChampionName.ToLower(), args.SData.Name.ToLower(), SpellSlot.Unknown, SpellType.AutoAttack, CcType.No, caster.AttackRange, caster.AttackDelay, caster.BasicAttack.MissileSpeed); // TODO: check melee } if (data == null) { Console.WriteLine("Target Spell not Found: " + args.SData.Name); return; } ActiveTargeted.Add(new TargetSpell { Caster = caster, Target = target, Spell = data, StartTick = Environment.TickCount, StartPosition = args.Start.To2D() }); } catch (Exception e) { Console.WriteLine(e); } }
private static void OnTargetSpellDetection(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { try { if (OnTargetSpell == null) return; // only if subscribers if (sender.Position.Distance(ObjectManager.Player.Position) > DetectionRange) return; // only detect spells in range if (!sender.IsValid<Obj_AI_Hero>()) return; // only hero if (!args.Target.IsValid<Obj_AI_Base>()) return; // only targeted if (args.SData.Name.ToLower().Contains("summoner") || args.SData.Name.ToLower().Contains("recall")) return; // ignore summoners TODO: add summoners to database // TODO: add menu check var caster = (Obj_AI_Hero) sender; var target = (Obj_AI_Base) args.Target; var data = TargetSpellDatabase.GetByName(args.SData.Name); if (Orbwalking.IsAutoAttack(args.SData.Name)) { data = new TargetSpellData( caster.ChampionName.ToLower(), args.SData.Name.ToLower(), SpellSlot.Unknown, SpellType.AutoAttack, CcType.No, caster.AttackRange, caster.AttackDelay, caster.BasicAttack.MissileSpeed); // TODO: check melee } if (data == null) { Console.WriteLine("Target Spell not Found: " + args.SData.Name); return; } ActiveTargeted.Add(new TargetSpell { Caster = caster, Target = target, Spell = data, StartTick = Environment.TickCount, StartPosition = args.Start.To2D() }); } catch (Exception e) { Console.WriteLine(e); } }