示例#1
0
        private static void Drawing_OnDraw(EventArgs args)
        {
            if (!Enabled || _damageToUnit == null)
            {
                return;
            }

            foreach (var unit in HeroManager.Enemies.Where(h => h.IsValid && h.IsHPBarRendered))
            {
                var barPos = unit.HPBarPosition;
                var damage = _damageToUnit(unit);
                var percentHealthAfterDamage = Math.Max(0, unit.Health - damage) / unit.MaxHealth;
                var yPos          = barPos.Y + YOffset;
                var xPosDamage    = barPos.X + XOffset + Width * percentHealthAfterDamage;
                var xPosCurrentHp = barPos.X + XOffset + Width * unit.Health / unit.MaxHealth;

                if (unit.Health > 0)
                {
                    Text.X    = (int)barPos.X + XOffset;
                    Text.Y    = (int)barPos.Y + YOffset - 13;
                    Text.text = ((int)(unit.Health - damage)).ToString(CultureInfo.InvariantCulture);
                    Text.OnEndScene();
                }

                Drawing.DrawLine(xPosDamage, yPos, xPosDamage, yPos + Height, 2, Color);

                if (Fill)
                {
                    var differenceInHp = xPosCurrentHp - xPosDamage;
                    var pos1           = barPos.X + 9 + 107 * percentHealthAfterDamage;

                    for (var i = 0; i < differenceInHp; i++)
                    {
                        Drawing.DrawLine(pos1 + i, yPos, pos1 + i, yPos + Height, 1, FillColor);
                    }
                }
            }
        }
示例#2
0
        private static void Drawing_OnDraw(EventArgs args)
        {
            if (!Enabled || _damageToUnit == null)
            {
                return;
            }

            foreach (var unit in HeroManager.Enemies.Where(h => h.IsValid && h.IsHPBarRendered))
            {
                var barPos = unit.HPBarPosition;
                var damage = _damageToUnit(unit);
                var percentHealthAfterDamage = Math.Max(0, unit.Health - damage) / unit.MaxHealth;
                var yPos          = barPos.Y + YOffset;
                var xPosDamage    = barPos.X + XOffset + Width * percentHealthAfterDamage;
                var xPosCurrentHp = barPos.X + XOffset + Width * unit.Health / unit.MaxHealth;

                if (damage > unit.Health)
                {
                    Text.X    = (int)barPos.X + XOffset;
                    Text.Y    = (int)barPos.Y + YOffset - 13;
                    Text.text = "Killable: " + (unit.Health - damage);
                    Text.OnEndScene();
                }

                EloBuddy.Drawing.DrawLine(xPosDamage, yPos, xPosDamage, yPos + Height, 1, Color);

                if (Fill)
                {
                    float differenceInHP = xPosCurrentHp - xPosDamage;
                    var   pos1           = barPos.X + 9 + (107 * percentHealthAfterDamage);

                    for (int i = 0; i < differenceInHP; i++)
                    {
                        EloBuddy.Drawing.DrawLine(pos1 + i, yPos, pos1 + i, yPos + Height, 1, FillColor);
                    }
                }
            }
        }
示例#3
0
        private static void getIncDmg()
        {
            var   color  = Color.Red;
            float result = CombatHelper.getIncDmg();
            var   barPos = player.HPBarPosition;
            var   damage = (float)result;

            if (damage == 0)
            {
                return;
            }
            var percentHealthAfterDamage = Math.Max(0, player.Health - damage) / player.MaxHealth;
            var xPos = barPos.X + XOffset + Width * percentHealthAfterDamage;

            if (damage > player.Health)
            {
                Text.X    = (int)barPos.X + XOffset;
                Text.Y    = (int)barPos.Y + YOffset - 13;
                Text.text = ((int)(player.Health - damage)).ToString();
                Text.OnEndScene();
            }

            Drawing.DrawLine(xPos, barPos.Y + YOffset, xPos, barPos.Y + YOffset + Height, 3, color);
        }
示例#4
0
        private static void Drawing_OnDraw(EventArgs args)
        {
            if (Enabled)
            {
                foreach (var unit in ObjectManager.Get <Obj_AI_Hero>().Where(h => h.IsValid && h.IsHPBarRendered && h.IsEnemy))
                {
                    var barPos = unit.HPBarPosition;
                    var damage = CalculateDamage(unit);
                    var percentHealthAfterDamage = Math.Max(0, unit.Health - damage) / unit.MaxHealth;
                    var yPos          = barPos.Y + YOffset;
                    var xPosDamage    = barPos.X + XOffset + Width * percentHealthAfterDamage;
                    var xPosCurrentHp = barPos.X + XOffset + Width * unit.Health / unit.MaxHealth;

                    if (damage > unit.Health)
                    {
                        Text.X    = (int)barPos.X + XOffset;
                        Text.Y    = (int)barPos.Y + YOffset - 13;
                        Text.text = ((int)(unit.Health - damage)).ToString(CultureInfo.InvariantCulture);
                        Text.OnEndScene();
                    }

                    Drawing.DrawLine(xPosDamage, yPos, xPosDamage, yPos + Height, 2, Color.Lime);

                    if (FillHPBar)
                    {
                        float differenceInHp = xPosCurrentHp - xPosDamage;
                        var   pos1           = barPos.X + 9 + (107 * percentHealthAfterDamage);

                        for (int i = 0; i < differenceInHp; i++)
                        {
                            Drawing.DrawLine(pos1 + i, yPos, pos1 + i, yPos + Height, 1, FillColor);
                        }
                    }
                }
            }
        }
示例#5
0
        static void Drawing_OnDraw(EventArgs args)
        {
            if (Menu.Item("drawQ").GetValue <bool>())
            {
                if (Q.IsReady())
                {
                    Drawing.DrawCircle(Player.Position, Q.Range, System.Drawing.Color.Green);
                }
                else
                {
                    Drawing.DrawCircle(Player.Position, Q.Range, System.Drawing.Color.Red);
                }
            }
            if (Menu.Item("drawE").GetValue <bool>())
            {
                if (E.IsReady())
                {
                    Drawing.DrawCircle(Player.Position, E.Range, System.Drawing.Color.Green);
                }
                else
                {
                    Drawing.DrawCircle(Player.Position, E.Range, System.Drawing.Color.Red);
                }
            }
            if (Menu.Item("drawR").GetValue <bool>())
            {
                if (R.IsReady())
                {
                    Drawing.DrawCircle(Player.Position, R.Range, System.Drawing.Color.Green);
                }
                else
                {
                    Drawing.DrawCircle(Player.Position, R.Range, System.Drawing.Color.Red);
                }
            }

            if (target != null)
            {
                var    barPos = target.HPBarPosition;
                double damage = Player.CalcDamage(target, Damage.DamageType.Physical, Player.TotalAttackDamage * 3);

                if (Q.IsReady())
                {
                    damage += Player.GetSpellDamage(target, SpellSlot.Q);
                }
                if (W.IsReady())
                {
                    damage += Player.GetSpellDamage(target, SpellSlot.W) * 3;
                }
                if (E.IsReady())
                {
                    damage += Player.GetSpellDamage(target, SpellSlot.E);
                }
                if (R.IsReady())
                {
                    damage += Player.GetSpellDamage(target, SpellSlot.R) * 3;
                }

                var percentHealthAfterDamage = (target.Health - damage) / target.MaxHealth;
                var xPos = (float)(barPos.X + XOffset + Width * percentHealthAfterDamage);

                if (damage > target.Health)
                {
                    Text.X    = (int)barPos.X + XOffset;
                    Text.Y    = (int)barPos.Y + YOffset - 13;
                    Text.text = ((int)(target.Health - damage)).ToString();
                    Text.OnEndScene();
                }

                Drawing.DrawLine(xPos, barPos.Y + YOffset, xPos, barPos.Y + YOffset + Height, 2,
                                 System.Drawing.Color.Yellow);
            }
        }
