Example #1
0
        private void ProtectorOnTargetedProtection(Obj_AI_Base caster, Obj_AI_Hero target, SpellData spell)
        {
            try
            {
                if (!ConfigValue<bool>("Misc.Shield.Target"))
                    return;

                if (Orbwalking.IsAutoAttack(spell.Name) &&
                    target.HealthPercent() > ConfigValue<Slider>("Misc.Shield.Health").Value)
                    return;

                if (spell.MissileSpeed > 2000 || spell.MissileSpeed == 0)
                    return;

                // TODO: blacklist FiddleQ, FioraQ/R, LeonaE, VladQ, ZileanQ

                if (target.IsMe && E.IsReady())
                {
                    CastShield(caster.Position);
                }

                if (!target.IsMe && W.IsReady() && W.IsInRange(target) && (IsShieldActive || E.IsReady()))
                {
                    var jumpTime = (Player.Distance(target)*1000/W.Instance.SData.MissileSpeed) +
                                   (W.Instance.SData.SpellCastTime*1000);
                    var missileTime = caster.Distance(target)*1000/spell.MissileSpeed;

                    if (jumpTime > missileTime)
                    {
                        Console.WriteLine("Abort Jump - Missile too Fast: {0} {1}", jumpTime, missileTime);
                        return;
                    }

                    W.CastOnUnit(target, UsePackets);
                    Utility.DelayAction.Add((int) jumpTime, () => CastShield(caster.Position));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }