ChallengerBaseultVersion = 0.12 class "ChallengerBaseult" function ChallengerBaseult:__init() self.enemySpawnPos = nil self.SpellData = { ["Ashe"] = { Delay = 0.25, MissileSpeed = 1600, Damage = function(target) return CalcDamage(myHero, target, 0, 75 + 175*GetCastLevel(myHero,_R) + GetBonusAP(myHero)) end }, ["Draven"] = { Delay = 0.4, MissileSpeed = 2000, Damage = function(target) return CalcDamage(myHero, target, 75 + 100*GetCastLevel(myHero,_R) + 1.1*GetBonusDmg(myHero)) end }, ["Ezreal"] = { Delay = 1, MissileSpeed = 2000, Damage = function(target) return CalcDamage(myHero, target, 0, 200 + 150*GetCastLevel(myHero,_R) + .9*GetBonusAP(myHero)+GetBonusDmg(myHero))*0.9 end }, ["Jinx"] = { Delay = 0.6, MissileSpeed = 1700, Damage = function(target) return CalcDamage(myHero, target, math.max(50*GetCastLevel(myHero, _R)+75+GetBonusDmg(myHero)+(0.05*GetCastLevel(myHero, _R)+0.2)*(GetMaxHP(target)-GetCurrentHP(target)))) end } } if not self.SpellData[GetObjectName(myHero)] then PrintChat("Challenger Baseult - "..GetObjectName(myHero).." Is Not Supported! ") return end PrintChat(string.format("Challenger Baseult For "..GetObjectName(myHero).." Loaded, Have Fun ! ")) self.Recalling = {} self.BaseultMenu = MenuConfig("ChallengerBaseult", "Challenger Baseult") self.BaseultMenu:KeyBinding("Baseult", "Baseult", string.byte("H"), true, function() end, true) self.BaseultMenu:KeyBinding("PanicKey", "Do Not Use Ultimate in Fight", 32, false) PermaShow(self.BaseultMenu.Baseult) if GetObjectName(myHero) == "Jinx" or GetObjectName(myHero) == "Ashe" then self.BaseultMenu:Boolean("Collision", "Check for collision", true) else self.BaseultMenu:Boolean("Collision", "Check for collision", false) end self.Delay = self.SpellData[GetObjectName(myHero)].Delay self.MissileSpeed = self.SpellData[GetObjectName(myHero)].MissileSpeed self.Damage = self.SpellData[GetObjectName(myHero)].Damage Callback.Add("ObjectLoad", function(Object) self:ObjectLoad(Object) end) Callback.Add("CreateObj", function(Object) self:CreateObj(Object) end) Callback.Add("Tick", function() self:Tick() end) Callback.Add("ProcessRecall", function(unit,recall) self:ProcessRecall(unit,recall) end) end function ChallengerBaseult:ObjectLoad(Object) if GetObjectType(Object) == Obj_AI_SpawnPoint and GetTeam(Object) ~= GetTeam(myHero) then self.enemySpawnPos = Object end end function ChallengerBaseult:CreateObj(Object) if GetObjectType(Object) == Obj_AI_SpawnPoint and GetTeam(Object) ~= GetTeam(myHero) then self.enemySpawnPos = Object end end function ChallengerBaseult:Tick() if GetObjectName(myHero) == "Draven" then SpellReady = CanUseSpell(myHero, _R) == READY and GetCastName(myHero,_R) == "DravenRCast" else SpellReady = CanUseSpell(myHero, _R) == READY end if SpellReady then for i, recall in pairs(self.Recalling) do local dmg = self.Damage(recall.champ) if dmg >= GetCurrentHP(recall.champ) and self.enemySpawnPos ~= nil then local TimeToRecall = recall.duration - (GetGameTimer() - recall.start) + GetLatency() / 2000 local BaseDistance = GetDistance(self.enemySpawnPos) if GetObjectName(myHero) == "Jinx" then self.MissileSpeed = BaseDistance > 1350 and (2295000 + (BaseDistance - 1350) * 2200) / BaseDistance or 1700 end local TimeToHit = self.Delay + BaseDistance / self.MissileSpeed + GetLatency() / 2000 if TimeToRecall < TimeToHit and TimeToHit < 7.8 and TimeToHit - TimeToRecall < 1.5 and dmg >= GetCurrentHP(recall.champ) and self.BaseultMenu.Baseult:Value() and not self.BaseultMenu.PanicKey:Value() then if self.BaseultMenu.Collision:Value() then if self:Collision(recall.champ) == 0 then CastSkillShot(_R, GetOrigin(self.enemySpawnPos)) end else CastSkillShot(_R, GetOrigin(self.enemySpawnPos)) end end end end end end function ChallengerBaseult:ProcessRecall(unit,recall) if GetTeam(unit) ~= GetTeam(myHero) then if recall.isStart then table.insert(self.Recalling, {champ = unit, start = GetGameTimer(), duration = (recall.totalTime/1000)}) else for i, recall in pairs(self.Recalling) do if recall.champ == unit then table.remove(self.Recalling, i) end end end end end function ChallengerBaseult:Collision(unit) local count = 0 for i, enemy in pairs(GetEnemyHeroes()) do if enemy and IsObjectAlive(enemy) and GetNetworkID(unit) ~= GetNetworkID(enemy) and self.enemySpawnPos ~= nil then local pointSegment, pointLine, isOnSegment = VectorPointProjectionOnLineSegment(GetOrigin(myHero), GetOrigin(self.enemySpawnPos), GetOrigin(enemy)) if isOnSegment and GetDistanceSqr(pointSegment, GetOrigin(enemy)) < (60+GetHitBox(enemy))^2 and GetDistanceSqr(GetOrigin(myHero), GetOrigin(self.enemySpawnPos)) > GetDistanceSqr(GetOrigin(myHero), GetOrigin(enemy)) then count = count + 1 end end end return count end if GetUser() ~= "Deftsu" then GetWebResultAsync("https://raw.githubusercontent.com/D3ftsu/GoS/master/ChallengerBaseult.version", function(data) if tonumber(data) > ChallengerBaseultVersion then PrintChat("Challenger Baseult - New version found! " ..data.." Downloading update, please wait...") DownloadFileAsync("https://raw.githubusercontent.com/D3ftsu/GoS/master/ChallengerBaseult.lua", SCRIPT_PATH .. "ChallengerBaseult.lua", function() PrintChat("Challenger Baseult - Updated from v"..tostring(ChallengerBaseultVersion).." to v"..data..". Please press F6 twice to reload.") return end) end end) end ChallengerBaseult()