Beispiel #1
0
        private static void Drawing_OnDraw(EventArgs args)
        {
            if (Config.DrawVitals)
            {
                foreach (var vitals in EntityManager.Heroes.Enemies.Where(e => VitalManager.HasFioraPassiveBuff(e) && e.IsValidTarget()).Select(VitalManager.Vitals))
                {
                    foreach (var v in vitals.Where(v => v.ValidVital))
                    {
                        //v.QPredVitalPos.DrawCircle(100, Color.AliceBlue);
                        v.Vitalsector.Draw(System.Drawing.Color.AliceBlue, 2);
                    }
                }
            }

            if (Config.DrawQ)
            {
                Q1.DrawRange(System.Drawing.Color.AliceBlue);
            }

            if (Config.DrawDamage)
            {
                foreach (var e in EntityManager.Heroes.Enemies.Where(e => e.IsValidTarget()))
                {
                    e.DrawDamage(SpellManager.ComboDamage(e));
                }
            }
        }
Beispiel #2
0
 public static float RDamage(AIHeroClient target)
 {
     if (!R.IsLearned)
     {
         return(0);
     }
     return((VitalManager.VitalDamage(target) + Player.Instance.GetAutoAttackDamage(target)) * 4f);
 }
Beispiel #3
0
            public static float ComboDamage(AIHeroClient target, bool r = true)
            {
                var qdmg = Q1.IsReady() ? QDamage(target) : 0;
                var wdmg = W.IsReady() ? WDamage(target) : 0;
                var edmg = E.IsReady() ? EDamage(target) : 0;
                var rdmg = r ? R.IsReady() ? RDamage(target) : VitalManager.VitalDamage(target) : VitalManager.VitalDamage(target);

                return(qdmg + wdmg + edmg + rdmg);
            }
Beispiel #4
0
        private static bool useQ(bool gapCloser, bool shortQ, bool longQ, bool validVitals, AIHeroClient qtarget = null, bool turretCheck = false)
        {
            if (!Q1.IsReady())
            {
                return(false);
            }

            if (qtarget == null)
            {
                qtarget = QTarget;
            }

            if (!qtarget.IsKillable())
            {
                return(false);
            }

            var fuckpoppyW = EntityManager.Heroes.Enemies.Any(e => e.HasBuff("PoppyWZone") && e.IsValidTarget(300, false, qtarget.ServerPosition));

            if (fuckpoppyW)
            {
                return(false);
            }

            if (shortQ || longQ)
            {
                var vital       = VitalManager.vital(qtarget, validVitals);
                var vitalResult = VitalManager.CanQVital(vital, shortQ, longQ);

                if (vitalResult.HasValue)
                {
                    if (SkillshotDetector.SkillshotsDetected.Any(s => s.WillHit(vitalResult.Value.To2D())))
                    {
                        return(false);
                    }

                    if (turretCheck && vitalResult.Value.IsUnderEnemyTurret())
                    {
                        return(false);
                    }

                    if (vital.Vitalsector.IsInside(Player.Instance.ServerPosition) && Orbwalker.CanAutoAttack)
                    {
                        return(false);
                    }

                    return(Q2.Cast(vitalResult.Value));
                }
            }

            if (gapCloser)
            {
            }

            return(false);
        }
