private static void Obj_AI_Base_OnBasicAttack(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { var caster = sender as AIHeroClient; var target = args.Target as Obj_AI_Base; if (caster == null || target == null || !caster.IsValid || !target.IsValid) { return; } var infos = EmpowerdAttackDataDatabase.List.FindAll(s => s.Hero.Equals(caster.Hero)); foreach (var info in infos) { var attackname = string.IsNullOrEmpty(info.AttackName) || info.AttackName.Equals(args.SData.Name, StringComparison.CurrentCultureIgnoreCase); var requirebuff = string.IsNullOrEmpty(info.RequireBuff) || caster.GetBuffCount(info.RequireBuff) >= info.RequiredBuffCount; var targetrequirebuff = string.IsNullOrEmpty(info.TargetRequiredBuff) || target.GetBuffCount(info.TargetRequiredBuff) >= info.TargetRequiredBuffCount; var donthavebuff = string.IsNullOrEmpty(info.DontHaveBuff) || !target.HasBuff(info.DontHaveBuff); if (attackname && requirebuff && targetrequirebuff && donthavebuff) { var detected = new DetectedEmpoweredAttackData { Caster = caster, Target = target, Data = info }; Add(detected); } } }
private static void Add(DetectedEmpoweredAttackData data) { if (data == null || DetectedEmpoweredAttacks.Contains(data)) { Console.WriteLine("Invalid DetectedEmpoweredAttackData"); return; } OnEmpoweredAttackDetected.Invoke(data); DetectedEmpoweredAttacks.Add(data); }
internal static void Invoke(DetectedEmpoweredAttackData args) { var invocationList = OnDetect?.GetInvocationList(); if (invocationList != null) { foreach (var m in invocationList) { m?.DynamicInvoke(args); } } }
private static void Add(DetectedEmpoweredAttackData data) { if (data == null || DetectedEmpoweredAttacks.Contains(data)) { Console.WriteLine("Invalid DetectedEmpoweredAttackData"); return; } if (data.Missile != null) { var detect = DetectedEmpoweredAttacks.FirstOrDefault(a => a.Caster.IdEquals(data.Caster) && a.Missile == null && a.Data.Equals(data.Data)); if (detect != null) { DetectedEmpoweredAttacks.Remove(detect); } } OnEmpoweredAttackDetected.Invoke(data); DetectedEmpoweredAttacks.Add(data); }
private static void OnEmpoweredAttackUpdate_OnUpdate(DetectedEmpoweredAttackData 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); }
private static void OnEmpoweredAttackDetected_OnDetect(DetectedEmpoweredAttackData args) { Console.WriteLine($"{args.Data.MenuItemName} {args.TicksLeft} {Core.GameTickCount} / {args.AttackCastDelay} {args.Speed}"); }