Example #1
0
        private static void Game_OnGameLoad(object obj)
        {
            if (!Player.IsChampion("Fiora"))
            {
                return;
            }

            Bootstrap.Initialize();

            Menu = new Menu("jesuisFiora", "je suis Fiora", true);
            Menu.SetFontStyle(FontStyle.Regular, ScriptColor);

            Orbwalker = Menu.AddOrbwalker();

            var hr = Menu.SubMenu("Orbwalker").Item("HoldPosRadius").GetValue <Slider>();

            if (hr.Value < 60)
            {
                hr.Value = 60;
                Menu.SubMenu("Orbwalker").Item("HoldPosRadius").SetValue(hr);
            }

            var spells  = Menu.AddMenu("Spells", "Spells");
            var passive = Menu.AddMenu("Passive", "Vital Settings");
            var wMenu   = Menu.AddMenu("W", "W (SpellBlock)");

            var orbwalker = passive.AddMenu("Orbwalker", "Orbwalk Vital");

            orbwalker.AddKeyBind("OrbwalkPassive", "Orbwalk to Target Vital", 'N', KeyBindType.Toggle, true);
            orbwalker.Item("OrbwalkPassive").SetTooltip("Attempt to orbwalk to AA enemy vital.", ScriptColor);

            orbwalker.AddBool("OrbwalkCombo", "In Combo");
            orbwalker.Item("OrbwalkCombo").SetTooltip("Only orbwalk to vital in Combo mode.", ScriptColor);

            orbwalker.AddBool("OrbwalkHarass", "In Harass");
            orbwalker.Item("OrbwalkHarass").SetTooltip("Only orbwalk to vital in Harass mode.", ScriptColor);

            orbwalker.AddBool("OrbwalkPrepassive", "Orbwalk PreVital");
            orbwalker.Item("OrbwalkPrepassive")
            .SetTooltip("Orbwalk to a vital before it has been identified.", ScriptColor);

            orbwalker.AddBool("OrbwalkUltPassive", "Orbwalk Ultimate Vital");
            orbwalker.Item("OrbwalkUltPassive").SetTooltip("Orbwalk to ultimate vitals.", ScriptColor);

            orbwalker.AddBool("OrbwalkPassiveTimeout", "Orbwalk Near Timeout Vital");
            orbwalker.Item("OrbwalkPassiveTimeout")
            .SetTooltip("Orbwalk to  to vital as it is being timed out.", ScriptColor);

            orbwalker.AddBool("OrbwalkSelected", "Only Selected Target", true);
            orbwalker.Item("OrbwalkSelected")
            .SetTooltip("Target must be manually left clicked to orbwalk to vitals.", ScriptColor);

            orbwalker.AddBool("OrbwalkTurret", "Block Under Turret", false);
            orbwalker.Item("OrbwalkTurret").SetTooltip("In order to avoid walking under turrets.", ScriptColor);

            orbwalker.AddBool("OrbwalkQ", "Only if Q Down", false);
            orbwalker.Item("OrbwalkQ").SetTooltip("To avoid orbwalking to a vital that will be Q'ed to.", ScriptColor);

            orbwalker.AddBool("OrbwalkAARange", "Only in AA Range", false);
            orbwalker.Item("OrbwalkAARange").SetTooltip("Only orbwalk to vital if it is in AA range.", ScriptColor);

            orbwalker.AddBool("OrbwalkAA", "Only if not able to AA", false);
            orbwalker.Item("OrbwalkAA")
            .SetTooltip("Only orbwalk to vital if not able to AA, in order to avoid loss of dps.", ScriptColor);

            var qVital = passive.AddMenu("QVital", "Q Vital");

            qVital.AddBool("QPassive", "Only Q to Vitals", true);
            qVital.Item("QPassive").SetTooltip("Attempt to only Q to Fiora's vital passive.", ScriptColor);

            qVital.AddBool("QUltPassive", "Q to Ultimate Vital");
            qVital.Item("QUltPassive").SetTooltip("Q to ultimate vital passive.", ScriptColor);

            qVital.AddBool("QPrepassive", "Q to PreVital", false);
            qVital.Item("QPrepassive")
            .SetTooltip("Attempt to Q to vital before it has been identified. May not proc vital.", ScriptColor);

            qVital.AddBool("QPassiveTimeout", "Q to Near Timeout Vital");
            qVital.Item("QPassiveTimeout")
            .SetTooltip("Q to vital as it is being timed out. May not proc vital.", ScriptColor);

            qVital.AddBool("QInVitalBlock", "Block Q inside Vital Polygon");
            qVital.Item("QInVitalBlock").SetTooltip("Block Q if player is inside of enemy vital polygon.", ScriptColor);

            passive.AddBool("DrawCenter", "Draw Vital Center");
            passive.Item("DrawCenter").SetTooltip("Draw the center of vital polygon. No FPS drops.", ScriptColor);

            passive.AddBool("DrawPolygon", "Draw Vital Polygon", false);
            passive.Item("DrawPolygon").SetTooltip("Draw the vital polygon. Possibly causes FPS drops.", ScriptColor);

            passive.AddSlider("SectorMaxRadius", "Vital Polygon Range", 310, 300, 400);
            passive.Item("SectorMaxRadius")
            .SetTooltip("The max range of vital polygon. Draw polygon to understand what this is.", ScriptColor);

            passive.AddSlider("SectorAngle", "Vital Polygon Angle", 70, 60, 90);
            passive.Item("SectorAngle")
            .SetTooltip("The angle of vital polygon. Draw polygon to understand what this is.", ScriptColor);

            var qMenu = spells.AddMenu("Q", "Q");

            qMenu.AddBool("QCombo", "Use in Combo");
            qMenu.AddBool("QHarass", "Use in Harass");
            qMenu.AddSlider("QRangeDecrease", "Decrease Q Range", 10, 0, 150);
            Q.Range = 750 - qMenu.Item("QRangeDecrease").GetValue <Slider>().Value;
            qMenu.Item("QRangeDecrease").ValueChanged += (sender, eventArgs) =>
            {
                Q.Range = 750 - eventArgs.GetNewValue <Slider>().Value;
                var qDraw = Menu.Item("QDraw");
                if (qDraw == null)
                {
                    return;
                }
                var qCircle = qDraw.GetValue <Circle>();
                qDraw.SetValue(new Circle(qCircle.Active, qCircle.Color, Q.Range));
            };

            qMenu.AddBool("QBlockTurret", "Block Q Under Turret", false);
            qMenu.Item("QBlockTurret").SetTooltip("Don't Q under turret in combo/harass.", ScriptColor);

            qMenu.AddKeyBind("QFlee", "Q Flee", 'T');
            qMenu.Item("QFlee").SetTooltip("Flees towards cursor position.", ScriptColor);
            //qMenu.AddInfo("FleeInfo", " --> Flees towards cursor position.", ScriptColor);

            qMenu.AddBool("QKillsteal", "Use for Killsteal");

            var wSpells = wMenu.AddMenu("BlockSpells", "Blocked Spells");

            wMenu.AddKeyBind("WSpells", "Enabled", 'U', KeyBindType.Toggle, true);

            wMenu.AddList("WMode", "W Spellblock to: ", new[] { "Spell Caster", "Target" });
            wMenu.Item("WMode").SetTooltip("TR", ScriptColor);
            wMenu.AddBool("WKillsteal", "Use for Killsteal");
            wMenu.AddBool("WSmart", "Smart W");
            wMenu.Item("WSmart").SetTooltip("Don't W when Morg E or Edge of Darkness shield.", ScriptColor);
            wMenu.AddBool("WTurret", "Block W Under Enemy Turret", false);
            SpellBlock.Initialize(wSpells);
            Dispeller.Initialize(wSpells);

            var eMenu = spells.AddMenu("E", "E");

            eMenu.AddBool("ECombo", "Use in Combo");
            eMenu.AddBool("EHarass", "Use in Harass");

            var rMenu = spells.AddMenu("R", "R");

            var duelistMenu = rMenu.AddMenu("Duelist Champion", "Duelist Mode Champions");

            foreach (var enemy in Enemies)
            {
                duelistMenu.AddBool("Duelist" + enemy.ChampionName, "Use on " + enemy.ChampionName);
            }

            rMenu.AddBool("RCombo", "Use R");

            rMenu.AddList("RMode", "Cast Mode", new[] { "Duelist", "Combo" });
            rMenu.Item("RMode")
            .SetTooltip("Duelist: Only cast when killable. Combo: Cast during normal combo.", ScriptColor);

            rMenu.AddKeyBind("RToggle", "Toggle Mode", 'L');
            rMenu.Item("RToggle").SetTooltip("Toggles cast mode between Duelist and Combo.", ScriptColor);

            rMenu.Item("RToggle").ValueChanged += (sender, eventArgs) =>
            {
                if (!eventArgs.GetNewValue <KeyBind>().Active)
                {
                    return;
                }
                var mode  = Menu.Item("RMode");
                var index = mode.GetValue <StringList>().SelectedIndex == 0 ? 1 : 0;
                mode.SetValue(new StringList(new[] { "Duelist", "Combo" }, index));
            };

            rMenu.AddSlider("RKillVital", "Duelist Mode Min Vitals", 2, 0, 4);
            rMenu.Item("RKillVital").SetTooltip("Used for damage calculation in Duelist Mode", ScriptColor);

            rMenu.AddBool("RComboSelected", "Use R Selected on Selected Unit Only");
            rMenu.Item("RComboSelected")
            .SetTooltip("Only cast R when enemy has been left clicked or selected.", ScriptColor);
            rMenu.AddBool("RSmartQ", "Use Smart Q in Ult");

            var items = spells.AddMenu("Items", "Items");

            items.AddBool("ItemsCombo", "Use in Combo");
            items.AddBool("ItemsHarass", "Use in Harass");

            spells.AddSlider("ManaHarass", "Harass Min Mana Percent", 40);

            var farm = Menu.AddMenu("Farm", "Farm");

            var qFarm = farm.AddMenu("Farm", "Q");

            qFarm.AddBool("QFarm", "Use Q in Farm");
            qFarm.AddBool("QLastHit", "Q Last Hit (Only Killable)", false);
            qFarm.AddBool("QFarmAA", "Only Q out of AA Range", false);
            qFarm.AddSlider("QFarmMana", "Q Min Mana Percent", 40);

            var eFarm = farm.AddMenu("E", "E");

            eFarm.AddBool("ELaneClear", "Use in LaneClear");

            farm.AddKeyBind("FarmEnabled", "Farm Enabled", 'J', KeyBindType.Toggle);
            farm.Item("FarmEnabled").SetTooltip("Enabled in LastHit and LaneClear mode.", ScriptColor);

            farm.AddBool("ItemsLaneClear", "Use Items in LaneClear");

            var draw = Menu.AddMenu("Drawing", "Drawing");

            draw.AddCircle(
                "QVitalDraw", "Draw Q Vital Range", System.Drawing.Color.Purple, SpellManager.QSkillshotRange, false);
            draw.Item("QVitalDraw")
            .SetTooltip(
                "Must be in this range to hit vital. If force vital enabled, then it can only cast Q to target in this range.",
                ScriptColor);

            draw.AddCircle("QDraw", "Draw Q Max Range", System.Drawing.Color.Purple, Q.Range, false);
            draw.Item("QDraw").SetTooltip("The max range that Q can be cast and hit the target.", ScriptColor);

            draw.AddCircle("1Draw", "Draw W", System.Drawing.Color.DeepPink, W.Range, false);
            draw.AddCircle("3Draw", "Draw R", System.Drawing.Color.White, R.Range, false);
            draw.AddBool("DuelistDraw", "Duelist Mode: Killable Target");
            draw.AddBool("WPermashow", "Permashow W Spellblock");
            draw.AddBool("RPermashow", "Permashow R Mode");
            draw.AddBool("FarmPermashow", "Permashow Farm Enabled");
            draw.AddBool("OrbwalkPermashow", "Permashow Orbwalk Vital");

            if (draw.Item("WPermashow").IsActive())
            {
                wMenu.Item("WSpells").Permashow(true, "W SpellBlock", ScriptColor);
            }

            draw.Item("WPermashow").ValueChanged +=
                (sender, eventArgs) =>
            {
                wMenu.Item("WSpells").Permashow(eventArgs.GetNewValue <bool>(), "W SpellBlock", ScriptColor);
            };

            if (draw.Item("RPermashow").IsActive())
            {
                rMenu.Item("RMode").Permashow(true, null, ScriptColor);
            }

            draw.Item("RPermashow").ValueChanged +=
                (sender, eventArgs) =>
            {
                rMenu.Item("RMode").Permashow(eventArgs.GetNewValue <bool>(), null, ScriptColor);
            };

            if (draw.Item("FarmPermashow").IsActive())
            {
                farm.Item("FarmEnabled").Permashow(true, null, ScriptColor);
            }

            draw.Item("FarmPermashow").ValueChanged +=
                (sender, eventArgs) =>
            {
                farm.Item("FarmEnabled").Permashow(eventArgs.GetNewValue <bool>(), null, ScriptColor);
            };

            if (draw.Item("OrbwalkPermashow").IsActive())
            {
                orbwalker.Item("OrbwalkPassive").Permashow(true, null, ScriptColor);
            }

            draw.Item("OrbwalkPermashow").ValueChanged +=
                (sender, eventArgs) =>
            {
                orbwalker.Item("OrbwalkPassive").Permashow(eventArgs.GetNewValue <bool>(), null, ScriptColor);
            };

            var dmg = draw.AddMenu("DamageIndicator", "Damage Indicator");

            dmg.AddBool("DmgEnabled", "Draw Damage Indicator");
            dmg.AddCircle("HPColor", "Predicted Health Color", System.Drawing.Color.White);
            dmg.AddCircle("FillColor", "Damage Color", System.Drawing.Color.HotPink);
            dmg.AddBool("Killable", "Killable Text");

            var misc = Menu.AddMenu("Misc", "Misc");

            /*ManaManager.Initialize(misc);
             * Q.SetManaCondition(ManaManager.ManaMode.Combo, 5);
             * Q.SetManaCondition(ManaManager.ManaMode.Harass, 5);
             * Q.SetManaCondition(ManaManager.ManaMode.Farm, 30);
             * E.SetManaCondition(ManaManager.ManaMode.Combo, 15);
             * E.SetManaCondition(ManaManager.ManaMode.Harass, 15);
             * E.SetManaCondition(ManaManager.ManaMode.Farm, 40);
             * R.SetManaCondition(ManaManager.ManaMode.Combo, 10);
             */

            misc.AddList("TargetSelector", "Target Selector: ", new[] { "Normal", "Locked" });
            misc.Item("TargetSelector").SetTooltip("Locked TS attempts to stick to the same target.", ScriptColor);
            misc.AddInfo("TSInfo", "Locked TS attempts to lock to the same target.", ScriptColor);
            misc.AddBool("Sounds", "Sounds");

            Menu.AddInfo("Info", "By Trees and Lilith!", ScriptColor);
            Menu.AddToMainMenu();

            if (Menu.Item("Sounds").IsActive())
            {
                new SoundObject(Resources.OnLoad).Play();
            }

            DamageIndicator.DamageToUnit = GetComboDamage;
            PassiveManager.Initialize();

            Game.OnUpdate += Game_OnGameUpdate;
            //Orbwalking.BeforeAttack += BeforeAttack;
            Orbwalking.AfterAttack         += AfterAttack;
            Obj_AI_Base.OnProcessSpellCast += Obj_AI_Hero_OnProcessSpellCast;
            Drawing.OnDraw += Drawing_OnDraw;
            Game.PrintChat(
                "<font color=\"{0}\">jesuisFiora Loaded!</font>", System.Drawing.Color.DeepPink.ToHexString());
        }
