private static void UseDisableStageOne(Hero target, IEnumerable<Item> items, IEnumerable<Ability> abilities, bool stage, bool itsRealConterSpell, Hero me, uint i)
{
if (!me.IsValid) return;
Item disable;
Ability ab = null;
Ability withOutTarget = null;
var enumerable = items as Item[] ?? items.ToArray();
if (stage)
{
disable =
enumerable.FirstOrDefault( // wo puck_waning_rift
x =>
(x.Name == "item_sheepstick" || x.Name == "item_orchid" || x.Name == "item_bloodthorn" ||
x.Name == "item_abyssal_blade" ||
x.Name == "item_ethereal_blade" ||
x.Name == "item_rod_of_atos" || x.Name == "item_heavens_halberd" ||
x.Name == "item_medallion_of_courage" ||
x.Name == "item_cyclone" || x.Name == "item_solar_crest") &&
ExtraSubMenu[i, 0].Item("SelectedItems" + me.Name + target.Name)
.GetValue<AbilityToggler>()
.IsEnabled(x.Name));
var enumerable1 = abilities as Ability[] ?? abilities.ToArray();
ab =
enumerable1.FirstOrDefault(
x =>
(x.Name == "lion_voodoo" || x.Name == "shadow_shaman_voodoo" ||
x.Name == "obsidian_destroyer_astral_imprisonment" || x.Name == "shadow_demon_disruption" ||
x.Name == "rubick_telekinesis" ||
x.Name == "dragon_knight_dragon_tail" ||
x.Name == "batrider_flaming_lasso" ||
x.Name == "legion_commander_duel" || x.Name == "phantom_lancer_doppelwalk" ||
x.Name == "winter_wyvern_winters_curse" ||
x.Name == "skywrath_mage_ancient_seal" /*|| x.Name == "vengefulspirit_magic_missile"*/) &&
ExtraSubMenu[i, 1].Item("SelectedSpells" + me.Name + target.Name)
.GetValue<AbilityToggler>()
.IsEnabled(x.Name));
withOutTarget =
enumerable1.FirstOrDefault(
x =>
(x.Name == "silencer_global_silence" || x.Name == "puck_phase_shift" ||
x.Name == "puck_waning_rift" || x.Name == "axe_berserkers_call") &&
ExtraSubMenu[i, 1].Item("SelectedSpells" + me.Name + target.Name)
.GetValue<AbilityToggler>()
.IsEnabled(x.Name));
/*if (withOutTarget != null)
Game.PrintMessage("realCastRange: " + withOutTarget.Name + " " + GetRealCastRange(withOutTarget), MessageType.ChatMessage);*/
}
else
{
disable =
enumerable.FirstOrDefault(
x =>
(x.Name == "item_rod_of_atos" || x.Name == "item_medallion_of_courage" ||
x.Name == "item_solar_crest") && ExtraSubMenu[i, 0].Item("SelectedItems" + me.Name + target.Name).GetValue<AbilityToggler>().IsEnabled(x.Name));
}
if (Menu.Item("using").GetValue<StringList>().SelectedIndex == (int) Using.All ||
Menu.Item("using").GetValue<StringList>().SelectedIndex == (int) Using.OnlyItems)
{
if (disable != null && me.Distance2D(target) <= GetRealCastRange(disable) && Menu.Item("ActiveItem" + i).GetValue<bool>())
{
disable.UseAbility(target);
Utils.Sleep(250, target.GetHashCode().ToString());
if (Menu.Item("oneenemy").GetValue<bool>()) return;
}
}
if (Menu.Item("using").GetValue<StringList>().SelectedIndex == (int) Using.All ||
Menu.Item("using").GetValue<StringList>().SelectedIndex == (int) Using.OnlyAblities)
{
if (ab != null && me.Distance2D(target) <= GetRealCastRange(ab) && Menu.Item("ActiveSpell" + i).GetValue<bool>())
{
ab.UseAbility(target);
ab.UseAbility(me.Position);
Utils.Sleep(250, target.GetHashCode().ToString());
if (Menu.Item("oneenemy").GetValue<bool>()) return;
}
if (withOutTarget != null && Menu.Item("ActiveSpell" + i).GetValue<bool>())
{
var r = GetRealCastRange(withOutTarget);
if (r > 0 && r >= me.Distance2D(target) || r == 0)
{
withOutTarget.UseAbility();
Utils.Sleep(250, target.GetHashCode().ToString());
if (Menu.Item("oneenemy").GetValue<bool>()) return;
}
}
}
if (Menu.Item("using").GetValue<StringList>().SelectedIndex != (int) Using.All &&
Menu.Item("using").GetValue<StringList>().SelectedIndex != (int) Using.OnlyItems) return;
if (!itsRealConterSpell) return;
var
safeItemPoint =
enumerable.FirstOrDefault(
x =>
x.Name == "item_blink");
var v =
ObjectManager.GetEntities<Unit>()
.FirstOrDefault(x => x.Team == me.Team && x.ClassID == ClassID.CDOTA_Unit_Fountain);
//Game.PrintMessage(String.Format("1: {0} 2: {1} 3: {2}", safeItemPoint == null, !Menu.Item("usedagger").GetValue<bool>(), (me.Distance2D(target) >= 1000)), MessageType.ChatMessage);
if (safeItemPoint == null || !Menu.Item("usedagger").GetValue<bool>() ||
(me.Distance2D(target) >= 1000))
return;
if (v != null)
{
safeItemPoint.UseAbility(v.Position);
}
Utils.Sleep(250, target.GetHashCode().ToString());
}