if GetObjectName(myHero) ~= "Alistar" then return end
--MonTour Alistar:V1.0.0.3 - IsImmune(unit, myHero) fixed
PrintChat(string.format("MonTour Alistar: loaded by MarCiii!"))
PrintChat(string.format("Version: 1.0.0.3"))
local MonTourMenu = Menu("Alistar", "Alistar")
MonTourMenu:SubMenu("Combo", "Combo")
MonTourMenu.Combo:Boolean("CQW", "Use QW Combo", false)
MonTourMenu.Combo:Boolean("CWQ", "Use WQ Combo", true)
MonTourMenu.Combo:Boolean("R", "Use R", true)
MonTourMenu.Combo:Slider("RHP", "Use R my HP < x%", 30, 5, 80, 1)
MonTourMenu:SubMenu("Harass", "Harass")
MonTourMenu.Harass:Boolean("HQW", "Use QW Combo", true)
MonTourMenu.Harass:Boolean("HWQ", "Use WQ Combo", false)
MonTourMenu.Harass:Boolean("R", "Use R", true)
MonTourMenu.Harass:Slider("RHP", "Use R my HP < x%", 30, 5, 80, 1)
MonTourMenu:SubMenu("Healing", "Healing")
MonTourMenu.Healing:Boolean("Eally", "Use E Ally", true)
MonTourMenu.Healing:Slider("EallyHP", "Use E if Ally HP < x%", 35, 5, 80, 1)
MonTourMenu.Healing:Slider("EallyMana", "Use E if my Mana > x%", 40, 5, 80, 1)
MonTourMenu.Healing:Boolean("Emy", "Use E Myself", true)
MonTourMenu.Healing:Slider("EmyHP", "Use E if my HP < x%", 25, 5, 80, 1)
MonTourMenu.Healing:Slider("EmyMana", "Use E if my Mana > x%", 40, 5, 80, 1)
MonTourMenu:SubMenu("Interrupt", "Interrupt")
MonTourMenu.Interrupt:Boolean("Interrupt", "Auto Interrupt Spells", true)
unit = GetCurrentTarget()
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}
}
local callback = nil
OnProcessSpell(function(unit, spell)
if not callback or not unit or GetObjectType(unit) ~= Obj_AI_Hero or GetTeam(unit) == GetTeam(GetMyHero()) then return end
local unitChanellingSpells = CHANELLING_SPELLS[GetObjectName(unit)]
if unitChanellingSpells then
for _, spellSlot in pairs(unitChanellingSpells) do
if spell.name == GetCastName(unit, spellSlot) then callback(unit, CHANELLING_SPELLS) end
end
end
end)
function addInterrupterCallback( callback0 )
callback = callback0
end
OnLoop(function(myHero)
Combo()
Harass()
Heal()
end)
function Combo()
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 IOW:Mode() == "Combo" then
if GoS:ValidTarget(unit, 1550) and IsObjectAlive(unit) and not IsImmune(unit,myHero) and IsTargetable(unit) then
if MonTourMenu.Combo.CWQ:Value() then
if CanUseSpell(myHero, _W) == READY and CanUseSpell(myHero, _Q) == READY and GoS:IsInDistance(unit, 650) then
CastTargetSpell(unit, _W)
end
end
if MonTourMenu.Combo.CWQ:Value() then
local QPred = GetPredictionForPlayer(GetOrigin(myHero),unit,GetMoveSpeed(unit),1200,250,260,50,false,true)
if CanUseSpell(myHero, _Q) == READY and CanUseSpell(myHero, _W) ~= READY and GoS:IsInDistance(unit, 365) then
CastSkillShot(_Q,QPred.PredPos.x,QPred.PredPos.y,QPred.PredPos.z)
end
end
if MonTourMenu.Combo.CQW:Value() then
local QPred = GetPredictionForPlayer(GetOrigin(myHero),unit,GetMoveSpeed(unit),1200,250,260,50,false,true)
if CanUseSpell(myHero, _Q) == READY and GoS:IsInDistance(unit, 365) then
CastSkillShot(_Q,QPred.PredPos.x,QPred.PredPos.y,QPred.PredPos.z)
end
end
if MonTourMenu.Combo.CQW:Value() then
if CanUseSpell(myHero, _W) == READY and GoS:IsInDistance(unit, 300) then
CastTargetSpell(unit, _W)
end
end
if MonTourMenu.Combo.R:Value() then
if (GetCurrentHP(myHero)/GetMaxHP(myHero)) < (MonTourMenu.Combo.RHP:Value()/100) and
CanUseSpell(myHero, _R) == READY and GoS:IsInDistance(unit, 1000) then
CastSpell(_R)
end
end
end
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 IOW:Mode() == "Harass" then
if GoS:ValidTarget(unit, 1550) and IsObjectAlive(unit) and not IsImmune(unit,myHero) and IsTargetable(unit) then
if MonTourMenu.Harass.HWQ:Value() then
if CanUseSpell(myHero, _W) == READY and CanUseSpell(myHero, _Q) == READY and GoS:IsInDistance(unit, 650) then
CastTargetSpell(unit, _W)
end
end
if MonTourMenu.Harass.HWQ:Value() then
local QPred = GetPredictionForPlayer(GetOrigin(myHero),unit,GetMoveSpeed(unit),1200,250,260,50,false,true)
if CanUseSpell(myHero, _Q) == READY and CanUseSpell(myHero, _W) ~= READY and GoS:IsInDistance(unit, 365) then
CastSkillShot(_Q,QPred.PredPos.x,QPred.PredPos.y,QPred.PredPos.z)
end
end
if MonTourMenu.Harass.HQW:Value() then
local QPred = GetPredictionForPlayer(GetOrigin(myHero),unit,GetMoveSpeed(unit),1200,250,260,50,false,true)
if CanUseSpell(myHero, _Q) == READY and GoS:IsInDistance(unit, 365) then
CastSkillShot(_Q,QPred.PredPos.x,QPred.PredPos.y,QPred.PredPos.z)
end
end
if MonTourMenu.Harass.HQW:Value() then
if CanUseSpell(myHero, _W) == READY and GoS:IsInDistance(unit, 300) then
CastTargetSpell(unit, _W)
end
end
if MonTourMenu.Harass.R:Value() then
if (GetCurrentHP(myHero)/GetMaxHP(myHero)) < (MonTourMenu.Harass.RHP:Value()/100) and
CanUseSpell(myHero, _R) == READY and IsObjectAlive(myHero) and GoS:IsInDistance(unit, 1000) then
CastSpell(_R)
end
end
end
end
end
function Heal()
if GotBuff(myHero,"recall") == 1 then return end
for _, ally in pairs(GoS:GetAllyHeroes()) do
if MonTourMenu.Healing.Eally:Value() then
if (GetCurrentHP(ally)/GetMaxHP(ally)) < (MonTourMenu.Healing.EallyHP:Value()/100) and GetCurrentMana(myHero)/GetMaxMana(myHero) > (MonTourMenu.Healing.EallyMana:Value()/100) and CanUseSpell(myHero, _E) == READY and GoS:ValidTarget(unit, 700) and GoS:IsInDistance(ally, 575) and IsObjectAlive(ally) then
CastSpell(_E)
end
end
end
local unit = GetCurrentTarget()
if MonTourMenu.Healing.Emy:Value() then
if (GetCurrentHP(myHero)/GetMaxHP(myHero)) < (MonTourMenu.Healing.EmyHP:Value()/100) and GetCurrentMana(myHero)/GetMaxMana(myHero) > (MonTourMenu.Healing.EmyMana:Value():Value()/100) and CanUseSpell(myHero, _E) == READY and GoS:ValidTarget(unit, 700) and GoS:IsInDistance(unit, 700) and IsObjectAlive(unit) then
CastSpell(_E)
end
end
end
addInterrupterCallback(function(unit, spellType)
local unit = GetCurrentTarget()
if spellType == CHANELLING_SPELLS and MonTourMenu.Interrupt.Interrupt:Value() then
if CanUseSpell(myHero, _W) == READY and GoS:IsInDistance(unit, 300) then
CastTargetSpell(unit, _W)
end
local QPred = GetPredictionForPlayer(GetOrigin(myHero),unit,GetMoveSpeed(unit),1200,250,260,50,false,true)
if CanUseSpell(myHero, _Q) == READY and GoS:IsInDistance(unit, 365) then
CastSkillShot(_Q,QPred.PredPos.x,QPred.PredPos.y,QPred.PredPos.z)
end
end
end)