Example #2
0
        private static void Obj_AI_Hero_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!Menu.Item("WSpells").IsActive() || !W.IsReady())
            {
                return;
            }

            var unit = sender as Obj_AI_Hero;

            if (unit == null || !unit.IsValid || !unit.IsEnemy)
            {
                return;
            }

            if (Menu.Item("WSmart").IsActive() &&
                (Player.HasBuff("BlackShield") || Player.HasBuff("itemmagekillerveil")))
            {
                return;
            }

            // spell handled by evade
            if (SpellDatabase.GetByName(args.SData.Name) != null)
            {
                Console.WriteLine("EVADE PROCESS SPELL RETURN");
                return;
            }

            Console.WriteLine("({0}) {1}", args.Slot, args.SData.Name);
            if (!SpellBlock.Contains(unit, args))
            {
                return;
            }

            var castUnit = unit;
            var type     = args.SData.TargettingType;

            Console.WriteLine(
                "PassiveType: {0} Range: {1} Radius: {2}", type, args.SData.CastRange, args.SData.CastRadius);
            Console.WriteLine("Distance: " + args.End.DistanceToPlayer());

            if (!unit.IsValidTarget() || Menu.Item("WMode").GetValue <StringList>().SelectedIndex == 1)
            {
                var target = TargetSelector.GetSelectedTarget();
                if (target == null || !target.IsValidTarget(W.Range))
                {
                    target = TargetSelector.GetTargetNoCollision(W);
                }

                if (target != null && target.IsValidTarget(W.Range))
                {
                    castUnit = target;
                }
            }

            if (type.IsSkillShot())
            {
                if (unit.ChampionName.Equals("Bard") && args.End.DistanceToPlayer() < 300)
                {
                    Utility.DelayAction.Add(400 + (int)(unit.Distance(Player) / 7f), () => CastW(castUnit));
                }
                else if (unit.ChampionName.Equals("Riven") && args.End.DistanceToPlayer() < 260)
                {
                    //Console.WriteLine("RIVEN");
                    CastW(castUnit);
                }
                else if (args.End.DistanceToPlayer() < 60)
                {
                    CastW(castUnit);
                }
            }
            if (type.IsTargeted() && args.Target != null)
            {
                if (!args.Target.IsMe ||
                    (args.Target.Name.Equals("Barrel") && args.Target.DistanceToPlayer() > 200 &&
                     args.Target.DistanceToPlayer() < 400))
                {
                    return;
                }

                if (Menu.Item("WTurret").IsActive() && Player.UnderTurret(true))
                {
                    return;
                }

                if (unit.ChampionName.Equals("Nautilus") ||
                    (unit.ChampionName.Equals("Caitlyn") && args.Slot.Equals(SpellSlot.R)))
                {
                    var d          = unit.DistanceToPlayer();
                    var travelTime = d / args.SData.MissileSpeed;
                    var delay      = travelTime * 1000 - W.Delay + 150;
                    //Console.WriteLine("TT: " + travelTime + " " + delay);
                    Utility.DelayAction.Add((int)delay, () => CastW(castUnit));
                    return;
                }

                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.LocationAoe) && args.End.DistanceToPlayer() < args.SData.CastRadius)
            {
                // annie moving tibbers
                if (unit.ChampionName.Equals("Annie") && args.Slot.Equals(SpellSlot.R))
                {
                    return;
                }
                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.Cone) && args.End.DistanceToPlayer() < args.SData.CastRadius)
            {
                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.SelfAoe) || type.Equals(SpellDataTargetType.Self))
            {
                var d = args.End.Distance(Player.ServerPosition);
                var p = args.SData.CastRadius > 5000 ? args.SData.CastRange : args.SData.CastRadius;
                //Console.WriteLine(d + " " + " " + p);
                if (d < p)
                {
                    //Console.WriteLine("CAST");
                    CastW(castUnit);
                }
            }
        }
