Guest User

Sexy v1

a guest
Jul 29th, 2015
632
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 99.85 KB | None | 0 0
  1. --[[
  2. -> Nulled.IO
  3. Script details:
  4. Series: Sexy Series AIO
  5. Champions included: Annie, Swain, LeBlanc
  6. Author: Sexy SmTRed
  7. Designed for: Cloudrop
  8. Current version: 0.1
  9.  
  10.  
  11. Changelog:
  12. 0.1
  13. Started coding
  14. --]]
  15.  
  16. local printChat = Game.Chat.Print
  17. local _Q = Game.Slots.SPELL_1
  18. local _W = Game.Slots.SPELL_2
  19. local _E = Game.Slots.SPELL_3
  20. local _R = Game.Slots.SPELL_4
  21. local _S1 = Game.Slots.SUMMONER_1
  22. local _S2 = Game.Slots.SUMMONER_2
  23. local READY = Game.SpellState.READY
  24. local DrawCirc = Graphics.DrawCircle
  25.  
  26.  
  27. -- Initializing Classes
  28. class 'Annie'
  29. class 'Swain'
  30. class 'Leblanc'
  31. class 'Blitzcrank'
  32. class 'Ryze'
  33. class 'Lux'
  34. class 'Morgana'
  35. class 'Katarina'
  36.  
  37. local champ = nil
  38. local activeClass = nil
  39. local champions = {
  40. ["Annie"] = "Pedobear With Bear",--Kid(),
  41. ["Swain"] = "Big bird",
  42. ["Leblanc"] = "Faker Style",
  43. ["Blitzcrank"] = "Iron Punch",
  44. ["Ryze"] = "The blue monkey",
  45. ["Lux"] = "Sun Sexy",
  46. ["Morgana"] = "Darkness Sexy",
  47. ["Katarina"] = "Best Sexy girl"
  48. }
  49.  
  50.  
  51. function Say(text)
  52. printChat("<font color=\"#FF0000\"><b>Sexy Script:</b></font> <font color=\"#FFFFFF\">" .. text .. "</font>")
  53. end
  54.  
  55. Callback.Bind("Load", function()
  56. Callback.Bind("GameStart", function() OnLoad() end)
  57. end)
  58.  
  59. function OnLoad()
  60. -- Checking whether the champions is supported
  61. if champions[myHero.charName] ~= nil then
  62. champ = myHero.charName
  63. -- Letting user know his champ is supported
  64. Say("Loading...")
  65. else
  66. return Say("Your champion is not sexy! You can try and request it on the thread.")
  67. end
  68.  
  69. -- Making Menu cooler for naming it Sexy + the supported champions
  70. -- Equals: Sexy Annie, Sexy Lux, ...
  71. name = "Sexy " .. champ .. " - "
  72.  
  73. -- Global Variables - Used with every champion
  74. InitializeGlobalVariables()
  75.  
  76. -- Calling correct class
  77. if champ == "Annie" then
  78. activeClass = Annie()
  79. elseif champ == "Leblanc" then
  80. activeClass = Leblanc()
  81. elseif champ == "Blitzcrank" then
  82. activeClass = Blitzcrank()
  83. elseif champ == "Ryze" then
  84. activeClass = Ryze()
  85. elseif champ == "Lux" then
  86. activeClass = Lux()
  87. elseif champ == "Katarina" then
  88. activeClass = Katarina()
  89. end
  90.  
  91. -- Drawing here because Spells are initialized within the class, so the class has to been called first
  92. DrawGlobalDrawings()
  93.  
  94. -- Misc loading at the bottom, because it being on top of menu is stupido
  95. DrawGlobalMisc()
  96.  
  97. -- Normal Callbacks used for every script
  98. Callback.Bind("Tick", function() OnTick() end)
  99. Callback.Bind("Draw", function() OnDraw() end)
  100. Callback.Bind("CreateObj", function(obj) OnCreateObj(obj) end)
  101. Callback.Bind("DeleteObj", function(obj) OnDeleteObj(obj) end)
  102.  
  103. -- Script succesfully loaded, enjoy.
  104. Say("Welcome " Core.GetUser() . ", " . ". The Sexy script - " . champions[myHero.charName] . " - was succesfully loaded. Enjoy playing with Sexy Champs! ")
  105. end
  106.  
  107.  
  108. function OnTick()
  109. SpellChecks()
  110. target = ts:GetTarget(Spells.Q.range)
  111.  
  112. if Menu.comboKey:IsPressed() == true then
  113. if target ~= nil and Menu.combo.comboItems then
  114. UseItems(target)
  115. end
  116. activeClass:Combo()
  117. end
  118.  
  119. if Menu.harassKey:IsPressed() == true then
  120. activeClass:Harass()
  121. end
  122.  
  123. if heal ~= nil and Menu.misc.autoheal.useHeal:Value() == true and not isRecalling then
  124. AutoHeal()
  125. end
  126.  
  127. if ignite ~= nil and Menu.misc.autoignite.useIgnite:Value() == true then
  128. AutoIgnite()
  129. end
  130.  
  131. if not usingHealthPot and Menu.misc.autopotions.useHealthPotion:Value() == true then
  132. if myHero.health / myHero.maxHealth <= Menu.misc.autopotions.hpPerc:Value() then
  133. CastItem(2003)
  134. end
  135. end
  136. if not usingManaPot and Menu.misc.autopotions.useManaPotion:Value() == true then
  137. if myHero.mana / myHero.maxMana <= Menu.misc.autopotions.manaPerc:Value() then
  138. CastItem(2004)
  139. end
  140. end
  141.  
  142. if Menu.misc.autolevel.autolevel:Value() == true then
  143. AutoLevel()
  144. end
  145.  
  146. if Menu.misc.zhonyas.zhonyas:Value() == true then
  147. Zhonyas()
  148. end
  149. end
  150.  
  151. function OnCreateObj(obj)
  152. if obj.name == "TeleportHome.troy" and myHero:DistanceTo(obj) < 50 then
  153. isRecalling = true
  154. end
  155.  
  156. if obj.name:find("Global_Item_HealthPotion.troy") and myHero:DistanceTo(obj) < 50 then
  157. usingHealthPot = true
  158. end
  159.  
  160. if obj.name:find("Global_Item_ManaPotion.troy") and myHero:DistanceTo(obj) < 50 then
  161. usingManaPot = true
  162. end
  163. end
  164.  
  165. function OnDeleteObj(obj)
  166. if obj.name == "TeleportHome.troy" and myHero:DistanceTo(obj) < 50 then
  167. isRecalling = false
  168. end
  169.  
  170. if obj.name:find("Global_Item_HealthPotion.troy") and myHero:DistanceTo(obj) < 50 then
  171. usingHealthPot = false
  172. end
  173.  
  174. if obj.name:find("Global_Item_ManaPotion.troy") and myHero:DistanceTo(obj) < 50 then
  175. usingManaPot = false
  176. end
  177. end
  178.  
  179. function OnDraw()
  180. if myHero.dead then return end
  181. if Menu.useDrawings:Value() == true then
  182. if Spells.Q.range and Menu.draw.drawQ:Value() == true then
  183. DrawCirc(myHero.x, myHero.y, myHero.z, Spells.Q.range, Graphics.RGB(100, 200, 150):ToNumber())
  184. end
  185.  
  186. if Spells.W.range and Menu.draw.drawW:Value() == true then
  187. DrawCirc(myHero.x, myHero.y, myHero.z, Spells.W.range, Graphics.RGB(100, 200, 150):ToNumber())
  188. end
  189.  
  190. if Spells.E.range and Menu.draw.drawE:Value() == true then
  191. DrawCirc(myHero.x, myHero.y, myHero.z, Spells.E.range, Graphics.RGB(100, 200, 150):ToNumber())
  192. end
  193.  
  194. if Spells.R.range and Menu.draw.drawR:Value() == true then
  195. DrawCirc(myHero.x, myHero.y, myHero.z, Spells.R.range, Graphics.RGB(100, 200, 150):ToNumber())
  196. end
  197. end
  198. end
  199.  
  200. function InitializeGlobalVariables()
  201. -- Item Table
  202. -- Copied from 1.0 (Obviously remains the same in 2.0)
  203. Items = {
  204. BRK = { id = 3153, range = 450, reqTarget = true, slot = nil },
  205. BWC = { id = 3144, range = 400, reqTarget = true, slot = nil },
  206. HGB = { id = 3146, range = 400, reqTarget = true, slot = nil },
  207. RSH = { id = 3074, range = 350, reqTarget = false, slot = nil },
  208. STD = { id = 3131, range = 350, reqTarget = false, slot = nil },
  209. TMT = { id = 3077, range = 350, reqTarget = false, slot = nil },
  210. YGB = { id = 3142, range = 350, reqTarget = false, slot = nil },
  211. BFT = { id = 3188, range = 750, reqTarget = true, slot = nil },
  212. RND = { id = 3143, range = 275, reqTarget = false, slot = nil }
  213. }
  214.  
  215. -- Summoners
  216. ignite, heal = nil, nil
  217. Iready, Hready = false, false
  218.  
  219. --Target
  220. target = nil
  221.  
  222. -- Potions and Recalling
  223. usingHealthPot, usingManaPot, isRecalling = false, false, false
  224.  
  225. -- Making table for KillText
  226. KillText = {}
  227.  
  228. -- Soon™
  229. --EnemyMinions = MinionManager.new(MinionManager.Mode.ENEMY, Spells.W.range, myHero, MinionManager.Sort.HEALTH_DEC)
  230.  
  231. -- Find the slot of the Summoners
  232. FindSummoners()
  233.  
  234. -- Loop through table to find enemy heroes, to improve performance later
  235. EnemyTable = GetEnemyHeroes()
  236.  
  237. -- LevelUp Table (For AutoLevel)
  238. levelUpTable = {
  239. {_Q, _W, _E, _R},
  240. {_Q, _E, _W, _R},
  241. {_W, _Q, _E, _R},
  242. {_W, _E, _Q, _R},
  243. {_E, _Q, _W, _R},
  244. {_E, _W, _Q, _R}
  245. }
  246.  
  247. -- For Autolevel
  248. lastLevel = myHero.level - 1
  249.  
  250. -- Draw Menu Globally (Menu used by every script)
  251. DrawGlobalMenu()
  252.  
  253. end
  254.  
  255.  
  256. function SpellChecks()
  257. Hready = (heal ~= nil and myHero:CanUseSpell(heal) == READY)
  258. Iready = (ignite ~= nil and myHero:CanUseSpell(ignite) == READY)
  259. end
  260.  
  261. function FindSummoners()
  262. heal = myHero:GetSpellData(_S1).name:find("summonerheal") and _S1 or myHero:GetSpellData(_S2).name:find("summonerheal") and _S2
  263. ignite = myHero:GetSpellData(_S1).name:find("summonerdot") and _S1 or myHero:GetSpellData(_S2).name:find("summonerdot") and _S2
  264. end
  265.  
  266. function AutoIgnite()
  267. for i, hero in ipairs(EnemyTable) do
  268. if Iready and Menu.misc.autoignite[hero.charName]:Value() == true and hero.health < GetIgniteDamage() then
  269. myHero:CastSpell(ignite, hero)
  270. end
  271. end
  272. end
  273.  
  274. function AutoHeal()
  275. if myHero.health / myHero.maxHealth <= Menu.misc.autoheal.hpPerc:Value() and Hready then
  276. myHero:CastSpell(heal)
  277. end
  278. if Menu.misc.autoheal.helpTeammate:Value() == true then
  279. for i, hero in ipairs(EnemyTable) do
  280. if Menu.misc.autoheal.teammates[hero.charName]:Value() then
  281. if hero.health / hero.maxHealth <= Menu.misc.autoheal.hpPerc:Value() and Hready then
  282. myHero:CastSpell(heal)
  283. end
  284. end
  285. end
  286. end
  287. end
  288.  
  289. function Zhonyas()
  290. if Menu.misc.zhonyas.zhonyasunder:Value() >= myHero.health / myHero.maxHealth then
  291. CastItem(3157)
  292. end
  293. end
  294.  
  295. function GetIgniteDamage()
  296. return (50 + (20 * myHero.level))
  297. end
  298.  
  299. function DrawFont(msg)
  300. return '<font color="#99EBD6">' .. tostring(msg) .. '</font>'
  301. end
  302.  
  303. function DrawGlobalMenu()
  304. Menu = MenuConfig(" Sexy Champs v1,0" .. champ, "Sexy Series " .. champ):Icon("fa-hand-o-right")
  305.  
  306. Menu:Section("info", DrawFont("Script Info"))
  307. Menu:Info("script", "Loaded: <i><font color=\"#99B2FF\">Sexy Nulled.io " .. champ .. "</font></i>")
  308. Menu.script:Icon("fa-info")
  309. Menu:Info("author", "Author: <i><font color=\"#99B2FF\">SmTRed nulled.io</font></i>")
  310. Menu.author:Icon("fa-info")
  311.  
  312. Menu:Section("keybindingSection", DrawFont("Key Bindings"))
  313. Menu:KeyBinding("comboKey", "Combo Key", "SPACE")
  314. Menu:KeyBinding("harassKey", "Harass Key", "T")
  315. Menu:KeyBinding("farmKey", "Farm Key", "K")
  316. Menu:KeyBinding("laneclearKey", "LaneClear Key", "L")
  317.  
  318. -- Drawings
  319. Menu:Section("drawingSection", DrawFont("Draw Settings"))
  320. Menu:Boolean("useDrawings", "Draw", true)
  321. Menu:Menu("draw", "Drawings")
  322. Menu.draw:Icon("fa-eye")
  323.  
  324. -- Fight Settings
  325. Menu:Section("comboSection", DrawFont("Fight Settings"))
  326.  
  327. Menu:Menu("combo", "Combo")
  328. Menu.combo:Icon("fa-bomb");
  329. Menu.combo:Boolean("comboItems", "Use Items", true)
  330.  
  331. -- Harass
  332. Menu:Menu("harass", "Harass")
  333. Menu.harass:Icon("fa-bomb");
  334.  
  335. -- KillSteal
  336. Menu:Menu("killsteal", "KillSteal")
  337. Menu.killsteal:Icon("fa-bullseye")
  338. Menu.killsteal:Section("killstealSection1", DrawFont("Activation"))
  339. Menu.killsteal:Boolean("killsteal", "Perform KillSteal", false)
  340. Menu.killsteal:Section("killstealSection2", DrawFont("Spell Settings"))
  341.  
  342.  
  343. Menu:Section("farmSection", DrawFont("Farming Settings"))
  344. -- Farming
  345. Menu:Menu("farm", "Farming")
  346. -- Laneclear
  347. Menu:Menu("laneclear", "LaneClear")
  348.  
  349.  
  350. Menu:Section("spellspecific", DrawFont("Champ Specific Settings"))
  351.  
  352. end
  353.  
  354. -- Drawing Global Misc Settings -- Same in every script --
  355. function DrawGlobalMisc()
  356. -- Misc Icon
  357. Menu.misc:Icon("fa-star-o")
  358.  
  359.  
  360. -- Ignite
  361. if ignite ~= nil then
  362. Menu.misc:Menu("autoignite", "Auto Ignite")
  363. Menu.misc.autoignite:Boolean("useIgnite", "Automatically Use Ignite", false)
  364. for i, hero in ipairs(EnemyTable) do
  365. Menu.misc.autoignite:Boolean(hero.charName, "Use Ignite on " .. hero.charName, true)
  366. end
  367. end
  368.  
  369. -- Heal
  370. if heal ~= nil then
  371. Menu.misc:Menu("autoheal", "Auto Heal")
  372. Menu.misc.autoheal:Icon("fa-heart")
  373. Menu.misc.autoheal:Boolean("useHeal", "Automatically use Heal", true)
  374. Menu.misc.autoheal:Slider("hpPerc", "Min percentage to cast Heal", 0.15, 0, 1, 0.01)
  375. Menu.misc.autoheal:Boolean("helpTeammate", "Use Heal to Help teammates", false)
  376. Menu.misc.autoheal:Menu("teammates", "Teammates to Heal")
  377. for i = 1, Game.HeroCount() do
  378. local hero = Game.Hero(i)
  379. if hero.team == myHero.team and not hero.isMe then
  380. Menu.misc.autoheal.teammates:Boolean(hero.charName, "Use Heal on " .. hero.charName, true)
  381. end
  382. end
  383. end
  384.  
  385. -- AutoPotions
  386. Menu.misc:Menu("autopotions", "Auto Potions")
  387. Menu.misc.autopotions:Icon("fa-heart")
  388. Menu.misc.autopotions:Boolean("useHealthPotion", "Use Health Potion", true)
  389. Menu.misc.autopotions:Slider("hpPerc", "Min Health % to use Potion", 0.60, 0, 1, 0.01)
  390. Menu.misc.autopotions:Boolean("useManaPotion", "Use Mana Potion", true)
  391. Menu.misc.autopotions:Slider("manaPerc", "Min Mana % to use Potion", 0.60, 0, 1, 0.01)
  392.  
  393. -- Zhonyas
  394. Menu.misc:Menu("zhonyas", "Zhonyas")
  395. Menu.misc.zhonyas:Boolean("zhonyas", "Auto Zhonyas", true)
  396. Menu.misc.zhonyas:Slider("zhonyasunder", "Use Zhonyas under % health", 0.20, 0, 1, 2)
  397.  
  398. -- Auto Leveling
  399. Menu.misc:Menu("autolevel", "Auto Level Skills")
  400. Menu.misc.autolevel:Boolean("autolevel", "Auto Level Spells", false)
  401. Menu.misc.autolevel:Section("level1", DrawFont("Level 1 - 4"))
  402. Menu.misc.autolevel:DropDown("level1sequence", "Level sequence", 1, {"Q-W-E-R", "Q-E-W-R", "W-Q-E-R", "W-E-Q-R", "E-Q-W-R", "E-W-Q-R"})
  403. Menu.misc.autolevel:Section("level2", DrawFont("Level 4 - 18"))
  404. Menu.misc.autolevel:DropDown("level2sequence", "Level sequence", 1, {"Q-W-E-R", "Q-E-W-R", "W-Q-E-R", "W-E-Q-R", "E-Q-W-R", "E-W-Q-R"})
  405. end
  406.  
  407. -- Global Drawing settings -- Same in every script -- obv
  408. function DrawGlobalDrawings()
  409. Menu.draw:Section("drawingSection2", DrawFont("Spell Settings"))
  410. Menu.draw:Boolean("drawQ", "Draw " .. Spells.Q.name .. " range", true)
  411. Menu.draw:Boolean("drawW", "Draw " .. Spells.W.name .. " range", true)
  412. Menu.draw:Boolean("drawE", "Draw " .. Spells.E.name .. " range", true)
  413. Menu.draw:Boolean("drawR", "Draw " .. Spells.R.name .. " range", true)
  414. end
  415.  
  416. function AutoLevel()
  417. if myHero.level > lastLevel then
  418. if lastLevel <= 4 then
  419. for i = 1, #levelUpTable[Menu.misc.autolevel.level1sequence:Value()], 1 do
  420. local slot = levelUpTable[Menu.misc.autolevel.level1sequence:Value()][i]
  421. Game.LevelSpell(slot)
  422. end
  423. else
  424. for i = 1, #levelUpTable[Menu.misc.autolevel.level1sequence:Value()], 1 do
  425. local slot = levelUpTable[Menu.misc.autolevel.level2sequence:Value()][i]
  426. Game.LevelSpell(slot)
  427. end
  428. end
  429. lastLevel = myHero.level
  430. end
  431. end
  432.  
  433.  
  434.  
  435.  
  436. --[[
  437.  
  438. Script details:
  439. Champion: Annie
  440. Author: Sexy SmTRed
  441. Designed for: Cloudrop
  442. Current version: 1.0
  443.  
  444. Changelog:
  445. 1.0:
  446. Released champ
  447. 1.1:
  448. Now included in AIO format
  449. --]]
  450. function Annie:__init()
  451.  
  452. Spells = {
  453. ["Q"] = {name = "Disintegrate", range = 625, ready = false},
  454. ["W"] = {name = "Incinerate", range = 625, ready = false},
  455. ["E"] = {name = "Molten Shield", ready = false},
  456. ["R"] = {name = "Summon: Tibbers", range = 600, radius = 150, delay = 0.25, ready = false, speed = math.huge}
  457. }
  458.  
  459. self.canStun = false
  460. self.passiveStacks = 0
  461. self.hasTibbers = false
  462.  
  463. self.Q = Spell(_Q, Spells.Q.range)
  464. self.W = Spell(_W, Spells.W.range)
  465. self.E = Spell(_E)
  466. self.R = Spell(_R, Spells.R.range)
  467. --self.R:SetSkillShot(Spells.R.delay, Spells.R.radius, Spells.R.speed, false, "aoe")
  468.  
  469. self:ExtraMenu()
  470.  
  471. ts = TargetSelector("LESS_AP", Spells.Q.range, Menu)
  472. --BasicPrediction.EnablePrediction()
  473.  
  474.  
  475. Callback.Bind("Tick", function() self:OnTick() end)
  476. Callback.Bind("CreateObj", function(obj) self:OnCreateObj(obj) end)
  477. Callback.Bind("DeleteObj", function(obj) self:OnDeleteObj(obj) end)
  478. Callback.Bind("ProcessSpell", function(unit, spell) self:OnProcessSpell(unit, spell) end)
  479. Callback.Bind("Draw", function() self:OnDraw() end)
  480. Callback.Bind("GainBuff", function(unit, buff) self:OnGainBuff(unit, buff) end)
  481. Callback.Bind("LoseBuff", function(unit, buff) self:OnLoseBuff(unit, buff) end)
  482. end
  483.  
  484. function Annie:OnTick()
  485. self:CalcDamageCalculations()
  486.  
  487. if Menu.autokill.autokill:Value() == true then
  488. self:AutoKill()
  489. end
  490.  
  491. if Menu.autoR.autoUlt:Value() == true then
  492. self:AutoR()
  493. end
  494. end
  495.  
  496.  
  497. function Annie:OnCreateObj(obj)
  498. if obj.name == "StunReady.troy" and myHero:DistanceTo(obj) < 50 then
  499. self.canStun = true
  500. end
  501. end
  502.  
  503. function Annie:OnDeleteObj(obj)
  504. if obj.name == "StunReady.troy" and myHero:DistanceTo(obj) < 50 then
  505. self.canStun = false
  506. end
  507. end
  508.  
  509. function Annie:OnProcessSpell(unit, spell)
  510. if spell.target == myHero and string.find(spell.name, "BasicAttack") and unit.type == "Obj_AI_Hero" and Menu.misc.autoE.onAA:Value() == true then
  511. self.E:Cast()
  512. end
  513. end
  514.  
  515. function Annie:OnGainBuff(unit, buff)
  516. if unit.isMe and (buff.name == "infernalguardiantimer") then
  517. self.hasTibbers = true
  518. end
  519. end
  520.  
  521. function Annie:OnLoseBuff(unit, buff)
  522. if unit.isMe and (buff.name == "infernalguardiantimer") then
  523. self.hasTibbers = false
  524. end
  525. end
  526.  
  527. function Annie:OnDraw()
  528. if myHero.dead then return end
  529. if Menu.draw.drawKilltext:Value() == true then
  530. for i, enemy in ipairs(EnemyTable) do
  531. if ValidTarget(enemy) then
  532. local barPos = Graphics.WorldToScreen(Geometry.Vector3(enemy.x, enemy.y, enemy.z))
  533. local PosX = barPos.x - 35
  534. local PosY = barPos.y - 50
  535. Graphics.DrawText(KillText[i], 15, PosX, PosY, Graphics.ARGB(255,255,204,0))
  536. end
  537. end
  538. end
  539. end
  540.  
  541. function Annie:Combo()
  542. if target ~= nil then
  543. if Menu.combo.comboItems:Value() == true then
  544. UseItems(target)
  545. end
  546. if Menu.combo.comboWay:Value() == 1 then
  547. self:ExecuteCombo({"Q", "W", "R"}, target)
  548. elseif Menu.combo.comboWay:Value() == 2 then
  549. self:ExecuteCombo({"Q", "R", "W"}, target)
  550. elseif Menu.combo.comboWay:Value() == 3 then
  551. self:ExecuteCombo({"W", "Q", "R"}, target)
  552. elseif Menu.combo.comboWay:Value() == 4 then
  553. self:ExecuteCombo({"W", "R", "Q"}, target)
  554. elseif Menu.combo.comboWay:Value() == 5 then
  555. self:ExecuteCombo({"R", "Q", "W"}, target)
  556. elseif Menu.combo.comboWay:Value() == 6 then
  557. self:ExecuteCombo({"R", "W", "Q"}, target)
  558. end
  559. end
  560. end
  561.  
  562.  
  563. function Annie:ExecuteCombo(comboTable, target)
  564. for i, combo in ipairs(comboTable) do
  565. if ValidTarget(target) then
  566. if combo == "Q" then
  567. self.Q:Cast(target)
  568. elseif combo == "W" then
  569. self.W:Cast(target)
  570. elseif combo == "E" then
  571. self.E:Cast()
  572. elseif combo == "R" then
  573. self.R:Cast(target)
  574. end
  575. end
  576. end
  577. end
  578.  
  579. function Annie:Harass()
  580. if target ~= nil then
  581. if Menu.harass.harassQ:Value() then
  582. self.Q:Cast(target)
  583. end
  584.  
  585. if Menu.harass.harassW:Value() then
  586. self.W:Cast(target)
  587. end
  588.  
  589. end
  590. end
  591.  
  592. function Annie:CanComboR()
  593. if Menu.combo.rsettings.mode:Value() == 1 then
  594. return true
  595. elseif Menu.combo.rsettings.mode:Value() == 2 then
  596. if target.health >= CalculateAPDamage("R", 125, 50, 0.8, target) then
  597. return false
  598. end
  599. elseif Menu.combo.rsettings.mode:Value() == 3 then
  600. if not canStun then return false end
  601. end
  602. return true
  603. end
  604.  
  605. function Annie:AutoKill()
  606. if myHero.dead then return end
  607. for i, enemy in ipairs(EnemyTable) do
  608. if ValidTarget(enemy) and myHero:DistanceTo(enemy) < Spells.Q.range then
  609. local Qdmg = (((Menu.autokill.autokillQ:Value() == true) and self.Q:CanCast() and CalculateAPDamage("Q", 35, 45, 0.8, enemy)) or 0)
  610. local Wdmg = (((Menu.autokill.autokillW:Value() == true) and self.W:CanCast() and CalculateAPDamage("W", 45, 25, 0.85, enemy)) or 0)
  611. local Rdmg = (((Menu.autokill.autokillR:Value() == true) and self.E:CanCast() and not self.hasTibbers and CalculateAPDamage("R", 125, 50, 0.8, enemy)) or 0)
  612. local Idmg = (((Menu.autokill.autokillIgnite:Value() == true) and Iready and GetIgniteDamage()) or 0)
  613.  
  614. if Wdmg > Qdmg and Qdmg > enemy.health and self:HasMana("Q") then
  615. self.Q:Cast(target)
  616. elseif Wdmg > enemy.health and self:HasMana("W") then
  617. self.W:Cast(target)
  618. elseif Qdmg + Wdmg > enemy.health and self:HasMana("QW") then
  619. self.Q:Cast(target)
  620. self.W:Cast(target)
  621. elseif ignite ~= nil and Qdmg + Wdmg + Idmg > enemy.health and self:HasMana("QW") then
  622. myHero:CastSpell(ignite, enemy)
  623. self.Q:Cast(target)
  624. self.W:Cast(target)
  625. elseif Wdmg > Qdmg and Qdmg + Rdmg > enemy.health and self:HasMana("QR") then
  626. self.Q:Cast(target)
  627. self.R:Cast(target)
  628. elseif Wdmg + Rdmg > enemy.health and self:HasMana("WR") then
  629. self.W:Cast(target)
  630. self.R:Cast(target)
  631. elseif ignite ~= nil and Wdmg > Qdmg and Qdmg + Rdmg + Idmg > enemy.health and self:HasMana("QR") then
  632. myHero:CastSpell(ignite, enemy)
  633. self.Q:Cast(target)
  634. self.R:Cast(target)
  635. elseif ignite ~= nil and Wdmg + Rdmg + Idmg > enemy.health and self:HasMana("WR") then
  636. myHero:CastSpell(ignite, enemy)
  637. self.W:Cast(target)
  638. self.R:Cast(target)
  639. elseif Qdmg + Rdmg + Wdmg > enemy.health and self:HasMana("QWR") then
  640. self.Q:Cast(target)
  641. self.W:Cast(target)
  642. self.R:Cast(target)
  643. elseif ignite ~= nil and Qdmg + Rdmg + Wdmg + Idmg > enemy.health and self:HasMana("QWR") then
  644. myHero:CastSpell(ignite, enemy)
  645. self.Q:Cast(target)
  646. self.W:Cast(target)
  647. self.R:Cast(target)
  648. end
  649. end
  650. end
  651. end
  652.  
  653. function Annie:HasMana(input)
  654. if input == "Q" then
  655. return myHero.mana > myHero:GetSpellData(_Q).mana
  656. elseif input == "W" then
  657. return myHero.mana > myHero:GetSpellData(_W).mana
  658. elseif input == "E" then
  659. return myHero.mana > myHero:GetSpellData(_E).mana
  660. elseif input == "R" then
  661. return myHero.mana > myHero:GetSpellData(_R).mana
  662. elseif input == "QW" then
  663. return myHero.mana > (myHero:GetSpellData(_Q).mana + myHero:GetSpellData(_W).mana)
  664. elseif input == "QR" then
  665. return myHero.mana > (myHero:GetSpellData(_Q).mana + myHero:GetSpellData(_W).mana)
  666. elseif input == "WR" then
  667. return myHero.mana > (myHero:GetSpellData(_W).mana + myHero:GetSpellData(_R).mana)
  668. elseif input == "QWR" then
  669. return myHero.mana > (myHero:GetSpellData(_Q).mana + myHero:GetSpellData(_W).mana + myHero:GetSpellData(_R).mana)
  670. end
  671. return true
  672. end
  673.  
  674. function Annie:AutoR()
  675. if not self:CanAutoR() then return end
  676. local position, enemyCount = CountEnemiesWithinRadius(Spells.R.range, Spells.R.radius)
  677. if enemyCount >= Menu.autoR.amount:Value() then
  678. if position ~= nil then
  679. self.R:Cast(target, position.x, position.z)
  680. end
  681. end
  682. end
  683.  
  684. function Annie:CanAutoR()
  685. if Menu.autoR.optional.useOptional:Value() == true then
  686. return CountAllies(Menu.autoR.optional.alliesrange:Value()) >= Menu.autoR.optional.allies:Value()
  687. end
  688. return true
  689. end
  690.  
  691. function Annie:CalcDamageCalculations()
  692. if myHero.dead then return end
  693. for i, enemy in ipairs(EnemyTable) do
  694. if ValidTarget(enemy) then
  695. local Qdmg = ((self.Q:CanCast() and CalculateAPDamage("Q", 35, 45, 0.8, enemy)) or 0)
  696. local Wdmg = ((self.W:CanCast() and CalculateAPDamage("W", 45, 25, 0.85, enemy)) or 0)
  697. local Rdmg = ((self.R:CanCast() and not self.hasTibbers and CalculateAPDamage("R", 125, 50, 0.8, enemy)) or 0)
  698. local Idmg = ((Iready and GetIgniteDamage()) or 0)
  699. if myHero:CalcDamage(enemy, myHero.totalDamage) > enemy.health then
  700. KillText[i] = "Murder him"
  701. elseif Idmg > enemy.health then
  702. KillText[i] = "Ignite = kill"
  703. elseif Qdmg > enemy.health then
  704. KillText[i] = "Q = kill"
  705. elseif Wdmg > enemy.health then
  706. KillText[i] = "W = kill"
  707. elseif Rdmg > enemy.health then
  708. KillText[i] = "R = kill"
  709. elseif Qdmg + myHero.totalDamage > enemy.health then
  710. KillText[i] = "Q + AA = kill"
  711. elseif Qdmg + Idmg > enemy.health then
  712. KillText[i] = "Q + Ignote = kill"
  713. elseif Wdmg + myHero.totalDamage > enemy.health then
  714. KillText[i] = "W + AA = kill"
  715. elseif Wdmg + Idmg > enemy.health then
  716. KillText[i] = "W + Ignite = kill"
  717. elseif Rdmg + myHero.totalDamage > enemy.health then
  718. KillText[i] = "R + AA = kill"
  719. elseif Rdmg + Idmg > enemy.health then
  720. KillText[i] = "R + Ignite = kill"
  721. elseif Wdmg + Qdmg > enemy.health then
  722. KillText[i] = "W + Q = kill"
  723. elseif Wdmg + Qdmg + Idmg > enemy.health then
  724. KillText[i] = "W + Q + Ignite = kill"
  725. elseif Qdmg + Rdmg > enemy.health then
  726. KillText[i] = "Q + R = kill"
  727. elseif Qdmg + Rdmg + Idmg > enemy.health then
  728. KillText[i] = "Q + R + Ignite = kill"
  729. elseif Wdmg + Rdmg > enemy.health then
  730. KillText[i] = "W + R = kill"
  731. elseif Wdmg + Rdmg + Idmg > enemy.health then
  732. KillText[i] = "W + R + Ignite = kill"
  733. elseif Qdmg + Rdmg + Wdmg > enemy.health then
  734. KillText[i] = "Q + W + R = kill"
  735. elseif Qdmg + Rdmg + Wdmg + Idmg > enemy.health then
  736. KillText[i] = "Full combo = kill"
  737. else
  738. KillText[i] = "Harass him!"
  739. end
  740. end
  741. end
  742. end
  743.  
  744. function Annie:ExtraMenu()
  745. -- Combo
  746. Menu.combo:Section("comboSection", DrawFont("Spell Settings"))
  747. Menu.combo:Boolean("comboQ", "Use " .. Spells.Q.name .. " (Q)", true)
  748. Menu.combo:Boolean("comboW", "Use " .. Spells.W.name .. " (Q)", true)
  749. Menu.combo:Boolean("comboR", "Use " .. Spells.R.name .. " (R)", true)
  750. Menu.combo:Section("comboSection2", DrawFont("Modes"))
  751. Menu.combo:DropDown("comboWay", "Combo", 1, {"QWR", "QRW", "WQR", "WRQ", "RQW", "RWQ"})
  752. Menu.combo:Menu("rsettings", "R Settings")
  753. Menu.combo.rsettings:DropDown("mode", "R Cast Mode", 1, {"Instantly", "Killable", "Stun"})
  754.  
  755. -- Auto R
  756. Menu:Menu("autoR", name .. "Auto R")
  757. Menu.autoR:Icon("fa-fighter-jet")
  758. Menu.autoR:Section("autoRSection", DrawFont("Activation"))
  759. Menu.autoR:Boolean("autoUlt", "Use Automatic R", true)
  760. Menu.autoR:Section("autoRSection2", DrawFont("Optional"))
  761. Menu.autoR:Menu("optional", "Optional Settings")
  762. Menu.autoR.optional:Boolean("useOptional", "Use Optional Settings", true)
  763. Menu.autoR.optional:Slider("allies", "Min Allies Nearby", 3, 0, 5, 1)
  764. Menu.autoR.optional:Slider("alliesrange", "Range of enemies", 500, 0, 2000, 100)
  765. Menu.autoR:Slider("amount", "Min targets", 3, 1, 5, 1)
  766.  
  767. -- Extra harass settings
  768. Menu.harass:Boolean("harassQ", Spells.Q.name .. " (Q)", true)
  769. Menu.harass:Boolean("harassW", Spells.W.name .. " (W)", true)
  770. Menu.harass:Boolean("harassR", Spells.R.name .. " (R)", true)
  771.  
  772. -- Autokill settings
  773. Menu:Menu("autokill", name .. "Autokill")
  774. Menu.autokill:Icon("fa-trophy")
  775. Menu.autokill:Section("autokillSection", DrawFont("Activation"))
  776. Menu.autokill:Boolean("autokill", "Perform AutoKill", false)
  777. Menu.autokill:Section("autokillSection2", DrawFont("Spell Settings"))
  778. Menu.autokill:Boolean("autokillQ", Spells.Q.name .. " (Q)", true)
  779. Menu.autokill:Boolean("autokillW", Spells.W.name .. " (W)", true)
  780. Menu.autokill:Boolean("autokillR", Spells.R.name .. " (R)", true)
  781. Menu.autokill:Boolean("autokillIgnite", "Use IGNITE", true)
  782.  
  783. -- Farm
  784. Menu.farm:Boolean("farmQ", Spells.Q.name .. " (Q)", true)
  785. Menu.farm:Boolean("farmW", Spells.W.name .. " (Q)", true)
  786.  
  787. -- Laneclear
  788. Menu.laneclear:Boolean("laneclearQ ", Spells.Q.name .. " (Q)", true)
  789. Menu.laneclear:Boolean("laneclearW ", Spells.W.name .. " (Q)", true)
  790.  
  791. -- Misc
  792. Menu:Menu("misc", name .. "Misc")
  793. Menu.misc:Menu("autoE", "Auto E")
  794. Menu.misc.autoE:Icon("fa-shield")
  795. Menu.misc.autoE:Boolean("onAA", "Auto E when attacked", false)
  796. Menu.misc.autoE:Boolean("stackStun", "Auto E to stack stun", false)
  797.  
  798.  
  799. --Draws
  800. Menu.draw:Section("sectionKillText", "Specific settings")
  801. Menu.draw:Boolean("drawKilltext", "Draw KillText", false)
  802.  
  803. Menu.killsteal:Hide(true)
  804.  
  805.  
  806. end
  807.  
  808.  
  809.  
  810. --[[
  811.  
  812. Script details:
  813. Series: Sexy Series AIO
  814. Champion: Swain
  815. Author: Sexy SmTred
  816. Designed for: Cloudrop
  817. Current version: 0.1
  818.  
  819.  
  820. Changelog:
  821. 0.1
  822. Started coding
  823. --]]
  824.  
  825.  
  826. function Swain:__init()
  827. Spells = {
  828. ["Q"] = {name = "Decrepify", range = 625, radius = 0, delay = 0, speed = 0, ready = false},
  829. ["W"] = {name = "Nevermore", range = 900, radius = 125, delay = 0.85, speed = math.huge, ready = false},
  830. ["E"] = {name = "Torment", range = 625, radius = 0, delay = 0, speed = 1400, ready = false},
  831. ["R"] = {name = "Ravenous Flock", range = 800, delay = 0, speed = 0, ready = false}
  832. }
  833.  
  834.  
  835. --BasicPrediction.EnablePrediction()
  836. self.RcastedThroughBot = false
  837.  
  838. self.Q = Spell(_Q, Spells.Q.range)
  839. self.W = Spell(_W, Spells.W.range)
  840. self.W:SetSkillShot(Spells.W.delay, Spells.W.radius, Spells.W.speed, false, "aoe")
  841. self.E = Spell(_E, Spells.E.range)
  842. self.R = Spell(_R)
  843.  
  844. self:ExtraMenu()
  845. ts = TargetSelector("LESS_AP", Spells.Q.range, Menu)
  846.  
  847. Callback.Bind("Tick", function() self:OnTick() end)
  848. --Callback.Bind("CreateObj", function(obj) self:OnCreateObj(obj) end)
  849. --Callback.Bind("DeleteObj", function(obj) self:OnDeleteObj(obj) end)
  850.  
  851. end
  852.  
  853. function Swain:OnTick()
  854. if self.RcastedThroughBot and not Menu.combo.combo:IsPressed() and not Menu.laneclear.laneclear:IsPressed() and self:UltActive() and CountEnemies(Spells.R.range) < 1 then
  855. myHero:CastSpell(_R)
  856. self.RcastedThroughBot = false
  857. end
  858.  
  859. if myHero.dead and self.RcastedThroughBot then
  860. self.RcastedThroughBot = false
  861. end
  862.  
  863. end
  864.  
  865.  
  866. function Swain:Combo()
  867. if myHero.dead then return end
  868. if target ~= nil then
  869. if Menu.comboItems:Value() == true then
  870. UseItems(target)
  871. end
  872.  
  873. if Menu.combo.comboR:Value() == true and not self:UltActive() and CountEnemies(Spells.R.range) >= Menu.combo.comboRx:Value() then
  874. self.R:Cast()
  875. elseif Menu.combo.comboR:Value() == true and self:UltActive() and CountEnemies(Spells.R.range) < Menu.combo.comboRx:Value() then
  876. self.R:Cast()
  877. end
  878. if Menu.combo.comboE:Value() == true then
  879. self.E:Cast(target)
  880. end
  881. if Menu.combo.comboQ:Value() == true then
  882. self.Q:Cast(target)
  883. end
  884. if Menu.combo.comboW:Value() == true then
  885. self.W:Cast(target)
  886. end
  887. else
  888. if self:UltActive() and CountEnemies(Spells.R.range) < Menu.combo.comboRx:Value() then
  889. self.R:Cast(target)
  890. end
  891. end
  892. end
  893.  
  894. function Swain:Harass()
  895. if myHero.dead then return end
  896. if target ~= nil then
  897. if Menu.harass.harassE:Value() == true then
  898. self.E:Cast(target)
  899. end
  900.  
  901. if Menu.harass.harassQ:Value() == true then
  902. self.Q:Cast(target)
  903. end
  904.  
  905. if Menu.harass.harassW:Value() == true then
  906. self.W:Cast(target)
  907. end
  908. end
  909. end
  910.  
  911. function Swain:UltActive()
  912. return (myHero:GetSpellData(_R).range + myHero:DistanceTo(myHero.minBBox)/2) > 60
  913. end
  914.  
  915. function Swain:ExtraMenu()
  916. -- Combo
  917. Menu.combo:Boolean("comboQ", "Use " .. Spells.Q.name .. " (Q)", true)
  918. Menu.combo:Boolean("comboW", "Use " .. Spells.W.name .. " (W)", true)
  919. Menu.combo:Boolean("comboE", "Use " .. Spells.E.name .. " (E)", true)
  920. Menu.combo:Boolean("comboR", "Use " .. Spells.R.name .. " (R)", true)
  921. Menu.combo:Slider("comboRx", "Min amount of people nearby to cast R", 1, 0, 5, 0)
  922.  
  923. -- Harass
  924. Menu.harass:Boolean("harassQ", "Use " .. Spells.Q.name .. " (Q)", true)
  925. Menu.harass:Boolean("harassW", "Use " .. Spells.W.name .. " (W)", true)
  926. Menu.harass:Boolean("harassE", "Use " .. Spells.E.name .. " (E)", true)
  927.  
  928. -- No Farm
  929. Menu.farm:Hide()
  930.  
  931. -- Laneclear
  932. Menu.laneclear:Boolean("laneclearW", "Use " .. Spells.W.name .. " (W)", true)
  933. Menu.laneclear:Boolean("laneclearR", "Use " .. Spells.R.name .. " (R)", true)
  934.  
  935. -- Misc
  936. Menu:Menu("misc", name .. "Misc")
  937.  
  938. end
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949. --[[
  950.  
  951. Script details:
  952. Series: Sexy Series AIO
  953. Champion: LeBlanc
  954. Author: SmTRed
  955. Designed for: Cloudrop
  956. Current version: 0.1
  957.  
  958.  
  959. Changelog:
  960. 0.1
  961. Started coding
  962. --]]
  963.  
  964. function Leblanc:__init()
  965. Spells = {
  966. ["P"] = {name = "LeBlanc_Base_P_poof.troy"},
  967. ["AA"] = {range = 525, name = "BasicAttack"},
  968. ["Q"] = {name = "Sigil of Malice", spellname = "LeblancChaosOrb", range = 700, speed = 2000, markTimer = 3.5, activated = 0},
  969. ["W"] = {name = "Distortion", spellname = "LeblancSlide", range = 600, radius = 250, speed = 2000, delay = 0.25, duration = 4, timeActivated = 0, isActivated = false, startPos = myHero.pos},
  970. ["E"] = {name = "Ethereal Chains", spellname = "LeblancSoulShackle", range = 950, speed = 1600, delay = 0.25, radius = 95},
  971. ["R"] = {name = "Mimic", spellname = "LeblancMimic", Qname = "LeblancChaosOrbM", Wname = "LeBlancSlideM", Wreturnname = "leblancslidereturnm", Ename = "LeblancSoulShackleM", ready = false},
  972. ["WR"] = {duration = 4, spellname = "LeblancSlideM", timeActivated = 0, isActivated = false, startPos = myHero.pos}
  973. }
  974.  
  975. -- Drawing LeBlancs Menu
  976. self:ExtraMenu()
  977.  
  978. -- Initializing Spells
  979. self.Q = Spell(_Q, Spells.Q.range)
  980. self.W = Spell(_W, Spells.W.range)
  981. --self.W:SetSkillShot(Spells.W.delay, Spells.W.radius, Spells.W.speed, false, "aoe")
  982. self.E = Spell(_E, Spells.E.range)
  983. --self.E:SetSkillShot(Spells.E.delay, Spells.E.radius, Spells.E.speed, true, "normal")
  984.  
  985.  
  986. -- Initializing TargetSelector
  987. ts = TargetSelector("LESS_AP", Spells.Q.range, Menu)
  988.  
  989. -- Last activated Spell
  990. self.lastActivated = nil
  991.  
  992. -- Better combos
  993. self.comboTable = nil
  994. self.smartComboTime = os.clock()
  995. self.CanCastSpells = true
  996.  
  997. -- Better smart W
  998. self.lastChainCast = os.clock()
  999. self.chainTarget = nil
  1000.  
  1001.  
  1002. -- Regular Callback binds
  1003. Callback.Bind("Tick", function() self:OnTick() end)
  1004. --Callback.Bind("CreateObj", function(obj) self:OnCreateObj(obj) end)
  1005. --Callback.Bind("DeleteObj", function(obj) self:OnDeleteObj(obj) end)
  1006. Callback.Bind("ProcessSpell", function(unit, spell) self:OnProcessSpell(unit, spell) end)
  1007. Callback.Bind("Draw", function() self:OnDraw() end)
  1008. Callback.Bind("ApplyBuff", function(unit, target, buff) self:OnApplyBuff(unit, target, buff) end)
  1009. Callback.Bind("RemoveBuff", function(unit, buff) self:RemoveBuff(unit, buff) end)
  1010. Callback.Bind("CastSpell", function(iSpell, startPos, endPos, targetUnit) self:OnCastSpell(iSpell,startPos,endPos,targetUnit) end)
  1011. end
  1012.  
  1013. function Leblanc:OnTick()
  1014. self:RCheck()
  1015. self:CalcDamageCalculations()
  1016.  
  1017. -- Checking whether the last entry was longer than 3secs ago to make sure the data isnt oudated
  1018. if self.CanCastSpell == false and self.smartComboTime + 3 > os.clock() then self.CanCastSpells = true end
  1019.  
  1020. if Menu.settingsW.useOptional:Value() == true then
  1021. self:SpecificSpellChecks()
  1022. end
  1023.  
  1024. if Menu.killsteal.killsteal:Value() == true then
  1025. self:KillSteal()
  1026. end
  1027. end
  1028.  
  1029. function Leblanc:RCheck()
  1030. Spells.R.ready = (myHero:CanUseSpell(_R) == READY)
  1031. end
  1032.  
  1033. function Leblanc:OnProcessSpell(unit, spell)
  1034. -- Smart W
  1035. if unit.isMe and spell.name == Spells.W.spellname then
  1036. Spells.W.startPos = spell.startPos
  1037. end
  1038.  
  1039. -- Smart W
  1040. if unit.isMe and spell.name == Spells.WR.spellname then
  1041. Spells.WR.startPos = spell.startPos
  1042. end
  1043.  
  1044. -- Smart W
  1045. if unit.isMe and spell.name == Spells.E.name then
  1046. self.lastChainCast = os.clock()
  1047. end
  1048.  
  1049. -- Smart Combo and KillSteal
  1050. if unit.isMe and (spell.name == Spells.Q.spellname or spell.name == Spells.W.spellname or spell.name == Spells.E.spellname) then
  1051. self.lastActivated = spell.name
  1052. end
  1053. end
  1054.  
  1055. function Leblanc:OnCastSpell(iSpell,startPos,endPos,targetUnit)
  1056. if iSpell == _R and not self.CanCastSpell then
  1057. self.CanCastSpells = true
  1058. self.RSkill = nil
  1059. end
  1060.  
  1061. end
  1062.  
  1063. function Leblanc:OnApplyBuff(unit, target, buff)
  1064. if unit.isMe and ValidTarget(target) and buff.name == "" then
  1065. self.chainTarget = target
  1066. end
  1067. end
  1068.  
  1069. function Leblanc:RemoveBuff(unit, buff)
  1070. if unit == self.chainTarget and buff.name == "" then
  1071. self.chainTarget = nil
  1072. end
  1073. end
  1074.  
  1075. function Leblanc:SpecificSpellChecks()
  1076.  
  1077. -- Giving process time for the E Cast
  1078. if self.lastChainCast + 2 < os.clock() then return end
  1079. -- Checking whether the target has a chain
  1080. if self:wUsed() and self.chainTarget ~= nil and GetCustomDistance(Spells.W.startPos, chainTarget) <= Spells.E.range + 400 then return end
  1081. if self:wrUsed() and not self:wUsed() and self.chainTarget ~= nil and GetCustomDistance(Spells.WR.startPos, chainTarget) <= Spells.E.range + 400 then return end
  1082.  
  1083. -- When there is no chain, entering functions
  1084. if Menu.settingsW.useOptionalW:Value() == 1 then
  1085. if self:wUsed() and self:wrUsed() then
  1086. if CountEnemies(600, Spells.WR.startPos) < CountEnemies(600) and not self.Q:CanCast() and not self.E:CanCast() then
  1087. self.W:Cast()
  1088. end
  1089. elseif self:wUsed() and CountEnemies(600, Spells.W.startPos) < CountEnemies(600) then
  1090. self.W:Cast()
  1091. elseif self:wrUsed() and CountEnemies(600, Spells.WR.startPos) < CountEnemies(600) then
  1092. myHero:CastSpell(_R)
  1093. end
  1094. elseif Menu.settingsW.useOptionalW:Value() == 3 or Menu.settingsW.useOptionalW:Value() == 4 then
  1095. if self:wUsed() and self:wrUsed() then
  1096. if not self.Q:CanCast() and not self.E:CanCast() then
  1097. self.W:Cast()
  1098. end
  1099. elseif self:wUsed() then
  1100. if not self.Q:CanCast() and not self.E:CanCast() then
  1101. self.W:Cast()
  1102. end
  1103. elseif self:wrUsed() then
  1104. if not self.Q:CanCast() and not self.E:CanCast() then
  1105. myHero:CastSpell(_R)
  1106. end
  1107. end
  1108. end
  1109. end
  1110.  
  1111.  
  1112. function Leblanc:Combo()
  1113. if myHero.dead then return end
  1114. -- Checking target
  1115. if target ~= nil and ValidTarget(target) then
  1116.  
  1117. -- Casting combo
  1118. -- Getting time of last pick
  1119. self.smartComboTime = os.clock()
  1120.  
  1121. -- Making sure there aren't entries already - forcing R cast
  1122. -- Have to do this because BoL is too fast 4 rito and therefore sometimes not casting R properly as it has a change delay
  1123. if not self.CanCastSpells and self.RSkill ~= nil then
  1124. if self.RSkill == "RQ" then
  1125. self:CastR("Q", target)
  1126. elseif self.RSkill == "RW" then
  1127. self:CastR("W", target)
  1128. end
  1129. return
  1130. end
  1131.  
  1132. -- Not going inside the loop when the R is still being processed
  1133. if self.CanCastSpells ~= true and self.RSkill ~= nil then return end
  1134.  
  1135. if Menu.combo.comboWay:Value() == 1 then
  1136. self:SmartCombo(target)
  1137. elseif Menu.combo.comboWay:Value() == 2 then
  1138. -- "Q", "RQ", "W", "E"
  1139. self:Combo1(target)
  1140. elseif Menu.combo.comboWay:Value() == 3 then
  1141. -- "Q", "W", "RW", "E"
  1142. self:Combo2(target)
  1143. elseif Menu.combo.comboWay:Value() == 4 then
  1144. -- "W", "Q", "RQ", "E"
  1145. self:Combo3(target)
  1146. elseif Menu.combo.comboWay:Value() == 5 then
  1147. -- "W", "RW", "Q", "E"
  1148. self:Combo4(target)
  1149. end
  1150. end
  1151. end
  1152.  
  1153. function Leblanc:Combo1(target)
  1154. if self.Q:CanCast() and self.R:CanCast() then
  1155. if self.Q:Cast(target) then
  1156. self.CanCastSpell = false
  1157. self.RSkill = "Q"
  1158. end
  1159. return
  1160. end
  1161. -- This is here, because Q still has to casted. The earlier condition only gets called when Q and W are ready
  1162. self.Q:Cast(target)
  1163. -- Casting R
  1164. if self.lastActivated == Spells.Q.spellName and Spells.R.ready then
  1165. self:CastR("Q", target)
  1166. end
  1167. -- Casting W
  1168. if not self:wUsed() then
  1169. self.W:Cast(target)
  1170. end
  1171. -- Casting E
  1172. self.E:Cast(target)
  1173. end
  1174.  
  1175. function Leblanc:Combo2(target)
  1176. -- Casting Q
  1177. self.Q:Cast(target)
  1178. -- Casting W and RW
  1179. if self.W:CanCast() and self.R:CanCast() then
  1180. if not self:wUsed() and self.W:Cast(target) then
  1181. self.CanCastSpell = false
  1182. self.RSkill = "W"
  1183. end
  1184. return
  1185. end
  1186. -- This is here, because W still has to casted. The earlier condition only gets called when R and W are ready
  1187. if not self:wUsed() then
  1188. self.W:Cast(target)
  1189. end
  1190. -- Casting R
  1191. if self.lastActivated == Spells.W.spellName and Spells.R.ready and not self:wrUsed() then
  1192. self:CastR("W", target)
  1193. end
  1194. -- Casting E
  1195. self.E:Cast(target)
  1196. end
  1197.  
  1198. function Leblanc:Combo3(target)
  1199. -- Casting W
  1200. if not self:wUsed() then self.W:Cast(target) end
  1201. -- Casting Q and R
  1202. if self.Q:CanCast() and self.R:CanCast() then
  1203. if self.Q:Cast(target) then
  1204. self.CanCastSpell = false
  1205. self.RSkill = "Q"
  1206. end
  1207. return
  1208. end
  1209. -- Casting Q
  1210. self.Q:Cast(target)
  1211. -- Casting R
  1212. if self.lastActivated == Spells.Q.spellName and Spells.R.ready then
  1213. self:CastR("Q", target)
  1214. end
  1215. -- Casting E
  1216. self.E:Cast(target)
  1217. end
  1218.  
  1219. function Leblanc:Combo4(target)
  1220. -- Casting W and RW
  1221. if self.W:CanCast() and self.R:CanCast() then
  1222. if not self:wUsed() and self.W:Cast(target) then
  1223. self.CanCastSpell = false
  1224. self.RSkill = "W"
  1225. end
  1226. return
  1227. end
  1228. -- Casting W
  1229. if not self:wUsed() then self.W:Cast(target) end
  1230. -- Casting RW
  1231. if self.lastActivated == Spells.W.spellName and Spells.R.ready and not self:wrUsed() then
  1232. self:CastR("W", target)
  1233. end
  1234. -- Casting Q
  1235. self.Q:Cast(target)
  1236. -- Casting E
  1237. self.E:Cast(target)
  1238. end
  1239.  
  1240. function Leblanc:Harass()
  1241. if myHero.dead then return end
  1242. -- Checking target
  1243. if target ~= nil and ValidTarget(target) then
  1244. -- Harassing
  1245. if Menu.harass.harassQ:Value() == true then
  1246. self.Q:Cast(target)
  1247. end
  1248. if Menu.harass.harassW:Value() == true then
  1249. if not self:wUsed() then
  1250. self.W:Cast(target)
  1251. end
  1252. end
  1253. if Menu.harass.harassE:Value() == true then
  1254. self.E:Cast(target)
  1255. end
  1256.  
  1257. if self:wUsed() and not self.Q:CanCast() and not self.E:CanCast() then
  1258. self.W:Cast()
  1259. end
  1260.  
  1261. end
  1262. end
  1263.  
  1264.  
  1265. function Leblanc:OnDraw()
  1266. if Menu.draw.drawKilltext:Value() == true then
  1267. for i, enemy in ipairs(EnemyTable) do
  1268. if ValidTarget(enemy) then
  1269. local barPos = Graphics.WorldToScreen(Gemotry.Vector3(enemy.x, enemy.y, enemy.z))
  1270. local PosX = barPos.x - 35
  1271. local PosY = barPos.y - 35
  1272. Graphics.DrawText(KillText[i], 10, PosX, PosY, Graphics.ARGB(255,255,204,0))
  1273. end
  1274. end
  1275. end
  1276. end
  1277.  
  1278. -- Returns if W has been used or not
  1279. function Leblanc:wUsed()
  1280. return myHero:GetSpellData(_W).name == "leblancslidereturn"
  1281. end
  1282. -- Returns if WR has been used or not
  1283. function Leblanc:wrUsed()
  1284. return myHero:GetSpellData(_R).name == "leblancslidereturnm"
  1285. end
  1286.  
  1287. -- Calculates damage to other heroes for KillText
  1288. function Leblanc:CalcDamageCalculations()
  1289. if myHero.dead then return end
  1290. for i, enemy in ipairs(EnemyTable) do
  1291. if ValidTarget(enemy) then
  1292. local Qdmg = ((self.Q:CanCast() and CalculateAPDamage("Q", 25, 30, 0.4, enemy)) or 0)
  1293. local Wdmg = ((self.W:CanCast() and not self:wUsed() and CalculateAPDamage("W", 40, 45, 0.6, enemy)) or 0)
  1294. local Edmg = ((self.E:CanCast() and CalculateAPDamage("E", 25, 15, 0.5, enemy)) or 0)
  1295. local Idmg = ((Iready and GetIgniteDamage()) or 0)
  1296. local RQdmg = ((Spells.R.ready and self.lastActivated == Spells.Q.spellname and self:SpellCalc("RQ", enemy)) or 0)
  1297. local RWdmg = ((Spells.R.ready and not self:wrUsed() and self.lastActivated == Spells.W.spellname and self:SpellCalc("RW", enemy)) or 0)
  1298. local QMark = ((self.Q:CanCast() and self:SpellCalc("QMark", enemy)) or 0)
  1299.  
  1300. if myHero.totalDamage > enemy.health then
  1301. KillText[i] = "MURDER HIM"
  1302. elseif Idmg > enemy.health then
  1303. KillText[i] = "Ignite = kill"
  1304. elseif Qdmg > enemy.health then
  1305. KillText[i] = "Q = kill"
  1306. elseif Wdmg > enemy.health then
  1307. KillText[i] = "W = kill"
  1308. elseif Edmg > enemy.health then
  1309. KillText[i] = "E = kill"
  1310. elseif RQdmg > enemy.health then
  1311. KillText[i] = "R(Q) = kill"
  1312. elseif RWdmg > enemy.health then
  1313. KillText[i] = "R(W) = kill"
  1314. elseif Qdmg + myHero.totalDamage > enemy.health then
  1315. KillText[i] = "Q + AA = kill"
  1316. elseif Qdmg + Idmg > enemy.health then
  1317. KillText[i] = "Q + Ignite = kill"
  1318. elseif Wdmg + myHero.totalDamage > enemy.health then
  1319. KillText[i] = "W + AA = kill"
  1320. elseif Wdmg + Idmg > enemy.health then
  1321. KillText[i] = "W + Ignite = kill"
  1322. elseif Edmg + Idmg > enemy.health then
  1323. KillText[i] = "E + Ignite = kill"
  1324. elseif RQdmg + Idmg > enemy.health then
  1325. KillText[i] = "R(Q) + Ignite = kill"
  1326. elseif RWdmg + Idmg > enemy.health then
  1327. KillText[i] = "R(W) + Ignite = kill"
  1328. elseif Qdmg + QMark + Wdmg > enemy.health then
  1329. KillText[i] = "Q + W = kill"
  1330. elseif Wdmg + Qdmg + QMark + Idmg > enemy.health then
  1331. KillText[i] = "Q + W + Ignite = kill"
  1332. elseif Qdmg + RQdmg + QMark > enemy.health then
  1333. KillText[i] = "Q + R(Q) = kill"
  1334. elseif Qdmg + RQdmg + Idmg + QMark > enemy.health then
  1335. KillText[i] = "Q + R(Q) + Ignite = kill"
  1336. elseif Wdmg + RWdmg > enemy.health then
  1337. KillText[i] = "W + R(W) = kill"
  1338. elseif Wdmg + RWdmg + Idmg > enemy.health then
  1339. KillText[i] = "W + R(W) + Ignite = kill"
  1340. elseif Qdmg + RQdmg + QMark + QMark + Wdmg > enemy.health then
  1341. KillText[i] = "Q + R(Q) + W = kill"
  1342. elseif Qdmg + RQdmg + QMark + QMark + Wdmg + Edmg > enemy.health then
  1343. KillText[i] = "Q + R(Q) + W + E = kill"
  1344. else
  1345. KillText[i] = "Harass him!"
  1346. end
  1347.  
  1348. end
  1349. end
  1350. end
  1351.  
  1352. -- KillSteals
  1353. function Leblanc:KillSteal()
  1354. for i, enemy in ipairs(EnemyTable) do
  1355. if ValidTarget(enemy) and Menu.killsteal.enemies[enemy.charName]:Value() == true then
  1356. local Qdmg = ((self.Q:CanCast() and CalculateAPDamage("Q", 25, 30, 0.4, enemy)) or 0)
  1357. local Wdmg = ((self.W:CanCast() and not self:wUsed() and CalculateAPDamage("W", 40, 45, 0.6, enemy)) or 0)
  1358. local Edmg = ((self.E:CanCast() and CalculateAPDamage("E", 25, 15, 0.5, enemy)) or 0)
  1359. local Idmg = ((Iready and GetIgniteDamage()) or 0)
  1360. local RQdmg = ((Spells.R.ready and self.lastActivated == Spells.Q.spellname and self:SpellCalc("RQ", enemy)) or 0)
  1361. local RWdmg = ((Spells.R.ready and not self:wrUsed() and self.lastActivated == Spells.W.spellname and self:SpellCalc("RW", enemy)) or 0)
  1362.  
  1363. if Qdmg > enemy.health then
  1364. self.Q:Cast(enemy)
  1365. elseif Wdmg > enemy.health then
  1366. self.W:Cast(enemy)
  1367. elseif Edmg > enemy.health then
  1368. self.E:Cast(target)
  1369. elseif RQdmg > enemy.health then
  1370. self:CastR("Q", enemy)
  1371. elseif RWdmg > enemy.health then
  1372. self:CastR("W", enemy)
  1373. end
  1374. end
  1375. end
  1376. end
  1377.  
  1378. -- Calculates Damage for specific LeBlanc spells
  1379. function Leblanc:SpellCalc(spell, target)
  1380. local dmg = 0
  1381. if spell == "RQ" then
  1382. dmg = 100 * myHero:GetSpellData(_R).level + 0.65 * myHero.ap
  1383. elseif spell == "RW" then
  1384. dmg = 150 * myHero:GetSpellData(_R).level + 0.975 * myHero.ap
  1385. elseif spell == "RE" then
  1386. dmg = 100 * myHero:GetSpellData(_R).level + 0.65 * myHero.ap
  1387. elseif spell == "QMark" then
  1388. dmg = 25 * myHero:GetSpellData(_Q).level + 30 + 0.4 * myHero.ap
  1389. end
  1390. return ((myHero:CalcMagicDamage(target, dmg) and myHero:CalcMagicDamage(target, dmg)) or 0)
  1391. end
  1392.  
  1393.  
  1394. -- Specific LeBlancs Menu
  1395. function Leblanc:ExtraMenu()
  1396.  
  1397. -- Combo
  1398. Menu.combo:DropDown("comboWay", "Perform Combo:", 1, {"Smart", "QRWE", "QWRE", "WQRE", "WRQE"})
  1399.  
  1400. -- Harass
  1401. Menu.harass:Boolean("harassQ", "Use " .. Spells.Q.name .. " (Q)", true)
  1402. Menu.harass:Boolean("harassW", "Use " .. Spells.W.name .. " (W)", true)
  1403. Menu.harass:Boolean("harassE", "Use " .. Spells.E.name .. " (E)", true)
  1404.  
  1405. -- W Settings
  1406. Menu:Menu("settingsW", name .. "Settings: W")
  1407. Menu.settingsW:Boolean("useOptional", "Use Optional W Settings", true)
  1408. Menu.settingsW:DropDown("useOptionalW", "Return Way: ", 1, {"Smart", "Target dead", "Skills used", "Both"})
  1409.  
  1410. --Farming
  1411. Menu.farm:Boolean("farmQ", "Use " .. Spells.Q.name .. " (Q)", true)
  1412. Menu.farm:Boolean("farmW", "Use " .. Spells.W.name .. " (W)", true)
  1413. Menu.farm:Boolean("farmRange", "Minions outside AA range only", false)
  1414. Menu.farm:Boolean("farmAA", "Farm if AA is on CD", false)
  1415.  
  1416. -- Laneclear
  1417. Menu.laneclear:Boolean("laneclearW", "Use " .. Spells.W.name .. " (W)", true)
  1418. Menu.laneclear:Boolean("laneclearR", "Use " .. Spells.R.name .. " (R)", true)
  1419.  
  1420. --Drawings
  1421. Menu.draw:Section("sectionKillText", "Specific settings")
  1422. Menu.draw:Boolean("drawKilltext", "Draw KillText", false)
  1423.  
  1424. -- Killsteal settings
  1425. Menu.killsteal:Boolean("killsteal", "Perform KillSteal", false)
  1426. Menu.killsteal:Boolean("killstealQ", "Use " .. Spells.Q.name .. " (Q)", true)
  1427. Menu.killsteal:Boolean("killstealW", "Use " .. Spells.W.name .. " (W)", true)
  1428. Menu.killsteal:Boolean("killstealE", "Use " .. Spells.E.name .. " (E)", true)
  1429. Menu.killsteal:Boolean("killstealR", "Use " .. Spells.R.name .. " (R)", true)
  1430. Menu.killsteal:Menu("enemies", "Perform KillSteal On")
  1431. for i, hero in ipairs(EnemyTable) do
  1432. Menu.killsteal.enemies:Boolean(hero.charName, hero.charName, true)
  1433. end
  1434.  
  1435. -- Misc
  1436. Menu:Menu("misc", name .. "Misc")
  1437. end
  1438.  
  1439.  
  1440. function Leblanc:SmartCombo(target)
  1441.  
  1442. if not self.CanCastSpells and self.RSkill ~= nil then return end
  1443.  
  1444. -- Calculating damage
  1445. local Wdmg = ((self.W:CanCast() and not self:wUsed() and CalculateAPDamage("W", 40, 45, 0.6, target)) or 0)
  1446. local RWdmg = ((Spells.R.ready and not self:wrUsed() and self:SpellCalc("RW", target)) or 0)
  1447.  
  1448. -- Casting W and R to maximize damage output in a teamfight when W+R will hit more than three people
  1449. if self.W:CanCast() and Spells.R.ready then
  1450. local position, enemyCount = CountEnemiesWithinRadius(Spells.W.range, Spells.W.radius)
  1451. if enemyCount >= 3 and position ~= nil then
  1452. if self.W:Cast(position.x, position.z) and not self:wUsed() then
  1453. self.CanCastSpells = false
  1454. self.RSkill = "RW"
  1455. end
  1456. return
  1457. end
  1458. end
  1459.  
  1460. -- Declaring other damages here, because it isn't needed earlier
  1461. local Qdmg = ((self.Q:CanCast() and CalculateAPDamage("Q", 25, 30, 0.4, target)) or 0)
  1462. local RQdmg = ((Spells.R.ready and self:SpellCalc("RQ", target)) or 0)
  1463. local QMark = (((self.Q:CanCast() or Spells.R.ready) and self:SpellCalc("QMark", target)) or 0)
  1464.  
  1465. -- Checking whether Q + R does more damage than W + R
  1466. if myHero:DistanceTo(target) < Spells.Q.range and self.Q:CanCast() and Spells.R.ready and Qdmg + RQdmg + QMark + QMark + Wdmg > Wdmg + RWdmg + Qdmg then
  1467. if self.Q:Cast(target) then
  1468. self.CanCastSpells = false
  1469. self.RSkill = "RQ"
  1470. end
  1471. return
  1472. -- Otherwise do W + R
  1473. elseif myHero:DistanceTo(target) < Spells.W.range and self.W:CanCast() and Spells.R.ready and Wdmg + RWdmg > Qdmg + RQdmg + QMark then
  1474. if self.W:Cast(target) then
  1475. self.CanCastSpells = false
  1476. self.RSkill = "RW"
  1477. end
  1478. return
  1479. -- Casting E, if possible, to targets further from W range and closer to E range
  1480. elseif myHero:DistanceTo(target) > Spells.Q.range and myHero:DistanceTo(target) < Spells.E.range and self.E:CanCast() then
  1481. self.E:Cast(target)
  1482. return
  1483. else
  1484. -- Possible other skills to make all skills are fired at all times
  1485. self.Q:Cast(target)
  1486. self:CastR("Q", target)
  1487. self.W:Cast(target)
  1488. self:CastR("W", target)
  1489. self.E:Cast(target)
  1490. return
  1491. end
  1492. end
  1493.  
  1494. function Leblanc:CastR(skill, target)
  1495. if skill == "Q" and self.lastActivated == Spells.Q.spellname then
  1496. if Spells.R.ready and myHero:DistanceTo(target) < Spells.Q.range then
  1497. myHero:CastSpell(_R, target)
  1498. end
  1499. elseif skill == "W" and self.lastActivated == Spells.W.spellname then
  1500. if Spells.R.ready and not self:wrUsed() and myHero:DistanceTo(target) < Spells.W.range then
  1501. myHero:CastSpell(_R, target.x, target.z)
  1502. end
  1503. end
  1504. end
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511. --[[
  1512.  
  1513. Script details:
  1514. Series: Sexy Series AIO
  1515. Champion: BlitzCrank
  1516. Author: Sexy SmTRed
  1517. Designed for: Cloudrop
  1518. Current version: 0.1
  1519.  
  1520.  
  1521. Changelog:
  1522. 0.1
  1523. Started coding
  1524. --]]
  1525.  
  1526. function Blitzcrank:__init()
  1527. Spells = {
  1528. ["Q"] = {name = "Rocket Grab", range = 900, width = 100, radius = 0, delay = 0.25, speed = 1800, ready = false},
  1529. ["W"] = {name = "Overdrive", ready = false},
  1530. ["E"] = {name = "Power Fist", range = 125, ready = false},
  1531. ["R"] = {name = "Static Field", range = 600, speed = math.huge, ready = false}
  1532. }
  1533.  
  1534. self.Q = Spell(_Q, Spells.Q.range)
  1535. --self.Q:SetSkillShot(Spells.Q.delay, Spells.Q.radius, Spells.Q.speed, false, "line")
  1536. self.W = Spell(_W)
  1537. self.E = Spell(_E)
  1538. self.R = Spell(_R, Spells.R.range)
  1539.  
  1540. self:ExtraMenu()
  1541.  
  1542. ts = TargetSelector("LESS_AP", Spells.Q.range, Menu)
  1543.  
  1544. Callback.Bind("Tick", function() self:OnTick() end)
  1545. end
  1546.  
  1547. function Blitzcrank:OnTick()
  1548. if myHero.dead then return end
  1549. if Menu.autoR.autoR:Value() == true then
  1550. self:AutoR()
  1551. end
  1552.  
  1553. if Menu.killsteal.killsteal:Value() == true then
  1554. self:KillSteal()
  1555. end
  1556.  
  1557. end
  1558.  
  1559. function Blitzcrank:Combo()
  1560. if myHero.dead then return end
  1561. if target ~= nil then
  1562. if Menu.combo.comboE:Value() == true then
  1563. if myHero:DistanceTo(target) < Spells.E.range then
  1564. self.E:Cast()
  1565. end
  1566. end
  1567. if Menu.combo.comboQ:Value() == true and Menu.combo.comboBlock[target.charName]:Value() == false then
  1568. self.Q:Cast(target, target.x, target.z)
  1569. end
  1570. if Menu.combo.comboR:Value() == true and CountEnemies(Spells.R.range) >= Menu.combo.comboRx:Value() then
  1571. self.R:Cast()
  1572. end
  1573. end
  1574. end
  1575.  
  1576. function Blitzcrank:Harass()
  1577. if myHero.dead then return end
  1578. if target ~= nil then
  1579. if Menu.harass.harassQ:Value() == true then
  1580. self.Q:Cast(target)
  1581. end
  1582. if Menu.harass.harassE:Value() == true then
  1583. self.E:Cast(target)
  1584. end
  1585. end
  1586. end
  1587.  
  1588. function Blitzcrank:AutoR()
  1589. if CountEnemies(Spells.R.range) >= tonumber(Menu.autoR.autoRx:Value()) then
  1590. self.R:Cast()
  1591. end
  1592. end
  1593.  
  1594. function Blitzcrank:KillSteal()
  1595. for i, enemy in ipairs(EnemyTable) do
  1596. if ValidTarget(enemy) then
  1597. local Qdmg = CalculateAPDamage("Q", 25, 55, 1, enemy)
  1598. local Rdmg = CalculateAPDamage("R", 125, 125, 1, enemy)
  1599. if Qdmg > enemy.health then
  1600. self.Q:Cast(enemy)
  1601. elseif Rdmg > enemy.health and myHero:DistanceTo(enemy) <= Spells.R.range then
  1602. self.R:Cast()
  1603. end
  1604. end
  1605. end
  1606. end
  1607.  
  1608. function Blitzcrank:ExtraMenu()
  1609. -- Combo
  1610. Menu.combo:Section("comboSpellSection", DrawFont("Spell Settings"))
  1611. Menu.combo:Boolean("comboQ", "Use " .. Spells.Q.name .. " (Q)", true)
  1612. Menu.combo:Boolean("comboE", "Use " .. Spells.E.name .. " (E)", true)
  1613. Menu.combo:Boolean("comboR", "Use " .. Spells.R.name .. " (R)", true)
  1614. Menu.combo:Section("comboSection2", DrawFont("Modes"))
  1615. Menu.combo:Slider("comboRx", "Min amount of people nearby to cast R", 1, 1, 5, 0)
  1616. Menu.combo:Menu("comboBlock", "Block Q List")
  1617. for i, enemy in ipairs(EnemyTable) do
  1618. Menu.combo.comboBlock:Boolean(enemy.charName, "Block Q on " .. enemy.charName, false)
  1619. end
  1620.  
  1621. -- Harass
  1622. Menu.harass:Boolean("harassQ", "Use " .. Spells.Q.name .. " (Q)", true)
  1623. Menu.harass:Boolean("harassW", "Use " .. Spells.W.name .. " (W)", true)
  1624. Menu.harass:Boolean("harassE", "Use " .. Spells.E.name .. " (E)", true)
  1625.  
  1626. -- Laneclear
  1627. Menu.laneclear:Boolean("laneclearW", "Use " .. Spells.W.name .. " (W)", true)
  1628. Menu.laneclear:Boolean("laneclearR", "Use " .. Spells.R.name .. " (R)", true)
  1629.  
  1630. -- Auto R
  1631. Menu:Menu("autoR", "Automatic R")
  1632. Menu.autoR:Section("autoRSection", DrawFont("Activation"))
  1633. Menu.autoR:Boolean("autoR", "Automatically Activate R")
  1634. Menu.autoR:Section("autoRSection2", DrawFont("Modes"))
  1635. Menu.autoR:Slider("autoRx", "Enemies In Range to R", 5, 1, 5, 0)
  1636.  
  1637. -- KillSteal settings
  1638. Menu.killsteal:Boolean("killstealQ", "Use " .. Spells.Q.name .. " (Q)", true)
  1639. Menu.killsteal:Boolean("killstealR", "Use " .. Spells.R.name .. " (R)", true)
  1640.  
  1641. -- Misc
  1642. Menu:Menu("misc", name .. "Misc")
  1643. Menu.misc:Menu("interrupt", "Interrupter")
  1644. Interrupter(Menu.misc.interrupt, function(unit) self:BlitzInterrupter(unit) end)
  1645. end
  1646.  
  1647. function Blitzcrank:BlitzInterrupter(unit)
  1648. if ValidTarget(unit) then
  1649. if not self.Q:Cast(unit) and myHero:DistanceTo(unit) <= Spells.R.range then
  1650. self.R:Cast()
  1651. end
  1652. end
  1653. end
  1654.  
  1655.  
  1656.  
  1657.  
  1658.  
  1659.  
  1660.  
  1661. --[[
  1662.  
  1663. Script details:
  1664. Series: Sexy Series AIO
  1665. Champion: Ryze
  1666. Author: Sexy SmTRed
  1667. Designed for: Cloudrop
  1668. Current version: 0.1
  1669.  
  1670.  
  1671. Changelog:
  1672. 0.1
  1673. Started coding
  1674. --]]
  1675.  
  1676. function Ryze:__init()
  1677. Spells = {
  1678. ["Q"] = {name = "Overload", range = 625, ready = false},
  1679. ["W"] = {name = "Rune Prison", range = 600, ready = false},
  1680. ["E"] = {name = "Spell Flux", range = 600, ready = false},
  1681. ["R"] = {name = "Desperate Power", ready = false}
  1682. }
  1683.  
  1684. --BasicPrediction.EnablePrediction()
  1685.  
  1686. self.Q = Spell(_Q, Spells.Q.range)
  1687. self.W = Spell(_W, Spells.W.range)
  1688. self.E = Spell(_E, Spells.E.range)
  1689. self.R = Spell(_R)
  1690.  
  1691. self:ExtraMenu()
  1692. self.lastValueMenu = Menu.combo.settingsR.RMode:Value()
  1693.  
  1694. ts = TargetSelector("LESS_AP", Spells.Q.range, Menu)
  1695.  
  1696. Callback.Bind("Tick", function() self:OnTick() end)
  1697. Callback.Bind("Draw", function() self:OnDraw() end)
  1698. end
  1699.  
  1700. function Ryze:OnDraw()
  1701. if Menu.draw.drawKilltext:Value() == true then
  1702. for i, enemy in ipairs(EnemyTable) do
  1703. if ValidTarget(enemy) then
  1704. local barPos = Graphics.WorldToScreen(Gemotry.Vector3(enemy.x, enemy.y, enemy.z))
  1705. local PosX = barPos.x - 35
  1706. local PosY = barPos.y - 50
  1707. Graphics.DrawText(KillText[i], 10, PosX, PosY, Graphics.ARGB(255,255,204,0))
  1708. end
  1709. end
  1710. end
  1711. end
  1712.  
  1713. function Ryze:OnTick()
  1714. if myHero.dead then return end
  1715. self:CalcDamageCalculations()
  1716. if Menu.killsteal.killsteal:Value() == true then
  1717. self:KillSteal()
  1718. end
  1719. end
  1720.  
  1721. function Ryze:Combo()
  1722. if myHero.dead then return end
  1723. if target ~= nil then
  1724. if Menu.combo.comboR:Value() == true and self:RMangement(target) then
  1725. self.R:Cast()
  1726. end
  1727. if Menu.combo.comboMode:Value() == 1 then
  1728. self:ComboBurst(target)
  1729. else
  1730. self:ComboLong(target)
  1731. end
  1732. end
  1733. end
  1734.  
  1735. function Ryze:ComboBurst(target)
  1736. if Menu.combo.comboQ:Value() == true then
  1737. self.Q:Cast(target)
  1738. end
  1739. if Menu.combo.comboE:Value() == true then
  1740. self.W:Cast(target)
  1741. end
  1742. if Menu.combo.comboQ:Value() == true then
  1743. self.E:Cast(target)
  1744. end
  1745. end
  1746.  
  1747. function Ryze:ComboLong(target)
  1748. if Menu.combo.comboQ:Value() == true then
  1749. self.Q:Cast(target)
  1750. end
  1751.  
  1752. if myHero:GetSpellData(_Q).level >= 1 and myHero:GetSpellData(_Q).currentCd < 2 and not self.E:CanCast() and self.W:CanCast() then return end
  1753.  
  1754. if Menu.combo.comboE:Value() == true then
  1755. self.W:Cast(target)
  1756. end
  1757.  
  1758. if myHero:GetSpellData(_Q).level >= 1 and myHero:GetSpellData(_Q).currentCd < 2 and not self.W:CanCast() and self.E:CanCast() then return end
  1759.  
  1760. if Menu.combo.comboQ:Value() == true then
  1761. self.E:Cast(target)
  1762. end
  1763. end
  1764.  
  1765. function Ryze:Harass()
  1766. if myHero.dead then return end
  1767. if target ~= nil then
  1768. if Menu.harass.harassQ:Value() == true then
  1769. self.Q:Cast(target)
  1770. end
  1771. if Menu.harass.harassW:Value() == true then
  1772. self.W:Cast(target)
  1773. end
  1774. if Menu.harass.harassE:Value() == true then
  1775. self.E:Cast(target)
  1776. end
  1777. end
  1778. end
  1779.  
  1780. function Ryze:KillSteal()
  1781. for i, hero in ipairs(EnemyTable) do
  1782. if ValidTarget(hero) then
  1783. local Qdmg = self.Q:CanCast() and self:CalculateAPDamage("Q", hero)
  1784. local Wdmg = self.W:CanCast() and self:CalculateAPDamage("W", hero)
  1785. local Edmg = self.R:CanCast() and self:CalculateAPDamage("E", hero)
  1786. if Edmg > enemy.health then
  1787. self.E:Cast(hero)
  1788. elseif Qdmg > enemy.health then
  1789. self.Q:Cast(hero)
  1790. elseif Wdmg > enemy.health then
  1791. self.W:Cast(hero)
  1792. end
  1793. end
  1794. end
  1795. end
  1796.  
  1797. function Ryze:CalculateAPDamage(skill, target)
  1798. local dmg = 0
  1799. if skill == "Q" then
  1800. dmg = 20 * myHero:GetSpellData(_Q).level + 20 + 0.4 * myHero.ap
  1801. dmg = dmg + ((myHero.maxMana / 100) * 6.5)
  1802. elseif skill == "W" then
  1803. dmg = 25 * myHero:GetSpellData(_W).level + 35 + 0.6 * myHero.ap
  1804. dmg = dmg + ((myHero.maxMana / 100) * 4.5)
  1805. elseif skill == "E" then
  1806. dmg = 30 * myHero:GetSpellData(_E).level + 20 + 0.35 * myHero.ap
  1807. dmg = dmg + ((myHero.maxMana / 100) * 1)
  1808. end
  1809. return myHero:CalcMagicDamage(target, dmg)
  1810. end
  1811.  
  1812. function Ryze:CalcDamageCalculations()
  1813. for i, enemy in ipairs(EnemyTable) do
  1814. if ValidTarget(enemy) then
  1815. local Qdmg = ((self.Q:CanCast() and self:CalculateAPDamage("Q", enemy)) or 0)
  1816. local Wdmg = ((self.W:CanCast() and self:CalculateAPDamage("W", enemy)) or 0)
  1817. local Edmg = ((self.E:CanCast() and self:CalculateAPDamage("E", enemy)) or 0)
  1818. if myHero.totalDamage > enemy.health then
  1819. KillText[i] = "Murder him"
  1820. elseif Qdmg > enemy.health then
  1821. KillText[i] = "Q = kill"
  1822. elseif Wdmg > enemy.health then
  1823. KillText[i] = "W = kill"
  1824. elseif (Edmg * 2) > enemy.health then
  1825. KillText[i] = "E = kill"
  1826. elseif Qdmg + Wdmg > enemy.health then
  1827. KillText[i] = "Q + W = kill"
  1828. elseif Qdmg + Wdmg + Edmg > enemy.health then
  1829. KillText[i] = "Q + W + E = kill"
  1830. elseif Qdmg + Wdmg + Qdmg > enemy.health then
  1831. KillText[i] = "Q + W + Q = kill"
  1832. elseif Qdmg + Wdmg + Edmg + Qdmg > enemy.health then
  1833. KillText[i] = "Q + W + E + Q = kill"
  1834. elseif Qdmg + Wdmg + Qdmg + Edmg + Qdmg > enemy.health then
  1835. KillText[i] = "Q + W + Q + E + Q = kill"
  1836. else
  1837. KillText[i] = "Harass him"
  1838. end
  1839. end
  1840. end
  1841. end
  1842.  
  1843. function Ryze:RMangement(target)
  1844. return Menu.combo.settingsR.RMode:Value() == 1 or (Menu.combo.settingsR.RMode:Value() == 2 and Menu.combo.settingsR.hitX >= self:CalcEnemiesNearTarget(target, Spells.R.radius))
  1845. end
  1846.  
  1847. function Ryze:CalcEnemiesNearTarget(target, radius)
  1848. local count = 1
  1849. for i, enemy in ipairs(EnemyTable) do
  1850. if enemy ~= target then
  1851. if target:distanceTo(enemy) < radius then
  1852. count = count + 1
  1853. end
  1854. end
  1855. end
  1856. return count
  1857. end
  1858.  
  1859. function Ryze:Gapcloser(unit)
  1860. self.W:Cast(unit)
  1861. end
  1862.  
  1863.  
  1864. function Ryze:ExtraMenu()
  1865. -- Combo
  1866. Menu.combo:Section("comboSection", DrawFont("Spell Settings"))
  1867. Menu.combo:Boolean("comboQ", "Use " .. Spells.Q.name .. " (Q)", true)
  1868. Menu.combo:Boolean("comboE", "Use " .. Spells.E.name .. " (E)", true)
  1869. Menu.combo:Boolean("comboR", "Use " .. Spells.R.name .. " (R)", true)
  1870. Menu.combo:Section("comboMode", DrawFont("Modes"))
  1871. Menu.combo:DropDown("comboMode", "Mode", 1, {"Burst", "Long"})
  1872. Menu.combo:Menu("settingsR", "R Settings")
  1873. Menu.combo.settingsR:DropDown("RMode", "Mode", 1, {"Instantly", "Hit x"}, function(newvalue) if newvalue == 1 then Menu.combo.settingsR.hitX:Hide(true) else Menu.combo.settingsR.hitX:Hide(false) end end)
  1874. Menu.combo.settingsR:Slider("hitX", "Min X amount of champs", 2, 1, 5, 1)
  1875.  
  1876. -- Harass
  1877. Menu.harass:Boolean("harassQ", "Use " .. Spells.Q.name .. " (Q)", true)
  1878. Menu.harass:Boolean("harassW", "Use " .. Spells.W.name .. " (W)", true)
  1879. Menu.harass:Boolean("harassE", "Use " .. Spells.E.name .. " (E)", true)
  1880.  
  1881. -- Farm
  1882. Menu.farm:Boolean("farmQ", "Use " .. Spells.Q.name .. " (Q)", true)
  1883. Menu.farm:Boolean("farmW", "Use " .. Spells.W.name .. " (W)", true)
  1884.  
  1885. -- Laneclear
  1886. Menu.laneclear:Boolean("laneclearW", "Use " .. Spells.W.name .. " (W)", true)
  1887. Menu.laneclear:Boolean("laneclearR", "Use " .. Spells.R.name .. " (R)", true)
  1888.  
  1889. -- KillSteal settings
  1890. Menu.killsteal:Boolean("killstealQ", "Use " .. Spells.Q.name .. " (Q)", true)
  1891. Menu.killsteal:Boolean("killstealW", "Use " .. Spells.W.name .. " (Q)", true)
  1892.  
  1893. -- Misc
  1894. Menu:Menu("misc", name .. "Misc")
  1895. Menu.misc:Menu("gapcloser", "GapCloser")
  1896. Gapcloser(Menu.misc.gapcloser, function(unit) self:Gapcloser(unit) end)
  1897.  
  1898. --Draws
  1899. Menu.draw:Section("drawKillSection", DrawFont("Misc Drawings"))
  1900. Menu.draw:Boolean("drawKilltext", "Draw KillText", false)
  1901. end
  1902.  
  1903. function Ryze:MenuChecks()
  1904. if self.lastValueMenu ~= Menu.combo.settingsR.RMode:Value() then
  1905. if Menu.combo.settingsR.Mode:Value() == 1 then
  1906. Menu.combo.settingsR.hitX:Hide(true)
  1907. else
  1908. Menu.combo.settingsR.hitX:Hide(false)
  1909. end
  1910. self.lastValueMenu = Menu.combo.SettingsR.RMode:Value()
  1911. end
  1912. end
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919. --[[
  1920.  
  1921. Script details:
  1922. Series: Sexy Series AIO
  1923. Champion: Lux
  1924. Author: Sexy SmTRed
  1925. Designed for: Cloudrop
  1926. Current version: 0.1
  1927.  
  1928.  
  1929. Changelog:
  1930. ² 0.1
  1931. Started coding
  1932. --]]
  1933.  
  1934. function Lux:__init()
  1935. Spells = {
  1936. ["Q"] = {name = "Light Binding", range = 1175, speed = 1200},
  1937. ["W"] = {name = "Prismatic Barrier", range = 1075, speed = 1400},
  1938. ["E"] = {name = "Lucent Singularity", range = 1100, speed = 1600, radius = 322, delay = 0.25},
  1939. ["R"] = {name = "Final Spark", range = 3340}
  1940. }
  1941.  
  1942. -- Drawing LeBlancs Menu
  1943. self:ExtraMenu()
  1944.  
  1945. -- Intializing max range just to be sure for Menu
  1946. self.maxRange = Spells.R.range
  1947.  
  1948. -- Initializing Spells
  1949. self.Q = Spell(_Q, Spells.Q.range)
  1950. self.W = Spell(_W, Spells.W.range)
  1951. self.E = Spell(_E, Spells.E.range)
  1952. --self.E:SetSkillShot(Spells.E.delay, Spells.E.radius, Spells.E.speed, false, "aoe")
  1953. self.R = Spell(_R, Spells.R.range)
  1954. --self.R:SetSkillShot(Spells.E.delay, Spells.E.radius, Spells.E.speed, false, "normal")
  1955.  
  1956. -- Ball information
  1957. self.EBall = nil
  1958.  
  1959. -- Lux Passive name
  1960. self.LuxPassive = "luxilluminatingfraulein"
  1961. self.EnemiesBuff = {}
  1962.  
  1963. for i, enemy in ipairs(EnemyTable) do
  1964. self.EnemiesBuff[enemy.charName] = false
  1965. end
  1966.  
  1967. -- Initializing TargetSelector
  1968. ts = TargetSelector("LESS_AP", Spells.Q.range, Menu)
  1969.  
  1970. -- Making the change smoother
  1971. self.lastRange = Menu.lazer.range:Value()
  1972.  
  1973. -- Regular Callback binds
  1974. Callback.Bind("Tick", function() self:OnTick() end)
  1975. Callback.Bind("CreateObj", function(obj) self:OnCreateObj(obj) end)
  1976. Callback.Bind("ApplyBuff", function(unit, target, buff) self:OnApplyBuff(unit, target, buff) end)
  1977. Callback.Bind("RemoveBuff", function(unit, buff) self:OnRemoveBuff(unit, buff) end)
  1978. Callback.Bind("DeleteObj", function(obj) self:OnDeleteObj(obj) end)
  1979. Callback.Bind("Draw", function() self:OnDraw() end)
  1980. end
  1981.  
  1982. function Lux:OnDraw()
  1983. if myHero.dead then return end
  1984. if Menu.draw.drawKilltext:Value() == true then
  1985. for i, enemy in ipairs(EnemyTable) do
  1986. if ValidTarget(enemy) then
  1987. local barPos = Graphics.WorldToScreen(Gemotry.Vector3(enemy.x, enemy.y, enemy.z))
  1988. local PosX = barPos.x - 35
  1989. local PosY = barPos.y - 50
  1990. Graphics.DrawText(KillText[i], 10, PosX, PosY, Graphics.ARGB(255,255,204,0))
  1991. end
  1992. end
  1993. end
  1994. if self.EBall ~= nil then
  1995. DrawCirc(self.EBall.x, self.EBall.y, self.EBall.z, Spells.E.radius, Graphics.RGB(100, 200, 150):ToNumber())
  1996. end
  1997. end
  1998.  
  1999. function Lux:OnTick()
  2000. self:CalcDamageCalculations()
  2001.  
  2002. if Menu.killsteal.killsteal:Value() == true then
  2003. self:KillSteal()
  2004. end
  2005.  
  2006. if self.EBall and not Menu.comboKey:IsPressed() then
  2007. self:ProcE()
  2008. end
  2009. end
  2010.  
  2011. function Lux:OnApplyBuff(unit, target, buff)
  2012. if unit and unit.isMe and target and ValidTarget(target) and buff.name == self.LuxPassive then
  2013. self.EnemiesBuff[target.charName] = true
  2014. end
  2015. end
  2016.  
  2017. function Lux:OnRemoveBuff(unit, buff)
  2018. if unit and unit.team ~= myHero.team and unit.type == myHero.type and buff.name == self.LuxPassive and self.EnemiesBuff[unit.charName] == true then
  2019. self.EnemiesBuff[unit.charName] = false
  2020. end
  2021. end
  2022.  
  2023. function Lux:OnCreateObj(obj)
  2024. if obj and obj.valid and obj.spellOwner and obj.spellOwner.type and obj.spellOwner.type == myHero.type then
  2025. printChat(obj.spellOwner.charName)
  2026. end
  2027. if self.EBall then
  2028. if self.EBall.spellOwner then
  2029. printChat(ob.spellOwner.charName)
  2030. if spell.EBall.spellOwner.isMe then
  2031. self.EBall = obj
  2032. else
  2033. self.EBall = nil
  2034. end
  2035. end
  2036. end
  2037. if not self.EBall and obj and obj.name == "LuxLightstrike_mis.troy" and myHero:DistanceTo(obj) <= 50 then
  2038. self.EBall = obj
  2039. end
  2040.  
  2041. -- if obj and obj.valid and obj.spellOwner and obj.spellOwner.networkID == myHero.networkID and obj.name and obj.name == "LuxLightstrike_mis.troy" then
  2042. -- self.EBall = obj
  2043. --end
  2044.  
  2045. end
  2046.  
  2047. function Lux:OnDeleteObj(obj)
  2048. if obj == self.EBall then
  2049. self.EBall = nil
  2050. end
  2051. end
  2052.  
  2053. function Lux:Combo()
  2054. if myHero.dead then return end
  2055. if target ~= nil and ValidTarget(target) then
  2056.  
  2057. if Menu.combo.comboQ:Value() == true then
  2058. self.Q:Cast(target)
  2059. end
  2060.  
  2061. if Menu.combo.comboPassive:Value() and InAARange(target) and TargetHaveBuff(Buffname, target) then return end
  2062.  
  2063. if Menu.combo.comboE:Value() == true then
  2064. self.E:Cast(target)
  2065. end
  2066.  
  2067. if Menu.combo.comboPassive:Value() and InAARange(target) and TargetHaveBuff(Buffname, target) then return end
  2068. if Menu.combo.comboR:Value() == true then
  2069. if not self:CanComboR(target) then return end
  2070. self.R:Cast(target)
  2071. end
  2072. end
  2073. end
  2074.  
  2075. function Lux:ProcE(target)
  2076. if myHero.dead then return end
  2077. if target and target.type == myHero.type then
  2078. if self.E:CanCast() and GetCustomDistance(self.EBall, target) <= Spells.E.radius then
  2079. self.E:Cast()
  2080. end
  2081. else
  2082. if self.E:CanCast() and CountEnemies(Spells.E.radius, self.EBall) >= 1 then
  2083. self.E:Cast()
  2084. end
  2085. end
  2086. end
  2087.  
  2088. function Lux:Harass()
  2089. if myHero.dead then return end
  2090. if target ~= nil and ValidTarget(target) then
  2091. if Menu.harass.harassQ:Value() == true and not (Menu.harass.harassPassive:Value() and InAARange(target) and TargetHaveBuff(Buffname, target)) then
  2092. self.Q:Cast(target)
  2093. end
  2094. if Menu.harass.harassE:Value() == true and not (Menu.harass.harassPassive:Value() and InAARange(target) and TargetHaveBuff(Buffname, target)) then
  2095. self.E:Cast(target)
  2096. end
  2097. end
  2098. end
  2099.  
  2100. function Lux:CalcDamageCalculations()
  2101. for i, enemy in ipairs(EnemyTable) do
  2102. if ValidTarget(enemy) then
  2103. local Qdmg = ((Menu.killsteal.killstealQ:Value() and self.Q:CanCast() and CalculateAPDamage("Q", 10, 50, 0.7, enemy)) or 0)
  2104. local Edmg = ((Menu.killsteal.killstealE:Value() and self.W:CanCast() and CalculateAPDamage("E", 15, 45, 0.6, enemy)) or 0)
  2105. local Rdmg = ((Menu.killsteal.killstealR:Value() and self.R:CanCast() and CalculateAPDamage("R", 200, 100, 0.75, enemy)) or 0)
  2106. local Pdmg = (((self.Q:CanCast() or self.E:CanCast()) and self:PassiveDamage()) or 0)
  2107. if myHero.totalDamage > enemy.health then
  2108. KillText[i] = "Murder him"
  2109. elseif Qdmg > enemy.health then
  2110. KillText[i] = "Q = kill"
  2111. elseif Edmg > enemy.health then
  2112. KillText[i] = "E = kill"
  2113. elseif Qdmg + Pdmg > enemy.health then
  2114. KillText[i] = "Q + P = kill"
  2115. elseif Edmg + Pdmg > enemy.health then
  2116. KillText[i] = "E + P = kill"
  2117. elseif Qdmg + Edmg > enemy.health then
  2118. KillText[i] = "Q + E = kill"
  2119. elseif Qdmg + Pdmg + Edmg > enemy.health then
  2120. KillText[i] = "Q + P + E = kill"
  2121. elseif Qdmg + Pdmg + Edmg + Pdmg > enemy.health then
  2122. KillText[i] = "Q + P + E + P = kill"
  2123. elseif Qdmg + Edmg + Rdmg > enemy.health then
  2124. KillText[i] = "Q + E + R = kill"
  2125. elseif Qdmg + Pdmg + Edmg + Rdmg + Pdmg > enemy.health then
  2126. KillText[i] = "Q + P + E + P + R + P = kill"
  2127. else
  2128. KillText[i] = "Harass him"
  2129. end
  2130. end
  2131. end
  2132. end
  2133.  
  2134. function Lux:KillSteal()
  2135. for i, enemy in ipairs(EnemyTable) do
  2136. if ValidTarget(enemy) then
  2137. if Qdmg > enemy.health then
  2138. self.Q:Cast(enemy)
  2139. elseif self.EBall and Edmg > enemy.health then
  2140. self.EProc(enemy)
  2141. elseif Edmg > enemy.health then
  2142. self.E:Cast(enemy)
  2143. elseif Rdmg > enemy.health then
  2144. self.R:Cast(enemy)
  2145. end
  2146. end
  2147. end
  2148. end
  2149.  
  2150. function Lux:CanComboR(target)
  2151. return not (Menu.lazer.combo:Value() == 2 and CalculateAPDamage() <= target.health)
  2152. end
  2153.  
  2154. function Lux:PassiveDamage()
  2155. return ((10 + (8 * myHero.level)) + (myHero.ap * 0.2))
  2156. end
  2157.  
  2158.  
  2159. function Lux:ExtraMenu()
  2160. -- Combo
  2161. Menu.combo:Section("comboSection", DrawFont("Spell Settings"))
  2162. Menu.combo:Boolean("comboQ", "Use " .. Spells.Q.name .. " (Q)", true)
  2163. Menu.combo:Boolean("comboE", "Use " .. Spells.E.name .. " (E)", true)
  2164. Menu.combo:Boolean("comboR", "Use " .. Spells.R.name .. " (R)", true)
  2165. Menu.combo:Section("comboModeSection", DrawFont("Modes"))
  2166. Menu.combo:Boolean("comboPassive", "Proc Passive", false)
  2167.  
  2168. -- Harass
  2169. Menu.harass:Section("harassSection", DrawFont("Spell Settings"))
  2170. Menu.harass:Boolean("harassQ", "Use " .. Spells.Q.name .. " (Q)", true)
  2171. Menu.harass:Boolean("harassE", "Use " .. Spells.E.name .. " (E)", true)
  2172. Menu.harass:Section("harassModeSection", DrawFont("Modes"))
  2173. Menu.harass:Boolean("harassPassive", "Proc Passive", false)
  2174.  
  2175. --Farming
  2176. Menu.farm:Boolean("farmQ", "Use " .. Spells.Q.name .. " (Q)", true)
  2177. Menu.farm:Boolean("farmE", "Use " .. Spells.E.name .. " (E)", true)
  2178.  
  2179. -- Laneclear
  2180. Menu.laneclear:Boolean("laneclearE", "Use " .. Spells.E.name .. " (E)", true)
  2181.  
  2182. --Drawings
  2183. Menu.draw:Boolean("drawKilltext", "Draw KillText", false)
  2184. Menu.draw:Separator()
  2185.  
  2186. -- Ult Settings
  2187. Menu:Menu("lazer", "Ultimate Settings")
  2188. Menu.lazer:Icon("fa-crosshairs")
  2189. Menu.lazer:Slider("range", "Range", 1500, 100, self.maxRange, 1, function(newvalue) Spells.R.range = newvalue; self.R:AdjustRange(newvalue); end)
  2190. Menu.lazer.range:Icon("fa-plus")
  2191. Menu.lazer:Separator()
  2192. Menu.lazer:DropDown("combo", "Use in Combo", 1, {"Instantly", "KillAble"})
  2193.  
  2194. -- Killsteal settings
  2195. Menu:Menu("killsteal", name .. "KillSteal")
  2196. Menu.killsteal:Section("killstealSection1", "Activation")
  2197. Menu.killsteal:Boolean("killsteal", "Perform KillSteal", false)
  2198. Menu.killsteal:Section("killstealSection2", "Spell Settings")
  2199. Menu.killsteal:Boolean("killstealQ", "Use " .. Spells.Q.name .. " (Q)", true)
  2200. Menu.killsteal:Boolean("killstealE", "Use " .. Spells.E.name .. " (E)", true)
  2201. Menu.killsteal:Boolean("killstealR", "Use " .. Spells.R.name .. " (R)", true)
  2202. Menu.killsteal:Section("killstealSection2", "Enemies")
  2203. Menu.killsteal:Menu("enemies", "Perform KillSteal On")
  2204. for i, hero in ipairs(EnemyTable) do
  2205. Menu.killsteal.enemies:Boolean(hero.charName, hero.charName, true)
  2206. end
  2207.  
  2208. -- Misc
  2209. Menu:Menu("misc", name .. "Misc")
  2210. Menu.misc:Menu("antigapcloser", "Anti-GapCloser")
  2211. Menu.misc:Separator()
  2212. Menu.misc:Menu("interrupter", "Interrupter")
  2213. Menu.misc:Separator()
  2214. Interrupter(Menu.misc.interrupter, function(unit) self:Interrupter(unit) end)
  2215. Gapcloser(Menu.misc.antigapcloser, function(unit) self:Gapcloser(unit) end)
  2216. end
  2217.  
  2218. function Lux:Interrupter(unit)
  2219. self.Q:Cast(unit)
  2220. end
  2221.  
  2222. function Lux:Gapcloser(unit)
  2223. self.Q:Cast(unit)
  2224. end
  2225.  
  2226.  
  2227.  
  2228.  
  2229. --[[
  2230.  
  2231. Script details:
  2232. Series: Sexy Series AIO
  2233. Champion: Morgana
  2234. Author: Sexy SmTRed
  2235. Designed for: Cloudrop
  2236. Current version: 0.1
  2237.  
  2238.  
  2239. Changelog:
  2240. 0.1
  2241. Started coding
  2242. --]]
  2243.  
  2244. function Morgana:__init()
  2245. Spells = {
  2246. ["Q"] = {name = "Dark Binding", range = 1175, speed = 1200},
  2247. ["W"] = {name = "Tormented Soil", range = 900, speed = math.huge, radius = 175, delay = 0, collision = false},
  2248. ["E"] = {name = "Black Shield", range = 750},
  2249. ["R"] = {name = "Soul Shackles", range = 600, radius = 1050}
  2250. }
  2251.  
  2252. -- Drawing Morgana Menu
  2253. self:ExtraMenu()
  2254.  
  2255. -- Menu
  2256. self.ultMode = 1
  2257.  
  2258. -- Initializing Spells
  2259. self.Q = Spell(_Q, Spells.Q.range)
  2260. --self.Q:SetSkillShot(Spells.Q.delay, Spells.Q.radius, Spells.Q.speed, true, "line")
  2261. self.W = Spell(_W, Spells.W.range)
  2262. self.E = Spell(_E, Spells.E.range)
  2263. self.R = Spell(_R, Spells.R.range)
  2264.  
  2265. ts = TargetSelector("LESS_AP", Spells.Q.range, Menu)
  2266.  
  2267. -- Regular Callback binds
  2268. Callback.Bind("Tick", function() self:OnTick() end)
  2269. Callback.Bind("Draw", function() self:OnDraw() end)
  2270. end
  2271.  
  2272. function Morgana:OnTick()
  2273. self:CalcDamageCalculations()
  2274. if Menu.killsteal.killsteal:Value() == true then
  2275. self:KillSteal()
  2276. end
  2277. end
  2278.  
  2279. function Morgana:Combo()
  2280. if myHero.dead then return end
  2281. if target ~= nil and ValidTarget(target) then
  2282. if Menu.combo.comboQ:Value() == true then
  2283. self.Q:Cast(target)
  2284. end
  2285.  
  2286. if Menu.combo.comboE:Value() == true then
  2287. self.E:Cast(target)
  2288. end
  2289.  
  2290. if Menu.combo.comboR:Value() == true and self:UltManagement(target) then
  2291. self.R:Cast()
  2292. end
  2293. end
  2294. end
  2295.  
  2296. function Morgana:Harass()
  2297. if myHero.dead then return end
  2298. if target ~= nil and ValidTarget(target) then
  2299. if Menu.harass.harassQ:Value() == true then
  2300. self.Q:Cast(target)
  2301. end
  2302. if Menu.harass.harassW:Value() == true then
  2303. self.W:Cast(target)
  2304. end
  2305. end
  2306. end
  2307.  
  2308. function Morgana:OnDraw()
  2309. if myHero.dead then return end
  2310. if Menu.draw.drawKilltext:Value() == true then
  2311. for i, enemy in ipairs(EnemyTable) do
  2312. if ValidTarget(enemy) then
  2313. local barPos = Graphics.WorldToScreen(Geometry.Vector3(enemy.x, enemy.y, enemy.z))
  2314. local PosX = barPos.x - 35
  2315. local PosY = barPos.y - 50
  2316. Graphics.DrawText(KillText[i], 10, PosX, PosY, Graphics.ARGB(255,255,204,0))
  2317. end
  2318. end
  2319. end
  2320. end
  2321.  
  2322.  
  2323. function Morgana:CalcDamageCalculations()
  2324. for i, enemy in ipairs(EnemyTable) do
  2325. if ValidTarget(enemy) then
  2326. KillText[i] = self:CalculatePreciseDamageText(enemy)
  2327. end
  2328. end
  2329. end
  2330.  
  2331. function Morgana:CalculatePreciseDamageText(target)
  2332. local Qdmg = ((Menu.killsteal.killstealQ:Value() and self.Q:CanCast() and CalculateAPDamage("Q", 25, 55, 0.9, target)) or 0)
  2333. local WdmgN = ((self.W:CanCast() and CalculateAPDamage("W", 15, 45, 0.6, target)) or 0)
  2334. local Rdmg = ((Menu.killsteal.killstealR:Value() and self.R:CanCast() and CalculateAPDamage("R", 75, 75, 0.7, target)) or 0)
  2335. local Rdmg2 = ((Menu.killsteal.killstealR:Value() and CalculateAPDamage("R", 150, 150, 1.40, target)))
  2336.  
  2337. for i = 1, 5, 1 do
  2338.  
  2339. local Wdmg = WdmgN * i
  2340.  
  2341. if Wdmg > target.health then
  2342. return " W(" .. i .. "s) "
  2343. end
  2344.  
  2345. if Wdmg > Qdmg then
  2346. if Qdmg > target.health then
  2347. return " Q "
  2348. end
  2349. end
  2350.  
  2351. if Qdmg > target.health then
  2352. return " Q "
  2353. end
  2354.  
  2355. if (Wdmg + Qdmg) > target.health then
  2356. return " Q + W(" .. i .. "s) "
  2357. end
  2358.  
  2359. if Rdmg > target.health then
  2360. return " R "
  2361. end
  2362.  
  2363. if Rdmg + Wdmg > target.health then
  2364. if Wdmg > Qdmg and Rdmg + Qdmg > target.health then
  2365. return " Q + R "
  2366. end
  2367. return " R + W(" .. i .. "s) "
  2368. end
  2369.  
  2370. if Rdmg2 + Wdmg > target.health then
  2371. if Wdmg > Qdmg and Rdmg2 + Qdmg > target.health then
  2372. return " Q + R Full "
  2373. end
  2374. return " R Full + W(" .. i .. "s) "
  2375. end
  2376.  
  2377. if Rdmg2 + Wdmg + Qdmg > target.health then
  2378. return " Q + W(" .. i .. "s) + R Full "
  2379. end
  2380. end
  2381.  
  2382. return " Harass Him "
  2383. end
  2384.  
  2385. function Morgana:KillSteal()
  2386. for i, enemy in ipairs(EnemyTable) do
  2387. if ValidTarget(enemy) and Menu.killsteal.enemies[enemy.charName] then
  2388. local Qdmg = ((Menu.killsteal.killstealQ:Value() and self.Q:CanCast() and CalculateAPDamage("Q", 25, 55, 0.9, enemy)) or 0)
  2389. local Rdmg = ((Menu.killsteal.killstealR:Value() and self.R:CanCast() and CalculateAPDamage("R", 75, 75, 0.7, enemy)) or 0)
  2390. if Qdmg > enemy.health then
  2391. self.Q:Cast(enemy)
  2392. elseif Rdmg > enemy.health then
  2393. self.R:Cast(enemy)
  2394. end
  2395. end
  2396. end
  2397. end
  2398.  
  2399. function Morgana:UltManagement(target)
  2400. return (self.ultMode == 1) or (self.ultMode == 2 and target.health < CalculateAPDamage("R", 75, 75, 0.7, target)) or (self.ultMode == 3 and CountEnemies(Spells.R.range) >= Menu.combo.ult.hitX:Value())
  2401. end
  2402.  
  2403. function Morgana:ExtraMenu()
  2404. -- Combo
  2405. Menu.combo:Boolean("comboQ", "Use " .. Spells.Q.name .. " (Q)", true)
  2406. Menu.combo:Boolean("comboE", "Use " .. Spells.E.name .. " (E)", true)
  2407. Menu.combo:Boolean("comboR", "Use " .. Spells.R.name .. " (R)", true)
  2408. Menu.combo:Separator()
  2409. Menu.combo:Menu("ult", "Ult Settings")
  2410. Menu.combo.ult:DropDown("ultMode", "Selected Mode", 1, {"Instant", "KillAble", "Hit X"}, function (newvalue) self.ultMode = newvalue end)
  2411. Menu.combo.ult:Slider("hitX", "Hit X", 1, 1, #EnemyTable, 1)
  2412.  
  2413. -- Harass
  2414. Menu.harass:Boolean("harassQ", "Use " .. Spells.Q.name .. " (Q)", true)
  2415. Menu.harass:Boolean("harassE", "Use " .. Spells.E.name .. " (E)", true)
  2416.  
  2417.  
  2418. --Farming
  2419. Menu.farm:Boolean("farmQ", "Use " .. Spells.Q.name .. " (Q)", true)
  2420. Menu.farm:Boolean("farmE", "Use " .. Spells.E.name .. " (E)", true)
  2421.  
  2422. -- Laneclear
  2423. Menu.laneclear:Boolean("laneclearE", "Use " .. Spells.E.name .. " (E)", true)
  2424.  
  2425. --Drawings
  2426. Menu.draw:Boolean("drawKilltext", "Draw KillText", false)
  2427. Menu.draw:Separator()
  2428.  
  2429. --Specific KillSteal Settings
  2430. Menu.killsteal:Boolean("killstealQ", "Use " .. Spells.Q.name .. " (Q)", true)
  2431. Menu.killsteal:Boolean("killstealR", "Use " .. Spells.R.name .. " (R)", true)
  2432. Menu.killsteal:Section("killstealSection2", DrawFont("Enemies"))
  2433. Menu.killsteal:Menu("enemies", "Perform KillSteal On")
  2434. for i, hero in ipairs(EnemyTable) do
  2435. Menu.killsteal.enemies:Boolean(hero.charName, hero.charName, true)
  2436. end
  2437.  
  2438. -- Misc
  2439. Menu:Menu("misc", name .. "Misc")
  2440. Menu.misc:Menu("antigapcloser", "Anti-GapCloser")
  2441. Menu.misc:Separator()
  2442. Menu.misc:Menu("interrupter", "Interrupter")
  2443. Menu.misc:Separator()
  2444. Interrupter(Menu.misc.interrupter, function(unit) self:Interrupter(unit) end)
  2445. Gapcloser(Menu.misc.antigapcloser, function(unit) self:Gapcloser(unit) end)
  2446. end
  2447.  
  2448. function Morgana:Interrupter(unit)
  2449. self.Q:Cast(unit)
  2450. end
  2451.  
  2452. function Morgana:Gapcloser(unit)
  2453. self.Q:Cast(unit)
  2454. end
  2455.  
  2456.  
  2457.  
  2458.  
  2459. --[[
  2460.  
  2461. Script details:
  2462. Series: Sexy Series AIO
  2463. Champion: Katarina
  2464. Author: Sexy SmTRed
  2465. Designed for: Cloudrop
  2466. Current version: 0.1
  2467.  
  2468.  
  2469. Changelog:
  2470. 0.1
  2471. Started coding
  2472. --]]
  2473.  
  2474. function Katarina:__init()
  2475. Spells = {
  2476. ["Q"] = {name = "Bouncing Blades", range = 675},
  2477. ["W"] = {name = "Sinister Steel", range = 375},
  2478. ["E"] = {name = "Shunpo", range = 700},
  2479. ["R"] = {name = "Death Lotus", range = 550}
  2480. }
  2481.  
  2482. self.Q = Spell(_Q, Spells.Q.range)
  2483. self.W = Spell(_W, Spells.W.range)
  2484. self.E = Spell(_E, Spells.E.range)
  2485. self.R = Spell(_R, Spells.R.range)
  2486.  
  2487. -- Drawing Menu
  2488. self:ExtraMenu()
  2489.  
  2490. -- TargetSelector
  2491. ts = TargetSelector("LESS_AP", Spells.Q.range, Menu)
  2492.  
  2493. -- Callbacks
  2494. Callback.Bind("Tick", function() self:OnTick() end)
  2495. Callback.Bind("Animation", function(anim) self:OnAnimation(anim) end)
  2496. --Callback.Bind("Draw", function() self:OnDraw() end)
  2497. end
  2498.  
  2499. function Katarina:OnAnimation(anim)
  2500. printChat(anim.name)
  2501. end
  2502.  
  2503. function Katarina:OnDraw()
  2504. if myHero.dead then return end
  2505. if Menu.draw.drawKilltext:Value() == true then
  2506. for i, enemy in ipairs(EnemyTable) do
  2507. if ValidTarget(enemy) then
  2508. local barPos = Graphics.WorldToScreen(Geometry.Vector3(enemy.x, enemy.y, enemy.z))
  2509. local PosX = barPos.x - 35
  2510. local PosY = barPos.y - 50
  2511. Graphics.DrawText(KillText[i], 10, PosX, PosY, Graphics.ARGB(255,255,204,0))
  2512. end
  2513. end
  2514. end
  2515. end
  2516.  
  2517. function Katarina:OnTick()
  2518. if myHero.dead then return end
  2519. if Menu.killsteal.killsteal:Value() == true then
  2520. self:KillSteal()
  2521. end
  2522.  
  2523. end
  2524.  
  2525. function Katarina:Combo()
  2526. if myHero.dead then return end
  2527. if target ~= nil then
  2528. if Menu.combo.comboQ:Value() == true then
  2529. self.Q:Cast(target)
  2530. end
  2531. if Menu.combo.comboW:Value() == true then
  2532. if myHero:DistanceTo(target) <= Spells.W.range then
  2533. self.W:Cast()
  2534. end
  2535. end
  2536. if Menu.combo.comboE:Value() == true then
  2537. self.E:Cast(target)
  2538. end
  2539. if Menu.combo.comboR:Value() == true then
  2540. self.R:Cast()
  2541. end
  2542. end
  2543. end
  2544.  
  2545. function Katarina:Harass()
  2546. if myHero.dead then return end
  2547. if target ~= nil then
  2548. if Menu.harass.harassQ:Value() == true then
  2549. self.Q:Cast(target)
  2550. end
  2551. if Menu.harass.harassW:Value() == true then
  2552. self.W:Cast(target)
  2553. end
  2554. if Menu.harass.harassE:Value() == true then
  2555. self.E:Cast(target)
  2556. end
  2557. end
  2558. end
  2559.  
  2560. function Katarina:KillSteal()
  2561. for i, enemy in ipairs(EnemyTable) do
  2562. if ValidTarget(enemy) then
  2563. local Qdmg = CalculateAPDamage("Q", 25, 55, 1, enemy)
  2564. local Rdmg = CalculateAPDamage("R", 125, 125, 1, enemy)
  2565. if Qdmg > enemy.health then
  2566. self.Q:Cast(enemy)
  2567. elseif Rdmg > enemy.health and myHero:DistanceTo(enemy) <= Spells.R.range then
  2568. self.R:Cast()
  2569. end
  2570. end
  2571. end
  2572. end
  2573.  
  2574. function Katarina:ExtraMenu()
  2575. -- Combo
  2576. Menu.combo:Section("comboSpellSection", DrawFont("Spell Settings"))
  2577. Menu.combo:Boolean("comboQ", "Use " .. Spells.Q.name .. " (Q)", true)
  2578. Menu.combo:Boolean("comboW", "Use " .. Spells.W.name .. " (W)", true)
  2579. Menu.combo:Boolean("comboE", "Use " .. Spells.E.name .. " (E)", true)
  2580. Menu.combo:Boolean("comboR", "Use " .. Spells.R.name .. " (R)", true)
  2581.  
  2582. -- Harass
  2583. Menu.harass:Boolean("harassQ", "Use " .. Spells.Q.name .. " (Q)", true)
  2584. Menu.harass:Boolean("harassW", "Use " .. Spells.W.name .. " (W)", true)
  2585. Menu.harass:Boolean("harassE", "Use " .. Spells.E.name .. " (E)", true)
  2586.  
  2587. -- Laneclear
  2588. Menu.laneclear:Boolean("laneclearW", "Use " .. Spells.W.name .. " (W)", true)
  2589. Menu.laneclear:Boolean("laneclearR", "Use " .. Spells.R.name .. " (R)", true)
  2590.  
  2591. -- KillSteal settings
  2592. Menu.killsteal:Boolean("killstealQ", "Use " .. Spells.Q.name .. " (Q)", true)
  2593. Menu.killsteal:Boolean("killstealW", "Use " .. Spells.W.name .. " (W)", true)
  2594. Menu.killsteal:Boolean("killstealQ", "Use " .. Spells.Q.name .. " (Q)", true)
  2595.  
  2596. -- Misc
  2597. Menu:Menu("misc", name .. "Misc")
  2598. end
  2599.  
  2600.  
  2601.  
  2602.  
  2603.  
  2604.  
  2605.  
  2606.  
  2607.  
  2608.  
  2609.  
  2610.  
  2611.  
  2612.  
  2613.  
  2614.  
  2615.  
  2616.  
  2617.  
  2618.  
  2619.  
  2620.  
  2621.  
  2622.  
  2623.  
  2624.  
  2625.  
  2626.  
  2627.  
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646. class 'TargetSelector'
  2647.  
  2648. TargetSelector_Modes = {"LESS_HP", "LESS_AD", "LESS_AP", "MOST_DAMAGE", "PRIORITY"}
  2649. function TargetSelector:__init(mode, range, menu)
  2650. self.mode = mode
  2651. self.range = range
  2652. if menu then
  2653. self:LoadToMenu(menu)
  2654. self.mode = self.menu.mode:Value()
  2655. end
  2656. self.selected = nil
  2657. Callback.Bind("WndMsg", function(msg, key) self:OnWndMsg(msg, key) end)
  2658. end
  2659.  
  2660. function TargetSelector:OnWndMsg(msg, key)
  2661. if msg == WM_LBUTTONDOWN then
  2662. local selected = nil
  2663. for i = 1, Game.HeroCount(), 1 do
  2664. local hero = Game.Hero(i)
  2665. if ValidTarget(hero) then
  2666. selected = hero
  2667. if selected ~= nil and myHero:DistanceTo(selected) <= self.range then
  2668. self.selected = selected
  2669. break
  2670. end
  2671. end
  2672. end
  2673. end
  2674. end
  2675.  
  2676. function TargetSelector:GetTarget(range)
  2677. self.mode = self.menu.mode:Value()
  2678. local range = range and range or self.range
  2679. local target = nil
  2680. if self.selected and self.selected.type == myHero.type and myHero:DistanceTo(self.selected) <= self.range and self.selected.visible then return self.selected end
  2681.  
  2682. if self.mode == 1 then
  2683. target = self:Mode1(range)
  2684. elseif self.mode == 2 then
  2685. target = self:Mode2(range)
  2686. elseif self.mode == 3 then
  2687. target = self:Mode3(range)
  2688. elseif self.mode == 4 then
  2689. target = self:Mode4(range)
  2690. elseif self.mode == 5 then
  2691. target = self:Mode5(range)
  2692. end
  2693.  
  2694. return target
  2695. end
  2696.  
  2697. function TargetSelector:Mode1(range)
  2698. local target = nil
  2699. for i = 1, Game.HeroCount() do
  2700. local hero = Game.Hero(i)
  2701. if ValidTarget(hero) and myHero:DistanceTo(hero) < range then
  2702. if target == nil then
  2703. target = hero
  2704. end
  2705. -- LESS_HP
  2706. if target.health > hero.health then
  2707. target = hero
  2708. end
  2709. end
  2710. end
  2711. return target
  2712. end
  2713.  
  2714. function TargetSelector:Mode2(range)
  2715. local target = nil
  2716. for i = 1, Game.HeroCount() do
  2717. local hero = Game.Hero(i)
  2718. if ValidTarget(hero) and myHero:DistanceTo(hero) < range then
  2719. if target == nil then
  2720. target = hero
  2721. end
  2722. -- LESS_AD
  2723. if target.ad > hero.ad then
  2724. target = hero
  2725. end
  2726. end
  2727. end
  2728. return target
  2729. end
  2730. function TargetSelector:Mode3(range)
  2731. local target = nil
  2732. for i = 1, Game.HeroCount() do
  2733. local hero = Game.Hero(i)
  2734. if ValidTarget(hero) and myHero:DistanceTo(hero) < range then
  2735. if target == nil then
  2736. target = hero
  2737. end
  2738. -- LESS_AP
  2739. if target.ap > hero.ap then
  2740. target = hero
  2741. end
  2742. end
  2743. end
  2744. return target
  2745. end
  2746. function TargetSelector:Mode4(range)
  2747. local target = nil
  2748. for i = 1, Game.HeroCount() do
  2749. local hero = Game.Hero(i)
  2750. if ValidTarget(hero) and myHero:DistanceTo(hero) < range then
  2751. if target == nil then
  2752. target = hero
  2753. end
  2754. -- MOST DAMAGE
  2755. if myHero:CalcDamage(target) > myHero:CalcDamage(hero) then
  2756. target = hero
  2757. end
  2758. end
  2759. end
  2760. return target
  2761. end
  2762. function TargetSelector:Mode5(range)
  2763. local target = nil
  2764. for i = 1, Game.HeroCount() do
  2765. local hero = Game.Hero(i)
  2766. if ValidTarget(hero) and myHero:DistanceTo(hero) < range then
  2767. if target == nil then
  2768. target = hero
  2769. end
  2770. -- PRIORITY
  2771. if self.mode == 5 then
  2772. if self.menu.prioritysettings[hero.charName]:Value() < self.menu.prioritysettings[target.charName]:Value() then
  2773. target = hero
  2774. end
  2775. end
  2776. end
  2777. end
  2778. return target
  2779. end
  2780.  
  2781. function TargetSelector:LoadToMenu(menu)
  2782. self.menu = menu
  2783. self.menu:Section("targetselectorsection", DrawFont("Target Selector"))
  2784. if self.mode == "LESS_HP" then
  2785. self.menu:DropDown("mode", "Mode: ", 1, {"LESS_HP", "LESS_AD", "LESS_AP", "MOST_DAMAGE", "PRIORITY"})
  2786. elseif self.mode == "LESS_AD" then
  2787. self.menu:DropDown("mode", "Mode: ", 2, {"LESS_HP", "LESS_AD", "LESS_AP", "MOST_DAMAGE", "PRIORITY"})
  2788. elseif self.mode == "LESS_AP" then
  2789. self.menu:DropDown("mode", "Mode: ", 3, {"LESS_HP", "LESS_AD", "LESS_AP", "MOST_DAMAGE", "PRIORITY"})
  2790. elseif self.mode == "MOST_DAMAGE" then
  2791. self.menu:DropDown("mode", "Mode: ", 4, {"LESS_HP", "LESS_AD", "LESS_AP", "MOST_DAMAGE", "PRIORITY"})
  2792. end
  2793. self.menu:Menu("prioritysettings", "Priority Settings")
  2794. for i, hero in ipairs(EnemyTable) do
  2795. self.menu.prioritysettings:Slider(hero.charName, hero.charName, 1, 1, 5, 0)
  2796. end
  2797. end
  2798.  
  2799.  
  2800. function TargetSelector:Mode(mode)
  2801. if not mode then return self.mode end
  2802. self.mode = mode
  2803. end
  2804.  
  2805.  
  2806.  
  2807.  
  2808.  
  2809.  
  2810.  
  2811. --[[
  2812. SpellHandler, because writing class:CastSkill is getting stupid to do for every champion on its own while the principes for every spell is basically the same
  2813. --]]
  2814.  
  2815. class 'Spell'
  2816. function Spell:__init(slot, range)
  2817. self.range = range and range or 0
  2818. self.slot = slot
  2819. self.skillShot = false
  2820. end
  2821. --Enabling Prediction and prediction values
  2822. function Spell:SetSkillShot(delay, width, speed, collision, type)
  2823. self.delay = delay
  2824. self.width = width
  2825. self.speed = speed
  2826. self.collision = collision
  2827. self.type = type
  2828. self.skillShot = true
  2829. --BasicPrediction.EnablePrediction()
  2830. end
  2831. -- Checking whether the target is in spell range
  2832. function Spell:InRange(target)
  2833. return myHero:DistanceTo(target) <= self.range
  2834. end
  2835. -- Checking whether the spell can be casted
  2836. function Spell:CanCast()
  2837. return myHero:CanUseSpell(self.slot) == READY
  2838. end
  2839. -- Not sure if I will ever need this
  2840. function Spell:AdjustRange(range)
  2841. self.range = range
  2842. end
  2843. -- Param1 = target
  2844. -- Param2 = possible X value
  2845. -- Param3 = possible Z value
  2846. function Spell:Cast(param1, param2, param3)
  2847. if self.skillShot then
  2848. if param1 then
  2849. if self:InRange(param1) and self:CanCast() then
  2850. if self.type == "aoe" then
  2851. local castPos, enemies, amount = BasicPrediction.GetBestAoEPositionForce(param1, self.range, self.speed, self.delay, self.width, self.collision, self.collision, myHero)
  2852. if type(castPos) == "Vector3" and HitChance > 0 then
  2853. myHero:CastSpell(self.slot, castPos.x, castPos.z)
  2854. return true
  2855. end
  2856. elseif self.type == "normal" then
  2857. local castPos, hitchance = BasicPrediction.GetPredictedPosition(param1, self.range, self.speed, self.delay, self.width, self.collision, self.collision, myHero)
  2858. if type(castPos) == "Vector3" and hitchance > 0 then
  2859. myHero:CastSpell(self.slot, castPos.x, castPos.z)
  2860. return true
  2861. end
  2862. elseif self.type == "" then
  2863. end
  2864. end
  2865. else
  2866. if self:CanCast() then
  2867. myHero:CastSpell(self.slot)
  2868. end
  2869. end
  2870. else
  2871. if param1 and param2 and param3 then
  2872. if self:InRange(param1) and self:CanCast() then
  2873. myHero:CastSpell(self.slot, param2, param3)
  2874. return true
  2875. end
  2876. elseif param1 then
  2877. if self:InRange(param1) and self:CanCast() then
  2878. myHero:CastSpell(self.slot, param1)
  2879. return true
  2880. end
  2881. else
  2882. if self:CanCast() and self:CanCast() then
  2883. myHero:CastSpell(self.slot)
  2884. return true
  2885. end
  2886. end
  2887. end
  2888. return false
  2889. end
  2890.  
  2891.  
  2892. class 'Interrupter'
  2893. function Interrupter:__init(menu, cb)
  2894. self.interrupt = {
  2895. ["KatarinaR"] = { charName = "Katarina", duration = 2.5, spell = "R"},
  2896. ["Meditate"] = { charName = "MasterYi", duration = 2.5, spell = "W"},
  2897. ["Drain"] = { charName = "FiddleSticks", duration = 2.5, spell = "W"},
  2898. ["Crowstorm"] = { charName = "FiddleSticks", duration = 2.5, spell = "R"},
  2899. ["GalioIdolOfDurand"] = { charName = "Galio", duration = 2.5, spell = "R"},
  2900. ["MissFortuneBulletTime"] = { charName = "MissFortune", duration = 2.5, spell = "R"},
  2901. ["VelkozR"] = { charName = "Velkoz", duration = 2.5, spell = "R"},
  2902. ["InfiniteDuress"] = { charName = "Warwick", duration = 2.5, spell = "R"},
  2903. ["AbsoluteZero"] = { charName = "Nunu", duration = 2.5, spell = "R"},
  2904. ["ShenStandUnited"] = { charName = "Shen", duration = 2.5, spell = "R"},
  2905. ["FallenOne"] = { charName = "Karthus", duration = 2.5, spell = "R"},
  2906. ["AlZaharNetherGrasp"] = { charName = "Malzahar", duration = 2.5, spell = "R"},
  2907. ["Pantheon_GrandSkyfall_Jump"] = { charName = "Pantheon", duration = 2.5, spell = "R"},
  2908. ["AceInTheHole"] = { charName = "Caitlyn", duration = 1.0, spell = "R"}
  2909. }
  2910.  
  2911. self.ActiveSpells = {}
  2912. self.callbacks = {}
  2913. self.Heroes = {}
  2914.  
  2915. self:ApplyToMenu(menu)
  2916.  
  2917. if cb then
  2918. table.insert(self.callbacks, cb)
  2919. end
  2920.  
  2921. Callback.Bind("Tick", function() self:OnTick() end)
  2922. Callback.Bind("ProcessSpell", function(unit, spell) self:OnProcessSpell(unit, spell) end)
  2923.  
  2924. end
  2925.  
  2926. function Interrupter:ApplyToMenu(MenuInt)
  2927. local hasAdded = false
  2928.  
  2929. MenuInt:Section("h85", DrawFont("Activation"))
  2930. MenuInt:Boolean("interrupter", "Interrupt Spells", false)
  2931. MenuInt:Section("h86", DrawFont("Spells To Interrupt"))
  2932. for i = 1, Game.HeroCount(), 1 do
  2933. local hero = Game.Hero(i)
  2934. if hero.team ~= myHero.team then
  2935. table.insert(self.Heroes, hero.charName)
  2936. end
  2937. end
  2938. for spell, data in pairs(self.interrupt) do
  2939. if table.contains(self.Heroes, data.charName) then
  2940. MenuInt:Boolean(spell, spell .. " " .. data.charName .. " (" .. data.spell .. ")", true)
  2941. hasAdded = true
  2942. end
  2943. end
  2944. if not hasAdded then
  2945. MenuInt:Info("info", "No spells found to interrupt")
  2946. end
  2947.  
  2948. self.menu = MenuInt
  2949. end
  2950.  
  2951. function Interrupter:Callback(unit)
  2952. for i, cb in ipairs(self.callbacks) do
  2953. cb(unit)
  2954. end
  2955. end
  2956.  
  2957. function Interrupter:OnProcessSpell(unit, spell)
  2958. if self.menu.interrupter:Value() == true then
  2959. if self.menu and self.menu[spell.name] and unit.team ~= myHero.team then
  2960. local data = {unit = unit, endTime = os.clock + self.interrupt[spell.name].duration}
  2961. table.insert(self.activeSpells, data)
  2962. end
  2963. end
  2964. end
  2965.  
  2966. function Interrupter:OnTick()
  2967. if self.activeSpells == nil or #self.activeSpells == 0 then return end
  2968. for i = 1, #self.activeSpells, 1 do
  2969. if self.activeSpells[i].endTime > os.clock then
  2970. self:Callback(self.activeSpells[i].unit)
  2971. else
  2972. table.remove(self.activeSpells, i)
  2973. end
  2974. end
  2975. end
  2976.  
  2977.  
  2978. class 'Gapcloser'
  2979. function Gapcloser:__init(menu, cb)
  2980. self.GapcloserSpells = {
  2981. ["aatroxq"] = {charName = "Aatrox", spell = "Q"},
  2982. ["akalishadowdance"] = {charName = "Akali", spell = "R"},
  2983. ["headbutt"] = {charName = "Alistar", spell = "W"},
  2984. ["fioraq"] = {charName = "Fiora", spell = "Q"},
  2985. ["dianateleport"] = {charName = "Diana", spell = "R"},
  2986. ["elisespiderqcast"] = {charName = "Elise", spell = "Q"},
  2987. ["fizzpiercingstrike"] = {charName = "Fizz", spell = "Q"},
  2988. ["gragase"] = {charName = "Gragas", spell = "E"},
  2989. ["hecarimult"] = {charName = "Hecarim", spell = "R"},
  2990. ["jarvanivdragonstrike"] = {charName = "JarvanIV", spell = "Q"},
  2991. ["ireliagatotsu"] = {charName = "Irelia", spell = "Q"},
  2992. ["jaxleapstrike"] = {charName = "Jax", spell = "Q"},
  2993. ["shazixe"] = {charName = "Khazix", spell = "E"},
  2994. ["khazixelong"] = {charName = "Khazix", spell = "E"},
  2995. ["leblancslide"] = {charName = "LeBlanc", spell = "W"},
  2996. ["leblancslidem"] = {charName = "LeBlanc", spell = "R"},
  2997. ["blindmonkqtwo"] = {charName = "LeeSin", spell = "Q"},
  2998. ["leonazenithblade"] = {charName = "Leona", spell = "E"},
  2999. ["ufslash"] = {charName = "Malphite", spell = "R"},
  3000. ["pantheon_leapbash"] = {charName = "Pantheon", spell = ""},
  3001. ["poppyheroiccharge"] = {charName = "Poppy", spell = "E"},
  3002. ["renektonsliceanddice"] = {charName = "Renekton", spelll = "E"},
  3003. ["riventricleave"] = {charName = "Riven", spell = "Q"},
  3004. ["sejuaniarcticassault"] = {charName = "Sejuani", spell = "Q"},
  3005. ["slashcast"] = {charName = "Tryndamere", spell = "E"},
  3006. ["viq"] = {charName = "Vi", spell = "Q"},
  3007. ["monkeykingnimbus"] = {charName = "MonkeyKing", spell = "Q"},
  3008. ["xenzhaosweep"] = {charName = "XinZhao", spell = "E"},
  3009. ["yasuodashwrapper"] = {charName = "Yasuo", spell = "E"},
  3010. ["ahritumble"] = {charName = "Ahri", spell = "R"},
  3011. ["caitlynentrapment"] = {charName = "Caitlyn", spell = "E"},
  3012. ["carpetbomb"] = {charName = "Corki", spell = "W"},
  3013. ["gravesmove"] = {charName = "Graves", spell = "E"},
  3014. ["blindmonkwone"] = {charName = "Lee Sin", spell = "W"},
  3015. ["luciane"] = {charName = "Lucian", spell = "E"},
  3016. ["maokaiunstablegrowth"] = {charName = "Maokai", spell = "W"},
  3017. ["nocturneparanoia2"] = {charName = "Nocturne", spell = "R"},
  3018. ["rivenfeint"] = {charName = "Riven", spell = "E"},
  3019. ["shenshadowdash"] = {charName = "Shen", spell = "E"},
  3020. ["shyvanatransformcast"] = {charName = "Shyvana", spell = "R"},
  3021. ["rocketjump"] = {charName = "Tristana", spell = "W"},
  3022. ["vaynetumble"] = {charName = "Vayne", spell = "Q"}
  3023. }
  3024. if menu then
  3025. self:ApplyToMenu(menu)
  3026. end
  3027.  
  3028. self.callbacks = {}
  3029.  
  3030. if cb then
  3031. table.insert(self.callbacks, cb)
  3032. end
  3033.  
  3034. Callback.Bind("ProcessSpell", function(unit, spell) self:OnProcessSpell(unit, spell) end)
  3035. end
  3036.  
  3037. function Gapcloser:ApplyToMenu(MenuGap)
  3038. local hasAdded = false
  3039.  
  3040. MenuGap:Boolean("gapcloser", "GapCloser", false)
  3041. for spell, data in pairs(self.GapcloserSpells) do
  3042. if table.contains(EnemyTable, data.charName) then
  3043. MenuGap:Boolean(spell, data.charName .. " - " .. data.spell, false)
  3044. hasAdded = true
  3045. end
  3046. end
  3047. if not hasAdded then
  3048. MenuGap:Info("hue", "No Spells To GapClose")
  3049. end
  3050. self.Menu = MenuGap
  3051. end
  3052.  
  3053. function Gapcloser:Callback(unit)
  3054. for i, cb in ipairs(self.callbacks) do
  3055. cb(unit)
  3056. end
  3057. end
  3058.  
  3059.  
  3060. function Gapcloser:OnProcessSpell(unit, spell)
  3061. if self.Menu.gapcloser then
  3062. local spellname = spell.name:lower()
  3063. if self.Menu and self.Menu[spellname] and unit.team ~= myHero.team then
  3064. if myHero:DistanceTo(unit) > myHero:DistanceTo(spell.endPos) then
  3065. self:Callback(unit)
  3066. end
  3067. end
  3068. end
  3069. end
  3070.  
  3071.  
  3072. --[[
  3073. Useful functions written in the script to avoid writing them each class
  3074. Not all functions are used every class, it's just easier to have them written somewhere once and then use it
  3075. --]]
  3076.  
  3077.  
  3078. function UseItems(unit)
  3079. if unit ~= nil then
  3080. for _, item in pairs(Items) do
  3081. if item.reqTarget and myHero:DistanceTo(unit) < item.range then
  3082. CastItem(item.id, unit)
  3083. elseif not item.reqTarget then
  3084. if (myHero:DistanceTo(unit) - getHitBoxRadius(myHero) - getHitBoxRadius(unit)) < 50 then
  3085. CastItem(item.id)
  3086. end
  3087. end
  3088. end
  3089. end
  3090. end
  3091.  
  3092. function getHitBoxRadius(target)
  3093. return GetCustomDistance(target.minBBox, target.maxBBox)/2
  3094. end
  3095.  
  3096. function GetEnemyHeroes()
  3097. local enemies = {}
  3098. for i = 1, Game.HeroCount(), 1 do
  3099. local hero = Game.Hero(i)
  3100. if hero.team ~= myHero.team then
  3101. table.insert(enemies, hero)
  3102. end
  3103. end
  3104. return enemies
  3105. end
  3106.  
  3107. function GetCustomDistance(p1, p2)
  3108. p2 = p2 or myHero.visionPos
  3109. return math.sqrt((p1.x - p2.x) ^ 2 + ((p1.z or p1.y) - (p2.z or p2.y)) ^ 2)
  3110. end
  3111.  
  3112. function CountEnemies(range, object)
  3113. local object = object and object or myHero
  3114. local count = 0
  3115. for i = 1, Game.HeroCount() do
  3116. local hero = Game.Hero(i)
  3117. if ValidTarget(hero) then
  3118. if GetCustomDistance(object, hero) <= range then
  3119. count = count + 1
  3120. end
  3121. end
  3122. end
  3123. return count
  3124. end
  3125.  
  3126. function CountEnemiesWithinRadius(range, radius)
  3127. local normalCount = 0
  3128. local enemyCount = 0
  3129. local position = nil
  3130. for i, hero in ipairs(EnemyTable) do
  3131. if myHero:DistanceTo(hero) < range then
  3132. enemyCount = 1
  3133. for i, otherHero in ipairs(EnemyTable) do
  3134. if otherHero.team ~= myHero.team then
  3135. if hero:DistanceTo(otherHero) < radius then
  3136. enemyCount = enemyCount + 1
  3137. end
  3138. end
  3139. end
  3140. end
  3141. if enemyCount > normalCount then
  3142. normalCount = enemyCount
  3143. position = hero.pos
  3144. end
  3145. if enemyCount == 5 then
  3146. break
  3147. end
  3148. end
  3149. return position, normalCount
  3150. end
  3151.  
  3152. function CountAllies(range)
  3153. local range = range and range or myHero.range
  3154. local count = 0
  3155. for i = 1, Game.HeroCount(), 1 do
  3156. local hero = Game.Hero(i)
  3157. if hero.team == myHero.team then
  3158. if myHero:DistanceTo(hero) <= range then
  3159. count = count + 1
  3160. end
  3161. end
  3162. end
  3163. return count
  3164. end
  3165.  
  3166.  
  3167. function GetBestAOEPosition(objects, range, radius, source)
  3168. local pos = nil
  3169. local count2 = 0
  3170. local source = source or myHero
  3171. local range = (range and range) or myHero.range
  3172.  
  3173. for i, object in ipairs(objects) do
  3174. if GetCustomDistance(source, object) < range then
  3175. local count = 0
  3176. for i, ob in ipairs(objects) do
  3177. if GetCustomDistance(ob, object) <= radius * radius then
  3178. count = count + 1
  3179. end
  3180. end
  3181. if count > count2 then
  3182. count2 = count
  3183. pos = object.pos
  3184. end
  3185. end
  3186. end
  3187.  
  3188. return pos, count2
  3189. end
  3190.  
  3191. function CountMinions(objectTable, range)
  3192. local range = range and range or myHero.range
  3193. local count = 0
  3194. for i, object in ipairs(objectTable) do
  3195. if ValidTarget(object) and myHero:DistanceTo(object) <= range then
  3196. count = count + 1
  3197. end
  3198. end
  3199. return count
  3200. end
  3201.  
  3202.  
  3203.  
  3204. function GetItemSlot(id, unit)
  3205. local unit = unit or myHero
  3206. for i = 4, 10, 1 do
  3207. if unit:GetItem(i) and unit:GetItem(i).id == id then
  3208. return i
  3209. end
  3210. end
  3211. end
  3212.  
  3213. function CastItem(ItemID, var1, var2)
  3214. local slot = GetItemSlot(ItemID)
  3215. if slot == nil then return end
  3216. if (myHero:CanUseSpell(slot) == READY) then
  3217. if (var2 ~= nil) then
  3218. myHero:CastSpell(slot, var1, var2)
  3219. elseif (var1 ~= nil) then
  3220. myHero:CastSpell(slot, var1)
  3221. else
  3222. myHero:CastSpell(slot)
  3223. end
  3224. end
  3225. end
  3226.  
  3227. function ValidTarget(target)
  3228. return target ~= nil and target.team ~= myHero.team and not target.dead and target.type == myHero.type and target.visible and not TargetHaveBuff("UndyingRage") and not TargetHaveBuff("JudicatorIntervention")
  3229. end
  3230.  
  3231. function CalculateAPDamage(skill, base_damage, damage, APratio, target)
  3232. local dmg = 0
  3233. if skill == "Q" then
  3234. dmg = base_damage * myHero:GetSpellData(_Q).level + damage + APratio * myHero.ap
  3235. elseif skill == "W" then
  3236. dmg = base_damage * myHero:GetSpellData(_W).level + damage + APratio * myHero.ap
  3237. elseif skill == "E" then
  3238. dmg = base_damage * myHero:GetSpellData(_E).level + damage + APratio * myHero.ap
  3239. elseif skill == "R" then
  3240. dmg = base_damage * myHero:GetSpellData(_R).level + damage + APratio * myHero.ap
  3241. end
  3242. return myHero:CalcMagicDamage(target, dmg)
  3243. end
  3244.  
  3245. function InAARange(target)
  3246. return myHero:DistanceTo(target) <= myHero.range
  3247. end
  3248.  
  3249.  
  3250. function TargetHaveBuff(Buffname, unit)
  3251. local unit = unit and unit or myHero
  3252. local hasBuff = false
  3253. for i = 1, unit.buffCount, 1 do
  3254. local buff = unit:GetBuff(i)
  3255. if buff.name == Buffname then
  3256. hasBuff = true
  3257. break
  3258. end
  3259. end
  3260. return hasBuff
  3261. end
Advertisement
Add Comment
Please, Sign In to add comment