private static void Game_OnTick(EventArgs args) { DangerBuffsDetected.RemoveAll(b => b.Ended); foreach (var target in EntityManager.Heroes.AllHeroes) { var dangerbuffs = DangerBuffDataDatabase.List.FindAll(b => target.HasBuff(b.BuffName)); if (!dangerbuffs.Any()) { return; } foreach (var data in dangerbuffs) { var thebuff = target.GetBuff(data.BuffName); var caster = thebuff?.Caster as AIHeroClient; if (caster != null && caster.IsValid) { var detected = new DetectedDangerBuffData { Caster = caster, Target = target, Buff = thebuff, Data = data }; Add(detected); } } } }
private static void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { var caster = sender as AIHeroClient; if (caster == null) { return; } foreach (var data in _currentBuffs.Where(b => b.Hero.Equals(caster.Hero) && b.RequireCast && !string.IsNullOrEmpty(b.BuffName) && b.Slot == args.Slot)) { foreach (var obj in ObjectManager.Get <Obj_AI_Base>().Where(o => o.IsValidTarget() && o.Team != caster.Team && o.HasBuff(data.BuffName))) { var getBuff = obj.GetBuff(data.BuffName); if (getBuff != null) { var detected = new DetectedDangerBuffData { Caster = caster, Target = obj, Buff = getBuff, Data = data }; Add(detected); } } } }
internal static void Invoke(DetectedDangerBuffData args) { var invocationList = OnUpdate?.GetInvocationList(); if (invocationList != null) { foreach (var m in invocationList) { m?.DynamicInvoke(args); } } }
public static void Add(DetectedDangerBuffData data) { if (data == null) { Console.WriteLine("Invalid DetectedDangerBuffData"); return; } OnDangerBuffDetected.Invoke(data); if (!DangerBuffsDetected.Contains(data)) { DangerBuffsDetected.Add(data); } }
private static void Obj_AI_Base_OnBuffGain(Obj_AI_Base sender, Obj_AI_BaseBuffGainEventArgs args) { var thebuff = args.Buff; var caster = thebuff?.Caster as AIHeroClient; if (caster != null && caster.IsValid) { foreach (var data in _currentBuffs.Where(b => b.Hero.Equals(caster.Hero) && !b.RequireCast && !string.IsNullOrEmpty(b.BuffName) && (b.BuffName.Equals(args.Buff.Name, StringComparison.CurrentCultureIgnoreCase) || b.BuffName.Equals(args.Buff.DisplayName, StringComparison.CurrentCultureIgnoreCase)))) { var detected = new DetectedDangerBuffData { Caster = caster, Target = sender, Buff = thebuff, Data = data }; Add(detected); } } }
private static void OnDangerBuffUpdate_OnUpdate(DetectedDangerBuffData args) { if (args.Caster == null || !Spells.E.IsReady() || !args.Caster.IsEnemy || !args.WillHit(Player.Instance)) { return; } var spellname = args.Data.MenuItemName; var spell = EnabledSpells.FirstOrDefault(s => s.SpellName.Equals(spellname)); if (spell == null) { Logger.Warn($"{spellname} Not valid Spell"); return; } if (!spell.Enabled && (!Meniu.BlockExecute || Player.Instance.PredictHealth(args.TicksLeft) > args.GetSpellDamage(Player.Instance))) { Logger.Warn($"{spellname} Not Enabled from Menu"); return; } Block(args, spell); }