public void PaintWorld(WorldLayer layer) { if ((Hud.Game.SpecialArea != SpecialArea.Rift) && (Hud.Game.SpecialArea != SpecialArea.GreaterRift) && (Hud.Game.SpecialArea != SpecialArea.ChallengeRift)) { return; } var monsters = Hud.Game.AliveMonsters.Where(x => (x.SnoMonster != null) && (IncludeOffScreen || x.IsOnScreen) && !((x.SummonerAcdDynamicId != 0) && (x.Rarity == ActorRarity.RareMinion))); foreach (var monster in monsters) { var nearMe = monsters.Where(x => x != monster && x.FloorCoordinate.XYDistanceTo(monster.FloorCoordinate) <= Range); Clusters.Add(monster, nearMe.Sum(x => x.SnoMonster.RiftProgression) + monster.SnoMonster.RiftProgression); } var clusters = 0; while (Clusters.Count > 0 && clusters < ClustersMax) { var cluster = Clusters.Aggregate((l, r) => l.Value > r.Value ? l : r); if ((cluster.Value / Hud.Game.MaxQuestProgress * 100d) >= ProgressMin) { Decorator.Paint(layer, cluster.Key, cluster.Key.FloorCoordinate, (cluster.Value / Hud.Game.MaxQuestProgress * 100d).ToString("F2", CultureInfo.InvariantCulture) + "%"); var nearMeAgain = monsters.Where(x => x.FloorCoordinate.XYDistanceTo(cluster.Key.FloorCoordinate) <= Range * 2f); foreach (var monster in nearMeAgain) { Clusters.Remove(monster); } clusters++; } else { clusters = ClustersMax; } } Clusters.Clear(); }