if myHero.charName ~= "Yasuo" then return end function Print(message) print("GosuMechanics:Yasuo : ".. message.."") end require 'VPrediction' ---------------------------------------------------------------------------------------------------------------------- -----------------------------------================================-------------------------------------------------- Champions = { ["Aatrox"] = {charName = "Aatrox", skillshots = { ["AatroxE"] = {spellKey = _E, name = "Blade of Torment", spellName = "AatroxE", spellDelay = 250, projectileName = "AatroxBladeofTorment_mis.troy", projectileSpeed = 1200, range = 1075, radius = 100, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["AatroxW"] = {spellKey = _W, spellName = "AatroxW", checkName = true, name = "AatroxW", isAutoBuff = true, range = 125, isSelfCast = true, noAnimation = true}, ["AatroxQ"] = {name = "AatroxQ", spellName = "AatroxQ", spellDelay = 250, projectileName = "AatroxQ.troy", projectileSpeed = 450, range = 650, radius = 145, type = "CIRCULAR", fuckedUp = false, blockable = true, danger = 1}, ["AatroxR"] = { spellKey = _R, isSelfCast = true, isAutoBuff = true, spellName = "AatroxR", name = "AatroxR", range = 125}, }}, ["Ahri"] = {charName = "Ahri", skillshots = { ["AhriOrbofDeception"] = {spellKey = _Q, name = "Orb of Deception", spellName = "AhriOrbofDeception", spellDelay = 250, projectileName = "Ahri_Orb_mis.troy", projectileSpeed = 1750, range = 800, radius = 100, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Orb of Deception Back"] = {name = "Orb of Deception Back", spellName = "AhriOrbofDeception!", spellDelay = 750, projectileName = "Ahri_Orb_mis_02.troy", projectileSpeed = 915, range = 800, radius = 100, type = "LINE"}, ["AhriSeduce"] = {spellKey = _E, isTrueRange = true, isCollision = true, name = "Charm", spellName = "AhriSeduce", spellDelay = 250, projectileName = "Ahri_Charm_mis.troy", projectileSpeed = 1600, range = 1075, radius = 60, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["AhriFoxFire"] = { spellKey = _W, isSelfCast = true, spellName = "AhriFoxFire", name = "AhriFoxFire", range = 750, projectileSpeed = 1400}, }}, ["Alistar"] = {charName = "Alistar", skillshots = { --unfinished ["Headbutt"] = {spellKey = _W, isTargeted = true, name = "Headbutt", spellName = "Headbutt", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 650, type = "LINE"}, ["Pulverize"] = {spellKey = _Q, isSelfCast = true, name = "Pulverize", spellName = "Pulverize", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 250, type = "CIRCULAR"}, }}, ["Amumu"] = {charName = "Amumu", skillshots = { ["BandageToss"] = {spellKey = _Q, isCollision = true, name = "Bandage Toss", spellName = "BandageToss", spellDelay = 250, projectileName = "Bandage_beam.troy", projectileSpeed = 2000, range = 1100, radius = 80, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Tantrum"] = {spellKey = _E, isSelfCast = true, name = "Tantrum", spellName = "Tantrum", spellDelay = 250, range = 200, type = "CIRCULAR"}, ["AuraofDespair"] = { spellKey = _W, isSelfCast = true, heroHasNoBuff = "AuraofDespair", spellName = "AuraofDespair", name = "AuraofDespair", range = 300, }, }}, ["Anivia"] = {charName = "Anivia", skillshots = { ["FlashFrostSpell"] = {spellKey = _Q, name = "Flash Frost", spellName = "FlashFrostSpell", spellDelay = 250, projectileName = "cryo_FlashFrost_mis.troy", projectileSpeed = 850, range = 1100, radius = 110, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Frostbite"] = {spellKey = _E, isTargeted = true, targetHasBuff = "chilled", name = "Frostbite", spellName = "Frostbite", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 700, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Glacial Storm"] = {spellKey = _R, name = "Glacial Storm", spellName = "GlacialStorm", spellDelay = 250, projectileName = "Ahri_Orb_mis.troy", range = 615, radius = 400, type = "CIRCULAR"}, }}, ["Akali"] = {charName = "Akali", skillshots = { --unfinished ["AkaliQ"] = {spellKey = _Q, isTargeted = true, name = "AkaliQ", spellName = "AkaliQ", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 600, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Crescent Slash"] = {spellKey = _E, isSelfCast = true, name = "Crescent Slash", spellName = "CrescentSlash", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 325, type = "CIRCULAR"}, ["Shadow Dance"] = {spellKey = _R, isTargeted = true, name = "Shadow Dance", spellName = "Shadow Dance", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 800, type = "LINE"}, }}, ["Ashe"] = {charName = "Ashe", skillshots = { ["EnchantedCrystalArrow"] = { name = "Enchanted Arrow", spellName = "EnchantedCrystalArrow", spellDelay = 250, projectileName = "EnchantedCrystalArrow_mis.troy", projectileSpeed = 1600, range = 25000, radius = 130, type = "LINE", fuckedup = false, blockable = true, danger = 1}, ["Volley"] = {spellKey = _W, isTrueRange = true, name = "Volley", spellName = "Volley", spellDelay = 250, range = 1200, radius = 200, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["FrostShot"] = { spellKey = _Q, isSelfCast = true, isAutoBuff = true, heroHasNoBuff = "FrostShot", noAnimation = true, spellName = "FrostShot", name = "FrostShot", range = 600, projectileName = "IceArrow_mis.troy",}, }}, ["Annie"] = {charName = "Annie", skillshots = { --unfinished ["Disintegrate"] = {spellKey = _Q, isTargeted = true, name = "Disintegrate", spellName = "Disintegrate", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 625, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["MoltenShield"] = { spellKey = _E, isSelfCast = true, spellName = "MoltenShield", name = "MoltenShield", range = math.huge, }, ["Incinerate"] = {spellKey = _W, isTrueRange = true, name = "Incinerate", spellName = "Incinerate", spellDelay = 500, projectileName = "Thresh_Q_whip_beam.troy", range = 625, radius = 200, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["InfernalGuardian"] = { spellKey = _R, type = "CIRCULAR", checkName = true, spellName = "InfernalGuardian", name = "InfernalGuardian", range = 600, radius = 290}, }}, ["Blitzcrank"] = {charName = "Blitzcrank", skillshots = { ["RocketGrabMissile"] = {spellKey = _Q, isCollision = true, isTrueRange = true, name = "Rocket Grab", spellName = "RocketGrabMissile", spellDelay = 250, projectileName = "FistGrab_mis.troy", projectileSpeed = 1800, range = 1050, radius = 70, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Power Fist"] = {spellKey = _E, isSelfCast = true, targetHasBuff = "rocketgrab2", name = "Power Fist", spellName = "PowerFist", spellDelay = 250, range = math.huge,}, ["Static Field"] = {spellKey = _R, isSelfCast = true, name = "Static Field", spellName = "StaticField", spellDelay = 250, range = 550, type = "CIRCULAR"}, }}, ["Brand"] = {charName = "Brand", skillshots = { ["BrandBlaze"] = {spellKey = _Q, isCollision = true, name = "BrandBlaze", spellName = "BrandBlaze", spellDelay = 250, projectileName = "BrandBlaze_mis.troy", projectileSpeed = 1600, range = 900, radius = 80, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Pillar of Flame"] = {spellKey = _W, name = "Pillar of Flame", spellName = "BrandFissure", spellDelay = 875, projectileName = "BrandPOF_tar_green.troy", range = 900, radius = 240, type = "CIRCULAR"}, ["BrandWildfire"] = {name = "BrandWildfire", spellName = "BrandWildfire", castDelay = 250, projectileName = "BrandWildfire_mis.troy", projectileSpeed = 1000, range = 1100, radius = 250, type = "circular", fuckedUp = false, blockable = true, danger = 1}, }}, ["Caitlyn"] = {charName = "Caitlyn", skillshots = { ["CaitlynPiltoverPeacemaker"] = {spellKey = _Q, name = "Piltover Peacemaker", spellName = "CaitlynPiltoverPeacemaker", spellDelay = 625, projectileName = "caitlyn_Q_mis.troy", projectileSpeed = 2200, range = 1300, radius = 90, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Caitlyn Entrapment"] = {name = "Caitlyn Entrapment", spellName = "CaitlynEntrapment", spellDelay = 150, projectileName = "caitlyn_entrapment_mis.troy", projectileSpeed = 2000, range = 950, radius = 80, type = "LINE"}, ["CaitlynHeadshotMissile"] = {name = "Ace in the Hole", spellName = "CaitlynHeadshotMissile", range = 3000, fuckedup = false, blockable = true, danger = 1, projectileName = "caitlyn_ult_mis.troy"}, }}, ["Cassiopeia"] = {charName = "Cassiopeia", skillshots = { ["Noxious Blast"] = {spellKey = _Q, name = "Noxious Blast", spellName = "Noxious Blast", spellDelay = 600, range = 850, radius = 75, type = "CIRCULAR"}, ["CassiopeiaTwinFang"] = {spellKey = _E, isTargeted = true, targetHasBuff = "poison", name = "Twin Fang", spellName = "CassiopeiaTwinFang", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", projectileSpeed = 1800, range = 700, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["Chogath"] = {charName = "Chogath", skillshots = { ["Rupture"] = {spellKey = _Q, name = "Rupture", spellName = "Rupture", spellDelay = 875, projectileName = "rupture_cas_01_red_team.troy", range = 950, radius = 125, type = "CIRCULAR"}, ["Feast"] = { spellKey = _R, isTargeted = true, isExecute = true, spellName = "Feast", name = "Feast", range = 150, }, --["Rupture"] = { spellKey = _Q, castType = 0, spellName = "Rupture", name = "Rupture", range = 950, projectileName = "AnnieBasicAttack_mis.troy",}, --["VorpalSpikes"] = { spellKey = _E, castType = 0, spellName = "VorpalSpikes", name = "VorpalSpikes", range = 40, projectileName = "TristanaBasicAttack_mis.troy", radius = 170,}, ["FeralScream"] = { spellKey = _W, type = "LINE", spellName = "FeralScream", name = "FeralScream", range = 700, radius = 200 }, }}, ["Corki"] = {charName = "Corki", skillshots = { ["PhosphorusBomb"] = {spellKey = _Q, name = "Phosphorus Bomb", spellName = "PhosphorusBomb", spellDelay = 750, spellAnimationDelay = 250, projectileName = "LayWaste_point.troy", range = 825, radius = 250, type = "CIRCULAR", fuckedUp = false, blockable = true, danger = 1}, ["GGun"] = { spellKey = _E, type = "LINE", spellName = "GGun", name = "GGun", range = 600, radius = 200, noAnimation = true,}, ["Missile Barrage"] = {spellKey = _R, isCollision = true, heroHasBuff = "corkimissilebarragenc", isTrueRange = true, name = "Missile Barrage", spellName = "MissileBarrage", spellDelay = 250, projectileName = "corki_MissleBarrage_mis.troy", projectileSpeed = 2000, range = 1300, radius = 40, type = "LINE"}, ["MissileBarrageBig"] = {spellKey = _R, isCollision = true, name = "Missile Barrage big", heroHasBuff = "mbcheck2", spellName = "MissileBarrageBig", spellDelay = 250, projectileName = "Corki_MissleBarrage_DD_mis.troy", projectileSpeed = 2000, range = 1600, radius = 60, type = "LINE", fuckedUp = false, blockable = true, danger = 1} }}, ["Darius"] = {charName = "Darius", skillshots = { --unfinished ["Noxian Guillotine"] = {spellKey = _R, isTargeted = true, isExecute = true, name = "Noxian Guillotine", spellName = "NoxianGuillotine", spellDelay = 250, range = 460, type = "LINE"}, ["Crippling Strike"] = {spellKey = _W, isSelfCast = true, isAutoReset = true, name = "Crippling Strike", spellName = "Crippling Strike", spellDelay = 250, range = 125, type = "CIRCULAR"}, ["DariusAxeGrabCone"] = {spellKey = _E, isTrueRange = true, name = "Apprehend", spellName = "DariusAxeGrabCone", spellDelay = 320, range = 570, radius = 200, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["DariusCleave"] = {spellKey = _Q, isSelfCast = true, name = "Decimate", spellName = "DariusCleave", spellDelay = 230, range = 425, type = "CIRCULAR"}, }}, ["Diana"] = {charName = "Diana", skillshots = { --["Diana Arc"] = {spellKey = _Q, name = "DianaArc", spellName = "DianaArc", spellDelay = 250, projectileName = "Diana_Q_trail.troy", projectileSpeed = 1600, range = 830, radius = 100, type = "CIRCULAR"}, ["DianaArc"] = {spellKey = _Q, name = "DianaArc", spellName = "DianaArc", spellDelay = 250, projectileName = "Diana_Q_trail.troy", range = 830, radius = 200, type = "CIRCULAR", fuckedUp = false, blockable = true, danger = 1}, ["Pale Cascade"] = {spellKey = _W, isSelfCast = true, isShield = true, name = "Pale Cascade", spellName = "PaleCascade", spellDelay = 230, range = 200, type = "CIRCULAR", noAnimation = true, damage = function () return 25 + myHero.ap * .3 + 15 * myHero:GetSpellData(_W).level end}, ["Lunar Rush"] = {spellKey = _R, isTargeted = true, name = "Lunar Rush", spellName = "LunarRush", spellDelay = 250, range = 825, type = "LINE"}, }}, ["Draven"] = {charName = "Draven", skillshots = { ["DravenFury"] = { spellKey = _W, isSelfCast = true, isAutoBuff = true, noAnimation = true, spellName = "DravenFury", name = "DravenFury", range = 550, }, ["DravenSpinning"] = { spellKey = _Q, isSelfCast = true, isAutoBuff = true, noAnimation = true, spellName = "DravenSpinning", name = "DravenSpinning", range = 550, }, ["DravenDoubleShot"] = {spellKey = _E, name = "Stand Aside", spellName = "DravenDoubleShot", spellDelay = 250, projectileName = "Draven_E_mis.troy", projectileSpeed = 1400, range = 1100, radius = 130, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["DravenRCast"] = {spellKey = _R, isExecute = true, name = "DravenR", spellName = "DravenRCast", spellDelay = 500, projectileName = "Draven_R_mis!.troy", projectileSpeed = 2000, range = 25000, radius = 160, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["Elise"] = {charName = "Elise", skillshots = { ["EliseHumanE"] = {spellKey = _E, isCollision = true, name = "Cocoon", checkName = true, spellName = "EliseHumanE", spellDelay = 250, projectileName = "Elise_human_E_mis.troy", projectileSpeed = 1450, range = 1100, radius = 70, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["EliseHumanQ"] = {spellKey = _Q, isTargeted = true, checkName = true, name = "Neurotoxin", spellName = "EliseHumanQ", spellDelay = 250, range = 625, type = "LINE", fuckedUp = false, blockable = true, danger = 1, fuckedUp = false, blockable = true, danger = 1}, ["Venomous Bite"] = {spellKey = _Q, isTargeted = true, checkName = true, name = "Venomous Bite", spellName = "EliseSpiderQCast", spellDelay = 250, range = 475, type = "LINE"}, ["Skittering Frenzy"] = {spellKey = _W, isSelfCast = true, checkName = true, name = "Skittering Frenzy", spellName = "EliseSpiderW", spellDelay = 250, range = 300, type = "CIRCULAR"}, ["EliseHumanW"] = {spellKey = _W, isCollision = true, name = "Volatile Spiderling", checkName = true, spellName = "EliseHumanW", spellDelay = 250, projectileName = "Elise_human_E_mis.troy", projectileSpeed = 1450, range = 950, radius = 100, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["Ezreal"] = {charName = "Ezreal", skillshots = { ["EzrealMysticShot"] = {spellKey = _Q, isCollision = true, name = "Mystic Shot", spellName = "EzrealMysticShot", spellDelay = 250, projectileName = "Ezreal_mysticshot_mis.troy", projectileSpeed = 2000, range = 1100, radius = 80, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["EzrealEssenceFlux"] = {spellKey = _W, name = "Essence Flux", spellName = "EzrealEssenceFlux", spellDelay = 250, projectileName = "Ezreal_essenceflux_mis.troy", projectileSpeed = 1500, range = 900, radius = 80, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["EzrealMysticShotPulse"] = {name = "Mystic ShotPulse(E)", spellName = "EzrealMysticShotPulse", spellDelay = 250, projectileName = "Ezreal_mysticshot_mis.troy", projectileSpeed = 2000, range = 1200, radius = 80, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["EzrealTrueshotBarrage"] = {spellKey = _R, isExecute = true, name = "Trueshot Barrage", spellName = "EzrealTrueshotBarrage", spellDelay = 1000, projectileName = "Ezreal_TrueShot_mis.troy", projectileSpeed = 2000, range = 20000, radius = 160, type = "LINE", fuckedup = false, blockable = true, danger = 1}, }}, ["Evelynn"] = {charName = "Evelynn", skillshots = { --unfinished ["Ravage"] = {spellKey = _E, isTargeted = true, name = "Ravage", spellName = "Ravage", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 225, type = "LINE"}, ["Dark Frenzy"] = {spellKey = _W, isSelfCast = true, name = "Dark Frenzy", spellName = "DarkFrenzy", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 125, type = "LINE"}, ["Hate Spike"] = {spellKey = _Q, isSelfCast = true, name = "Hate Spike", spellName = "HateSpike", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 500, type = "LINE"}, }}, ["Heimerdinger"] = {charName = "Heimerdinger", skillshots = { ["HextechMicroRockets"] = {spellKey = _W, isCollision = true, name = "Hextech Micro-Rockets", spellName = "HextechMicroRockets", spellDelay = 250, projectileName = "Ezreal_mysticshot_mis.troy", projectileSpeed = 1200, range = 1100, radius = 80, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["CH-2ElectronStormGrenade"] = {spellKey = _E, name = "CH-2 Electron Storm Grenade", spellName = "CH-2ElectronStormGrenade", spellDelay = 250, projectileName = "Ezreal_essenceflux_mis.troy", projectileSpeed = 1750, range = 925, radius = 80, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["FiddleSticks"] = {charName = "FiddleSticks", skillshots = { ["DarkWind"] = {spellKey = _E, isTargeted = true, name = "Dark Wind", spellName = "DarkWind", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 750, projectileSpeed = 1500, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["Fiora"] = {charName = "Fiora", skillshots = { ["FioraQ"] = { spellKey = _Q, isTargeted = true, spellName = "FioraQ", name = "FioraQ", range = 600,}, ["FioraFlurry"] = { spellKey = _E, isSelfCast = true, isAutoBuff = true, noAnimation = true, spellName = "FioraFlurry", name = "FioraFlurry", range = 500, projectileSpeed = 0, projectileName = "AnnieBasicAttack_mis.troy",}, ["FioraDance"] = { spellKey = _R, isTargeted = true, isExecute = true, spellName = "FioraDance", name = "FioraDance", range = 400, }, --["FioraRiposte"] = { spellKey = _W, castType = 0, spellName = "FioraRiposte", name = "FioraRiposte", range = 20, projectileSpeed = 0, projectileName = "AnnieBasicAttack_mis.troy",}, }}, ["Fizz"] = {charName = "Fizz", skillshots = { ["Leap Strike"] = {spellKey = _Q, isTargeted = true, name = "Leap Strike", spellName = "LeapStrike", spellDelay = 250, range = 700,}, ["Seastone Trident"] = {spellKey = _W, isSelfCast = true, isAutoBuff = true, noAnimation = true, name = "Seastone Trident", spellName = "SeastoneTrident", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 600, type = "CIRCULAR"}, --["Fizz Ultimate"] = {name = "Fizz ULT", spellName = "FizzMarinerDoom", spellDelay = 250, projectileName = "Fizz_UltimateMissile.troy", projectileSpeed = 1350, range = 1275, radius = 80, type = "LINE"}, ["FizzMarinerDoom"] = {name = "Fizz ULT", spellName = "FizzMarinerDoom", castDelay = 250, projectileName = "Fizz_UltimateMissile.troy", projectileSpeed = 1350, range = 1275, radius = 80, type = "line", fuckedUp = false, blockable = true, danger = 1}, }}, ["Galio"] = {charName = "Galio", skillshots = { ["GalioResoluteSmite"] = { spellKey = _Q, name = "GalioResoluteSmite", spellName = "GalioResoluteSmite", spellDelay = 250, projectileName = "galio_concussiveBlast_mis.troy", projectileSpeed = 850, range = 2000, radius = 200, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["GalioRighteousGust"] = { spellKey = _E, type = "LINE", spellName = "GalioRighteousGust", name = "GalioRighteousGust", range = 1180, projectileSpeed = 1200, radius = 120,}, ["GalioBulwark"] = { spellKey = _W, isTargeted = true, isShield = true, spellName = "GalioBulwark", name = "GalioBulwark", range = 800, }, ["GalioIdolOfDurand"] = { spellKey = _R, isSelfCast = true, channelDuration = 2000, spellName = "GalioIdolOfDurand", name = "GalioIdolOfDurand", range = 600, }, }}, ["Gangplank"] = {charName = "Gangplank", skillshots = { ["RaiseMorale"] = { spellKey = _E, isSelfCast = true, isAutoBuff = true, spellName = "RaiseMorale", name = "RaiseMorale", range = 125, projectileName = "pirate_raiseMorale_mis.troy",}, --["CannonBarrage"] = { spellKey = _R, castType = 0, spellName = "CannonBarrage", name = "CannonBarrage", range = 20000, projectileName = "missing_instant.troy",}, ["Parley"] = { spellKey = _Q, isTargeted = true, spellName = "Parley", name = "Parley", range = 625, projectileName = "pirate_parley_mis.troy",}, --["RemoveScurvy"] = { spellKey = _W, castType = 0, spellName = "RemoveScurvy", name = "RemoveScurvy", range = 20,}, }}, ["Gragas"] = {charName = "Gragas", skillshots = { ["GragasBarrelRoll"] = {spellKey = _Q, name = "Barrel Roll", spellName = "GragasBarrelRoll", spellDelay = 250, projectileName = "gragas_barrelroll_mis.troy", projectileSpeed = 1000, range = 950, radius = 100, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Barrel Roll Missile"] = {name = "Barrel Roll Missile", spellName = "GragasBarrelRollMissile", spellDelay = 0, projectileName = "gragas_barrelroll_mis.troy", projectileSpeed = 1000, range = 1115, radius = 180, type = "CIRCULAR"}, }}, --edit ["Graves"] = {charName = "Graves", skillshots = { ["GravesClusterShot"] = {spellKey = _Q, name = "Buckshot", spellName = "GravesClusterShot", spellDelay = 250, projectileName = "Graves_ClusterShot_mis.troy", projectileSpeed = 1750, range = 900, radius = 60, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["SmokeScreen"] = {spellKey = _W, name = "Smoke Screen", spellName = "SmokeScreen", spellDelay = 250, projectileName = "Graves_SmokeGrenade_mis.troy", projectileSpeed = 1500, range = 950, radius = 300, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["GravesChargeShot"] = {spellKey = _R, isExecute = true, name = "Collateral Damage", spellName = "GravesChargeShot", spellDelay = 250, projectileName = "Graves_ChargedShot_mis.troy", projectileSpeed = 1500, range = 1000, radius = 100, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["Irelia"] = {charName = "Irelia", skillshots = { ["IreliaGatotsu"] = { spellKey = _Q, isTargeted = true, spellName = "IreliaGatotsu", name = "IreliaGatotsu", range = 650,}, ["IreliaEquilibriumStrike"] = { spellKey = _E, isTargeted = true, spellName = "IreliaEquilibriumStrike", name = "IreliaEquilibriumStrike", range = 425, castReq = function (target) return myHero.health < target.health end}, ["IreliaTranscendentBlades"] = { spellKey = _R, type = "LINE", spellName = "IreliaTranscendentBlades", name = "IreliaTranscendentBlades", range = 1200, projectileSpeed = 1600, projectileName = "Irelia_ult_dagger_mis.troy", radius = 120, fuckedUp = false, blockable = true, danger = 1}, ["IreliaHitenStyle"] = { spellKey = _W, isSelfCast = true, noAnimation = true, spellName = "IreliaHitenStyle", name = "IreliaHitenStyle", range = math.huge,}, }}, ["Janna"] = {charName = "Janna", skillshots = { ["HowlingGale"] = { spellKey = _Q, type = "LINE", spellName = "HowlingGale", name = "HowlingGale", range = 1100, projectileName = "HowlingGale_mis.troy", radius = 150, fuckedUp = false, blockable = true, danger = 1}, ["Zephyr"] = {spellKey = _W, isTargeted = true, name = "Zephyr", spellName = "Zephyr", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 600, projectileSpeed = 1500, type = "LINE"}, ["Eye Of The Storm"] = {spellKey = _E, isTargeted = true, isShield = true, name = "Eye Of The Storm", spellName = "EyeOfTheStorm", spellDelay = 250, range = 800, type = "CIRCULAR", damage = function () return 40 + 40 * myHero:GetSpellData(_E).level + myHero.ap * .7 end }, }}, ["Jax"] = {charName = "Jax", skillshots = { --unfinished ["Leap Strike"] = {spellKey = _Q, isTargeted = true, name = "Leap Strike", spellName = "LeapStrike", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 700, type = "CIRCULAR"}, ["Empower"] = {spellKey = _W, isSelfCast = true, isAutoReset = true, name = "Empower", spellName = "Empower", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 125, type = "CIRCULAR"}, }}, ["Jayce"] = {charName = "Jayce", skillshots = { ["JayceToTheSkies"] = {spellKey = _Q, isTargeted = true, checkName = true, name = "JayceQ", spellName = "JayceToTheSkies", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 600, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Thundering Blow"] = {spellKey = _E, isTargeted = true, checkName = true, name = "Thundering Blow", spellName = "JayceThunderingBlow", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 240, type = "LINE"}, ["Hyper Charge"] = {spellKey = _W, isSelfCast = true, checkName = true, isAutoReset = true, name = "Hyper Charge", spellName = "jaycehypercharge", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 500, type = "CIRCULAR"}, ["JayceStaticField"] = {spellKey = _W, isSelfCast = true, checkName = true, name = "Lightning Field", spellName = "JayceStaticField", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 285, type = "CIRCULAR"}, ["jayceshockblast"] = {spellKey = _Q, isCollision = true, checkName = true, name = "JayceShockBlast", spellName = "jayceshockblast", spellDelay = 250, projectileName = "JayceOrbLightning.troy", projectileSpeed = 1450, range = 1050, radius = 70, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["JayceShockBlastCharged"] = {name = "JayceShockBlastCharged", spellName = "JayceShockBlast", spellDelay = 250, projectileName = "JayceOrbLightningCharged.troy", projectileSpeed = 2350, range = 1600, radius = 70, type = "LINE"}, }}, ["Jinx"] = {charName = "Jinx", skillshots = { ["JinxWMissile"] = {spellKey = _W, isCollision = true, name = "Zap", spellName = "JinxWMissile", spellDelay = 600, projectileName = "Jinx_W_mis.troy", projectileSpeed = 3300, range = 1450, radius = 70, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["JinxRWrapper"] = {name = "Super Mega Death Rocket", spellName = "JinxRWrapper", spellDelay = 600, projectileName = "Jinx_R_Mis.troy", projectileSpeed = 2200, range = 20000, radius = 120, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["Karthus"] = {charName = "Karthus", skillshots = { ["Lay Waste"] = {spellKey = _Q, name = "Lay Waste", spellName = "LayWaste", spellDelay = 750, spellAnimationDelay = 250, projectileName = "LayWaste_point.troy", range = 875, radius = 50, type = "CIRCULAR"}, }}, ["Karma"] = {charName = "Karma", skillshots = { --unfinished ["Focused Resolve"] = {spellKey = _W, isTargeted = true, name = "Focused Resolve", spellName = "FocusedResolve", spellDelay = 250, range = 650, projectileName = "swain_shadowGrasp_transform.troy", type = "LINE"}, ["Mantra"] = {spellKey = _R, isSelfCast = true, name = "Mantra", spellName = "Mantra", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 950, type = "CIRCULAR"}, ["KarmaQ"] = {spellKey = _Q, isCollision = true, name = "KarmaQ", spellName = "KarmaQ", spellDelay = 250, projectileName = "TEMP_KarmaQMis.troy", projectileSpeed = 1700, range = 950, radius = 90, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["KarmaSolKimShield"] = { spellKey = _E, isTargeted = true, isShield = true, spellName = "KarmaSolKimShield", name = "KarmaSolKimShield", range = 800, noAnimation = true, damage = function () return 40 + myHero.ap * .5 + 40 * myHero:GetSpellData(_E).level end}, }}, ["Kassadin"] = {charName = "Kassadin", skillshots = { --unfinished ["NullSphere"] = {spellKey = _Q, isTargeted = true, name = "Null Sphere", spellName = "NullSphere", spellDelay = 250, range = 650, projectileName = "swain_shadowGrasp_transform.troy", type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Nether Blade"] = {spellKey = _W, isSelfCast = true, isAutoReset = true, isAutoBuff = true, noAnimation = true, name = "Nether Blade", spellName = "NetherBlade", spellDelay = 250, range = 250, type = "CIRCULAR"}, ["Force Pulse"] = {spellKey = _E, isTrueRange = true, name = "Force Pulse", spellName = "ForcePulse", spellDelay = 250, range = 700, radius = 200, type = "LINE"}, }}, ["Katarina"] = {charName = "Katarina", skillshots = { ["KatarinaE"] = { spellKey = _E, isTargeted = true, spellName = "KatarinaE", name = "KatarinaE", range = 700, projectileSpeed = 0, projectileName = "AnnieBasicAttack_mis.troy",}, ["KatarinaW"] = { spellKey = _W, isSelfCast = true, spellName = "KatarinaW", name = "KatarinaW", range = 375, projectileSpeed = 1400, projectileName = "Disintegrate_mis.troy",}, ["KatarinaR"] = { spellKey = _R, isSelfCast = true, channelDuration = 2500, spellName = "KatarinaR", name = "KatarinaR", range = 550, projectileName = "katarina_deathLotus_mis.troy", fuckedup = false, blockable = true, danger = 1}, ["KatarinaQ"] = { spellKey = _Q, isTargeted = true, spellName = "KatarinaQ", name = "KatarinaQ", range = 675, projectileSpeed = 1100, projectileName = "katarina_bouncingBlades_mis.troy", fuckedUp = false, blockable = true, danger = 1}, }}, ["Kayle"] = {charName = "Kayle", skillshots = { --unfinished ["Reckoning"] = {spellKey = _Q, isTargeted = true, name = "Reckoning", spellName = "Reckoning", spellDelay = 250, range = 650, fuckedUp = false, blockable = true, danger = 1}, ["DivineBlessing"] = {spellKey = _W, isTargeted = true, isHeal = true, name = "Divine Blessing", spellName = "DivineBlessing", spellDelay = 250, range = 900, type = "LINE"}, ["Righteous Fury"] = {spellKey = _E, isSelfCast = true, noAnimation = true, name = "Righteous Fury", spellName = "RighteousFury", spellDelay = 250, range = 650}, ["JudicatorIntervention"] = { spellKey = _R, isTargeted = true, isShield = true, isUntargetable = true, spellName = "JudicatorIntervention", name = "JudicatorIntervention", range = 900,}, }}, ["Kennen"] = {charName = "Kennen", skillshots = { ["KennenShurikenHurlMissile1"] = {spellKey = _Q, isCollision = true, name = "Thundering Shuriken", spellName = "KennenShurikenHurlMissile1", spellDelay = 180, projectileName = "kennen_ts_mis.troy", projectileSpeed = 1700, range = 1050, radius = 50, type = "LINE", fuckedUp = false, blockable = true, danger = 1} }}, ["Khazix"] = {charName = "Khazix", skillshots = { ["KhazixQ"] = {spellKey = _Q, isTargeted = true, name = "KhazixQ", spellName = "KhazixQ", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 375, type = "LINE"}, ["KhazixW"] = {spellKey = _W, isCollision = true, name = "KhazixW", spellName = "KhazixW", spellDelay = 250, projectileName = "Khazix_W_mis_enhanced.troy", projectileSpeed = 1700, range = 1000, radius = 70, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["khazixwlong"] = {name = "khazixwlong", spellName = "khazixwlong", spellDelay = 250, projectileName = "Khazix_W_mis_enhanced.troy", projectileSpeed = 1700, range = 1025, radius = 70, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["KogMaw"] = {charName = "KogMaw", skillshots = { ["CausticSpittle"] = {spellKey = _Q, isTargeted = true, name = "Caustic Spittle", spellName = "CausticSpittle", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 625, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Bio-Arcane Barrage"] = {spellKey = _W, isSelfCast = true, isAutoBuff = true, name = "Bio-Arcane Barrage", spellName = "BioArcaneBarrage", spellDelay = 250, range = 600, type = "CIRCULAR"}, ["KogMawVoidOozeMissile"] = {spellKey = _E, name = "Void Ooze", spellName = "KogMawVoidOozeMissile", spellDelay = 250, projectileName = "KogMawVoidOoze_mis.troy", projectileSpeed = 1450, range = 1200, radius = 100, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Living Artillery"] = {spellKey = _R, name = "Living Artillery", spellName = "KogMawLivingArtillery", spellDelay = 850, projectileName = "KogMawLivingArtillery_mis.troy", range = 2200, radius = 100, type = "CIRCULAR"} }}, ["Leblanc"] = {charName = "Leblanc", skillshots = { --unfinished ["SigilQ"] = {spellKey = _Q, isTargeted = true, name = "Sigil of Silence", spellName = "SigilQ", spellDelay = 250, projectileName = "non.troy", range = 700, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["LeblancChaosOrbM"] = {spellKey = _R, isTargeted = true, checkName = true, name = "Sigil of Silence R", spellName = "LeblancChaosOrbM", spellDelay = 250, projectileName = "non.troy", range = 700, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["LeblancSoulShackle"] = {spellKey = _E, isCollision = true, name = "Ethereal Chains", spellName = "LeblancSoulShackle", spellDelay = 250, projectileName = "leBlanc_shackle_mis.troy", projectileSpeed = 1600, range = 960, radius = 70, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["LeblancSoulShackleM"] = {name = "Ethereal Chains R", spellName = "LeblancSoulShackleM", spellDelay = 250, projectileName = "leBlanc_shackle_mis_ult.troy", projectileSpeed = 1600, range = 960, radius = 70, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["LeeSin"] = {charName = "LeeSin", skillshots = { ["BlindMonkQOne"] = {spellKey = _Q, isCollision = true, checkName = true, name = "Sonic Wave", spellName = "BlindMonkQOne", spellDelay = 250, projectileName = "blindMonk_Q_mis_01.troy", projectileSpeed = 1800, range = 975, radius = 70, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["blindmonkqtwo"] = {spellKey = _Q, checkName = true, isSelfCast = true, name = "Sonic Wave2", spellName = "blindmonkqtwo", spellDelay = 250, range = 975, radius = 70, type = "LINE"}, ["BlindMonkEOne"] = { spellKey = _E, isSelfCast = true, spellName = "BlindMonkEOne", name = "BlindMonkEOne", range = 350, }, ["BlindMonkRKick"] = { spellKey = _R, isTargeted = true, isExecute = true, spellName = "BlindMonkRKick", name = "BlindMonkRKick", range = 375, projectileSpeed = 1500,}, }}, ["Leona"] = {charName = "Leona", skillshots = { ["LeonaShieldOfDaybreakAttack"] = {spellKey = _Q, isTargeted = true, isAutoReset = true, name = "Shield of Daybreak", spellName = "LeonaShieldOfDaybreakAttack", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 125, type = "CIRCULAR"}, ["LeonaSolarBarrier"] = { spellKey = _W, isSelfCast = true, spellName = "LeonaSolarBarrier", name = "LeonaSolarBarrier", range = 275, }, ["Zenith Blade"] = {spellKey = _E, name = "Zenith Blade", spellName = "LeonaZenithBlade", spellDelay = 250, projectileName = "Leona_ZenithBlade_mis.troy", projectileSpeed = 2000, range = 900, radius = 80, type = "LINE"}, ["Leona Solar Flare"] = {spellKey = _R, name = "Leona Solar Flare", spellName = "LeonaSolarFlare", spellDelay = 250, projectileName = "Leona_SolarFlare_cas.troy", projectileSpeed = 2000, range = 1200, radius = 300, type = "CIRCULAR"} }}, ["Lissandra"] = {charName = "Lissandra", skillshots = { ["LissandraW"] = { spellKey = _W, isSelfCast = true, isRoot = true, spellName = "LissandraW", name = "LissandraW", range = 450, }, ["LissandraR"] = { spellKey = _R, isTargeted = true, isStun = true, spellName = "LissandraR", name = "LissandraR", range = 550, }, --find projectile speed ["LissandraQ"] = { spellKey = _Q, type = "LINE", spellName = "LissandraQ", name = "LissandraQ", projectileName = "Lissandra_Q_Shards.troy", projectileSpeed = 1400, range = 725, radius = 75, fuckedUp = false, blockable = true, danger = 1}, --["LissandraE"] = { spellKey = _E, castType = 0, spellName = "LissandraE", name = "LissandraE", range = 25000, projectileSpeed = 850, projectileName = "Lissandra_E_Missile.troy", radius = 110,}, ["LissandraE"] = {name = "LissandraE", spellName = "LissandraE", castDelay = 250, projectileName = "Lissandra_E_Missle.troy", projectileSpeed = 850, range = 1500, radius = 140, fuckedUp = false, blockable = true, danger = 1}, }}, ["Lucian"] = {charName = "Lucian", skillshots = { ["LucianQ"] = {spellKey = _Q, name = "LucianQ", isTargeted = true, spellName = "LucianQ", spellDelay = 350, projectileName = "Lucian_Q_laser.troy", range = 570, radius = 65, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["LucianW"] = {spellKey = _W, name = "LucianW", spellName = "LucianW", spellDelay = 300, projectileName = "Lucian_W_mis.troy", projectileSpeed = 1600, range = 1000, radius = 80, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["Lulu"] = {charName = "Lulu", skillshots = { ["LuluQ"] = {spellKey = _Q, name = "LuluQ", spellName = "LuluQ", spellDelay = 250, projectileName = "Lulu_Q_Mis.troy", projectileSpeed = 1450, range = 1000, radius = 50, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["LuluW"] = { spellKey = _W, isTargeted = true, isStun = true, spellName = "LuluW", name = "LuluW", range = 650, }, ["LuluE"] = { spellKey = _E, isTargeted = true, isShield = true, spellName = "LuluE", name = "LuluE", range = 650, damage = function () return 40 + 40 * myHero:GetSpellData(_E).level + myHero.ap * .6 end,}, ["LuluR"] = { spellKey = _R, isTargeted = true, isShield = true, spellName = "LuluR", name = "LuluR", range = 900, damage = function () return 150 + 150 * myHero:GetSpellData(_W).level + myHero.ap * .5 end,}, }}, ["Lux"] = {charName = "Lux", skillshots = { ["LuxLightBinding"] = {spellKey = _Q, isCollision = true, name = "Light Binding", spellName = "LuxLightBinding", spellDelay = 250, projectileName = "LuxLightBinding_mis.troy", projectileSpeed = 1200, range = 1175, radius = 80, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["LuxLightStrikeKugel"] = {spellKey = _W, name = "LuxLightStrikeKugel", spellName = "LuxLightStrikeKugel", spellDelay = 250, projectileName = "LuxLightstrike_mis.troy", projectileSpeed = 1400, range = 1100, radius = 275, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["LuxMaliceCannon"] = {spellKey = _R, isExecute = true, name = "Lux Malice Cannon", spellName = "LuxMaliceCannon", spellDelay = 950, projectileName = "Enrageweapon_buf_02.troy", range = 3500, radius = 190, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, --["LuxPrismaticWave"] = { spellKey = _W, castType = 0, spellName = "LuxPrismaticWave", name = "LuxPrismaticWave", range = 10000, radius = 150,}, }}, ["MasterYi"] = {charName = "Master Yi", skillshots = { --unfinished ["Alpha Strike"] = {spellKey = _Q, isTargeted = true, isUntargetable = true, name = "Alpha Strike", spellName = "AlphaStrike", spellDelay = 250, range = 600,}, ["Wuju Style"] = {spellKey = _E, isSelfCast = true, isAutoBuff = true, noAnimation = true, name = "Wuju Style", spellName = "WujuStyle", }, ["Meditate"] = { spellKey = _W, isSelfCast = true, isAutoReset = true, spellName = "Meditate", name = "Meditate", range = 200, }, }}, ["Malzahar"] = {charName = "Malzahar", skillshots = { ["Null Zone"] = {spellKey = _W, name = "Null Zone", spellName = "NullZone", spellDelay = 600, range = 800, radius = 250, type = "CIRCULAR"}, ["Malefic Visions"] = {spellKey = _E, isTargeted = true, name = "Malefic Visions", spellName = "MaleficVisions", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 650, type = "LINE"}, ["Nether Grasp"] = {spellKey = _R, isTargeted = true, channelDuration = 2500, name = "Nether Grasp", spellName = "NetherGrasp", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 700, type = "LINE"}, }}, ["Malphite"] = {charName = "Malphite", skillshots = { ["SeismicShard"] = {spellKey = _Q, isTargeted = true, name = "Seismic Shard", spellName = "SeismicShard", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 625, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Ground Slam"] = {spellKey = _E, isSelfCast = true, name = "Ground Slam", spellName = "GroundSlam", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 200, type = "CIRCULAR"}, ["Brutal Strikes"] = {spellKey = _W, isSelfCast = true, noAnimation = true, isAutoBuff = true, name = "Brutal Strikes", spellName = "BrutalStrikes", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 200, type = "CIRCULAR"}, ["UFSlash"] = {name = "UFSlash", spellName = "UFSlash", spellDelay = 250, projectileName = "TEST", projectileSpeed = 1800, range = 1000, radius = 160, type = "LINE"}, }}, ["Maokai"] = {charName = "Maokai", skillshots = { ["MaokaiUnstableGrowth"] = { spellKey = _W, isTargeted = true, spellName = "MaokaiUnstableGrowth", name = "MaokaiUnstableGrowth", range = 650, }, ["MaokaiTrunkLine"] = { spellKey = _Q, type = "LINE", spellName = "MaokaiTrunkLine", name = "MaokaiTrunkLine", range = 600, projectileSpeed = 1200, radius = 110, fuckedUp = false, blockable = true, danger = 1}, ["MaokaiDrain3"] = { spellKey = _R, type = "CIRCULAR", spellName = "MaokaiDrain3", name = "MaokaiDrain3", range = 625, radius = 575,}, ["MaokaiSapling2"] = { spellKey = _E, type = "LINE", spellName = "MaokaiSapling2", name = "MaokaiSapling2", range = 1100, projectileSpeed = 1750, projectileName = "Maokai_sapling_mis.troy", radius = 175}, }}, ["Mordekaiser"] = {charName = "Mordekaiser", skillshots = { ["MordekaiserMaceOfSpades"] = { spellKey = _Q, isAutoReset = true, spellName = "MordekaiserMaceOfSpades", name = "MordekaiserMaceOfSpades", range = 125,}, ["MordekaiserCreepingDeathCast"] = { spellKey = _W, isTargeted = true, isShield = true, spellName = "MordekaiserCreepingDeathCast", name = "MordekaiserCreepingDeathCast", range = 750, projectileName = "mordekaiser_creepingDeath_mis.troy", radius = 200,}, ["MordekaiserChildrenOfTheGrave"] = { spellKey = _R, isTargeted = true, isExecute = true, spellName = "MordekaiserChildrenOfTheGrave", name = "MordekaiserChildrenOfTheGrave", range = 850,}, ["MordekaiserSyphonOfDestruction"] = { spellKey = _E, type = "LINE", spellName = "MordekaiserSyphonOfDestruction", name = "MordekaiserSyphonOfDestruction", range = 700, radius = 200}, }}, ["Morgana"] = {charName = "Morgana", skillshots = { ["DarkBindingMissile"] = {spellKey = _Q, isCollision = true, name = "Dark Binding", spellName = "DarkBindingMissile", spellDelay = 250, projectileName = "DarkBinding_mis.troy", projectileSpeed = 1200, range = 1300, radius = 80, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["TormentedSoil"] = { spellKey = _W, spellName = "TormentedSoil", name = "TormentedSoil", range = 900, radius = 175, type = "CIRCULAR"}, --["SoulShackles"] = { spellKey = _R, castType = 0, spellName = "SoulShackles", name = "SoulShackles", range = 625, projectileName = "AnnieBasicAttack_mis.troy",}, --["BlackShield"] = { spellKey = _E, castType = 0, spellName = "BlackShield", name = "BlackShield", range = 750, projectileName = "AnnieBasicAttack_mis.troy",}, }}, ["DrMundo"] = {charName = "DrMundo", skillshots = { ["InfectedCleaverMissile"] = {spellKey = _Q, isCollision = true, name = "Infected Cleaver", spellName = "InfectedCleaverMissile", spellDelay = 250, projectileName = "dr_mundo_infected_cleaver_mis.troy", projectileSpeed = 2000, range = 1000, radius = 75, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, --["BurningAgony"] = { spellKey = _W, isSelfCast = true, spellName = "BurningAgony", name = "BurningAgony", range = 325, projectileName = "AnnieBasicAttack_mis.troy",}, ["Sadism"] = { spellKey = _R, isSelfCast = true, isHeal = true, spellName = "Sadism", name = "Sadism", range = math.huge, projectileName = "dr_mundo_sadism_cas_02.troy",}, ["Masochism"] = { spellKey = _E, isSelfCast = true, isAutoBuff = true, spellName = "Masochism", name = "Masochism", range = 300, }, }}, ["Nami"] = {charName = "Nami", skillshots = { ["NamiQ"] = {spellKey = _Q, name = "NamiQ", spellName = "NamiQ", spellDelay = 850, projectileName = "Nami_Q_mis.troy", range = 875, radius = 100, type = "CIRCULAR", fuckedUp = false, blockable = true, danger = 1}, ["Ebb and Flow"] = {spellKey = _W, isTargeted = true, name = "Ebb and Flow", spellName = "EbbAndFlow", spellDelay = 250, range = 725,}, ["TidecallersBlessing"] = {spellKey = _E, isSelfCast = true, name = "TidecallersBlessing", spellName = "TidecallersBlessing", spellDelay = 250, range = 800, type = "CIRCULAR"}, }}, ["Nasus"] = {charName = "Nasus", skillshots = { --unfinished ["NasusW"] = {spellKey = _W, isTargeted = true, name = "Wither", spellName = "NasusW", spellDelay = 250, range = 600, type = "LINE"}, ["NasusE"] = {spellKey = _E, spellName = "NasusE", name = "NasusE", range = 650, radius = 400, type = "CIRCULAR" }, ["NasusQ"] = {spellKey = _Q, isSelfCast = true, isAutoReset = true, name = "Siphoning Strike", spellName = "NasusQ", spellDelay = 250, range = 125, type = "CIRCULAR"}, }}, ["Nautilus"] = {charName = "Nautilus", skillshots = { ["NautilusAnchorDrag"] = {spellKey = _Q, isCollision = true, name = "Dredge Line", spellName = "NautilusAnchorDrag", spellDelay = 250, projectileName = "Nautilus_Q_mis.troy", projectileSpeed = 2000, range = 1080, radius = 80, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["NautilusPiercingGaze"] = { spellKey = _W, isSelfCast = true, isShield = true, spellName = "NautilusPiercingGaze", name = "NautilusPiercingGaze", range = math.huge, }, ["NautilusSplashZone"] = { spellKey = _E, isSelfCast = true, spellName = "NautilusSplashZone", name = "NautilusSplashZone", range = 600, }, ["NautilusGrandLine"] = { spellKey = _R, isTargeted = true, spellName = "NautilusGrandLine", name = "NautilusGrandLine", range = 825, projectileSpeed = 1400, }, }}, ["Nidalee"] = {charName = "Nidalee", skillshots = { ["JavelinToss"] = {spellKey = _Q, isCollision = true, name = "Javelin Toss", spellName = "JavelinToss", spellDelay = 125, projectileName = "nidalee_javelinToss_mis.troy", projectileSpeed = 1300, range = 1500, radius = 60, type = "LINE", checkName = true, fuckedUp = false, blockable = true, danger = 1}, ["PrimalSurge"] = { spellKey = _E, isTargeted = true, isHeal = true, spellName = "PrimalSurge", name = "PrimalSurge", range = 600, checkName = true, }, ["Bushwhack"] = { spellKey = _W, type = "CIRCULAR", spellName = "Bushwhack", name = "Bushwhack", range = 900, radius = 70, checkName = true, }, ["Swipe"] = { spellKey = _E, type = "LINE", spellName = "Swipe", name = "Swipe", range = 400, radius = 200, checkName = true, }, ["Pounce"] = { spellKey = _W, isSelfCast = true, spellName = "Pounce", name = "Pounce", range = 375, checkName = true, }, ["Takedown"] = { spellKey = _Q, isSelfCast = true, isAutoReset = true, spellName = "Takedown", name = "Takedown", range = 500, checkName = true, }, --["AspectOfTheCougar"] = { spellKey = _R, castType = 0, spellName = "AspectOfTheCougar", name = "AspectOfTheCougar", range = 20, projectileName = "TeemoBasicAttack_mis.troy",}, }}, ["Nocturne"] = {charName = "Nocturne", skillshots = { ["NocturneDuskbringer"] = {spellKey = _Q, name = "NocturneDuskbringer", spellName = "NocturneDuskbringer", spellDelay = 250, projectileName = "NocturneDuskbringer_mis.troy", projectileSpeed = 1400, range = 1200, radius = 60, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Unspeakable Horror"] = {spellKey = _E, isTargeted = true, name = "UnspeakableHorror", spellName = "UnspeakableHorror", spellDelay = 250, range = 425, type = "LINE"}, }}, ["Olaf"] = {charName = "Olaf", skillshots = { ["OlafAxeThrow"] = {spellKey = _Q, name = "Undertow", spellName = "OlafAxeThrow", spellDelay = 250, projectileName = "olaf_axe_mis.troy", projectileSpeed = 1600, range = 1000, radius = 90, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Reckless Swing"] = {spellKey = _E, isTargeted = true, name = "Reckless Swing", spellName = "RecklessSwing", spellDelay = 250, range = 325, type = "LINE"}, ["Vicious Strikes"] = {spellKey = _W, isSelfCast = true, isAutoBuff = true, noAnimation = true, name = "Vicious Strikes", spellName = "ViciousStrikes", range = 200}, }}, ["Orianna"] = {charName = "Orianna", skillshots = { --["OrianaReturn"] = { spellKey = ExtraSpell5, castType = 1, spellName = "OrianaReturn", name = "OrianaReturn", range = 10000, projectileSpeed = 2250, projectileName = "Oriana_Ghost_mis_return.troy", radius = 200,}, --["OrianaRedact"] = { spellKey = ExtraSpell3, castType = 3, spellName = "OrianaRedact", name = "OrianaRedact", range = 1500, projectileSpeed = 2250, projectileName = "Oriana_Ghost_mis_protect.troy", radius = 80,}, --["OrianaIzuna"] = { spellKey = ExtraSpell1, castType = 3, spellName = "OrianaIzuna", name = "OrianaIzuna", range = 2000, projectileSpeed = 1350, projectileName = "Oriana_Ghost_mis.troy", radius = 80,}, --["OrianaDetonateCommand"] = { spellKey = _R, castType = 0, spellName = "OrianaDetonateCommand", name = "OrianaDetonateCommand", range = 410, projectileSpeed = 1200, radius = 80,}, ["OrianaIzunaCommand"] = { spellKey = _Q, type = "LINE", spellName = "OrianaIzunaCommand", name = "OrianaIzunaCommand", range = 825, projectileSpeed = 1200, radius = 80,}, ["OrianaRedactCommand"] = { spellKey = _E, isTargeted = true, isShield = true, spellName = "OrianaRedactCommand", name = "OrianaRedactCommand", range = 1120, projectileSpeed = 1200, radius = 80,}, ["OrianaDissonanceCommand"] = { spellKey = _W, isSelfCast = true, spellName = "OrianaDissonanceCommand", name = "OrianaDissonanceCommand", range = math.huge, radius = 80,}, }}, ["Pantheon"] = {charName = "Pantheon", skillshots = { --unfinished ["SpearShot"] = {spellKey = _Q, isTargeted = true, name = "Spear Shot", spellName = "SpearShot", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 600, type = "CIRCULAR", fuckedUp = false, blockable = true, danger = 1}, ["Aegis of Zeonia"] = {spellKey = _W, isTargeted = true, name = "Aegis of Zeonia", spellName = "PantheonW", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 600, type = "LINE"}, ["Pantheon_Heartseeker"] = {spellKey = _E, channelDuration = 750, name = "Heartseeker Strike", spellName = "Pantheon_Heartseeker", spellDelay = 250, projectileName = "Thresh_Q_whip_beam.troy", projectileSpeed = 2000, range = 600, radius = 200, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["Poppy"] = {charName = "Poppy", skillshots = { --unfinished ["Devastating Blow"] = {spellKey = _Q, isTargeted = true, name = "Devastating Blow", spellName = "DevastatingBlow", spellDelay = 250, range = 125, projectileName = "swain_shadowGrasp_transform.troy", type = "LINE"}, ["Heroic Charge"] = {spellKey = _E, isTargeted = true, name = "Heroic Charge", spellName = "HeroicCharge", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 525, type = "LINE"}, ["Paragon of Demacia"] = {spellKey = _W, isSelfCast = true, isAutoBuff = true, noAnimation = true, name = "Paragon of Demacia", spellName = "PoppyW", spellDelay = 250, range = 300,}, }}, ["Quinn"] = {charName = "Quinn", skillshots = { ["QuinnQ"] = {spellKey = _Q, isCollision = true, name = "QuinnQ", spellName = "QuinnQ", spellDelay = 250, projectileName = "Quinn_Q_missile.troy", projectileSpeed = 1550, range = 1050, radius = 80, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["QuinnE"] = { spellKey = _E, isTargeted = true, spellName = "QuinnE", name = "QuinnE", range = 750, }, }}, ["Rumble"] = {charName = "Rumble", skillshots = { ["RumbleGrenade"] = {spellKey = _E, name = "RumbleGrenade", spellName = "RumbleGrenade", spellDelay = 250, projectileName = "rumble_taze_mis.troy", projectileSpeed = 2000, range = 800, radius = 90, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Flamespitter"] = {spellKey = _Q, name = "Flamespitter", spellName = "Flamespitter", spellDelay = 250, range = 650, radius = 90, type = "CIRCULAR"}, ["RumbleShield"] = { spellKey = _W, isSelfCast = true, isShield = true, spellName = "RumbleShield", name = "RumbleShield", range = math.huge, damage = function () return 20 + 30 * myHero:GetSpellData(_W).level + myHero.ap * .4 end,}, }}, ["Rengar"] = {charName = "Rengar", skillshots = { --unfinished ["RengarE"] = {spellKey = _E, isTargeted = true, name = "Bola Strike", spellName = "RengarE", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 575, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Savagery"] = {spellKey = _Q, isSelfCast = true, isAutoReset = true, name = "Savagery", spellName = "Savagery", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 125, type = "CIRCULAR"}, --["Empowered Savagery"] = {spellKey = _Q, isSelfCast = true, isAutoReset = true, hasBuff="" ,name = "Empowered Savagery", spellName = "EmpoweredSavagery", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 125, type = "CIRCULAR"}, ["Battle Roar"] = {spellKey = _W, isSelfCast = true, noAnimation = true, name = "Battle Roar", spellName = "RengarQ", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 500, type = "CIRCULAR"}, }}, ["Renekton"] = {charName = "Renekton", skillshots = { --unfinished ["Ruthless Predator"] = {spellKey = _W, isTargeted = true, isAutoReset = true, name = "Ruthless Predator", spellName = "RuthlessPredator", spellDelay = 250, range = 125, projectileName = "swain_shadowGrasp_transform.troy", type = "LINE"}, ["Cull the Meek"] = {spellKey = _Q, isSelfCast = true, isTrueRange = true, name = "Cull the Meek", spellName = "RenektonQ", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 225, type = "CIRCULAR"}, ["Slice And Dice"] = {spellKey = _E, name = "Slice", spellName = "Slice", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 450, radius = 200, type = "LINE"}, }}, ["Riven"] = {charName = "Riven", skillshots = { --unfinished ["Ki Burst"] = {spellKey = _W, isSelfCast = true, name = "Ki Burst", spellName = "RivenW", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 125, type = "CIRCULAR"}, ["Broken Wings"] = {spellKey = _Q, name = "Broken Wings", spellName = "RivenTriCleave", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 260, radius = 200, type = "LINE"}, ["Valor"] = {spellKey = _E, name = "Valor", spellName = "Valor", spellDelay = 250, projectileName = "Thresh_Q_whip_beam.troy", range = 325, radius = 200, type = "LINE"}, ["RivenR"] = {spellKey = _R, name = "Blade of the Exile", spellName = "RivenR", spellDelay = 250, projectileName = "Thresh_Q_whip_beam.troy", range = 900, radius = 200, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["Ryze"] = {charName = "Ryze", skillshots = { --unfinished ["Overload"] = {spellKey = _Q, isTargeted = true, name = "Overload", spellName = "Overload", spellDelay = 250, range = 600, projectileName = "Overload_mis.troy", type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Rune Prison"] = {spellKey = _W, isTargeted = true, name = "Rune Prison", spellName = "RunePrison", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 600, type = "LINE"}, ["SpellFlux"] = {spellKey = _E, isTargeted = true, name = "Spell Flux", spellName = "SpellFlux", spellDelay = 250, projectileName = "SpellFlux_mis.troy", range = 600, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Desperate Power"] = {spellKey = _R, isSelfCast = true, name = "Desperate Power", spellName = "Desperate Power", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 600, type = "CIRCULAR"}, }}, ["Sejuani"] = {charName = "Sejuani", skillshots = { ["SejuaniR"] = {name = "SejuaniR", spellName = "SejuaniGlacialPrisonCast", spellDelay = 250, projectileName = "Sejuani_R_mis.troy", projectileSpeed = 1600, range = 1200, radius = 110, type = "LINE"}, }}, ["Shaco"] = {charName = "Shaco", skillshots = { ["TwoShivPoison"] = { spellKey = _E, isTargeted = true, spellName = "TwoShivPoison", name = "TwoShivPoison", range = 625, projectileName = "JesterDagger.troy", fuckedUp = false, blockable = true, danger = 1}, --["HallucinateFull"] = { spellKey = _R, castType = 0, spellName = "HallucinateFull", name = "HallucinateFull", range = 500, projectileName = "AnnieBasicAttack_mis.troy",}, --["Deceive"] = { spellKey = _Q, castType = 0, spellName = "Deceive", name = "Deceive", range = 25000, projectileName = "AnnieBasicAttack_mis.troy",}, --["JackInTheBox"] = { spellKey = _W, type = "CIRCULAR", spellName = "JackInTheBox", name = "JackInTheBox", range = 425, projectileName = "TristannaBasicAttack4_mis.troy",}, }}, ["Shen"] = {charName = "Shen", skillshots = { ["ShadowDash"] = {name = "ShadowDash", spellName = "ShenShadowDash", spellDelay = 0, projectileName = "shen_shadowDash_mis.troy", projectileSpeed = 3000, range = 575, radius = 50, type = "LINE"}, ["ShenVorpalStar"] = { spellKey = _Q, isTargeted = true, spellName = "ShenVorpalStar", name = "ShenVorpalStar", range = 475, projectileSpeed = 1500, projectileName = "shen_vorpalStar_mis.troy"}, ["ShenFeint"] = { spellKey = _W, isShield = true, isSelfCast = true, spellName = "ShenFeint", name = "ShenFeint", range = math.huge, damage = function () return 20 + 40 * myHero:GetSpellData(_W).level + myHero.ap * .6 end,}, --["ShenStandUnited"] = { spellKey = _R, castType = 0, spellName = "ShenStandUnited", name = "ShenStandUnited", range = 25000, projectileName = "AnnieBasicAttack_mis.troy",}, }}, ["Shyvana"] = {charName = "Shyvana", skillshots = { ["ShyvanaDoubleAttack"] = { spellKey = _Q, isSelfCast = true, isAutoReset = true, spellName = "ShyvanaDoubleAttack", name = "ShyvanaDoubleAttack", range = 125, }, ["ShyvanaFireball"] = { spellKey = _E, spellName = "ShyvanaFireball", name = "ShyvanaFireball", range = 925, projectileSpeed = 1200, projectileName = "shyvana_flameBreath_mis.troy", radius = 60, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["ShyvanaImmolationAura"] = { spellKey = _W, isSelfCast = true, noAnimation = true, spellName = "ShyvanaImmolationAura", name = "ShyvanaImmolationAura", range = 150, }, }}, ["Skarner"] = {charName = "Skarner", skillshots = { --unfinished ["Crystal Slash"] = {spellKey = _Q, isSelfCast = true, name = "Crystal Slash", spellName = "CrystalSlash", spellDelay = 250, range = 300, type = "CIRCULAR"}, ["Fracture"] = {spellKey = _E, name = "Fracture", spellName = "Fracture", spellDelay = 250, projectileName = "TEMP_KarmaQMis.troy", projectileSpeed = 1700, range = 900, radius = 45, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["SkarnerExoskeleton"] = { spellKey = _W, isSelfCast = true, isShield = true, spellName = "SkarnerExoskeleton", name = "SkarnerExoskeleton", range = math.huge, damage = function () return 25 + 55 * myHero:GetSpellData(_W).level + myHero.ap * .8 end,} }}, ["Sion"] = {charName = "Sion", skillshots = { ["CrypticGaze"] = { spellKey = _Q, isTargeted = true, isStun = true, spellName = "CrypticGaze", name = "CrypticGaze", range = 550, projectileName = "CrypticGaze_mis.troy",}, --["DeathsCaressFull"] = { spellKey = _W, castType = 0, spellName = "DeathsCaressFull", name = "DeathsCaressFull", range = 1, projectileName = "AnnieBasicAttack_mis.troy",}, --["Cannibalism"] = { spellKey = _R, castType = 0, spellName = "Cannibalism", name = "Cannibalism", range = 1,}, --["Enrage"] = { spellKey = _E, castType = 0, spellName = "Enrage", name = "Enrage", range = 1, projectileName = "FuryoftheAncient_mis.troy",}, }}, ["Sivir"] = {charName = "Sivir", skillshots = { --hard to measure speed --unfinished ["SivirQ"] = {spellKey = _Q, name = "Boomerang Blade", spellName = "SivirQ", spellDelay = 250, projectileName = "Sivir_Base_Q_mis.troy", projectileSpeed = 1350, range = 1075, radius = 101, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Ricochet"] = {spellKey = _W, isSelfCast = true, isAutoReset = true, name = "Ricochet", spellName = "Ricochet", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 550, type = "LINE"}, }}, ["Sona"] = {charName = "Sona", skillshots = { ["HymnofValor"] = {spellKey = _Q, isSelfCast = true, name = "Hymn of Valor", spellName = "HymnofValor", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 700, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["SonaAriaofPerseverance"] = { spellKey = _W, isSelfCast = true, isHeal = true, spellName = "SonaAriaofPerseverance", name = "SonaAriaofPerseverance", range = 1000,}, ["SonaCrescendo"] = {name = "Crescendo", spellName = "SonaCrescendo", spellDelay = 250, projectileName = "SonaCrescendo_mis.troy", projectileSpeed = 2400, range = 1000, radius = 150, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["Soraka"] = {charName = "Soraka", skillshots = { ["Infuse"] = {spellKey = _E, isTargeted = true, name = "Infuse", spellName = "Infuse", spellDelay = 250, range = 725, type = "LINE"}, ["Starcall"] = {spellKey = _Q, isSelfCast = true, isTrueRange = true, name = "Starcall", spellName = "Starcall", spellDelay = 250, range = 675, type = "CIRCULAR"}, ["AstralBlessing"] = {spellKey = _W, isTargeted = true, isHeal = true, spellName = "AstralBlessing", name = "AstralBlessing", range = 750}, ["Wish"] = { spellKey = _R, isTargeted = true, isHeal = true, spellName = "Wish", name = "Wish", range = math.huge}, }}, ["Swain"] = {charName = "Swain", skillshots = { --unfinished ["Decrepify"] = {spellKey = _Q, isTargeted = true, name = "Decrepify", spellName = "Decrepify", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 625, radius = 125, type = "LINE", fuckedUp = false, blockable = true, danger = 1, fuckedUp = false, blockable = true, danger = 1}, ["Nevermove"] = {spellKey = _W, name = "Nevermove", spellName = "SwainShadowGrasp", spellDelay = 875, projectileName = "swain_shadowGrasp_transform.troy", range = 900, radius = 125, type = "CIRCULAR"}, ["Torment"] = {spellKey = _E, isTargeted = true, name = "Torment", spellName = "Torment", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", projectileSpeed = 1000, range = 625, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["Syndra"] = {charName = "Syndra", skillshots = { ["SyndraQ"] = {name = "SyndraQ", spellName = "SyndraQ", spellDelay = 200, projectileName = "Syndra_Q_cas.troy", projectileSpeed = 300, range = 800, radius = 180, type = "CIRCULAR", fuckedUp = false, blockable = true, danger = 1} }}, ["Talon"] = {charName = "Talon", skillshots = { --unfinished ["Noxian Diplomacy"] = {spellKey = _Q, isSelfCast = true, isAutoReset = true, name = "Noxian Diplomacy", spellName = "TalonQ", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 125, type = "CIRCULAR"}, ["Cutthroat"] = {spellKey = _E, isTargeted = true, name = "Cutthroat", spellName = "Cutthroat", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 700, type = "CIRCULAR"}, ["Rake"] = {spellKey = _W, name = "Rake", spellName = "Rake", spellDelay = 250, projectileName = "Thresh_Q_whip_beam.troy", projectileSpeed = 2000, range = 600, radius = 200, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["ShadowAssault"] = {spellKey = _R, isSelfCast = true, name = "Shadow Assault", spellName = "ShadowAssault", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 500, type = "CIRCULAR", fuckedUp = false, blockable = true, danger = 1}, }}, ["Taric"] = {charName = "Taric", skillshots = { ["Imbue"] = { spellKey = _Q, isTargeted = true, isHeal = true, spellName = "Imbue", name = "Imbue", range = 750, }, ["Dazzle"] = {spellKey = _E, isTargeted = true, name = "Dazzle", spellName = "Dazzle", spellDelay = 250, range = 625, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Shatter"] = {spellKey = _W, isSelfCast = true, name = "Shatter", spellName = "Shatter", spellDelay = 250, range = 200, type = "CIRCULAR"}, ["Radiance"] = {spellKey = _R, isSelfCast = true, name = "Radiance", spellName = "Radiance", spellDelay = 250, range = 200, type = "CIRCULAR"}, }}, ["Teemo"] = {charName = "Teemo", skillshots = { --insert projectile speed ["BlindingDart"] = {spellKey = _Q, isTargeted = true, name = "BlindingDart", spellName = "BlindingDart", spellDelay = 250, projectileName = "BlindShot_mis.troy", projectileSpeed = 1900, range = 680, fuckedUp = false, blockable = true, danger = 1} }}, ["Thresh"] = {charName = "Thresh", skillshots = { ["ThreshQ"] = {spellKey = _Q, isCollision = true, name = "ThreshQ", spellName = "ThreshQ", spellDelay = 500, projectileName = "Thresh_Q_whip_beam.troy", projectileSpeed = 1900, range = 1075, radius = 65, type = "LINE", fuckedUp = false, blockable = true, danger = 1} }}, ["Tristana"] = {charName = "Tristana", skillshots = { --unfinished ["Explosive Shot"] = {spellKey = _E, isTargeted = true, isAutoReset = true, name = "Explosive Shot", spellName = "ExplosiveShot", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 700, type = "LINE"}, ["Rapid Fire"] = {spellKey = _Q, isSelfCast = true, name = "Rapid Fire", spellName = "RapidFire", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 700, type = "CIRCULAR"}, ["BusterShot"] = {spellKey = _R, isTargeted = true, isExecute = true, name = "Buster Shot", spellName = "BusterShot", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 645, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["Trundle"] = {charName = "Trundle", skillshots = { ["TrundlePain"] = { spellKey = _R, isTargeted = true, spellName = "TrundlePain", name = "TrundlePain", range = 700,}, ["trundledesecrate"] = { spellKey = _W, spellName = "trundledesecrate", name = "trundledesecrate", range = 900, radius = 1000, type = "CIRCULAR"}, ["TrundleTrollSmash"] = { spellKey = _Q, isSelfCast = true, isAutoReset = true, spellName = "TrundleTrollSmash", name = "TrundleTrollSmash", range = 125,}, ["TrundleCircle"] = { spellKey = _E, spellName = "TrundleCircle", name = "TrundleCircle", range = 1000, radius = 62, type = "CIRCULAR"}, }}, ["Tryndamere"] = {charName = "Tryndamere", skillshots = { ["UndyingRage"] = { spellKey = _R, isSelfCast = true, isShield = true, spellName = "UndyingRage", name = "UndyingRage", range = math.huge,}, }}, ["TwistedFate"] = {charName = "TwistedFate", skillshots = { ["WildCards"] = {spellKey = _Q, name = "Loaded Dice", spellName = "WildCards", spellDelay = 250, projectileName = "Roulette_mis.troy", projectileSpeed = 1000, range = 1450, radius = 40, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Pick A Card"] = {spellKey = _W, isSelfCast = true, checkName = true, name = "Pick A Card", spellName = "PickACard", spellDelay = 250, projectileName = "Thresh_Q_whip_beam.troy", projectileSpeed = 1500, range = 700, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Gold Card"] = {spellKey = _W, isSelfCast = true, checkName = true, name = "Gold Card", spellName = "goldcardlock", spellDelay = 250, projectileName = "TwistedFate_Base_W_GoldCard.troy", projectileSpeed = 1500, range = math.huge, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Blue Card"] = {spellKey = _W, isSelfCast = true, checkName = true, name = "Blue Card", spellName = "bluecardlock", spellDelay = 250, projectileName = "TwistedFate_Base_W_BlueCard.troy", projectileSpeed = 1500, range = math.huge, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Red Card"] = {spellKey = _W, isSelfCast = true, checkName = true, name = "Red Card", spellName = "redcardlock", spellDelay = 250, projectileName = "TwistedFate_Base_W_RedCard.troy", projectileSpeed = 1500, range = math.huge, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["Twitch"] = {charName = "Twitch", skillshots = { ["TwitchVenomCask"] = { spellKey = _W, type = "LINE", spellName = "TwitchVenomCask", name = "TwitchVenomCask", projectileName = "Twitch_Venom_Splash.troy", projectileSpeed = 1400, range = 900, radius = 200, fuckedUp = false, blockable = true, danger = 1}, ["HideInShadows"] = { spellKey = _Q, isSelfCast = true, isAutoBuff = true, noAnimation = ture, spellName = "HideInShadows", name = "HideInShadows", range = 550, }, ["Expunge"] = { spellKey = _E, isSelfCast = true, spellName = "Expunge", name = "Expunge", range = 1200, fuckedUp = false, blockable = true, danger = 1}, --["FullAutomatic"] = { spellKey = _R, castType = 0, spellName = "FullAutomatic", name = "FullAutomatic", range = 1200,}, }}, ["Udyr"] = {charName = "Udyr", skillshots = { ["UdyrPhoenixStance"] = { spellKey = _R, isSelfCast = true, noAnimation = true, isAutoBuff = true, spellName = "UdyrPhoenixStance", name = "UdyrPhoenixStance", range = math.huge,}, ["UdyrTurtleStance"] = { spellKey = _W, isSelfCast = true, noAnimation = true, isShield = true, spellName = "UdyrTurtleStance", name = "UdyrTurtleStance", range = math.huge,}, ["UdyrBearStance"] = { spellKey = _E, isSelfCast = true, noAnimation = true, spellName = "UdyrBearStance", name = "UdyrBearStance", range = math.huge,}, ["UdyrTigerStance"] = { spellKey = _Q, isSelfCast = true, noAnimation = true, isAutoBuff = true, spellName = "UdyrTigerStance", name = "UdyrTigerStance", range = math.huge,}, }}, ["Urgot"] = {charName = "Urgot", skillshots = { ["UrgotHeatseekingLineMissile"] = {name = "Acid Hunter", spellName = "UrgotHeatseekingLineMissile", spellDelay = 175, projectileName = "UrgotLineMissile_mis.troy", projectileSpeed = 1600, range = 1000, radius = 60, type = "LINE", fuckedUp = false, blockable = true, danger = 1, fuckedUp = false, blockable = true, danger = 1}, ["UrgotPlasmaGrenade"] = {name = "Plasma Grenade", spellName = "UrgotPlasmaGrenade", spellDelay = 250, projectileName = "UrgotPlasmaGrenade_mis.troy", projectileSpeed = 1750, range = 900, radius = 250, type = "CIRCULAR", fuckedUp = false, blockable = true, danger = 1}, }}, ["MonkeyKing"] = {charName = "MonkeyKing", skillshots = { --unfinished ["MonkeyKingNimbus"] = {spellKey = _E, isTargeted = true, name = "Nimbus Strike", spellName = "MonkeyKingNimbus", spellDelay = 250, range = 625, type = "LINE"}, ["MonkeyKingQAttack"] = {spellKey = _Q, isSelfCast = true, isAutoReset = true, isTrueRange = true, name = "Crushing Blow", spellName = "MonkeyKingQAttack", spellDelay = 250, range = 325, type = "CIRCULAR"}, }}, ["Vladimir"] = {charName = "Vladimir", skillshots = { --["VladimirSanguinePool"] = { spellKey = _W, castType = 0, spellName = "VladimirSanguinePool", name = "VladimirSanguinePool", range = 1050, projectileName = "DarkWind_mis.troy", radius = 120,}, ["VladimirHemoplague"] = { spellKey = _R, type = "CIRCULAR", spellName = "VladimirHemoplague", name = "VladimirHemoplague", range = 700, projectileSpeed = 1200, projectileName = "VladHemoPlague_cas.troy", radius = 175,}, ["VladimirTidesofBlood"] = { spellKey = _E, isSelfCast = true, spellName = "VladimirTidesofBlood", name = "VladimirTidesofBlood", range = 610, projectileSpeed = 1100, projectileName = "VladTidesofBlood_mis.troy", radius = 120,}, ["VladimirTransfusion"] = { spellKey = _Q, isTargeted = true, spellName = "VladimirTransfusion", name = "VladimirTransfusion", range = 600,}, }}, ["Volibear"] = {charName = "Volibear", skillshots = { ["VolibearQ"] = { spellKey = _Q, isAutoReset = true, spellName = "VolibearQ", name = "VolibearQ", range = 125, }, ["VolibearR"] = { spellKey = _R, isAutoBuff = true, spellName = "VolibearR", name = "VolibearR", range = 125, }, ["VolibearE"] = { spellKey = _E, isSelfCast = true, spellName = "VolibearE", name = "VolibearE", range = 425, projectileName = "FerosciousHowl_cas3.troy",}, ["VolibearW"] = { spellKey = _W, isTargeted = true, isExecute = true, spellName = "VolibearW", name = "VolibearW", range = 400, }, }}, ["Warwick"] = {charName = "Warwick", skillshots = { --unfinished ["Hungering Strike"] = {spellKey = _Q, isTargeted = true, name = "Hungering Strike", spellName = "HungeringStrike", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 400, type = "LINE"}, ["Hunters Call"] = {spellKey = _W, isSelfCast = true, isAutoBuff = true, noAnimation = true, name = "Hunters Call", spellName = "HuntersCall", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 300, type = "CIRCULAR"}, }}, ["Varus"] = {charName = "Varus", skillshots = { ["VarusQ!"] = {spellKey = _Q, name = "Varus Q Missile", spellName = "VarusQ!", spellDelay = 0, projectileName = "VarusQ_mis.troy", projectileSpeed = 1900, range = 1600, radius = 70, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["VarusE"] = {spellKey = _E, name = "Varus E", spellName = "VarusE", spellDelay = 250, projectileName = "VarusEMissileLong.troy", projectileSpeed = 1500, range = 925, radius = 275, type = "CIRCULAR", fuckedUp = false, blockable = true, danger = 1}, ["VarusR"] = {name = "VarusR", spellName = "VarusR", spellDelay = 250, projectileName = "VarusRMissile.troy", projectileSpeed = 1950, range = 1250, radius = 100, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["Vayne"] = {charName = "Vayne", skillshots = { --["VayneInquisition"] = { spellKey = _R, castType = 0, spellName = "VayneInquisition", name = "VayneInquisition", range = 1, projectileName = "AnnieBasicAttack_mis.troy",}, --["VayneCondemn"] = { spellKey = _E, castType = 0, spellName = "VayneCondemn", name = "VayneCondemn", range = 550, projectileSpeed = 1200, projectileName = "vayne_E_mis.troy",}, --["VayneSilveredBolts"] = { spellKey = _W, castType = 0, spellName = "VayneSilveredBolts", name = "VayneSilveredBolts", range = 10000, radius = 50,}, ["VayneTumble"] = { isAutoReset = true, isDash = true, spellName = "VayneTumble", name = "VayneTumble", range = 300, }, ["VayneCondemn"] = {name = "VayneCondemn", spellName = "VayneCondemn", castDelay = 250, projectileName = "vayne_E_mis.troy", projectileSpeed = 1200, range = 550, radius = 450, fuckedUp = false, blockable = true, danger = 1} }}, ["Veigar"] = {charName = "Veigar", skillshots = { ["BalefulStrike"] = {spellKey = _Q, isTargeted = true, name = "Baleful Strike", spellName = "BalefulStrike", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 650, projectileSpeed = 1500, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["Dark Matter"] = {spellKey = _W, name = "VeigarDarkMatter", targetHasBuff = "Stun", spellName = "VeigarDarkMatter", spellDelay = 1250, projectileName = "!", range = 900, radius = 112, type = "CIRCULAR"}, ["Primordial Burst"] = {spellKey = _R, isTargeted = true, isExecute = true, name = "Primordial Burst", spellName = "PrimordialBurst", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 650, projectileSpeed = 1500, type = "LINE"}, }}, ["Vi"] = {charName = "Vi", skillshots = { --unfinished ["Excessive Force"] = {spellKey = _E, isSelfCast = true, isAutoReset = true, name = "Excessive Force", spellName = "ExcessiveForce", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 125, type = "CIRCULAR"}, }}, ["XinZhao"] = {charName = "XinZhao", skillshots = { ["Talon Strike"] = {spellKey = _Q, isSelfCast = true, isAutoReset = true, name = "Talon Strike", spellName = "TalonStrike", spellDelay = 250, range = 175, type = "LINE"}, ["Battle Cry"] = {spellKey = _W, isSelfCast = true, isAutoBuff = true, noAnimation = true, name = "Battle Cry", spellName = "BattleCry", spellDelay = 250, range = 300,}, ["Crescent Sweep"] = {spellKey = _R, isSelfCast = true, name = "Crescent Sweep", spellName = "CrescentSweep", spellDelay = 250, range = 300, type = "CIRCULAR"}, ["Audacious Charge"] = { spellKey = _E, isTargeted = true, spellName = "XinZhaoCharge", name = "Audacious Charge", range = 600, }, }}, ["Xerath"] = {charName = "Xerath", skillshots = { ["XerathMageSpear"] = { spellKey = _E, type = "LINE", isCollision = true, isStun = true, spellName = "XerathMageSpear", name = "XerathMageSpear", projectileName = "Xerath_Base_E_mis.troy", range = 1050, projectileSpeed = 1600, radius = 70, fuckedUp = false, blockable = true, danger = 1}, ["XerathArcanopulseChargeUp"] = { spellKey = _Q, type = "LINE", spellName = "XerathArcanopulseChargeUp", heroHasNoBuff = "XerathArcanopulseChargeUp", name = "XerathArcanopulseChargeUp", range = 1000, radius = 100, }, ["XerathArcanopulseChargeUp2"] = { spellKey = _Q, type = "LINE", spellName = "XerathArcanopulseChargeUp2", heroHasBuff = "XerathArcanopulseChargeUp", name = "XerathArcanopulseChargeUp2", range = 750, radius = 100, fuckedUp = false, blockable = true, danger = 1}, --range function ["XerathArcaneBarrage2"] = { spellKey = _W, type = "CIRCULAR", spellName = "XerathArcaneBarrage2", name = "XerathArcaneBarrage2", range = 1100, spellDelay = 750, radius = 200, fuckedUp = false, blockable = true, danger = 1}, ["XerathLocusOfPower2"] = { spellKey = _R, type = "CIRCULAR", spellName = "XerathLocusOfPower2", name = "XerathLocusOfPower2", projectileName = "Xerath_Base_R_mis.troy", range = 5600, radius = 100, spellDelay = 750, fuckedUp = false, blockable = true, danger = 1}, }}, ["Yasuo"] = {charName = "Yasuo", skillshots = { ["Steel Tempest"] = {spellKey = _Q, name = "Steel Tempest", isTrueRange = true, spellName = "SteelTempest", spellDelay = 250, projectileName = "Yasuo_Q_WindStrike.troy", range = 475, radius = 50, type = "LINE"}, ["yasuoq3w"] = {spellKey = _Q, name = "Steel Tempest3", checkName = true, spellName = "yasuoq3w", spellDelay = 250, projectileName = "Yasuo_Q_wind_mis.troy", projectileSpeed = 1500, range = 900, radius = 100, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, ["Yorick"] = {charName = "Yorick", skillshots = { ["YorickDecayed"] = { spellKey = _W, spellName = "YorickDecayed", name = "YorickDecayed", range = 600, radius = 100, type = "CIRCULAR"}, --["YorickReviveAlly"] = { spellKey = _R, castType = 0, spellName = "YorickReviveAlly", name = "YorickReviveAlly", range = 850, projectileSpeed = 1500,}, ["YorickSpectral"] = { spellKey = _Q, isSelfCast = true, isAutoReset = true, noAnimation = true, spellName = "YorickSpectral", name = "YorickSpectral", range = 125,}, ["YorickRavenous"] = { spellKey = _E, isTargeted = true, spellName = "YorickRavenous", name = "YorickRavenous", range = 550, }, }}, ["Zed"] = {charName = "Zed", skillshots = { ["ZedShuriken"] = {spellKey = _Q, name = "ZedShuriken", spellName = "ZedShuriken", spellDelay = 250, projectileName = "Zed_Q_Mis.troy", projectileSpeed = 1700, range = 925, radius = 50, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["ZedShadowSlash"] = { spellKey = _E, isSelfCast = true, spellName = "ZedShadowSlash", name = "ZedShadowSlash", range = 290,}, }}, ["Ziggs"] = {charName = "Ziggs", skillshots = { ["ZiggsQ"] = {spellKey = _Q, isCollision = true, name = "ZiggsQ", spellName = "ZiggsQ", spellDelay = 250, projectileName = "ZiggsQ.troy", projectileSpeed = 1700, range = 1400, radius = 155, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["ZiggsW"] = {spellKey = _W, name = "ZiggsW", spellName = "ZiggsW", spellDelay = 250, projectileName = "ZiggsW_mis.troy", projectileSpeed = 1700, range = 1000, radius = 325, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["ZiggsE"] = {spellKey = _E, name = "ZiggsE", spellName = "ZiggsE", spellDelay = 250, projectileName = "ZiggsE_Mis_Large.troy", projectileSpeed = 1700, range = 900, radius = 250, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["ZiggsR"] = { spellKey = _R, isExecute = true, type = "LINE", spellName = "ZiggsR", name = "ZiggsR", range = 5000, projectileSpeed = 1750, projectileName = "ZiggsR_Mis_Nuke.troy", radius = 550, fuckedup = false, blockable = true, danger = 1}, }}, ["Zilean"] = {charName = "Zilean", skillshots = { --unfinished ["TimeBomb"] = {spellKey = _Q, isTargeted = true, name = "Time Bomb", spellName = "TimeBomb", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 700, radius = 330, type = "CIRCULAR", fuckedUp = false, blockable = true, danger = 1}, ["Rewind"] = {spellKey = _W, isSelfCast = true, name = "Rewind", spellName = "Rewind", spellDelay = 250, projectileName = "swain_shadowGrasp_transform.troy", range = 700, type = "CIRCULAR"}, ["ChronoShift"] = { spellKey = _R, isTargeted = true, isShield = true, spellName = "ChronoShift", name = "ChronoShift", range = 900, }, }}, ["Zyra"] = {charName = "Zyra", skillshots = { ["Deadly Bloom"] = {spellKey = _Q, name = "Deadly Bloom", spellName = "ZyraQFissure", spellDelay = 625, projectileName = "zyra_Q_cas.troy", range = 800, radius = 220, type = "CIRCULAR"}, ["Rampant Growth"] = {spellKey = _W, name = "Rampant Growth", spellName = "Rampant Growth", spellDelay = 625, projectileName = "zyra_Q_cas.troy", range = 850, radius = 220, type = "CIRCULAR"}, ["ZyraGraspingRoots"] = {spellKey = _E, name = "Grasping Roots", spellName = "ZyraGraspingRoots", spellDelay = 250, projectileName = "Zyra_E_sequence_impact.troy", projectileSpeed = 1150, range = 1150, radius = 70, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, ["ZyraBrambleZone"] = { spellKey = _R, type = "CIRCULAR", spellName = "ZyraBrambleZone", name = "ZyraBrambleZone", range = 700, spellDelay = 250, radius = 400}, ["zyrapassivedeathmanager"] = { spellKey = _Q, checkName = true, name = "Zyra Passive", spellName = "zyrapassivedeathmanager", spellDelay = 500, projectileName = "zyra_passive_plant_mis.troy", projectileSpeed = 2000, range = 1474, radius = 60, type = "LINE", fuckedUp = false, blockable = true, danger = 1}, }}, } Interrupt = { ["Katarina"] = {charName = "Katarina", stop = {["KatarinaR"] = {name = "Death lotus", spellName = "KatarinaR", ult = true }}}, ["Nunu"] = {charName = "Nunu", stop = {["AbsoluteZero"] = {name = "Absolute Zero", spellName = "AbsoluteZero", ult = true }}}, ["Malzahar"] = {charName = "Malzahar", stop = {["AlZaharNetherGrasp"] = {name = "Nether Grasp", spellName = "AlZaharNetherGrasp", ult = true}}}, ["Caitlyn"] = {charName = "Caitlyn", stop = {["CaitlynAceintheHole"] = {name = "Ace in the hole", spellName = "CaitlynAceintheHole", ult = true, projectileName = "caitlyn_ult_mis.troy"}}}, ["FiddleSticks"] = {charName = "FiddleSticks", stop = {["Crowstorm"] = {name = "Crowstorm", spellName = "Crowstorm", ult = true}}}, ["Galio"] = {charName = "Galio", stop = {["GalioIdolOfDurand"] = {name = "Idole of Durand", spellName = "GalioIdolOfDurand", ult = true}}}, ["Janna"] = {charName = "Janna", stop = {["ReapTheWhirlwind"] = {name = "Monsoon", spellName = "ReapTheWhirlwind", ult = true}}}, ["MissFortune"] = {charName = "MissFortune", stop = {["MissFortune"] = {name = "Bullet time", spellName = "MissFortuneBulletTime", ult = true}}}, ["MasterYi"] = {charName = "MasterYi", stop = {["MasterYi"] = {name = "Meditate", spellName = "Meditate", ult = false}}}, ["Pantheon"] = {charName = "Pantheon", stop = {["PantheonRJump"] = {name = "Skyfall", spellName = "PantheonRJump", ult = true}}}, ["Shen"] = {charName = "Shen", stop = {["ShenStandUnited"] = {name = "Stand united", spellName = "ShenStandUnited", ult = true}}}, ["Urgot"] = {charName = "Urgot", stop = {["UrgotSwap2"] = {name = "Position Reverser", spellName = "UrgotSwap2", ult = true}}}, ["Varus"] = {charName = "Varus", stop = {["VarusQ"] = {name = "Piercing Arrow", spellName = "Varus", ult = false}}}, ["Warwick"] = {charName = "Warwick", stop = {["InfiniteDuress"] = {name = "Infinite Duress", spellName = "InfiniteDuress", ult = true}}}, } isAGapcloserUnit = { ['Ahri'] = {true, spell = _R, range = 450, projSpeed = 2200, }, ['Aatrox'] = {true, spell = _Q, range = 1000, projSpeed = 1200, }, ['Akali'] = {true, spell = _R, range = 800, projSpeed = 2200, }, ['Alistar'] = {true, spell = _W, range = 650, projSpeed = 2000, }, ['Amumu'] = {true, spell = _Q, range = 1100, projSpeed = 1800, }, ['Corki'] = {true, spell = _W, range = 800, projSpeed = 650, }, ['Diana'] = {true, spell = _R, range = 825, projSpeed = 2000, }, ['Darius'] = {true, spell = _R, range = 460, projSpeed = math.huge, }, ['Fiora'] = {true, spell = _Q, range = 600, projSpeed = 2000, }, ['Fizz'] = {true, spell = _Q, range = 550, projSpeed = 2000, }, ['Gragas'] = {true, spell = _E, range = 600, projSpeed = 2000, }, ['Graves'] = {true, spell = _E, range = 425, projSpeed = 2000, exeption = true }, ['Hecarim'] = {true, spell = _R, range = 1000, projSpeed = 1200, }, ['Irelia'] = {true, spell = _Q, range = 650, projSpeed = 2200, }, ['JarvanIV'] = {true, spell = _Q, range = 770, projSpeed = 2000, }, ['Jax'] = {true, spell = _Q, range = 700, projSpeed = 2000, }, ['Jayce'] = {true, spell = 'JayceToTheSkies', range = 600, projSpeed = 2000, }, ['Khazix'] = {true, spell = _E, range = 900, projSpeed = 2000, }, ['Leblanc'] = {true, spell = _W, range = 600, projSpeed = 2000, }, --['LeeSin'] = {true, spell = 'blindmonkqtwo', range = 1300, projSpeed = 1800, }, ['Leona'] = {true, spell = _E, range = 900, projSpeed = 2000, }, ['Lucian'] = {true, spell = _E, range = 425, projSpeed = 2000, }, ['Malphite'] = {true, spell = _R, range = 1000, projSpeed = 1500, }, ['Maokai'] = {true, spell = _W, range = 525, projSpeed = 2000, }, ['MonkeyKing'] = {true, spell = _E, range = 650, projSpeed = 2200, }, ['Pantheon'] = {true, spell = _W, range = 600, projSpeed = 2000, }, ['Poppy'] = {true, spell = _E, range = 525, projSpeed = 2000, }, ['Riven'] = {true, spell = _E, range = 150, projSpeed = 2000, }, ['Renekton'] = {true, spell = _E, range = 450, projSpeed = 2000, }, ['Sejuani'] = {true, spell = _Q, range = 650, projSpeed = 2000, }, ['Shen'] = {true, spell = _E, range = 575, projSpeed = 2000, }, ['Shyvana'] = {true, spell = _R, range = 1000, projSpeed = 2000, }, ['Tristana'] = {true, spell = _W, range = 900, projSpeed = 2000, }, ['Tryndamere'] = {true, spell = 'Slash', range = 650, projSpeed = 1450, }, ['XinZhao'] = {true, spell = _E, range = 650, projSpeed = 2000, }, ['Yasuo'] = {true, spell = _E, range = 475, projSpeed = 1000, }, ['Vayne'] = {true, spell = _Q, range = 300, projSpeed = 1000, }, } local count = 0 local isSx local isSac local Minions local SteelTempest local eStack = 0 local qBuffName = "Yasuo_Q_wind_ready_buff.troy" local farmSafe = false local i local attacked = false local isattacking = 0 local animTime = 0 local IsRecalling = false --local animTime = 0 local Tower = nil local towerUnit = nil local Tdashing = false local Tdashing2 = false local Eduration = 0.5 local Eduration2 = 0 local ePos, sPos, myPos = nil, nil ,nil local TargetPos = nil local dashPoint = nil local UsingPot = false local lastRemove = 0 ------------------------------------------------------ -- Callbacks ------------------------------------------------------ function OnLoad() if VIP_USER then AdvancedCallback:bind('OnTowerFocus', function(tower, unit) OnTowerFocus(tower,unit) end) AdvancedCallback:bind('OnTowerIdle', function(tower) OnTowerIdle(tower) end) AdvancedCallback:bind('OnApplyBuff', function(source, unit, buff) OnApplyBuff(source, unit, buff) end) AdvancedCallback:bind('OnUpdateBuff', function(unit, buff) OnUpdateBuff(unit, buff) end) AdvancedCallback:bind('OnRemoveBuff', function(unit, buff) OnLoseBuff(unit, buff) end) end Variables() Menu() PriorityOnLoad() LoadOrbwalker() IgniteCheck() Tower = GetTurrets() ItemNames = { [3303] = "ArchAngelsDummySpell", [3007] = "ArchAngelsDummySpell", [3144] = "BilgewaterCutlass", [3188] = "ItemBlackfireTorch", [3153] = "ItemSwordOfFeastAndFamine", [3405] = "TrinketSweeperLvl1", [3411] = "TrinketOrbLvl1", [3166] = "TrinketTotemLvl1", [3450] = "OdinTrinketRevive", [2041] = "ItemCrystalFlask", [2054] = "ItemKingPoroSnack", [2138] = "ElixirOfIron", [2137] = "ElixirOfRuin", [2139] = "ElixirOfSorcery", [2140] = "ElixirOfWrath", [3184] = "OdinEntropicClaymore", [2050] = "ItemMiniWard", [3401] = "HealthBomb", [3363] = "TrinketOrbLvl3", [3092] = "ItemGlacialSpikeCast", [3460] = "AscWarp", [3361] = "TrinketTotemLvl3", [3362] = "TrinketTotemLvl4", [3159] = "HextechSweeper", [2051] = "ItemHorn", [2003] = "RegenerationPotion", [3146] = "HextechGunblade", [3187] = "HextechSweeper", [3190] = "IronStylus", [2004] = "FlaskOfCrystalWater", [3139] = "ItemMercurial", [3222] = "ItemMorellosBane", [3042] = "Muramana", [3043] = "Muramana", [3180] = "OdynsVeil", [3056] = "ItemFaithShaker", [2047] = "OracleExtractSight", [3364] = "TrinketSweeperLvl3", [2052] = "ItemPoroSnack", [3140] = "QuicksilverSash", [3143] = "RanduinsOmen", [3074] = "ItemTiamatCleave", [3800] = "ItemRighteousGlory", [2045] = "ItemGhostWard", [3342] = "TrinketOrbLvl1", [3040] = "ItemSeraphsEmbrace", [3048] = "ItemSeraphsEmbrace", [2049] = "ItemGhostWard", [3345] = "OdinTrinketRevive", [2044] = "SightWard", [3341] = "TrinketSweeperLvl1", [3069] = "shurelyascrest", [3599] = "KalistaPSpellCast", [3185] = "HextechSweeper", [3077] = "ItemTiamatCleave", [2009] = "ItemMiniRegenPotion", [2010] = "ItemMiniRegenPotion", [3023] = "ItemWraithCollar", [3290] = "ItemWraithCollar", [2043] = "VisionWard", [3340] = "TrinketTotemLvl1", [3090] = "ZhonyasHourglass", [3154] = "wrigglelantern", [3142] = "YoumusBlade", [3157] = "ZhonyasHourglass", [3512] = "ItemVoidGate", [3131] = "ItemSoTD", [3137] = "ItemDervishBlade", [3352] = "RelicSpotter", [3350] = "TrinketTotemLvl2", [3085] = "AtmasImpalerDummySpell", } --[[Items = { ["QSS"] = { id = 3140, range = 2500 }, ["MercScim"] = { id = 3139, range = 2500 }, }]] Items = { ["ELIXIR"] = { id = 2140, range = 2140, target = false}, ["QSS"] = { id = 3140, range = 2500, target = false}, ["MercScim"] = { id = 3139, range = 2500, target = false}, ["BRK"] = { id = 3153, range = 450, target = true}, ["BWC"] = { id = 3144, range = 450, target = true}, --["DFG"] = { id = 3128, range = 750, target = false}, ["HXG"] = { id = 3146, range = 700, target = false}, ["ODYNVEIL"] = { id = 3180, range = 525, target = false}, ["DVN"] = { id = 3131, range = 200, target = false}, ["ENT"] = { id = 3184, range = 350, target = false}, ["HYDRA"] = { id = 3074, range = 350, target = false}, ["TIAMAT"] = { id = 3077, range = 350, target = false}, ["RanduinsOmen"] = { id = 3143, range = 500, target = false}, ["YGB"] = { id = 3142, range = 600, target = false}, } ___GetInventorySlotItem = rawget(_G, "GetInventorySlotItem") _G.GetInventorySlotItem = GetSlotItem local ToUpdate = {} ToUpdate.Version = 1.38 DelayAction(function() ToUpdate.UseHttps = true ToUpdate.Host = "raw.githubusercontent.com" ToUpdate.VersionPath = "/GosuMechanics/BoL/master/GosuYasuo.version" ToUpdate.ScriptPath = "/GosuMechanics/BoL/master/GosuYasuo.lua" ToUpdate.SavePath = SCRIPT_PATH.._ENV.FILE_NAME ToUpdate.CallbackUpdate = function(NewVersion,OldVersion) Print("Updated to v("..NewVersion.."). .Please reload script.") end ToUpdate.CallbackNoUpdate = function(OldVersion) Print("No Updates Found.") end ToUpdate.CallbackNewVersion = function(NewVersion) Print("New Version found ("..NewVersion.."). Please wait until its downloaded") end ToUpdate.CallbackError = function(NewVersion) Print("Error while Downloading. Please try again.") end SxScriptUpdate(ToUpdate.Version,ToUpdate.UseHttps, ToUpdate.Host, ToUpdate.VersionPath, ToUpdate.ScriptPath, ToUpdate.SavePath, ToUpdate.CallbackUpdate,ToUpdate.CallbackNoUpdate, ToUpdate.CallbackNewVersion,ToUpdate.CallbackError) end, 0.5) Print("Version "..ToUpdate.Version.." loaded.") end function LoadOrbwalker() if _G.Reborn_Initialised then print("GosuMechanics:Yasuo : Reborn loaded and authed") isSac = true loaded = true Settings:addSubMenu("["..myHero.charName.."] - Orbwalker", "Orbwalker") Settings.Orbwalker:addParam("info", "SAC:R detected", SCRIPT_PARAM_INFO, "") elseif _G.Reborn_Loaded and not _G.Reborn_Initialised and count < 30 then if printedWaiting == false then print("GosuMechanics:Yasuo : Waiting for Reborn auth") printedWaiting = true end DelayAction(LoadOrbwalker, 1) count = count + 1 else if count >= 30 then print("GosuMechanics:Yasuo : SAC failed to auth") end require 'SxOrbWalk' print("SxOrbWalk: Loading...") Settings:addSubMenu("["..myHero.charName.."] - Orbwalker", "Orbwalker") SxOrb:LoadToMenu(Settings.Orbwalker) isSx = true print("SxOrbWalk: Loaded") loaded = true end end function OnTick() ts:update() target = ts.target Checks() ComboKey = Settings.combo.comboKey HarassKey = Settings.harass.harassKey HarassToggle = Settings.harass.harassToggle JungleClearKey = Settings.jungle.jungleKey LaneClearKey = Settings.lane.laneKey FarmKey = Settings.farm.farmKey if Tdashing ~= false and os.clock() > Eduration2 then Tdashing = false end if Tdashing2 ~= false and os.clock() > Eduration3 then Tdashing2 = false end if dashed ~= nil and dashed - os.clock() < 0 then posAfterE = nil dashed = nil end if ComboKey then Combo() end if HarassKey then Harass() end if FarmKey then LastHit() end if JungleClearKey then JungleClear() end if LaneClearKey then LaneClear() end if Settings.ks.killSteal then KillSteal() end if Settings.ks.autoR then autoRkillable() end if Settings.ks.autoIgnite then AutoIgnite() end if Settings.esc.run then flee() end if Settings.misc.autoPot then AutoPots() end if Settings.harass.harassToggle then AutoQenemy() end if Settings.esc.qminion then AutoQenemyminion() end if Settings.esc.useQjungle then AutoQminion() end if Settings.esc.run and Settings.esc.useQminion then AutoQenemyminion() end if Settings.Egap.smartEgap then smartEgap() end if Settings.combo.ults.autoult then AutoUlt() end GetItemSlot() end function OnDraw() if not myHero.dead and not Settings.drawing.mDraw then if SkillQ12.ready and Settings.drawing.qDraw then DrawCircle2(myHero.x, myHero.y, myHero.z, SkillQ12.range, RGB(Settings.drawing.qColor[2], Settings.drawing.qColor[3], Settings.drawing.qColor[4])) end if SkillQ3.ready and Settings.drawing.qDraw then DrawCircle2(myHero.x, myHero.y, myHero.z, SkillQ3.range, RGB(Settings.drawing.qColor[2], Settings.drawing.qColor[3], Settings.drawing.qColor[4])) end if SkillW.ready and Settings.drawing.wDraw then DrawCircle2(myHero.x, myHero.y, myHero.z, SkillW.range, RGB(Settings.drawing.wColor[2], Settings.drawing.wColor[3], Settings.drawing.wColor[4])) end if SkillE.ready and Settings.drawing.eDraw then DrawCircle2(myHero.x, myHero.y, myHero.z, SkillE.range, RGB(Settings.drawing.eColor[2], Settings.drawing.eColor[3], Settings.drawing.eColor[4])) end if SkillR.ready and Settings.drawing.rDraw then DrawCircle2(myHero.x, myHero.y, myHero.z, SkillR.range, RGB(Settings.drawing.rColor[2], Settings.drawing.rColor[3], Settings.drawing.rColor[4])) end if Settings.drawing.myHero then DrawCircle2(myHero.x, myHero.y, myHero.z, TrueRange(), RGB(Settings.drawing.myColor[2], Settings.drawing.myColor[3], Settings.drawing.myColor[4])) end if Settings.drawing.Target and target ~= nil then DrawCircle2(target.x, target.y, target.z, 80, ARGB(255, 10, 255, 10)) end end end class "SxScriptUpdate" function SxScriptUpdate:__init(LocalVersion,UseHttps, Host, VersionPath, ScriptPath, SavePath, CallbackUpdate, CallbackNoUpdate, CallbackNewVersion,CallbackError) self.LocalVersion = LocalVersion self.Host = Host self.VersionPath = '/BoL/TCPUpdater/GetScript'..(UseHttps and '5' or '6')..'.php?script='..self:Base64Encode(self.Host..VersionPath)..'&rand='..math.random(99999999) self.ScriptPath = '/BoL/TCPUpdater/GetScript'..(UseHttps and '5' or '6')..'.php?script='..self:Base64Encode(self.Host..ScriptPath)..'&rand='..math.random(99999999) self.SavePath = SavePath self.CallbackUpdate = CallbackUpdate self.CallbackNoUpdate = CallbackNoUpdate self.CallbackNewVersion = CallbackNewVersion self.CallbackError = CallbackError AddDrawCallback(function() self:OnDraw() end) self:CreateSocket(self.VersionPath) self.DownloadStatus = 'Connect to Server for VersionInfo' AddTickCallback(function() self:GetOnlineVersion() end) end function SxScriptUpdate:print(str) print(''..os.clock()..': '..str) end function SxScriptUpdate:OnDraw() if self.DownloadStatus ~= 'Downloading Script (100%)' and self.DownloadStatus ~= 'Downloading VersionInfo (100%)'then DrawText('Download Status: '..(self.DownloadStatus or 'Unknown'),50,10,50,ARGB(0xFF,0xFF,0xFF,0xFF)) end end function SxScriptUpdate:CreateSocket(url) if not self.LuaSocket then self.LuaSocket = require("socket") else self.Socket:close() self.Socket = nil self.Size = nil self.RecvStarted = false end self.LuaSocket = require("socket") self.Socket = self.LuaSocket.tcp() self.Socket:settimeout(0, 'b') self.Socket:settimeout(99999999, 't') self.Socket:connect('sx-bol.eu', 80) self.Url = url self.Started = false self.LastPrint = "" self.File = "" end function SxScriptUpdate:Base64Encode(data) local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' return ((data:gsub('.', function(x) local r,b='',x:byte() for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end return r; end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x) if (#x < 6) then return '' end local c=0 for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end return b:sub(c+1,c+1) end)..({ '', '==', '=' })[#data%3+1]) end function SxScriptUpdate:GetOnlineVersion() if self.GotScriptVersion then return end self.Receive, self.Status, self.Snipped = self.Socket:receive(1024) if self.Status == 'timeout' and not self.Started then self.Started = true self.Socket:send("GET "..self.Url.." HTTP/1.1\r\nHost: sx-bol.eu\r\n\r\n") end if (self.Receive or (#self.Snipped > 0)) and not self.RecvStarted then self.RecvStarted = true self.DownloadStatus = 'Downloading VersionInfo (0%)' end self.File = self.File .. (self.Receive or self.Snipped) if self.File:find('') then if not self.Size then self.Size = tonumber(self.File:sub(self.File:find('')+6,self.File:find('')-1)) end if self.File:find('') then local _,ScriptFind = self.File:find('') local ScriptEnd = self.File:find('') if ScriptEnd then ScriptEnd = ScriptEnd - 1 end local DownloadedSize = self.File:sub(ScriptFind+1,ScriptEnd or -1):len() self.DownloadStatus = 'Downloading VersionInfo ('..math.round(100/self.Size*DownloadedSize,2)..'%)' end end if self.File:find('') then self.DownloadStatus = 'Downloading VersionInfo (100%)' local a,b = self.File:find('\r\n\r\n') self.File = self.File:sub(a,-1) self.NewFile = '' for line,content in ipairs(self.File:split('\n')) do if content:len() > 5 then self.NewFile = self.NewFile .. content end end local HeaderEnd, ContentStart = self.File:find('') local ContentEnd, _ = self.File:find('') if not ContentStart or not ContentEnd then if self.CallbackError and type(self.CallbackError) == 'function' then self.CallbackError() end else self.OnlineVersion = (Base64Decode(self.File:sub(ContentStart + 1,ContentEnd-1))) self.OnlineVersion = tonumber(self.OnlineVersion) if self.OnlineVersion > self.LocalVersion then if self.CallbackNewVersion and type(self.CallbackNewVersion) == 'function' then self.CallbackNewVersion(self.OnlineVersion,self.LocalVersion) end self:CreateSocket(self.ScriptPath) self.DownloadStatus = 'Connect to Server for ScriptDownload' AddTickCallback(function() self:DownloadUpdate() end) else if self.CallbackNoUpdate and type(self.CallbackNoUpdate) == 'function' then self.CallbackNoUpdate(self.LocalVersion) end end end self.GotScriptVersion = true end end function SxScriptUpdate:DownloadUpdate() if self.GotSxScriptUpdate then return end self.Receive, self.Status, self.Snipped = self.Socket:receive(1024) if self.Status == 'timeout' and not self.Started then self.Started = true self.Socket:send("GET "..self.Url.." HTTP/1.1\r\nHost: sx-bol.eu\r\n\r\n") end if (self.Receive or (#self.Snipped > 0)) and not self.RecvStarted then self.RecvStarted = true self.DownloadStatus = 'Downloading Script (0%)' end self.File = self.File .. (self.Receive or self.Snipped) if self.File:find('') then if not self.Size then self.Size = tonumber(self.File:sub(self.File:find('')+6,self.File:find('')-1)) end if self.File:find('') then local _,ScriptFind = self.File:find('') local ScriptEnd = self.File:find('') if ScriptEnd then ScriptEnd = ScriptEnd - 1 end local DownloadedSize = self.File:sub(ScriptFind+1,ScriptEnd or -1):len() self.DownloadStatus = 'Downloading Script ('..math.round(100/self.Size*DownloadedSize,2)..'%)' end end if self.File:find('') then self.DownloadStatus = 'Downloading Script (100%)' local a,b = self.File:find('\r\n\r\n') self.File = self.File:sub(a,-1) self.NewFile = '' for line,content in ipairs(self.File:split('\n')) do if content:len() > 5 then self.NewFile = self.NewFile .. content end end local HeaderEnd, ContentStart = self.NewFile:find('') local ContentEnd, _ = self.NewFile:find('') if not ContentStart or not ContentEnd then if self.CallbackError and type(self.CallbackError) == 'function' then self.CallbackError() end else local newf = self.NewFile:sub(ContentStart+1,ContentEnd-1) local newf = newf:gsub('\r','') if newf:len() ~= self.Size then if self.CallbackError and type(self.CallbackError) == 'function' then self.CallbackError() end return end local newf = Base64Decode(newf) if type(load(newf)) ~= 'function' then if self.CallbackError and type(self.CallbackError) == 'function' then self.CallbackError() end else local f = io.open(self.SavePath,"w+b") f:write(newf) f:close() if self.CallbackUpdate and type(self.CallbackUpdate) == 'function' then self.CallbackUpdate(self.OnlineVersion,self.LocalVersion) end end end self.GotSxScriptUpdate = true end end ------------------------------------------------------ -- Functions ------------------------------------------------------ function Combo() local target = ts.target if target ~= nil and target.type == myHero.type and target.visible and not target.dead then if ValidTarget(target) and GetDistance(target) <= SkillQ.range then if Settings.combo.comboItems then UseItems(target) end if Settings.combo.useQ12 and SkillQ12.ready and GetDistance(target) <= SkillQ12.range then CastQ12(target) elseif IsDashing() and GetDistance(target) <= SkillE.range then CastQ12(target) end if Settings.combo.useQ3 and SkillQ3.ready and GetDistance(target) <= SkillQ3.range and not IsDashing() then CastQ3(target) elseif IsDashing() and GetDistance(target) <= SkillE.range then CastQ3(target) end if ValidTarget(target, SkillE.range) and SkillE.ready and Settings.combo.useE and GetDistance(target) >= Settings.combo.DistanceToE and not TargetDashed(target) then CastSpell(_E, target) end if Settings.combo.comboKey and Settings.combo.ults.useR and SkillR.ready then if ValidTarget(target, SkillR.range) and target.health <= ((Settings.combo.ults.low/100*target.maxHealth)*1.5) then CastR(target) end end end local TargetDistance = GetDistance(target) if TargetDistance > SkillE.range and Settings.combo.useEGap then mPos = getNearestMinion(target) if SkillE.ready and mPos then CastSpell(_E, mPos) end end if TargetDistance >= Settings.combo.DistanceToE then object = getNearestMinion(mousePos) if SkillE.ready and Settings.combo.dash and object then if object.networkID ~= target.networkID then CastSpell(_E, object) end end end end end function TargetDashed(unit) if TargetHaveBuff("YasuoDashWrapper", unit) then return true end return false end function Low(unit) if unit and unit ~= nil and unit.type == myHero.type then if unit.health <= ((Settings.combo.ults.low/100*unit.maxHealth)*1.5) and GetDistance(unit) <= SkillR.range then return true else return false end end end function LastHit(unit) enemyMinions:update() if FarmKey then for i, minion in pairs(enemyMinions.objects) do if ValidTarget(minion) then local qDmg = myHero:CalcDamage(minion,(GetSpellData(_Q).level*20)+myHero.totalDamage) if SkillQ12.ready and GetDistance(minion) <= SkillQ12.range and Settings.farm.useQ12 then if qDmg >= minion.health then CastQ12(minion, true) end end if SkillQ3.ready and GetDistance(minion) <= SkillQ3.range and Settings.farm.useQ3 then local qDmg = myHero:CalcDamage(minion,(GetSpellData(_Q).level*20)+myHero.totalDamage) if qDmg >= minion.health then CastQ3(minion, true) end end if SkillE.ready and GetDistance(minion) <= SkillE.range and Settings.farm.useE then local eDmg = getEDmg(minion) if eDmg >= minion.health and (not UnderTurret(eEndPos(minion),true)) or towerUnit~=nil then CastSpell(_E, minion) end end end end end end function Harass(unit) if Settings.harass.useQ12 then CastQ12(target) end if Settings.harass.useQ3 then CastQ3(target) end end function LaneClear() enemyMinions:update() if LaneClearKey then for i, minion in pairs(enemyMinions.objects) do if ValidTarget(minion) and minion ~= nil then local qDmg = myHero:CalcDamage(minion,(GetSpellData(_Q).level*20)+myHero.totalDamage) if SkillQ12.ready and GetDistance(minion) <= SkillQ12.range and Settings.lane.useQ then local BestPos, BestHit = GetBestLineFarmPosition(SkillQ12.range, SkillQ12.width, enemyMinions.objects) if BestPos ~= nil and BestHit >= 2 and qDmg >= minion.health then CastSpell(_Q, BestPos.x, BestPos.z) else CastSpell(_Q, BestPos.x, BestPos.z) end end if SkillQ3.ready and GetDistance(minion) <= SkillQ3.range and Settings.lane.useQ3 then local qDmg = myHero:CalcDamage(minion,(GetSpellData(_Q).level*20)+myHero.totalDamage) local BestPos, BestHit = GetBestLineFarmPosition(SkillQ3.range, SkillQ3.width, enemyMinions.objects) if BestPos ~= nil and BestHit >= 2 and qDmg >= minion.health then CastSpell(_Q, BestPos.x, BestPos.z) else CastSpell(_Q, BestPos.x, BestPos.z) end end if Settings.lane.useE == 1 and GetDistance(minion, myHero) <= SkillE.range and SkillE.ready then local eDmg = getEDmg(minion) if eDmg >= minion.health and (not UnderTurret(eEndPos(minion),true)) or towerUnit~=nil then CastSpell(_E, minion) elseif Settings.lane.useE == 2 and (not UnderTurret(eEndPos(minion),true)) or towerUnit~=nil and GetDistance(minion, myHero) <= SkillE.range then CastSpell(_E, minion) end end if Settings.lane.laneItems then UseItems(minion) end end end end end function JungleClear() if Settings.jungle.jungleKey then local JungleMob = GetJungleMob() if JungleMob ~= nil then if SkillQ.ready and GetDistance(JungleMob) <= SkillQ.range and Settings.jungle.useQ then CastSpell(_Q, JungleMob.x, JungleMob.z) end if SkillE.range and GetDistance(JungleMob) <= SkillE.range and Settings.jungle.useE then CastSpell(_E, JungleMob) end end end end function flee() mPos = getNearestMinion(mousePos) if SkillE.ready and mPos then CastSpell(_E, mPos) else myHero:MoveTo(mousePos.x, mousePos.z) end end function smartEgap() mPos = getNearestMinion(mousePos) if ValidTarget(Target) and GetDistance(Target) >= SkillE.range and SkillE.ready and mPos then CastSpell(_E, mPos) else myHero:MoveTo(mousePos.x, mousePos.z) end if not SkillQ.ready then mPos = getNearestMinion(mousePos) if SkillE.ready and mPos then CastSpell(_E, mPos) else myHero:MoveTo(mousePos.x, mousePos.z) end end end function CastQ12(unit, minion) if SkillQ12.ready and ValidTarget(unit,500) then local CastPosition, HitChance, Position = VP:GetLineCastPosition(unit, 0.25, 55, 475, 1500, myHero, false) if HitChance >= Settings.misc.pred.hc12 and not IsDashing() then CastSpell(_Q, CastPosition.x, CastPosition.z) end end end function CastQ3(unit, minion) if SkillQ3.ready and ValidTarget(unit,1000) then local AOECastPosition, MainTargetHitChance, nTargets = VP:GetLineAOECastPosition(unit, 0.75, 90, 1000, 1500, myHero, false) if MainTargetHitChance >= Settings.misc.pred.hc3 and nTargets >= 1 and not IsDashing() then CastSpell(_Q, AOECastPosition.x, AOECastPosition.z) end end end function AutoQminion(unit, minion) local JungleMob = GetJungleMob() if JungleMob ~= nil then if SkillQ12.ready and Settings.esc.useQjungle and GetDistance(JungleMob) <= SkillQ12.range then CastSpell(_Q, JungleMob.x, JungleMob.z) end end end function AutoQenemyminion(unit, minion) enemyMinions:update() for index, minion in pairs(enemyMinions.objects) do if ValidTarget(minion) then if SkillQ12.ready and Settings.esc.useQminion and GetDistance(minion) <= SkillQ12.range then CastQ12(minion) end end end end function AutoQenemy() if ValidTarget(target, SkillQ.range) and Settings.harass.useQ12 and Settings.harass.underTower then CastQ12(target) elseif not Settings.harass.underTower and not UnderTurret(enemy) then CastQ12(target) end if ValidTarget(target, SkillQ3.range) and Settings.harass.useQ3 and Settings.harass.underTower then CastQ3(target) elseif not Settings.harass.underTower and not UnderTurret(enemy) and ValidTarget(target, SkillQ3.range) then CastQ3(target) end end function autoRkillable() for i = 1, heroManager.iCount, 1 do local eTarget = heroManager:getHero(i) if Settings.ks.autoR then if ValidTarget(eTarget, SkillR.range) and Low(eTarget) then CastR(target) end end end end function AutoUlt() if Settings.combo.ults.autoult and Settings.combo.ults.Ult3 > 0 and #EnemiesKnocked() >= Settings.combo.ults.Ult3 then CastR(target) end end function CastR(target) if SkillR.ready and ValidTarget(target, SkillR.range) and KnockedUnits[target.networkID] ~= nil and GetGameTimer() > KnockedUnits[target.networkID].startTime + Settings.combo.ults.delayR then CastSpell(_R, target) end end function EnemiesKnocked() local Knockeds = {} for i, enemy in ipairs(GetEnemyHeroes()) do if ValidTarget(enemy, SkillR.range) and KnockedUnits[enemy.networkID] ~= nil then table.insert(Knockeds, enemy) end end return Knockeds end function KillSteal() for idx, enemy in ipairs(GetEnemyHeroes()) do if ValidTarget(enemy, SkillQ.range) then local qDmg = myHero:CalcDamage(enemy,(GetSpellData(_Q).level*20)+myHero.totalDamage) local eDmg = getEDmg(enemy) if SkillQ.ready and GetDistance(enemy) <= SkillQ12.range then if qDmg >= enemy.health then CastSpell(_Q, enemy) end end if SkillE.ready and GetDistance(enemy) <= (SkillE.range-50) then if eDmg >= enemy.health and (not UnderTurret(eEndPos(enemy),true)) or towerUnit~=nil then CastSpell(_E, enemy) end end end end end function IsDashing() return Tdashing end function IsDashing2() return Dashing end function IgniteCheck() if myHero:GetSpellData(SUMMONER_1).name:find("summonerdot") then ignite = SUMMONER_1 Settings.ks:addParam("autoIgnite", "Auto Ignite", SCRIPT_PARAM_ONOFF, true) elseif myHero:GetSpellData(SUMMONER_2).name:find("summonerdot") then ignite = SUMMONER_2 Settings.ks:addParam("autoIgnite", "Auto Ignite", SCRIPT_PARAM_ONOFF, true) end end function AutoIgnite() if Settings.ks.autoIgnite and ignite ~= nil and IREADY then local igniteDamage = 50 + 20 * myHero.level for i = 1, heroManager.iCount, 1 do local target = heroManager:getHero(i) if ValidTarget(target, 600) and target.team ~= myHero.team then if igniteDamage > (target.health - 25) then CastSpell(ignite, target) end end end end end function getEDmg(minion) return myHero:CalcMagicDamage(minion,((GetSpellData(_E).level*20)+50)*(1+0.25*eStack)+(myHero.ap*0.6)) end function eEndPos(unit) if unit ~= nil then if GetDistance(myHero,unit) < 410 then dashPointT = myHero + (Vector(unit) - myHero):normalized() * 485 else dashPointT = myHero + (Vector(unit) - myHero):normalized() * (GetDistance(myHero,unit) + 65) end return dashPointT end end function getNearestMinion(unit) local closestMinion = nil local nearestDistance = 0 enemyMinions:update() JungleMinions:update() for index, minion in pairs(enemyMinions.objects) do if minion ~= nil and minion.valid and string.find(minion.name,"Minion_") == 1 and minion.team ~= player.team and minion.dead == false then if GetDistance(minion) <= SkillE.range then --PrintChat(GetDistance(eEndPos(minion), unit) .. " - ".. GetDistance(unit)) if GetDistance(eEndPos(minion), unit) < GetDistance(unit) and nearestDistance < GetDistance(minion) then nearestDistance = GetDistance(minion) closestMinion = minion end end end end for index, minion in pairs(JungleMinions.objects) do if minion ~= nil and minion.valid and minion.dead == false then if GetDistance(minion) <= SkillE.range then if GetDistance(eEndPos(minion), unit) < GetDistance(unit) and nearestDistance < GetDistance(minion) then nearestDistance = GetDistance(minion) closestMinion = minion end end end end for i = 1, heroManager.iCount, 1 do local minion = heroManager:getHero(i) if ValidTarget(minion, SkillE.range) then if GetDistance(minion) <= SkillE.range then if GetDistance(eEndPos(minion), unit) < GetDistance(unit) and nearestDistance < GetDistance(minion) then nearestDistance = GetDistance(minion) closestMinion = minion end end end end return closestMinion end function OnApplyBuff(source, unit, buff) --if buff and unit ~= myHero then print(buff.name) end if not unit or not buff then return end if unit and unit.isMe and buff.name == "RegenerationPotion" then UsingPot = true end if unit.isMe and buff.name=="yasuodashscalar" then --PrintChat("E:" .. eStack) dashed = (buff.endTime - buff.startTime) eStack = 1 end if unit and source and buff and buff.name and unit.team and buff.type then if (buff.type == 29 or buff.type == 30) and unit.team ~= myHero.team then KnockedUnits[unit.networkID] = buff end end if unit.isMe and Settings.misc.useqss then if buff.name and buff.type == 5 or buff.type == 12 or buff.type == 11 or buff.type == 25 or buff.type == 7 or buff.type == 22 or buff.type == 21 or buff.type == 8 or buff.name == "MordekaiserChildrenOfTheGrave" or buff.name == "SkarnerImpale" or buff.name == "LuxLightBindingMis" or buff.name == "Wither" or buff.name == "SonaCrescendo" or buff.name == "DarkBindingMissile" or buff.name == "CurseoftheSadMummy" or buff.name == "EnchantedCrystalArrow" or buff.name == "BlindingDart" or buff.name == "LuluWTwo" or buff.name == "AhriSeduce" or buff.name == "CassiopeiaPetrifyingGaze" or buff.name == "Terrify" or buff.name == "HowlingGale" or buff.name == "JaxCounterStrike" or buff.name == "KennenShurikenStorm" or buff.name == "LeblancSoulShackle" or buff.name == "LeonaSolarFlare" or buff.name == "LissandraR" or buff.name == "AlZaharNetherGrasp" or buff.name == "MonkeyKingDecoy" or buff.name == "NamiQ" or buff.name == "OrianaDetonateCommand" or buff.name == "Pantheon_LeapBash" or buff.name == "PuncturingTaunt" or buff.name == "SejuaniGlacialPrisonStart" or buff.name == "SwainShadowGrasp" or buff.name == "Imbue" or buff.name == "ThreshQ" or buff.name == "UrgotSwap2" or buff.name == "VarusR" or buff.name == "VeigarEventHorizon" or buff.name == "ZedUlt" or buff.name == "ViR" or buff.name == "InfiniteDuress" or buff.name == "ZyraGraspingRoots" or(buff.type == 10 and buff.name and buff.name:lower():find("fleeslow"))or (buff.name:lower():find("summonerexhaust")) then UseQSS(myHero, true) end end end function OnRemoveBuff(unit, buff) if not unit or not buff or unit.type ~= myHero.type then return end if unit and unit.isMe and buff.name == "RegenerationPotion" then UsingPot = false end if unit and source and buff and buff.name and unit.team and buff.type then if (buff.type == 29 or buff.type == 30) and unit.team ~= myHero.team then KnockedUnits[unit.networkID] = nil end end if unit.isMe and buff.name=="yasuodashscalar" then --PrintChat("E:" .. eStack) eStack = 0 end end ------------------------------------------------------ -- Checks, menu & stuff ------------------------------------------------------ function Checks() SkillQ12.ready = (myHero:CanUseSpell(_Q) == READY and ( myHero:GetSpellData(_Q).name == "YasuoQW" or myHero:GetSpellData(_Q).name == "yasuoq2w")) SkillQ3.ready = (myHero:CanUseSpell(_Q) == READY and myHero:GetSpellData(_Q).name == "yasuoq3w") SkillQ.ready = (myHero:CanUseSpell(_Q) == READY) SkillW.ready = (myHero:CanUseSpell(_W) == READY) SkillE.ready = (myHero:CanUseSpell(_E) == READY) SkillR.ready = (myHero:CanUseSpell(_R) == READY) IREADY = (ignite ~= nil and myHero:CanUseSpell(ignite) == READY) qBuffName = "Yasuo_Q_wind_ready_buff.troy" dashed = nil end function Menu() Settings = scriptConfig("GosuMechanics", "Yasuo") Settings:addSubMenu("["..myHero.charName.."] - Combo Settings", "combo") Settings.combo:addParam("comboKey", "Beast Mode", SCRIPT_PARAM_ONKEYDOWN, false, 32) Settings.combo:addParam("useQ12", "Use "..SkillQ12.name.." ", SCRIPT_PARAM_ONOFF, true) Settings.combo:addParam("useQ3", "Use "..SkillQ3.name.." ", SCRIPT_PARAM_ONOFF, true) Settings.combo:addParam("useE", "Use "..SkillE.name.." ", SCRIPT_PARAM_ONOFF, true) Settings.combo:addParam("useEGap", "Use E as Gap Closer", SCRIPT_PARAM_ONOFF, true) Settings.combo:addParam("dash", "Dash Always", SCRIPT_PARAM_ONOFF, true) Settings.combo:addParam("DistanceToE", "min Distance for GapClose",SCRIPT_PARAM_SLICE, 300, 0, 475, 0) Settings.combo:addParam("comboItems", "Use Items in Combo", SCRIPT_PARAM_ONOFF, true) Settings.combo:addSubMenu("["..myHero.charName.."] - Ult Settings", "ults") Settings.combo.ults:addParam("useR", "Use "..SkillR.name.." if Killable ", SCRIPT_PARAM_ONOFF, true) Settings.combo.ults:addParam("low", "when enemy hp is below", SCRIPT_PARAM_SLICE, 50, 0, 100, 0) Settings.combo.ults:addParam("autoult", "AutoR Toggle", SCRIPT_PARAM_ONOFF, true) Settings.combo.ults:addParam("Ult3", "When x enemy in air", SCRIPT_PARAM_SLICE, 3, 0, 5, 0) Settings.combo.ults:addParam("delayR", "Delay R Cast", SCRIPT_PARAM_SLICE, 0.5, 0, 2, 1) Settings.combo.ults:permaShow("autoult") Settings.combo:addSubMenu("["..myHero.charName.."] - Wombo Combo Ult", "WC") _Initiator(Settings.combo.WC):CheckGapcloserSpells():AddCallback( function(target) if SkillR.ready then CastSpell(_R) --print("Initiator Test") end end ) Settings:addSubMenu("["..myHero.charName.."] - Harass Settings", "harass") Settings.harass:addParam("harassKey", "Harass", SCRIPT_PARAM_ONKEYDOWN, false, GetKey("C")) Settings.harass:addParam("harassToggle", "Harass Toggle", SCRIPT_PARAM_ONKEYTOGGLE, false, GetKey("L")) Settings.harass:addParam("useQ12", "Use "..SkillQ.name.." ", SCRIPT_PARAM_ONOFF, true) Settings.harass:addParam("useQ3", "Use "..SkillQ3.name.." ", SCRIPT_PARAM_ONOFF, true) Settings.harass:addParam("useE", "Use "..SkillE.name.." ", SCRIPT_PARAM_ONOFF, true) Settings.harass:addParam("underTower", "AutoQ UnderTower", SCRIPT_PARAM_ONOFF, true) Settings.harass:permaShow("harassToggle") Settings:addSubMenu("["..myHero.charName.."] - LastHit", "farm") Settings.farm:addParam("farmKey", "LastHit", SCRIPT_PARAM_ONKEYDOWN, false, GetKey("A")) Settings.farm:addParam("useQ12", "use "..SkillQ12.name.." ", SCRIPT_PARAM_ONOFF, true) Settings.farm:addParam("useQ3", "use "..SkillQ3.name.." ", SCRIPT_PARAM_ONOFF, true) Settings.farm:addParam("useE", "use "..SkillE.name.." ", SCRIPT_PARAM_ONOFF, true) Settings:addSubMenu("["..myHero.charName.."] - Lane Clear Settings", "lane") Settings.lane:addParam("laneKey", "Lane Clear", SCRIPT_PARAM_ONKEYDOWN, false, GetKey("X")) Settings.lane:addParam("useQ", "LaneClear with "..SkillQ.name.." ", SCRIPT_PARAM_ONOFF, true) Settings.lane:addParam("useQ3", "LaneClear with "..SkillQ3.name.." ", SCRIPT_PARAM_ONOFF, true) Settings.lane:addParam("useE", "Use"..SkillE.name.." ", SCRIPT_PARAM_LIST, 1, {"LastHit", "Always"}) Settings.lane:addParam("laneItems", "Use Items in LaneClear", SCRIPT_PARAM_ONOFF, true) Settings:addSubMenu("["..myHero.charName.."] - Jungle Clear Settings", "jungle") Settings.jungle:addParam("jungleKey", "Jungle Clear", SCRIPT_PARAM_ONKEYDOWN, false, GetKey("X")) Settings.jungle:addParam("useQ", "use "..SkillQ.name.." ", SCRIPT_PARAM_ONOFF, true) Settings.jungle:addParam("useE", "use "..SkillE.name.." ", SCRIPT_PARAM_ONOFF, true) Settings:addSubMenu("["..myHero.charName.."] - Escape Settings", "esc") Settings.esc:addParam("run", "Escape Key", SCRIPT_PARAM_ONKEYDOWN, false, GetKey("Z")) Settings.esc:addParam("useQminion", "AutoQ EnemyMinion", SCRIPT_PARAM_ONOFF, true) Settings.esc:addParam("qminion", "AutoQ EnemyMinion Toggle", SCRIPT_PARAM_ONKEYTOGGLE, false, GetKey("K")) Settings.esc:addParam("useQjungle", "AutoQ JungleMob Toggle", SCRIPT_PARAM_ONKEYTOGGLE, true, GetKey("J")) Settings.esc:permaShow("qminion") Settings.esc:permaShow("useQjungle") Settings:addSubMenu("["..myHero.charName.."] - E GapClose Settings", "Egap") Settings.Egap:addParam("smartEgap", "(Test) EGap/Cheese Strat", SCRIPT_PARAM_ONKEYDOWN, false, GetKey("E")) Settings:addSubMenu("["..myHero.charName.."] - KillSteal Settings", "ks") Settings.ks:addParam("killSteal", "Use Smart Kill Steal", SCRIPT_PARAM_ONOFF, true) Settings.ks:addParam("autoR", "Auto-R KS", SCRIPT_PARAM_ONOFF, true) Settings.ks:permaShow("killSteal") Settings.ks:permaShow("autoR") Settings:addSubMenu("["..myHero.charName.."] - Draw Settings", "drawing") Settings.drawing:addParam("mDraw", "Disable All Range Draws", SCRIPT_PARAM_ONOFF, false) Settings.drawing:addParam("Target", "Draw Circle on Target", SCRIPT_PARAM_ONOFF, true) Settings.drawing:addParam("myHero", "Draw My Range", SCRIPT_PARAM_ONOFF, true) Settings.drawing:addParam("myColor", "Draw My Range Color", SCRIPT_PARAM_COLOR, {255, 74, 26, 255}) Settings.drawing:addParam("qDraw", "Draw "..SkillQ.name.." Range", SCRIPT_PARAM_ONOFF, true) Settings.drawing:addParam("qColor", "Draw "..SkillQ.name.." Color", SCRIPT_PARAM_COLOR, {255, 74, 26, 255}) Settings.drawing:addParam("wDraw", "Draw "..SkillW.name.." Range", SCRIPT_PARAM_ONOFF, true) Settings.drawing:addParam("wColor", "Draw "..SkillW.name.." Color", SCRIPT_PARAM_COLOR, {255, 74, 26, 255}) Settings.drawing:addParam("eDraw", "Draw "..SkillE.name.." Range", SCRIPT_PARAM_ONOFF, true) Settings.drawing:addParam("eColor", "Draw "..SkillE.name.." Color", SCRIPT_PARAM_COLOR, {255, 74, 26, 255}) Settings.drawing:addParam("rDraw", "Draw "..SkillR.name.." Range", SCRIPT_PARAM_ONOFF, true) Settings.drawing:addParam("rColor", "Draw "..SkillR.name.." Color", SCRIPT_PARAM_COLOR, {255, 74, 26, 255}) draw = Draw() draw:LoadMenu(Settings.drawing) Settings:addSubMenu("["..myHero.charName.."] - Misc Settings", "misc") Settings.misc:addParam("autoPot", "Auto-Pots", SCRIPT_PARAM_ONOFF, true) Settings.misc:addParam("usePots", "use when at % hp", SCRIPT_PARAM_SLICE, 50, 1, 100, 0) Settings.misc:addParam("useqss", "Auto-QSS", SCRIPT_PARAM_ONOFF, true) Settings.misc:addParam("delay", "Activation delay", SCRIPT_PARAM_SLICE, 0, 0, 250, 0) Settings.misc:permaShow("useqss") Settings.misc:addSubMenu("[" .. myHero.charName.. "] - Auto-Interrupt", "interrupt") Settings.misc.interrupt:addParam("r", "Interrupt with Yasuoq3w", SCRIPT_PARAM_ONOFF, true) for i, a in pairs(GetEnemyHeroes()) do if Interrupt[a.charName] ~= nil then for i, spell in pairs(Interrupt[a.charName].stop) do Settings.misc.interrupt:addParam(spell.spellName, a.charName.." - "..spell.name, SCRIPT_PARAM_ONOFF, true) end end end Settings.misc:addSubMenu("[" .. myHero.charName.. "] - Anti Gap-Closer", "gapClose") for _, enemy in pairs(GetEnemyHeroes()) do if isAGapcloserUnit[enemy.charName] ~= nil then Settings.misc.gapClose:addParam(enemy.charName, enemy.charName .. " - " .. enemy:GetSpellData(isAGapcloserUnit[enemy.charName].spell).name, SCRIPT_PARAM_ONOFF, true) end end Settings.misc:addSubMenu("[" .. myHero.charName.. "] - Use E-vade", "E") _Evader(Settings.misc.E):CheckCC():AddCallback( function(target) if SkillE.ready and ValidTarget(target) then local object = getNearestMinion(mousePos) if ValidTarget(object) and object.networkID ~= target.networkID then CastSpell(_E, object) --print("E-vade Test") end end end ) Settings.misc:addSubMenu("["..myHero.charName.."] - WindWall Settings", "blocks") Settings.misc.blocks:addParam("autoW", "Use Auto "..SkillW.name.." ", SCRIPT_PARAM_ONOFF, true) for i = 1, heroManager.iCount,1 do local hero = heroManager:getHero(i) if hero.team ~= player.team then if Champions[hero.charName] ~= nil then for index, skillshot in pairs(Champions[hero.charName].skillshots) do if skillshot.blockable == true then Settings.misc.blocks:addParam(skillshot.spellName, hero.charName .. " - " .. skillshot.name, SCRIPT_PARAM_ONOFF, true) end end end end end Settings.misc.blocks:addParam("autoWdelay", "WindWall Humanizer", SCRIPT_PARAM_SLICE, 0.5, 0, 2, 1) Settings.misc:addSubMenu("["..myHero.charName.."] - Prediction Settings", "pred") Settings.misc.pred:addParam("hc12", "SteelTempest HitChance", SCRIPT_PARAM_SLICE, 1, 0, 2, 0) Settings.misc.pred:addParam("hc3", "EmpwrdTempest HitChance", SCRIPT_PARAM_SLICE, 1, 0, 2, 0) ts:AddToMenu(Menu) end -- Barasia, vadash, viseversa function DrawCircleNextLvl(x, y, z, radius, width, color, chordlength) radius = radius or 300 quality = math.max(8,round(180/math.deg((math.asin((chordlength/(2*radius))))))) quality = 2 * math.pi / quality radius = radius*.92 local points = {} for theta = 0, 2 * math.pi + quality, quality do local c = WorldToScreen(D3DXVECTOR3(x + radius * math.cos(theta), y, z - radius * math.sin(theta))) points[#points + 1] = D3DXVECTOR2(c.x, c.y) end DrawLines2(points, width or 1, color or 4294967295) end function round(num) if num >= 0 then return math.floor(num+.5) else return math.ceil(num-.5) end end function DrawCircle(x, y, z, radius, color) local vPos1 = Vector(x, y, z) local vPos2 = Vector(cameraPos.x, cameraPos.y, cameraPos.z) local tPos = vPos1 - (vPos1 - vPos2):normalized() * radius local sPos = WorldToScreen(D3DXVECTOR3(tPos.x, tPos.y, tPos.z)) if OnScreen({ x = sPos.x, y = sPos.y }, { x = sPos.x, y = sPos.y }) then DrawCircleNextLvl(x, y, z, radius, 1, color, 300) end end function DrawCircle2(x, y, z, radius, color) local vPos1 = Vector(x, y, z) local vPos2 = Vector(cameraPos.x, cameraPos.y, cameraPos.z) local tPos = vPos1 - (vPos1 - vPos2):normalized() * radius local sPos = WorldToScreen(D3DXVECTOR3(tPos.x, tPos.y, tPos.z)) if OnScreen({ x = sPos.x, y = sPos.y }, { x = sPos.x, y = sPos.y }) then DrawCircleNextLvl(x, y, z, radius, 1, color, 75) end end class "Draw" function Draw:__init() self.Menu = nil end function Draw:LoadMenu(menu) self.Settings = menu self.Settings:addParam("dmg","Draw Damage", SCRIPT_PARAM_ONOFF, true) AddDrawCallback(function() self:OnDraw() end) end function Draw:OnDraw() if myHero.dead then return end if self.Settings.dmg then self:DrawDamageCalculation() end end function Draw:DrawDamageCalculation() for idx, enemy in ipairs(GetEnemyHeroes()) do local p = WorldToScreen(D3DXVECTOR3(enemy.x, enemy.y, enemy.z)) if ValidTarget(enemy) and enemy.visible and OnScreen(p.x, p.y) then local dmg = (getDmg("Q", enemy, myHero)+getDmg("E", enemy, myHero)+getDmg("R", enemy, myHero)+getDmg("IGNITE", enemy, myHero)) local q = getDmg("Q", enemy, myHero) local e = getDmg("E", enemy, myHero) local r = getDmg("R", enemy, myHero) if dmg >= enemy.health then self:DrawLineHPBar(dmg, "FUCK HIM! OR I WILL FUCK YOU!", enemy, true) else local spells = "" if q then spells = "Q+" end if e then spells = spells .. "E+" end if r then spells = spells .. "R" end self:DrawLineHPBar(dmg, spells, enemy, true) end end end end function Draw:GetHPBarPos(enemy) enemy.barData = {PercentageOffset = {x = -0.05, y = 0}} local barPos = GetUnitHPBarPos(enemy) local barPosOffset = GetUnitHPBarOffset(enemy) local barOffset = { x = enemy.barData.PercentageOffset.x, y = enemy.barData.PercentageOffset.y } local barPosPercentageOffset = { x = enemy.barData.PercentageOffset.x, y = enemy.barData.PercentageOffset.y } local BarPosOffsetX = -50 local BarPosOffsetY = 46 local CorrectionY = 39 local StartHpPos = 31 barPos.x = math.floor(barPos.x + (barPosOffset.x - 0.5 + barPosPercentageOffset.x) * BarPosOffsetX + StartHpPos) barPos.y = math.floor(barPos.y + (barPosOffset.y - 0.5 + barPosPercentageOffset.y) * BarPosOffsetY + CorrectionY) local StartPos = Vector(barPos.x , barPos.y, 0) local EndPos = Vector(barPos.x + 108 , barPos.y , 0) return Vector(StartPos.x, StartPos.y, 0), Vector(EndPos.x, EndPos.y, 0) end function Draw:DrawLineHPBar(damage, text, unit, enemyteam) if unit.dead or not unit.visible then return end local p = WorldToScreen(D3DXVECTOR3(unit.x, unit.y, unit.z)) if not OnScreen(p.x, p.y) then return end local thedmg = 0 local line = 2 local linePosA = {x = 0, y = 0 } local linePosB = {x = 0, y = 0 } local TextPos = {x = 0, y = 0 } if damage >= unit.maxHealth then thedmg = unit.maxHealth - 1 else thedmg = damage end thedmg = math.round(thedmg) local StartPos, EndPos = self:GetHPBarPos(unit) local Real_X = StartPos.x + 24 local Offs_X = (Real_X + ((unit.health - thedmg) / unit.maxHealth) * (EndPos.x - StartPos.x - 2)) if Offs_X < Real_X then Offs_X = Real_X end local mytrans = 350 - math.round(255*((unit.health-thedmg)/unit.maxHealth)) if mytrans >= 255 then mytrans=254 end local my_bluepart = math.round(400*((unit.health-thedmg)/unit.maxHealth)) if my_bluepart >= 255 then my_bluepart=254 end if enemyteam then linePosA.x = Offs_X-150 linePosA.y = (StartPos.y-(30+(line*15))) linePosB.x = Offs_X-150 linePosB.y = (StartPos.y-10) TextPos.x = Offs_X-148 TextPos.y = (StartPos.y-(30+(line*15))) else linePosA.x = Offs_X-125 linePosA.y = (StartPos.y-(30+(line*15))) linePosB.x = Offs_X-125 linePosB.y = (StartPos.y-15) TextPos.x = Offs_X-122 TextPos.y = (StartPos.y-(30+(line*15))) end DrawLine(linePosA.x, linePosA.y, linePosB.x, linePosB.y , 2, ARGB(mytrans, 255, my_bluepart, 0)) DrawText(tostring(thedmg).." "..tostring(text), 15, TextPos.x, TextPos.y , ARGB(mytrans, 255, my_bluepart, 0)) end function Variables() SkillQ12 = { name = "Steel Tempest", range = 475, delay = 0.25, speed = 1500, width = 55 } SkillQ3 = { name = "Empowered Tempest", range = 1000, delay = 0.75, speed = 1500, width = 90, radius = 90 } SkillQ = { name = "Steel Tempest", range = 475, delay = 0.25, speed = 1500, width = 55, ready = false } SkillW = { name = "Wind Wall", range = 475, delay = 0.4, speed = math.huge, width = 400, ready = false } SkillE = { name = "Sweeping Blade", range = 475, delay = 0.25, speed = 1200, width = nil, ready = false } SkillR = { name = "Last Breath", range = 1200, delay = 0.4, speed = math.huge, ready = false } enemyMinions = minionManager(MINION_ENEMY, 1300, myHero, MINION_SORT_HEALTH_ASC) JungleMinions = minionManager(MINION_JUNGLE, 1300, myHero, MINION_SORT_HEALTH_ASC) Minions = minionManager(MINION_ENEMY, 1300, player, MINION_SORT_HEALTH_ASC) ts = _SimpleTargetSelector(TARGET_LESS_CAST_PRIORITY, 1100, DAMAGE_PHYSICAL, true) VP = VPrediction() DashedUnits = {} KnockedUnits = {} JungleMobs = {} JungleFocusMobs = {} if GetGame().map.shortName == "twistedTreeline" then TwistedTreeline = true else TwistedTreeline = false end _G.oldDrawCircle = rawget(_G, 'DrawCircle') _G.DrawCircle = DrawCircle2 priorityTable = { AP = { "Annie", "Ahri", "Akali", "Anivia", "Annie", "Brand", "Cassiopeia", "Diana", "Evelynn", "FiddleSticks", "Fizz", "Gragas", "Heimerdinger", "Karthus", "Kassadin", "Katarina", "Kayle", "Kennen", "Leblanc", "Lissandra", "Lux", "Malzahar", "Mordekaiser", "Morgana", "Nidalee", "Orianna", "Ryze", "Sion", "Swain", "Syndra", "Teemo", "TwistedFate", "Veigar", "Viktor", "Vladimir", "Xerath", "Ziggs", "Zyra", "Velkoz" }, Support = { "Alistar", "Blitzcrank", "Janna", "Karma", "Leona", "Lulu", "Nami", "Nunu", "Sona", "Soraka", "Taric", "Thresh", "Zilean", "Braum" }, Tank = { "Amumu", "Chogath", "DrMundo", "Galio", "Hecarim", "Malphite", "Maokai", "Nasus", "Rammus", "Sejuani", "Nautilus", "Shen", "Singed", "Skarner", "Volibear", "Warwick", "Yorick", "Zac" }, AD_Carry = { "Ashe", "Caitlyn", "Corki", "Draven", "Ezreal", "Graves", "Jayce", "Jinx", "KogMaw", "Lucian", "MasterYi", "MissFortune", "Pantheon", "Quinn", "Shaco", "Sivir", "Talon","Tryndamere", "Tristana", "Twitch", "Urgot", "Varus", "Vayne", "Yasuo", "Zed" }, Bruiser = { "Aatrox", "Darius", "Elise", "Fiora", "Gangplank", "Garen", "Irelia", "JarvanIV", "Jax", "Khazix", "LeeSin", "Nocturne", "Olaf", "Poppy", "Renekton", "Rengar", "Riven", "Rumble", "Shyvana", "Trundle", "Udyr", "Vi", "MonkeyKing", "XinZhao" } } Items = { BRK = { id = 3153, range = 450, reqTarget = true, slot = nil }, BWC = { id = 3144, range = 400, reqTarget = true, slot = nil }, DFG = { id = 3128, range = 750, reqTarget = true, slot = nil }, HGB = { id = 3146, range = 400, reqTarget = true, slot = nil }, RSH = { id = 3074, range = 350, reqTarget = false, slot = nil }, STD = { id = 3131, range = 350, reqTarget = false, slot = nil }, TMT = { id = 3077, range = 350, reqTarget = false, slot = nil }, YGB = { id = 3142, range = 350, reqTarget = false, slot = nil }, BFT = { id = 3188, range = 750, reqTarget = true, slot = nil }, RND = { id = 3143, range = 275, reqTarget = false, slot = nil } } if not TwistedTreeline then JungleMobNames = { ["SRU_MurkwolfMini2.1.3"] = true, ["SRU_MurkwolfMini2.1.2"] = true, ["SRU_MurkwolfMini8.1.3"] = true, ["SRU_MurkwolfMini8.1.2"] = true, ["SRU_BlueMini1.1.2"] = true, ["SRU_BlueMini7.1.2"] = true, ["SRU_BlueMini21.1.3"] = true, ["SRU_BlueMini27.1.3"] = true, ["SRU_RedMini10.1.2"] = true, ["SRU_RedMini10.1.3"] = true, ["SRU_RedMini4.1.2"] = true, ["SRU_RedMini4.1.3"] = true, ["SRU_KrugMini11.1.1"] = true, ["SRU_KrugMini5.1.1"] = true, ["SRU_RazorbeakMini9.1.2"] = true, ["SRU_RazorbeakMini9.1.3"] = true, ["SRU_RazorbeakMini9.1.4"] = true, ["SRU_RazorbeakMini3.1.2"] = true, ["SRU_RazorbeakMini3.1.3"] = true, ["SRU_RazorbeakMini3.1.4"] = true } FocusJungleNames = { ["SRU_Blue1.1.1"] = true, ["SRU_Blue7.1.1"] = true, ["SRU_Murkwolf2.1.1"] = true, ["SRU_Murkwolf8.1.1"] = true, ["SRU_Gromp13.1.1"] = true, ["SRU_Gromp14.1.1"] = true, ["Sru_Crab16.1.1"] = true, ["Sru_Crab15.1.1"] = true, ["SRU_Red10.1.1"] = true, ["SRU_Red4.1.1"] = true, ["SRU_Krug11.1.2"] = true, ["SRU_Krug5.1.2"] = true, ["SRU_Razorbeak9.1.1"] = true, ["SRU_Razorbeak3.1.1"] = true, ["SRU_Dragon6.1.1"] = true, ["SRU_Baron12.1.1"] = true } else FocusJungleNames = { ["TT_NWraith1.1.1"] = true, ["TT_NGolem2.1.1"] = true, ["TT_NWolf3.1.1"] = true, ["TT_NWraith4.1.1"] = true, ["TT_NGolem5.1.1"] = true, ["TT_NWolf6.1.1"] = true, ["TT_Spiderboss8.1.1"] = true } JungleMobNames = { ["TT_NWraith21.1.2"] = true, ["TT_NWraith21.1.3"] = true, ["TT_NGolem22.1.2"] = true, ["TT_NWolf23.1.2"] = true, ["TT_NWolf23.1.3"] = true, ["TT_NWraith24.1.2"] = true, ["TT_NWraith24.1.3"] = true, ["TT_NGolem25.1.1"] = true, ["TT_NWolf26.1.2"] = true, ["TT_NWolf26.1.3"] = true } end for i = 0, objManager.maxObjects do local object = objManager:getObject(i) if object and object.valid and not object.dead then if FocusJungleNames[object.name] then JungleFocusMobs[#JungleFocusMobs+1] = object elseif JungleMobNames[object.name] then JungleMobs[#JungleMobs+1] = object end end end end function SetPriority(table, hero, priority) for i=1, #table, 1 do if hero.charName:find(table[i]) ~= nil then TS_SetHeroPriority(priority, hero.charName) end end end function arrangePrioritys() for i, enemy in ipairs(GetEnemyHeroes()) do SetPriority(priorityTable.AD_Carry, enemy, 1) SetPriority(priorityTable.AP, enemy, 2) SetPriority(priorityTable.Support, enemy, 3) SetPriority(priorityTable.Bruiser, enemy, 4) SetPriority(priorityTable.Tank, enemy, 5) end end function arrangePrioritysTT() for i, enemy in ipairs(GetEnemyHeroes()) do SetPriority(priorityTable.AD_Carry, enemy, 1) SetPriority(priorityTable.AP, enemy, 1) SetPriority(priorityTable.Support, enemy, 2) SetPriority(priorityTable.Bruiser, enemy, 2) SetPriority(priorityTable.Tank, enemy, 3) end end function UseItems(unit) if unit ~= nil then for _, item in pairs(Items) do item.slot = GetInventorySlotItem(item.id) if item.slot ~= nil then if item.reqTarget and GetDistance(unit) < item.range then CastSpell(item.slot, unit) elseif not item.reqTarget then if (GetDistance(unit) - getHitBoxRadius(myHero) - getHitBoxRadius(unit)) < 50 then CastSpell(item.slot) end end end end end end function getHitBoxRadius(target) return GetDistance(target.minBBox, target.maxBBox)/2 end function PriorityOnLoad() if heroManager.iCount < 10 or (TwistedTreeline and heroManager.iCount < 6) then print("GosuMechanics: Too few champions to arrange priority.") elseif heroManager.iCount == 6 then arrangePrioritysTT() else arrangePrioritys() end end function GetJungleMob() for _, Mob in pairs(JungleFocusMobs) do if ValidTarget(Mob, 1300) then return Mob end end for _, Mob in pairs(JungleMobs) do if ValidTarget(Mob, 1300) then return Mob end end end function OnCreateObj(obj) if obj.valid then if FocusJungleNames[obj.name] then JungleFocusMobs[#JungleFocusMobs+1] = obj elseif JungleMobNames[obj.name] then JungleMobs[#JungleMobs+1] = obj end end --if GetDistance(obj)<50 then PrintChat(""..obj.name) end if GetDistance(obj)<100 and obj.name:lower():find("yasuo") and obj.name:lower():find("trail") then --PrintChat("BLA") attacked = true end if obj and GetDistance(obj)<=50 then if obj.name == qBuffName then SteelTempest = true end end if obj.name=="Yasuo_base_R_indicator.beam.troy" then knockedUp = knockedUp + 1 end if GetDistance(myHero, obj) < 50 and obj.name:lower():find("teleporthome") then isRecalling = true end end function OnDeleteObj(obj) for i, Mob in pairs(JungleMobs) do if obj.name == Mob.name then table.remove(JungleMobs, i) end end for i, Mob in pairs(JungleFocusMobs) do if obj.name == Mob.name then table.remove(JungleFocusMobs, i) end end if obj.name=="Yasuo_base_R_indicator.beam.troy" then knockedUp = knockedUp - 1 end if obj and GetDistance(obj)<=50 then if obj.name == qBuffName then SteelTempest = false end end if GetDistance(myHero, obj) < 50 and obj.name:lower():find("teleporthome") then DelayAction(function() isRecalling = false end, 0.5) end end function lowHp(unit) if unit.health <= (Settings.misc.usePots/100*myHero.maxHealth) then return true else return false end end function AutoPots() if REGPOT and lowHp(myHero) and not UsingPot and not IsRecalling then CastSpell(REGPOT) end end function GetItemSlot() for slot = ITEM_1, ITEM_7 do local currentItemName = myHero:GetSpellData(slot).name if currentItemName == "RegenerationPotion" then REGPOT = slot end end end function UseQSS(unit, scary) if lastRemove > os.clock() - 1 then return end for i, Item in pairs(Items) do local Item = Items[i] if GetInventoryItemIsCastable(Item.id) and GetDistanceSqr(unit) <= Item.range * Item.range then if Item.id == 3139 or Item.id == 3140 then if scary then DelayAction(function() CastItem(Item.id) end, Settings.misc.delay/1000) lastRemove = os.clock() return true end end end end end function UseItems(unit, scary) if not ValidTarget(unit) and unit ~= myHero then return end for i, Item in pairs(Items) do local Item = Items[i] if Item.id ~= 3140 and Item.id ~= 3139 then if GetInventoryItemIsCastable(Item.id) and GetDistanceSqr(unit) <= Item.range * Item.range then if Item.id == 3143 or Item.id == 3077 or Item.id == 3074 or Item.id == 3131 or Item.id == 3142 or Item.id == 2140 then CastItem(Item.id) else CastItem(Item.id, unit) return true end end end end end function CountEnemyHeroInRange(range, object) object = object or myHero range = range and range * range or myHero.range * myHero.range local enemyInRange = 0 for i = 1, heroManager.iCount, 1 do local hero = heroManager:getHero(i) if ValidTarget(hero) and not hero.dead and hero.visible and hero.team ~= myHero.team and GetDistanceSqr(object, hero) <= range then enemyInRange = enemyInRange + 1 end end return enemyInRange end function CountAllysInRange(range, object) local allyInRange = 0 local allies = GetAllyHeroes() if object ~= nil and range then for i, ally in pairs(allies) do if not ally.dead and ValidTarget(ally) and range > GetDistance(ally, object) then allyInRange = allyInRange + 1 end end end return allyInRange end function CountEnemiesNearUnitReg(unit, range) local count = 0 for i, enemy in pairs(sEnemies) do if not enemy.dead and enemy.visible then if GetDistanceSqr(unit, enemy) < range * range then count = count + 1 end end end return count end function GetSlotItemFromName(itemname) local slot for i = 6, 12 do local item = myHero:GetSpellData(i).name if ((#item > 0) and (item:lower() == itemname:lower())) then slot = i end end return slot end function GetSlotItem(id, unit) unit = unit or myHero if (not ItemNames[id]) then return ___GetInventorySlotItem(id, unit) end local name = ItemNames[id] for slot = ITEM_1, ITEM_7 do local item = unit:GetSpellData(slot).name if ((#item > 0) and (item:lower() == name:lower())) then return slot end end end function TrueRange() return myHero.range + GetDistance(myHero, myHero.minBBox) end function GetBestLineFarmPosition(range, width, objects) local BestPos local BestHit = 0 for i, object in ipairs(objects) do local EndPos = Vector(myHero.pos) + range * (Vector(object) - Vector(myHero.pos)):normalized() local hit = CountObjectsOnLineSegment(myHero.pos, EndPos, width, objects) if hit > BestHit then BestHit = hit BestPos = Vector(object) if BestHit == #objects then break end end end return BestPos, BestHit end function CountObjectsOnLineSegment(StartPos, EndPos, width, objects) local n = 0 for i, object in ipairs(objects) do local pointSegment, pointLine, isOnSegment = VectorPointProjectionOnLineSegment(StartPos, EndPos, object) if isOnSegment and GetDistanceSqr(pointSegment, object) < width * width then n = n + 1 end end return n end function GetBestCircularFarmPosition(range, radius, objects) local BestPos local BestHit = 0 for i, object in ipairs(objects) do local hit = CountObjectsNearPos(object.visionPos or object, range, radius, objects) if hit > BestHit then BestHit = hit BestPos = Vector(object) if BestHit == #objects then break end end end return BestPos, BestHit end function CountObjectsNearPos(pos, range, radius, objects) local n = 0 for i, object in ipairs(objects) do if GetDistance(pos, object) <= radius then n = n + 1 end end return n end for i, enemy in ipairs(GetEnemyHeroes()) do enemy.barData = {PercentageOffset = {x = 0, y = 0} } end function findClosestEnemy(obj) local closestEnemy = nil local currentEnemy = nil for i, currentEnemy in pairs(sEnemies) do if ValidTarget(currentEnemy) then if closestEnemy == nil then closestEnemy = currentEnemy end if GetDistanceSqr(currentEnemy.pos, obj) < GetDistanceSqr(closestEnemy.pos, obj) then closestEnemy = currentEnemy end end end return closestEnemy end function OnProcessSpell(object,spell) --if(object.charName=="Yasuo") then PrintChat(spellProc.name .. " " .. object.charName) end if object.isMe and spell.name:lower():find("recall") then --PrintChat(spellProc.name) end local unit = object if unit.isMe and spell.name == "YasuoDashWrapper" then lastE = os.clock() * 1000 ePos, sPos, myPos = Vector(spell.endPos.x, spell.endPos.y, spell.endPos.z), Vector(spell.startPos.x, spell.startPos.y, spell.startPos.z), Vector(myHero.pos.x, myHero.pos.y, myHero.pos.z) TargetPos = Vector(spell.target.pos.x, spell.target.pos.y, spell.target.pos.z) if GetDistance(sPos,TargetPos) < 410 then dashPoint = sPos + (TargetPos - sPos):normalized() * 475 else dashPoint = sPos + (TargetPos - sPos):normalized() * (GetDistance(sPos,TargetPos) + 65) end Eduration2 = os.clock() + 0.5 Eduration3 = os.clock() + 0.3 if EStacks == 1 then EStacks = 2 end Tdashing = true Tdashing2 = true end if myHero.dead then return end --if object.isMe and spellProc.name:lower():find("attack") then --animTime = spellProc.animationTime*0.1 --end if Settings.misc.blocks.autoW then if object.team ~= player.team and string.find(spell.name, "Basic") == nil then if Champions[object.charName] ~= nil then skillshot = Champions[object.charName].skillshots[spell.name] if skillshot ~= nil and skillshot.blockable == true then range = skillshot.range if not spell.startPos then spell.startPos.x = object.x spell.startPos.z = object.z end if GetDistance(spell.startPos) <= range then if GetDistance(spell.endPos) <= SkillW.range then if SkillW.ready and Settings.misc.blocks[spell.name] then DelayAction(function () CastSpell(_W, object.x, object.z) end, Settings.misc.blocks.autoWdelay / 1000) end end end end end end end if myHero.dead then return end if object.team == myHero.team then return end if Interrupt[object.charName] ~= nil then spell = Interrupt[object.charName].stop[spell.name] if spell ~= nil then if Settings.misc.interrupt[spell.name] then if ValidTarget(unit) and GetDistance(object) < SkillQ3.range and SkillQ3.ready and Settings.misc.interrupt.r then CastQ3(unit) end end end end local unit = object if unit.type == myHero.type and unit.team ~= myHero.team and isAGapcloserUnit[unit.charName] and GetDistance(unit) < 2000 and spell ~= nil then if spell.name == (type(isAGapcloserUnit[unit.charName].spell) == 'number' and unit:GetSpellData(isAGapcloserUnit[unit.charName].spell).name or isAGapcloserUnit[unit.charName].spell) and Settings.misc.gapClose[unit.charName] then if spell.target ~= nil and spell.target and spell.target.networkID == myHero.networkID or isAGapcloserUnit[unit.charName].spell == 'blindmonkqtwo' then CastQ3(object) elseif not spell.target then local startPos1 = Vector(unit.visionPos) + 300 * (Vector(spell.endPos) - Vector(unit.visionPos)):normalized() local startPos2 = Vector(unit.visionPos) + 100 * (Vector(spell.endPos) - Vector(unit.visionPos)):normalized() if (GetDistanceSqr(myHero.visionPos, unit.visionPos) > GetDistanceSqr(myHero.visionPos, endPos1) or GetDistanceSqr(myHero.visionPos, unit.visionPos) > GetDistanceSqr(myHero.visionPos, endPos2)) then CastQ3(startPos1.x, startPos2.z) end end end end end function OnProcessAttack(object,spell) --if(object.charName=="Yasuo") then PrintChat(spellProc.name .. " " .. object.charName) end if object.isMe and spell.name:lower():find("recall") then --PrintChat(spellProc.name) end local unit = object if unit and spell and unit.isMe and spell.name and spell.name:lower():find("attack") and spell.target and not spell.target.dead and Settings.combo.useQ12 and Settings.combo.comboKey and not IsDashing() then local t = spell.target DelayAction(function() CastSpell(_Q, t.x, t.z) end, spell.windUpTime + GetLatency() / 2000) end local unit = object if unit.isMe and spell.name == "YasuoDashWrapper" then lastE = os.clock() * 1000 ePos, sPos, myPos = Vector(spell.endPos.x, spell.endPos.y, spell.endPos.z), Vector(spell.startPos.x, spell.startPos.y, spell.startPos.z), Vector(myHero.pos.x, myHero.pos.y, myHero.pos.z) TargetPos = Vector(spell.target.pos.x, spell.target.pos.y, spell.target.pos.z) if GetDistance(sPos,TargetPos) < 410 then dashPoint = sPos + (TargetPos - sPos):normalized() * 475 else dashPoint = sPos + (TargetPos - sPos):normalized() * (GetDistance(sPos,TargetPos) + 65) end Eduration2 = os.clock() + 0.5 Eduration3 = os.clock() + 0.3 if EStacks == 1 then EStacks = 2 end Tdashing = true Tdashing2 = true end if myHero.dead then return end --if object.isMe and spellProc.name:lower():find("attack") then --animTime = spellProc.animationTime*0.1 --end if Settings.misc.blocks.autoW then if object.team ~= player.team and string.find(spell.name, "Basic") == nil then if Champions[object.charName] ~= nil then skillshot = Champions[object.charName].skillshots[spell.name] if skillshot ~= nil and skillshot.blockable == true then range = skillshot.range if not spell.startPos then spell.startPos.x = object.x spell.startPos.z = object.z end if GetDistance(spell.startPos) <= range then if GetDistance(spell.endPos) <= SkillW.range then if SkillW.ready and Settings.misc.blocks[spell.name] then DelayAction(function () CastSpell(_W, object.x, object.z) end, Settings.misc.blocks.autoWdelay / 1000) end end end end end end end if myHero.dead then return end if object.team == myHero.team then return end if Interrupt[object.charName] ~= nil then spell = Interrupt[object.charName].stop[spell.name] if spell ~= nil then if Settings.misc.interrupt[spell.name] then if ValidTarget(unit) and GetDistance(object) < SkillQ3.range and SkillQ3.ready and Settings.misc.interrupt.r then CastQ3(unit) end end end end local unit = object if unit.type == myHero.type and unit.team ~= myHero.team and isAGapcloserUnit[unit.charName] and GetDistance(unit) < 2000 and spell ~= nil then if spell.name == (type(isAGapcloserUnit[unit.charName].spell) == 'number' and unit:GetSpellData(isAGapcloserUnit[unit.charName].spell).name or isAGapcloserUnit[unit.charName].spell) and Settings.misc.gapClose[unit.charName] then if spell.target ~= nil and spell.target and spell.target.networkID == myHero.networkID or isAGapcloserUnit[unit.charName].spell == 'blindmonkqtwo' then CastQ3(object) elseif not spell.target then local startPos1 = Vector(unit.visionPos) + 300 * (Vector(spell.endPos) - Vector(unit.visionPos)):normalized() local startPos2 = Vector(unit.visionPos) + 100 * (Vector(spell.endPos) - Vector(unit.visionPos)):normalized() if (GetDistanceSqr(myHero.visionPos, unit.visionPos) > GetDistanceSqr(myHero.visionPos, endPos1) or GetDistanceSqr(myHero.visionPos, unit.visionPos) > GetDistanceSqr(myHero.visionPos, endPos2)) then CastQ3(startPos1.x, startPos2.z) end end end end end function GetPriority(enemy) return 1 + math.max(0, math.min(1.5, TS_GetPriority(enemy) * 0.25)) end function _GetDistanceSqr(p1, p2) p2 = p2 or player if p1 and p1.networkID and (p1.networkID ~= 0) and p1.visionPos then p1 = p1.visionPos end if p2 and p2.networkID and (p2.networkID ~= 0) and p2.visionPos then p2 = p2.visionPos end return GetDistanceSqr(p1, p2) end class "_SimpleTargetSelector" --ICreative's SimpleLib -- _SimpleTS function _SimpleTargetSelector:__init(mode, range, damageType) self.TS = TargetSelector(mode, range, damageType) self.target = nil self.range = range self.Menu = nil self.multiplier = 1.4 self.selected = nil AddTickCallback(function() self:update() end) AddMsgCallback( function(msg, key) if msg == WM_LBUTTONDOWN then local best = nil for i, enemy in ipairs(GetEnemyHeroes()) do if ValidTarget(enemy) then if GetDistanceSqr(enemy, mousePos) < math.pow(150, 2) then local p = WorldToScreen(D3DXVECTOR3(enemy.x, enemy.y, enemy.z)) if OnScreen(p.x, p.y) then if best == nil then best = enemy elseif GetPriority(best) > GetPriority(enemy) then best = enemy end end end end end if best then if self.selected and self.selected.networkID == best.networkID then print("Target Selector: " .. "New target unselected: "..best.charName.. "") self.selected = nil else print("Target Selector: " .. "New target selected: "..best.charName.. "") self.selected = best end end end end ) end function _SimpleTargetSelector:update() self.TS.range = self.range self.TS:update() self.target = self.TS.target if ValidTarget(self.selected, self.range * self.multiplier) and self.selected.type == myHero.type then self.target = self.selected end end function _SimpleTargetSelector:AddToMenu(Menu) if Settings then Settings:addSubMenu(myHero.charName.." - Target Selector Settings", "TS") self.Settings = Settings.TS self.Settings:addTS(self.TS) end end local EnemiesInGame = {}--ICreative's SimpleLib function IsGapclose(enemy, spelltype)--ICreative's SimpleLib if IsValidTarget(enemy) and KNOCKUP_SPELLS[enemy.charName] ~= nil then for champ, spell in pairs(KNOCKUP_SPELLS) do if enemy.charName == champ and spell == spelltype then return true end end end return false end function IsChanelling(enemy, spelltype)--ICreative's SimpleLib if IsValidTarget(enemy) and CHANELLING_SPELLS[enemy.charName] ~= nil then for champ, spell in pairs(CHANELLING_SPELLS) do if enemy.charName == champ and spell == spelltype then return true end end end return false end function IsCC(enemy, spelltype)--ICreative's SimpleLib if IsValidTarget(enemy) and EVADE_SPELLS[enemy.charName] ~= nil then for champ, spell in pairs(EVADE_SPELLS) do if enemy.charName == champ and spell == spelltype then return true end end end return false end function ExtraTime()--ICreative's SimpleLib return -0.07--Latency() - 0.1 end function Latency()--ICreative's SimpleLib return GetLatency()/2000 end class "_Initiator"--ICreative's SimpleLib local CHANELLING_SPELLS = { ["Caitlyn"] = "R", ["Katarina"] = "R", ["MasterYi"] = "W", ["Fiddlesticks"] = "R", ["Galio"] = "R", ["Lucian"] = "R", ["MissFortune"] = "R", ["VelKoz"] = "R", ["Nunu"] = "R", ["Shen"] = "R", ["Karthus"] = "R", ["Malzahar"] = "R", ["Pantheon"] = "R", ["Warwick"] = "R", ["Xerath"] = "R", } local KNOCKUP_SPELLS = { ["Aatrox"] = "Q", ["Alistar"] = "W", ["Alistar"] = "Q", ["Blitzcrank"] = "Q", ["Blitzcrank"] = "E", ["Chogath"] = "Q", ["Corki"] = "W", ["Diana"] = "R", ["Fizz"] = "R", ["Gnar"] = "E", ["Gragas"] = "E", ["Hecarim"] = "R", ["JarvanIV"] = "Q", ["JarvanIV"] = "R", ["KhaZix"] = "E", ["LeeSin"] = "R", ["Malphite"] = "R", ["MonkeyKing"] = "R", ["Nautilus"] = "Q", ["Orianna"] = "R", ["Pantheon"] = "R", ["Poppy"] = "E", ["Rammus"] = "Q", ["RekSai"] = "E", ["Renekton"] = "E", ["Riven"] = "Q", ["Rengar"] = "R", ["Sejuani"] = "Q", ["Sion"] = "R", ["Sion"] = "Q", ["Shyvana"] = "R", ["Talon"] = "E", ["Thresh"] = "E", ["Tristana"] = "R", ["Volibear"] = "Q", ["Vi"] = "Q", ["Vi"] = "R", ["XinZhao"] = "R", ["Yasuo"] = "Q", ["Zac"] = "E", } --CLASS INITIATOR--ICreative's SimpleLib function _Initiator:__init(menu) self.Callbacks = {} self.ActiveSpells = {} assert(menu, "_Initiator: menu is invalid!") self.Settings = menu if #GetAllyHeroes() > 0 and self.Settings~=nil then for idx, ally in ipairs(GetAllyHeroes()) do self.Settings:addParam(ally.charName.."Q", ally.charName.." (Q)", SCRIPT_PARAM_ONOFF, false) self.Settings:addParam(ally.charName.."W", ally.charName.." (W)", SCRIPT_PARAM_ONOFF, false) self.Settings:addParam(ally.charName.."E", ally.charName.." (E)", SCRIPT_PARAM_ONOFF, false) self.Settings:addParam(ally.charName.."R", ally.charName.." (R)", SCRIPT_PARAM_ONOFF, false) end self.Settings:addParam("Time", "Time Limit to Initiate", SCRIPT_PARAM_SLICE, 2.5, 0, 8, 0) AddProcessSpellCallback( function(unit, spell) if not myHero.dead and unit and spell and spell.name and not unit.isMe and unit.type and unit.team and GetDistanceSqr(myHero, unit) < 2000 * 2000 then if unit.type == myHero.type and unit.team == myHero.team then local spelltype, casttype = getSpellType(unit, spell.name) if spelltype == "Q" or spelltype == "W" or spelltype == "E" or spelltype == "R" then if self.Settings[unit.charName..spelltype] then table.insert(self.ActiveSpells, {Time = os.clock() - Latency(), Unit = unit}) end end end end end ) AddTickCallback( function() if #self.ActiveSpells > 0 then for i = #self.ActiveSpells, 1, -1 do local spell = self.ActiveSpells[i] if os.clock() + Latency() - spell.Time <= self.Settings.Time then self:TriggerCallbacks(spell.Unit) else table.remove(self.ActiveSpells, i) end end end end ) end end function _Initiator:CheckChannelingSpells() if #GetAllyHeroes() > 0 then for idx, ally in ipairs(GetAllyHeroes()) do for champ, spell in pairs(CHANELLING_SPELLS) do if ally.charName == champ then self.Settings[ally.charName..spell] = true end end end end return self end function _Initiator:CheckGapcloserSpells() if #GetAllyHeroes() > 0 then for idx, ally in ipairs(GetAllyHeroes()) do for champ, spell in pairs(KNOCKUP_SPELLS) do if ally.charName == champ then self.Settings[ally.charName..spell] = true end end end end return self end function _Initiator:AddCallback(cb) table.insert(self.Callbacks, cb) return self end function _Initiator:TriggerCallbacks(unit) for i, callback in ipairs(self.Callbacks) do callback(unit) end end class "_Evader" local EVADE_SPELLS = { ["Ahri"] = "E", ["Amumu"] = "Q", ["Amumu"] = "R", ["Anivia"] = "Q", ["Annie"] = "R", ["Ashe"] = "R", ["Bard"] = "Q", ["Blitzcrank"] = "Q", ["Brand"] = "Q", ["Brand"] = "W", ["Brand"] = "E", ["Braum"] = "Q", ["Caitlyn"] = "Q", ["Caitlyn"] = "R", ["Lucian"] = "R", ["MissFortune"] = "R", ["VelKoz"] = "R", ["Cassiopeia"] = "Q", ["Cassiopeia"] = "W", ["Cassiopeia"] = "R", ["Chogath"] = "Q", ["Darius"] = "E", ["Draven"] = "E", ["DrMundo"] = "Q", ["Ekko"] = "W", ["Elise"] = "Q", ["Elise"] = "E", ["Evelynn"] = "R", ["Ezreal"] = "Q", ["Ezreal"] = "W", ["Ezreal"] = "R", ["Fizz"] = "E", ["Fizz"] = "R", ["Galio"] = "R", ["Gnar"] = "R", ["Gragas"] = "R", ["Graves"] = "R", ["Graves"] = "Q", ["Janna"] = "Q", ["Jinx"] = "W", ["Jinx"] = "R", ["KhaZix"] = "W", ["KogMaw"] = "Q", ["KogMaw"] = "W", ["KogMaw"] = "E", ["KogMaw"] = "R", ["Leblanc"] = "E", ["LeeSin"] = "Q", ["Leona"] = "E", ["Leona"] = "R", ["Lux"] = "Q", ["Lux"] = "R", ["Malphite"] = "R", ["Morgana"] = "Q", ["Nami"] = "Q", ["Nautilus"] = "Q", ["Nidalee"] = "Q", ["Orianna"] = "R", ["Rengar"] = "E", ["Riven"] = "W", ["Riven"] = "R", ["Sejuani"] = "R", ["Sion"] = "E", ["Shen"] = "E", --["Shyvana"] = "R", ["Sona"] = "R", ["Soraka"] = "Q", ["Soraka"] = "W", ["Soraka"] = "E", ["Swain"] = "W", ["Taric"] = "R", ["Thresh"] = "Q", ["Varus"] = "R", ["Veigar"] = "E", ["Vi"] = "Q", ["Xerath"] = "E", ["Xerath"] = "R", ["Yasuo"] = "Q", ["Zyra"] = "E", ["Quinn"] = "E", ["Rumble"] = "E", ["Zed"] = "Q", } --CLASS EVADER--ICreative's SimpleLib function _Evader:__init(menu) assert(menu, "_Evader: menu is invalid!") self.Callbacks = {} self.ActiveSpells = {} self.Settings = menu if #GetEnemyHeroes() > 0 and self.Settings~=nil then for idx, enemy in ipairs(GetEnemyHeroes()) do self.Settings:addParam(enemy.charName.."Q", enemy.charName.." (Q)", SCRIPT_PARAM_ONOFF, false) self.Settings:addParam(enemy.charName.."W", enemy.charName.." (W)", SCRIPT_PARAM_ONOFF, false) self.Settings:addParam(enemy.charName.."E", enemy.charName.." (E)", SCRIPT_PARAM_ONOFF, false) self.Settings:addParam(enemy.charName.."R", enemy.charName.." (R)", SCRIPT_PARAM_ONOFF, false) end self.Settings:addParam("Time", "Time Limit to Evade", SCRIPT_PARAM_SLICE, 0.7, 0, 4, 1) self.Settings:addParam("Humanizer", "% of Humanizer", SCRIPT_PARAM_SLICE, 0, 0, 100) AddProcessSpellCallback( function(unit, spell) if not myHero.dead and unit and spell and spell.name and not unit.isMe and unit.type and unit.team and GetDistanceSqr(myHero, unit) < 2000 * 2000 then if unit.type == myHero.type and unit.team ~= myHero.team then local spelltype, casttype = getSpellType(unit, spell.name) if spelltype == "Q" or spelltype == "W" or spelltype == "E" or spelltype == "R" then if self.Settings[unit.charName..spelltype] then DelayAction( function() table.insert(self.ActiveSpells, {Time = os.clock() - Latency(), Unit = unit, Spell = spell, SpellType = spelltype}) self:CheckHitChampion(unit, spell, spelltype) end , math.max(spell.windUpTime * self.Settings.Humanizer/100 - 2 * Latency(), 0) ) end end end end end ) AddTickCallback( function() if #self.ActiveSpells > 0 then for i = #self.ActiveSpells, 1, -1 do local sp = self.ActiveSpells[i] if os.clock() + Latency() - sp.Time <= self.Settings.Time then local unit = sp.Unit local spell = sp.Spell local spelltype = sp.SpellType self:CheckHitChampion(unit, spell, spelltype) else table.remove(self.ActiveSpells, i) end end end end ) end return self end function _Evader:CheckHitChampion(unit, spell, spelltype, champion) if unit and spell and spelltype and unit.valid then local hitchampion = false local champion = champion ~= nil and champion or myHero if skillData[unit.charName] ~= nil and skillData[unit.charName][spelltype] ~= nil then local shottype = skillData[unit.charName][spelltype].type local radius = skillData[unit.charName][spelltype].radius local maxdistance = skillData[unit.charName][spelltype].maxdistance if shottype == 0 then hitchampion = spell.target and spell.target.networkID == champion.networkID or false elseif shottype == 1 then hitchampion = checkhitlinepass(unit, spell.endPos, radius, maxdistance, champion, champion.boundingRadius) elseif shottype == 2 then hitchampion = checkhitlinepoint(unit, spell.endPos, radius, maxdistance, champion, champion.boundingRadius) elseif shottype == 3 then hitchampion = checkhitaoe(unit, spell.endPos, radius, maxdistance, champion, champion.boundingRadius) elseif shottype == 4 then hitchampion = checkhitcone(unit, spell.endPos, radius, maxdistance, champion, champion.boundingRadius) elseif shottype == 5 then hitchampion = checkhitwall(unit, spell.endPos, radius, maxdistance, champion, champion.boundingRadius) elseif shottype == 6 then hitchampion = checkhitlinepass(unit, spell.endPos, radius, maxdistance, champion, champion.boundingRadius) or checkhitlinepass(unit, Vector(unit)*2-spell.endPos, radius, maxdistance, champion, champion.boundingRadius) elseif shottype == 7 then hitchampion = checkhitcone(spell.endPos, unit, radius, maxdistance, champion, champion.boundingRadius) end else if spell.target ~= nil and spell.target.networkID == champion.networkID then hitchampion = true end if spell.endPos ~= nil then local pointSegment, pointLine, isOnSegment = VectorPointProjectionOnLineSegment(Vector(unit), Vector(spell.endPos.x, unit.y, spell.endPos.y), champion) if isOnSegment and GetDistanceSqr(pointSegment, champion) < math.pow(300, 2) then hitchampion = true end end end if hitchampion then self:TriggerCallbacks(unit, spell) end end end function _Evader:CheckCC() if #GetEnemyHeroes() > 0 then for idx, enemy in ipairs(GetEnemyHeroes()) do for champ, spell in pairs(EVADE_SPELLS) do if enemy.charName == champ then self.Settings[enemy.charName..spell] = true end end end end return self end function _Evader:AddCallback(cb) table.insert(self.Callbacks, cb) return self end function _Evader:TriggerCallbacks(unit, spell) for i, callback in ipairs(self.Callbacks) do callback(unit, spell) end end