Beispiel #5
0
        private Vector3?OverrideOrbwalkPosition()
        {
            if (!Config.orbwalk || !Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
            {
                return(null);
            }

            var target = QTarget;

            if (target == null)
            {
                return(null);
            }

            var AAvital = Config.orbAAVital && target.IsKillable(user.GetAutoAttackRange(target) * 1.15f) || !Config.orbAAVital && target.IsKillable(user.GetAutoAttackRange(target) * 1.35f);

            var vital = VitalManager.vital(target);

            if (vital == null)
            {
                return(null);
            }

            var orbRVital = Config.orbUltVital && vital.IsRVital || !Config.orbUltVital;
            var validpos  = !vital.OrbWalkVitalPos.IsWall() && !vital.OrbWalkVitalPos.IsBuilding();

            if (!validpos)
            {
                return(null);
            }

            if (orbRVital && AAvital)
            {
                return(vital.OrbWalkVitalPos);
            }

            return(null);
        }
Beispiel #6
0
        public override void OnLoad()
        {
            Q1 = new Spell.Skillshot(SpellSlot.Q, 400, SkillShotType.Circular, 0, 3000, 50, DamageType.Physical)
            {
                AllowedCollisionCount = int.MaxValue
            };
            Q2 = new Spell.Skillshot(SpellSlot.Q, 700, SkillShotType.Circular, 0, 3000, 50, DamageType.Physical)
            {
                AllowedCollisionCount = int.MaxValue
            };
            W = new Spell.Skillshot(SpellSlot.W, 750, SkillShotType.Linear, 500, 3200, 70, DamageType.Magical)
            {
                AllowedCollisionCount = int.MaxValue
            };
            E = new Spell.Active(SpellSlot.E, 275, DamageType.Physical);
            R = new Spell.Targeted(SpellSlot.R, 500, DamageType.True);

            Q1.AddRawDamage(new RawDamage
            {
                PreCalculatedDamage = (() =>
                {
                    if (!Q1.IsLearned)
                    {
                        return(0);
                    }
                    var index = Q1.Level - 1;
                    var dmg = new[] { 65f, 75f, 85f, 95f, 105f }[index];
                    var bonus = new[] { 0.95f, 1f, 1.05f, 1.1f, 1.15f }[index] *Player.Instance.FlatPhysicalDamageMod;
                    return(dmg + bonus);
                }),
                Source = Player.Instance,
                Spell  = Q1,
                Stage  = 1
            });

            Q2.AddRawDamage(new RawDamage
            {
                PreCalculatedDamage = (() =>
                {
                    if (!Q1.IsLearned)
                    {
                        return(0);
                    }
                    var index = Q1.Level - 1;
                    var dmg = new[] { 65f, 75f, 85f, 95f, 105f }[index];
                    var bonus = new[] { 0.95f, 1f, 1.05f, 1.1f, 1.15f }[index] *Player.Instance.FlatPhysicalDamageMod;
                    return(dmg + bonus);
                }),
                Source = Player.Instance,
                Spell  = Q2,
                Stage  = 1
            });

            W.AddRawDamage(new RawDamage
            {
                PreCalculatedDamage = (() =>
                {
                    if (!W.IsLearned)
                    {
                        return(0);
                    }
                    var index = W.Level - 1;
                    var dmg = new[] { 90f, 130f, 170f, 210f, 250f }[index];
                    var bonus = Player.Instance.TotalMagicalDamage;
                    return(dmg + bonus);
                }),
                Source = Player.Instance,
                Spell  = W,
                Stage  = 1
            });

            E.AddRawDamage(new RawDamage
            {
                PreCalculatedDamage = (() =>
                {
                    if (!E.IsLearned)
                    {
                        return(0);
                    }
                    var index = E.Level - 1;
                    var mod = new[] { 1.4f, 1.55f, 1.7f, 1.85f, 2f }[index];
                    var dmg = Player.Instance.TotalAttackDamage;
                    return(dmg * mod);
                }),
                Source = Player.Instance,
                Spell  = E,
                Stage  = 1
            });

            Config.Init();
            VitalManager.Init();
            SpellBlocker.Init();

            Orbwalker.OverrideOrbwalkPosition += this.OverrideOrbwalkPosition;
            Orbwalker.OnPostAttack            += this.Orbwalker_OnPostAttack;
            Orbwalker.OnUnkillableMinion      += this.Orbwalker_OnUnkillableMinion;
            Drawing.OnEndScene    += Drawing_OnDraw;
            Player.OnIssueOrder   += Player_OnIssueOrder;
            Spellbook.OnCastSpell += Spellbook_OnCastSpell;
        }