Example #3
0
        private static void AIHeroClient_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!getKeyBindItem(wSpells, "WSpells") || !W.IsReady())
            {
                return;
            }

            var unit = sender as AIHeroClient;

            if (unit == null || !unit.IsValid || !unit.IsEnemy)
            {
                return;
            }

            // spell handled by evade
            if (SpellDatabase.GetByName(args.SData.Name) != null)
            {
                Console.WriteLine("EVADE PROCESS SPELL RETURN");
                return;
            }

            Console.WriteLine("({0}) {1}", args.Slot, args.SData.Name);
            if (!SpellBlock.Contains(unit, args))
            {
                return;
            }

            var castUnit = unit;
            var type     = args.SData.TargettingType;

            Console.WriteLine(
                "PassiveType: {0} Range: {1} Radius: {2}", type, args.SData.CastRange, args.SData.CastRadius);
            Console.WriteLine("Distance: " + args.End.DistanceToPlayer());

            if (!unit.LSIsValidTarget() || getBoxItem(wSpells, "WMode") == 1)
            {
                var target = TargetSelector.SelectedTarget;
                if (target == null || !target.LSIsValidTarget(W.Range))
                {
                    target = TargetSelector.GetTarget(W.Range, DamageType.Physical);
                }

                if (target != null && target.LSIsValidTarget(W.Range))
                {
                    castUnit = target;
                }
            }

            if (type.IsSkillShot())
            {
                if (unit.ChampionName.Equals("Bard") && args.End.DistanceToPlayer() < 300)
                {
                    LeagueSharp.Common.Utility.DelayAction.Add(400 + (int)(unit.LSDistance(Player) / 7f), () => CastW(castUnit));
                }
                else if (unit.ChampionName.Equals("Riven") && args.End.DistanceToPlayer() < 260)
                {
                    Console.WriteLine("RIVEN");
                    CastW(castUnit);
                }
                else if (args.End.DistanceToPlayer() < 60)
                {
                    CastW(castUnit);
                }
            }
            if (type.IsTargeted() && args.Target != null)
            {
                if (!args.Target.IsMe ||
                    (args.Target.Name.Equals("Barrel") && args.Target.DistanceToPlayer() > 200 &&
                     args.Target.DistanceToPlayer() < 400))
                {
                    return;
                }

                if (getCheckBoxItem(wSpells, "WTurret") && Player.UnderTurret(true))
                {
                    return;
                }

                if (unit.ChampionName.Equals("Nautilus") ||
                    (unit.ChampionName.Equals("Caitlyn") && args.Slot.Equals(SpellSlot.R)))
                {
                    var d          = unit.DistanceToPlayer();
                    var travelTime = d / args.SData.MissileSpeed;
                    var delay      = travelTime * 1000 - W.Delay + 150;
                    Console.WriteLine("TT: " + travelTime + " " + delay);
                    LeagueSharp.Common.Utility.DelayAction.Add((int)delay, () => CastW(castUnit));
                    return;
                }

                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.LocationAoe) && args.End.DistanceToPlayer() < args.SData.CastRadius)
            {
                // annie moving tibbers
                if (unit.ChampionName.Equals("Annie") && args.Slot.Equals(SpellSlot.R))
                {
                    return;
                }
                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.Cone) && args.End.DistanceToPlayer() < args.SData.CastRadius)
            {
                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.SelfAoe) || type.Equals(SpellDataTargetType.Self))
            {
                var d = args.End.LSDistance(Player.ServerPosition);
                var p = args.SData.CastRadius > 5000 ? args.SData.CastRange : args.SData.CastRadius;
                Console.WriteLine(d + " " + " " + p);
                if (d < p)
                {
                    Console.WriteLine("CAST");
                    CastW(castUnit);
                }
            }
        }