示例#6
0
        //public static void RecvPkt(GamePacketEventArgs args)
        //{
        //    try
        //    {
        //        var stream = new MemoryStream(args.PacketData);
        //        using (var b = new BinaryReader(stream))
        //        {
        //            int pos = 0;
        //            var length = (int)b.BaseStream.Length;
        //            while (pos < length)
        //            {
        //                int v = b.ReadInt32();
        //                if (v == 195) //OLD 194
        //                {
        //                    byte[] h = b.ReadBytes(1);

        //                }
        //                pos += sizeof(int);
        //            }
        //        }
        //    }
        //    catch (EndOfStreamException)
        //    {
        //    }
        //}



        public static void Game_OnGameUpdate(EventArgs args)
        {
            bool green   = false;
            bool orange  = false;
            bool red     = false;
            bool yellow  = false;
            bool tgreen  = false;
            bool tred    = false;
            bool tyellow = false;
            //double aadmg = 0;
            //double aaspeed = 0;
            //Game.PrintChat("in");
            var gthan    = menu.Item("gthan2").GetValue <Slider>().Value;
            var lthan    = menu.Item("lthan2").GetValue <Slider>().Value;
            var theircd  = menu.Item("theircd").GetValue <Slider>().Value;
            var theircd2 = menu.Item("theircd2").GetValue <Slider>().Value;
            var range    = menu.Item("range").GetValue <Slider>().Value;

            //aaspeed = ObjectManager.Player.AttackSpeedMod + (1 * ObjectManager.Player.PercentAttackSpeedMod);
            //ObjectManager.Player.
            //Game.PrintChat("ASMod: {0} + Percent Mod: {1} + mult Mod: {2}", ObjectManager.Player.AttackSpeedMod, ObjectManager.Player.PercentAttackSpeedMod, ObjectManager.Player.PercentMultiplicativeAttackSpeedMod);
            //ObjectManager.Player.PercentMultiplicativeAttackSpeedMod
            //Game.PrintChat(range.ToString());
            foreach (
                Obj_AI_Hero h in
                ObjectManager.Get <Obj_AI_Hero>()
                .Where(
                    h =>
                    h.IsEnemy && !h.IsDead && h.IsVisible &&
                    Vector3.Distance(ObjectManager.Player.Position, h.Position) <= range))
            {
                heroesinrange.Add(h);
                //Game.PrintChat("added {0}", h.ChampionName);
            }

            foreach (var k in heroesinrange)
            {
                //aadmg = DamageLib.CalcPhysicalDmg(
                //ObjectManager.Player.BaseAttackDamage + ObjectManager.Player.FlatPhysicalDamageMod, k);
                //aaspeed = ObjectManager.Player.AttackSpeedMod + (1*ObjectManager.Player.PercentAttackSpeedMod);
                if (heroesinrange.Count() <= 2)
                {
                    foreach (var h in k.GetWaypoints())
                    {
                        if (Vector3.Distance(h.To3D(), ObjectManager.Player.Position) <= 300)
                        {
                            //var q = Drawing.WorldToScreen(ObjectManager.Player.Position);
                            //LeagueSharp.Common.Packet.S2C.Ping.Encoded(new Packet.S2C.Ping.Struct(q[0], q[1], 0,
                            //    ObjectManager.Player.NetworkId, Packet.PingType.Danger));
                            //Utility.DrawCircle(ObjectManager.Player.Position, ObjectManager.Player.AttackRange, System.Drawing.Color.Orange);
                            orange = true;
                        }
                    }
                }
                //Game.PrintChat(h.ChampionName);
                var spells = k.Spellbook.Spells;
                foreach (var c in spells)
                {
                    if (c.State != SpellState.NotLearned)
                    {
                        theircost += c.ManaCost;
                        if (k.Mana >= theircost)
                        {
                            if (c.CooldownExpires - Game.Time <= theircd)
                            {
                                if (c.Cooldown < theircd)
                                {
                                    alldmg += Damage.GetSpellDamage(k, ObjectManager.Player, c.Slot);
                                    //* (theircd / c.Cooldown);
                                }
                                //if (c.SData.CastRange[0] > longestspell)
                                //{
                                //    longestspell = c.SData.CastRange[0];
                                //}
                                else
                                {
                                    // alldmg += dmgLib2.Class1.calcDmg(k, c.Slot, ObjectManager.Player);
                                    alldmg += Damage.GetSpellDamage(k, ObjectManager.Player, c.Slot);
                                }
                            }

                            if (c.CooldownExpires - Game.Time <= theircd2)
                            {
                                if (c.Cooldown < theircd2)
                                {
                                    soondmg += Damage.GetSpellDamage(k, ObjectManager.Player, c.Slot);
                                    //*(theircd2 / c.Cooldown);
                                }

                                else
                                {
                                    soondmg += Damage.GetSpellDamage(k, ObjectManager.Player, c.Slot);
                                }
                            }
                        }
                    }
                }
                foreach (var c in ObjectManager.Player.Spellbook.Spells)
                {
                    if (c.State != SpellState.NotLearned)
                    {
                        mycost += c.ManaCost;
                        //Game.PrintChat("{0} counted", c.Slot);
                        if (ObjectManager.Player.Mana >= mycost)
                        {
                            if (c.CooldownExpires - Game.Time <= lthan)
                            {
                                if (c.Cooldown < lthan)
                                {
                                    mydmg += Damage.GetSpellDamage(ObjectManager.Player, k, c.Slot);
                                    //* (lthan / c.Cooldown);
                                    //mydmg += dmgLib2.Class1.calcDmg(ObjectManager.Player, c.Slot, k) * (lthan / c.Cooldown);
                                }
                                //if (c.SData.CastRange[0] > mylongestspell)
                                //{
                                //    mylongestspell = c.SData.CastRange[0];
                                //}
                                else
                                {
                                    mydmg += Damage.GetSpellDamage(ObjectManager.Player, k, c.Slot);
                                }
                                //Game.PrintChat("MyDmg from {0} = {1}", c.Slot, dmgLib2.Class1.calcDmg(ObjectManager.Player, c.Slot, h));

                                //Game.PrintChat("my dmg: {0} vs: {1}", mydmg, h.ChampionName);
                            }

                            if (c.CooldownExpires - Game.Time <= gthan)
                            {
                                if (c.Cooldown < gthan)
                                {
                                    dmgnow += Damage.GetSpellDamage(ObjectManager.Player, k, c.Slot);
                                    //* (gthan / c.Cooldown);
                                }
                                else
                                {
                                    dmgnow += Damage.GetSpellDamage(ObjectManager.Player, k, c.Slot);
                                }
                            }
                        }
                    }
                }

                //if (longestspell >= Vector3.Distance(ObjectManager.Player.Position, k.Position))
                //{
                //    drawDanger = true;
                //}
                calcdmg.Add(k, mydmg);
                calcdmg2.Add(k, dmgnow);
                mydmg     = 0;
                mycost    = 0;
                dmgnow    = 0;
                theircost = 0;
                soondmg   = 0;
            }

            //if (drawDanger)
            //{
            //    Utility.DrawCircle(ObjectManager.Player.Position, longestspell, System.Drawing.Color.Red);
            //}

            //else
            //{
            //Utility.DrawCircle(ObjectManager.Player.Position, ObjectManager.Player.AttackRange, System.Drawing.Color.Green);
            //}

            foreach (var c in calcdmg)
            {
                //Game.PrintChat("dmg taken: {0}", alldmg);
                //Game.PrintChat("my 2 dmg: {0} vs: {1}", c.Value, c.Key.ChampionName);
                //Game.PrintChat("in");
                if (alldmg < ObjectManager.Player.Health)
                {
                    var u = Drawing.WorldToScreen(c.Key.Position);

                    if (heroesinrange.Count <= 2)
                    {
                        if (c.Key.Health <= c.Value)
                        {
                            // Drawing.DrawText(u[0], u[1], System.Drawing.Color.Red, "He is Killable!");
                            //Drawing.DrawCircle(c.Key.Position, 150, System.Drawing.Color.Red);
                            //Drawing.DrawCircle(ObjectManager.Player.Position, ObjectManager.Player.AttackRange,
                            //System.Drawing.Color.Green);
                            green = true;
                            var y = Drawing.WorldToScreen(ObjectManager.Player.Position);
                            Drawing.DrawText(y[0], y[1], System.Drawing.Color.LimeGreen, "{0} is killable",
                                             c.Key.ChampionName);
                            //Drawing.DrawCircle(c.Key.Position, ObjectManager.Player.AttackRange,
                            //System.Drawing.Color.Red);
                            tred = true;
                            //break;
                        }

                        if (c.Value > alldmg)
                        {
                            //Game.PrintChat("I win");
                            //Drawing.DrawCircle(ObjectManager.Player.Position, ObjectManager.Player.AttackRange,
                            //System.Drawing.Color.Green);
                            green = true;
                            //Drawing.DrawCircle(c.Key.Position, ObjectManager.Player.AttackRange,
                            // System.Drawing.Color.Yellow);
                            tyellow = true;
                            //break;
                        }

                        if (c.Value < alldmg)
                        {
                            //Game.PrintChat("they win");
                            //Drawing.DrawCircle(ObjectManager.Player.Position, ObjectManager.Player.AttackRange,
                            //   System.Drawing.Color.Yellow);
                            yellow = true;
                            //Drawing.DrawCircle(c.Key.Position, ObjectManager.Player.AttackRange,
                            //System.Drawing.Color.Green);
                            tgreen = true;
                            //break;
                        }
                    }

                    else
                    {
                        foreach (var g in calcdmg2)
                        {
                            if (g.Value > g.Key.Health)
                            {
                                //Drawing.DrawCircle(ObjectManager.Player.Position, ObjectManager.Player.AttackRange,
                                //System.Drawing.Color.Green);
                                green = true;
                                var y = Drawing.WorldToScreen(ObjectManager.Player.Position);
                                Drawing.DrawText(y[0], y[1], System.Drawing.Color.LimeGreen, "{0} is killable",
                                                 g.Key.ChampionName);
                                //Utility.DrawCircle(g.Key.Position, ObjectManager.Player.AttackRange,
                                //System.Drawing.Color.Red);
                                tred = true;
                                //break;
                            }
                        }
                    }



                    //Drawing.DrawText(u[0], u[1], System.Drawing.Color.SteelBlue, "After Combo: {0}", (int)(c.Key.Health - c.Value));
                }

                else
                {
                    //Game.PrintChat("im gonna die");
                    if (heroesinrange.Count >= 2)
                    {
                        if (soondmg > ObjectManager.Player.Health)
                        {
                            //var q = Drawing.WorldToScreen(ObjectManager.Player.Position);
                            // Drawing.DrawText(q[0], q[1], System.Drawing.Color.Red, "Don't go in; you will die.");
                            //Drawing.DrawCircle(ObjectManager.Player.Position, ObjectManager.Player.AttackRange,
                            //System.Drawing.Color.Red);
                            red = true;
                            //break;
                        }
                    }

                    else
                    {
                        if (alldmg > ObjectManager.Player.Health)
                        {
                            //var q = Drawing.WorldToScreen(ObjectManager.Player.Position);
                            // Drawing.DrawText(q[0], q[1], System.Drawing.Color.Red, "Don't go in; you will die.");
                            //Drawing.DrawCircle(ObjectManager.Player.Position, ObjectManager.Player.AttackRange,
                            //System.Drawing.Color.Red);
                            red = true;
                            //break;
                        }
                    }
                }
                //hpi.unit = c.Key;
                //hpi.drawDmg(mydmg,System.Drawing.Color.Red);

                var   barPos = c.Key.HPBarPosition;
                var   damage = mydmg;
                var   percentHealthAfterDamage = Math.Max(0, c.Key.Health - damage) / c.Key.MaxHealth;
                float xPos = (float)(barPos.X + XOffset + Width * percentHealthAfterDamage);

                if (damage > c.Key.Health)
                {
                    Text.X    = (int)barPos.X + XOffset;
                    Text.Y    = (int)barPos.Y + YOffset - 13;
                    Text.text = ((int)(c.Key.Health - damage)).ToString();
                    Text.OnEndScene();
                }

                Drawing.DrawLine(xPos, barPos.Y + YOffset, xPos, barPos.Y + YOffset + Height, 2, System.Drawing.Color.RoyalBlue);

                if (tred)
                {
                    Utility.DrawCircle(ObjectManager.Player.Position, ObjectManager.Player.AttackRange,
                                       System.Drawing.Color.Red);
                    Utility.DrawCircle(c.Key.Position, ObjectManager.Player.AttackRange,
                                       System.Drawing.Color.Red);
                    Utility.DrawCircle(c.Key.Position, ObjectManager.Player.AttackRange, System.Drawing.Color.Red);

                    tyellow = false;
                    tgreen  = false;
                }
                if (tgreen)
                {
                    Utility.DrawCircle(ObjectManager.Player.Position, ObjectManager.Player.AttackRange,
                                       System.Drawing.Color.LimeGreen);
                    tyellow = false;
                }
                if (tyellow)
                {
                    Utility.DrawCircle(ObjectManager.Player.Position, ObjectManager.Player.AttackRange,
                                       System.Drawing.Color.Yellow);
                }
                if (orange)
                {
                    Utility.DrawCircle(ObjectManager.Player.Position, ObjectManager.Player.AttackRange,
                                       System.Drawing.Color.OrangeRed);
                }
                if (red)
                {
                    Utility.DrawCircle(ObjectManager.Player.Position, ObjectManager.Player.AttackRange,
                                       System.Drawing.Color.Red);
                    Utility.DrawCircle(c.Key.Position, ObjectManager.Player.AttackRange,
                                       System.Drawing.Color.Red);

                    green  = false;
                    yellow = false;
                }
                if (yellow)
                {
                    Utility.DrawCircle(c.Key.Position, ObjectManager.Player.AttackRange, System.Drawing.Color.Yellow);
                    green = false;
                }
                if (green)
                {
                    Utility.DrawCircle(c.Key.Position, ObjectManager.Player.AttackRange, System.Drawing.Color.Green);
                }
            }
            calcdmg2.Clear();
            heroesinrange.Clear();
            calcdmg.Clear();
            mycost         = 0;
            theircost      = 0;
            soondmg        = 0;
            dmgnow         = 0;
            longestspell   = 0;
            mylongestspell = 0;
            alldmg         = 0;
            mydmg          = 0;

            //public static double alldmg;
            // public static Menu menu;
            //private TargetSelector ts;
            //public static List<Obj_AI_Hero> heroesinrange;
            //public static double mydmg = new double();
            //public static float longestspell = new float();
            //public static float mylongestspell = new float();
            //public static bool drawDanger = false;
            //public static double soondmg = new double();
            //public static double dmgnow = new double();
            //public static Dictionary<Obj_AI_Hero, double> calcdmg = new Dictionary<Obj_AI_Hero, double>();
            //public static double mycost = new double();
            //public static double theircost = new double();
        }
