Run it
Copy the script and paste it into your executor.
ReplicatedStorage = :()
Players = :()
TweenService = :()
RunService = :()
LocalPlayer = Players.LocalPlayer
CONFIG = {
FireDelay = ,
RetryDelay = ,
RetryFire = ,
FacingDotThreshold = -,
LowHPThreshold = ,
ChainResetTime = ,
FaceCheckMaxDist = ,
BehindOffset = ,
DashSideRadius = ,
DashSpeedPerStud = ,
DashMinDuration = ,
DashMaxDuration = ,
DashTimeJitter = ,
DashRadiusJitter = ,
DashArcHeight = ,
FireDelayJitter = ,
LockOnSmoothness = ,
LockOnHeightOffset = ,
}
.retryfire ~=
CONFIG.RetryFire = .retryfire
(...)
path = { ... }
ok, remote = (()
node = ReplicatedStorage
_, child (path)
node = node:(child, )
node
)
ok remote
targetRemote = (,,,,,)
targetRemote
()
returnSkillRemote = (,,,,,)
()
char = LocalPlayer.Character
char char:()
(model)
myChar = LocalPlayer.Character
model == myChar
root = model:()
humanoid = model:()
root humanoid humanoid.Health >
()
hrp = ()
hrp
nearest =
bestDist = .huge
(model)
(model)
root = model:()
dist = (hrp.Position - root.Position).Magnitude
dist < bestDist
bestDist = dist
nearest = model
_, player (Players:())
player ~= LocalPlayer player.Character
(player.Character)
_, obj (:())
obj:() (obj)
nearest
(targetRoot)
hrp = ()
hrp targetRoot targetRoot.Parent
toPlayer = (hrp.Position - targetRoot.Position)
toPlayer.Magnitude <
dot = targetRoot.CFrame.LookVector:(toPlayer.Unit)
dot < CONFIG.FacingDotThreshold
(targetRoot)
hrp = ()
hrp targetRoot targetRoot.Parent
(hrp.Position - targetRoot.Position).Magnitude <= CONFIG.FaceCheckMaxDist
(targetRoot)
(targetRoot)
(targetRoot)
(target)
target .huge
humanoid = target:()
humanoid .huge
humanoid.Health
camera = .CurrentCamera
lockOnConn =
lockOnTimer =
()
lockOnConn
lockOnConn:()
lockOnConn =
lockOnTimer
.(lockOnTimer)
lockOnTimer =
(targetRoot)
()
lockOnConn = RunService.RenderStepped:(()
targetRoot targetRoot.Parent
()
hrp = ()
hrp
aimPoint = targetRoot.Position + .(, CONFIG.LockOnHeightOffset, )
camPos = camera.CFrame.Position
wantedCF = .(camPos, aimPoint)
camera.CFrame = camera.CFrame:(wantedCF, CONFIG.LockOnSmoothness)
)
lockOnTimer = .(, ()
()
lockOnTimer =
)
dashSide =
(targetRoot)
hrp = ()
hrp targetRoot targetRoot.Parent
side = dashSide
dashSide = (side == )
y = hrp.Position.Y
startPos = hrp.Position
rightVec = targetRoot.CFrame.RightVector
sideVec = (side == ) rightVec -rightVec
radiusJitter = (.() * - ) * CONFIG.DashRadiusJitter
sideRadius = CONFIG.DashSideRadius + radiusJitter
midPos = targetRoot.Position + sideVec * sideRadius
midPos = .(midPos.X, y + CONFIG.DashArcHeight, midPos.Z)
lookDir = targetRoot.CFrame.LookVector
behindDest = targetRoot.Position - lookDir * CONFIG.BehindOffset
behindDest = .(behindDest.X, y, behindDest.Z)
totalDist = (startPos - midPos).Magnitude + (midPos - behindDest).Magnitude
baseDur = .(totalDist * CONFIG.DashSpeedPerStud, CONFIG.DashMinDuration, CONFIG.DashMaxDuration)
timeJitter = (.() * - ) * CONFIG.DashTimeJitter
duration = .(CONFIG.DashMinDuration, baseDur + timeJitter)
startTime = .()
targetRoot.Parent
alpha = (.() - startTime) / duration
alpha >=
easedAlpha = TweenService:(alpha, .EasingStyle.Cubic, .EasingDirection.InOut)
curLookDir = targetRoot.CFrame.LookVector
behindPos = targetRoot.Position - curLookDir * CONFIG.BehindOffset
behindPos = .(behindPos.X, y, behindPos.Z)
p1 = startPos:(midPos, easedAlpha)
p2 = midPos:(behindPos, easedAlpha)
pos = p1:(p2, easedAlpha)
hrp.CFrame = .(pos, .(targetRoot.Position.X, y, targetRoot.Position.Z))
RunService.Heartbeat:()
targetRoot.Parent
curLookDir = targetRoot.CFrame.LookVector
behindPos = targetRoot.Position - curLookDir * CONFIG.BehindOffset
behindPos = .(behindPos.X, y, behindPos.Z)
hrp.CFrame = .(behindPos, .(targetRoot.Position.X, y, targetRoot.Position.Z))
( .. side .. .(, duration, sideRadius))
isCooling =
isRetrying =
chainCount =
lastFireTime =
lockedTarget =
oldNamecall
oldNamecall = (, , (self, ...)
() ~= self ~= targetRemote
(self, ...)
isRetrying (self, ...)
isCooling (self, ...)
isCooling =
now = ()
(now - lastFireTime) > CONFIG.ChainResetTime
chainCount =
lockedTarget =
()
lastFireTime = now
chainCount = chainCount +
(.(, chainCount))
result = (self, ...)
args = { ... }
lockedTarget lockedTarget.Parent (lockedTarget)
lockedTarget = ()
target = lockedTarget
targetRoot = target target:()
targetRoot targetRoot.Parent
(targetRoot)
targetRoot targetRoot.Parent (targetRoot)
.(()
(targetRoot)
)
.(CONFIG.FireDelay, ()
chainCount ==
hp = (target)
hp > CONFIG.LowHPThreshold
(.(, hp, CONFIG.LowHPThreshold))
returnSkillRemote
(() returnSkillRemote:() )
chainCount =
lockedTarget =
()
.(() isCooling = )
(.(, hp, CONFIG.LowHPThreshold))
chainCount >=
chainCount =
lockedTarget =
()
targetRoot targetRoot.Parent (targetRoot)
(targetRoot)
.(() (targetRoot) )
.(()
.(CONFIG.RetryDelay)
targetRoot.Parent (targetRoot.Parent)
()
.(() isCooling = )
shouldRetryFire = (.retryfire ~= ) .retryfire CONFIG.RetryFire
perto = (targetRoot)
stillNotBehind = perto (targetRoot)
stillNotBehind
()
(targetRoot)
targetRoot.Parent (targetRoot.Parent)
stillNotBehind = (targetRoot)
stillNotBehind
()
shouldRetryFire
()
(targetRoot.Parent)
()
()
isRetrying =
(() targetRemote:(.(args)) )
.(CONFIG.FireDelay + CONFIG.FireDelayJitter)
(() targetRemote:(.(args)) )
isRetrying =
.(() isCooling = )
)
targetRoot targetRoot.Parent
(() targetRemote:(.(args)) )
.(() isCooling = )
)
result
)
( .. CONFIG.LowHPThreshold .. .. CONFIG.ChainResetTime .. )
.(()
.()
char = LocalPlayer.Character
char
info = char:()
info
disableChase = info:()
disableChase
(() disableChase:() )
flashChain = info:()
flashChain
(() flashChain:() )
)Auto blackflash
Stay safe
Never paste your .ROBLOSECURITY cookie anywhere, and use an alt account with scripts.

Universal