if GetObjectName(GetMyHero()) ~= "Katarina" then return end
require('Inspired')
require('DeftLib')
local KatarinaMenu = MenuConfig("Katarina", "Katarina")
KatarinaMenu:Menu("Combo", "Combo")
KatarinaMenu.Combo:Boolean("Q", "Use Q", true)
KatarinaMenu.Combo:Boolean("W", "Use W", true)
KatarinaMenu.Combo:Boolean("E", "Use E", true)
KatarinaMenu.Combo:Boolean("R", "Use R", false)
KatarinaMenu:Slider("xR","Ult on X enemies", 3, 1, 5, 1)
KatarinaMenu.Combo:Key("WardJumpkey", "Ward Jump!", string.byte("G"))
KatarinaMenu:Menu("Harass", "Harass")
KatarinaMenu.Harass:Boolean("Q", "Use Q", true)
KatarinaMenu.Harass:Boolean("W", "Use W", true)
KatarinaMenu.Harass:Boolean("E", "Use E", true)
KatarinaMenu:Menu("Killsteal", "Killsteal")
KatarinaMenu.Killsteal:Boolean("SmartKS", "Smart KS", true)
KatarinaMenu.Killsteal:Boolean("UseWards", "Use Wards", true)
KatarinaMenu:Menu("Misc", "Misc")
if Ignite ~= nil then KatarinaMenu.Misc:Boolean("Autoignite", "Auto Ignite", true) end
KatarinaMenu:Menu("JungleClear", "JungleClear")
KatarinaMenu.JungleClear:Boolean("Q", "Use Q", true)
KatarinaMenu.JungleClear:Boolean("W", "Use W", true)
KatarinaMenu.JungleClear:Boolean("E", "Use E", true)
KatarinaMenu:Menu("Lasthit", "Lasthit")
KatarinaMenu.Lasthit:Boolean("Q", "Lasthit with Q", true)
KatarinaMenu:Menu("Laneclear", "Laneclear")
KatarinaMenu.Laneclear:Boolean("Q", "Use Q", false)
KatarinaMenu.Laneclear:Boolean("W", "Use W", false)
KatarinaMenu.Laneclear:Boolean("E", "Use E", false)
KatarinaMenu:Menu("Drawings", "Drawings")
KatarinaMenu.Drawings:Boolean("Q", "Draw Q Range", true)
KatarinaMenu.Drawings:Boolean("W", "Draw W Range", false)
KatarinaMenu.Drawings:Boolean("E", "Draw E Range", true)
KatarinaMenu.Drawings:Boolean("R", "Draw R Range", false)
--True
local GirarR = false
local Dagger = {}
local DaggerW = {}
local Daggerpos = {}
local ArgsW = 0
local spellObj
local kataCounter = 0
local RTime = 0
local Q = { delay = .25, speed = math.huge , width = nil, range = 625 }
local W = { delay = .25, speed = 1850 , width = 60 , range = 150 }
local E = { delay = .25, speed = math.huge , width = nil, range = 700 }
local R = { delay = .25, speed = math.huge , width = nil, range = 500 }
local function Kat_ProcessSpellComplete(unit, spell)
if unit == myHero and spell.name == "KatarinaW" then
ArgsW = GetTickCount()
end
if unit == myHero and spell.name == "KatarinaR" then
RTime = GetTickCount()
end
end
local function Kat_UpdateBuff(unit,buff)
if unit.isMe and buff.Name == "katarinarsound" then
GirarR = true
end
end
local function Kat_RemoveBuff(unit,buff)
if unit.isMe and buff.Name == "katarinarsound" then
GirarR = false
end
end
local function Kat_OnSpellID(castProc)
if GirarR == true and castProc.spellID == 1 then
BlockCast()
end
end
local function Kat_OnCreateObj(Object)
if GetObjectBaseName(Object) == "HiddenMinion" then
table.insert(Dagger, Object)
DelayAction(function() table.remove(Dagger, 1) end, 6900)
end
end
local function Kat_OnDeleteObj(Object)
if GetObjectBaseName(Object) == "HiddenMinion" then
for i,rip in pairs(Dagger) do
if GetNetworkID(Object) == GetNetworkID(rip) then
table.remove(Dagger,i)
end
end
end
end
local function CalcDmg(spell, target)
local dmg={
[_Q] = 60+20*GetCastLevel(myHero, _Q)+GetBonusDmg(myHero),
[_W] = 40+10*GetCastLevel(myHero, _W)+GetBonusDmg(myHero),
[_Q] = 60+20*GetCastLevel(myHero, _Q)+GetBonusDmg(myHero),
[_R] = 40+40*GetCastLevel(myHero, _R)+GetBonusDmg(myHero),
}
return dmg[spell]
end
local function Mode()
if IOW_Loaded then
return IOW:Mode()
elseif DAC_Loaded then
return DAC:Mode()
elseif PW_Loaded then
return PW:Mode()
elseif GoSWalkLoaded and GoSWalk.CurrentMode then
return ({"Combo", "Harass", "LaneClear", "LastHit"})[GoSWalk.CurrentMode+1]
elseif AutoCarry_Loaded then
return DACR:Mode()
elseif _G.SLW_Loaded then
return SLW:Mode()
elseif EOW_Loaded then
return EOW:Mode()
end
return ""
end
local function CastQ(target)
if Ready(_Q) and ValidTarget(target, Q.range) then
CastTargetSpell(target, _Q)
end
end
local function CastW(target)
if Ready(_W) and ValidTarget(target, W.range) then
CastSpell(_W)
end
end
local function CastE(target)
for _,Adaga in pairs(Dagger) do
if GetDistance(Adaga, target) < 250 then
CastSkillShot(_E,GetOrigin(target) + (VectorWay(GetOrigin(target),GetOrigin(Adaga))):normalized()*math.random(100,150))
end
end
end
local function Kat_LastHit(target)
if Mode() == "LastHit" then
if target.team ~= myHero.team and ValidTarget(target, Q.range) then
if KatarinaMenu.Lasthit.Q:Value() then
if GetDistance(target) > 250 and GetCurrentHP(target) < CalcDmg(_Q, target) then CastQ(target) elseif GetDistance(target) < 250 and GetCurrentHP(target) < CalcDmg(_Q, target)*1.5 then CastQ(target) end
end
end
end
end
local function Kat_Clear()
if Mode() == "LaneClear" then
for _,mobs in pairs(minionManager.objects) do
if GetTeam(mobs) == MINION_ENEMY then
if IsReady(_Q) and ValidTarget(mobs, Q.range) then
CastTargetSpell(mobs, _Q)
end
if IsReady(_W) and ValidTarget(mobs, W.range) then
CastSpell(_W)
end
end
end
end
end
local function Kat_Combo(target)
if IOW:Mode() == "Combo" and not GirarR then
if GirarR == false then
if KatarinaMenu.Combo.Q:Value() then CastQ(target) end
if KatarinaMenu.Combo.W:Value() then CastW(target) end
if KatarinaMenu.Combo.E:Value() then CastE(target) end
end
end
end
local function Misc(target)
for i,enemy in pairs(GetEnemyHeroes()) do
if Ignite and OriannaMenu.Misc.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
local function Kat_Tick(myHero)
local target = GetCurrentTarget()
Kat_Combo(target)
Misc(target)
Kat_Clear(minionManager.objects)
for _, target in pairs(minionManager.objects) do Kat_LastHit(target) Kat_Clear(target) end
end
local function Kat_Draw()
local pos = GetOrigin(myHero)
if KatarinaMenu.Drawings.Q:Value() then DrawCircle(pos,625,1,25,GoS.Pink) end
if KatarinaMenu.Drawings.W:Value() then DrawCircle(pos,150,1,25,GoS.Yellow) end
if KatarinaMenu.Drawings.E:Value() then DrawCircle(pos,700,1,25,GoS.Blue) end
if KatarinaMenu.Drawings.R:Value() then DrawCircle(pos,550,1,25,GoS.Green) end
end
local function Kat_ObJLoader(Object)
if GetObjectBaseName(Object) == "Katarina_Base_W_Indicator_Ally.troy" then
Dagger = Object
end
end
local function Kat_ObJ2(Object)
if GetObjectBaseName(Object) == "Katarina_Base_W_Indicator_Ally.troy" then
Dagger = Object
end
end
OnLoad(function()
OnTick(Kat_Tick)
OnDraw(Kat_Draw)
OnProcessSpell(Kat_ProcessSpell)
OnProcessSpellComplete(Kat_ProcessSpellComplete)
OnUpdateBuff(Kat_UpdateBuff)
OnRemoveBuff(Kat_RemoveBuff)
OnSpellCast(Kat_OnSpellID)
OnCreateObj(Kat_OnCreateObj)
OnDeleteObj(Kat_OnDeleteObj)
OnCreateObj(Kat_ObJ2)
OnObjectLoad(Kat_ObJLoader)
PrintChat(string.format("Katarina: Good Game ! "))
PrintChat("DevKat Scripts: " ..GetObjectBaseName(myHero))
end)
function VectorWay(A,B)
WayX = B.x - A.x
WayY = B.y - A.y
WayZ = B.z - A.z
return Vector(WayX, WayY, WayZ)
end