示例#7
0
        private static void Drawing_OnEndScene(EventArgs args)
        {
            try
            {
                foreach (var hero in
                         HeroManager.AllHeroes.Where(
                             hero =>
                             hero.IsValid && !hero.IsMe && hero.IsHPBarRendered &&
                             (hero.IsEnemy && Config.Item("TrackEnemies").GetValue <bool>() ||
                              hero.IsAlly && Config.Item("TrackAllies").GetValue <bool>())))
                {
                    var pos = GetHPBarPositionWithOffset(hero);
                    var X   = (int)pos.X;
                    var Y   = (int)pos.Y;

                    var k = 0;

                    foreach (var sSlot in SummonerSpellSlots)
                    {
                        var spell   = hero.Spellbook.GetSpell(sSlot);
                        var texture = SummonerTextures[spell.Name];
                        var t       = spell.CooldownExpires - Game.Time;
                        var percent = Math.Abs(spell.Cooldown) > float.Epsilon ? t / spell.Cooldown : 1f;
                        var n       = t > 0 ? (int)(19 * (1f - percent)) : 19;
                        var ts      = TimeSpan.FromSeconds((int)t);
                        var s       = t > 60 ? string.Format("{0}:{1:D2}", ts.Minutes, ts.Seconds) : string.Format("{0:0}", t);

                        if (t > 0)
                        {
                            Text.text  = s;
                            Text.X     = X - 5 - s.Length * 5;
                            Text.Y     = Y + 1 + 13 * k;
                            Text.Color = Color.White;
                            Text.OnEndScene();
                        }

                        texture.X = X + 3 + (Config.Item("XmasHud").IsActive() ? 1 : 0);
                        texture.Y = Y + 1 + 13 * k;
                        var crop = Config.Item("XmasHud").IsActive() ? 14 : 12;
                        texture.Crop(new Rectangle(0, 12 * n, crop, 12));
                        texture.OnEndScene();
                        k++;
                    }

                    var hudOffset = GetHudOffset();
                    CdFrame.X = X + (int)hudOffset.X;
                    CdFrame.Y = Y + (int)hudOffset.Y;
                    CdFrame.OnEndScene();

                    var miscOffset = GetMiscOffset();
                    var startX     = X + 19 + (int)miscOffset.X;
                    var startY     = Y + 20 + (int)miscOffset.Y;

                    foreach (var slot in SpellSlots)
                    {
                        var spell   = hero.Spellbook.GetSpell(slot);
                        var t       = spell.CooldownExpires - Game.Time;
                        var percent = t > 0 && Math.Abs(spell.Cooldown) > float.Epsilon ? 1f - t / spell.Cooldown : 1f;

                        if (t > 0 && t < 100)
                        {
                            var s = string.Format(t < 1f ? "{0:0.0}" : "{0:0}", t);
                            Text.text  = s;
                            Text.X     = startX + (24 - s.Length * 4) / 2;
                            Text.Y     = startY + 6;
                            Text.Color = Color.White;
                            Text.OnEndScene();
                        }

                        var darkColor  = t > 0 ? new ColorBGRA(168, 98, 0, 255) : new ColorBGRA(0, 130, 15, 255);
                        var lightColor = t > 0 ? new ColorBGRA(235, 137, 0, 255) : new ColorBGRA(0, 168, 25, 255);

                        if (hero.Spellbook.CanUseSpell(slot) != SpellState.NotLearned)
                        {
                            for (var i = 0; i < 2 + (Config.Item("XmasHud").IsActive() ? 1 : 0); i++)
                            {
                                ReadyLine.Start = new Vector2(startX, startY + i * 2);
                                ReadyLine.End   = new Vector2(startX + percent * 23, startY + i * 2);
                                ReadyLine.Color = i == 0 ? lightColor : darkColor;
                                ReadyLine.OnEndScene();
                            }
                        }

                        startX = startX + 27;
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(@"/ff can't draw sprites: " + e);
            }
        }
示例#8
0
        private static void Drawing_OnDraw(EventArgs args)
        {
            if (Player.IsDead)
            {
                return;
            }
            var heropos = Drawing.WorldToScreen(ObjectManager.Player.Position);


            if (_qstack != 1 && MenuConfig.DrawTimer1)
            {
                Timer.text = "Q Expiry =>  " +
                             ((double)(Logic._lastQ - Utils.GameTimeTickCount + 3800) / 1000).ToString("0.0") +
                             "s";
                Timer.OnEndScene();
            }

            if (Player.HasBuff("RivenFengShuiEngine") && MenuConfig.DrawTimer2)
            {
                Timer2.text = "R Expiry =>  " +
                              (((double)Logic._lastR - Utils.GameTimeTickCount + 15000) / 1000).ToString("0.0") + "s";
                Timer2.OnEndScene();
            }

            if (MenuConfig.DrawCb)
            {
                Render.Circle.DrawCircle(Player.Position, 250 + Player.AttackRange + 70,
                                         Spells._e.IsReady()
                        ? System.Drawing.Color.FromArgb(120, 0, 170, 255)
                        : System.Drawing.Color.IndianRed);
            }
            if (MenuConfig.DrawBt && Flash != SpellSlot.Unknown)
            {
                Render.Circle.DrawCircle(Player.Position, 750,
                                         Spells._r.IsReady() && Flash.IsReady()
                        ? System.Drawing.Color.FromArgb(120, 0, 170, 255)
                        : System.Drawing.Color.IndianRed);
            }

            if (MenuConfig.DrawFh)
            {
                Render.Circle.DrawCircle(Player.Position, 450 + Player.AttackRange + 70,
                                         Spells._e.IsReady() && Spells._q.IsReady()
                        ? System.Drawing.Color.FromArgb(120, 0, 170, 255)
                        : System.Drawing.Color.IndianRed);
            }
            if (MenuConfig.DrawHs)
            {
                Render.Circle.DrawCircle(Player.Position, 400,
                                         Spells._q.IsReady() && Spells._w.IsReady()
                        ? System.Drawing.Color.FromArgb(120, 0, 170, 255)
                        : System.Drawing.Color.IndianRed);
            }
            if (MenuConfig.DrawAlwaysR)
            {
                Drawing.DrawText(heropos.X - 15, heropos.Y + 20, System.Drawing.Color.DodgerBlue, "Force R  (     )");
                Drawing.DrawText(heropos.X + 53, heropos.Y + 20,
                                 MenuConfig.AlwaysR ? System.Drawing.Color.LimeGreen : System.Drawing.Color.Red,
                                 MenuConfig.AlwaysR ? "On" : "Off");
            }
            if (MenuConfig.ForceFlash)
            {
                Drawing.DrawText(heropos.X - 15, heropos.Y + 40, System.Drawing.Color.DodgerBlue, "Force Flash  (     )");
                Drawing.DrawText(heropos.X + 83, heropos.Y + 40,
                                 MenuConfig.AlwaysF ? System.Drawing.Color.LimeGreen : System.Drawing.Color.Red,
                                 MenuConfig.AlwaysF ? "On" : "Off");
            }
        }
示例#9
0
        static void Drawing_OnDraw(EventArgs args)
        {
            if (!Menu.Item("switch").GetValue <Boolean>())
            {
                return;
            }

            Text.text =
                "AffectsStatusFlags: " + "Q: " + Q.Instance.SData.AffectsStatusFlags + ", W: " + W.Instance.SData.AffectsStatusFlags + ", E: " + E.Instance.SData.AffectsStatusFlags + ", R: " + R.Instance.SData.AffectsStatusFlags + NewLine +
                "AffectsTypeFlags: " + "Q: " + Q.Instance.SData.AffectsTypeFlags + ", W: " + W.Instance.SData.AffectsTypeFlags + ", E: " + E.Instance.SData.AffectsTypeFlags + ", R: " + R.Instance.SData.AffectsTypeFlags + NewLine +
                "AfterEffectName: " + "Q: " + Q.Instance.SData.AfterEffectName + ", W: " + W.Instance.SData.AfterEffectName + ", E: " + E.Instance.SData.AfterEffectName + ", R: " + R.Instance.SData.AfterEffectName + NewLine +
                "AlternateName: " + "Q: " + Q.Instance.SData.AlternateName + ", W: " + W.Instance.SData.AlternateName + ", E: " + E.Instance.SData.AlternateName + ", R: " + R.Instance.SData.AlternateName + NewLine +
                "AlwaysSnapFacing: " + "Q: " + Q.Instance.SData.AlwaysSnapFacing + ", W: " + W.Instance.SData.AlwaysSnapFacing + ", E: " + E.Instance.SData.AlwaysSnapFacing + ", R: " + R.Instance.SData.AlwaysSnapFacing + NewLine +
                "AmmoCountHiddenInUI: " + "Q: " + Q.Instance.SData.AmmoCountHiddenInUI + ", W: " + W.Instance.SData.AmmoCountHiddenInUI + ", E: " + E.Instance.SData.AmmoCountHiddenInUI + ", R: " + R.Instance.SData.AmmoCountHiddenInUI + NewLine +
                "AmmoNotAffectedByCDR: " + "Q: " + Q.Instance.SData.AmmoNotAffectedByCDR + ", W: " + W.Instance.SData.AmmoNotAffectedByCDR + ", E: " + E.Instance.SData.AmmoNotAffectedByCDR + ", R: " + R.Instance.SData.AmmoNotAffectedByCDR + NewLine +
                "AmmoRechargeTime: " + "Q: " + Q.Instance.SData.AmmoRechargeTime + ", W: " + W.Instance.SData.AmmoRechargeTime + ", E: " + E.Instance.SData.AmmoRechargeTime + ", R: " + R.Instance.SData.AmmoRechargeTime + NewLine +
                "AmmoUsed: " + "Q: " + Q.Instance.SData.AmmoUsed + ", W: " + W.Instance.SData.AmmoUsed + ", E: " + E.Instance.SData.AmmoUsed + ", R: " + R.Instance.SData.AmmoUsed + NewLine +
                "AnimationLeadOutName: " + "Q: " + Q.Instance.SData.AnimationLeadOutName + ", W: " + W.Instance.SData.AnimationLeadOutName + ", E: " + E.Instance.SData.AnimationLeadOutName + ", R: " + R.Instance.SData.AnimationLeadOutName + NewLine +
                "AnimationLoopName: " + "Q: " + Q.Instance.SData.AnimationLoopName + ", W: " + W.Instance.SData.AnimationLoopName + ", E: " + E.Instance.SData.AnimationLoopName + ", R: " + R.Instance.SData.AnimationLoopName + NewLine +
                "AnimationName: " + "Q: " + Q.Instance.SData.AnimationName + ", W: " + W.Instance.SData.AnimationName + ", E: " + E.Instance.SData.AnimationName + ", R: " + R.Instance.SData.AnimationName + NewLine +
                "AnimationWinddownName: " + "Q: " + Q.Instance.SData.AnimationWinddownName + ", W: " + W.Instance.SData.AnimationWinddownName + ", E: " + E.Instance.SData.AnimationWinddownName + ", R: " + R.Instance.SData.AnimationWinddownName + NewLine +
                "ApplyAttackDamage: " + "Q: " + Q.Instance.SData.ApplyAttackDamage + ", W: " + W.Instance.SData.ApplyAttackDamage + ", E: " + E.Instance.SData.ApplyAttackDamage + ", R: " + R.Instance.SData.ApplyAttackDamage + NewLine +
                "ApplyAttackEffect: " + "Q: " + Q.Instance.SData.ApplyAttackEffect + ", W: " + W.Instance.SData.ApplyAttackEffect + ", E: " + E.Instance.SData.ApplyAttackEffect + ", R: " + R.Instance.SData.ApplyAttackEffect + NewLine +
                "ApplyMaterialOnHitSound: " + "Q: " + Q.Instance.SData.ApplyMaterialOnHitSound + ", W: " + W.Instance.SData.ApplyMaterialOnHitSound + ", E: " + E.Instance.SData.ApplyMaterialOnHitSound + ", R: " + R.Instance.SData.ApplyMaterialOnHitSound + NewLine +
                "BelongsToAvatar: " + "Q: " + Q.Instance.SData.BelongsToAvatar + ", W: " + W.Instance.SData.BelongsToAvatar + ", E: " + E.Instance.SData.BelongsToAvatar + ", R: " + R.Instance.SData.BelongsToAvatar + NewLine +
                "BounceRadius: " + "Q: " + Q.Instance.SData.BounceRadius + ", W: " + W.Instance.SData.BounceRadius + ", E: " + E.Instance.SData.BounceRadius + ", R: " + R.Instance.SData.BounceRadius + NewLine +
                "CanCastWhileDisabled: " + "Q: " + Q.Instance.SData.CanCastWhileDisabled + ", W: " + W.Instance.SData.CanCastWhileDisabled + ", E: " + E.Instance.SData.CanCastWhileDisabled + ", R: " + R.Instance.SData.CanCastWhileDisabled + NewLine +
                "CancelChargeOnRecastTime: " + "Q: " + Q.Instance.SData.CancelChargeOnRecastTime + ", W: " + W.Instance.SData.CancelChargeOnRecastTime + ", E: " + E.Instance.SData.CancelChargeOnRecastTime + ", R: " + R.Instance.SData.CancelChargeOnRecastTime + NewLine +
                "CanMoveWhileChanneling: " + "Q: " + Q.Instance.SData.CanMoveWhileChanneling + ", W: " + W.Instance.SData.CanMoveWhileChanneling + ", E: " + E.Instance.SData.CanMoveWhileChanneling + ", R: " + R.Instance.SData.CanMoveWhileChanneling + NewLine +
                "CannotBeSuppressed: " + "Q: " + Q.Instance.SData.CannotBeSuppressed + ", W: " + W.Instance.SData.CannotBeSuppressed + ", E: " + E.Instance.SData.CannotBeSuppressed + ", R: " + R.Instance.SData.CannotBeSuppressed + NewLine +
                "CanOnlyCastWhileDead: " + "Q: " + Q.Instance.SData.CanOnlyCastWhileDead + ", W: " + W.Instance.SData.CanOnlyCastWhileDead + ", E: " + E.Instance.SData.CanOnlyCastWhileDead + ", R: " + R.Instance.SData.CanOnlyCastWhileDead + NewLine +
                "CanOnlyCastWhileDisabled: " + "Q: " + Q.Instance.SData.CanOnlyCastWhileDisabled + ", W: " + W.Instance.SData.CanOnlyCastWhileDisabled + ", E: " + E.Instance.SData.CanOnlyCastWhileDisabled + ", R: " + R.Instance.SData.CanOnlyCastWhileDisabled + NewLine +
                "CantCancelWhileChanneling: " + "Q: " + Q.Instance.SData.CantCancelWhileChanneling + ", W: " + W.Instance.SData.CantCancelWhileChanneling + ", E: " + E.Instance.SData.CantCancelWhileChanneling + ", R: " + R.Instance.SData.CantCancelWhileChanneling + NewLine +
                "CantCancelWhileWindingUp: " + "Q: " + Q.Instance.SData.CantCancelWhileWindingUp + ", W: " + W.Instance.SData.CantCancelWhileWindingUp + ", E: " + E.Instance.SData.CantCancelWhileWindingUp + ", R: " + R.Instance.SData.CantCancelWhileWindingUp + NewLine +
                "CantCastWhileRooted: " + "Q: " + Q.Instance.SData.CantCastWhileRooted + ", W: " + W.Instance.SData.CantCastWhileRooted + ", E: " + E.Instance.SData.CantCastWhileRooted + ", R: " + R.Instance.SData.CantCastWhileRooted + NewLine +
                "CastConeAngle: " + "Q: " + Q.Instance.SData.CastConeAngle + ", W: " + W.Instance.SData.CastConeAngle + ", E: " + E.Instance.SData.CastConeAngle + ", R: " + R.Instance.SData.CastConeAngle + NewLine +
                "CastConeDistance: " + "Q: " + Q.Instance.SData.CastConeDistance + ", W: " + W.Instance.SData.CastConeDistance + ", E: " + E.Instance.SData.CastConeDistance + ", R: " + R.Instance.SData.CastConeDistance + NewLine +
                "CastFrame: " + "Q: " + Q.Instance.SData.CastFrame + ", W: " + W.Instance.SData.CastFrame + ", E: " + E.Instance.SData.CastFrame + ", R: " + R.Instance.SData.CastFrame + NewLine +
                "CastRadius: " + "Q: " + Q.Instance.SData.CastRadius + ", W: " + W.Instance.SData.CastRadius + ", E: " + E.Instance.SData.CastRadius + ", R: " + R.Instance.SData.CastRadius + NewLine +
                "CastRadiusSecondary: " + "Q: " + Q.Instance.SData.CastRadiusSecondary + ", W: " + W.Instance.SData.CastRadiusSecondary + ", E: " + E.Instance.SData.CastRadiusSecondary + ", R: " + R.Instance.SData.CastRadiusSecondary + NewLine +
                "CastRadiusTexture: " + "Q: " + Q.Instance.SData.CastRadiusTexture + ", W: " + W.Instance.SData.CastRadiusTexture + ", E: " + E.Instance.SData.CastRadiusTexture + ", R: " + R.Instance.SData.CastRadiusTexture + NewLine +
                "CastRange: " + "Q: " + Q.Instance.SData.CastRange + ", W: " + W.Instance.SData.CastRange + ", E: " + E.Instance.SData.CastRange + ", R: " + R.Instance.SData.CastRange + NewLine +
                "CastRangeDisplayOverride: " + "Q: " + Q.Instance.SData.CastRangeDisplayOverride + ", W: " + W.Instance.SData.CastRangeDisplayOverride + ", E: " + E.Instance.SData.CastRangeDisplayOverride + ", R: " + R.Instance.SData.CastRangeDisplayOverride + NewLine +
                "CastRangeGrowthDuration: " + "Q: " + Q.Instance.SData.CastRangeGrowthDuration + ", W: " + W.Instance.SData.CastRangeGrowthDuration + ", E: " + E.Instance.SData.CastRangeGrowthDuration + ", R: " + R.Instance.SData.CastRangeGrowthDuration + NewLine +
                "CastRangeGrowthMax: " + "Q: " + Q.Instance.SData.CastRangeGrowthMax + ", W: " + W.Instance.SData.CastRangeGrowthMax + ", E: " + E.Instance.SData.CastRangeGrowthMax + ", R: " + R.Instance.SData.CastRangeGrowthMax + NewLine +
                "CastRangeTextureOverrideName: " + "Q: " + Q.Instance.SData.CastRangeTextureOverrideName + ", W: " + W.Instance.SData.CastRangeTextureOverrideName + ", E: " + E.Instance.SData.CastRangeTextureOverrideName + ", R: " + R.Instance.SData.CastRangeTextureOverrideName + NewLine +
                "CastRangeUseBoundingBoxes: " + "Q: " + Q.Instance.SData.CastRangeUseBoundingBoxes + ", W: " + W.Instance.SData.CastRangeUseBoundingBoxes + ", E: " + E.Instance.SData.CastRangeUseBoundingBoxes + ", R: " + R.Instance.SData.CastRangeUseBoundingBoxes + NewLine +
                "CastTargetAdditionalUnitsRadius: " + "Q: " + Q.Instance.SData.CastTargetAdditionalUnitsRadius + ", W: " + W.Instance.SData.CastTargetAdditionalUnitsRadius + ", E: " + E.Instance.SData.CastTargetAdditionalUnitsRadius + ", R: " + R.Instance.SData.CastTargetAdditionalUnitsRadius + NewLine +
                "CastType: " + "Q: " + Q.Instance.SData.CastType + ", W: " + W.Instance.SData.CastType + ", E: " + E.Instance.SData.CastType + ", R: " + R.Instance.SData.CastType + NewLine +
                "ChannelDuration: " + "Q: " + Q.Instance.SData.ChannelDuration + ", W: " + W.Instance.SData.ChannelDuration + ", E: " + E.Instance.SData.ChannelDuration + ", R: " + R.Instance.SData.ChannelDuration + NewLine +
                "ChargeUpdateInterval: " + "Q: " + Q.Instance.SData.ChargeUpdateInterval + ", W: " + W.Instance.SData.ChargeUpdateInterval + ", E: " + E.Instance.SData.ChargeUpdateInterval + ", R: " + R.Instance.SData.ChargeUpdateInterval + NewLine +
                "CircleMissileAngularVelocity: " + "Q: " + Q.Instance.SData.CircleMissileAngularVelocity + ", W: " + W.Instance.SData.CircleMissileAngularVelocity + ", E: " + E.Instance.SData.CircleMissileAngularVelocity + ", R: " + R.Instance.SData.CircleMissileAngularVelocity + NewLine +
                "CircleMissileRadialVelocity: " + "Q: " + Q.Instance.SData.CircleMissileRadialVelocity + ", W: " + W.Instance.SData.CircleMissileRadialVelocity + ", E: " + E.Instance.SData.CircleMissileRadialVelocity + ", R: " + R.Instance.SData.CircleMissileRadialVelocity + NewLine +
                "ClientOnlyMissileTargetBoneName: " + "Q: " + Q.Instance.SData.ClientOnlyMissileTargetBoneName + ", W: " + W.Instance.SData.ClientOnlyMissileTargetBoneName + ", E: " + E.Instance.SData.ClientOnlyMissileTargetBoneName + ", R: " + R.Instance.SData.ClientOnlyMissileTargetBoneName + NewLine +
                "Coefficient: " + "Q: " + Q.Instance.SData.Coefficient + ", W: " + W.Instance.SData.Coefficient + ", E: " + E.Instance.SData.Coefficient + ", R: " + R.Instance.SData.Coefficient + NewLine +
                "Coefficient2: " + "Q: " + Q.Instance.SData.Coefficient2 + ", W: " + W.Instance.SData.Coefficient2 + ", E: " + E.Instance.SData.Coefficient2 + ", R: " + R.Instance.SData.Coefficient2 + NewLine +
                "ConsideredAsAutoAttack: " + "Q: " + Q.Instance.SData.ConsideredAsAutoAttack + ", W: " + W.Instance.SData.ConsideredAsAutoAttack + ", E: " + E.Instance.SData.ConsideredAsAutoAttack + ", R: " + R.Instance.SData.ConsideredAsAutoAttack + NewLine +
                "Cooldown: " + "Q: " + Q.Instance.SData.Cooldown + ", W: " + W.Instance.SData.Cooldown + ", E: " + E.Instance.SData.Cooldown + ", R: " + R.Instance.SData.Cooldown + NewLine +
                "CursorChangesInGrass: " + "Q: " + Q.Instance.SData.CursorChangesInGrass + ", W: " + W.Instance.SData.CursorChangesInGrass + ", E: " + E.Instance.SData.CursorChangesInGrass + ", R: " + R.Instance.SData.CursorChangesInGrass + NewLine +
                "CursorChangesInTerrain: " + "Q: " + Q.Instance.SData.CursorChangesInTerrain + ", W: " + W.Instance.SData.CursorChangesInTerrain + ", E: " + E.Instance.SData.CursorChangesInTerrain + ", R: " + R.Instance.SData.CursorChangesInTerrain + NewLine +
                "DeathRecapPriority: " + "Q: " + Q.Instance.SData.DeathRecapPriority + ", W: " + W.Instance.SData.DeathRecapPriority + ", E: " + E.Instance.SData.DeathRecapPriority + ", R: " + R.Instance.SData.DeathRecapPriority + NewLine +
                "DelayCastOffsetPercent: " + "Q: " + Q.Instance.SData.DelayCastOffsetPercent + ", W: " + W.Instance.SData.DelayCastOffsetPercent + ", E: " + E.Instance.SData.DelayCastOffsetPercent + ", R: " + R.Instance.SData.DelayCastOffsetPercent + NewLine +
                "DelayTotalTimePercent: " + "Q: " + Q.Instance.SData.DelayTotalTimePercent + ", W: " + W.Instance.SData.DelayTotalTimePercent + ", E: " + E.Instance.SData.DelayTotalTimePercent + ", R: " + R.Instance.SData.DelayTotalTimePercent + NewLine +
                "Description: " + "Q: " + Q.Instance.SData.Description + ", W: " + W.Instance.SData.Description + ", E: " + E.Instance.SData.Description + ", R: " + R.Instance.SData.Description + NewLine +
                "DisableCastBar: " + "Q: " + Q.Instance.SData.DisableCastBar + ", W: " + W.Instance.SData.DisableCastBar + ", E: " + E.Instance.SData.DisableCastBar + ", R: " + R.Instance.SData.DisableCastBar + NewLine +
                "DisplayName: " + "Q: " + Q.Instance.SData.DisplayName + ", W: " + W.Instance.SData.DisplayName + ", E: " + E.Instance.SData.DisplayName + ", R: " + R.Instance.SData.DisplayName + NewLine +
                "DoesntBreakChannels: " + "Q: " + Q.Instance.SData.DoesntBreakChannels + ", W: " + W.Instance.SData.DoesntBreakChannels + ", E: " + E.Instance.SData.DoesntBreakChannels + ", R: " + R.Instance.SData.DoesntBreakChannels + NewLine +
                "DoNotNeedToFaceTarget: " + "Q: " + Q.Instance.SData.DoNotNeedToFaceTarget + ", W: " + W.Instance.SData.DoNotNeedToFaceTarget + ", E: " + E.Instance.SData.DoNotNeedToFaceTarget + ", R: " + R.Instance.SData.DoNotNeedToFaceTarget + NewLine +
                //"DrawSecondaryLineIndicator: " + "Q: " + Q.Instance.SData.DrawSecondaryLineIndicator + ", W: " + W.Instance.SData.DrawSecondaryLineIndicator + ", E: " + E.Instance.SData.DrawSecondaryLineIndicator + ", R: " + R.Instance.SData.DrawSecondaryLineIndicator + NewLine +
                "DynamicExtended: " + "Q: " + Q.Instance.SData.DynamicExtended + ", W: " + W.Instance.SData.DynamicExtended + ", E: " + E.Instance.SData.DynamicExtended + ", R: " + R.Instance.SData.DynamicExtended + NewLine +
                "DynamicTooltip: " + "Q: " + Q.Instance.SData.DynamicTooltip + ", W: " + W.Instance.SData.DynamicTooltip + ", E: " + E.Instance.SData.DynamicTooltip + ", R: " + R.Instance.SData.DynamicTooltip + NewLine +
                "ExcludedUnitTags: " + "Q: " + Q.Instance.SData.ExcludedUnitTags + ", W: " + W.Instance.SData.ExcludedUnitTags + ", E: " + E.Instance.SData.ExcludedUnitTags + ", R: " + R.Instance.SData.ExcludedUnitTags + NewLine +
                "Flags: " + "Q: " + Q.Instance.SData.Flags + ", W: " + W.Instance.SData.Flags + ", E: " + E.Instance.SData.Flags + ", R: " + R.Instance.SData.Flags + NewLine +
                "HaveAfterEffect: " + "Q: " + Q.Instance.SData.HaveAfterEffect + ", W: " + W.Instance.SData.HaveAfterEffect + ", E: " + E.Instance.SData.HaveAfterEffect + ", R: " + R.Instance.SData.HaveAfterEffect + NewLine +
                "HaveHitBone: " + "Q: " + Q.Instance.SData.HaveHitBone + ", W: " + W.Instance.SData.HaveHitBone + ", E: " + E.Instance.SData.HaveHitBone + ", R: " + R.Instance.SData.HaveHitBone + NewLine +
                "HaveHitEffect: " + "Q: " + Q.Instance.SData.HaveHitEffect + ", W: " + W.Instance.SData.HaveHitEffect + ", E: " + E.Instance.SData.HaveHitEffect + ", R: " + R.Instance.SData.HaveHitEffect + NewLine +
                "HavePointEffect: " + "Q: " + Q.Instance.SData.HavePointEffect + ", W: " + W.Instance.SData.HavePointEffect + ", E: " + E.Instance.SData.HavePointEffect + ", R: " + R.Instance.SData.HavePointEffect + NewLine +
                "HideRangeIndicatorWhenCasting: " + "Q: " + Q.Instance.SData.HideRangeIndicatorWhenCasting + ", W: " + W.Instance.SData.HideRangeIndicatorWhenCasting + ", E: " + E.Instance.SData.HideRangeIndicatorWhenCasting + ", R: " + R.Instance.SData.HideRangeIndicatorWhenCasting + NewLine +
                "HitBoneName: " + "Q: " + Q.Instance.SData.HitBoneName + ", W: " + W.Instance.SData.HitBoneName + ", E: " + E.Instance.SData.HitBoneName + ", R: " + R.Instance.SData.HitBoneName + NewLine +
                "HitEffectName: " + "Q: " + Q.Instance.SData.HitEffectName + ", W: " + W.Instance.SData.HitEffectName + ", E: " + E.Instance.SData.HitEffectName + ", R: " + R.Instance.SData.HitEffectName + NewLine +
                "HitEffectOrientType: " + "Q: " + Q.Instance.SData.HitEffectOrientType + ", W: " + W.Instance.SData.HitEffectOrientType + ", E: " + E.Instance.SData.HitEffectOrientType + ", R: " + R.Instance.SData.HitEffectOrientType + NewLine +
                "HitEffectPlayerName: " + "Q: " + Q.Instance.SData.HitEffectPlayerName + ", W: " + W.Instance.SData.HitEffectPlayerName + ", E: " + E.Instance.SData.HitEffectPlayerName + ", R: " + R.Instance.SData.HitEffectPlayerName + NewLine +
                "IgnoreAnimContinueUntilCastFrame: " + "Q: " + Q.Instance.SData.IgnoreAnimContinueUntilCastFrame + ", W: " + W.Instance.SData.IgnoreAnimContinueUntilCastFrame + ", E: " + E.Instance.SData.IgnoreAnimContinueUntilCastFrame + ", R: " + R.Instance.SData.IgnoreAnimContinueUntilCastFrame + NewLine +
                "IgnoreRangeCheck: " + "Q: " + Q.Instance.SData.IgnoreRangeCheck + ", W: " + W.Instance.SData.IgnoreRangeCheck + ", E: " + E.Instance.SData.IgnoreRangeCheck + ", R: " + R.Instance.SData.IgnoreRangeCheck + NewLine +
                "InventoryIcon: " + "Q: " + Q.Instance.SData.InventoryIcon + ", W: " + W.Instance.SData.InventoryIcon + ", E: " + E.Instance.SData.InventoryIcon + ", R: " + R.Instance.SData.InventoryIcon + NewLine +
                "IsDisabledWhileDead: " + "Q: " + Q.Instance.SData.IsDisabledWhileDead + ", W: " + W.Instance.SData.IsDisabledWhileDead + ", E: " + E.Instance.SData.IsDisabledWhileDead + ", R: " + R.Instance.SData.IsDisabledWhileDead + NewLine +
                "IsToggleSpell: " + "Q: " + Q.Instance.SData.IsToggleSpell + ", W: " + W.Instance.SData.IsToggleSpell + ", E: " + E.Instance.SData.IsToggleSpell + ", R: " + R.Instance.SData.IsToggleSpell + NewLine +
                "KeywordWhenAcquired: " + "Q: " + Q.Instance.SData.KeywordWhenAcquired + ", W: " + W.Instance.SData.KeywordWhenAcquired + ", E: " + E.Instance.SData.KeywordWhenAcquired + ", R: " + R.Instance.SData.KeywordWhenAcquired + NewLine +
                "LineDragLength: " + "Q: " + Q.Instance.SData.LineDragLength + ", W: " + W.Instance.SData.LineDragLength + ", E: " + E.Instance.SData.LineDragLength + ", R: " + R.Instance.SData.LineDragLength + NewLine +
                "LineMissileBounces: " + "Q: " + Q.Instance.SData.LineMissileBounces + ", W: " + W.Instance.SData.LineMissileBounces + ", E: " + E.Instance.SData.LineMissileBounces + ", R: " + R.Instance.SData.LineMissileBounces + NewLine +
                "LineMissileDelayDestroyAtEndSeconds: " + "Q: " + Q.Instance.SData.LineMissileDelayDestroyAtEndSeconds + ", W: " + W.Instance.SData.LineMissileDelayDestroyAtEndSeconds + ", E: " + E.Instance.SData.LineMissileDelayDestroyAtEndSeconds + ", R: " + R.Instance.SData.LineMissileDelayDestroyAtEndSeconds + NewLine +
                "LineMissileEndsAtTargetPoint: " + "Q: " + Q.Instance.SData.LineMissileEndsAtTargetPoint + ", W: " + W.Instance.SData.LineMissileEndsAtTargetPoint + ", E: " + E.Instance.SData.LineMissileEndsAtTargetPoint + ", R: " + R.Instance.SData.LineMissileEndsAtTargetPoint + NewLine +
                "LineMissileTargetHeightAugment: " + "Q: " + Q.Instance.SData.LineMissileTargetHeightAugment + ", W: " + W.Instance.SData.LineMissileTargetHeightAugment + ", E: " + E.Instance.SData.LineMissileTargetHeightAugment + ", R: " + R.Instance.SData.LineMissileTargetHeightAugment + NewLine +
                "LineMissileTimePulseBetweenCollisionSpellHits: " + "Q: " + Q.Instance.SData.LineMissileTimePulseBetweenCollisionSpellHits + ", W: " + W.Instance.SData.LineMissileTimePulseBetweenCollisionSpellHits + ", E: " + E.Instance.SData.LineMissileTimePulseBetweenCollisionSpellHits + ", R: " + R.Instance.SData.LineMissileTimePulseBetweenCollisionSpellHits + NewLine +
                "LineMissileTrackUnits: " + "Q: " + Q.Instance.SData.LineMissileTrackUnits + ", W: " + W.Instance.SData.LineMissileTrackUnits + ", E: " + E.Instance.SData.LineMissileTrackUnits + ", R: " + R.Instance.SData.LineMissileTrackUnits + NewLine +
                "LineMissileTrackUnitsAndContinues: " + "Q: " + Q.Instance.SData.LineMissileTrackUnitsAndContinues + ", W: " + W.Instance.SData.LineMissileTrackUnitsAndContinues + ", E: " + E.Instance.SData.LineMissileTrackUnitsAndContinues + ", R: " + R.Instance.SData.LineMissileTrackUnitsAndContinues + NewLine +
                "LineMissileUsesAccelerationForBounce: " + "Q: " + Q.Instance.SData.LineMissileUsesAccelerationForBounce + ", W: " + W.Instance.SData.LineMissileUsesAccelerationForBounce + ", E: " + E.Instance.SData.LineMissileUsesAccelerationForBounce + ", R: " + R.Instance.SData.LineMissileUsesAccelerationForBounce + NewLine +
                "LineTargetingBaseTextureOverrideName: " + "Q: " + Q.Instance.SData.LineTargetingBaseTextureOverrideName + ", W: " + W.Instance.SData.LineTargetingBaseTextureOverrideName + ", E: " + E.Instance.SData.LineTargetingBaseTextureOverrideName + ", R: " + R.Instance.SData.LineTargetingBaseTextureOverrideName + NewLine +
                "LineTargetingTargetTextureOverrideName: " + "Q: " + Q.Instance.SData.LineTargetingTargetTextureOverrideName + ", W: " + W.Instance.SData.LineTargetingTargetTextureOverrideName + ", E: " + E.Instance.SData.LineTargetingTargetTextureOverrideName + ", R: " + R.Instance.SData.LineTargetingTargetTextureOverrideName + NewLine +
                "LineWidth: " + "Q: " + Q.Instance.SData.LineWidth + ", W: " + W.Instance.SData.LineWidth + ", E: " + E.Instance.SData.LineWidth + ", R: " + R.Instance.SData.LineWidth + NewLine +
                "LocationTargettingWidth1: " + "Q: " + Q.Instance.SData.LocationTargettingWidth1 + ", W: " + W.Instance.SData.LocationTargettingWidth1 + ", E: " + E.Instance.SData.LocationTargettingWidth1 + ", R: " + R.Instance.SData.LocationTargettingWidth1 + NewLine +
                "LockConeToPlayer: " + "Q: " + Q.Instance.SData.LockConeToPlayer + ", W: " + W.Instance.SData.LockConeToPlayer + ", E: " + E.Instance.SData.LockConeToPlayer + ", R: " + R.Instance.SData.LockConeToPlayer + NewLine +
                "LookAtPolicy: " + "Q: " + Q.Instance.SData.LookAtPolicy + ", W: " + W.Instance.SData.LookAtPolicy + ", E: " + E.Instance.SData.LookAtPolicy + ", R: " + R.Instance.SData.LookAtPolicy + NewLine +
                "LuaOnMissileUpdateDistanceInterval: " + "Q: " + Q.Instance.SData.LuaOnMissileUpdateDistanceInterval + ", W: " + W.Instance.SData.LuaOnMissileUpdateDistanceInterval + ", E: " + E.Instance.SData.LuaOnMissileUpdateDistanceInterval + ", R: " + R.Instance.SData.LuaOnMissileUpdateDistanceInterval + NewLine +
                "MaxAmmo: " + "Q: " + Q.Instance.SData.MaxAmmo + ", W: " + W.Instance.SData.MaxAmmo + ", E: " + E.Instance.SData.MaxAmmo + ", R: " + R.Instance.SData.MaxAmmo + NewLine +
                "MaxGrowthLineBaseTextureName: " + "Q: " + Q.Instance.SData.MaxGrowthLineBaseTextureName + ", W: " + W.Instance.SData.MaxGrowthLineBaseTextureName + ", E: " + E.Instance.SData.MaxGrowthLineBaseTextureName + ", R: " + R.Instance.SData.MaxGrowthLineBaseTextureName + NewLine +
                "MaxGrowthLineTargetTextureName: " + "Q: " + Q.Instance.SData.MaxGrowthLineTargetTextureName + ", W: " + W.Instance.SData.MaxGrowthLineTargetTextureName + ", E: " + E.Instance.SData.MaxGrowthLineTargetTextureName + ", R: " + R.Instance.SData.MaxGrowthLineTargetTextureName + NewLine +
                "MaxGrowthRangeTextureName: " + "Q: " + Q.Instance.SData.MaxGrowthRangeTextureName + ", W: " + W.Instance.SData.MaxGrowthRangeTextureName + ", E: " + E.Instance.SData.MaxGrowthRangeTextureName + ", R: " + R.Instance.SData.MaxGrowthRangeTextureName + NewLine +
                "MaxHighlightTargets: " + "Q: " + Q.Instance.SData.MaxHighlightTargets + ", W: " + W.Instance.SData.MaxHighlightTargets + ", E: " + E.Instance.SData.MaxHighlightTargets + ", R: " + R.Instance.SData.MaxHighlightTargets + NewLine +
                "MinimapIcon: " + "Q: " + Q.Instance.SData.MinimapIcon + ", W: " + W.Instance.SData.MinimapIcon + ", E: " + E.Instance.SData.MinimapIcon + ", R: " + R.Instance.SData.MinimapIcon + NewLine +
                "MinimapIconDisplayFlag: " + "Q: " + Q.Instance.SData.MinimapIconDisplayFlag + ", W: " + W.Instance.SData.MinimapIconDisplayFlag + ", E: " + E.Instance.SData.MinimapIconDisplayFlag + ", R: " + R.Instance.SData.MinimapIconDisplayFlag + NewLine +
                "MinimapIconRotation: " + "Q: " + Q.Instance.SData.MinimapIconRotation + ", W: " + W.Instance.SData.MinimapIconRotation + ", E: " + E.Instance.SData.MinimapIconRotation + ", R: " + R.Instance.SData.MinimapIconRotation + NewLine +
                "MissileAccel: " + "Q: " + Q.Instance.SData.MissileAccel + ", W: " + W.Instance.SData.MissileAccel + ", E: " + E.Instance.SData.MissileAccel + ", R: " + R.Instance.SData.MissileAccel + NewLine +
                "MissileBlockTriggersOnDestroy: " + "Q: " + Q.Instance.SData.MissileBlockTriggersOnDestroy + ", W: " + W.Instance.SData.MissileBlockTriggersOnDestroy + ", E: " + E.Instance.SData.MissileBlockTriggersOnDestroy + ", R: " + R.Instance.SData.MissileBlockTriggersOnDestroy + NewLine +
                "MissileBoneName: " + "Q: " + Q.Instance.SData.MissileBoneName + ", W: " + W.Instance.SData.MissileBoneName + ", E: " + E.Instance.SData.MissileBoneName + ", R: " + R.Instance.SData.MissileBoneName + NewLine +
                "MissileEffect: " + "Q: " + Q.Instance.SData.MissileEffect + ", W: " + W.Instance.SData.MissileEffect + ", E: " + E.Instance.SData.MissileEffect + ", R: " + R.Instance.SData.MissileEffect + NewLine +
                "MissileEffectEnemy: " + "Q: " + Q.Instance.SData.MissileEffectEnemy + ", W: " + W.Instance.SData.MissileEffectEnemy + ", E: " + E.Instance.SData.MissileEffectEnemy + ", R: " + R.Instance.SData.MissileEffectEnemy + NewLine +
                "MissileEffectPlayer: " + "Q: " + Q.Instance.SData.MissileEffectPlayer + ", W: " + W.Instance.SData.MissileEffectPlayer + ", E: " + E.Instance.SData.MissileEffectPlayer + ", R: " + R.Instance.SData.MissileEffectPlayer + NewLine +
                "MissileFixedTravelTime: " + "Q: " + Q.Instance.SData.MissileFixedTravelTime + ", W: " + W.Instance.SData.MissileFixedTravelTime + ", E: " + E.Instance.SData.MissileFixedTravelTime + ", R: " + R.Instance.SData.MissileFixedTravelTime + NewLine +
                "MissileFollowsTerrainHeight: " + "Q: " + Q.Instance.SData.MissileFollowsTerrainHeight + ", W: " + W.Instance.SData.MissileFollowsTerrainHeight + ", E: " + E.Instance.SData.MissileFollowsTerrainHeight + ", R: " + R.Instance.SData.MissileFollowsTerrainHeight + NewLine +
                "MissileGravity: " + "Q: " + Q.Instance.SData.MissileGravity + ", W: " + W.Instance.SData.MissileGravity + ", E: " + E.Instance.SData.MissileGravity + ", R: " + R.Instance.SData.MissileGravity + NewLine +
                "MissileLifetime: " + "Q: " + Q.Instance.SData.MissileLifetime + ", W: " + W.Instance.SData.MissileLifetime + ", E: " + E.Instance.SData.MissileLifetime + ", R: " + R.Instance.SData.MissileLifetime + NewLine +
                "MissileMaxSpeed: " + "Q: " + Q.Instance.SData.MissileMaxSpeed + ", W: " + W.Instance.SData.MissileMaxSpeed + ", E: " + E.Instance.SData.MissileMaxSpeed + ", R: " + R.Instance.SData.MissileMaxSpeed + NewLine +
                "MissileMinSpeed: " + "Q: " + Q.Instance.SData.MissileMinSpeed + ", W: " + W.Instance.SData.MissileMinSpeed + ", E: " + E.Instance.SData.MissileMinSpeed + ", R: " + R.Instance.SData.MissileMinSpeed + NewLine +
                //"MissileMinTravelTime: " + "Q: " + Q.Instance.SData.MissileMinTravelTime + ", W: " + W.Instance.SData.MissileMinTravelTime + ", E: " + E.Instance.SData.MissileMinTravelTime + ", R: " + R.Instance.SData.MissileMinTravelTime + NewLine +
                "MissilePerceptionBubbleRadius: " + "Q: " + Q.Instance.SData.MissilePerceptionBubbleRadius + ", W: " + W.Instance.SData.MissilePerceptionBubbleRadius + ", E: " + E.Instance.SData.MissilePerceptionBubbleRadius + ", R: " + R.Instance.SData.MissilePerceptionBubbleRadius + NewLine +
                "MissilePerceptionBubbleRevealsStealth: " + "Q: " + Q.Instance.SData.MissilePerceptionBubbleRevealsStealth + ", W: " + W.Instance.SData.MissilePerceptionBubbleRevealsStealth + ", E: " + E.Instance.SData.MissilePerceptionBubbleRevealsStealth + ", R: " + R.Instance.SData.MissilePerceptionBubbleRevealsStealth + NewLine +
                "MissileSpeed: " + "Q: " + Q.Instance.SData.MissileSpeed + ", W: " + W.Instance.SData.MissileSpeed + ", E: " + E.Instance.SData.MissileSpeed + ", R: " + R.Instance.SData.MissileSpeed + NewLine +
                "MissileTargetHeightAugment: " + "Q: " + Q.Instance.SData.MissileTargetHeightAugment + ", W: " + W.Instance.SData.MissileTargetHeightAugment + ", E: " + E.Instance.SData.MissileTargetHeightAugment + ", R: " + R.Instance.SData.MissileTargetHeightAugment + NewLine +
                "MissileUnblockable: " + "Q: " + Q.Instance.SData.MissileUnblockable + ", W: " + W.Instance.SData.MissileUnblockable + ", E: " + E.Instance.SData.MissileUnblockable + ", R: " + R.Instance.SData.MissileUnblockable + NewLine +
                "NoWinddownIfCancelled: " + "Q: " + Q.Instance.SData.NoWinddownIfCancelled + ", W: " + W.Instance.SData.NoWinddownIfCancelled + ", E: " + E.Instance.SData.NoWinddownIfCancelled + ", R: " + R.Instance.SData.NoWinddownIfCancelled + NewLine +
                "OrientRadiusTextureFromPlayer: " + "Q: " + Q.Instance.SData.OrientRadiusTextureFromPlayer + ", W: " + W.Instance.SData.OrientRadiusTextureFromPlayer + ", E: " + E.Instance.SData.OrientRadiusTextureFromPlayer + ", R: " + R.Instance.SData.OrientRadiusTextureFromPlayer + NewLine +
                "OrientRangeIndicatorToCursor: " + "Q: " + Q.Instance.SData.OrientRangeIndicatorToCursor + ", W: " + W.Instance.SData.OrientRangeIndicatorToCursor + ", E: " + E.Instance.SData.OrientRangeIndicatorToCursor + ", R: " + R.Instance.SData.OrientRangeIndicatorToCursor + NewLine +
                "OrientRangeIndicatorToFacing: " + "Q: " + Q.Instance.SData.OrientRangeIndicatorToFacing + ", W: " + W.Instance.SData.OrientRangeIndicatorToFacing + ", E: " + E.Instance.SData.OrientRangeIndicatorToFacing + ", R: " + R.Instance.SData.OrientRangeIndicatorToFacing + NewLine +
                "OverrideCastTime: " + "Q: " + Q.Instance.SData.OverrideCastTime + ", W: " + W.Instance.SData.OverrideCastTime + ", E: " + E.Instance.SData.OverrideCastTime + ", R: " + R.Instance.SData.OverrideCastTime + NewLine +
                "ParticleStartOffset: " + "Q: " + Q.Instance.SData.ParticleStartOffset + ", W: " + W.Instance.SData.ParticleStartOffset + ", E: " + E.Instance.SData.ParticleStartOffset + ", R: " + R.Instance.SData.ParticleStartOffset + NewLine +
                "PointEffectName: " + "Q: " + Q.Instance.SData.PointEffectName + ", W: " + W.Instance.SData.PointEffectName + ", E: " + E.Instance.SData.PointEffectName + ", R: " + R.Instance.SData.PointEffectName + NewLine +
                "RequiredUnitTags: " + "Q: " + Q.Instance.SData.RequiredUnitTags + ", W: " + W.Instance.SData.RequiredUnitTags + ", E: " + E.Instance.SData.RequiredUnitTags + ", R: " + R.Instance.SData.RequiredUnitTags + NewLine +
                "SelectionPreference: " + "Q: " + Q.Instance.SData.SelectionPreference + ", W: " + W.Instance.SData.SelectionPreference + ", E: " + E.Instance.SData.SelectionPreference + ", R: " + R.Instance.SData.SelectionPreference + NewLine +
                "Sound_VOEventCategory: " + "Q: " + Q.Instance.SData.Sound_VOEventCategory + ", W: " + W.Instance.SData.Sound_VOEventCategory + ", E: " + E.Instance.SData.Sound_VOEventCategory + ", R: " + R.Instance.SData.Sound_VOEventCategory + NewLine +
                "SpellCastTime: " + "Q: " + Q.Instance.SData.SpellCastTime + ", W: " + W.Instance.SData.SpellCastTime + ", E: " + E.Instance.SData.SpellCastTime + ", R: " + R.Instance.SData.SpellCastTime + NewLine +
                "SpellRevealsChampion: " + "Q: " + Q.Instance.SData.SpellRevealsChampion + ", W: " + W.Instance.SData.SpellRevealsChampion + ", E: " + E.Instance.SData.SpellRevealsChampion + ", R: " + R.Instance.SData.SpellRevealsChampion + NewLine +
                "SpellTotalTime: " + "Q: " + Q.Instance.SData.SpellTotalTime + ", W: " + W.Instance.SData.SpellTotalTime + ", E: " + E.Instance.SData.SpellTotalTime + ", R: " + R.Instance.SData.SpellTotalTime + NewLine +
                "StartCooldown: " + "Q: " + Q.Instance.SData.StartCooldown + ", W: " + W.Instance.SData.StartCooldown + ", E: " + E.Instance.SData.StartCooldown + ", R: " + R.Instance.SData.StartCooldown + NewLine +
                "TargeterConstrainedToRange: " + "Q: " + Q.Instance.SData.TargeterConstrainedToRange + ", W: " + W.Instance.SData.TargeterConstrainedToRange + ", E: " + E.Instance.SData.TargeterConstrainedToRange + ", R: " + R.Instance.SData.TargeterConstrainedToRange + NewLine +
                "TargettingType: " + "Q: " + Q.Instance.SData.TargettingType + ", W: " + W.Instance.SData.TargettingType + ", E: " + E.Instance.SData.TargettingType + ", R: " + R.Instance.SData.TargettingType + NewLine +
                "UpdateRotationWhenCasting: " + "Q: " + Q.Instance.SData.UpdateRotationWhenCasting + ", W: " + W.Instance.SData.UpdateRotationWhenCasting + ", E: " + E.Instance.SData.UpdateRotationWhenCasting + ", R: " + R.Instance.SData.UpdateRotationWhenCasting + NewLine +
                "UseAnimatorFramerate: " + "Q: " + Q.Instance.SData.UseAnimatorFramerate + ", W: " + W.Instance.SData.UseAnimatorFramerate + ", E: " + E.Instance.SData.UseAnimatorFramerate + ", R: " + R.Instance.SData.UseAnimatorFramerate + NewLine +
                "UseAutoattackCastTime: " + "Q: " + Q.Instance.SData.UseAutoattackCastTime + ", W: " + W.Instance.SData.UseAutoattackCastTime + ", E: " + E.Instance.SData.UseAutoattackCastTime + ", R: " + R.Instance.SData.UseAutoattackCastTime + NewLine +
                "UseChargeChanneling: " + "Q: " + Q.Instance.SData.UseChargeChanneling + ", W: " + W.Instance.SData.UseChargeChanneling + ", E: " + E.Instance.SData.UseChargeChanneling + ", R: " + R.Instance.SData.UseChargeChanneling + NewLine +
                "UseChargeTargeting: " + "Q: " + Q.Instance.SData.UseChargeTargeting + ", W: " + W.Instance.SData.UseChargeTargeting + ", E: " + E.Instance.SData.UseChargeTargeting + ", R: " + R.Instance.SData.UseChargeTargeting + NewLine +
                "UseGlobalLineIndicator: " + "Q: " + Q.Instance.SData.UseGlobalLineIndicator + ", W: " + W.Instance.SData.UseGlobalLineIndicator + ", E: " + E.Instance.SData.UseGlobalLineIndicator + ", R: " + R.Instance.SData.UseGlobalLineIndicator + NewLine +
                "UseMinimapTargeting: " + "Q: " + Q.Instance.SData.UseMinimapTargeting + ", W: " + W.Instance.SData.UseMinimapTargeting + ", E: " + E.Instance.SData.UseMinimapTargeting + ", R: " + R.Instance.SData.UseMinimapTargeting + NewLine +
                "";

            Text.OnEndScene();
        }
示例#10
0
        private static void Drawing_OnDraw(EventArgs args)
        {
            if (Player.IsDead)
            {
                return;
            }
            var heropos    = Drawing.WorldToScreen(ObjectManager.Player.Position);
            var end        = Player.ServerPosition.LSExtend(Game.CursorPos, Spells._q.Range);
            var IsWallDash = FleeLOGIC.IsWallDash(end, Spells._q.Range);

            var Eend      = Player.ServerPosition.LSExtend(Game.CursorPos, Spells._e.Range);
            var WallE     = FleeLOGIC.GetFirstWallPoint(Player.ServerPosition, Eend);
            var WallPoint = FleeLOGIC.GetFirstWallPoint(Player.ServerPosition, end);

            if (IsWallDash && MenuConfig.FleeSpot)
            {
                if (WallPoint.LSDistance(Player.ServerPosition) <= 600)
                {
                    Render.Circle.DrawCircle(WallPoint, 60, System.Drawing.Color.White);
                    Render.Circle.DrawCircle(end, 60, System.Drawing.Color.Green);
                }
            }
            if (_qstack != 1 && MenuConfig.DrawTimer1)
            {
                Timer.text = "Q Expiry =>  " + ((double)(Logic._lastQ - Utils.GameTimeTickCount + 3800) / 1000).ToString("0.0") +
                             "s";
                Timer.OnEndScene();
            }

            if (Player.HasBuff("RivenFengShuiEngine") && MenuConfig.DrawTimer2)
            {
                Timer2.text = "R Expiry =>  " + (((double)Logic._lastR - Utils.GameTimeTickCount + 15000) / 1000).ToString("0.0") + "s";
                Timer2.OnEndScene();
            }

            if (MenuConfig.DrawCb)
            {
                Render.Circle.DrawCircle(Player.Position, 250 + Player.AttackRange + 70,
                                         Spells._e.IsReady() ? System.Drawing.Color.FromArgb(120, 0, 170, 255) : System.Drawing.Color.IndianRed);
            }
            if (MenuConfig.DrawBt && Flash != SpellSlot.Unknown)
            {
                Render.Circle.DrawCircle(Player.Position, 750,
                                         Spells._r.IsReady() && Flash.IsReady()
                        ? System.Drawing.Color.FromArgb(120, 0, 170, 255)
                        : System.Drawing.Color.IndianRed);
            }

            if (MenuConfig.DrawFh)
            {
                Render.Circle.DrawCircle(Player.Position, 450 + Player.AttackRange + 70,
                                         Spells._e.IsReady() && Spells._q.IsReady()
                        ? System.Drawing.Color.FromArgb(120, 0, 170, 255)
                        : System.Drawing.Color.IndianRed);
            }
            if (MenuConfig.DrawHs)
            {
                Render.Circle.DrawCircle(Player.Position, 400,
                                         Spells._q.IsReady() && Spells._w.IsReady()
                        ? System.Drawing.Color.FromArgb(120, 0, 170, 255)
                        : System.Drawing.Color.IndianRed);
            }

            if (MenuConfig.DrawAlwaysR)
            {
                Drawing.DrawText(heropos.X - 15, heropos.Y + 20, System.Drawing.Color.DodgerBlue, "Force R  (     )");
                Drawing.DrawText(heropos.X + 53, heropos.Y + 20, MenuConfig.AlwaysR ? System.Drawing.Color.LimeGreen : System.Drawing.Color.Red, MenuConfig.AlwaysR ? "On" : "Off");
            }

            if (MenuConfig.ForceFlash)
            {
                Drawing.DrawText(heropos.X - 15, heropos.Y + 40, System.Drawing.Color.DodgerBlue, "Force Flash  (     )");
                Drawing.DrawText(heropos.X + 76, heropos.Y + 40, MenuConfig.AlwaysF ? System.Drawing.Color.LimeGreen : System.Drawing.Color.Red, MenuConfig.AlwaysF ? "On" : "Off");
            }

            Drawing.DrawText(heropos.X - 15, heropos.Y + 60, System.Drawing.Color.DodgerBlue, "Force Burst  (     )");
            Drawing.DrawText(heropos.X + 75, heropos.Y + 60, MenuConfig.burst ? System.Drawing.Color.LimeGreen : System.Drawing.Color.Red, MenuConfig.burst ? "On" : "Off");

            Drawing.DrawText(heropos.X - 15, heropos.Y + 80, System.Drawing.Color.DodgerBlue, "Force Fast Harass  (     )");
            Drawing.DrawText(heropos.X + 119, heropos.Y + 80, MenuConfig.fastHar ? System.Drawing.Color.LimeGreen : System.Drawing.Color.Red, MenuConfig.fastHar ? "On" : "Off");
        }
示例#11
0
        private static void GetCsEnemy()
        {
            foreach (var hero in ObjectManager.Get <Obj_AI_Hero>())
            {
                if (hero.IsDead | !hero.IsVisible | !_menuenable2.GetValue <bool>() |
                    (hero.IsAlly && !_menuenable4.GetValue <bool>() && !hero.IsMe) | (hero.IsMe && !_menuenable3.GetValue <bool>()))
                {
                    Text.text = "";
                    continue;
                }

                var cs     = hero.MinionsKilled + hero.NeutralMinionsKilled + hero.SuperMonsterKilled;
                var barPos = hero.HPBarPosition;
                var pos    = Drawing.WorldToScreen(hero.Position);
                pos.X -= 50 + _xPos.GetValue <Slider>().Value;
                pos.Y += 20 + _yPos.GetValue <Slider>().Value;

                if (hero.IsMe && _menuenable3.GetValue <bool>())
                {
                    Text.X     = (int)pos.X;
                    Text.X    += 110 / 6;
                    Text.Y     = (int)pos.Y;
                    Text.Color = new ColorBGRA(red: 255, green: 255, blue: 255, alpha: 255);

                    if (cs != 0)
                    {
                        _percent = cs * 100 / _minionsgesamt;
                    }
                    else
                    {
                        _percent = 0;
                    }

                    if (!_advanced.GetValue <bool>())
                    {
                        _line.Begin();
                        _line.Draw(new[] { new Vector2(pos.X, pos.Y - 2), new Vector2(pos.X + 50, pos.Y - 2) }, new ColorBGRA(255, 255, 255, 255));
                        _line.End();

                        _line.Begin();
                        _line.Draw(new[] { new Vector2(pos.X, pos.Y + 14), new Vector2(pos.X + 50, pos.Y + 14) }, new ColorBGRA(255, 255, 255, 255));
                        _line.End();

                        _line.Begin();
                        _line.Draw(new[] { new Vector2(pos.X, pos.Y - 2), new Vector2(pos.X, pos.Y + 14) }, new ColorBGRA(255, 255, 255, 255));
                        _line.End();

                        _line.Begin();
                        _line.Draw(new[] { new Vector2(pos.X + 50, pos.Y - 2), new Vector2(pos.X + 50, pos.Y + 14) }, new ColorBGRA(255, 255, 255, 255));
                        _line.End();

                        Text.text = _percent + " %";
                    }
                    else
                    {
                        _line.Begin();
                        _line.Draw(new[] { new Vector2(pos.X, pos.Y - 2), new Vector2(pos.X + 100, pos.Y - 2) }, new ColorBGRA(255, 255, 255, 255));
                        _line.End();


                        _line.Begin();
                        _line.Draw(new[] { new Vector2(pos.X, pos.Y + 14), new Vector2(pos.X + 100, pos.Y + 14) }, new ColorBGRA(255, 255, 255, 255));
                        _line.End();

                        _line.Begin();
                        _line.Draw(new[] { new Vector2(pos.X, pos.Y - 2), new Vector2(pos.X, pos.Y + 14) }, new ColorBGRA(255, 255, 255, 255));
                        _line.End();

                        _line.Begin();
                        _line.Draw(new[] { new Vector2(pos.X + 100, pos.Y - 2), new Vector2(pos.X + 100, pos.Y + 14) }, new ColorBGRA(255, 255, 255, 255));
                        _line.End();

                        Text.text = _percent + " %" + " |  " + cs + " / " + _minionsgesamt;
                    }

                    Text.OnEndScene();

                    continue;
                }

                _line.Begin();
                _line.Draw(new[] { new Vector2(pos.X, pos.Y - 2), new Vector2(pos.X + 100, pos.Y - 2) }, new ColorBGRA(255, 255, 255, 255));
                _line.End();

                _line.Begin();
                _line.Draw(new[] { new Vector2(pos.X, pos.Y + 14), new Vector2(pos.X + 100, pos.Y + 14) }, new ColorBGRA(255, 255, 255, 255));
                _line.End();

                _line.Begin();
                _line.Draw(new[] { new Vector2(pos.X, pos.Y - 2), new Vector2(pos.X, pos.Y + 14) }, new ColorBGRA(255, 255, 255, 255));
                _line.End();

                _line.Begin();
                _line.Draw(new[] { new Vector2(pos.X + 100, pos.Y - 2), new Vector2(pos.X + 100, pos.Y + 14) }, new ColorBGRA(255, 255, 255, 255));
                _line.End();

                Text.X  = (int)pos.X;
                Text.X += 110 / 6;

                Text.Y     = (int)pos.Y;
                Text.Color = new ColorBGRA(red: 255, green: 255, blue: 255, alpha: 255);
                Text.text  = "CS Count: " + cs;
                Text.OnEndScene();
            }
        }
示例#12
0
文件: HbTracker.cs 项目: riwalry1/AIO
        private static void Drawing_OnEndScene(EventArgs args)
        {
            try
            {
                var screenWidth  = Drawing.Width;
                var screenHeight = Drawing.Height;

                foreach (var hero in
                         LeagueSharp.Common.HeroManager.AllHeroes.Where(
                             hero =>
                             hero.IsValid && !hero.IsMe && hero.IsHPBarRendered &&
                             (hero.IsEnemy && Program.getCheckBoxItem(Program.cd, "TrackEnemies") ||
                              hero.IsAlly && Program.getCheckBoxItem(Program.cd, "TrackAllies"))))
                {
                    var pos = GetHPBarPositionWithOffset(hero);
                    var X   = (int)pos.X - 10;
                    var Y   = (int)pos.Y - 13;

                    if (X < -300 || X > screenWidth + 300 || Y < -300 || Y > screenHeight + 300)
                    {
                        continue;
                    }

                    var k = 0;

                    foreach (var sSlot in SummonerSpellSlots)
                    {
                        var spell   = hero.Spellbook.GetSpell(sSlot);
                        var texture = SummonerTextures.ContainsKey(spell.Name)
                            ? SummonerTextures[spell.Name]
                            : SummonerTextures["SummonerBarrier"];
                        var t       = spell.CooldownExpires - Game.Time;
                        var percent = Math.Abs(spell.Cooldown) > float.Epsilon ? t / spell.Cooldown : 1f;
                        var n       = t > 0 ? (int)(19 * (1f - percent)) : 19;
                        var ts      = TimeSpan.FromSeconds((int)t);
                        var s       = t > 60 ? string.Format("{0}:{1:D2}", ts.Minutes, ts.Seconds) : string.Format("{0:0}", t);

                        if (t > 0)
                        {
                            Text.text  = s;
                            Text.X     = X - 5 - s.Length * 5;
                            Text.Y     = Y + 1 + 13 * k;
                            Text.Color = Color.White;
                            Text.OnEndScene();
                        }

                        texture.X = X + 3;
                        texture.Y = Y + 1 + 13 * k;
                        var crop = 12;
                        texture.Crop(new Rectangle(0, 12 * n, crop, 12));
                        texture.OnEndScene();
                        k++;
                    }

                    CdFrame.X = X;
                    CdFrame.Y = Y;
                    CdFrame.OnEndScene();

                    var startX = X + 19;
                    var startY = Y + 20;

                    foreach (var slot in SpellSlots)
                    {
                        var spell   = hero.Spellbook.GetSpell(slot);
                        var t       = spell.CooldownExpires - Game.Time;
                        var percent = t > 0 && Math.Abs(spell.Cooldown) > float.Epsilon ? 1f - t / spell.Cooldown : 1f;

                        if (t > 0 && t < 100)
                        {
                            var s = string.Format(t < 1f ? "{0:0.0}" : "{0:0}", t);
                            Text.text  = s;
                            Text.X     = startX + (24 - s.Length * 4) / 2;
                            Text.Y     = startY + 6;
                            Text.Color = Color.White;
                            Text.OnEndScene();
                        }

                        var darkColor  = t > 0 ? new ColorBGRA(168, 98, 0, 255) : new ColorBGRA(0, 130, 15, 255);
                        var lightColor = t > 0 ? new ColorBGRA(235, 137, 0, 255) : new ColorBGRA(0, 168, 25, 255);

                        if (hero.Spellbook.CanUseSpell(slot) != SpellState.NotLearned)
                        {
                            for (var i = 0; i < 2; i++)
                            {
                                ReadyLine.Start = new Vector2(startX, startY + i * 2);
                                ReadyLine.End   = new Vector2(startX + percent * 23, startY + i * 2);
                                ReadyLine.Color = i == 0 ? lightColor : darkColor;
                                ReadyLine.OnEndScene();
                            }
                        }

                        startX = startX + 27;
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(@"/ff can't draw sprites: " + e);
            }
        }
示例#13
0
        private void DrawDamage(EventArgs args)
        {
            Color color    = Color.Gray;
            Color barColor = Color.White;

            if (zedMenu.GetParamStringList("koreanzed.drawing.damageindicatorcolor") == 1)
            {
                color    = Color.Gold;
                barColor = Color.Olive;
            }
            else if (zedMenu.GetParamStringList("koreanzed.drawing.damageindicatorcolor") == 2)
            {
                color    = Color.FromArgb(100, Color.Black);
                barColor = Color.Lime;
            }

            if (Enabled())
            {
                foreach (
                    Obj_AI_Hero champ in
                    ObjectManager.Get <Obj_AI_Hero>()
                    .Where(h => h.IsVisible && h.IsEnemy && h.IsValid && h.IsHPBarRendered))
                {
                    float damage = amountOfDamage(champ);

                    if (damage > 0)
                    {
                        Vector2 pos = champ.HPBarPosition;

                        if (zedMenu.GetParamBool("koreanzed.drawing.killableindicator") &&
                            (damage > champ.Health + 50f))
                        {
                            Render.Circle.DrawCircle(champ.Position, 100, Color.Red);
                            Render.Circle.DrawCircle(champ.Position, 75, Color.Red);
                            Render.Circle.DrawCircle(champ.Position, 50, Color.Red);
                            killableText.X = (int)pos.X + 40;
                            killableText.Y = (int)pos.Y - 20;
                            killableText.OnEndScene();
                        }

                        if (zedMenu.GetParamBool("koreanzed.drawing.damageindicator"))
                        {
                            float healthAfterDamage = Math.Max(0, champ.Health - damage) / champ.MaxHealth;
                            float posY           = pos.Y + 20f;
                            float posDamageX     = pos.X + 12f + Width * healthAfterDamage;
                            float posCurrHealthX = pos.X + 12f + Width * champ.Health / champ.MaxHealth;

                            float diff = (posCurrHealthX - posDamageX) + 3;

                            float pos1 = pos.X + 8 + (107 * healthAfterDamage);

                            for (int i = 0; i < diff - 3; i++)
                            {
                                Drawing.DrawLine(pos1 + i, posY, pos1 + i, posY + Height, 1, color);
                            }

                            Drawing.DrawLine(posDamageX, posY, posDamageX, posY + Height, 2, barColor);
                        }
                    }
                }
            }
        }
示例#14
0
        static void Drawing_OnDraw(EventArgs args)
        {
            if (!Menu.Item("switch").GetValue <Boolean>())
            {
                return;
            }

            Target = Hud.SelectedUnit != null ? Hud.SelectedUnit as Obj_AI_Hero : Player;

            var buffs = string.Empty;

            foreach (var buff in Target.Buffs)
            {
                buffs += "\n" + buff.Name + "[Count: " + buff.Count + "/Duration: " + (buff.EndTime - Game.ClockTime).ToString("0.00") + "],";
            }

            var Mobs     = MinionManager.GetMinions(1500, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth);
            var MobsList = string.Empty;

            foreach (var Mob in Mobs)
            {
                MobsList += "\n" + Mob.Name + "[BaseSkin: " + Mob.CharData.BaseSkinName + "/HP: " + Mob.Health + " / " + Mob.MaxHealth + "(" + Mob.HealthPercent.ToString("0.0") + "%)],";
            }

            Render.Circle.DrawCircle(Player.Position, 1500, Color.Red, 10);

            Text.text =
                //"Name: " + Target.Name + NewLine +
                "ChampionName: " + Target.ChampionName + NewLine +
                "SkinName: " + Target.SkinName + NewLine +
                //"Gold: " + Target.Gold + NewLine +
                //"Level: " + Target.Level + NewLine +
                "TotalAttackDamage: " + Utility.TotalAttackDamage(Target) + NewLine +
                "TotalMagicalDamage: " + Utility.TotalMagicalDamage(Target) + NewLine +
                "Armor: " + Target.Armor + NewLine +
                "Health: " + Target.Health + " / " + Target.MaxHealth + " (" + Target.HealthPercent.ToString("0.0") + "%)" + NewLine +
                "Mana: " + Target.Mana + " / " + Target.MaxMana + " (" + Target.HealthPercent.ToString("0.0") + "%)" + NewLine +
                "HPRegenRate: " + Target.HPRegenRate + NewLine +
                "PARRegenRate: " + Target.PARRegenRate + NewLine +
                "Experience: " + Target.Experience + NewLine +
                "Position: " + Target.Position + NewLine +
                "ServerPosition: " + Target.ServerPosition + NewLine +
                "Team: " + Target.Team + NewLine +
                "NetworkId: " + Target.NetworkId + NewLine +
                "MoveSpeed: " + Target.MoveSpeed + NewLine +
                "AttackRange: " + Target.AttackRange + NewLine +
                "RealAutoAttackRange: " + Orbwalking.GetRealAutoAttackRange(Target) + NewLine +
                //"DeathDuration: " + Target.DeathDuration + NewLine +
                "BoundingRadius: " + Target.BoundingRadius + NewLine +
                NewLine +
                "Buffs: " + buffs + NewLine +
                NewLine +
                "IsDead: " + Target.IsDead + NewLine +
                "IsImmovable: " + Target.IsImmovable + NewLine +
                "IsInvulnerable: " + Target.IsInvulnerable + NewLine +
                "IsMoving: " + Target.IsMoving + NewLine +
                "IsPacified: " + Target.IsPacified + NewLine +
                "IsTargetable: " + Target.IsTargetable + NewLine +
                "IsWindingUp: " + Target.IsWindingUp + NewLine +
                "IsZombie: " + Target.IsZombie + NewLine +
                "IsRecalling: " + Target.IsRecalling() + NewLine +
                "IsStunned: " + Target.IsStunned + NewLine +
                "IsRooted: " + Target.IsRooted + NewLine +
                "IsMelee: " + Target.IsMelee() + NewLine +
                "IsDashing: " + Target.IsDashing() + NewLine +
                "IsAlly: " + Target.IsAlly + NewLine +
                "IsCanMove: " + Orbwalking.CanMove(1) + NewLine +
                "UnderTurret: " + Target.UnderTurret() + NewLine +
                NewLine +
                "Mobs: " + MobsList + NewLine +
                NewLine +
                "Game_CursorPos: " + Game.CursorPos + NewLine +
                "Game_ClockTime: " + Game.ClockTime + NewLine +
                "Game_Time: " + Game.Time + NewLine +
                "Game_Type: " + Game.Type + NewLine +
                "Game_Version: " + Game.Version + NewLine +
                "Game_Region: " + Game.Region + NewLine +
                "Game_IP: " + Game.IP + NewLine +
                "Game_Port: " + Game.Port + NewLine +
                "Game_Ping: " + Game.Ping + NewLine +
                "Game_Mode: " + Game.Mode + NewLine +
                "Game_MapId: " + Game.MapId + NewLine +
                "Game_MapName: " + Utility.Map.GetMap().Name
            ;


            Text.OnEndScene();
        }
示例#15
0
        private static void Drawing_OnDraw(EventArgs args)
        {
            foreach (var hero in ObjectManager.Get <AIHeroClient>())
            {
                int mingesamt = 0;

                if (Game.MapId == GameMapId.HowlingAbyss)
                {
                    mingesamt = (int)MinCount + Minionsgesamt;
                }
                else if (Game.MapId == GameMapId.TwistedTreeline)
                {
                    mingesamt = (int)MinCount / 2 + Minionsgesamt;
                }
                else if (Game.MapId == GameMapId.SummonersRift)
                {
                    mingesamt = (int)MinCount / 3 + Minionsgesamt;
                }

                if (hero.IsDead | !hero.IsVisible | !Init.Menuenable2.GetValue <bool>() |
                    (hero.IsAlly && !Init.Menuenable4.GetValue <bool>() && !hero.IsMe) | (hero.IsMe && !Init.Menuenable3.GetValue <bool>()))
                {
                    Text.text = "";
                    continue;
                }

                var cs  = hero.MinionsKilled + hero.NeutralMinionsKilled + hero.SuperMonsterKilled;
                var pos = Drawing.WorldToScreen(hero.Position);
                pos.X -= 50 + Init.XPos.GetValue <Slider>().Value;
                pos.Y += 20 + Init.YPos.GetValue <Slider>().Value;

                if (hero.IsMe && Init.Menuenable3.GetValue <bool>())
                {
                    Text.X     = (int)pos.X;
                    Text.X    += 110 / 6;
                    Text.Y     = (int)pos.Y;
                    Text.Color = new ColorBGRA(red: 255, green: 255, blue: 255, alpha: 255);

                    Percent = mingesamt != 0 ? (cs * 100 / mingesamt) : 0;

                    if (!Init.Advanced.GetValue <bool>())
                    {
                        if (!Init.Advanced_box.GetValue <bool>())
                        {
                            DrawBoxes(pos.X, pos.Y);
                        }

                        Text.text = Percent + " %";
                    }
                    else
                    {
                        if (!Init.Advanced_box.GetValue <bool>())
                        {
                            DrawBoxes(pos.X, pos.Y);
                        }

                        Text.text = Percent + " %" + " |  " + cs + " / " + mingesamt;
                    }

                    Text.OnEndScene();

                    continue;
                }

                if (!Init.Advanced_box.GetValue <bool>())
                {
                    DrawBoxes(pos.X, pos.Y);
                }

                Text.X  = (int)pos.X;
                Text.X += 110 / 6;

                Text.Y     = (int)pos.Y;
                Text.Color = new ColorBGRA(red: 255, green: 255, blue: 255, alpha: 255);
                Text.text  = "CS Count: " + cs;
                Text.OnEndScene();
            }
        }
示例#16
0
        private static void getIncDmg()
        {
            double result = 0;
            var    color  = Color.Red;

            foreach (var enemy in ObjectManager.Get <Obj_AI_Hero>().Where(i => i.Distance(me.Position) < 750 && i.IsEnemy && !i.IsAlly && !i.IsDead && !i.IsMinion && !i.IsMe))
            {
                float basicDmg = 0;
                int   attacks  = (int)Math.Floor(enemy.AttackSpeedMod * 5);
                for (int i = 0; i < attacks; i++)
                {
                    if (enemy.Crit > 0)
                    {
                        basicDmg += (float)enemy.GetAutoAttackDamage(me) * (1 + enemy.Crit / attacks);
                    }
                    else
                    {
                        basicDmg += (float)enemy.GetAutoAttackDamage(me);
                    }
                }
                ;
                result += basicDmg;

                var spells = enemy.Spellbook.Spells;
                foreach (var spell in spells)
                {
                    var t = spell.CooldownExpires - Game.Time;
                    if (t < 0.5)
                    {
                        switch (enemy.SkinName)
                        {
                        case "Ahri":
                            if (spell.Slot == SpellSlot.Q)
                            {
                                result += (float)(Damage.GetSpellDamage(enemy, me, spell.Slot));
                                result += (float)(Damage.GetSpellDamage(enemy, me, spell.Slot, 1));
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        case "Akali":
                            if (spell.Slot == SpellSlot.R)
                            {
                                result += (float)(Damage.GetSpellDamage(enemy, me, spell.Slot) * spell.Ammo);
                            }
                            else if (spell.Slot == SpellSlot.Q)
                            {
                                result += (float)(Damage.GetSpellDamage(enemy, me, spell.Slot));
                                result += (float)(Damage.GetSpellDamage(enemy, me, spell.Slot, 1));
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        case "Amumu":
                            if (spell.Slot == SpellSlot.W)
                            {
                                result += (float)(Damage.GetSpellDamage(enemy, me, spell.Slot) * 5);
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        case "Cassiopeia":
                            if (spell.Slot == SpellSlot.Q || spell.Slot == SpellSlot.E || spell.Slot == SpellSlot.W)
                            {
                                result += (float)(Damage.GetSpellDamage(enemy, me, spell.Slot) * 2);
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        case "Fiddlesticks":
                            if (spell.Slot == SpellSlot.W || spell.Slot == SpellSlot.E)
                            {
                                result += (float)(Damage.GetSpellDamage(enemy, me, spell.Slot) * 5);
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        case "Garen":
                            if (spell.Slot == SpellSlot.E)
                            {
                                result += (float)(Damage.GetSpellDamage(enemy, me, spell.Slot) * 3);
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        case "Irelia":
                            if (spell.Slot == SpellSlot.W)
                            {
                                result += (float)(Damage.GetSpellDamage(enemy, me, spell.Slot) * attacks);
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        case "Karthus":
                            if (spell.Slot == SpellSlot.Q)
                            {
                                result += (float)(Damage.GetSpellDamage(enemy, me, spell.Slot) * 4);
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        case "KogMaw":
                            if (spell.Slot == SpellSlot.W)
                            {
                                result += (float)(Damage.GetSpellDamage(enemy, me, spell.Slot) * attacks);
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        case "LeeSin":
                            if (spell.Slot == SpellSlot.Q)
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot, 1);
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        case "Lucian":
                            if (spell.Slot == SpellSlot.R)
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot) * 4;
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        case "Nunu":
                            if (spell.Slot != SpellSlot.R && spell.Slot != SpellSlot.Q)
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        case "MasterYi":
                            if (spell.Slot != SpellSlot.E)
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot) * attacks;
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        case "MonkeyKing":
                            if (spell.Slot != SpellSlot.R)
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot) * 4;
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        case "Pantheon":
                            if (spell.Slot == SpellSlot.E)
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot) * 3;
                            }
                            else if (spell.Slot == SpellSlot.R)
                            {
                                result += 0;
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }

                            break;

                        case "Rammus":
                            if (spell.Slot == SpellSlot.R)
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot) * 6;
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        case "Riven":
                            if (spell.Slot == SpellSlot.Q)
                            {
                                result += RivenDamageQ(spell, enemy, me);
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        case "Viktor":
                            if (spell.Slot == SpellSlot.R)
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot, 1) * 5;
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        case "Vladimir":
                            if (spell.Slot == SpellSlot.E)
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot) * 2;
                            }
                            else
                            {
                                result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            }
                            break;

                        default:
                            result += (float)Damage.GetSpellDamage(enemy, me, spell.Slot);
                            break;
                        }
                    }
                }
                if (enemy.Spellbook.CanUseSpell(me.GetSpellSlot("summonerdot")) == SpellState.Ready)
                {
                    result += enemy.GetSummonerSpellDamage(me, Damage.SummonerSpell.Ignite);
                }
                foreach (var minions in ObjectManager.Get <Obj_AI_Minion>().Where(i => i.Distance(me.Position) < 750 && i.IsMinion && !i.IsAlly && !i.IsDead))
                {
                    result += minions.GetAutoAttackDamage(me, false);
                }
            }
            var barPos = me.HPBarPosition;
            var damage = (float)result;

            if (damage == 0)
            {
                return;
            }
            var percentHealthAfterDamage = Math.Max(0, me.Health - damage) / me.MaxHealth;
            var xPos = barPos.X + XOffset + Width * percentHealthAfterDamage;

            if (damage > me.Health)
            {
                Text.X    = (int)barPos.X + XOffset;
                Text.Y    = (int)barPos.Y + YOffset - 13;
                Text.text = ((int)(me.Health - damage)).ToString();
                Text.OnEndScene();
            }

            Drawing.DrawLine(xPos, barPos.Y + YOffset, xPos, barPos.Y + YOffset + Height, 3, color);
        }