Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require("Inspired")
- LoadIOW()
- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- ---------------------------------------------------------------------------------------------------------------Cass-----------------------------------------------------------------------------------------------------------
- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- class "Cassiopeia"
- function Cassiopeia:__init()
- self._ = {
- combo = {
- {
- function()
- return self.doE and self.EREADY and self.Etarget and self:IsPoisoned(self.Etarget) and self:DoMana("Combo", "E")
- end,
- function()
- self:CastE(self.Etarget)
- end
- },
- {
- function()
- return self.doQ and self.QREADY and self.Qtarget and self:RePoison(self.Qtarget, "Q") and self:DoMana("Combo", "Q")
- end,
- function()
- self:CastQ(self.Qtarget)
- end
- },
- {
- function()
- return self.doW and self.WREADY and self.Qtarget and self:RePoison(self.Qtarget, "W") and self:DoMana("Combo", "W")
- end,
- function()
- self:CastW(self.Qtarget)
- end
- },
- {
- function()
- return self.doR and self.RREADY and self.Rtarget and self:Face(self.Rtarget) and self:DoMana("Combo", "R")
- end,
- function()
- self:CastR(self.Rtarget)
- end
- }
- },
- harass = {
- {
- function()
- return self.doQ and self.QREADY and self.Qtarget and self:RePoison(self.Qtarget, "Q") and self:DoMana("Harass", "Q")
- end,
- function()
- self:CastQ(self.Qtarget)
- end
- },
- {
- function()
- return self.doE and self.EREADY and self.Etarget and self:IsPoisoned(self.Etarget) and self:DoMana("Harass", "E")
- end,
- function()
- self:CastE(self.Etarget)
- end
- },
- {
- function()
- return self.doW and self.WREADY and self.Wtarget and self:RePoison(self.Qtarget, "W") and self:DoMana("Harass", "W")
- end,
- function()
- self:CastW(self.Qtarget)
- end
- },
- {
- function()
- return self.doR and self.RREADY and self.Rtarget and self:Face(self.Rtarget) and self:DoMana("Harass", "R")
- end,
- function()
- self:CastR(self.Rtarget)
- end
- }
- },
- laneclear = {
- {
- function()
- return self.doQ and self.QREADY and self:DoMana("LaneClear", "Q")
- end,
- function()
- local BestPos, BestHit = GetFarmPosition(850, 80, 300-myHero.team)
- if BestPos and BestHit and BestHit > 0 then
- CastSkillShot(_Q, BestPos)
- end
- end
- },
- {
- function()
- return self.doW and self.WREADY and self:DoMana("LaneClear", "W")
- end,
- function()
- local BestPos, BestHit = GetFarmPosition(850, 100, 300-myHero.team)
- if BestPos and BestHit and BestHit > 0 then
- CastSkillShot(_W, BestPos)
- end
- end
- },
- {
- function()
- return self.Config.Keys.LaneClear:Value() and self.doE and self.EREADY and self:DoMana("LaneClear", "E")
- end,
- function()
- for minion in GetMinions{team = 300-myHero.team, distance = 700} do
- self:CastE(minion)
- end
- end
- },
- },
- lasthit = {
- {
- function()
- return self.doQ and self.QREADY and self:DoMana("LastHit", "Q")
- end,
- function()
- local BestPos, BestHit = GetFarmPosition(850, 80, 300-myHero.team)
- if BestPos and BestHit and BestHit > 0 then
- CastSkillShot(_Q, BestPos)
- end
- end
- },
- {
- function()
- return self.doW and self.WREADY and self:DoMana("LastHit", "W")
- end,
- function()
- local BestPos, BestHit = GetFarmPosition(850, 100, 300-myHero.team)
- if BestPos and BestHit and BestHit > 0 then
- CastSkillShot(_W, BestPos)
- end
- end
- },
- {
- function()
- return self.Config.Keys.LastHit:Value() and self.doE and self.EREADY and self:DoMana("LastHit", "E")
- end,
- function()
- for minion in GetMinions{team = 300-myHero.team, distance = 700} do
- if minion.health < myHero:CalcMagicDamage(minion, self.spellData[_E].dmg()) then
- self:CastE(minion)
- end
- end
- end
- },
- },
- auto = {
- {
- function()
- return self.QREADY and self.Config.Misc.Tear.Tearok:Value() and self.manapc > self.Config.Misc.Tear.Tear:Value() and (EnemiesAround(myHero.pos, 1000) == 0 and self.Config.Misc.Tear.Tearen:Value())
- end,
- function()
- local dist = GetDistance(GetMousePos())
- local vec = Vector(myHero)+Vector(Vector(GetMousePos())-Vector(myHero)):normalized()*math.random(dist-200, math.min(dist+200, 700))
- CastSkillShot(_Q, vec)
- end
- },
- {
- function()
- end,
- function()
- end
- }
- }
- }
- self.spellData = {
- [_Q] = {dmg = function () return 40 + 35*GetCastLevel(myHero,_Q) + 0.45 * myHero.ap end, mana = function() return 30 + 10*GetCastLevel(myHero,_Q) end, range = 850},
- [_W] = {dmg = function () return 5 + 5*GetCastLevel(myHero,_W) + 0.10 * myHero.ap end, mana = function() return 30 + 10*GetCastLevel(myHero,_Q) end, range = 850},
- [_E] = {dmg = function () return 30 + 25*GetCastLevel(myHero,_E) + 0.55 * myHero.ap end, mana = function() return 40 + 10*GetCastLevel(myHero,_Q) end, range = 700},
- [_R] = {dmg = function () return 50 + 100*GetCastLevel(myHero,_R) + 0.50 * myHero.ap end, mana = 100, range = 825},
- }
- self.stacks = {}
- self.qpoison = {}
- self.wpoison = {}
- self.lastTick = {}
- self.maxTicks = {}
- do self.____ = {} self._____ = {} for k, v in pairs(self._) do self.____[k] = 0 self._____[k] = #v end end
- Callback.Add("Tick", function() self:Tick() end)
- Callback.Add("Draw", function() self:Draw() end)
- Callback.Add("UpdateBuff", function (Object,Buff) self:UpdateBuff(Object, Buff) end)
- Callback.Add("RemoveBuff", function (Object,Buff) self:RemoveBuff(Object, Buff) end)
- Callback.Add("ProcessSpell", function(u,s) self:ProcessSpell(u,s) end)
- Callback.Add("Animation", function(u,a) self:Animation(u,a) end)
- Callback.Add("ProcessSpellComplete", function(u,s) self:ProcessSpellComplete(u,s) end)
- self.Config = MenuConfig("PAMcass", "PAM Cassiopeia")
- self.Config:Menu("Combo", "Combo")
- self.Config.Combo:Boolean("Q", "Use Q", true)
- self.Config.Combo:Boolean("W", "Use W", true)
- self.Config.Combo:Boolean("E", "Use E", true)
- self.Config.Combo:Boolean("R", "Use R", true)
- self.Config:Menu("Harass", "Harass")
- self.Config.Harass:Boolean("Q", "Use Q", true)
- self.Config.Harass:Boolean("W", "Use W", false)
- self.Config.Harass:Boolean("E", "Use E", true)
- self.Config.Harass:Boolean("R", "Use R", false)
- self.Config:Menu("LastHit", "LastHit")
- self.Config.LastHit:Boolean("Q", "Use Q", true)
- self.Config.LastHit:Boolean("W", "Use W", false)
- self.Config.LastHit:Boolean("E", "Use E", true)
- self.Config.LastHit:Boolean("R", "Use R", false)
- self.Config:Menu("LaneClear", "LaneClear")
- self.Config.LaneClear:Boolean("Q", "Use Q", true)
- self.Config.LaneClear:Boolean("W", "Use W", true)
- self.Config.LaneClear:Boolean("E", "Use E", true)
- self.Config.LaneClear:Boolean("nop", "Only on Poisoned Enemies", true)
- self.Config.LaneClear:Boolean("R", "Use R", false)
- self.Config:Menu("Killsteal", "Killsteal")
- self.Config.Killsteal:Boolean("Q", "Use Q", true)
- self.Config.Killsteal:Boolean("W", "Use W", false)
- self.Config.Killsteal:Boolean("E", "Use E", true)
- self.Config.Killsteal:Boolean("R", "Use R", false)
- if Ignite then
- self.Config.Killsteal:Boolean("I", "Use Ignite", true)
- end
- self.Config:Menu("Misc", "Misc")
- self.Config.Misc:Boolean("Q", "Use Q", true)
- self.Config.Misc:Menu("UltSettings", "UltSettings")
- self.Config.Misc.UltSettings:Boolean("AutoR", "Auto R", true)
- self.Config.Misc.UltSettings:Slider("PARTYPARTY", "Enemies (Fest Host Mange)", 2, 1, 5, 1)
- self.Config.Misc:Menu("Tear", "Tear Settings")
- self.Config.Misc.Tear:Boolean("Tearok", "Stack Tear", true)
- self.Config.Misc.Tear:Boolean("Tearen", "with Enemies close", false)
- self.Config.Misc.Tear:Slider("Tear", "have atleast Mana%",70, 0, 100)
- self.Config:Menu("Mana", "Mana Settings")
- self.Config.Mana:Menu("Combo", "Combo")
- self.Config.Mana.Combo:Slider("Q", "Q Mana%", 0, 0, 100)
- self.Config.Mana.Combo:Slider("W", "W Mana%", 0, 0, 100)
- self.Config.Mana.Combo:Slider("E", "E Mana%", 0, 0, 100)
- self.Config.Mana.Combo:Slider("R", "R Mana%", 0, 0, 100)
- self.Config.Mana:Menu("Harass", "Harass")
- self.Config.Mana.Harass:Slider("Q", "Q Mana%", 20, 0, 100)
- self.Config.Mana.Harass:Slider("W", "W Mana%", 40, 0, 100)
- self.Config.Mana.Harass:Slider("E", "E Mana%", 20, 0, 100)
- self.Config.Mana.Harass:Slider("R", "R Mana%", 50, 0, 100)
- self.Config.Mana:Menu("LastHit", "LastHit")
- self.Config.Mana.LastHit:Slider("Q", "Q Mana%", 20, 0, 100)
- self.Config.Mana.LastHit:Slider("W", "W Mana%", 50, 0, 100)
- self.Config.Mana.LastHit:Slider("E", "E Mana%", 10, 0, 100)
- self.Config.Mana.LastHit:Slider("R", "R Mana%", 50, 0, 100)
- self.Config.Mana:Menu("LaneClear", "LaneClear")
- self.Config.Mana.LaneClear:Slider("Q", "Q Mana%", 20, 0, 100)
- self.Config.Mana.LaneClear:Slider("W", "W Mana%", 30, 0, 100)
- self.Config.Mana.LaneClear:Slider("E", "E Mana%", 10, 0, 100)
- self.Config.Mana.LaneClear:Slider("R", "R Mana%", 50, 0, 100)
- self.Config.Mana:Menu("Killsteal", "Killsteal")
- self.Config.Mana.Killsteal:Slider("Q", "Q Mana%", 0, 0, 100)
- self.Config.Mana.Killsteal:Slider("W", "W Mana%", 0, 0, 100)
- self.Config.Mana.Killsteal:Slider("E", "E Mana%", 0, 0, 100)
- self.Config.Mana.Killsteal:Slider("R", "R Mana%", 0, 0, 100)
- self.Config:Menu("Draw", "Draws")
- self.Config.Draw:Boolean("DmgDraw", "DmgDraw", true)
- for i = 0,3 do
- local str = {[0] = "Q", [1] = "W", [2] = "E", [3] = "R"}
- self.Config.Draw:Boolean(str[i], "Draw "..str[i], true)
- self.Config.Draw:Boolean(str[i].."oom", "Draw if out of Mana"..str[i], false)
- self.Config.Draw:Boolean(str[i].."cd", "Draw if not ready"..str[i], false)
- self.Config.Draw:ColorPick(str[i].."c", "Draw Color", {255, 25, 155, 175})
- end
- self.Config:Menu("Keys", "Keys")
- self.Config.Keys:KeyBinding("Combo", "Combo", 32)
- self.Config.Keys:KeyBinding("Harass", "Harass", string.byte("C"))
- self.Config.Keys:KeyBinding("LaneClear", "LaneClear", string.byte("V"))
- self.Config.Keys:KeyBinding("LastHit", "LastHit", string.byte("X"))
- self.Qts = TargetSelector(900,TARGET_LESS_CAST, DAMAGE_MAGIC, true, false)
- self.Ets = TargetSelector(700,TARGET_LESS_CAST, DAMAGE_MAGIC, true, false)
- self.Rts = TargetSelector(825,TARGET_LESS_CAST, DAMAGE_MAGIC, true, false)
- self.doQ = false
- self.doW = false
- self.doE = false
- self.doR = false
- self.currentTime = 0
- self.eWind = 0.125
- self.qDelay = 0.4
- self.wDelay = 0.5
- self.colors = { 0xDFFFE258, 0xDF8866F4, 0xDF55F855, 0xDFFF5858 }
- end
- function Cassiopeia:Checks()
- self.doQ = (self.Config.Keys.Combo:Value() and self.Config.Combo.Q:Value()) or (self.Config.Keys.Harass:Value() and self.Config.Harass.Q:Value()) or (self.Config.Keys.LaneClear:Value() and self.Config.LaneClear.Q:Value()) or (self.Config.Keys.LastHit:Value() and self.Config.LastHit.Q:Value())
- self.doW = (self.Config.Keys.Combo:Value() and self.Config.Combo.W:Value()) or (self.Config.Keys.Harass:Value() and self.Config.Harass.W:Value()) or (self.Config.Keys.LaneClear:Value() and self.Config.LaneClear.W:Value()) or (self.Config.Keys.LastHit:Value() and self.Config.LastHit.W:Value())
- self.doE = (self.Config.Keys.Combo:Value() and self.Config.Combo.E:Value()) or (self.Config.Keys.Harass:Value() and self.Config.Harass.E:Value()) or (self.Config.Keys.LaneClear:Value() and self.Config.LaneClear.E:Value()) or (self.Config.Keys.LastHit:Value() and self.Config.LastHit.E:Value())
- self.doR = self.Config.Keys.Combo:Value() and self.Config.Combo.R:Value()
- self.QREADY = CanUseSpell(myHero,_Q) == READY
- self.WREADY = CanUseSpell(myHero,_W) == READY
- self.EREADY = CanUseSpell(myHero,_E) == READY
- self.RREADY = CanUseSpell(myHero,_R) == READY
- if Ignite then
- self.IREADY = CanUseSpell(myHero, Ignite) == READY
- end
- self.Qtarget = self.Qts:GetTarget()
- self.Etarget = self.Ets:GetTarget()
- self.Rtarget = self.Rts:GetTarget()
- self.manapc = GetCurrentMana(myHero)/GetMaxMana(myHero)*100
- self.currentTime = GetGameTimer()
- end
- function Cassiopeia:Tick()
- print(self.manapc)
- self:Checks()
- for _, v in pairs({"Combo", "Harass", "LaneClear", "LastHit"}) do
- if self.Config.Keys[v]:Value() then
- self:Advance(v);break;
- end
- end
- self:Advance("auto")
- for i, v in pairs(GetEnemyHeroes()) do
- local p = GetMEC(175, 825, v)
- if p and EnemiesAround(p, 175) >= self.Config.Misc.UltSettings.PARTYPARTY:Value() then
- CastSkillShot(_R, p)
- end
- end
- self:Killsteal()
- end
- function Cassiopeia:Advance(___)
- do local __ = ___:lower() local function ______(__) if __[1](_) then __[2](___) end end self.____[__] = self.____[__] + 1 if self.____[__] > self._____[__] then self.____[__] = 1 end ______(self._[__][self.____[__]]) end
- end
- function Cassiopeia:Draw()
- DrawCircle(GetOrigin(myHero), 700, 0, 3, GoS.Green)
- for i,s in pairs({"Q","W","E","R"}) do
- if self.Config.Draw[s]:Value() then
- DrawCircle(myHero.pos, self.spellData[i-1].range, 1, 32, self.Config.Draw[s.."c"]:Value())
- end
- end
- if self.Config.Draw.DmgDraw:Value() then
- for i, enemy in pairs(GetEnemyHeroes()) do
- if ValidTarget(enemy) then
- local barPos = GetHPBarPos(enemy)
- if barPos.x > 0 and barPos.y > 0 then
- local sdmg = {}
- for slot = 0, 3 do
- sdmg[slot] = CanUseSpell(myHero, slot) == 0 and CalcDamage(myHero, enemy, 0, self.spellData[slot].dmg()) or 0
- end
- local mhp = GetMaxHP(enemy)
- local chp = GetCurrentHP(enemy)
- local offset = 103 * (chp/mhp)
- for __, spell in pairs({"Q", "W", "E", "R"}) do
- if sdmg[__-1] > 0 then
- local exit
- local off = 103*(sdmg[__-1]/mhp)
- if off > 103 then
- off = 103
- exit = 0
- end
- local _ = 2*__
- DrawLine(barPos.x+1+offset-off, barPos.y-1, barPos.x+1+offset, barPos.y-1, 5, self.colors[__])
- DrawLine(barPos.x+1+offset-off, barPos.y-1, barPos.x+1+offset-off, barPos.y+10-10*_, 1, self.colors[__])
- DrawText(spell, 11, barPos.x+1+offset-off, barPos.y-5-10*_, self.colors[__])
- DrawText(""..math.round(sdmg[__-1]), 10, barPos.x+4+offset-off, barPos.y+5-10*_, self.colors[__])
- offset = offset - off
- if exit then return end
- end
- end
- end
- end
- end
- end
- end
- function Cassiopeia:Killsteal()
- local Qdmg = (self.Config.Killsteal.Q:Value() and self.QREADY) and self.spellData[_Q].dmg() or 0
- local Wdmg = (self.Config.Killsteal.W:Value() and self.WREADY) and self.spellData[_W].dmg() or 0
- local Edmg = (self.Config.Killsteal.E:Value() and self.EREADY) and self.spellData[_E].dmg() or 0
- local Rdmg = (self.Config.Killsteal.R:Value() and self.RREADY) and self.spellData[_R].dmg() or 0
- for i, enemy in pairs(GetEnemyHeroes()) do
- local Admg = CalcDamage(myHero, enemy, 0, Qdmg/3)
- local Bdmg = CalcDamage(myHero, enemy, 0, Wdmg)
- local Cdmg = CalcDamage(myHero, enemy, 0, Edmg)
- local Ddmg = CalcDamage(myHero, enemy, 0, Rdmg)
- local enemyhp = GetCurrentHP(enemy) + GetDmgShield(enemy) + GetMagicShield(enemy)
- if enemy then
- if Ignite and self.IREADY and self.Config.Killsteal.I:Value() and ValidTarget(enemy, 600) then
- if enemyhp+20+(GetHPRegen(enemy)*0.5) < Admg*3 + Cdmg + (50+20*myHero.level) then
- CastTargetSpell(enemy, Ignite)
- self:CastQ(enemy)
- DelayAction(function() self:CastE(enemy) end, 0.125)
- end
- end
- if ValidTarget(enemy, 850) then
- if enemyhp < Cdmg then
- self:CastE(enemy)
- elseif enemyhp < Admg + Cdmg and self.QREADY and self.EREADY then
- self:CastQ(enemy)
- DelayAction(function() self:CastE(enemy) end, 0.125)
- elseif enemyhp < Admg + Bdmg and self.WREADY and self.EREADY then
- self:CastW(enemy)
- DelayAction(function() self:CastE(enemy) end, 0.250)
- elseif enemyhp < Admg + Bdmg + Cdmg and self.QREADY and self.WREADY and self.EREADY then
- self:CastW(enemy)
- DelayAction(function() self:CastQ(enemy) DelayAction(function() self:CastE(enemy) end, 0.125) end, 0.250)
- end
- elseif ValidTarget(enemy, 850) then
- if enemyhp+(GetHPRegen(enemy)*3) < Admg*3 then
- self:CastQ(enemy)
- end
- end
- end
- end
- end
- function Cassiopeia:ProcessSpellComplete(unit, spell)
- if unit.isMe then
- end
- end
- function Cassiopeia:ProcessSpell(unit, spell)
- if unit.isMe then
- end
- end
- function Cassiopeia:Animation(unit, animation)
- end
- function Cassiopeia:UpdateBuff(Object, Buff)
- if Object == self.Qtarget then
- --cassiopeianoxiousblastpoison
- --cassiopeiamiasmapoison
- --cassiopeiatwinfangdebuff -- count
- --cassiopeiapretrifyinggazestun
- -- print(Buff.Name)
- -- print(Buff.Count)
- end
- if Object and Buff and Object.team ~= myHero.team then
- if Buff.Name == "cassiopeiatwinfangdebuff" then
- self.stacks[GetNetworkID(Object)] = Buff.Count
- elseif Buff.Name == "cassiopeianoxiousblastpoison" then
- self.qpoison[GetNetworkID(Object)] = Buff.ExpireTime
- elseif Buff.Name == "cassiopeiamiasmapoison" then
- self.wpoison[GetNetworkID(Object)] = Buff.ExpireTime
- end
- end
- end
- function Cassiopeia:RemoveBuff(Object, Buff)
- if Object and Buff and Object.team ~= myHero.team then
- if Buff.Name == "cassiopeiatwinfangdebuff" then
- self.stacks[GetNetworkID(Object)] = 0
- end
- end
- end
- function Cassiopeia:Face(unit)
- return GetDistance(GetPredictionForPlayer(GetOrigin(myHero), unit, GetMoveSpeed(unit), math.huge, 500, 850, 130, false, true).PredPos) < GetDistance(unit)*0.90075
- end
- function Cassiopeia:IsPoisoned(unit)
- return (self.qpoison[GetNetworkID(unit)] or self.wpoison[GetNetworkID(unit)] or 0) > self.currentTime + self.eWind
- end
- function Cassiopeia:RePoison(unit, spell)
- return (self[spell:lower().."poison"][GetNetworkID(unit)] or 0) < self.currentTime - self[spell:lower().."Delay"]
- end
- function Cassiopeia:DoMana(mode, spell)
- return self.Config.Mana[mode][spell]:Value() < self.manapc
- end
- function Cassiopeia:CastQ(unit)
- local pred = GetPredictionForPlayer(GetOrigin(myHero), unit, GetMoveSpeed(unit), math.huge, 400, 850, 130, false, true)
- if pred.HitChance == 1 then
- CastSkillShot(_Q, pred.PredPos)
- end
- end
- function Cassiopeia:CastW(unit)
- local pred = GetPredictionForPlayer(GetOrigin(myHero), unit, GetMoveSpeed(unit), math.huge, 250, 850, 125, false, true)
- if pred.HitChance == 1 then
- CastSkillShot(_W, pred.PredPos)
- end
- end
- function Cassiopeia:CastE(unit)
- CastTargetSpell(unit, _E)
- end
- function Cassiopeia:CastR(unit)
- local pred = GetPredictionForPlayer(GetOrigin(myHero), unit, GetMoveSpeed(unit), math.huge, 500, 825, GetDistance(unit)*0.4, false, false)
- if pred.HitChance == 1 then
- CastSkillShot(_R, pred.PredPos)
- end
- end
- Cassiopeia()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement