protected override void Volatile_ProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (sender.Type != Player.Type || !E.IsReady() || !sender.IsEnemy || !SpellMenu["autoe"].Cast <CheckBox>().CurrentValue) { return; } foreach (var ally in EntityManager.Heroes.Allies.Where(x => x.IsValidTarget(E.Range))) { var detectRange = ally.ServerPosition + (args.End - ally.ServerPosition).Normalized() * ally.Distance(args.End); if (detectRange.Distance(ally.ServerPosition) > ally.AttackRange - ally.BoundingRadius) { continue; } { if (!args.SData.IsAutoAttack()) { if (CCDataBase.IsCC_SkillShot(args.SData.Name) && (SpellMenu["Shield" + ally.ChampionName].Cast <CheckBox>().CurrentValue)) { E.Cast(ally); } } if (CCDataBase.IsCC_NonSkillShot(args.SData.Name)) { if (ally.Distance(args.End) < 365 && (SpellMenu["Shield" + ally.ChampionName].Cast <CheckBox>().CurrentValue)) { E.Cast(ally); } } } } }
protected override void Volatile_ProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (sender.NetworkId == Player.NetworkId && args.Slot == SpellSlot.E) { LastE = Now; Chat.Print("Now: " + Now); Chat.Print("Last E: " + LastE); } if (sender.Type != Player.Type || !W.IsReady() || !sender.IsEnemy || !SpellMenu["wtd"].Cast <CheckBox>().CurrentValue) { return; } if (!args.SData.IsAutoAttack()) { if (CCDataBase.IsCC_SkillShot(args.SData.Name)) { if (Player.HealthPercent < SpellMenu["wtdhp"].Cast <Slider>().CurrentValue) { W.Cast(); } } if (CCDataBase.IsCC_NonSkillShot(args.SData.Name)) { if (Player.HealthPercent < SpellMenu["wtdhp"].Cast <Slider>().CurrentValue) { W.Cast(); } } } }
/// <summary> /// OKTR turkey magic :x /// </summary> /// <param name="pos">Pretty self-explainatory tbh</param> /// <returns></returns> internal static float GetSafeScoreTM(Vector3 pos) { var score = 0f; foreach (var enemy in Variables.CloseEnemies(Player.Instance.GetAutoAttackRange(), pos)) { var enemySafeScore = 0f; for (var i = 0; i < 4; i++) { var spell = SpellSlot.Unknown; var spellSafeScore = 0f; switch (i) { case 0: spell = SpellSlot.Q; break; case 1: spell = SpellSlot.W; break; case 2: spell = SpellSlot.E; break; case 3: spell = SpellSlot.R; break; } if (enemy.Spellbook.GetSpell(spell).IsReady) { if ( TargetSpellDatabase.Spells.Any( s => s.ChampionName == enemy.ChampionName && s.Spellslot == spell) && (TargetSpellDatabase.Spells.First( s => s.ChampionName == enemy.ChampionName && s.Spellslot == spell).Type == SpellType.Skillshot || TargetSpellDatabase.Spells.First( s => s.ChampionName == enemy.ChampionName && s.Spellslot == spell).Type == SpellType.Targeted)) { var spellDmg = enemy.GetSpellDamage(Player.Instance, spell); var isCC = CCDataBase.IsCC(enemy.Spellbook.GetSpell(spell).Name); if ((spellDmg > Player.Instance.MaxHealth * 0.05 || isCC) && enemy.Distance(pos) < enemy.Spellbook.GetSpell(spell).SData.CastRange) { if (spellDmg > Player.Instance.MaxHealth * 0.05) { spellSafeScore += (Player.Instance.MaxHealth - spellDmg) / Player.Instance.MaxHealth * 100; } if (isCC) { spellSafeScore += Variables.CloseEnemies(1000, pos).Count * 20; } } } } enemySafeScore += spellSafeScore; } if (!enemy.IsMelee) { if (pos.Distance(enemy) < enemy.GetAutoAttackRange()) { enemySafeScore += 80; } enemySafeScore += enemy.Distance(Player.Instance) / 20; } if (enemy.IsMelee) { if (pos.Distance(enemy) < enemy.GetAutoAttackRange()) { enemySafeScore += 1000; } enemySafeScore += enemy.Distance(Player.Instance) / 5; } if (enemy.TotalShieldMaxHealth() < Player.Instance.GetAutoAttackDamage(enemy, true)) { enemySafeScore = 0; } score += enemySafeScore; } if (pos.IsUnderTurret()) { score += 200; } return(score); }