if GetObjectName(GetMyHero()) ~= "Jhin" then return end require('Inspired') local JhinMenu = MenuConfig("Jhin", "Jhin") JhinMenu:Menu("Combo") JhinMenu.Combo:Menu("QSettings", "Q - Settings") JhinMenu.Combo.QSettings:Boolean("Q", "Use Q", true) JhinMenu.Combo.QSettings:Slider("QMana", "Use Q if %Mana >", 35, 1, 100, 1) JhinMenu.Combo:Menu("WSettings", "W - Settings") JhinMenu.Combo.WSettings:Boolean("W", "Use W", true) JhinMenu.Combo.WSettings:Slider("WMana", "Use W if %Mana >", 35, 1, 100, 1) JhinMenu.Combo:Menu("ESettings", "E - Settings") JhinMenu.Combo.ESettings:Boolean("E", "Use E", false) JhinMenu.Combo.ESettings:Slider("EMana", "Use E if %Mana >", 35, 1, 100, 1) JhinMenu.Combo:Menu("RSettings", "R - Settings") JhinMenu.Combo.RSettings:Boolean("R", "Use R (Shooting)", false) JhinMenu:Menu("Killsteal", "Killsteal") JhinMenu.Killsteal:Boolean("Steal", "Enable Killsteal", true) JhinMenu.Killsteal:Boolean("StealQ", "Use Q", true) JhinMenu.Killsteal:Boolean("StealW", "Use W", true) JhinMenu.Killsteal:Boolean("StealIgnite", "Use Ignite", true) JhinMenu:Menu("Farming", "Farming") JhinMenu.Farming:Boolean("FarmQ", "Use Q", true) JhinMenu.Farming:Boolean("FarmE", "Use E (LaneClear only)", true) JhinMenu.Farming:Slider("FarmingMana", "Farm if %Mana >", 30, 1, 100, 1) JhinMenu:Menu("Misc", "Misc") JhinMenu.Misc:Boolean("UseBotrk", "Use BoTRK", true) JhinMenu.Misc:Boolean("UseYoumuu", "Use Youmuu's Ghostblade", true) JhinMenu.Misc:Boolean("Farsight", "Buy Farsight Alteration", true) JhinMenu:Menu("Drawings", "Drawings") JhinMenu.Drawings:Boolean("DrawQ", "Draw Q's Range", true) JhinMenu.Drawings:Boolean("DrawW", "Draw W's Range", true) JhinMenu.Drawings:Boolean("DrawE", "Draw E's Range", true) JhinMenu.Drawings:Boolean("DrawR", "Draw R's Range", true) local isMarked = false local RCasting = false local RCast = 0 local ShouldCast = false 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)) local EPred = nil local WPred = nil local FindRadius = 0 local RPred = nil local target = GetCurrentTarget() local OldTarget = target local ForceMovement = false local AllowForceMovement = true OnUpdateBuff(function(Object,buff) if buff.Name == "jhinespotteddebuff" then IsMarked = true end if buff.Name == "JhinPassiveReload" then ForceMovement = true end end) OnRemoveBuff(function(Object,buff) if buff.Name == "jhinespotteddebuff" then IsMarked = false end if buff.Name == "JhinPassiveReload" then ForceMovement = false end end) OnProcessSpell(function(unit,spell) if unit == myHero and JhinMenu.Combo.RSettings.R:Value() then if spell.name == "JhinR" then IOW.movementEnabled = false IOW.attacksEnabled = false IsChanneled = true RCasting = true OldTarget = GetCurrentTarget() DelayAction(function() ResetUlt() end, 10) end if spell.name == "JhinRShotMis" then RCast = RCast + 1 ShouldCast = true DelayAction(function() ResetUlt() end, 10 - 3*RCast) end if spell.name == "JhinRShotMis4" then ResetUlt() end end end) OnProcessSpellComplete(function(Object, spell) if Object == GetMyHero() and spell and spell.name then if spell.name == "JhinQ" then CastEmote(EMOTE_DANCE) MoveToXYZ(GetMousePos()) elseif spell.name == "JhinW" then CastEmote(EMOTE_DANCE) MoveToXYZ(GetMousePos()) elseif spell.name == "JhinE" then CastEmote(EMOTE_DANCE) MoveToXYZ(GetMousePos()) end end end) OnDraw (function (myHero) local pos = GetOrigin(myHero) if JhinMenu.Drawings.DrawQ:Value() then DrawCircle(pos,600,1,60,GoS.Red) end if JhinMenu.Drawings.DrawW:Value() then DrawCircle(pos,2500,1,60,GoS.Yellow) end if JhinMenu.Drawings.DrawE:Value() then DrawCircle(pos,750,1,60,GoS.Green) end if JhinMenu.Drawings.DrawR:Value() then DrawCircle(pos,3500,1,60,GoS.Cyan) end end) OnTick(function(myHero) target = GetCurrentTarget() local Blade = GetItemSlot(myHero,3144) local Ruined = GetItemSlot(myHero,3153) local Yomuu = GetItemSlot(myHero,3142) local TotalDamage = GetBaseDamage(myHero) + GetBonusDmg(myHero) FindRadius = 2 * math.ceil(GetDistance(OldTarget) / 4.6) if RCasting and ValidTarget(target, 3500) and IsVisible(target) and ShouldCast and RCast > 0 and not IsDead(OldTarget) then ShotUlt(target) end if RCasting and IsDead(OldTarget) and (EnemiesAround(OldTarget, FindRadius) <= 1 or not ValidTarget(target, 1700)) then ResetUlt() end if IOW:Mode() == "Combo" then if Blade >= 1 and ValidTarget(target,550) and JhinMenu.Misc.UseBotrk:Value() then if CanUseSpell(myHero,GetItemSlot(myHero,3144)) == READY then CastTargetSpell(target, GetItemSlot(myHero,3144)) end elseif Ruined >= 1 and ValidTarget(target,550) and JhinMenu.Misc.UseBotrk:Value() then if CanUseSpell(myHero,GetItemSlot(myHero,3153)) == READY then CastTargetSpell(target,GetItemSlot(myHero,3153)) end end if Yomuu >= 1 and ValidTarget(target,750) and JhinMenu.Misc.UseYoumuu:Value() then if CanUseSpell(myHero,GetItemSlot(myHero,3142)) == READY then CastSpell(GetItemSlot(myHero,3142)) end end if IsReady(_E) and ValidTarget(target, 750) and JhinMenu.Combo.ESettings.E:Value() and (GetPercentMP(myHero) >= JhinMenu.Combo.ESettings.EMana:Value()) then EPred = GetPredictionForPlayer(GetOrigin(myHero),target,GetMoveSpeed(target), 750, 250, 750, 260, false, true) if EPred.HitChance == 1 then CastSkillShot(_E, EPred.PredPos) end end if IsReady(_W) and JhinMenu.Combo.WSettings.W:Value() and (GetPercentMP(myHero) >= JhinMenu.Combo.WSettings.WMana:Value()) then if IsMarked and ValidTarget(target, 2500) then WPred = GetPredictionForPlayer(GetOrigin(myHero),target,GetMoveSpeed(target),math.huge,750,2500,50,false,true) if WPred.HitChance == 1 then CastSkillShot(_W, WPred.PredPos) end end end if IsReady(_Q) and JhinMenu.Combo.QSettings.Q:Value() and (GetPercentMP(myHero) >= JhinMenu.Combo.QSettings.QMana:Value()) then for i,minion in pairs(minionManager.objects) do if IsObjectAlive(minion) and GetTeam(minion) == MINION_ENEMY and IsReady(_Q) and ValidTarget(minion, 600) and GetCurrentHP(minion) < CalcDamage(myHero, minion, 35 + 25*GetCastLevel(myHero, _Q) + (0.25 + 0.05*GetCastLevel(myHero, _Q))*GetBonusDmg(myHero), 0) and EnemiesAround(GetOrigin(minion), 500) > 0 and MinionsAround(GetOrigin(minion), 500) <= 3 then CastTargetSpell(minion, _Q) elseif ValidTarget(target, 600) then CastTargetSpell(target, _Q) end end end end -- End combo mode if IOW:Mode() == "LastHit" and not RCasting then if JhinMenu.Farming.FarmQ:Value() and (GetPercentMP(myHero) >= JhinMenu.Farming.FarmingMana:Value()) then for i,minion in pairs(minionManager.objects) do if IsObjectAlive(minion) and GetTeam(minion) == MINION_ENEMY and IsReady(_Q) and ValidTarget(minion, 600) and GetCurrentHP(minion) < CalcDamage(myHero, minion, 35 + 25*GetCastLevel(myHero, _Q) + (0.25 + 0.05*GetCastLevel(myHero, _Q))*GetBonusDmg(myHero), 0) then CastTargetSpell(minion, _Q) end end end end -- End Clear Mode if IOW:Mode() == "LaneClear" and not RCasting then if JhinMenu.Farming.FarmQ:Value() and (GetPercentMP(myHero) >= JhinMenu.Farming.FarmingMana:Value()) then for i,minion in pairs(minionManager.objects) do if IsObjectAlive(minion) and GetTeam(minion) == MINION_ENEMY and IsReady(_Q) and ValidTarget(minion, 600) and GetCurrentHP(minion) < CalcDamage(myHero, minion, 35 + 25*GetCastLevel(myHero, _Q) + (0.25 + 0.05*GetCastLevel(myHero, _Q))*GetBonusDmg(myHero), 0) then CastTargetSpell(minion, _Q) end end end if IsReady(_E) and JhinMenu.Farming.FarmE:Value() and (GetPercentMP(myHero) >= JhinMenu.Farming.FarmingMana:Value()) then local BestPos, BestHit = GetFarmPosition(750, 260, MINION_ENEMY) if BestPos and BestHit > 0 then CastSkillShot(_E, BestPos) end end end if JhinMenu.Killsteal.Steal:Value() and not RCasting then for i, enemy in pairs(GetEnemyHeroes()) do if JhinMenu.Killsteal.StealQ:Value() then if Ready(_Q) and GetCurrentHP(enemy) + GetDmgShield(enemy) < CalcDamage(myHero, enemy, 35 + 25*GetCastLevel(myHero, _Q) + (0.25 + 0.05*GetCastLevel(myHero, _Q))*TotalDamage, 0) and ValidTarget(enemy, 600) then CastTargetSpell(enemy, _Q) end end if JhinMenu.Killsteal.StealW:Value() then if Ready(_W) and GetCurrentHP(enemy) + GetDmgShield(enemy) < CalcDamage(myHero, enemy, 15 + 35*GetCastLevel(myHero, _Q) + 0.7*TotalDamage, 0) and ValidTarget(enemy, 2500) then WPred = GetPredictionForPlayer(GetOrigin(myHero),target,GetMoveSpeed(enemy),math.huge,750,2500,50,false,true) if WPred.HitChance == 1 then CastSkillShot(_W, WPred.PredPos) end end end if Ignite and JhinMenu.Killsteal.StealIgnite:Value() then if IsReady(Ignite) and 20*GetLevel(myHero)+50 > GetCurrentHP(enemy)+GetDmgShield(enemy)+GetHPRegen(enemy)*3 and ValidTarget(enemy, 600) then CastTargetSpell(enemy, Ignite) end end end end if JhinMenu.Misc.Farsight:Value() and GetLevel(myHero) > 8 then if GetItemID(myHero,ITEM_7) ~= 3363 then BuyItem(3363) end -- Noddy pls end if ForceMovement and not RCasting and KeyIsDown(32) then DelayAction(function() MoveToXYZ(GetMousePos()) end, 0.25) end end) function ShotUlt(target) RPred = GetPredictionForPlayer(GetOrigin(myHero),target,GetMoveSpeed(target),2500,250,3000,50,false,true) if RPred.HitChance == 1 and ShouldCast then CastSkillShot(_R, RPred.PredPos) end end function ResetUlt() IOW.movementEnabled = true IOW.attacksEnabled = true IsChanneled = false RCasting = false RCast = 0 ShouldCast = false OldTarget = GetCurrentTarget() end OnLoseVision(function(Object) if Object == GetCurrentTarget() and RCasting then ShouldCast = false end end) OnGainVision(function(Object) if Object == GetCurrentTarget() and RCasting then ShouldCast = true end end) PrintChat(string.format("[Royal] Jhin, the Virtuoso: By R0yalHe1r Loaded, Have A Good Game! "))