private static void Game_OnUpdate(EventArgs args)
{
if (Game.IsPaused) return;
if (!_mainHero.IsValid || _mainHero==null)
return;
foreach (var clone in from clone in Objects.Tempest.GetCloneList(_mainHero)
where Menu.Item("AutoHeal.Enable").GetValue<KeyBind>().Active
let enemy = ObjectManager.GetEntities<Unit>()
.Any(
x =>
x.Team == _mainHero.GetEnemyTeam() && x.IsAlive && x.IsVisible &&
x.Distance2D(_mainHero) < Menu.Item("AutoHeal.Range").GetValue<Slider>().Value)
where !enemy
select clone)
{
CloneUseHealItems(clone, _mainHero, clone.Distance2D(_mainHero));
}
foreach (var clone in Objects.Tempest.GetCloneList(_mainHero))
{
foreach (var item in clone.Inventory.Items.Where(x=>x.Cooldown>0))
{
var spell = SpellBaseList.Find(x => x.Name == item.StoredName());
if (spell==null)
{
SpellBaseList.Add(new Spell(item));
//Print("Init new item: "+item.StoredName());
}
else
{
//spell.SetCooldown(item.Cooldown);
spell.Update(item);
}
}
}
#region code for spark spam
if (Menu.Item("spamHotkey").GetValue<KeyBind>().Active)
{
SparkSpam(_mainHero);
return;
}
#endregion
#region Flusher
if (_globalTarget2 != null)
FlushEffectForDyingUnits();
#endregion
#region code for clone combo2 hotkey
if (Menu.Item("hotkeyClone").GetValue<KeyBind>().Active)
{
// if target is not valid, set target to the hero closest to the mouse
if (_globalTarget2 == null || !_globalTarget2.IsValid || !_globalTarget2.IsAlive)
{
_globalTarget2 = TargetSelection == TargetSelectedEnum.ClosestToMouse
? ClosestToMouse(_mainHero, 500)
: TargetSelection == TargetSelectedEnum.ClosestToHero
? ClosestToHero(_mainHero, 500)
: FastestKillable(_mainHero, 500);
}
if (_globalTarget2 != null && _globalTarget2.IsValid && _globalTarget2.IsAlive)
{
DoCombo2(_mainHero, _globalTarget2);
}
}
else
{
_globalTarget2 = null;
if (!Menu.Item("hotkey").GetValue<KeyBind>().Active) FlushEffect();
}
#endregion
#region code for auto midas
var midas = _mainHero.FindItem("item_hand_of_midas");
if (midas != null && Menu.Item("AutoMidas").GetValue<bool>())
{
//Print("Me: "+midas.Cooldown);
if (midas.CanBeCasted() && Utils.SleepCheck(_mainHero.Handle + "midas") && _mainHero.IsAlive && !_mainHero.IsInvisible())
{
var enemy = ObjectManager.GetEntities<Unit>()
.Where(
x =>
!x.IsMagicImmune() && x.Team != _mainHero.Team &&
(x.ClassID == ClassID.CDOTA_BaseNPC_Creep_Lane ||
x.ClassID == ClassID.CDOTA_BaseNPC_Creep_Siege ||
x.ClassID == ClassID.CDOTA_BaseNPC_Creep_Neutral ||
x.ClassID == ClassID.CDOTA_BaseNPC_Invoker_Forged_Spirit) && x.IsSpawned &&
!x.IsAncient && x.IsAlive &&
x.Distance2D(_mainHero) <= 600).OrderByDescending(x => x.Health)
.DefaultIfEmpty(null)
.FirstOrDefault();
if (enemy != null)
{
Utils.Sleep(500, _mainHero.Handle + "midas");
midas.UseAbility(enemy);
}
}
foreach (var clone in Objects.Tempest.GetCloneList(_mainHero).Where(x => Utils.SleepCheck(x.Handle + "midas")))
{
midas = clone.FindItem("item_hand_of_midas");
/*Print("----------- ");
foreach (var item in clone.Inventory.Items)
{
Print(item.Cost+"item: "+item.Name+": "+item.Cooldown+"/"+item.CooldownLength+". State: "+item.AbilityState);
}
foreach (var spell in clone.Spellbook.Spells.Where(x=>x.IsAbilityType(AbilityType.Basic)))
{
Print("item: "+spell.Name+": "+spell.Cooldown+"/"+spell.CooldownLength+". State: "+spell.AbilityState);
}*/
if (midas == null || !midas.CanBeCasted() || SpellBaseList.Find(x => x.Name == midas.StoredName())!=null) continue;
var enemy = ObjectManager.GetEntities<Unit>()
.Where(
x =>
!x.IsMagicImmune() && x.Team != _mainHero.Team &&
(x.ClassID == ClassID.CDOTA_BaseNPC_Creep_Lane ||
x.ClassID == ClassID.CDOTA_BaseNPC_Creep_Siege ||
x.ClassID == ClassID.CDOTA_BaseNPC_Creep_Neutral) && x.IsSpawned && !x.IsAncient && x.IsAlive &&
x.Distance2D(clone) <= 600).OrderByDescending(x => x.Health)
.DefaultIfEmpty(null)
.FirstOrDefault();
if (enemy == null) continue;
Utils.Sleep(500, clone.Handle + "midas");
midas.UseAbility(enemy);
}
}
#endregion
#region code for generic hotkey(?)
if (!Menu.Item("hotkey").GetValue<KeyBind>().Active)
{
_globalTarget = null;
if (Menu.Item("AutoPush.Enable").GetValue<KeyBind>().Active && _globalTarget2==null)
AutoPush(_mainHero);
return;
}
#endregion
// if globaltarget is not set and target is LockTarget is not set, set target to the unit closest to the mouse
if (_globalTarget == null || !_globalTarget.IsValid || !Menu.Item("LockTarget").GetValue<bool>())
{
_globalTarget = ClosestToMouse(_mainHero, 300);
}
if (_globalTarget == null || !_globalTarget.IsValid || !_globalTarget.IsAlive) return;
DoCombo(_mainHero, _globalTarget);
}