-- Change autoUpdate to false if you wish to not receive auto updates.
-- Change silentUpdate to true if you wish not to receive any message regarding updates
local autoUpdate = true
local silentUpdate = false
local version = 1.05
--[[
Ahri - by Ranked Fire
Features:
- Porno
]]
if myHero.charName ~= "Ahri" then return end
local scriptName = player.charName
--[[
.____ ._____. ________ .__ .___
| | |__\_ |__ \______ \ ______ _ ______ | | _________ __| _/___________
| | | || __ \ | | \ / _ \ \/ \/ / \| | / _ \__ \ / __ |/ __ \_ __ \
| |___| || \_\ \ | ` ( <_> ) / | \ |_( <_> ) __ \_/ /_/ \ ___/| | \/
|_______ \__||___ / /_______ /\____/ \/\_/|___| /____/\____(____ /\____ |\___ >__|
\/ \/ \/ \/ \/ \/ \/
]]
-- SourceLib auto download
local sourceLibFound = true
if FileExist(LIB_PATH .. "SourceLib.lua") then
require "SourceLib"
else
sourceLibFound = false
DownloadFile("https://bitbucket.org/TheRealSource/public/raw/master/common/SourceLib.lua", LIB_PATH .. "SourceLib.lua", function() print("" .. scriptName .. ": SourceLib downloaded! Please reload!") end)
end
-- Return if SourceLib has to be downloaded
if not sourceLibFound then return end
-- Updater
if autoUpdate then
LazyUpdater(scriptName, version, "fire-bol.de", "/scripts/Ahri.lua", SCRIPT_PATH .. GetCurrentEnv().FILE_NAME):SetSilent(silentUpdate):CheckUpdate()
end
-- Require other libraries
local libDownloader = Require(scriptName)
libDownloader:Add("VPrediction", "https://bitbucket.org/honda7/bol/raw/master/Common/VPrediction.lua")
libDownloader:Add("SOW", "https://bitbucket.org/honda7/bol/raw/master/Common/SOW.lua")
libDownloader:Check()
-- Return if libraries need to be downloaded
if libDownloader.downloadNeeded then return end
--[[
________.__ ___. .__
/ _____/| | ____\_ |__ _____ | | ______
/ \ ___| | / _ \| __ \\__ \ | | / ___/
\ \_\ \ |_( <_> ) \_\ \/ __ \| |__\___ \
\______ /____/\____/|___ (____ /____/____ >
\/ \/ \/ \/
]]
local VP = nil
local OW = nil
local STS = nil
local DLib = nil
local drawManager = nil
local menu = nil
local spells = {}
local circles = {}
local instantE = nil
local FullCombo = {_DFG, _AA, _E, _W, _Q, _IGNITE}
local SmartCombo = {_DFG, _AA, _Q, _W, _IGNITE}
local SmartCombo2 = {_DFG, _AA, _E, _Q, _IGNITE}
local SmartCombo3 = {_DFG, _AA, _E, _W, _IGNITE}
--[[
_________ __ __
\_ ___ \ ____ ____ _______/ |______ _____/ |_ ______
/ \ \/ / _ \ / \ / ___/\ __\__ \ / \ __\/ ___/
\ \___( <_> ) | \\___ \ | | / __ \| | \ | \___ \
\______ /\____/|___| /____ > |__| (____ /___| /__| /____ >
\/ \/ \/ \/ \/ \/
]]
local Q, W, E, R = _Q, _W, _E, _R
local CHARM_NAME = "AhriSeduce"
local MAX_RANGE = 975
local SPELL_DATA = { [_Q] = { skillshotType = SKILLSHOT_LINEAR, range = 880, delay = 0.25, width = 100, speed = 1100, collision = false },
[_W] = { skillshotType = nil, range = 800 },
[_E] = { skillshotType = SKILLSHOT_LINEAR, range = 975, delay = 0.25, width = 60, speed = 1200, collision = true },
[_R] = { skillshotType = nil, range = 450 } }
--[[
_________ .___
\_ ___ \ ____ __| _/____
/ \ \/ / _ \ / __ |/ __ \
\ \___( <_> ) /_/ \ ___/
\______ /\____/\____ |\___ >
\/ \/ \/
]]
function OnLoad()
-- Initialize classes
VP = VPrediction()
OW = SOW(VP)
STS = SimpleTS(STS_PRIORITY_LESS_CAST_MAGIC)
DLib = DamageLib()
drawManager = DrawManager()
-- Create spells and circles
for spell, data in pairs(SPELL_DATA) do
-- Spells
local rawSpell = Spell(spell, data.range)
-- Check if spell is a skillshot
if data.skillshotType then
rawSpell:SetSkillshot(VP, data.skillshotType, data.delay, data.width, data.speed, data.collision)
end
table.insert(spells, spell, rawSpell)
-- Circles
local rawCircle = drawManager:CreateCircle(player, data.range)
-- Link the circle with the spell
rawCircle:LinkWithSpell(rawSpell)
rawCircle:SetDrawCondition(function() return rawSpell:GetLevel() > 0 end)
table.insert(circles, spell, rawCircle)
end
-- Register damage sources
DLib:RegisterDamageSource(Q, _MAGIC, 40, 25, _MAGIC, _AP, 0.32, function() return spells[Q]:IsReady() end)
DLib:RegisterDamageSource(W, _MAGIC, 40, 25, _MAGIC, _AP, 0.40, function() return spells[W]:IsReady() end)
DLib:RegisterDamageSource(E, _MAGIC, 60, 90, _MAGIC, _AP, 0.35, function() return spells[E]:IsReady() end)
-- Setup other stuff
setupMenu()
-- Create other spells
instantE = Spell(E, SPELL_DATA[E].range):SetHitChance(3)
instantE:AddAutomation("instantCombo", function() return ValidTarget(STS:GetTarget(instantE.range)), STS:GetTarget(instantE.range) end)
-- Register callbacks
AddTickCallback(combo)
AddTickCallback(harass)
end
function setupMenu()
menu = scriptConfig("Fire Series: " .. player.charName, "Fire" .. player.charName)
menu:addSubMenu("Orbwalking", "orbwalking")
OW:LoadToMenu(menu.orbwalking)
-- Target Selector
menu:addSubMenu("Target Selector", "ts")
STS:AddToMenu(menu.ts)
-- Combo
menu:addSubMenu("Combo", "combo")
menu.combo:addParam("active", "Combo active" , SCRIPT_PARAM_ONKEYDOWN, false, 32)
menu.combo:addParam("sep", "", SCRIPT_PARAM_INFO, "")
menu.combo:addParam("useQ", "Use Q", SCRIPT_PARAM_ONOFF, true)
menu.combo:addParam("useW", "Use W", SCRIPT_PARAM_ONOFF, true)
menu.combo:addParam("useE", "Use E", SCRIPT_PARAM_ONOFF, true)
-- Harass
menu:addSubMenu("Harass", "harass")
menu.harass:addParam("active", "Harass active" , SCRIPT_PARAM_ONKEYDOWN, false, string.byte("C"))
menu.harass:addParam("sep", "", SCRIPT_PARAM_INFO, "")
menu.harass:addParam("useQ", "Use Q", SCRIPT_PARAM_ONOFF, true)
menu.harass:addParam("useW", "Use W", SCRIPT_PARAM_ONOFF, true)
menu.harass:addParam("useE", "Use E", SCRIPT_PARAM_ONOFF, true)
-- Extra
menu:addSubMenu("Extra", "extra")
menu.extra:addParam("charm", "Fast charm combo", SCRIPT_PARAM_ONOFF, true)
menu.extra:addParam("packet", "Cast spells using packets", SCRIPT_PARAM_ONOFF, false)
menu.extra:addParam("sep", "", SCRIPT_PARAM_INFO, "")
menu.extra:addParam("chanceQ", "Hitchance for Q", SCRIPT_PARAM_SLICE, 2, 1, 5, 0)
menu.extra:addParam("chanceE", "Hitchance for E", SCRIPT_PARAM_SLICE, 2, 1, 5, 0)
-- Kill Steal
menu:addSubMenu("Kill Steal", "killsteal")
menu.killsteal:addParam("useQ", "Use Q", SCRIPT_PARAM_ONOFF, true)
menu.killsteal:addParam("useW", "Use W", SCRIPT_PARAM_ONOFF, true)
menu.killsteal:addParam("useE", "Use E", SCRIPT_PARAM_ONOFF, true)
menu.killsteal:addParam("ignite", "Use Ignite", SCRIPT_PARAM_ONOFF, true)
-- Drawings
menu:addSubMenu("Drawings", "drawing")
for spell, circle in pairs(circles) do
circle:AddToMenu(menu.drawing, "Draw " .. SpellToString(spell) .. " range", true, true, true)
end
DLib:AddToMenu(menu.drawing, FullCombo)
-- Permashow
menu.combo:permaShow("active")
menu.harass:permaShow("active")
end
function OnTick()
spells[Q]:SetHitChance(menu.extra.chanceQ)
spells[E]:SetHitChance(menu.extra.chanceE)
spells[Q].packetCast = menu.extra.packet
spells[E].packetCast = menu.extra.packet
OW:EnableAttacks()
end
--[[
_________ ___.
\_ ___ \ ____ _____\_ |__ ____
/ \ \/ / _ \ / \| __ \ / _ \
\ \___( <_> ) Y Y \ \_\ ( <_> )
\______ /\____/|__|_| /___ /\____/
\/ \/ \/
]]
function combo()
if menu.combo.active then
OW:DisableAttacks()
local targets = { [Q] = STS:GetTarget(spells[Q].range),
[W] = STS:GetTarget(spells[W].range),
[E] = STS:GetTarget(spells[E].range) }
-- Q
if targets[Q] and menu.combo.useQ and spells[Q]:IsReady() and (isCharmed(targets[Q]) or DLib:IsKillable(targets[Q], { Q })) then
spells[Q]:Cast(targets[Q])
end
-- W
if targets[W] and menu.combo.useW and spells[W]:IsReady() and (isCharmed(targets[W]) or DLib:IsKillable(targets[W], { W })) then
spells[W]:Cast(targets[W])
end
-- E
if targets[E] and menu.combo.useE and spells[E]:IsReady() and DLib:IsKillable(targets[E], { E }) then
spells[Q]:Cast(targets[Q])
end
-- Combo
if menu.combo.useE and menu.combo.useQ and spells[E]:IsReady() and spells[Q]:IsReady() then
spells[E]:Cast(targets[E])
spells[Q]:Cast(targets[E])
end
end
end
--[[
___ ___
/ | \_____ ____________ ______ ______
/ ~ \__ \\_ __ \__ \ / ___// ___/
\ Y // __ \| | \// __ \_\___ \ \___ \
\___|_ /(____ /__| (____ /____ >____ >
\/ \/ \/ \/ \/
]]
function harass()
--
end
function isCharmed(target)
return HasBuff(target, CHARM_NAME)
end