private static void DoCombo(Hero me, Hero target)
{
var distance = me.Distance2D(target);
IEnumerable<Item> inv;
Item[] enumerable;
bool dagger;
double targetHull = target.HullRadius;
if (Menu.Item("order").GetValue<StringList>().SelectedIndex == (int) Orders.Caster &&
!Menu.Item("hotkeyClone").GetValue<KeyBind>().Active)
{
foreach (var hero in Objects.Tempest.GetCloneList(me))
{
var d = hero.Distance2D(target) - _myHull - targetHull;
inv = hero.Inventory.Items;
enumerable = inv as Item[] ?? inv.ToArray();
dagger =
enumerable.Any(
x =>
x.Name == "item_blink" && x.Cooldown == 0 &&
SpellBaseList.Find(z => z.Name == x.StoredName()) == null);
// uses all items available
if (!hero.IsInvisible())
if (ItemUsage(hero, enumerable, target, d,
Menu.Item("BkbUsage").GetValue<StringList>().SelectedIndex == (int)BkbUsage.Clones ||
Menu.Item("BkbUsage").GetValue<StringList>().SelectedIndex == (int)BkbUsage.All, true))
SpellsUsage(hero, target, d, dagger, true);
/*SpellsUsage(hero, target, d, dagger, true);
ItemUsage(hero, enumerable, target, d,
Menu.Item("BkbUsage").GetValue<StringList>().SelectedIndex == (int) BkbUsage.Clones ||
Menu.Item("BkbUsage").GetValue<StringList>().SelectedIndex == (int) BkbUsage.All, true);*/
if (Menu.Item("OrbWalking.Enable").GetValue<bool>() && OrbMinDist < hero.Distance2D(target))
{
Orbwalk(hero, target);
}
else
{
if (!Utils.SleepCheck("clone_attacking" + hero.Handle)) continue;
hero.Attack(target);
Utils.Sleep(350, "clone_attacking" + hero.Handle);
}
/*
if (Menu.Item("OrbWalking.Enable").GetValue<bool>())
{
Orbwalk(hero, target);
}
else
{
if (!Utils.SleepCheck("clone_attacking" + hero.Handle)) continue;
hero.Attack(target);
Utils.Sleep(350, "clone_attacking" + hero.Handle);
}*/
}
}
var illusions =
ObjectManager.GetEntities<Hero>()
.Where(
x =>
x.IsAlive && x.IsControllable && x.Team == me.Team && x.IsIllusion &&
!x.HasModifier("modifier_kill"))
.ToList();
foreach (var illusion in illusions.TakeWhile(illusion => Utils.SleepCheck("clone_attacking" + illusion.Handle)))
{
illusion.Attack(target);
Utils.Sleep(350, "clone_attacking" + illusion.Handle);
}
var necr = Objects.Necronomicon.GetNecronomicons(me);
foreach (
var necronomicon in
necr.TakeWhile(
illusion =>
Utils.SleepCheck("clone_attacking" + illusion.Handle) && illusion.Distance2D(target) <= 1500 &&
!Equals(illusion, me)))
{
necronomicon.Attack(target);
var spell = necronomicon.Spellbook.Spell1;
if (spell != null && spell.CanBeCasted(target) &&
necronomicon.Distance2D(target) <= spell.CastRange + necronomicon.HullRadius + targetHull &&
Utils.SleepCheck(spell.Name + "clone_attacking" + necronomicon.Handle))
{
spell.UseAbility(target);
Utils.Sleep(300, spell.Name + "clone_attacking" + necronomicon.Handle);
}
Utils.Sleep(600, "clone_attacking" + necronomicon.Handle);
}
if (!me.IsAlive) return;
inv = me.Inventory.Items;
enumerable = inv as Item[] ?? inv.ToArray();
dagger = enumerable.Any(x=>x.Name=="item_blink" && x.Cooldown==0);
SpellsUsage(me, target, distance, dagger,false);
ItemUsage(me,enumerable, target, distance,
Menu.Item("BkbUsage").GetValue<StringList>().SelectedIndex == (int) BkbUsage.Me ||
Menu.Item("BkbUsage").GetValue<StringList>().SelectedIndex == (int) BkbUsage.All);
//Orbwalk(me,target);
if (Menu.Item("OrbWalking.Enable").GetValue<bool>() && OrbMinDist < me.Distance2D(target))
{
Orbwalk(me, target);
}
else
{
if (!Utils.SleepCheck("clone_attacking" + me.Handle)) return;
me.Attack(target);
Utils.Sleep(350, "clone_attacking" + me.Handle);
}
}