Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
636 lines (590 sloc) 22.9 KB
if GetObjectName(myHero) ~= "Brand" then return end
--Version 1.5 -final-
--removed collision
-------------------------------------------------------------------------------
----------------------------- MENU -----------------------------------
-------------------------------------------------------------------------------
Brand = MenuConfig("Brand", "Brand")
Brand:Menu("Keys", "Keys")
Brand.Keys:Key("Combo", "Combo", string.byte(" "))
Brand.Keys:Key("Harass", "Harass", string.byte("X"))
Brand.Keys:DropDown("Priority", "Harass Priority", 7, {"QWE", "QW", "QE", "WE", "Q", "W", "E"})
Brand:Menu("Spells", "Spells")
Brand.Spells:Boolean("QStunOnly", "Only Q to stun?", false)
Brand.Spells:Boolean("KR", "R to kill only", true)
Brand.Spells:Boolean("AutoStun", "Auto Stun", true)
Brand.Spells:Slider("StunRange", "Max. Range", 300, 100, 650, 50)
Brand:Menu("KS", "Killstuff")
Brand.KS:Boolean("KS", "Killsteal", true)
Brand.KS:Boolean("DmgOverHP", "Draw DMG over HPBar", false)
Brand.KS:Boolean("KSNotes", "KS Notes", true)
Brand.KS:Boolean("Percent", "Percent Notes", true)
Brand.KS:Boolean("Ignite","Auto-Ignite", true)
Brand.KS:Boolean("KSR", "Long Ulti", true)
Brand:Menu("Draw", "Drawings")
Brand.Draw:Boolean("Draw", "Draw", true)
Brand.Draw:Boolean("DrawB", "Draw Burning", false)
Brand.Draw:Boolean("StunRangeDraw", "DrawRange", false)
Brand.Draw:Boolean("DQ", "Draw Q", true)
Brand.Draw:Boolean("DW", "Draw W", true)
Brand.Draw:Boolean("DE", "Draw E", false)
Brand.Draw:Boolean("DR", "Draw R", false)
local Enemies = {}
local myHero = GetMyHero()
local GotBlazed = {}
local BlazeEndTime = {}
local LS, WCharge = nil, false
local WEndTime, range = 0, 0
local WPos = nil
local QRDY, WRDY, ERDY, RRDY, IRDY = 0, 0, 0, 0, 0
local QDmg, WDmg, EDmg, RDmg, AP, xIgnite = 0, 0, 0, 0, 0, 0
local function GetSpellCD()
QRDY = GetCastLevel(myHero, _Q) > 0 and CanUseSpell(myHero, _Q) == 0 and 1 or 0
WRDY = GetCastLevel(myHero, _W) > 0 and CanUseSpell(myHero, _W) == 0 and 1 or 0
ERDY = GetCastLevel(myHero, _E) > 0 and CanUseSpell(myHero, _E) == 0 and 1 or 0
RRDY = GetCastLevel(myHero, _R) > 0 and CanUseSpell(myHero, _R) == 0 and 1 or 0
end
local function GetItemCD()
IRDY = Ignite and CanUseSpell(myHero, Ignite) == 0 and 1
or 0
end
local function Round(val, decimal)
return decimal and math.floor( (val * 10 ^ decimal) + 0.5) / (10 ^ decimal)
or math.floor(val + 0.5)
end
local function Damage()
AP = GetBonusAP(myHero)
QDmg = GetCastLevel(myHero,_Q) * 40 + 40 + .65 * AP
WDmg = GetCastLevel(myHero,_W) * 45 + 30 + .6 * AP
EDmg = GetCastLevel(myHero,_E) * 35 + 35 + .55 * AP
RDmg = GetCastLevel(myHero,_R) * 150 + .5 * AP
xIgnite = (GetLevel(myHero) * 20 + 50) * IRDY
end
local function Mana(mq,mw,me,mr)
local Qmana = 50
local Wmana = 10 * GetCastLevel(myHero, _W) + 60
local Emana = 5 * GetCastLevel(myHero, _E) + 65
local Rmana = 100
return Qmana * mq + Wmana * mw + Emana * me + Rmana * mr < GetCurrentMana(myHero) and 1 or 0
end
local function CountEnemyHeroInRange(object, range)
object = object or myHero
local eEnemies = {}
for i = 0, #Enemies do
local enemy = Enemies[i]
if enemy and enemy ~= object and not IsDead(enemy) and GetDistance(object, enemy) <= range then
table.insert(eEnemies, enemy)
end
end
return #eEnemies
end
local function CountEnemyMinionInRange(object, range)
object = object or myHero
local eMinions = {}
for aMinion = 0, #minionManager.objects do
if minionManager.objects[aMinion] and not IsDead(minionManager.objects[aMinion]) and GetTeam(minionManager.objects[aMinion]) ~= GetTeam(myHero) and GetDistance(minionManager.objects[aMinion], object) < range then --all living Minions that are not friendly into a list
table.insert(eMinions, minionManager.objects[aMinion])
end
end
return #eMinions
end
local function CountEnemyObjectsInRange(Object, range)
Object = Object or myHero
range = range or 99999
local a = CountEnemyHeroInRange(Object, range)
local b = CountEnemyMinionInRange(Object, range)
return a + b
end
local function resetVariables()
GetItemCD()
Damage()
if GetTickCount() > WEndTime then
WEndTime = 0
WCharge = false
WPos = nil
end
GetSpellCD()
for i = 1, #Enemies do
local Enemy = Enemies[i]
if BlazeEndTime[GetNetworkID(Enemy)] and (BlazeEndTime[GetNetworkID(Enemy)] < GetTickCount() or IsDead(Enemy)) then
BlazeEndTime[GetNetworkID(Enemy)] = nil
GotBlazed[GetNetworkID(Enemy)] = nil
end
end
end
local function QCanHit(unit)
local QPred = GetPredictionForPlayer(GetOrigin(myHero),unit,GetMoveSpeed(unit),1532,250 + GetLatency(),1044,75,true,false)
if QPred.PredPos and QPred.HitChance == 1 then
return true
else
return false
end
end
local function WCanHit(unit)
if unit then
local WPred = GetPredictionForPlayer(GetOrigin(myHero), unit, GetMoveSpeed(unit), 99999, 900 + GetLatency(), 875, 187, false, true)
if WPred.HitChance == 1 then
return true
else
return false
end
else
return false
end
end
local function GetWCharge()
local time = 0
if WCharge then
time = ((WEndTime - GetTickCount())) * .001
return time
end
end
local function TravelTime(spell, unit, tick)
local time = 99999
local speed = 1
local Distance = GetDistance(unit)
local ping = GetLatency()
local extra = tick and GetTickCount() or 0
if spell == "Q" then
speed = 1600
time = Distance / speed + extra
return time
elseif spell == "W" then
time = GetWCharge() + extra
return time
elseif spell == "E" then
speed = Distance * 4
time = Distance / speed + extra
return time
elseif spell == "R" then
speed = Distance * 2
time = Distance / speed + extra
return time
else
return time
end
end
local function IsTargetedBySpell(unit)
if WPos and GetDistance(unit, WPos) < 187 + GetHitBox(unit) then --means he is standing in range, now we need to know if he can escape
local MS = GetMoveSpeed(unit)
local reactionTime = 1000
local PossibleWay = (WEndTime - GetTickCount() - reactionTime) * MS
if PossibleWay < GetDistance(unit, WPos) + GetHitBox(unit) then --means he cant escape, mostly if CC'ed or standing
return true, "W"
elseif PossibleWay < GetDistance(unit, WPos) + GetHitBox(unit) + 500 then --means he cant escape if he is noob
return true, "W"
else
return false, nil
end
end
end
local function TimeTillBurnIncoming(unit)
local time = 99999
state, spell = IsTargetedBySpell(unit)
if state then
time = TravelTime(spell, unit)
else
time = 99999
end
return time
end
local function IsIgnited(o)
return GotBuff(o, "summonerdot") ~= 0 and 1
or 0
end
local function IsOrWillBeIgnited(o)
return IRDY == 1 and 1
or IsIgnited(o) == 1 and 1
or 0
end
local function IsBurning(unit, spell)
local spell = spell or nil
if not spell and (GotBlazed[GetNetworkID(unit)] or 0) > 0 then --if enemy is burning and no spell is given return true
return true
elseif spell and (GotBlazed[GetNetworkID(unit)] or 0) > 0 and (BlazeEndTime[GetNetworkID(unit)] or 0) > TravelTime(spell, unit, tick) then --if enemy is burning and the traveltime of given spell is shorter then his Burning is over return true
return true
elseif spell and TimeTillBurnIncoming(unit) < TravelTime(spell, unit) then --if enemy is not burning but any burn spell makes him burn in time before given spell reaches return true
return true
else
return false
end
end
local function GetRBounce(o)
local Speed = o and GetMoveSpeed(o) or 0
local NumEnemies = (math.min(CountEnemyObjectsInRange(o, 400 - Speed * .25), 99)) --example: around the target is no unit RBounce returns: 1, 2 units: 2
if IsBurning(o) or IsBurning(o, "R") then --it focuses on heroes, so we need to look if enemy heroes are there
local NumHeroes = CountEnemyHeroInRange(o, 400 - Speed * .25)
if NumHeroes > 0 then --so there are enemy heroes we need to take into account
return o and NumHeroes == 1 and 3 or o and NumHeroes == 2 and 2 or o and NumHeroes >= 3 and 1 or 1
else --so it jumps on hero after each minion
return o and NumEnemies >= 1 and 3 or 1
end
else
return o and NumEnemies == 1 and 3 or o and NumEnemies == 2 and 2 or o and NumEnemies >= 3 and 1 or 1
end
end
local function doQ(o)
if GetDistance(o) < 1044 then
local QPred = GetPredictionForPlayer(GetOrigin(myHero), o ,GetMoveSpeed(o) ,1532, 250 + GetLatency(), 1044, 75, true, false)
if QPred.HitChance == 1 then
CastSkillShot(_Q, QPred.PredPos)
end
end
end
local function doW(o)
if GetDistance(o) < 875 then
local WPred = GetPredictionForPlayer(GetOrigin(myHero), o, GetMoveSpeed(o), 99999, 900 + GetLatency(), 875, 187, false, true)
if WPred.HitChance == 1 then
CastSkillShot(_W, WPred.PredPos)
end
end
end
local function doE(o)
if GetDistance(o) < 650 then
CastTargetSpell(o, _E)
end
end
local function dooR(o)
if GetDistance(o) < 750 then
CastTargetSpell(o, _R)
end
end
local function doEW(o)
local WPred = GetPredictionForPlayer(GetOrigin(myHero), o, GetMoveSpeed(o), 99999, 900 + GetLatency(), 875, 187, false, true)
if WPred.HitChance == 1 and GetDistance(o) < 650 then
CastTargetSpell(o, _E)
CastSkillShot(_W, WPred.PredPos)
end
end
local function doQE(o)
local QPred = GetPredictionForPlayer(GetOrigin(myHero), o ,GetMoveSpeed(o) ,1532, 250 + GetLatency(), 1044, 75, true, false)
if QPred.HitChance == 1 and GetDistance(o) < 650 then
CastSkillShot(_Q, QPred.PredPos)
CastTargetSpell(o, _E)
end
end
local function doWQ(o)
local QPred = GetPredictionForPlayer(GetOrigin(myHero), o ,GetMoveSpeed(o) ,1532, 250 + GetLatency(), 1044, 75, true, false)
local WPred = GetPredictionForPlayer(GetOrigin(myHero), o, GetMoveSpeed(o), 99999, 900 + GetLatency(), 875, 187, false, true)
if WPred.HitChance == 1 and QPred.HitChance == 1 and GetDistance(o) < 875 then
CastSkillShot(_W, WPred.PredPos)
CastSkillShot(_Q, QPred.PredPos)
end
end
local function doQW(o)
local QPred = GetPredictionForPlayer(GetOrigin(myHero), o ,GetMoveSpeed(o) ,1532, 250 + GetLatency(), 1044, 75, true, false)
local WPred = GetPredictionForPlayer(GetOrigin(myHero), o, GetMoveSpeed(o), 99999, 900 + GetLatency(), 875, 187, false, true)
if WPred.HitChance == 1 and QPred.HitChance == 1 and GetDistance(o) < 875 then
CastSkillShot(_Q, QPred.PredPos)
CastSkillShot(_W, WPred.PredPos)
end
end
local function doEQW(o)
local QPred = GetPredictionForPlayer(GetOrigin(myHero), o ,GetMoveSpeed(o) ,1532, 250 + GetLatency(), 1044, 75, true, false)
local WPred = GetPredictionForPlayer(GetOrigin(myHero), o, GetMoveSpeed(o), 99999, 900 + GetLatency(), 875, 187, false, true)
if WPred.HitChance == 1 and QPred.HitChance == 1 and GetDistance(o) < 650 then
CastTargetSpell(o, _E)
CastSkillShot(_Q, QPred.PredPos)
CastSkillShot(_W, WPred.PredPos)
end
end
local function AutoStun()
for i = 1, #Enemies do
local Enemy = Enemies[i]
IsBurning(Enemy, "Q")
if GetDistance(Enemy) < Brand.Spells.StunRange:Value() then
if (QRDY == 1 and QCanHit(Enemy) and ERDY == 1) then
doE(Enemy)
elseif (IsBurning(Enemy, "Q") or IsBurning(Enemy)) and QRDY == 1 and QCanHit(Enemy) then
doQ(Enemy)
end
end
end
end
local function AutoIgnite()
for i = 1, #Enemies do
local Target = Enemies[i]
if ValidTarget(Target) then
local HP = GetCurrentHP(Target)
if HP <= xIgnite and GetDistance(Target) <= 600 then
if QRDY == 1 and HP <= QDmg then
doQ(Target)
elseif WRDY == 1 and HP <= WDmg then
doW(Target)
elseif ERDY == 1 and HP <= EDmg then
doE(Target)
else
if IRDY == 1 then
CastTargetSpell(Target, Ignite)
end
end
end
end
end
end
local function Harass()
if ValidTarget(target) then
if GetDistance(target) < range then
if Brand.Keys.Priority:Value() == 1 then
doQ(target)
doW(target)
doE(target)
elseif Brand.Keys.Priority:Value() == 2 then
doQ(target)
doW(target)
elseif Brand.Keys.Priority:Value() == 3 then
doQ(target)
doE(target)
elseif Brand.Keys.Priority:Value() == 4 then
doW(target)
doE(target)
elseif Brand.Keys.Priority:Value() == 5 then
doQ(target)
elseif Brand.Keys.Priority:Value() == 6 then
doW(target)
elseif Brand.Keys.Priority:Value() == 7 then
doE(target)
end
end
end
end
local function Combo()
if ValidTarget(target) then
if GetDistance(target) < range then
myRange = 1050
local DIST = GetDistance(target)
if DIST < range then
local armor = GetMagicResist(target)
local hp = GetCurrentHP(target)
local mhp = GetMaxHP(target)
local hpreg = GetHPRegen(target) * (1 - (IsOrWillBeIgnited(target) * .5))
local Health = hp * ((100 + ((armor - GetMagicPenFlat(myHero)) * GetMagicPenPercent(myHero))) * .01) + hpreg * 6 + GetMagicShield(target)
local maxHealth = mhp * ((100 + ((armor - GetMagicPenFlat(myHero)) * GetMagicPenPercent(myHero))) * .01) + hpreg * 6 + GetMagicShield(target)
local care = GetBuffData(target, "brandablaze")
local burntime = care.ExpireTime - GetTickCount() > 0 and (care.ExpireTime - GetTickCount()) * .001 or 4
local PDMG = ((maxHealth * .02 * burntime) - (hpreg * .2 * burntime)) * (IsBurning(target) and 1 or 0)
local TotalDamage = xIgnite * IRDY + (QDmg * QRDY + WDmg * WRDY * (IsBurning(target) and 1.25 or 1) + EDmg * ERDY + RDmg * RRDY * GetRBounce(target) + PDMG) * Mana(QRDY, WRDY, ERDY, RRDY)
local TotalDamageNoR = xIgnite * IRDY + (QDmg * QRDY + WDmg * WRDY * (IsBurning(target) and 1.25 or 1) + EDmg * ERDY + PDMG) * Mana(QRDY, WRDY, ERDY, RRDY)
local TotalDamageNoIgnite = (QDmg * QRDY + WDmg * WRDY * (IsBurning(target) and 1.25 or 1) + EDmg * ERDY + RDmg * RRDY * GetRBounce(target) + PDMG) * Mana(QRDY, WRDY, ERDY, RRDY)
local TotalDamageNoRNoIgnite = (QDmg * QRDY + WDmg * WRDY * (IsBurning(target) and 1.25 or 1) + EDmg * ERDY + PDMG) * Mana(QRDY, WRDY, ERDY, RRDY)
if Health < TotalDamageNoR then
if ERDY == 1 then doE(target) end
if QRDY == 1 then doQ(target) end
if WRDY == 1 then doW(target) end
if not Brand.Spells.KR:Value() then
if RRDY == 1 then
dooR(target)
end
end
if Brand.KS.Ignite:Value() and Health > TotalDamageNoRNoIgnite and DIST < 650 then
CastTargetSpell(target, Ignite)
end
elseif Health < TotalDamage then
if ERDY == 1 then doE(target) end
if QRDY == 1 then doQ(target) end
if WRDY == 1 then doW(target) end
if RRDY == 1 and Health < TotalDamage and Health > TotalDamageNoR then
dooR(target)
end
if Brand.KS.Ignite:Value() and Health > TotalDamageNoIgnite and DIST < 650 then
CastTargetSpell(target, Ignite)
end
else
if IsBurning(target) then
if QRDY == 1 then
if Brand.Spells.QStunOnly:Value() then
doQ(target)
elseif WRDY + ERDY == 0 or GetDistance(target) > 875 and GetDistance(target) < 1050 and GetMoveSpeed(target) > GetMoveSpeed(myHero) then
doQ(target)
end
end
if ERDY == 1 then doE(target) end
if WRDY == 1 then doW(target) end
if RRDY == 1 then
if not Brand.Spells.KR:Value() then
dooR(target)
end
end
else
if ERDY == 1 then doE(target) end
if WRDY == 1 then doW(target) end
if QRDY == 1 then
if Brand.Spells.QStunOnly:Value() then
if IsBurning(target) then
doQ(target)
end
else
if WRDY + ERDY == 0 or GetDistance(target) > 875 and GetDistance(target) < 1050 and GetMoveSpeed(target) > GetMoveSpeed(myHero) then
doQ(target)
end
end
end
if RRDY == 1 then
if not Brand.Spells.KR:Value() then
dooR(target)
end
end
end
end
end
end
end
end
local function Kills()
for i = 1, #Enemies do
local Enemy = Enemies[i]
local DIST = GetDistance(Enemy)
if ValidTarget(Enemy) and DIST < 2000 then
local armor = GetMagicResist(Enemy)
local hp = GetCurrentHP(Enemy)
local mhp = GetMaxHP(Enemy)
local hpreg = GetHPRegen(Enemy) * (1 - (IsOrWillBeIgnited(Enemy) * .5))
local Health = hp * ((100 + ((armor - GetMagicPenFlat(myHero)) * GetMagicPenPercent(myHero))) * .01) + hpreg * 6 + GetMagicShield(Enemy)
local maxHealth = mhp * ((100 + ((armor - GetMagicPenFlat(myHero)) * GetMagicPenPercent(myHero))) * .01) + hpreg * 6 + GetMagicShield(Enemy)
local PDMG = (maxHealth * .08 - hpreg * .8) * (IsBurning(Enemy) and 1 or 0)
local TotalDamage = xIgnite * IRDY + (QDmg * QRDY + WDmg * WRDY * (IsBurning(Enemy) and 1.25 or 1) + EDmg * ERDY + RDmg * RRDY * (GetRBounce(Enemy)) + PDMG) * Mana(QRDY, WRDY, ERDY, RRDY)
if DIST < range then
if Health < QDmg + PDMG and QRDY == 1 and Mana(1,0,0,0) == 1 and QCanHit(Enemy) then
doQ(Enemy)
elseif Health < WDmg + PDMG and WRDY == 1 and Mana(0,1,0,0) == 1 and WCanHit(Enemy) then
doW(Enemy)
elseif Health < EDmg + PDMG and ERDY == 1 and Mana(0,0,1,0) == 1 then
doE(Enemy)
elseif Health < EDmg + WDmg * 1.25 + PDMG and ERDY == 1 and WRDY == 1 and Mana(0,1,1,0) == 1 and WCanHit(Enemy) then
doEW(Enemy)
elseif Health < EDmg + QDmg + PDMG and ERDY == 1 and QRDY == 1 and Mana(1,0,1,0) == 1 and QCanHit(Enemy) then
doQE(Enemy)
elseif Health < QDmg + WDmg + PDMG and QRDY == 1 and WRDY == 1 and Mana(1,1,0,0) == 1 and QCanHit(Enemy) and WCanHit(Enemy) then
doWQ(Enemy)
elseif Health < QDmg + WDmg * 1.25 + PDMG and QRDY == 1 and WRDY == 1 and Mana(1,1,0,0) == 1 and QCanHit(Enemy) and WCanHit(Enemy) then
doQW(Enemy)
elseif Health < QDmg + WDmg * 1.25 + EDmg + PDMG and QRDY == 1 and WRDY == 1 and ERDY == 1 and Mana(1,1,1,0) == 1 and QCanHit(Enemy) and WCanHit(Enemy) then
doEQW(Enemy)
end
for j = 1, #Enemies do
local OtherEnemy = Enemies[j]
if OtherEnemy and Enemy ~= OtherEnemy then
local HP = GetCurrentHP(OtherEnemy)
local MHP = GetMaxHP(Enemy)
local ARMOR = GetMagicResist(OtherEnemy)
local HPREG = GetHPRegen(OtherEnemy) * (1 - (IsOrWillBeIgnited(OtherEnemy) * .5))
local HEALTH = HP * ((100 + ((ARMOR - GetMagicPenFlat(myHero)) * GetMagicPenPercent(myHero))) * .01) + HPREG * 6 + GetMagicShield(OtherEnemy)
local MAXHEALTH = MHP * ((100 + ((ARMOR - GetMagicPenFlat(myHero)) * GetMagicPenPercent(myHero))) * .01) + HPREG * 6 + GetMagicShield(OtherEnemy)
local pdmg = (MAXHEALTH * .08 - HPREG * .8) * (IsBurning(OtherEnemy) and 1 or 0)
if HEALTH < (RDmg * RRDY + pdmg) and GetCurrentMana(myHero) >= 100 and Brand.KS.KSR:Value() and DIST < 750 and GetDistance(OtherEnemy) > 750 and GetDistance(Enemy, OtherEnemy) <= 400 - (GetMoveSpeed(OtherEnemy) + GetMoveSpeed(Enemy))* .5 * .25 then
dooR(Enemy)
end
end
end
end
end
end
end
OnTick(function(myHero)
Enemies = GetEnemyHeroes()
target = GetCurrentTarget()
range = (QRDY == 1 and (target and QCanHit(target) or true) and QRDY * 1050) or (WRDY == 1 and (target and WCanHit(target) or true) and WRDY * 875) or (ERDY > 0 and ERDY * 650) or (RRDY > 0 and RRDY * 750) or (IRDY * 650) or 0
resetVariables()
if Brand.Keys.Combo:Value() then
Combo()
elseif Brand.Keys.Harass:Value() then
Harass()
else
if Brand.Spells.AutoStun:Value() then
AutoStun()
end
if Brand.KS.KS:Value() then
Kills()
end
end
if Brand.KS.Ignite:Value() then
AutoIgnite()
end
end)
OnDraw(function(myHero)
if Brand.Draw.Draw:Value() then
dQ = QRDY == 1 and Brand.Draw.DQ:Value() and 1050 or 0
dW = WRDY == 1 and Brand.Draw.DW:Value() and 875 or 0
dE = ERDY == 1 and Brand.Draw.DE:Value() and 650 or 0
dR = RRDY == 1 and Brand.Draw.DR:Value() and 750 or 0
if dQ ~= 0 then DrawCircle(GetOrigin(myHero), dQ, 0, 0, 0xffff0000) end
if dW ~= 0 then DrawCircle(GetOrigin(myHero), dW, 0, 0, 0xffff0000) end
if dE ~= 0 then DrawCircle(GetOrigin(myHero), dE, 0, 0, 0xffff0000) end
if dR ~= 0 then DrawCircle(GetOrigin(myHero), dR, 0, 0, 0xffff0000) end
for i = 1, #Enemies do
local Enemy = Enemies[i]
if Brand.Draw.DrawB:Value() and IsBurning(Enemy) then
DrawCircle(GetOrigin(Enemy), 100, 0, 0, 0xffff0000)
end
local DIST = GetDistance(Enemy)
if ValidTarget(Enemy) then
local drawPos = GetOrigin(Enemy)
local armor = GetMagicResist(Enemy)
local hp = GetCurrentHP(Enemy)
local mhp = GetMaxHP(Enemy)
local hpreg = GetHPRegen(Enemy) * (1 - (IsOrWillBeIgnited(Enemy) * .5))
local Health = hp * ((100 + ((armor - GetMagicPenFlat(myHero)) * GetMagicPenPercent(myHero))) * .01) + hpreg * 6 + GetMagicShield(Enemy)
local maxHealth = mhp * ((100 + ((armor - GetMagicPenFlat(myHero)) * GetMagicPenPercent(myHero))) * .01) + hpreg * 6 + GetMagicShield(Enemy)
local care = GetBuffData(Enemy, "brandablaze")
local burntime = care.ExpireTime - GetTickCount() > 0 and (care.ExpireTime - GetTickCount()) * .001 or 4
local PDMG = ((maxHealth * .02 * burntime) - (hpreg * .2 * burntime)) * (IsBurning(Enemy) and 1 or 0)
local TotalDamage = xIgnite * IRDY + (QDmg * QRDY + WDmg * WRDY * (IsBurning(Enemy) and 1 or 1.25) + EDmg * ERDY + RDmg * RRDY * (GetRBounce(Enemy) + PDMG)) * Mana(QRDY, WRDY, ERDY, RRDY)
if Health < TotalDamage - RDmg * RRDY * (GetRBounce(Enemy)) then --no Ulti need
if Brand.KS.KSNotes:Value() then
DrawCircle(GetOrigin(Enemy), 50, 0, 0, 0xffff0000)
end
elseif Health < TotalDamage then
if Brand.KS.KSNotes:Value() then
DrawCircle(GetOrigin(Enemy), 100, 0, 0, 0xffff0000)
end
else
if Round(((Health - TotalDamage) / maxHealth * 100), 0) > 0 and Brand.KS.Percent:Value() then
local drawing = WorldToScreen(1, drawPos)
local rounded = Round(((Health - TotalDamage) / maxHealth * 100), 0)
DrawText("\n\n" .. rounded .. "%", 15, drawing.x, drawing.y, 0xffff0000)
end
end
if Brand.KS.DmgOverHP:Value() then
local atotDmg = 0
local ahp = GetCurrentHP(Enemy)
if ahp > xIgnite * IRDY + CalcDamage(myHero, Enemy, 0, (QDmg * QRDY + WDmg * WRDY * (IsBurning(Enemy) and 1 or 1.25) + EDmg * ERDY + RDmg * RRDY * (GetRBounce(Enemy) + PDMG)) * Mana(QRDY, WRDY, ERDY, RRDY)) then
atotDmg = xIgnite * IRDY + CalcDamage(myHero, Enemy, 0, (QDmg * QRDY + WDmg * WRDY * (IsBurning(Enemy) and 1 or 1.25) + EDmg * ERDY + RDmg * RRDY * (GetRBounce(Enemy) + PDMG)) * Mana(QRDY, WRDY, ERDY, RRDY))
else
atotDmg = ahp
end
DrawDmgOverHpBar(Enemy, ahp, 0, atotDmg, 0xffff0000)
end
end
end
if Brand.Draw.StunRangeDraw:Value() then
DrawCircle(GetOrigin(myHero), Brand.Spells.StunRange:Value(), 0, 0, 0xffff0000)
end
end
end)
OnUpdateBuff(function(unit,buff)
if GetTeam(unit) ~= GetTeam(myHero) and buff.Name:lower():find("brandablaze") then
local ID = GetNetworkID(unit)
DelayAction(function()
GotBlazed[ID] = buff.Count
BlazeEndTime[ID] = GetTickCount() + 4000
end, .3)
end
end)
OnRemoveBuff(function(unit,buff)
if GetTeam(unit) ~= GetTeam(myHero) and buff.Name:lower():find("brandablaze") then
local ID = GetNetworkID(unit)
DelayAction(function()
GotBlazed[ID] = 0
BlazeEndTime[ID] = 0
end, .3)
end
end)
OnProcessSpell(function(unit, spell)
if unit == myHero and spell then
if spell.name == "BrandFissure" then
WCharge = true
WPos = spell.endPos
WEndTime = GetTickCount() + 1000
end
end
end)