#region using System; using System.Drawing; using System.Linq; using System.Resources; using DetuksSharp; using LeagueSharp; using LeagueSharp.Common; #endregion namespace Marksman.Champions { internal class MissFortune : Champion { public static Spell Q, W, E; private static float UltiCastedTime = 0; public MissFortune() { Q = new Spell(SpellSlot.Q, 650); Q.SetTargetted(0.29f, 1400f); W = new Spell(SpellSlot.W); E = new Spell(SpellSlot.E, 800); E.SetSkillshot(0.5f, 100f, float.MaxValue, false, SkillshotType.SkillshotCircle); Obj_AI_Base.OnProcessSpellCast += Obj_AI_Base_OnProcessSpellCast; Utils.Utils.PrintMessage("MissFortune loaded."); } private void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (sender.IsMe && args.SData.Name == "MissFortuneBulletTime") UltiCastedTime = Game.Time; } public override void DeathWalker_AfterAttack(AttackableUnit unit, AttackableUnit vTarget) { var t = vTarget as Obj_AI_Hero; if (t != null && (ComboActive || HarassActive) && unit.IsMe) { var useQ = GetValue("UseQ" + (ComboActive ? "C" : "H")); var useW = GetValue("UseW" + (ComboActive ? "C" : "H")); if (useQ) Q.CastOnUnit(t); if (useW && W.IsReady()) W.CastOnUnit(ObjectManager.Player); } } public override void Drawing_OnDraw(EventArgs args) { Spell[] spellList = {Q, E}; foreach (var spell in spellList) { var menuItem = GetValue("Draw" + spell.Slot); if (menuItem.Active && spell.Level > 0) { Render.Circle.DrawCircle(ObjectManager.Player.Position, spell.Range, menuItem.Color); } } } private static void CastQ() { if (!Q.IsReady()) return; var t = TargetSelector.GetTarget(Q.Range + 450, TargetSelector.DamageType.Physical); if (t.IsValidTarget(Q.Range)) { Q.CastOnUnit(t); } } public override void Game_OnGameUpdate(EventArgs args) { var ultCasting = Game.Time - UltiCastedTime < 0.2 || ObjectManager.Player.IsChannelingImportantSpell(); DeathWalker.setAttack(!ultCasting); if (Q.IsReady() && GetValue("UseQTH").Active) { if (ObjectManager.Player.HasBuff("Recall")) return; CastQ(); } if (E.IsReady() && GetValue("UseETH").Active) { var t = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical); if (t.IsValidTarget() && (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) || t.HasBuffOfType(BuffType.Charm) || t.HasBuffOfType(BuffType.Fear) || t.HasBuffOfType(BuffType.Taunt) || t.HasBuff("zhonyasringshield") || t.HasBuff("Recall"))) { E.CastIfHitchanceEquals(t, HitChance.Low); } } if (ComboActive || HarassActive) { var useQ = GetValue("UseQ" + (ComboActive ? "C" : "H")); var useE = GetValue("UseE" + (ComboActive ? "C" : "H")); if (Q.IsReady() && useQ) { CastQ(); } if (E.IsReady() && useE) { var t = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical); if (ObjectManager.Player.Distance(t) > 600) E.CastIfHitchanceEquals(t, t.Path.Count() > 1 ? HitChance.High : HitChance.Medium); else E.CastIfHitchanceEquals(t, HitChance.Low); } } if (LaneClearActive) { var useQ = GetValue("UseQL"); if (Q.IsReady() && useQ) { var vMinions = MinionManager.GetMinions(ObjectManager.Player.Position, Q.Range); foreach ( var minions in vMinions.Where( minions => minions.Health < ObjectManager.Player.GetSpellDamage(minions, SpellSlot.Q) - 20)) Q.Cast(minions); } } } public override bool ComboMenu(Menu config) { config.AddItem(new MenuItem("UseQC" + Id, "Use Q").SetValue(true)); config.AddItem(new MenuItem("UseWC" + Id, "Use W").SetValue(true)); config.AddItem(new MenuItem("UseEC" + Id, "Use E").SetValue(true)); return true; } public override bool HarassMenu(Menu config) { config.AddItem(new MenuItem("UseQH" + Id, "Use Q").SetValue(true)); config.AddItem(new MenuItem("UseWH" + Id, "Use W").SetValue(true)); config.AddItem(new MenuItem("UseEH" + Id, "Use E").SetValue(true)); config.AddItem( new MenuItem("UseQTH" + Id, "Use Q (Toggle)").SetValue(new KeyBind("H".ToCharArray()[0], KeyBindType.Toggle))); config.AddItem( new MenuItem("UseETH" + Id, "Use E (Toggle)").SetValue(new KeyBind("T".ToCharArray()[0], KeyBindType.Toggle))); return true; } public override bool DrawingMenu(Menu config) { config.AddItem( new MenuItem("DrawQ" + Id, "Q range").SetValue( new Circle(true, Color.FromArgb(100, 255, 0, 255)))); config.AddItem( new MenuItem("DrawE" + Id, "E range").SetValue( new Circle(false, Color.FromArgb(100, 255, 255, 255)))); return true; } public override bool ExtrasMenu(Menu config) { return true; } public override bool LaneClearMenu(Menu config) { config.AddItem(new MenuItem("UseQL" + Id, "Use Q").SetValue(true)); return true; } } }