private static void SpellsUsage(Hero me, Hero target, double distance, bool daggerIsReady, bool tempest)
{
var spellbook = me.Spellbook;
var q = spellbook.SpellQ;
var w = spellbook.SpellW;
var e = spellbook.SpellE;
if (q != null && IsAbilityEnable(q.StoredName(), tempest) && q.CanBeCasted() && q.CanHit(target) &&
Utils.SleepCheck(me.Handle + q.Name))
{
q.UseAbility(target);
Utils.Sleep(500, me.Handle + q.Name);
}
if (w != null && IsAbilityEnable(w.StoredName(), tempest) && w.CanBeCasted() && Utils.SleepCheck(w.Name) &&
!me.HasModifier("modifier_arc_warden_magnetic_field") && distance <= 600 && !daggerIsReady)
{
if (!Menu.Item("MagneticField").GetValue<bool>() && target.IsMelee)
{
Utils.Sleep(500, "magField");
w.UseAbility(Prediction.InFront(me, -250));
}
else
w.UseAbility(Prediction.InFront(me, 250));
Utils.Sleep(500, w.Name);
}
if (e != null && IsAbilityEnable(e.StoredName(), tempest) && e.CanBeCasted() &&
Utils.SleepCheck(me.Handle + e.Name) && !daggerIsReady && !Prediction.IsTurning(target) && (!SparkUsage || me.IsVisibleToEnemies))
{
var predVector3 = target.NetworkActivity == NetworkActivity.Move &&
Menu.Item("usePrediction").GetValue<bool>()
? Prediction.InFront(target, target.MovementSpeed*3 + Game.Ping/1000)
: target.Position;
e.UseAbility(predVector3);
Utils.Sleep(1000, me.Handle + e.Name);
}
var r = me.Spellbook.SpellR;
if (!IsAbilityEnable(r.StoredName(), tempest))
return;
if (r == null || !IsAbilityEnable(r.StoredName(), tempest) || !r.CanBeCasted() ||
!Utils.SleepCheck(me.Handle + r.Name) || distance > 900 || Objects.Tempest.GetCloneList(me).Any())
return;
r.UseAbility();
Utils.Sleep(500, me.Handle + r.Name);
}