if GetObjectName(myHero) ~= "Draven" then return end
--MonTour Draven:V1.0.0.4 - updated GoS:myHeroPos() to GetOrigin(myHero)
PrintChat(string.format("MonTour Draven: loaded by MarCiii!"))
PrintChat(string.format("Version: 1.0.0.4"))
PrintChat(string.format("Credits to: Cloud for Axes Code"))
PrintChat(string.format("Credits to: iLoveSona for Interrupter"))
PrintChat(string.format("Credits to: Deftsu for ItemsUse Code"))
require('RecallUlt')
MonTourMenu = Menu("Draven", "Draven")
MonTourMenu:SubMenu("Info", "Info about Auto Q Walk")
MonTourMenu.Info:Info("Draven", "Info: Use Catch Q AutoWalk")
MonTourMenu.Info:Info("Draven", "for Catching the Axes of Q by")
MonTourMenu.Info:Info("Draven", "Single Pressing the Button. ")
MonTourMenu.Info:Info("Draven", "Do not HOLD the Catch Q AutoWalk")
MonTourMenu.Info:Info("Draven", "Button, cause of Forcing Movement!")
MonTourMenu.Info:Info("Draven", "You need to train, before jump into ranked!")
MonTourMenu:SubMenu("Combo", "Combo")
MonTourMenu.Combo:Key("CQ", "Catch Q AutoWalk", string.byte("A"))
MonTourMenu.Combo:Info("Draven", "Pickup Q if Range")
MonTourMenu.Combo:Slider("CQPR", " Axe/MyMouse < X (def: 400)", 400, 50, 1000, 1)
MonTourMenu.Combo:Boolean("CM", "Draw Q Catch Circle", true)
MonTourMenu.Combo:Boolean("QC", "Draw Q Mouse Circle", true)
MonTourMenu.Combo:Boolean("CWS", "Use W to Catch", true)
MonTourMenu.Combo:Boolean("Q", "Use Q", true)
MonTourMenu.Combo:Boolean("W", "Use W", true)
MonTourMenu.Combo:Slider("WMANA", "Use W Only if Mana > x%", 60, 1, 90, 1)
MonTourMenu.Combo:Boolean("E", "Use E OOR", true)
MonTourMenu.Combo:Boolean("EB", "Use E if Banshees", true)
MonTourMenu.Combo:Boolean("R", "Use R", false)
MonTourMenu:SubMenu("Items", "Items")
MonTourMenu.Items:Info("Draven", "Only in Combo and Harass")
MonTourMenu.Items:Boolean("Ignite", "Use Ignite", true)
MonTourMenu.Items:Boolean("CutBlade", "Bilgewater Cutlass", true)
MonTourMenu.Items:Slider("CutBlademyhp", "if My Health < x%", 50, 5, 100, 1)
MonTourMenu.Items:Slider("CutBladeehp", "if Enemy Health < x%", 20, 5, 100, 1)
MonTourMenu.Items:Info("Draven", " ")
MonTourMenu.Items:Boolean("bork", "Blade of the Ruined King", true)
MonTourMenu.Items:Slider("borkmyhp", "if My Health < x%", 50, 5, 100, 1)
MonTourMenu.Items:Slider("borkehp", "if Enemy Health < x%", 20, 5, 100, 1)
MonTourMenu.Items:Info("Draven", " ")
MonTourMenu.Items:Boolean("ghostblade", "Youmuu's Ghostblade", true)
MonTourMenu.Items:Slider("ghostbladeR", "If Enemy in Range (def: 600)", 600, 100, 2000, 1)
MonTourMenu.Items:Info("Draven", " ")
MonTourMenu.Items:Boolean("useRedPot", "Elixir of Wrath(REDPOT)", true)
MonTourMenu.Items:Slider("useRedPotR", "If Enemy in Range (def: 600)", 600, 100, 2000, 1)
MonTourMenu.Items:Info("Draven", " ")
MonTourMenu.Items:Boolean("QSS", "Always Use QSS", true)
MonTourMenu.Items:Slider("QSSHP", "if My Health < x%", 75, 0, 100, 1)
MonTourMenu:SubMenu("Harass", "Harass")
MonTourMenu.Harass:Boolean("QH", "Use Q", true)
MonTourMenu.Harass:Boolean("WH", "Use W", true)
MonTourMenu.Harass:Slider("WMANA", "Use Only W if Mana > x%", 60, 1, 90, 1)
MonTourMenu.Harass:Boolean("EH", "Use E OOR", true)
MonTourMenu.Harass:Boolean("EHB", "Use E if Banshees", true)
MonTourMenu.Harass:Boolean("RH", "Use R", false)
MonTourMenu:SubMenu("Clear", "Farming/Jungle")
MonTourMenu.Clear:Boolean("LHQ", "Use Q LastHit", true)
MonTourMenu.Clear:Boolean("LCQ", "Use Q LaneClear", true)
MonTourMenu.Clear:Boolean("LCJQ", "Use Q Jungle", true)
MonTourMenu:SubMenu("Steal", "JungleSteal")
MonTourMenu.Steal:Boolean("Dragon", "Use R Dragon", true)
MonTourMenu.Steal:Boolean("Baron", "Use R Baron", true)
MonTourMenu:SubMenu("Killsteal", "Killsteal")
MonTourMenu.Killsteal:Boolean("KSQE", "KillSteal with Q/E", true)
MonTourMenu.Killsteal:Boolean("KSR", "Killsteal with R", true)
MonTourMenu:SubMenu("Misc", "Misc")
MonTourMenu.Misc:Boolean("AL","AutoLevelSkills", true)
MonTourMenu.Misc:Boolean("QAA","Draw QAA Text", true)
MonTourMenu.Misc:Boolean("DOHP","Draw DMG over HP", true)
MonTourMenu.Misc:Info("Draven", " ")
MonTourMenu.Misc:Boolean("MGUN","Ultimate Notifier", true)
MonTourMenu.Misc:Boolean("MGUNDEB","TEXT DEBUG", false)
MonTourMenu.Misc:Slider("MGUNSIZE", "UN Text Size", 25, 5, 60, 1)
MonTourMenu.Misc:Slider("MGUNX", "UN X POS", 35, 0, 1600, 1)
MonTourMenu.Misc:Slider("MGUNY", "UN Y POS", 394, 0, 1055, 1)
minionManager = {}
minionManager.maxObjects = 0
minionManager.objects = {}
minionManager.unsorted = {}
minionManager.tick = 0
mapID = GetMapID()
spellData =
{
[_Q] = {dmg = function () return (GetBonusDmg(myHero)+GetBaseDamage(myHero))*(0.35 + GetCastLevel(myHero,_Q)*0.1) end,
CDR = function () return GetCastCooldown(myHero,_Q,GetCastLevel(myHero,_Q)) end,
mana = 45,
range = 550},
[_W] = {dmg = function () return 0 end,
mana = 40,
range = 600},
[_E] = {dmg = function () return 35 + 35*GetCastLevel(myHero,_E) + 0.5*GetBonusDmg(myHero) end,
mana = 70,
speed = 1600,
delay = 250,
range = 1050,
width = 70},
[_R] = {dmg = function () return 75 + 100*GetCastLevel(myHero,_R) + 1.1*GetBonusDmg(myHero) end,
mana = 120,
speed = 2000,
delay = 1000,
range = 20000,
width = 80},
}
CHANELLING_SPELLS = {
["Caitlyn"] = {_R},
["Katarina"] = {_R},
["MasterYi"] = {_W},
["FiddleSticks"] = {_W, _R},
["Galio"] = {_R},
["Lucian"] = {_R},
["MissFortune"] = {_R},
["VelKoz"] = {_R},
["Nunu"] = {_R},
["Shen"] = {_R},
["Karthus"] = {_R},
["Malzahar"] = {_R},
["Pantheon"] = {_R},
["Warwick"] = {_R},
["Xerath"] = {_Q, _R},
["Varus"] = {_Q},
["TahmKench"] = {_R},
["TwistedFate"] = {_R},
["Janna"] = {_R}
}
GAPCLOSER_SPELLS = {
["Aatrox"] = {_Q},
["Akali"] = {_R},
["Alistar"] = {_W},
["Amumu"] = {_Q},
["Corki"] = {_W},
["Diana"] = {_R},
["Elise"] = {_Q, _E},
["FiddleSticks"] = {_R},
["Ezreal"] = {_E},
["Fiora"] = {_Q},
["Fizz"] = {_Q},
["Gnar"] = {_E},
["Gragas"] = {_E},
["Graves"] = {_E},
["Hecarim"] = {_R},
["Irelia"] = {_Q},
["JarvanIV"] = {_Q, _R},
["Jax"] = {_Q},
["Jayce"] = {_Q},
["Katarina"] = {_E},
["Kassadin"] = {_R},
["Kennen"] = {_E},
["KhaZix"] = {_E},
["Lissandra"] = {_E},
["LeBlanc"] = {_W, _R},
["LeeSin"] = {_Q, _W},
["Leona"] = {_E},
["Lucian"] = {_E},
["Malphite"] = {_R},
["MasterYi"] = {_Q},
["MonkeyKing"] = {_E},
["Nautilus"] = {_Q},
["Nocturne"] = {_R},
["Olaf"] = {_R},
["Pantheon"] = {_W, _R},
["Poppy"] = {_E},
["RekSai"] = {_E},
["Renekton"] = {_E},
["Riven"] = {_Q, _E},
["Rengar"] = {_R},
["Sejuani"] = {_Q},
["Sion"] = {_R},
["Shen"] = {_E},
["Shyvana"] = {_R},
["Talon"] = {_E},
["Thresh"] = {_Q},
["Tristana"] = {_W},
["Tryndamere"] = {_E},
["Udyr"] = {_E},
["Volibear"] = {_Q},
["Vi"] = {_Q},
["XinZhao"] = {_E},
["Yasuo"] = {_E},
["Zac"] = {_E},
["Ziggs"] = {_W},
}
reticles = {}
local spellText = { "Q", "W", "E", "R" }
local callback = nil
local myTeam = GetTeam(GetMyHero())
local d = require 'DLib'
local GetEnemyHeroes = d.GetEnemyHeroes
local CHANELLING_SPELLS_enemy = {}
local GAPCLOSER_SPELLS_enemy = {}
--local submenu = menu.addItem(SubMenu.new("interrupter"))
--local submenuGapClose = submenu.addItem(SubMenu.new("gap close spell"))
--local submenuChannell = submenu.addItem(SubMenu.new("chanelling spell"))
MonTourMenu:SubMenu("interrupt", "Interrupt Spells")
MonTourMenu:SubMenu("gapclose", "Gap Close Spells")
--MonTourMenu.interrupt:Boolean("Interrupt", "Auto Interrupt Spells", true)
local loaded = false
unit = GetCurrentTarget()
target = GetCurrentTarget()
d.initCallback(function(result)
if result then
for _,enemy in pairs(GetEnemyHeroes()) do
local name = GetObjectName(enemy)
local list = GAPCLOSER_SPELLS[name]
if list then
for _, spellSlot in pairs(list) do
GAPCLOSER_SPELLS_enemy[name..spellSlot] = MonTourMenu.gapclose:Boolean("gapclose", name.." "..spellText[spellSlot+1], true)
end
end
list = CHANELLING_SPELLS[name]
if list then
for _, spellSlot in pairs(list) do
CHANELLING_SPELLS_enemy[name..spellSlot] = MonTourMenu.interrupt:Boolean("interrupt", name.." "..spellText[spellSlot+1], true)
end
end
-- PrintChat(name)
end
loaded = true
PrintChat("[interrupter] : loaded")
end
end)
OnProcessSpell(function(unit, spell)
if not loaded and not callback or not unit or GetObjectType(unit) ~= Obj_AI_Hero or GetTeam(unit) == myTeam then return end
for _,unit in pairs(GetEnemyHeroes()) do
local unitName = GetObjectName(unit)
local unitChanellingSpells = CHANELLING_SPELLS[unitName]
local unitGapcloserSpells = GAPCLOSER_SPELLS[unitName]
local spellName = spell.name
if unitChanellingSpells then
for _, spellSlot in pairs(unitChanellingSpells) do
-- PrintChat(spell.name.." "..GetCastName(unit, spellSlot))
if spellName == GetCastName(unit, spellSlot) and MonTourMenu.interrupt.interrupt:Value() then callback(unit, CHANELLING_SPELLS, spell) end
end
elseif unitGapcloserSpells then
for _, spellSlot in pairs(unitGapcloserSpells) do
if spellName == GetCastName(unit, spellSlot) and MonTourMenu.gapclose.gapclose:Value() then callback(unit, GAPCLOSER_SPELLS, spell) end
end
end
end
end)
function addInterrupterCallback( callback0 )
callback = callback0
end
PrintChat("[interrupter] : loading...")
tick = 0
tick2 = 0
OnCreateObj(function(Object)
-- Creation of the reticle position
if GetObjectBaseName(Object) == "Draven_Base_Q_reticle_self.troy" then
table.insert(reticles, Object)
tick = GetGameTimer() + 1.8
tick2 = GetGameTimer() + 1.8
end
end)
OnDeleteObj(function(Object)
myHer0 = GetOrigin(myHero)
if GetObjectBaseName(Object) == "Draven_Base_Q_reticle_self.troy" then
table.remove(reticles, 1)
end
end)
OnLoop(function(myHero)
Checks()
--CircleQM()
ItemUse()
Killsteal()
CatchQ()
Ignite()
if MonTourMenu.Misc.DOHP:Value() then
Draws()
end
if IOW:Mode() == "LastHit" then
LastHit(minion)
end
if IOW:Mode() == "LaneClear" then
IOW:EnableMovement()
LaneClear(minion)
JungleClear(jminion)
end
if IOW:Mode() == "Combo" then
IOW:EnableMovement()
Combo()
end
if IOW:Mode() == "Harass" then
IOW:EnableMovement()
Harass()
end
if MonTourMenu.Misc.MGUN:Value() then
GLOBALULTNOTICE()
end
if MonTourMenu.Misc.MGUNDEB:Value() then
GLOBALULTNOTICEDEBUG()
end
if MonTourMenu.Misc.QAA:Value() then
QAA()
end
if MonTourMenu.Misc.AL:Value() then --and mapID == SUMMONERS_RIFT
AutoLvL()
end
end)
function QAA()
for i,unit in pairs(Gos:GetEnemyHeroes()) do
local TotalDmg = GetBonusDmg(myHero)+GetBaseDamage(myHero)
local unitPos = GetOrigin(unit)
local dmgE = spellData[_Q].dmg() + TotalDmg
local dmg = GoS:CalcDamage(myHero, unit, dmgE)
local hp = GetCurrentHP(unit)
local hPos = GetHPBarPos(unit)
local drawPos = WorldToScreen(1,unitPos.x,unitPos.y,unitPos.z)
if dmg > 0 then
DrawText(math.ceil(hp/dmg).." QAA", 15, hPos.x, hPos.y+20, 0xffffffff)
end
end
end
function Draws()
for _,unit in pairs(Gos:GetEnemyHeroes()) do
local Qdmg = spellData[_Q].dmg()+GetBonusDmg(myHero)+GetBaseDamage(myHero)
local QREADY = QREADY or QSpinn1
if GoS:ValidTarget(unit,20000) and QREADY then
DrawDmgOverHpBar(unit,GetCurrentHP(unit),0,GoS:CalcDamage(myHero, unit, Qdmg, 0),0xffffffff)
end
end
end
function Checks()
QREADY = CanUseSpell(myHero,_Q) == READY
WREADY = CanUseSpell(myHero,_W) == READY
EREADY = CanUseSpell(myHero,_E) == READY
RREADY = CanUseSpell(myHero,_R) == READY
target = GetCurrentTarget()--GetTarget(1250, DAMAGE_PHYSICAL)
--targetDRAW = GetTarget(20000, DAMAGE_PHYSICAL)
targetPos = GetOrigin(target)
myHeroPos = GetOrigin(myHero)
Q0 = GotBuff(myHero,"dravenspinningattack") == 0
Q1 = GotBuff(myHero,"dravenspinningattack") == 1
Q2 = GotBuff(myHero,"dravenspinningattack") == 2
QL0 = GotBuff(myHero,"dravenspinningleft") == 0
QL1 = GotBuff(myHero,"dravenspinningleft") == 1
QSpinn0 = GotBuff(myHero,"DravenSpinning") == 0
QSpinn1 = GotBuff(myHero,"DravenSpinning") == 1
enemygotbansheesveil = GotBuff(target,"bansheesveil") == 1
--buffdatas2 = GetBuffData(myHero,"dravenpassive");
--DrawText(string.format("[dravenpassive INFO]", buffdatas2.Type),12,200,20,0xff00ff00);
--DrawText(string.format("Type = %d", buffdatas2.Type),12,200,30,0xff00ff00);
--DrawText(string.format("Name = %s", buffdatas2.Name),12,200,40,0xff00ff00);
--DrawText(string.format("Count = %d", buffdatas2.Count),12,200,50,0xff00ff00);
--DrawText(string.format("Stacks = %f", buffdatas2.Stacks),12,200,60,0xff00ff00);
--DrawText(string.format("StartTime = %f", buffdatas2.StartTime),12,200,70,0xff00ff00);
--DrawText(string.format("ExpireTime = %f", buffdatas2.ExpireTime),12,200,80,0xff00ff00);
--DrawText(string.format("[GameTime] = %f", GetGameTimer()),12,200,90,0xff00ff00);
--DrawText(string.format("GetBuffTypeToString = [%s]", GetBuffTypeToString(buffdatas2.Type)),12,200,110,0xffffff00);
--buffdatas = GetBuffData(myHero,"dravenpassivestacks");
--DrawText(string.format("[dravenpassivestacks INFO]", buffdatas.Type),12,200,130,0xff00ff00);
--DrawText(string.format("Type = %d", buffdatas.Type),12,200,140,0xff00ff00);
--DrawText(string.format("Name = %s", buffdatas.Name),12,200,150,0xff00ff00);
--DrawText(string.format("Count = %d", buffdatas.Count),12,200,160,0xff00ff00);
--DrawText(string.format("Stacks = %f", buffdatas.Stacks),12,200,170,0xff00ff00);
--DrawText(string.format("StartTime = %f", buffdatas.StartTime),12,200,180,0xff00ff00);
--DrawText(string.format("ExpireTime = %f", buffdatas.ExpireTime),12,200,190,0xff00ff00);
--DrawText(string.format("[GameTime] = %f", GetGameTimer()),12,200,200,0xff00ff00);
--DrawText(string.format("GetBuffTypeToString = [%s]", GetBuffTypeToString(buffdatas.Type)),12,200,220,0xffffff00);
end
function LastHit(minion)
-- Move()
for i,minion in pairs(GoS:GetAllMinions(MINION_ENEMY)) do
local QDmg = spellData[_Q].dmg()+GetBonusDmg(myHero)+GetBaseDamage(myHero) or 0
local DamageQ = GoS:CalcDamage(myHero, minion, QDmg, 0)
local targetPos123 = GetOrigin(minion)
if MonTourMenu.Clear.LHQ:Value() and GetCurrentHP(minion) < DamageQ then
if QREADY and QSpinn0 and Q0 and GoS:IsInDistance(minion, spellData[_Q].range) and GoS:ValidTarget(minion, spellData[_Q].range) then
CastSpell(_Q) GoS:DelayAction(function() AttackUnitM(minion) end, 100)
end
if QSpinn1 and Q1 and Q2 and GoS:IsInDistance(minion, spellData[_Q].range) and GoS:ValidTarget(minion, spellData[_Q].range) then
AttackUnitM(minion)
end
if QSpinn1 and Q2 and QL0 and GoS:IsInDistance(minion, spellData[_Q].range) and GoS:ValidTarget(minion, spellData[_Q].range)then
AttackUnitM(minion)
end
if QSpinn1 and Q2 and QL1 and GoS:IsInDistance(minion, spellData[_Q].range) and GoS:ValidTarget(minion, spellData[_Q].range)then
AttackUnitM(minion)
end
if QSpinn1 and GoS:IsInDistance(minion, spellData[_Q].range) and GoS:ValidTarget(minion, spellData[_Q].range)then
AttackUnitM(minion)
end
end
end
end
--function CatchQ()
-- if MonTourMenu.Combo.CQ:Value() then
-- for i, reticle in pairs(reticles) do
-- local Reticlepos = GetOrigin(reticle)
-- local myHer0 = GetOrigin(myHero)
-- local mymouse = GetCursorPos()
-- DrawCircle(Reticlepos.x, Reticlepos.y, Reticlepos.z,120,1,100,0xff0000ff)
-- DrawCircle(mymouse.x, mymouse.y, mymouse.z,MonTourMenu.Combo.CQPR:Value(),1,100,0xff0000ff)
-- if GoS:GetDistance(Reticlepos, myHer0) < MonTourMenu.Combo.CQPR:Value() then
-- MoveToXYZ(Reticlepos.x, Reticlepos.y , Reticlepos.z)
-- end
-- end
-- end
--end
function CatchQ()
if MonTourMenu.Combo.CQ:Value() and MonTourMenu.Combo.QC:Value() then
local mymouse = GetMousePos()
DrawCircle(mymouse,MonTourMenu.Combo.CQPR:Value(),0.9,100,0xff0000ff)
end
for i, reticle in pairs(reticles) do
local Reticlepos = GetOrigin(reticle)
local myHer0 = GetOrigin(myHero)
local mymouse = GetMousePos()
local asTime = IOW:GetFullAttackSpeed()*60
if MonTourMenu.Combo.CM:Value() then
DrawCircle(Reticlepos.x, Reticlepos.y, Reticlepos.z,120,3,100,0xff00ff7f)
DrawCircle(Reticlepos.x, Reticlepos.y, Reticlepos.z,60,1,100,0xffff6600)
end
if MonTourMenu.Combo.CQ:Value() then
if GoS:GetDistance(Reticlepos, mymouse) < MonTourMenu.Combo.CQPR:Value() and tick > GetGameTimer() then --and GetTickCount() < tick
IOW:DisableMovement() GoS:DelayAction(function() GoS:DelayAction(function() MoveToXYZ(Reticlepos.x, Reticlepos.y , Reticlepos.z) GoS:DelayAction(function() IOW:EnableMovement() end, 1) end, 1) end, 100) --tick = 0
end
end
if MonTourMenu.Combo.CWS:Value() and GetCurrentMana(myHero)/GetMaxMana(myHero) > (MonTourMenu.Combo.WMANA:Value()/100) then
local catchtime = GoS:GetDistance(Reticlepos, myHero)/GetMoveSpeed(myHero)
if catchtime > (tick2-GetGameTimer()) then
CastSpell(_W)
end
end
end
end
function AttackUnitM(minion)
for i,minion in pairs(GoS:GetAllMinions(MINION_ENEMY)) do
if GoS:IsInDistance(minion, GetRange(myHero)) and GoS:GetDistance(myHero, minion) <= (GetRange(myHero)) and GoS:GetDistance(myHero, minion) >= 1 then
AttackUnit(minion)
end
end
end
--function CircleQM()
-- for i,minionQM in pairs(GoS:GetAllMinions(MINION_ENEMY)) do
-- local QDmg = spellData[_Q].dmg()+GetBonusDmg(myHero)+GetBaseDamage(myHero) or 0
-- local DamageQ = GoS:CalcDamage(myHero, minionQM, QDmg, 0)
-- local targetPos123 = GetOrigin(minionQM)
-- --local eminion = CountMinions()
----local HP = PredictHealth(minion, orbTable.windUp + GoS:GetDistance(minion)/1700.0000 - 0.07)
-- if MonTourMenu.Clear.LHQCircle:Value() and GetCurrentHP(minionQM) < DamageQ and GoS:IsInDistance(minion, spellData[_Q].range+100)then
-- DrawCircle(targetPos123.x,targetPos123.y,targetPos123.z,50,0,0,0xffff0000)
-- end
-- end
--end
function LaneClear(minion)
for i,minion in pairs(GoS:GetAllMinions(MINION_ENEMY)) do
if QREADY and MonTourMenu.Clear.LCQ:Value() then
if QSpinn0 and Q0 and GoS:IsInDistance(minion, spellData[_Q].range+100) and GoS:ValidTarget(minion, spellData[_Q].range+100) then
CastSpell(_Q)
end
if QSpinn1 and Q1 and Q2 and GoS:IsInDistance(minion, spellData[_Q].range+100) and GoS:ValidTarget(minion, spellData[_Q].range+100) then
end
if QSpinn1 and Q2 and QL0 and GoS:IsInDistance(minion, spellData[_Q].range+100) and GoS:ValidTarget(minion, spellData[_Q].range+100)then
end
if QSpinn1 and Q2 and QL1 and GoS:IsInDistance(minion, spellData[_Q].range+100) and GoS:ValidTarget(minion, spellData[_Q].range+100)then
end
end
end
end
function JungleClear(jminion)
for i,jminion in pairs(GoS:GetAllMinions(MINION_JUNGLE)) do
if QREADY and MonTourMenu.Clear.LCJQ:Value() then
if QSpinn0 and Q0 and GoS:IsInDistance(jminion, spellData[_Q].range+100) and GoS:ValidTarget(jminion, spellData[_Q].range+100) then
CastSpell(_Q)
end
if QSpinn1 and Q1 and Q2 and GoS:IsInDistance(jminion, spellData[_Q].range+100) and GoS:ValidTarget(jminion, spellData[_Q].range+100) then
-- DelayAction(function() AttackUnit(jminion) end, 100)
end
if QSpinn1 and Q2 and QL0 and GoS:IsInDistance(jminion, spellData[_Q].range+100) and GoS:ValidTarget(jminion, spellData[_Q].range+100)then
-- DelayAction(function() AttackUnit(jminion) end, 100)
end
if QSpinn1 and Q2 and QL1 and GoS:IsInDistance(jminion, spellData[_Q].range+100) and GoS:ValidTarget(jminion, spellData[_Q].range+100)then
-- DelayAction(function() AttackUnit(jminion) end, 100)
end
end
end
end
function AttackUnitJ(minion)
for i,minion in pairs(GoS:GetAllMinions(MINION_JUNGLE)) do
if GoS:IsInDistance(minion, GetRange(myHero)) and GoS:GetDistance(myHero, minion) <= (GetRange(myHero)) and GoS:GetDistance(myHero, minion) >= 1 then
AttackUnit(minion)
end
end
end
function CastPredE(target)
local unitPos = GetOrigin(target)
local EPred = GetPredictionForPlayer(GetOrigin(myHero), target, GetMoveSpeed(target), spellData[_E].speed, spellData[_E].delay, spellData[_E].range-25, spellData[_E].width, false, true)
if EREADY and EPred.HitChance == 1 then
if GoS:GetDistance(myHero, target) > spellData[_Q].range and GoS:GetDistance(myHero, target) <= spellData[_E].range and GoS:ValidTarget(unit, spellData[_E].range) then
CastSkillShot(_E,EPred.PredPos.x,EPred.PredPos.y,EPred.PredPos.z)
end
end
end
function CastPredEBanshe(target)
for _,unit in pairs(Gos:GetEnemyHeroes()) do
local unitPos = GetOrigin(unit)
local EPred = GetPredictionForPlayer(GetOrigin(myHero), unit, GetMoveSpeed(unit), spellData[_E].speed, spellData[_E].delay, spellData[_E].range-25, spellData[_E].width, false, true)
if EREADY and EPred.HitChance == 1 then
if GoS:GetDistance(myHero, unit) > spellData[_Q].range and GoS:GetDistance(myHero, unit) <= spellData[_E].range and GoS:ValidTarget(unit, spellData[_E].range) then
CastSkillShot(_E,EPred.PredPos.x,EPred.PredPos.y,EPred.PredPos.z)
end
end
end
end
function CastQ(target)
-- for _,unit in pairs(Gos:GetEnemyHeroes()) do
if QREADY and GoS:ValidTarget(target, spellData[_Q].range+100) then
if QSpinn0 and Q0 and GoS:IsInDistance(target, spellData[_Q].range+100) and GoS:ValidTarget(target, spellData[_Q].range+100) then
CastSpell(_Q)
end
if QSpinn1 and Q1 and Q2 and GoS:IsInDistance(target, spellData[_Q].range+100) and GoS:ValidTarget(target, spellData[_Q].range+100) then
end
if QSpinn1 and Q2 and QL0 and GoS:IsInDistance(target, spellData[_Q].range+100) and GoS:ValidTarget(target, spellData[_Q].range+100)then
end
if QSpinn1 and Q2 and QL1 and GoS:IsInDistance(target, spellData[_Q].range+100) and GoS:ValidTarget(target, spellData[_Q].range+100)then
end
end
-- end
end
function CastW(target)
local igotmana = GetCurrentMana(myHero)
local Qmana = spellData[_Q].mana
local Wmana = spellData[_W].mana
--for _,unit in pairs(Gos:GetEnemyHeroes()) do
if WREADY and igotmana >= Qmana + Wmana then
if GoS:ValidTarget(target, spellData[_Q].range*1.7) and GoS:GetDistance(myHero, target) > spellData[_Q].range+50 and GoS:GetDistance(myHero, target) < spellData[_Q].range*1.7 then
CastSpell(_W)
end
--end
end
end
function CastWnoMana(target)
local igotmana = GetCurrentMana(myHero)
local Qmana = spellData[_Q].mana
local Wmana = spellData[_W].mana
if WREADY then
if GoS:ValidTarget(target, spellData[_Q].range*1.7) and GoS:GetDistance(myHero, target) > spellData[_Q].range+50 and GoS:GetDistance(myHero, target) < spellData[_Q].range*1.7 then
CastSpell(_W)
end
end
end
function CastPredR(target)
local unitPos = GetOrigin(target)
local RPred = GetPredictionForPlayer(GetOrigin(myHero),target,GetMoveSpeed(target), spellData[_R].speed, spellData[_R].delay, spellData[_R].range, spellData[_R].width, false, true)
if GoS:GetDistance(myHero, target) > 750 and GoS:GetDistance(myHero, target) < 4000 and IsObjectAlive(target) then
if RREADY and GoS:ValidTarget(target, spellData[_R].range) and RPred.HitChance == 1 then
CastSkillShot(_R,RPred.PredPos.x,RPred.PredPos.y,RPred.PredPos.z)
end
end
end
function Combo()
local unit = GetCurrentTarget()
local target = GetCurrentTarget()
if target == nil or GetOrigin(target) == nil or IsImmune(target,myHero) or IsDead(target) or not IsVisible(target) or GetTeam(target) == GetTeam(myHero) then return false end
if MonTourMenu.Combo.Q:Value() then
CastQ(target)
end
if MonTourMenu.Combo.W:Value() and GetCurrentMana(myHero)/GetMaxMana(myHero) > (MonTourMenu.Combo.WMANA:Value()/100) then
CastW(target)
end
if MonTourMenu.Combo.EB:Value() and enemygotbansheesveil then
CastPredEBanshe(target)
end
if MonTourMenu.Combo.E:Value() then
CastPredE(target)
end
if MonTourMenu.Combo.R:Value() then
CastPredR(target)
end
end
function Harass()
local unit = GetCurrentTarget()
local target = GetCurrentTarget()
if unit == nil or GetOrigin(unit) == nil or IsImmune(unit,myHero) or IsDead(unit) or not IsVisible(unit) or GetTeam(unit) == GetTeam(myHero) then return false end
if MonTourMenu.Harass.QH:Value() then
CastQ(target)
end
if MonTourMenu.Harass.WH:Value() and GetCurrentMana(myHero)/GetMaxMana(myHero) > (MonTourMenu.Harass.WMANA:Value()/100) then
CastW(target)
end
if MonTourMenu.Harass.EHB:Value() and enemygotbansheesveil then
CastPredEBanshe(target)
end
if MonTourMenu.Harass.EH:Value() then
CastPredE(target)
end
if MonTourMenu.Harass.RH:Value() then
CastPredR(target)
end
end
function Killsteal()
for i,enemy in pairs(Gos:GetEnemyHeroes()) do
local QDmg = QREADY and spellData[_Q].dmg() or 0
local QDmg2 = spellData[_Q].dmg() or 0
local EDmg = EREADY and spellData[_E].dmg() or 0
local RDmg = RREADY and spellData[_R].dmg() or 0
local enemyhp = GetCurrentHP(enemy) + GetHPRegen(enemy)
local Alldmg = GetBonusDmg(myHero)+GetBaseDamage(myHero)
local unitPos = GetOrigin(enemy)
-- local MoveToUnit = MoveToXYZ(unitPos.x, unitPos.y, unitPos.z)
if MonTourMenu.Killsteal.KSQE:Value() and GoS:ValidTarget(enemy, spellData[_E].range) and enemyhp < GoS:CalcDamage(myHero, enemy, EDmg, 0) then
CastPredE(enemy)
elseif GoS:ValidTarget(enemy, spellData[_Q].range) and enemyhp < GoS:CalcDamage(myHero, enemy, QDmg + Alldmg, 0) then
CastQ(enemy)
elseif MonTourMenu.Killsteal.KSQE:Value() and GoS:ValidTarget(enemy, spellData[_Q].range) and enemyhp < GoS:CalcDamage(myHero, enemy, QDmg2 + Alldmg, 0) and QSpinn1 then
AttackUnitKS(enemy)
elseif MonTourMenu.Killsteal.KSR:Value() and GoS:ValidTarget(enemy, spellData[_R].range) and enemyhp < GoS:CalcDamage(myHero, enemy, RDmg, 0) then
CastPredR(enemy)
elseif MonTourMenu.Killsteal.KSQE:Value() and GoS:ValidTarget(enemy, spellData[_E].range) and GoS:GetDistance(myHero, enemy) > 550 and GoS:GetDistance(myHero, enemy) < 700 and enemyhp < GoS:CalcDamage(myHero, enemy, QDmg + Alldmg + EDmg, 0) then
CastPredE(enemy) GoS:DelayAction(function() CastWnoMana(enemy) GoS:DelayAction(function() CastPredE(enemy) GoS:DelayAction(function() AttackUnitKS(enemy) end, 100) end, 200) end, 300)
elseif MonTourMenu.Killsteal.KSQE:Value() and GoS:ValidTarget(enemy, spellData[_E].range) and GoS:GetDistance(myHero, enemy) > 550 and GoS:GetDistance(myHero, enemy) < 700 and enemyhp < GoS:CalcDamage(myHero, enemy, QDmg2 + Alldmg + EDmg, 0) and QSpinn1 then
CastPredE(enemy) GoS:DelayAction(function() CastWnoMana(enemy) GoS:DelayAction(function() CastPredE(enemy) GoS:DelayAction(function() AttackUnitKS(enemy) end, 100) end, 200) end, 300)
end
end
end
function Ignite()
local Ignite = (GetCastName(GetMyHero(),SUMMONER_1):lower():find("summonerdot") and SUMMONER_1 or (GetCastName(GetMyHero(),SUMMONER_2):lower():find("summonerdot") and SUMMONER_2 or nil))
if GoS:ValidTarget(unit, 700) and Ignite and MonTourMenu.Items.Ignite:Value() and CanUseSpell(myHero,_W) ~= READY and GoS:GetDistance(unit) > 500 then --and IsObjectAlive(unit) and not IsImmune(unit) and IsTargetable(unit) and
for _, k in pairs(GoS:GetEnemyHeroes()) do
if CanUseSpell(GetMyHero(), Ignite) == READY and (20*GetLevel(GetMyHero())+50) > GetCurrentHP(k)+GetHPRegen(k)*2.5 and GoS:GetDistanceSqr(GetOrigin(k)) < 600*600 then
CastTargetSpell(k, Ignite)
end
end
end
end
function ItemUse()
for _,target in pairs(Gos:GetEnemyHeroes()) do
if GetItemSlot(myHero,3153) > 0 and MonTourMenu.Items.bork:Value() and GoS:ValidTarget(target, 550) and (IOW:Mode() == "Combo" or IOW:Mode() == "Harass") and GetCurrentHP(myHero)/GetMaxHP(myHero) < (MonTourMenu.Items.borkmyhp:Value()/100) and GetCurrentHP(target)/GetMaxHP(target) > (MonTourMenu.Items.borkehp:Value()/100) then
CastTargetSpell(target, GetItemSlot(myHero,3153)) --bork
end
if GetItemSlot(myHero,3144) > 0 and MonTourMenu.Items.CutBlade:Value() and GoS:ValidTarget(target, 550) and (IOW:Mode() == "Combo" or IOW:Mode() == "Harass") and GetCurrentHP(myHero)/GetMaxHP(myHero) < (MonTourMenu.Items.CutBlademyhp:Value()/100) and GetCurrentHP(target)/GetMaxHP(target) > (MonTourMenu.Items.CutBladeehp:Value()/100) then
CastTargetSpell(target, GetItemSlot(myHero,3144)) --CutBlade
end
if GetItemSlot(myHero,3142) > 0 and MonTourMenu.Items.ghostblade:Value() and (IOW:Mode() == "Combo" or IOW:Mode() == "Harass") and GoS:ValidTarget(target, MonTourMenu.Items.ghostbladeR:Value()) then --ghostblade
CastTargetSpell(myHero, GetItemSlot(myHero,3142))
end
if GetItemSlot(myHero,3140) > 0 and MonTourMenu.Items.QSS:Value() and GotBuff(myHero, "rocketgrab2") > 0 or GotBuff(myHero, "charm") > 0 or GotBuff(myHero, "fear") > 0 or GotBuff(myHero, "flee") > 0 or GotBuff(myHero, "snare") > 0 or GotBuff(myHero, "taunt") > 0 or GotBuff(myHero, "suppression") > 0 or GotBuff(myHero, "stun") > 0 or GotBuff(myHero, "zedultexecute") > 0 or GotBuff(myHero, "summonerexhaust") > 0 and 100*GetCurrentHP(myHero)/GetMaxHP(myHero) < MonTourMenu.Items.QSSHP:Value() then
CastTargetSpell(myHero, GetItemSlot(myHero,3140))
end
if GetItemSlot(myHero,3139) > 0 and MonTourMenu.Items.QSS:Value() and GotBuff(myHero, "rocketgrab2") > 0 or GotBuff(myHero, "charm") > 0 or GotBuff(myHero, "fear") > 0 or GotBuff(myHero, "flee") > 0 or GotBuff(myHero, "snare") > 0 or GotBuff(myHero, "taunt") > 0 or GotBuff(myHero, "suppression") > 0 or GotBuff(myHero, "stun") > 0 or GotBuff(myHero, "zedultexecute") > 0 or GotBuff(myHero, "summonerexhaust") > 0 and 100*GetCurrentHP(myHero)/GetMaxHP(myHero) < MonTourMenu.Items.QSSHP:Value() then
CastTargetSpell(myHero, GetItemSlot(myHero,3139))
end
if MonTourMenu.Items.useRedPot:Value() and GetItemSlot(myHero,2140) >= 1 and GoS:ValidTarget(target,MonTourMenu.Items.useRedPotR:Value()) and (IOW:Mode() == "Combo" or IOW:Mode() == "Harass") then --redpot
if CanUseSpell(myHero,GetItemSlot(myHero,2140)) == READY then
CastSpell(GetItemSlot(myHero,2140))
end
end
end
end
function AttackUnitKS(target)
for i,enemy in pairs(Gos:GetEnemyHeroes()) do
if GoS:IsInDistance(enemy, GetRange(myHero)) and GoS:GetDistance(myHero, enemy) <= (GetRange(myHero)-10) and GoS:GetDistance(myHero, enemy) >= 10 then
AttackUnit(enemy)
else
end
end
end
function GLOBALULTNOTICE()
if not RREADY then return end
info = ""
if RREADY then
for _,unit in pairs(Gos:GetEnemyHeroes()) do
if IsObjectAlive(unit) then
realdmg = GoS:CalcDamage(myHero, unit, spellData[_R].dmg())
hp = GetCurrentHP(unit) + GetHPRegen(unit)
if realdmg > hp then
info = info..GetObjectName(unit)
if not IsVisible(unit) then
info = info.." not Visible but maybe"
elseif not GoS:ValidTarget(unit, spellData[_R].range) then
info = info.." not in Range but"
end
info = info.." killable\n"
end
end
end
end
DrawText(info,MonTourMenu.Misc.MGUNSIZE:Value(),MonTourMenu.Misc.MGUNX:Value(),MonTourMenu.Misc.MGUNY:Value(),0xffff0000)
end
function GLOBALULTNOTICEDEBUG()
DrawText("I am in Range but not killable - TESTMODE ON",MonTourMenu.Misc.MGUNSIZE:Value(),MonTourMenu.Misc.MGUNX:Value(),MonTourMenu.Misc.MGUNY:Value(),0xffff0000)
end
function AutoLvL()
if GetLevel(myHero) == 1 and GetLevel(myHero) < 2 then
LevelSpell(_Q)
elseif GetLevel(myHero) == 2 and GetLevel(myHero) < 3 then
LevelSpell(_E)
elseif GetLevel(myHero) == 3 and GetLevel(myHero) < 4 then
LevelSpell(_W)
elseif GetLevel(myHero) == 4 and GetLevel(myHero) < 5 then
LevelSpell(_Q)
elseif GetLevel(myHero) == 5 and GetLevel(myHero) < 6 then
LevelSpell(_Q)
elseif GetLevel(myHero) == 6 and GetLevel(myHero) < 7 then
LevelSpell(_R)
elseif GetLevel(myHero) == 7 and GetLevel(myHero) < 8 then
LevelSpell(_Q)
elseif GetLevel(myHero) == 8 and GetLevel(myHero) < 9 then
LevelSpell(_W)
elseif GetLevel(myHero) == 9 and GetLevel(myHero) < 10 then
LevelSpell(_Q)
elseif GetLevel(myHero) == 10 and GetLevel(myHero) < 11 then
LevelSpell(_W)
elseif GetLevel(myHero) == 11 and GetLevel(myHero) < 12 then
LevelSpell(_R)
elseif GetLevel(myHero) == 12 and GetLevel(myHero) < 13 then
LevelSpell(_W)
elseif GetLevel(myHero) == 13 and GetLevel(myHero) < 14 then
LevelSpell(_W)
elseif GetLevel(myHero) == 14 and GetLevel(myHero) < 15 then
LevelSpell(_E)
elseif GetLevel(myHero) == 15 and GetLevel(myHero) < 16 then
LevelSpell(_E)
elseif GetLevel(myHero) == 16 and GetLevel(myHero) < 17 then
LevelSpell(_R)
elseif GetLevel(myHero) == 17 and GetLevel(myHero) < 18 then
LevelSpell(_E)
elseif GetLevel(myHero) == 18 then
LevelSpell(_E)
end
end
OnProcessSpell(function(unit, spell)
for _,mob in pairs(GoS:GetAllMinions(MINION_JUNGLE)) do
local RDmg = spellData[_R].dmg() or 0
local QDmg = spellData[_Q].dmg()+GetBonusDmg(myHero)+GetBaseDamage(myHero) or 0
local EDmg = spellData[_E].dmg() or 0
local DamageR = GoS:CalcDamage(myHero, mob, RDmg, 0)
local DamageE = GoS:CalcDamage(myHero, mob, EDmg, 0)
local DamageQ = GoS:CalcDamage(myHero, mob, QDmg, 0)
local mobPos = GetOrigin(mob)
-- if GoS:IsInDistance(mob, GetCastRange(myHero,_E)) and EREADY and GetObjectName(mob) == "SRU_Baron" and KSBlueE.getValue() and GetCurrentHP(mob) < DamageE then
-- CastSkillShot(_E,mobPos.x,mobPos.y,mobPos.z)
-- elseif GoS:IsInDistance(mob, GetCastRange(myHero,_E)) and EREADY and GetObjectName(mob) == "SRU_Dragon" and KSRedE.getValue() and GetCurrentHP(mob) < DamageE then
-- CastSkillShot(_E,mobPos.x,mobPos.y,mobPos.z)
-- elseif GoS:IsInDistance(mob, GetCastRange(myHero,_E)) and EREADY and GetObjectName(mob) == "SRU_Blue" and KSBlueE.getValue() and GetCurrentHP(mob) < DamageE then
-- CastSkillShot(_E,mobPos.x,mobPos.y,mobPos.z)
-- elseif GoS:IsInDistance(mob, GetCastRange(myHero,_E)) and EREADY and GetObjectName(mob) == "SRU_Red" and KSRedE.getValue() and GetCurrentHP(mob) < DamageE then
-- CastSkillShot(_E,mobPos.x,mobPos.y,mobPos.z)
-- elseif GoS:IsInDistance(mob, 550) and (QREADY or QSpinn1) and GetObjectName(mob) == "SRU_Baron" and KSBaronQ.getValue() and GetCurrentHP(mob) < DamageQ then
-- CastTargetSpell(mob,_Q)
-- elseif GoS:IsInDistance(mob, 550) and (QREADY or QSpinn1) and GetObjectName(mob) == "SRU_Dragon" and KSDragonQ.getValue() and GetCurrentHP(mob) < DamageQ then
-- CastTargetSpell(mob,_Q)
-- elseif GoS:IsInDistance(mob, 550) and (QREADY or QSpinn1) and GetObjectName(mob) == "SRU_Blue" and KSBlueQ.getValue() and GetCurrentHP(mob) < DamageQ then
-- CastTargetSpell(mob,_Q)
-- elseif GoS:IsInDistance(mob, 550) and (QREADY or QSpinn1) and GetObjectName(mob) == "SRU_Red" and KSRedQ.getValue() and GetCurrentHP(mob) < DamageQ then
-- CastTargetSpell(mob,_Q)
-- elseif GoS:IsInDistance(mob, 550) and (QREADY or QSpinn1) and GetObjectName(mob) == "SRU_Krug" and KSKrugQ.getValue() and GetCurrentHP(mob) < DamageQ then
-- CastTargetSpell(mob,_Q)
-- elseif GoS:IsInDistance(mob, 550) and (QREADY or QSpinn1) and GetObjectName(mob) == "SRU_Murkwolf" and KSWolfQ.getValue() and GetCurrentHP(mob) < DamageQ then
-- CastTargetSpell(mob,_Q)
-- elseif GoS:IsInDistance(mob, 550) and (QREADY or QSpinn1) and GetObjectName(mob) == "SRU_Razorbeak" and KSwraithsQ.getValue() and GetCurrentHP(mob) < DamageQ then
-- CastTargetSpell(mob,_Q)
-- elseif GoS:IsInDistance(mob, 550) and (QREADY or QSpinn1) and GetObjectName(mob) == "SRU_Gromp" and KSgrompQ.getValue() and GetCurrentHP(mob) < DamageQ then
-- CastTargetSpell(mob,_Q)
-- elseif GoS:IsInDistance(mob, 550) and (QREADY or QSpinn1) and GetObjectName(mob) == "Sru_Crab" and KScrabQ.getValue() and GetCurrentHP(mob) < DamageQ then
-- CastTargetSpell(mob,_Q)
if GoS:IsInDistance(mob, GetCastRange(myHero,_R)) and GoS:GetDistance(myHero, mob) >= (GetCastRange(myHero,_Q)+100) and RREADY and GetObjectName(mob) == "SRU_Baron" and MonTourMenu.Steal.Baron:Value() and GetCurrentHP(mob) < DamageR then
CastSkillShot(_R,mobPos.x,mobPos.y,mobPos.z)
elseif GoS:IsInDistance(mob, GetCastRange(myHero,_R)) and GoS:GetDistance(myHero, mob) >= (GetCastRange(myHero,_Q)+100) and RREADY and GetObjectName(mob) == "SRU_Dragon" and MonTourMenu.Steal.Dragon:Value() and GetCurrentHP(mob) < DamageR then
CastSkillShot(_R,mobPos.x,mobPos.y,mobPos.z)
end
end
end)
addInterrupterCallback(function(target, spellType, spell)
local EPred = GetPredictionForPlayer(GetOrigin(myHero), target, GetMoveSpeed(target), spellData[_E].speed, spellData[_E].delay, spellData[_E].range, spellData[_E].width, false, true)
if GoS:IsInDistance(target, spellData[_E].range) and EREADY then --and MonTourMenu.Close.Gapclose:Value() and spellType == GAPCLOSER_SPELLS then
CastSkillShot(_E,EPred.PredPos.x,EPred.PredPos.y,EPred.PredPos.z)
-- elseif GoS:IsInDistance(target, spellData[_E].range-5) and EREADY and MonTourMenu.Close.Interrupt:Value() and spellType == CHANELLING_SPELLS then
-- CastSkillShot(_E,EPred.PredPos.x,EPred.PredPos.y,EPred.PredPos.z)
end
end)
--AddGapcloseEvent(_E, 1000, true)
--notification("MarCiii on TourĀ“s Draven loaded.", 10000)