Example #4
0
        public static void Game_OnGameLoad()
        {
            if (!Player.IsChampion("Fiora"))
            {
                return;
            }

            TreeLib.SpellData.Evade.Init();

            Menu = MainMenu.AddMenu("jesuisFiora", "je suis Fiora");

            passiveM = Menu.AddSubMenu("Passive", "Vital Settings");
            passiveM.AddGroupLabel("Orbwalker Vital");
            passiveM.Add("OrbwalkPassive", new KeyBind("Orbwalk to Target Vital", true, KeyBind.BindTypes.PressToggle, 'N'));
            passiveM.Add("OrbwalkCombo", new CheckBox("In Combo"));
            passiveM.Add("OrbwalkHarass", new CheckBox("In Harass"));
            passiveM.Add("OrbwalkPrepassive", new CheckBox("Orbwalk PreVital"));
            passiveM.Add("OrbwalkUltPassive", new CheckBox("Orbwalk Ultimate Vital"));
            passiveM.Add("OrbwalkPassiveTimeout", new CheckBox("Orbwalk Near Timeout Vital"));
            passiveM.Add("OrbwalkSelected", new CheckBox("Only Selected Target", true));
            passiveM.Add("OrbwalkTurret", new CheckBox("Block Under Turret", false));
            passiveM.Add("OrbwalkQ", new CheckBox("Only if Q Down", false));
            passiveM.Add("OrbwalkAARange", new CheckBox("Only in AA Range", false));
            passiveM.Add("OrbwalkAA", new CheckBox("Only if not able to AA", false));
            passiveM.AddSeparator();
            passiveM.AddGroupLabel("Q Vital");
            passiveM.Add("QPassive", new CheckBox("Only Q to Vitals", true));
            passiveM.Add("QUltPassive", new CheckBox("Q to Ultimate Vital"));
            passiveM.Add("QPrepassive", new CheckBox("Q to PreVital", false));
            passiveM.Add("QPassiveTimeout", new CheckBox("Q to Near Timeout Vital"));
            passiveM.Add("QInVitalBlock", new CheckBox("Block Q inside Vital Polygon"));
            passiveM.AddSeparator();
            passiveM.Add("DrawCenter", new CheckBox("Draw Vital Center"));
            passiveM.Add("DrawPolygon", new CheckBox("Draw Vital Polygon", false));
            passiveM.Add("SectorMaxRadius", new Slider("Vital Polygon Range", 310, 300, 400));
            passiveM.Add("SectorAngle", new Slider("Vital Polygon Angle", 70, 60, 90));
            passiveM.AddSeparator();

            qMenu = Menu.AddSubMenu("Q", "Q");
            qMenu.Add("QCombo", new CheckBox("Use in Combo"));
            qMenu.Add("QHarass", new CheckBox("Use in Harass"));
            qMenu.Add("QRangeDecrease", new Slider("Decrease Q Range", 10, 0, 150));
            Q.Range = 750 - qMenu["QRangeDecrease"].Cast <Slider>().CurrentValue;
            qMenu["QRangeDecrease"].Cast <Slider>().OnValueChange += (sender, eventArgs) =>
            {
                Q.Range = 750 - eventArgs.NewValue;
            };
            qMenu.Add("QBlockTurret", new CheckBox("Block Q Under Turret", false));
            qMenu.Add("QFlee", new KeyBind("Q Flee", false, KeyBind.BindTypes.HoldActive, 'T'));
            qMenu.Add("QKillsteal", new CheckBox("Use for Killsteal"));

            wSpells = Menu.AddSubMenu("Blocked Spells");
            wSpells.Add("WSpells", new KeyBind("Enabled", true, KeyBind.BindTypes.PressToggle, 'U'));
            wSpells.Add("WMode", new ComboBox("W Spellblock to: ", 0, "Spell Caster", "Target"));
            wSpells.Add("WKillsteal", new CheckBox("Use for Killsteal"));
            wSpells.Add("WTurret", new CheckBox("Block W Under Enemy Turret", false));

            SpellBlock.Initialize(wSpells);
            Dispeller.Initialize(wSpells);

            eMenu = Menu.AddSubMenu("E", "E");
            eMenu.Add("ECombo", new CheckBox("Use in Combo"));
            eMenu.Add("EHarass", new CheckBox("Use in Harass"));

            rMenu = Menu.AddSubMenu("R", "R");
            rMenu.AddGroupLabel("Duelist Mode Champions");
            foreach (var enemy in Enemies)
            {
                rMenu.Add("Duelist" + enemy.ChampionName, new CheckBox("Use on " + enemy.ChampionName));
            }
            rMenu.AddSeparator();
            rMenu.Add("RCombo", new CheckBox("Use R"));
            rMenu.Add("RMode", new ComboBox("Cast Mode", 0, "Duelist", "Combo"));
            rMenu.Add("RToggle", new KeyBind("Toggle Mode", false, KeyBind.BindTypes.HoldActive, 'L'));
            rMenu["RToggle"].Cast <KeyBind>().OnValueChange += (sender, eventArgs) =>
            {
                if (!eventArgs.NewValue)
                {
                    return;
                }
                var mode  = rMenu["RMode"].Cast <ComboBox>().CurrentValue;
                var index = mode == 0 ? 1 : 0;
                mode = index;
            };
            rMenu.Add("RKillVital", new Slider("Duelist Mode Min Vitals", 2, 0, 4));
            rMenu.Add("RComboSelected", new CheckBox("Use R Selected on Selected Unit Only"));
            rMenu.Add("RSmartQ", new CheckBox("Use Smart Q in Ult"));

            items = Menu.AddSubMenu("Items", "Items");
            items.Add("ItemsCombo", new CheckBox("Use in Combo"));
            items.Add("ItemsHarass", new CheckBox("Use in Harass"));

            farm = Menu.AddSubMenu("Farm", "Farm");
            farm.AddGroupLabel("Q");
            farm.Add("QFarm", new CheckBox("Use Q in Farm"));
            farm.Add("QLastHit", new CheckBox("Q Last Hit (Only Killable)", false));
            farm.Add("QFarmAA", new CheckBox("Only Q out of AA Range", false));
            farm.Add("QFarmMana", new Slider("Q Min Mana Percent", 40));
            farm.AddSeparator();
            farm.AddGroupLabel("E");
            farm.Add("ELaneClear", new CheckBox("Use in LaneClear"));
            farm.AddSeparator();
            farm.Add("FarmEnabled", new KeyBind("Farm Enabled", false, KeyBind.BindTypes.PressToggle, 'J'));
            farm.Add("ItemsLaneClear", new CheckBox("Use Items in LaneClear"));

            draw = Menu.AddSubMenu("Drawing", "Drawing");
            draw.Add("QVitalDraw", new CheckBox("Draw Q Vital Range")); //, System.Drawing.Color.Purple, SpellManager.QSkillshotRange, false);
            draw.Add("QDraw", new CheckBox("Draw Q Max Range"));        //, System.Drawing.Color.Purple, Q.Range, false);
            draw.Add("1Draw", new CheckBox("Draw W"));                  //, System.Drawing.Color.DeepPink, W.Range, false);
            draw.Add("3Draw", new CheckBox("Draw R"));                  //, System.Drawing.Color.White, R.Range, false);
            draw.Add("DuelistDraw", new CheckBox("Duelist Mode: Killable Target"));

            misc = Menu.AddSubMenu("Misc", "Misc");
            misc.Add("ManaHarass", new Slider("Harass Min Mana Percent", 40));

            PassiveManager.Initialize();

            Game.OnUpdate                  += Game_OnGameUpdate;
            Orbwalker.OnPostAttack         += AfterAttack;
            Obj_AI_Base.OnProcessSpellCast += AIHeroClient_OnProcessSpellCast;
            Drawing.OnDraw                 += Drawing_OnDraw;
            Chat.Print("<font color=\"{0}\">jesuisFiora Loaded!</font>", System.Drawing.Color.DeepPink);
        }
