#region
using System;
using System.Drawing;
using System.Linq;
using DetuksSharp;
using LeagueSharp;
using LeagueSharp.Common;
#endregion
namespace Marksman.Champions
{
internal class Twitch : Champion
{
public static Spell W;
public static Spell E;
public Twitch()
{
W = new Spell(SpellSlot.W, 950);
W.SetSkillshot(0.25f, 120f, 1400f, false, SkillshotType.SkillshotCircle);
E = new Spell(SpellSlot.E, 1200);
Utility.HpBarDamageIndicator.DamageToUnit = GetComboDamage;
Utility.HpBarDamageIndicator.Enabled = true;
Utils.Utils.PrintMessage("Twitch loaded.");
}
public override void DeathWalker_AfterAttack(AttackableUnit unit, AttackableUnit target)
{
var t = target as Obj_AI_Hero;
if (t == null || (!ComboActive && !HarassActive) || !unit.IsMe)
return;
var useW = GetValue<bool>("UseW" + (ComboActive ? "C" : "H"));
if (useW && W.IsReady())
W.Cast(t, false, true);
}
public override void Drawing_OnDraw(EventArgs args)
{
Spell[] spellList = {W};
foreach (var spell in spellList)
{
var menuItem = GetValue<Circle>("Draw" + spell.Slot);
if (menuItem.Active)
Render.Circle.DrawCircle(ObjectManager.Player.Position, spell.Range, menuItem.Color);
}
}
public override void Game_OnGameUpdate(EventArgs args)
{
if (DeathWalker.canMove() && (ComboActive || HarassActive))
{
var useW = GetValue<bool>("UseW" + (ComboActive ? "C" : "H"));
var useE = GetValue<bool>("UseE" + (ComboActive ? "C" : "H"));
if (useW)
{
var wTarget = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);
if (W.IsReady() && wTarget.IsValidTarget())
W.Cast(wTarget, false, true);
}
if (useE && E.IsReady())
{
var eTarget = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical);
if (eTarget.IsValidTarget(E.Range))
{
foreach (
var buff in
eTarget.Buffs.Where(buff => buff.DisplayName.ToLower() == "twitchdeadlyvenom")
.Where(buff => buff.Count == 6))
{
E.Cast();
}
}
// credits iMeh
var minions = MinionManager.GetMinions(E.Range, MinionTypes.All, MinionTeam.NotAlly);
foreach (var m in minions)
{
switch (GetValue<StringList>("E.Mobs").SelectedIndex)
{
case 0:
if ((m.CharData.BaseSkinName.Contains("MinionSiege") || m.CharData.BaseSkinName.Contains("Dragon") ||
m.CharData.BaseSkinName.Contains("Baron")) && E.IsKillable(m))
{
E.Cast();
}
break;
case 1:
if ((m.CharData.BaseSkinName.Contains("Dragon") || m.CharData.BaseSkinName.Contains("Baron")) &&
E.IsKillable(m))
{
E.Cast();
}
break;
case 2:
if (m.CharData.BaseSkinName.Contains("MinionSiege") &&
E.IsKillable(m))
{
E.Cast();
}
break;
}
}
}
}
if (GetValue<bool>("UseEM") && E.IsReady())
{
foreach (
var hero in
ObjectManager.Get<Obj_AI_Hero>()
.Where(
hero =>
hero.IsValidTarget(E.Range) &&
(ObjectManager.Player.GetSpellDamage(hero, SpellSlot.E) - 10 > hero.Health)))
{
E.Cast();
}
}
}
private static float GetComboDamage(Obj_AI_Hero t)
{
var fComboDamage = 0f;
if (E.IsReady())
fComboDamage += (float) ObjectManager.Player.GetSpellDamage(t, SpellSlot.E);
if (ObjectManager.Player.GetSpellSlot("summonerdot") != SpellSlot.Unknown &&
ObjectManager.Player.Spellbook.CanUseSpell(ObjectManager.Player.GetSpellSlot("summonerdot")) ==
SpellState.Ready && ObjectManager.Player.Distance(t) < 550)
fComboDamage += (float) ObjectManager.Player.GetSummonerSpellDamage(t, Damage.SummonerSpell.Ignite);
if (Items.CanUseItem(3144) && ObjectManager.Player.Distance(t) < 550)
fComboDamage += (float) ObjectManager.Player.GetItemDamage(t, Damage.DamageItems.Bilgewater);
if (Items.CanUseItem(3153) && ObjectManager.Player.Distance(t) < 550)
fComboDamage += (float) ObjectManager.Player.GetItemDamage(t, Damage.DamageItems.Botrk);
return fComboDamage;
}
public override bool ComboMenu(Menu config)
{
config.AddItem(new MenuItem("UseWC" + Id, "Use W").SetValue(true));
config.AddItem(new MenuItem("UseEC" + Id, "Use E max Stacks").SetValue(true));
return true;
}
public override bool HarassMenu(Menu config)
{
config.AddItem(new MenuItem("UseWH" + Id, "Use W").SetValue(false));
config.AddItem(new MenuItem("UseEH" + Id, "Use E at max Stacks").SetValue(false));
return true;
}
public override bool DrawingMenu(Menu config)
{
config.AddItem(
new MenuItem("DrawW" + Id, "W range").SetValue(new Circle(true, Color.FromArgb(100, 255, 0, 255))));
var dmgAfterComboItem = new MenuItem("DamageAfterCombo", "Damage After Combo").SetValue(true);
Config.AddItem(dmgAfterComboItem);
return true;
}
public override bool MiscMenu(Menu config)
{
config.AddItem(new MenuItem("UseEM" + Id, "Use E KS").SetValue(true));
return true;
}
public override bool ExtrasMenu(Menu config)
{
return true;
}
public override bool LaneClearMenu(Menu config)
{
config.AddItem(
new MenuItem("E.Mobs" + Id, "Kill mobs with E").SetValue(
new StringList(new[] {"All Mobs", "Baron + Dragon", "Siege Minion", "None"})));
return true;
}
}
}