if GetObjectName(GetMyHero()) ~= "Katarina" then return end
require("DamageLib")
local mainMenu = Menu("Katarina [Jace]", "Katarina [Jace]")
mainMenu:SubMenu('CK', 'Combo [Katarina]')
mainMenu.CK:Boolean('CQ', 'Use [Q]', true)
mainMenu.CK:Boolean('CW', 'Use [W]', true)
mainMenu.CK:Boolean('CE', 'Use [E]', true)
mainMenu.CK:Boolean('CR', 'Use [R]', true)
mainMenu.CK:Boolean('CRC', 'Cancel [R]', true)
mainMenu.CK:Boolean('CanItems', 'Use [Gun]', true)
if Ignite ~= nil then mainMenu.CK:Boolean("AutoIgnite", "Auto Ignite", true) end
mainMenu.CK:Slider("CountR","Count Enemies", 2, 1, 5, 1)
mainMenu:SubMenu('Keys', 'Keys [Katarina]')
mainMenu.Keys:Key("ComboKat", "Combo [Key]", string.byte(" "))
mainMenu.Keys:Key("ManualR", "R [Manual] [Key]", string.byte("R"))
mainMenu.Keys:Key("LaneClear", "Lane [Key]", string.byte("V"))
mainMenu:SubMenu('AL', 'Auto level')
mainMenu.AL:Boolean('ALV', 'Auto level spells', true)
mainMenu.AL:Boolean('EQE', 'Q->E->W Order', true)
mainMenu:SubMenu('DR', 'Drawnings')
mainMenu.DR:Boolean("Q", "Draw Q range", true)
mainMenu.DR:Boolean("W", "Draw W range", true)
mainMenu.DR:Boolean("E", "Draw E range", true)
mainMenu.DR:Boolean("R", "Draw R range", true)
mainMenu.DR:Boolean("Dagas", "Draw Circle Dagger", true)
local DaggerPos = {}
local DaggerIsCast = {}
local kataCounter = 0
local kataR = false
PrintChat("[Katarina Jace]: Katarina Injected successfully!")
PrintChat("font color=\"#00FFFF\">Update: 0.1 ")
OnProcessSpell(function(unit,spell)
if unit == myHero and spell.name == "KatarinaR" then
kataR = true
end
end)
OnUpdateBuff(function(unit,buff)
if unit == myHero and buff.Name == "katarinarsound" then
kataR = true
end
end)
OnRemoveBuff(function(unit,buff)
if unit == myHero and buff.Name == "katarinarsound" then
kataR = false
end
end)
OnIssueOrder(function(orderProc)
if (orderProc.flag == 2 or orderProc.flag == 3) and kataR == true and ValidTarget(GetCurrentTarget(),550) and mainMenu.Keys.ComboKat:Value() then
BlockOrder()
end
end)
OnSpellCast(function(castProc)
if kataR == true and castProc.spellID == 1 then
BlockCast()
end
end)
OnCreateObj(function(Obj)
if GetDistance(Obj) < 2500 then
if Obj.name == "W_Indicator_Ally" then
table.insert(DaggerPos, Obj)
local delay = 0.2
if GetDistance(Obj) < 50 then
delay = 0
end
DelayAction(function() table.insert(DaggerIsCast, Obj) end, 1.0 - delay)
end
end
end)
OnDeleteObj(function(Obj)
if Obj.name == "W_Indicator_Ally" then
for i,v in pairs(DaggerIsCast) do
if GetNetworkID(v) == GetNetworkID(Obj) then
table.remove(DaggerIsCast, i)
end
end
for i,v in pairs(DaggerPos) do
if GetNetworkID(v) == GetNetworkID(Obj) then
table.remove(DaggerPos,i)
end
end
end
end)
OnDraw(function()
local posMy = GetOrigin(myHero)
if mainMenu.DR.Q:Value() and IsReady(_Q) then
DrawCircle(posMy,725,1,25,GoS.Pink)
end
if mainMenu.DR.W:Value() and IsReady(_W) then
DrawCircle(posMy,350,1,25,GoS.Yellow)
end
if mainMenu.DR.E:Value() and IsReady(_E) then
DrawCircle(posMy,800,1,25,GoS.Blue)
end
if mainMenu.DR.R:Value() and IsReady(_R) then
DrawCircle(posMy,600,1,25,GoS.Green)
end
for i,v in pairs(DaggerIsCast) do
DrawCircle(v.x, v.y, v.z, 350,1,25,GoS.Pink)
end
end)
function ComboKat()
if mainMenu.Keys.ComboKat:Value() and not kataR == true then
local target = GetCurrentTarget()
if ValidTarget(target, 1500) then
if GetDistance(target) < 650 and IsReady(_Q) then
CastTargetSpell(target, _Q)
end
if GetDistance(target) < 200 and IsReady(_W) then
CastSpell(_W)
end
if IsReady(_E) then
for i,v in pairs(DaggerIsCast) do
local posDaga = Vector(v) + (Vector(target) - Vector(v)):normalized()* 50
if GetDistance(target, posDaga) < 350 and GetDistance(v) < 1200 then
CastSkillShot(2, posDaga.x, posDaga.y, posDaga.z)
elseif GetDistance(target, posDaga) < 350 and GetDistance(target) < 800 then
CastSkillShot(2, posDaga.x, posDaga.y, posDaga.z)
end
end
end
end
end
end
function AutoLevel()
QEWt = {_Q,_E,_W,_Q,_E,_R,_E,_Q,_E,_Q,_R,_Q,_Q,_W,_W,_R,_W,_W}
if mainMenu.AL.EQE:Value() then
mainMenu.AL.EQE:Value(true)
end
if mainMenu.AL.ALV:Value() and GetLevelPoints(myHero) > 0 then
if mainMenu.AL.EQE:Value() then
LevelSpell(QEWt[GetLevel(myHero)-GetLevelPoints(myHero)+1])
end
end
end
function Lane()
if mainMenu.Keys.LaneClear:Value() then
for _, minion in pairs(minionManager.objects) do
if GetTeam(minion) ~= MINION_ALLY then
if IsReady(_Q) and ValidTarget(minion, 715) then
CastTargetSpell(minion, _Q)
end
for i,v in pairs(DaggerIsCast) do
if IsReady(_E) and ValidTarget(minion, 800) then
local posDaga = Vector(v) + (Vector(minion) - Vector(v)):normalized()* 50
if GetDistance(minion, posDaga) < 350 and GetDistance(v) < 1200 then
CastSkillShot(_E, posDaga.x, posDaga.y, posDaga.z)
end
end
end
end
end
end
end
function CastGun()
if mainMenu.Keys.ComboKat:Value() then
local target = GetCurrentTarget()
if ValidTarget(target,1500) and not kataR == true then
local tiro = GetItemSlot(myHero, 3146)
if tiro >= 1 and ValidTarget(target, 550) then
if CanUseSpell(myHero, tiro) == READY then
CastTargetSpell(target, tiro)
end
end
end
end
end
function IgL()
for _, enemy in pairs(GetEnemyHeroes()) do
if Ignite and mainMenu.CK.AutoIgnite:Value() then
if IsReady(Ignite) and 20*GetLevel(myHero)+50 > GetHP(enemy)+GetHPRegen(enemy)*3 and ValidTarget(enemy, 600) then
CastTargetSpell(enemy, Ignite)
end
end
end
end
function CancelR()
if GotBuff(myHero, "katarinarsound") == 1 and EnemiesAround(GetOrigin(myHero), 550 + 10) == 0 then
MoveToXYZ(GetMousePos())
end
end
function DamageRKat(target)
local target = GetCurrentTarget()
if target ~= 0 and CastSpell(_R) then
local Damage = 0
local DamageAP = {375, 562.5, 750}
local DamageAD = {1.325302, 1.325302, 1.325302}
if IsReady(_R) then
Damage = (0.80 * GetBonusDmg(myHero) + DamageAP[GetCastLevel(myHero, _R)] + 0.2 * GetBonusAP(myHero)) + DamageAD[GetCastLevel(myHero, _R)]
end
return myHero.CalcDamage(target.Addr, Damage)
end
return 0
end
function selfcAR()
local rdmg = 0
local target = GetCurrentTarget()
if IsReady(_R) then
rdmg = CalcDamage(187.5*GetCastLevel(myHero,_R)+187.5)+(3.3*GetBonusDmg(myHero))+(2.85*GetBonusAP(myHero))
if GetCurrentHP(target) < rdmg then
CastSpell(_R)
end
end
if IsReady(_R) then
if EnemiesAround(GetOrigin(myHero),500) >= mainMenu.CK.CountR:Value() then
CastSpell(_R)
end
end
if CanUseSpell(myHero,_R) == READY then
if 100*GetCurrentHP(target)/GetMaxHP(target) < 35 then
CastSpell(_R)
end
end
end
OnTick(function(myHero)
--Combo Kat
ComboKat()
--AutoLevel
AutoLevel()
--LaneClear
Lane()
--CanR
CancelR()
--Ig
IgL()
if mainMenu.CK.CanItems:Value() then
CastGun()
end
for _, enemy in pairs(GetEnemyHeroes()) do
if IsReady(_Q) and ValidTarget(enemy, 725) and GetCurrentHP(enemy) < getdmg("Q", enemy) then
CastTargetSpell(enemy, _Q)
end
if IsReady(_R) and ValidTarget(enemy, 500) and EnemiesAround(GetOrigin(myHero), 500) >= mainMenu.CK.CountR:Value() and GetCurrentHP(enemy) < DamageRKat(enemy) then
CastSpell(_R)
end
if IsReady(_E) and ValidTarget(enemy, 800) and GetCurrentHP(enemy) < getdmg("E", enemy) then
CastSkillShot(_E, GetOrigin(enemy))
end
end
end)