Example #5
0
        private static void Game_OnGameLoad(EventArgs args)
        {
            if (Player.ChampionName != "Fiora")
            {
                return;
            }

            Q = new Spell(SpellSlot.Q, 400 + 350);
            Q.SetSkillshot(.25f, 0, 500, false, SkillshotType.SkillshotLine);

            W = new Spell(SpellSlot.W, 750);
            W.SetSkillshot(0.5f, 70, 3200, false, SkillshotType.SkillshotLine);

            E = new Spell(SpellSlot.E);

            R = new Spell(SpellSlot.R, 500);
            R.SetTargetted(.066f, 500);

            Menu = new Menu("jesuisFiora", "jesuisFiora", true);
            Menu.SetFontStyle(FontStyle.Regular, ScriptColor);

            Orbwalker = Menu.AddOrbwalker();
            Menu.AddTargetSelector();

            var spells = Menu.AddMenu("Spells", "Spells");

            var qMenu = spells.AddMenu("Q", "Q");

            qMenu.AddBool("QCombo", "Use in Combo");
            qMenu.AddBool("QHarass", "Use in Harass");
            qMenu.AddSlider("QRange", "Decrease Q Max Range", 10, 0, 150);
            Q.Range = 750 - qMenu.Item("QRange").GetValue <Slider>().Value;
            qMenu.Item("QRange").ValueChanged += (sender, eventArgs) =>
            {
                Q.Range = 750 - eventArgs.GetNewValue <Slider>().Value;
                var qDraw   = Menu.Item("QDraw");
                var qCircle = qDraw.GetValue <Circle>();
                qDraw.SetValue(new Circle(qCircle.Active, qCircle.Color, Q.Range));
            };
            qMenu.AddBool("QForcePassive", "Only Q to Vitals", false);
            qMenu.AddInfo("QFleeInfo", "Flee:", ScriptColor);
            qMenu.AddKeyBind("QFlee", "Q Flee", 'T');
            qMenu.AddInfo("FleeInfo", " --> Flees towards cursor position.", ScriptColor);
            qMenu.AddBool("QKillsteal", "Use for Killsteal");

            var wMenu   = spells.AddMenu("W", "W");
            var wSpells = wMenu.AddMenu("BlockSpells", "Blocked Spells");

            wMenu.AddKeyBind("WSpells", "W Spellblock", 'U', KeyBindType.Toggle, true);
            wMenu.AddList("WMode", "W Spellblock to: ", new[] { "Spell Caster", "Target" });
            wMenu.AddBool("WKillsteal", "Use for Killsteal");
            wMenu.AddBool("WTurret", "Block W Under Enemy Turret");

            SpellBlock.Initialize(wSpells);
            Dispeller.Initialize(wSpells);

            var eMenu = spells.AddMenu("E", "E");

            eMenu.AddBool("ECombo", "Use in Combo");
            eMenu.AddBool("EHarass", "Use in Harass");

            var rMenu = spells.AddMenu("R", "R");

            var duelistMenu = rMenu.AddMenu("Duelist Champion", "Duelist Mode Champions");

            foreach (var enemy in Enemies)
            {
                duelistMenu.AddBool("Duelist" + enemy.ChampionName, "Use on " + enemy.ChampionName);
            }

            rMenu.AddBool("RCombo", "Use R");
            rMenu.AddList("RMode", "Cast Mode", new[] { "Duelist", "Combo" });
            rMenu.AddKeyBind("RToggle", "Toggle Mode", 'L');

            rMenu.Item("RToggle").ValueChanged += (sender, eventArgs) =>
            {
                if (!eventArgs.GetNewValue <KeyBind>().Active)
                {
                    return;
                }
                var mode  = Menu.Item("RMode");
                var index = mode.GetValue <StringList>().SelectedIndex == 0 ? 1 : 0;
                mode.SetValue(new StringList(new[] { "Duelist", "Combo" }, index));
            };

            rMenu.AddInfo("RModeInfo", " --> Duelist Mode: Only use R when target is killable.", ScriptColor);
            rMenu.AddInfo("RModeInfo2", " --> Combo Mode: Use R in normal combo", ScriptColor);
            rMenu.AddSlider("RKillVital", "Duelist Mode Min Vitals", 1, 0, 4);
            rMenu.AddInfo("RVitalInfo", " --> Note: This is only for damage calculation in Duelist Mode.", ScriptColor);
            rMenu.AddBool("RComboSelected", "Use R Selected on Selected Unit Only");

            var items = spells.AddMenu("Items", "Items");

            items.AddBool("ItemsCombo", "Use in Combo");
            items.AddBool("ItemsHarass", "Use in Harass");

            spells.AddBool("Ignite", "Auto Ignite");
            spells.AddSlider("ManaHarass", "Harass Min Mana Percent", 40);

            var farm = Menu.AddMenu("Farm", "Farm");

            var qFarm = farm.AddMenu("Farm", "Q");

            qFarm.AddBool("QLastHit", "Q Last Hit (Only Killable)");
            qFarm.AddBool("QLaneClear", "Q LaneClear (All)");
            qFarm.AddBool("QFarmAA", "Only Q out of AA Range", false);
            qFarm.AddSlider("QFarmMana", "Q Min Mana Percent", 40);

            var eFarm = farm.AddMenu("E", "E");

            eFarm.AddBool("ELaneClear", "Use in LaneClear");

            farm.AddKeyBind("FarmEnabled", "Farm Enabled", 'J', KeyBindType.Toggle, true);
            farm.AddInfo("FarmInfo", " --> Enabled in LaneClear and LastHit", ScriptColor);
            farm.AddBool("ItemsLaneClear", "Use Items in LaneClear");

            var draw = Menu.AddMenu("Drawing", "Drawing");

            draw.AddCircle("QDraw", "Draw Q", System.Drawing.Color.Purple, Q.Range);
            draw.AddCircle("WDraw", "Draw W", System.Drawing.Color.DeepPink, W.Range);
            draw.AddCircle("RDraw", "Draw R", System.Drawing.Color.White, R.Range);
            draw.AddBool("DuelistDraw", "Duelist Mode: Killable Target");
            draw.AddBool("WPermashow", "Permashow W Spellblock");
            draw.AddBool("RPermashow", "Permashow R Mode");
            draw.AddBool("FarmPermashow", "Permashow Farm Enabled");

            if (draw.Item("WPermashow").IsActive())
            {
                wMenu.Item("WSpells").Permashow(true, null, ScriptColor);
            }

            draw.Item("WPermashow").ValueChanged +=
                (sender, eventArgs) =>
            {
                wMenu.Item("WSpells").Permashow(eventArgs.GetNewValue <bool>(), null, ScriptColor);
            };

            if (draw.Item("RPermashow").IsActive())
            {
                rMenu.Item("RMode").Permashow(true, null, ScriptColor);
            }

            draw.Item("RPermashow").ValueChanged +=
                (sender, eventArgs) =>
            {
                rMenu.Item("RMode").Permashow(eventArgs.GetNewValue <bool>(), null, ScriptColor);
            };

            if (draw.Item("FarmPermashow").IsActive())
            {
                farm.Item("FarmEnabled").Permashow(true, null, ScriptColor);
            }

            draw.Item("FarmPermashow").ValueChanged +=
                (sender, eventArgs) =>
            {
                farm.Item("FarmEnabled").Permashow(eventArgs.GetNewValue <bool>(), null, ScriptColor);
            };

            var dmg = draw.AddMenu("DamageIndicator", "Damage Indicator");

            dmg.AddBool("DmgEnabled", "Draw Damage Indicator");
            dmg.AddCircle("HPColor", "Predicted Health Color", System.Drawing.Color.White);
            dmg.AddCircle("FillColor", "Damage Color", System.Drawing.Color.HotPink);
            dmg.AddBool("Killable", "Killable Text");

            Menu.AddBool("Sounds", "Sounds");
            Menu.AddInfo("Info", "By Trees!", ScriptColor);
            Menu.AddToMainMenu();

            if (Menu.Item("Sounds").IsActive())
            {
                new SoundObject(Resources.OnLoad).Play();
            }

            var ignite = ObjectManager.Player.Spellbook.GetSpell(ObjectManager.Player.GetSpellSlot("summonerdot"));

            if (ignite.Slot != SpellSlot.Unknown)
            {
                Ignite = new Spell(ignite.Slot, 600);
                //Ignite.SetTargetted();
            }

            DamageIndicator.DamageToUnit = GetComboDamage;

            Game.OnUpdate                  += Game_OnGameUpdate;
            Orbwalking.BeforeAttack        += BeforeAttack;
            Orbwalking.AfterAttack         += AfterAttack;
            Obj_AI_Base.OnProcessSpellCast += Obj_AI_Hero_OnProcessSpellCast;
            Drawing.OnDraw                 += Drawing_OnDraw;
            Game.PrintChat(
                "<font color=\"{0}\">jesuisFiora Loaded!</font>", System.Drawing.Color.DeepPink.ToHexString());
        }
