public void PaintWorld(WorldLayer layer) { if (!Hud.Game.IsInGame) { return; } if (layer != WorldLayer.Ground) { return; } var actors = Hud.Game.Actors.Where(a => a.SnoActor.Sno == ActorSnoEnum._wd_spiritbarragerune_aoe_ghostmodel); if (actors.Any()) { foreach (var a in actors) { if (!Phantasms.ContainsKey(a.AnnId)) { Phantasms[a.AnnId] = a.CreatedAtInGameTick; } } var total = 0; foreach (var player in Hud.Game.Players) { if (!ShowOthers && !player.IsMe) { continue; } var actorsPlayer = actors.Where(a => a.SummonerAcdDynamicId == player.SummonerId).OrderByDescending(a => Phantasms[a.AnnId]); var c = 0; foreach (var actor in actorsPlayer) { if (c++ == 3) { break; } total++; var duration = player.Powers.BuffIsActive(484270)? 10d : 5d; var elapsed = (Hud.Game.CurrentGameTick - Phantasms[actor.AnnId]) / 60d; if (elapsed < (duration + 0.1)) { BrushSolid.DrawWorldEllipse(10, -1, actor.FloorCoordinate); if (ShowExplosionCircle && (elapsed > CircleSeconds)) { BrushDash.DrawWorldEllipse(15, -1, actor.FloorCoordinate); } if (actor.IsOnScreen) { var timeleft = duration - elapsed; var x = actor.FloorCoordinate.ToScreenCoordinate().X; var y = actor.FloorCoordinate.ToScreenCoordinate().Y; var radiusc = radius_countdown / 1200.0f * Hud.Window.Size.Height; BrushCounter.DrawEllipse(x, y, radiusc, radiusc); DrawTimeLeftClock(new RectangleF(x - radiusc / 2, y - radiusc / 2, radiusc, radiusc), elapsed, timeleft); var layout = FontText.GetTextLayout((timeleft < 0)?"0.0":timeleft.ToString((timeleft > 1)?"F0":"F1")); FontText.DrawText(layout, x - layout.Metrics.Width / 2, y - layout.Metrics.Height / 2 - 1); } } } } if (ShowCounter) { var uiRect = Hud.Render.GetUiElement("Root.NormalLayer.game_dialog_backgroundScreenPC.game_progressBar_manaBall").Rectangle; PhantomCountDecorator.Paint(uiRect.Left + uiRect.Width * 0.20f, uiRect.Top - uiRect.Height * 0.20f, uiRect.Width * 0.60f, uiRect.Height * 0.15f, "Phantom:" + total); } } }