private static void Obj_AI_Base_OnBasicAttack(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (!(args.Target is AIHeroClient) || user.IsDead) { return; } var caster = sender; var target = (AIHeroClient)args.Target; if (!(caster is AIHeroClient || caster is Obj_AI_Turret) || !caster.IsEnemy || target == null || caster == null || !target.IsAlly || !target.IsKillable()) { return; } var aaprecent = (caster.GetAutoAttackDamage(target, true) / target.TotalShieldHealth()) * 100; var death = caster.GetAutoAttackDamage(target, true) >= target.TotalShieldHealth() || aaprecent >= target.HealthPercent; OnIncDmg?.Invoke(caster, target, args, caster.GetAutoAttackDamage(target, true)); }
private static void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (!(args.Target is AIHeroClient) || !sender.IsEnemy || user.IsDead) { return; } var caster = sender; var enemy = sender as AIHeroClient; var target = (AIHeroClient)args.Target; Common.ally = EntityManager.Heroes.Allies.FirstOrDefault(a => a.IsInRange(args.End, 100) && a.IsKillable() && !a.IsMe); var hitally = Common.ally != null && args.End != Vector3.Zero && args.End.Distance(Common.ally) < 100; var hitme = args.End != Vector3.Zero && args.End.Distance(user) < 100; if (!(caster is AIHeroClient || caster is Obj_AI_Turret) || !caster.IsEnemy || enemy == null || caster == null) { return; } if (((target.IsAlly && !target.IsMe) || hitally) && Common.ally != null && Common.ally.IsValidTarget()) { var spelldamageally = enemy.GetSpellDamage(Common.ally, args.Slot); var damagepercentally = (spelldamageally / Common.ally.TotalShieldHealth()) * 100; var deathally = damagepercentally >= Common.ally.HealthPercent || spelldamageally >= Common.ally.TotalShieldHealth() || caster.GetAutoAttackDamage(Common.ally, true) >= Common.ally.TotalShieldHealth() || enemy.GetAutoAttackDamage(Common.ally, true) >= Common.ally.TotalShieldHealth(); OnIncDmg?.Invoke(caster, Common.ally, args, spelldamageally); } if (target.IsMe || hitme) { var spelldamageme = enemy.GetSpellDamage(user, args.Slot); var damagepercentme = (spelldamageme / user.TotalShieldHealth()) * 100; var deathme = damagepercentme >= user.HealthPercent || spelldamageme >= user.TotalShieldHealth() || caster.GetAutoAttackDamage(user, true) >= user.TotalShieldHealth() || enemy.GetAutoAttackDamage(user, true) >= user.TotalShieldHealth(); OnIncDmg?.Invoke(caster, user, args, spelldamageme); } }