Example #6
0
        private static void Obj_AI_Hero_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (sender == null || !sender.IsValid)
            {
                return;
            }

            if (sender.IsMe)
            {
                var slot = Player.GetSpellSlot(args.SData.Name);

                if (slot.Equals(SpellSlot.E))
                {
                    Orbwalking.ResetAutoAttackTimer();
                }

                return;
            }

            var autoW = Menu.Item("WSpells").IsActive() && W.IsReady();

            if (!autoW)
            {
                return;
            }

            var unit     = sender as Obj_AI_Hero;
            var castUnit = unit;
            var type     = args.SData.TargettingType;

            var blockableSpell = unit != null && unit.IsEnemy && SpellBlock.Contains(unit, args);

            if (!blockableSpell)
            {
                //Console.WriteLine("RETURN");
                return;
            }

            //Console.WriteLine(type);
            if (!unit.IsValidTarget() || Menu.Item("WMode").GetValue <StringList>().SelectedIndex == 1)
            {
                var target = TargetSelector.GetSelectedTarget();
                if (target == null || !target.IsValidTarget(W.Range))
                {
                    target = TargetSelector.GetTargetNoCollision(W);
                }

                if (target != null && target.IsValidTarget(W.Range))
                {
                    castUnit = target;
                }
            }

            if (type.IsTargeted() && args.Target != null && args.Target.IsMe)
            {
                if (Menu.Item("WTurret").IsActive() && Player.UnderTurret(true))
                {
                    return;
                }

                CastW(castUnit);
            }
            else if (unit.ChampionName.Equals("Riven") && unit.Distance(Player) < 400)
            {
                CastW(castUnit);
            }
            else if (unit.ChampionName.Equals("Bard") && type.Equals(SpellDataTargetType.Location) &&
                     args.End.Distance(Player.ServerPosition) < 300)
            {
                Utility.DelayAction.Add(400 + (int)(unit.Distance(Player) / 7f), () => CastW(castUnit));
            }
            else if (args.SData.IsAutoAttack() && args.Target != null && args.Target.IsMe)
            {
                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.SelfAoe) &&
                     unit.Distance(Player.ServerPosition) < args.SData.CastRange + args.SData.CastRadius / 2)
            {
                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.Self))
            {
                // this probably isn't needed
                if ((unit.ChampionName.Equals("Kalista") && Player.Distance(unit) < 350))
                {
                    CastW(castUnit);
                }

                // need to look into this
                if (unit.ChampionName.Equals("Zed") && Player.Distance(unit) < 300)
                {
                    Utility.DelayAction.Add(200, () => CastW(castUnit));
                }
            }
        }