Пример #1
0
        /// <summary>
        ///     Initializes the drawings.
        /// </summary>
        public void Drawings()
        {
            /// <summary>
            ///     Loads the Q range drawing.
            /// </summary>
            if (SpellClass.Q.Ready &&
                MenuClass.Drawings["q"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.LightGreen, SpellClass.Q.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the Q path drawing.
            /// </summary>
            if (MenuClass.Drawings["qpath"].As <MenuBool>().Enabled)
            {
                foreach (var axe in Axes)
                {
                    var drawAxePos   = axe.Value.FixHeight();
                    var axeRectangle = new Vector3Geometry.Rectangle(UtilityClass.Player.Position, drawAxePos, UtilityClass.Player.BoundingRadius);

                    axeRectangle.Draw(Color.Yellow);
                    Render.Circle(drawAxePos, UtilityClass.Player.BoundingRadius, 5, Color.OrangeRed);
                }
            }
        }
Пример #2
0
        /// <summary>
        ///     Initializes the drawings.
        /// </summary>
        public void Drawings()
        {
            /// <summary>
            ///     Loads the Q drawing.
            /// </summary>
            if (SpellClass.Q.Ready &&
                MenuClass.Drawings["q"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.LightGreen, SpellClass.Q.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the W drawing.
            /// </summary>
            if (SpellClass.W.Ready &&
                MenuClass.Drawings["w"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Yellow, SpellClass.W.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the E drawing.
            /// </summary>
            if (SpellClass.E.Ready &&
                MenuClass.Drawings["e"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player);
            }
        }
        /// <summary>
        ///     Initializes the AttackRange Tracker.
        /// </summary>
        public static void Initialize()
        {
            foreach (var hero in ObjectCache.AllHeroes.Where(h =>
                                                             !h.IsMe() &&
                                                             !h.IsDead &&
                                                             h.IsVisible))
            {
                if (hero.IsEnemy() &&
                    !MenuClass.AttackRangeTracker["enemies"].Enabled)
                {
                    continue;
                }

                if (hero.IsAlly() &&
                    !MenuClass.AttackRangeTracker["allies"].Enabled)
                {
                    continue;
                }

                var attackRange = hero.GetAutoAttackRange() + hero.BoundingRadius;
                CircleRendering.Render(UtilityClass.Player.Distance(hero) < attackRange
                            ? Colors.GetRealColor(Color.Red)
                            : Colors.GetRealColor(Color.Yellow), attackRange, hero);
            }
        }
Пример #4
0
        protected override void OnRender(EntropyEventArgs args)
        {
            base.OnRender(args);
            if (Q.IsCharging && DrawingMenu.QTriangles.Enabled)
            {
                var target = TargetSelector.GetBestTarget(Q.ChargedMaxRange);
                if (target != null)
                {
                    if (Game.ClockTime > QDrawing.Create)
                    {
                        QDrawing.Create = Game.ClockTime + 0.07f;
                        var r1    = rnd.NextFloat(0, 1);
                        var r2    = rnd.NextFloat(0, 1);
                        var r3    = rnd.NextFloat(0, 1);
                        var speed = Math.Max(1500f, r1 * 5000f);
                        var angle = r2 * (Math.PI * 2);
                        var range = Math.Max(333f, r3 * 444f);

                        var missile = new QDrawing(target,
                                                   speed,
                                                   new Vector2((float)(target.Position.X + range * Math.Cos(angle)),
                                                               (float)(target.Position.Z + range * Math.Sin(angle))),
                                                   target.Position.Y + 122f,
                                                   Game.ClockTime + 1f,
                                                   Colors[rnd.Next(0, 2)]);

                        QDrawing.Missile.Add(missile);
                    }

                    var Timer = Game.ClockTime - QDrawing.LastDraw;
                    for (var i = 0; i < QDrawing.Missile.Count; i++)
                    {
                        var missile = QDrawing.Missile[i];
                        var p       = new Vector2(missile.Object.Position.X, missile.Object.Position.Z);

                        if (p.Distance(missile.Position) < 50 || Game.ClockTime > missile.Time)
                        {
                            QDrawing.Missile.Remove(missile);
                        }

                        missile.Y        = Math.Max(missile.Object.Position.Y, missile.Y - Timer * 777f);
                        missile.Position =
                            missile.Position.Extend(p, Timer * 100f * missile.Speed / missile.Position.Distance(p));
                        new Triangle(new Vector3(missile.Position.X + 25,
                                                 missile.Y,
                                                 missile.Position.Y),
                                     new Vector3(missile.Position.X, missile.Y - 15, missile.Position.Y),
                                     new Vector3(missile.Position.X, missile.Y, missile.Position.Y + 25)).
                        Render(missile.Color, 2);
                    }

                    QDrawing.LastDraw = Game.ClockTime;
                }
            }

            if (Definitions.IsChannellingR && RSettings.FocusMouse.Enabled)
            {
                CircleRendering.Render(Color.White, RSettings.MouseRange.Value, Hud.CursorPositionUnclipped, 2);
            }
        }
Пример #5
0
        /// <summary>
        ///     Initializes the drawings.
        /// </summary>
        public void OnRender(EntropyEventArgs args)
        {
            /// <summary>
            ///     Loads the Q drawing.
            /// </summary>
            if (SpellClass.Q.Ready &&
                MenuClass.Drawings["q"].Enabled)
            {
                Renderer.DrawCircularRangeIndicator(UtilityClass.Player.Position, SpellClass.Q.Range, Color.LightGreen);
            }

            /// <summary>
            ///     Loads the W drawing.
            /// </summary>
            if (SpellClass.W.Ready &&
                MenuClass.Drawings["w"].Enabled)
            {
                Renderer.DrawCircularRangeIndicator(UtilityClass.Player.Position, SpellClass.W.Range, Color.Yellow);
            }

            /// <summary>
            ///     Loads the E drawing.
            /// </summary>
            if (SpellClass.E.Ready &&
                MenuClass.Drawings["e"].Enabled)
            {
                Renderer.DrawCircularRangeIndicator(UtilityClass.Player.Position, SpellClass.E.Range, Color.Cyan);
            }

            /// <summary>
            ///     Loads the R drawing.
            /// </summary>
            if (SpellClass.R.Ready &&
                MenuClass.Drawings["r"].Enabled)
            {
                Renderer.DrawCircularRangeIndicator(UtilityClass.Player.Position, SpellClass.R.Range, Color.Red);
            }

            /// <summary>
            ///     Loads the WorkedGrounds drawing.
            /// </summary>
            if (MenuClass.Drawings["grounds"].Enabled)
            {
                foreach (var ground in WorkedGrounds)
                {
                    CircleRendering.Render(Color.Brown, WorkedGroundWidth, ground.Key);
                }
            }

            /// <summary>
            ///     Loads the MineFields drawing.
            /// </summary>
            if (MenuClass.Drawings["boulders"].Enabled)
            {
                foreach (var boulder in MineField)
                {
                    CircleRendering.Render(Color.Brown, BouldersWidth, boulder.Key);
                }
            }
        }
Пример #6
0
        /// <summary>
        ///     Initializes the drawings.
        /// </summary>
        public void Drawings()
        {
            /// <summary>
            ///     Loads the Q drawing.
            /// </summary>
            if (SpellClass.Q.Ready &&
                MenuClass.Drawings["q"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.LightGreen, SpellClass.Q.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the W drawing.
            /// </summary>
            if (SpellClass.W.Ready &&
                MenuClass.Drawings["w"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Yellow, SpellClass.W.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the E drawing.
            /// </summary>
            if (SpellClass.E.Ready &&
                MenuClass.Drawings["e"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the R drawing.
            /// </summary>
            if (SpellClass.R.Ready &&
                MenuClass.Drawings["r"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Red, SpellClass.R.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the Q width drawing.
            /// </summary>
            if (FlashFrost != null &&
                MenuClass.Drawings["flashfrost"].As <MenuBool>().Enabled)
            {
                Render.Circle(FlashFrost.Position, SpellClass.Q.Width, 30, Color.Blue);
            }

            /// <summary>
            ///     Loads the R width drawing.
            /// </summary>
            if (GlacialStorm != null &&
                MenuClass.Drawings["glacialstorm"].As <MenuBool>().Enabled)
            {
                Render.Circle(GlacialStorm.Position, SpellClass.R.Width, 30, Color.Blue);
            }
        }
Пример #7
0
 protected static void DrawCircle(Vector3 worldPosition, float radius, Color color)
 {
     if (Components.DrawingMenu.SharpDXMode.Enabled)
     {
         CircleRendering.Render(color, radius, 1f, false, worldPosition);
     }
     else
     {
         Renderer.DrawCircularRangeIndicator(worldPosition, radius, color);
     }
 }
Пример #8
0
 protected static void DrawCircle(AIBaseClient obj, float radius, Color color)
 {
     if (Components.DrawingMenu.SharpDXMode.Enabled)
     {
         CircleRendering.Render(color, radius, obj, Components.DrawingMenu.CircleThickness.Value);
     }
     else
     {
         Renderer.DrawCircularRangeIndicator(LocalPlayer.Instance.Position, radius, color);
     }
 }
Пример #9
0
 internal static void DrawCircle(Vector3 worldPosition, float radius, Color color)
 {
     if (BaseMenu.Root["drawing"]["mode"].Value == 0)
     {
         Renderer.DrawCircularRangeIndicator(worldPosition, radius, color);
     }
     else
     {
         CircleRendering.Render(color, radius, 4f, false, worldPosition);
     }
 }
Пример #10
0
        /// <summary>
        ///     Initializes the drawings.
        /// </summary>
        public void OnRender(EntropyEventArgs args)
        {
            /// <summary>
            ///     Loads the Q drawing.
            /// </summary>
            if (SpellClass.Q.Ready &&
                MenuClass.Drawings["q"].As <MenuBool>().Enabled)
            {
                Renderer.DrawCircularRangeIndicator(UtilityClass.Player.Position, SpellClass.Q.Range, Color.LightGreen);
            }

            /// <summary>
            ///     Loads the Feather linking drawing.
            /// </summary>
            if (!UtilityClass.Player.Spellbook.GetSpellState(SpellSlot.E).HasFlag(SpellState.Cooldown) &&
                MenuClass.Drawings["feathers"].As <MenuBool>().Enabled)
            {
                foreach (var feather in Feathers)
                {
                    var drawFeatherPos    = feather.Value.FixHeight();
                    var realFeatherHitbox = new Entropy.SDK.Geometry.Rectangle(UtilityClass.Player.Position, drawFeatherPos, SpellClass.E.Width);

                    realFeatherHitbox.Render(
                        ObjectCache.EnemyHeroes.Any(h =>
                                                    h.IsValidTarget() &&
                                                    realFeatherHitbox.IsInsidePolygon((Vector2)h.Position))
                                                                ? Color.Blue
                                                                : Color.Yellow);
                    CircleRendering.Render(Color.OrangeRed, SpellClass.E.Width, 5, (Vector2)drawFeatherPos);
                }
            }

            /// <summary>
            ///     Loads the R drawing.
            /// </summary>
            if (SpellClass.R.Ready &&
                MenuClass.Drawings["r"].As <MenuBool>().Enabled)
            {
                Renderer.DrawCircularRangeIndicator(UtilityClass.Player.Position, SpellClass.R.Range, Color.Red);
            }
        }
Пример #11
0
        /// <summary>
        ///     Initializes the drawings.
        /// </summary>
        public void Drawings()
        {
            /// <summary>
            ///     Loads the Q drawing.
            /// </summary>
            if (SpellClass.Q.Ready &&
                MenuClass.Drawings["q"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.LightGreen, SpellClass.Q.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the W drawing.
            /// </summary>
            if (SpellClass.W.Ready &&
                MenuClass.Drawings["w"].As <MenuBool>().Enabled)
            {
                Render.Circle(UtilityClass.Player.Position, HasPackage() ? SpellClass.W2.Range : SpellClass.W.Range, 30, Color.Yellow);
            }

            /// <summary>
            ///     Loads the E drawing.
            /// </summary>
            if (SpellClass.E.Ready &&
                MenuClass.Drawings["e"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the R drawing.
            /// </summary>
            if (SpellClass.R.Ready &&
                MenuClass.Drawings["r"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Red, SpellClass.R.Range, UtilityClass.Player);
            }
        }
Пример #12
0
        /// <summary>
        ///     Initializes the TowerRange Tracker.
        /// </summary>
        public static void Initialize()
        {
            foreach (var tower in ObjectCache.AllTurrets.Where(t =>
                                                               !t.IsDead &&
                                                               t.IsVisible))
            {
                if (tower.IsEnemy() &&
                    !MenuClass.TowerRangeTracker["enemies"].Enabled)
                {
                    continue;
                }

                if (tower.IsAlly() &&
                    !MenuClass.TowerRangeTracker["allies"].Enabled)
                {
                    continue;
                }

                var towerAutoAttackRange = 775f + tower.BoundingRadius + UtilityClass.Player.BoundingRadius - 10f;
                CircleRendering.Render(tower.IsEnemy() && UtilityClass.Player.Distance(tower) <= towerAutoAttackRange
                            ? Colors.GetRealColor(Color.Red)
                            : Colors.GetRealColor(Color.LightGreen), towerAutoAttackRange, tower);
            }
        }
Пример #13
0
        /// <summary>
        ///     Initializes the drawings.
        /// </summary>
        public void Drawings()
        {
            /// <summary>
            ///     Loads the Q drawing.
            /// </summary>
            if (SpellClass.Q.Ready)
            {
                if (MenuClass.Drawings["qmin"].As <MenuBool>().Enabled)
                {
                    Render.Circle(UtilityClass.Player.Position, SpellClass.Q.ChargedMinRange, 30, Color.LightGreen);
                }

                if (MenuClass.Drawings["qmax"].As <MenuBool>().Enabled)
                {
                    Render.Circle(UtilityClass.Player.Position, SpellClass.Q.ChargedMaxRange, 30, Color.Yellow);
                }
            }

            /// <summary>
            ///     Loads the E drawing.
            /// </summary>
            if (SpellClass.E.Ready &&
                MenuClass.Drawings["e"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the R drawing.
            /// </summary>
            if (SpellClass.R.Ready &&
                MenuClass.Drawings["r"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Red, SpellClass.R.Range, UtilityClass.Player);
            }
        }
Пример #14
0
        /// <summary>
        ///     Initializes the drawings.
        /// </summary>
        public void Drawings()
        {
            /// <summary>
            ///     Loads the W drawing.
            /// </summary>
            if (SpellClass.W.Ready &&
                MenuClass.Drawings["w"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Yellow, SpellClass.W.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the E damage to healthbar.
            /// </summary>
            if (MenuClass.Drawings["edmg"].As <MenuBool>().Enabled)
            {
                foreach (var unit in ObjectManager.Get <AIBaseClient>().Where(h =>
                                                                              IsPerfectChargeTarget(h) &&
                                                                              (h is AIHeroClient || UtilityClass.JungleList.Contains(h.CharName)) &&
                                                                              h.InfoBarPosition.OnScreen()))
                {
                    var heroUnit   = unit as AIHeroClient;
                    var jungleList = UtilityClass.JungleList;
                    var mobOffset  = DrawingClass.JungleHpBarOffsetList.FirstOrDefault(x => x.CharName.Equals(unit.CharName));

                    int width;
                    if (jungleList.Contains(unit.CharName))
                    {
                        width = mobOffset?.Width ?? DrawingClass.SWidth;
                    }
                    else
                    {
                        width = DrawingClass.SWidth;
                    }

                    int height;
                    if (jungleList.Contains(unit.CharName))
                    {
                        height = mobOffset?.Height ?? DrawingClass.SHeight;
                    }
                    else
                    {
                        height = DrawingClass.SHeight;
                    }

                    int xOffset;
                    if (jungleList.Contains(unit.CharName))
                    {
                        xOffset = mobOffset?.XOffset ?? DrawingClass.SxOffset(heroUnit);
                    }
                    else
                    {
                        xOffset = DrawingClass.SxOffset(heroUnit);
                    }

                    int yOffset;
                    if (jungleList.Contains(unit.CharName))
                    {
                        yOffset = mobOffset?.YOffset ?? DrawingClass.SyOffset(heroUnit);
                    }
                    else
                    {
                        yOffset = DrawingClass.SyOffset(heroUnit);
                    }

                    var barPos = unit.InfoBarPosition;
                    barPos.X += xOffset;
                    barPos.Y += yOffset;

                    var unitHealth  = unit.GetRealHealth();
                    var totalDamage = GetTotalExplosionDamage(unit);

                    var barLength = 0;
                    if (unitHealth > totalDamage)
                    {
                        barLength = (int)(width * ((unitHealth - totalDamage) / unit.MaxHP * 100 / 100));
                    }

                    var drawEndXPos   = barPos.X + width * (unit.HPPercent() / 100);
                    var drawStartXPos = barPos.X + barLength;

                    Render.Line(drawStartXPos, barPos.Y, drawEndXPos, barPos.Y, height, true, unitHealth < totalDamage ? Color.Blue : Color.Orange);
                    Render.Line(drawStartXPos, barPos.Y, drawStartXPos, barPos.Y + height + 1, 1, true, Color.Lime);
                }
            }

            /// <summary>
            ///     Loads the W drawing.
            /// </summary>
            if (SpellClass.W.Ready &&
                MenuClass.Drawings["w"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Yellow, SpellClass.W.Range, UtilityClass.Player);
            }
        }
Пример #15
0
        /// <summary>
        ///     Initializes the drawings.
        /// </summary>
        public void Drawings()
        {
            /// <summary>
            ///     Loads the Q drawing.
            /// </summary>
            if (SpellClass.Q.Ready)
            {
                /// <summary>
                ///     Loads the Q drawing.
                /// </summary>
                if (MenuClass.Drawings["q"].As <MenuBool>().Enabled)
                {
                    CircleRendering.Render(Color.LightGreen, SpellClass.Q.Range, UtilityClass.Player);
                }

                /// <summary>
                ///     Loads the Extended Q drawing.
                /// </summary>
                if (MenuClass.Drawings["qcone"].As <MenuBool>().Enabled)
                {
                    foreach (var target in Extensions.GetBestSortedTargetsInRange(SpellClass.Q2.Range))
                    {
                        var unitsToIterate = Extensions.GetAllGenericUnitTargetsInRange(SpellClass.Q.Range)
                                             .Where(m => !m.IsMoving && QCone(m).IsInside((Vector2)target.Position))
                                             .OrderBy(m => m.HP)
                                             .ToList();
                        foreach (var minion in unitsToIterate)
                        {
                            DrawQCone(minion).Draw(QCone(minion).IsInside((Vector2)target.Position) && MenuClass.Spells["q2"]["whitelist"][target.CharName.ToLower()].Enabled
                                ? Color.Green
                                : Color.Red);
                        }
                    }
                }
            }

            /// <summary>
            ///     Loads the E drawing.
            /// </summary>
            if (SpellClass.E.Ready &&
                MenuClass.Drawings["e"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the R drawing.
            /// </summary>
            if (SpellClass.R.Ready &&
                MenuClass.Drawings["r"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Red, SpellClass.R.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the Passive drawing.
            /// </summary>
            if (MenuClass.Drawings["passivetarget"].As <MenuBool>().Enabled)
            {
                var target = ObjectManager.Get <AIBaseClient>().FirstOrDefault(u => u.NetworkID == LoveTapTargetNetworkId);
                if (target != null)
                {
                    Render.Circle(target.Position, target.BoundingRadius, 30, Color.Black);
                }
            }
        }
Пример #16
0
        /// <summary>
        ///     Initializes the drawings.
        /// </summary>
        public void Drawings()
        {
            /// <summary>
            ///     Loads the Q duration drawing.
            /// </summary>
            if (!UtilityClass.Player.Spellbook.GetSpell(SpellSlot.Q).State.HasFlag(SpellState.NotLearned) &&
                MenuClass.Drawings["qduration"].As <MenuBool>().Enabled)
            {
                var buff = UtilityClass.Player.GetBuff("TwitchHideInShadows");
                if (buff != null)
                {
                    Render.Circle(UtilityClass.Player.Position, (buff.EndTime - Game.ClockTime) * UtilityClass.Player.MoveSpeed, 30, Color.Green);
                }
                else
                {
                    var qDuration = new[] { 10, 11, 12, 13, 14 }[UtilityClass.Player.Spellbook.GetSpell(SpellSlot.Q).Level - 1];
                    Render.Circle(UtilityClass.Player.Position, qDuration * UtilityClass.Player.MoveSpeed, 30, Color.Green);
                    Vector2Geometry.DrawCircleOnMinimap(UtilityClass.Player.Position, qDuration * UtilityClass.Player.MoveSpeed, Color.White);
                }
            }

            /// <summary>
            ///     Loads the W drawing.
            /// </summary>
            if (SpellClass.W.Ready &&
                MenuClass.Drawings["w"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Yellow, SpellClass.W.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the E drawing.
            /// </summary>
            if (SpellClass.E.Ready)
            {
                if (MenuClass.Drawings["e"].As <MenuBool>().Enabled)
                {
                    CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player);
                }

                /// <summary>
                ///     Loads the E damage to healthbar.
                /// </summary>
                if (MenuClass.Drawings["edmg"].As <MenuBool>().Enabled)
                {
                    foreach (var unit in ObjectManager.Get <AIBaseClient>().Where(h =>
                                                                                  IsPerfectExpungeTarget(h) &&
                                                                                  (h is AIHeroClient || UtilityClass.JungleList.Contains(h.CharName)) &&
                                                                                  h.InfoBarPosition.OnScreen()))
                    {
                        var heroUnit   = unit as AIHeroClient;
                        var jungleList = UtilityClass.JungleList;
                        var mobOffset  = DrawingClass.JungleHpBarOffsetList.FirstOrDefault(x => x.CharName.Equals(unit.CharName));

                        int width;
                        if (jungleList.Contains(unit.CharName))
                        {
                            width = mobOffset?.Width ?? DrawingClass.SWidth;
                        }
                        else
                        {
                            width = DrawingClass.SWidth;
                        }

                        int height;
                        if (jungleList.Contains(unit.CharName))
                        {
                            height = mobOffset?.Height ?? DrawingClass.SHeight;
                        }
                        else
                        {
                            height = DrawingClass.SHeight;
                        }

                        int xOffset;
                        if (jungleList.Contains(unit.CharName))
                        {
                            xOffset = mobOffset?.XOffset ?? DrawingClass.SxOffset(heroUnit);
                        }
                        else
                        {
                            xOffset = DrawingClass.SxOffset(heroUnit);
                        }

                        int yOffset;
                        if (jungleList.Contains(unit.CharName))
                        {
                            yOffset = mobOffset?.YOffset ?? DrawingClass.SyOffset(heroUnit);
                        }
                        else
                        {
                            yOffset = DrawingClass.SyOffset(heroUnit);
                        }

                        var barPos = unit.InfoBarPosition;
                        barPos.X += xOffset;
                        barPos.Y += yOffset;

                        var unitHealth  = unit.GetRealHealth();
                        var totalDamage = GetTotalExpungeDamage(unit);

                        var barLength = 0;
                        if (unitHealth > totalDamage)
                        {
                            barLength = (int)(width * ((unitHealth - totalDamage) / unit.MaxHP * 100 / 100));
                        }

                        var drawEndXPos   = barPos.X + width * (unit.HPPercent() / 100);
                        var drawStartXPos = barPos.X + barLength;

                        Render.Line(drawStartXPos, barPos.Y, drawEndXPos, barPos.Y, height, true, unitHealth < totalDamage ? Color.Blue : Color.Orange);
                        Render.Line(drawStartXPos, barPos.Y, drawStartXPos, barPos.Y + height + 1, 1, true, Color.Lime);
                    }
                }
            }

            /// <summary>
            ///     Loads the R drawing.
            /// </summary>
            if (SpellClass.R.Ready &&
                MenuClass.Drawings["r"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Red, SpellClass.R.Range, UtilityClass.Player);
            }
        }
Пример #17
0
        /// <summary>
        ///     Initializes the drawings.
        /// </summary>
        public void Drawings()
        {
            /// <summary>
            ///     Loads the Q drawing.
            /// </summary>
            if (SpellClass.Q.Ready &&
                MenuClass.Drawings["q"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.LightGreen, SpellClass.Q.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the W drawing.
            /// </summary>
            if (SpellClass.W.Ready &&
                MenuClass.Drawings["w"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Yellow, SpellClass.W.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the E drawing.
            /// </summary>
            if (SpellClass.E.Ready &&
                MenuClass.Drawings["e"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the R drawing.
            /// </summary>
            if (SpellClass.R.Ready)
            {
                if (MenuClass.Drawings["r"].As <MenuBool>().Enabled)
                {
                    CircleRendering.Render(Color.Red, SpellClass.R.Range, UtilityClass.Player);
                }

                /// <summary>
                ///     Loads the R damage to healthbar.
                /// </summary>
                if (MenuClass.Drawings["rdmg"].As <MenuBool>().Enabled)
                {
                    foreach (var hero in Extensions.GetEnemyHeroesTargetsInRange(SpellClass.R.Range).Where(h =>
                                                                                                           !Invulnerable.Check(h, DamageType.Magical, false) &&
                                                                                                           h.InfoBarPosition.OnScreen()))
                    {
                        var width   = DrawingClass.SWidth;
                        var height  = DrawingClass.SHeight;
                        var xOffset = DrawingClass.SxOffset(hero);
                        var yOffset = DrawingClass.SyOffset(hero);

                        var barPos = hero.InfoBarPosition;
                        barPos.X += xOffset;
                        barPos.Y += yOffset;

                        var unitHealth  = hero.GetRealHealth();
                        var totalDamage = GetTotalUnleashedPowerDamage(hero);

                        var barLength = 0;
                        if (unitHealth > totalDamage)
                        {
                            barLength = (int)(width * ((unitHealth - totalDamage) / hero.MaxHP * 100 / 100));
                        }

                        var drawEndXPos   = barPos.X + width * (hero.HPPercent() / 100);
                        var drawStartXPos = barPos.X + barLength;

                        Render.Line(drawStartXPos, barPos.Y, drawEndXPos, barPos.Y, height, true, unitHealth < totalDamage ? Color.Blue : Color.Orange);
                        Render.Line(drawStartXPos, barPos.Y, drawStartXPos, barPos.Y + height + 1, 1, true, Color.Lime);
                    }
                }
            }

            if (DarkSpheres.Any())
            {
                foreach (var sphere in DarkSpheres)
                {
                    /// <summary>
                    ///     Loads the DarkSpheres drawing.
                    /// </summary>
                    if (MenuClass.Drawings["spheres"].As <MenuBool>().Enabled)
                    {
                        Render.Circle(sphere.Value, SpellClass.Q.Width, 30, Color.Blue);
                    }

                    /// <summary>
                    ///     Loads the Sphere scatter drawing.
                    /// </summary>
                    if (UtilityClass.Player.Distance(sphere.Value) < SpellClass.E.Range &&
                        MenuClass.Drawings["scatter"].As <MenuBool>().Enabled&&
                        !UtilityClass.Player.Spellbook.GetSpell(SpellSlot.E).State.HasFlag(SpellState.Cooldown))
                    {
                        var hitbox = DarkSphereScatterRectangle(sphere);
                        hitbox.Draw(
                            GameObjects.EnemyHeroes.Any(h => h.IsValidTarget() && hitbox.IsInside((Vector2)h.Position))
                                ? Color.Blue
                                : Color.OrangeRed);
                    }
                }
            }
        }
Пример #18
0
        /// <summary>
        ///     Initializes the drawings.
        /// </summary>
        public void Drawings()
        {
            /// <summary>
            ///     Loads the Q drawing.
            /// </summary>
            if (SpellClass.Q.Ready &&
                MenuClass.Drawings["q"].As <MenuBool>().Enabled)
            {
                // ReSharper disable once ConvertIfStatementToConditionalTernaryExpression
                if (IsHateSpikeSkillshot())
                {
                    CircleRendering.Render(Color.LightGreen, SpellClass.Q.Range, UtilityClass.Player);
                }
                else
                {
                    Render.Circle(UtilityClass.Player.Position, SpellClass.Q2.Range, 30, Color.LightGreen);
                }
            }

            /// <summary>
            ///     Loads the W drawing.
            /// </summary>
            if (SpellClass.W.Ready &&
                MenuClass.Drawings["w"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Yellow, SpellClass.W.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the E drawing.
            /// </summary>
            if (SpellClass.E.Ready &&
                MenuClass.Drawings["e"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the R drawings.
            /// </summary>
            if (SpellClass.R.Ready)
            {
                /// <summary>
                ///     Loads the R range.
                /// </summary>
                if (MenuClass.Drawings["r"].As <MenuBool>().Enabled)
                {
                    CircleRendering.Render(Color.Red, SpellClass.R.Range, UtilityClass.Player);
                }

                /// <summary>
                ///     Loads the R safe position check drawing.
                /// </summary>
                if (UtilityClass.Player.Path.Length > 1 &&
                    MenuClass.Drawings["rsafepos"].As <MenuBool>().Enabled)
                {
                    Render.Circle(UtilityClass.Player.Position.Extend(UtilityClass.Player.Path[1], -LastCaressPushBackDistance()), UtilityClass.Player.BoundingRadius, 30, Color.Red);
                    Render.Circle(UtilityClass.Player.Position.Extend(UtilityClass.Player.Path[1], -LastCaressPushBackDistance()), MenuClass.Spells["r"]["customization"]["safetyrange"].As <MenuSlider>().Value, 30, Color.Red);
                }
            }
        }
Пример #19
0
        private static void OnRenderer(int fps, EventArgs args)
        {
            if (!gameProcessExists)
            {
                return;                     //process is dead, don't bother drawing
            }
            if ((!isGameOnTop) && (!isOverlayOnTop))
            {
                return;                                      //if game and overlay are not on top, don't draw
            }
            if (!Components.MainAssemblyToggle.Enabled)
            {
                return;                                         //main menu boolean to toggle the cheat on or off
            }
            if (oRenderer != IntPtr.Zero)
            {
                var rendBase = Memory.ReadPointer(processHandle, oRenderer, isWow64Process);
                if (rendBase != IntPtr.Zero)
                {
                    var matStruct   = SDKUtil.ReadStructure <RendererStruct>(processHandle, rendBase);
                    var finalMatrix = matStruct.oView * matStruct.oProjection;
                    var localPlayer = Memory.ReadPointer(processHandle, oLocalPlayer, isWow64Process);
                    if (localPlayer != IntPtr.Zero)
                    {
                        gameTime = Memory.ReadFloat(processHandle, oGameTime);
                        var lPdata      = SDKUtil.ReadStructureEx <GameObjectStruct>(processHandle, localPlayer, isWow64Process);
                        var heroManager = Memory.ReadPointer(processHandle, oHeroManager, isWow64Process);
                        if (heroManager != IntPtr.Zero)
                        {
                            for (uint i = 0; i <= 12; i++)
                            {
                                var heroPtr = Memory.ReadPointer(processHandle, (IntPtr)(heroManager.ToInt64() + i * 4), isWow64Process);
                                if (heroPtr != IntPtr.Zero)
                                {
                                    var heroData = SDKUtil.ReadStructureEx <GameObjectStruct>(processHandle, heroPtr, isWow64Process);

                                    if ((heroData.oObjVisibility == 1) /* && (heroData.oObjTeam == 100 || heroData.oObjTeam == 200)*/ && (heroData.oObjHealth > 0.1) && (heroData.oObjHealth < 10000) && (heroData.oObjMaxHealth > 99) && (heroData.oObjArmor > 0) && (heroData.oObjArmor < 1000) && (heroData.oObjPos.Y != 0.0f) && (heroData.oObjPos.X != 0.0f) && (heroData.oObjPos.Z != 0.0f)) //ghetto validity check
                                    {
                                        var QData = heroData.GetSpellData(spellSlot._Q);
                                        var WData = heroData.GetSpellData(spellSlot._W);
                                        var EData = heroData.GetSpellData(spellSlot._E);
                                        var RData = heroData.GetSpellData(spellSlot._R);
                                        var DData = heroData.GetSpellData(spellSlot.SUMMONER_1);
                                        var FData = heroData.GetSpellData(spellSlot.SUMMONER_2);

                                        Console.WriteLine("Check #1");

                                        Vector2 pos2D;
                                        if (Renderer.WorldToScreen(heroData.oObjPos, out pos2D, finalMatrix, wndMargins, wndSize, W2SType.TypeOGL))
                                        {
                                            Console.WriteLine("Check #2");
                                            if (Components.VisualsComponent.DrawSpellTracker.Enabled)
                                            {
                                                Console.WriteLine("Check #3");
                                                Renderer.DrawFilledRect(pos2D.X - XposX - 5 - 1, pos2D.Y + YposY + 3 + 12 - 1, 118 + 2, 12 + 2, new Color(00, 00, 00, 0x7A)); //whole bar
                                                Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * 0, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 00, 00, 0xAA));          //spell bars

                                                Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * 1, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 00, 00, 0xAA));
                                                Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * 2, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 00, 00, 0xAA));
                                                Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * 3, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 00, 00, 0xAA));

                                                Renderer.DrawFilledRect(pos2D.X - XposX - 5 + 121 - 1, pos2D.Y + YposY + 3 + 12 - 1, 60 + 2, 12 + 2, new Color(00, 00, 0x5A, 0x7A)); //whole bar

                                                Renderer.DrawFilledRect(pos2D.X - XposX + 121, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 00, 00, 0xAA));                        //spell bars D
                                                Renderer.DrawFilledRect(pos2D.X - XposX + 121 + 4 + 23, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 00, 00, 0xAA));               //spell bars F

                                                if (QData.level > 0)
                                                {
                                                    for (uint j = 1; j <= QData.level; j++)
                                                    {
                                                        Renderer.DrawRect(pos2D.X - XposX + 27 * (uint)spellSlot._Q + j * 5 - 1, pos2D.Y + YposY + 3 + 21, 1, 2, new Color(0xFF, 0xFF, 00, 0xFF));
                                                    }
                                                    if (QData.ammoCurrentCd > 0)
                                                    {
                                                        if (QData.ammo > 0)
                                                        {
                                                            Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._Q, pos2D.Y + YposY + 3 + 16, 23 - ((QData.ammoCurrentCd / QData.ammoCd) * 23), 4, new Color(0xFF, 0x7F, 00, 0xFF));
                                                        }
                                                        else
                                                        {
                                                            Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._Q, pos2D.Y + YposY + 3 + 16, 23 - ((QData.ammoCurrentCd / QData.ammoCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF));
                                                        }
                                                    }
                                                    else
                                                    {
                                                        if (QData.currentCd > 0)
                                                        {
                                                            Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._Q, pos2D.Y + YposY + 3 + 16, 23 - ((QData.currentCd / QData.spellCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF));
                                                        }
                                                        else
                                                        {
                                                            Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._Q, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 0xFF, 00, 0xFF));
                                                        }
                                                    }
                                                }



                                                if (WData.level > 0)
                                                {
                                                    for (uint j = 1; j <= WData.level; j++)
                                                    {
                                                        Renderer.DrawRect(pos2D.X - XposX + 27 * (uint)spellSlot._W + j * 5 - 1, pos2D.Y + YposY + 3 + 21, 1, 2, new Color(0xFF, 0xFF, 00, 0xFF));
                                                    }
                                                    if (WData.ammoCurrentCd > 0)
                                                    {
                                                        if (WData.ammo > 0)
                                                        {
                                                            Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._W, pos2D.Y + YposY + 3 + 16, 23 - ((WData.ammoCurrentCd / WData.ammoCd) * 23), 4, new Color(0xFF, 0x7F, 00, 0xFF));
                                                        }
                                                        else
                                                        {
                                                            Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._W, pos2D.Y + YposY + 3 + 16, 23 - ((WData.ammoCurrentCd / WData.ammoCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF));
                                                        }
                                                    }
                                                    else
                                                    {
                                                        if (WData.currentCd > 0)
                                                        {
                                                            Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._W, pos2D.Y + YposY + 3 + 16, 23 - ((WData.currentCd / WData.spellCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF));
                                                        }
                                                        else
                                                        {
                                                            Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._W, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 0xFF, 00, 0xFF));
                                                        }
                                                    }
                                                }



                                                if (EData.level > 0)
                                                {
                                                    for (uint j = 1; j <= EData.level; j++)
                                                    {
                                                        Renderer.DrawRect(pos2D.X - XposX + 27 * (uint)spellSlot._E + j * 5 - 1, pos2D.Y + YposY + 3 + 21, 1, 2, new Color(0xFF, 0xFF, 00, 0xFF));
                                                    }
                                                    if (EData.ammoCurrentCd > 0)
                                                    {
                                                        if (EData.ammo > 0)
                                                        {
                                                            Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._E, pos2D.Y + YposY + 3 + 16, 23 - ((EData.ammoCurrentCd / EData.ammoCd) * 23), 4, new Color(0xFF, 0x7F, 00, 0xFF));
                                                        }
                                                        else
                                                        {
                                                            Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._E, pos2D.Y + YposY + 3 + 16, 23 - ((EData.ammoCurrentCd / EData.ammoCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF));
                                                        }
                                                    }
                                                    else
                                                    {
                                                        if (EData.currentCd > 0)
                                                        {
                                                            Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._E, pos2D.Y + YposY + 3 + 16, 23 - ((EData.currentCd / EData.spellCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF));
                                                        }
                                                        else
                                                        {
                                                            Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._E, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 0xFF, 00, 0xFF));
                                                        }
                                                    }
                                                }


                                                if (RData.level > 0)
                                                {
                                                    for (uint j = 1; j <= RData.level; j++)
                                                    {
                                                        Renderer.DrawRect(pos2D.X - XposX + 27 * (uint)spellSlot._R + j * 5 - 1, pos2D.Y + YposY + 3 + 21, 1, 2, new Color(0xFF, 0xFF, 00, 0xFF));
                                                    }
                                                    if (RData.ammoCurrentCd > 0)
                                                    {
                                                        if (RData.ammo > 0)
                                                        {
                                                            Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._R, pos2D.Y + YposY + 3 + 16, 23 - ((RData.ammoCurrentCd / RData.ammoCd) * 23), 4, new Color(0xFF, 0x7F, 00, 0xFF));
                                                        }
                                                        else
                                                        {
                                                            Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._R, pos2D.Y + YposY + 3 + 16, 23 - ((RData.ammoCurrentCd / RData.ammoCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF));
                                                        }
                                                    }
                                                    else
                                                    {
                                                        if (RData.currentCd > 0)
                                                        {
                                                            Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._R, pos2D.Y + YposY + 3 + 16, 23 - ((RData.currentCd / RData.spellCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF));
                                                        }
                                                        else
                                                        {
                                                            Renderer.DrawFilledRect(pos2D.X - XposX + 3 + 27 * (uint)spellSlot._R, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 0xFF, 00, 0xFF));
                                                        }
                                                    }
                                                }

                                                if (DData.currentCd > 0)
                                                {
                                                    Renderer.DrawFilledRect(pos2D.X - XposX + 121, pos2D.Y + YposY + 3 + 16, 23 - ((DData.currentCd / DData.spellCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF));
                                                }
                                                else
                                                {
                                                    Renderer.DrawFilledRect(pos2D.X - XposX + 121, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 0xFF, 00, 0xFF));
                                                }


                                                if (FData.currentCd > 0)
                                                {
                                                    Renderer.DrawFilledRect(pos2D.X - XposX + 121 + 4 + 23, pos2D.Y + YposY + 3 + 16, 23 - ((FData.currentCd / FData.spellCd) * 23), 4, new Color(0xFF, 00, 00, 0xFF));
                                                }
                                                else
                                                {
                                                    Renderer.DrawFilledRect(pos2D.X - XposX + 121 + 4 + 23, pos2D.Y + YposY + 3 + 16, 23, 4, new Color(00, 0xFF, 00, 0xFF));
                                                }
                                            }

                                            if (heroData.oObjTeam != lPdata.oObjTeam)
                                            {
                                                if (Components.VisualsComponent.DrawInformationAlly.Enabled)
                                                {
                                                    Renderer.DrawText("Vida: " + (int)heroData.oObjHealth + " / " + (int)heroData.oObjMaxHealth, pos2D.X, pos2D.Y - 40, new Color(0xFF, 00, 00, 0xff));
                                                    Renderer.DrawText("Mana: " + (int)heroData.oObjMana + " / " + (int)heroData.oObjMaxMana, pos2D.X, pos2D.Y - 20, new Color(0, 255, 255, 0xff));
                                                }
                                                if (Components.VisualsComponent.DrawRangeCircleEmy.Enabled)
                                                {
                                                    CircleRendering.Render(finalMatrix, Components.VisualsComponent.RangeCircleColorNmy.Color, heroData.oObjAtkRange + 55.0f, heroData.oObjPos);
                                                }
                                            }
                                            if (heroData.oObjTeam == lPdata.oObjTeam)
                                            {
                                                if (Components.VisualsComponent.DrawInformationAlly.Enabled)
                                                {
                                                    Renderer.DrawText("Vida: " + (int)heroData.oObjHealth + " / " + (int)heroData.oObjMaxHealth, pos2D.X, pos2D.Y - 40, new Color(0xFF, 00, 00, 0xff));
                                                    Renderer.DrawText("Mana: " + (int)heroData.oObjMana + " / " + (int)heroData.oObjMaxMana, pos2D.X, pos2D.Y - 20, new Color(0, 255, 255, 0xff));
                                                }
                                                if (Components.VisualsComponent.DrawRangeCircleAlly.Enabled)
                                                {
                                                    CircleRendering.Render(finalMatrix, Components.VisualsComponent.RangeCircleColorAlly.Color, heroData.oObjAtkRange + 55.0f, heroData.oObjPos);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Пример #20
0
        /// <summary>
        ///     Initializes the drawings.
        /// </summary>
        public void Drawings()
        {
            /// <summary>
            ///     Loads the Q drawing.
            /// </summary>
            if (SpellClass.Q.Ready &&
                MenuClass.Drawings["q"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.LightGreen, SpellClass.Q.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the E drawing.
            /// </summary>
            if (SpellClass.E.Ready &&
                MenuClass.Drawings["e"].As <MenuBool>().Enabled)
            {
                CircleRendering.Render(Color.Cyan, SpellClass.E.Range, UtilityClass.Player);
            }

            /// <summary>
            ///     Loads the R drawing.
            /// </summary>
            if (SpellClass.R.Ready)
            {
                if (MenuClass.Drawings["r"].As <MenuBool>().Enabled)
                {
                    CircleRendering.Render(Color.Red, SpellClass.R.Range, UtilityClass.Player);
                }

                /// <summary>
                ///     Loads the R damage to healthbar.
                /// </summary>
                if (MenuClass.Drawings["rdmg"].As <MenuBool>().Enabled)
                {
                    foreach (var hero in Extensions.GetEnemyHeroesTargetsInRange(SpellClass.R.Range).Where(h =>
                                                                                                           !Invulnerable.Check(h) &&
                                                                                                           h.InfoBarPosition.OnScreen()))
                    {
                        var width   = DrawingClass.SWidth;
                        var height  = DrawingClass.SHeight;
                        var xOffset = DrawingClass.SxOffset(hero);
                        var yOffset = DrawingClass.SyOffset(hero);

                        var barPos = hero.InfoBarPosition;
                        barPos.X += xOffset;
                        barPos.Y += yOffset;

                        var unitHealth  = hero.GetRealHealth();
                        var totalDamage = GetTotalNoxianGuillotineDamage(hero);

                        var barLength = 0;
                        if (unitHealth > totalDamage)
                        {
                            barLength = (int)(width * ((unitHealth - totalDamage) / hero.MaxHP * 100 / 100));
                        }

                        var drawEndXPos   = barPos.X + width * (hero.HPPercent() / 100);
                        var drawStartXPos = barPos.X + barLength;

                        Render.Line(drawStartXPos, barPos.Y, drawEndXPos, barPos.Y, height, true, unitHealth < totalDamage ? Color.Blue : Color.Orange);
                        Render.Line(drawStartXPos, barPos.Y, drawStartXPos, barPos.Y + height + 1, 1, true, Color.Lime);
                    }
                }
            }
        }