namespace Turbo.Plugins.LightningMod { using System; using System.Linq; public class EnoughMonstersNearbyCursorTest : AbstractSkillTest { public Func RangeFunc { get; set; } public Func MonsterCountFunc { get; set; } internal override SkillTestResult Test(TestContext context) { if (RangeFunc == null || MonsterCountFunc == null) return SkillTestResult.Continue; var range = RangeFunc(context); var limit = MonsterCountFunc(context); var density = context.Hud.Game.Monsters.Count(m => m.ScreenCoordinate.DistanceToCursor() / 10 <= range && m.IsAlive); return density >= limit ? ResultOnSuccess : ResultOnFail; } } public static class IsEnoughMonstersNearbyCursorTestFluent { public static EnoughMonstersNearbyCursorTest IfEnoughMonstersNearbyCursor(this AbstractSkillTest parent, Func rangeFunc, Func monsterCountFunc) { var test = new EnoughMonstersNearbyCursorTest() { RangeFunc = rangeFunc, MonsterCountFunc = monsterCountFunc, }; parent.NextTest = test; return test; } } }