ArcAnnihilation.Core.TryToDispell C# (CSharp) Method

TryToDispell() private static method

private static TryToDispell ( Hero me, List toList, bool both, bool main, bool tempest ) : void
me Hero
toList List
both bool
main bool
tempest bool
return void
        private static void TryToDispell(Hero me, List<Item> toList, bool both, bool main, bool tempest)
        {
            var target = main ? _mainHero : tempest ? me : null;
            if (both)
            {
                var underShit = me.IsSilenced() || me.IsHexed() /*|| me.DebuffState*/;
                var isSilenced2 = _mainHero.IsSilenced();
                if (isSilenced2 && me.Distance2D(_mainHero) <= 600)
                {
                    foreach (var item in toList.Where(x => Utils.SleepCheck(x.Name + me.Handle)))
                    {
                        item.UseAbility(_mainHero);
                        Utils.Sleep(500, item.Name + me.Handle);
                    }
                }
                if (underShit)
                {
                    foreach (var item in toList)
                    {
                        item.UseAbility(me);
                        Utils.Sleep(500, item.Name + me.Handle);
                    }
                }
                foreach (var hero in Heroes.GetByTeam(me.Team).Where(x=>x!=null && x.IsValid && x.IsAlive && x.Distance2D(me)<=600 && (x.IsHexed() || x.IsSilenced())))
                {
                    foreach (var item in toList)
                    {
                        item.UseAbility(hero);
                        Utils.Sleep(500, item.Name + me.Handle);
                    }
                }
            }
            else
            {
                var isSilenced = target.IsSilenced();
                if (!isSilenced) return;
                foreach (var item in toList.Where(x => me.Distance2D(target) <= 600))
                {
                    item.UseAbility(target);
                    Utils.Sleep(500, item.Name + me.Handle);
                }
            }
        }