
Keyless

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local Debris = game:GetService("Debris")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local rootPart = character:FindFirstChild("HumanoidRootPart") or character
local abilityInProgress = false
local malShrineActive = false
local m1Cooldown = 2
local disCooldownTime = 5
local shrineCooldownTime = 18
local grappleCooldownTime = 5
local disNextAvailableTime = 0
local grappleNextAvailableTime = 0
local idleAnimId = "rbxassetid://115268929362938"
local walkAnimId = "rbxassetid://123678890237669"
local runAnimId = "rbxassetid://132086389849889"
local m1AnimId = "rbxassetid://135853087227453"
local function createAnimation(animId)
local anim = Instance.new("Animation")
anim.AnimationId = animId
return anim
end
local idleTrack = humanoid:LoadAnimation(createAnimation(idleAnimId))
local walkTrack = humanoid:LoadAnimation(createAnimation(walkAnimId))
local runTrack = humanoid:LoadAnimation(createAnimation(runAnimId))
local m1Track = humanoid:LoadAnimation(createAnimation(m1AnimId))
local walkingSoundBase = Instance.new("Sound")
walkingSoundBase.SoundId = "rbxassetid://99809965759734"
walkingSoundBase.Looped = false
walkingSoundBase.Volume = 1
walkingSoundBase.Parent = rootPart
local runningSoundBase = Instance.new("Sound")
runningSoundBase.SoundId = "rbxassetid://79222929114377"
runningSoundBase.Looped = false
runningSoundBase.Volume = 1
runningSoundBase.Parent = rootPart
local slashSfx = Instance.new("Sound")
slashSfx.SoundId = "rbxassetid://81361259756089"
slashSfx.Volume = 1
slashSfx.Parent = rootPart
local lastWalkingTime = 0
local lastRunningTime = 0
local walkingFootstepInterval = 0.5
local runningFootstepInterval = 0.3
local function updateAnimations()
if abilityInProgress then return end
local isMoving = humanoid.MoveDirection.Magnitude > 0
local isRunning = humanoid.WalkSpeed > 16
if isMoving then
if isRunning then
if not runTrack.IsPlaying then
idleTrack:Stop()
walkTrack:Stop()
runTrack:Play()
end
else
if not walkTrack.IsPlaying then
idleTrack:Stop()
runTrack:Stop()
walkTrack:Play()
end
end
else
if not idleTrack.IsPlaying then
walkTrack:Stop()
runTrack:Stop()
idleTrack:Play()
end
end
end
RunService.Heartbeat:Connect(function()
updateAnimations()
local currentTime = tick()
local isMoving = humanoid.MoveDirection.Magnitude > 0
local isRunning = humanoid.WalkSpeed > 16
if isMoving then
if isRunning and (currentTime - lastRunningTime >= runningFootstepInterval) then
local runSound = runningSoundBase:Clone()
runSound.Parent = rootPart
runSound:Play()
Debris:AddItem(runSound, runSound.TimeLength + 1)
lastRunningTime = currentTime
elseif (not isRunning) and (currentTime - lastWalkingTime >= walkingFootstepInterval) then
local walkSound = walkingSoundBase:Clone()
walkSound.Parent = rootPart
walkSound:Play()
Debris:AddItem(walkSound, walkSound.TimeLength + 1)
lastWalkingTime = currentTime
end
end
end)
local function stopAllAnimations()
local animator = humanoid:FindFirstChildOfClass("Animator")
if animator then
for _, track in ipairs(animator:GetPlayingAnimationTracks()) do
track:Stop()
end
end
end
local function playCustomAnimation(animationId, loop)
local anim = Instance.new("Animation")
anim.AnimationId = "rbxassetid://" .. animationId
local track = humanoid:LoadAnimation(anim)
track.Looped = loop or false
track:Play()
return track
end
local function playCustomSound(soundId)
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://" .. soundId
sound.Volume = 1
sound.Looped = false
sound.Parent = rootPart
sound:Play()
return sound
end
local originalWalkSpeed = humanoid.WalkSpeed
local originalJumpPower = humanoid.JumpPower
local freezeCFrame = rootPart.CFrame
local freezeConnection
local function freezeCharacter()
humanoid.WalkSpeed = 0
humanoid.JumpPower = 0
freezeCFrame = rootPart.CFrame
freezeConnection = RunService.Heartbeat:Connect(function()
rootPart.CFrame = freezeCFrame
end)
end
local function unfreezeCharacter()
humanoid.WalkSpeed = originalWalkSpeed
humanoid.JumpPower = originalJumpPower
if freezeConnection then
freezeConnection:Disconnect()
freezeConnection = nil
end
end
local screenGui = Instance.new("ScreenGui")
screenGui.Parent = player:WaitForChild("PlayerGui")
local function createLabel(size, pos, bgColor, txtColor, font, text)
local label = Instance.new("TextLabel")
label.Size = size
label.Position = pos
label.BackgroundColor3 = bgColor or Color3.new(1,0,0)
label.TextColor3 = txtColor or Color3.new(1,1,1)
label.Font = font or Enum.Font.SourceSansBold
label.TextScaled = true
label.Text = text or ""
label.Parent = screenGui
return label
end
local disLabel = createLabel(UDim2.new(0,200,0,50), UDim2.new(1,-210,1,-60), Color3.fromRGB(139,0,0), Color3.fromRGB(255,0,0), Enum.Font.SourceSansBold, "Dismantle")
local abilityLabel = createLabel(UDim2.new(0,300,0,50), UDim2.new(1,-320,0,20), Color3.new(1,1,1), Color3.fromRGB(255,200,0), Enum.Font.GothamBlack, "malevolent shrine")
local messageLabel = createLabel(UDim2.new(0,400,0,100), UDim2.new(0.5,-200,1,-150), Color3.new(1,1,1), Color3.fromRGB(255,0,0), Enum.Font.GothamBlack, "")
messageLabel.BackgroundTransparency = 1
local grappleLabel = createLabel(UDim2.new(0,300,0,50), UDim2.new(0,20,1,-70), Color3.new(1,1,1), Color3.fromRGB(255,200,0), Enum.Font.GothamBlack, "Grapple Ready")
grappleLabel.BackgroundTransparency = 1
local function updateDisLabel()
local remaining = disNextAvailableTime - tick()
if remaining > 0 then
disLabel.Text = string.format("Cooldown: %.1f", remaining)
else
disLabel.Text = "Dismantle"
end
end
local function updateAbilityLabel(text)
abilityLabel.Text = text or "malevolent shrine"
end
local function updateGrappleLabel(cooldown)
if cooldown and cooldown > 0 then
grappleLabel.Text = "Grapple - cooldown: " .. cooldown .. "s"
else
grappleLabel.Text = "Grapple Ready"
end
end
RunService.Heartbeat:Connect(updateDisLabel)
local function onM1Click()
if abilityInProgress or malShrineActive then return end
abilityInProgress = true
stopAllAnimations()
m1Track:Play()
slashSfx:Play()
task.wait(m1Cooldown)
abilityInProgress = false
end
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 then
onM1Click()
end
end)
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed or abilityInProgress or malShrineActive then return end
if input.KeyCode == Enum.KeyCode.V then
local currentTime = tick()
if currentTime < disNextAvailableTime then return end
disNextAvailableTime = currentTime + disCooldownTime
abilityInProgress = true
stopAllAnimations()
local anim = Instance.new("Animation")
anim.AnimationId = "rbxassetid://121162477402224"
local animTrack = humanoid:LoadAnimation(anim)
animTrack:Play()
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://81361259756089"
sound.Volume = 1
sound.Parent = rootPart
sound:Play()
Debris:AddItem(sound, sound.TimeLength + 1)
local played, err = pcall(function() animTrack.Stopped:Wait() end)
if not played then task.wait(1) end
abilityInProgress = false
end
end)
local canActivateShrine = true
local shrineCooldownRemaining = shrineCooldownTime
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed or abilityInProgress then return end
if input.KeyCode == Enum.KeyCode.B and canActivateShrine then
abilityInProgress = true
malShrineActive = true
canActivateShrine = false
updateAbilityLabel("Activating...")
stopAllAnimations()
freezeCharacter()
messageLabel.Text = "I'm tired of this"
local anim1 = playCustomAnimation("122580527125278", true)
task.wait(3)
anim1:Stop()
messageLabel.Text = "Let's end this NOW"
local anim2 = playCustomAnimation("96173779255396", true)
task.wait(3)
anim2:Stop()
messageLabel.Text = "Ryōiki Tenkai Fukuma Mizushi"
local anim3 = playCustomAnimation("101816924844805", false)
local sound = playCustomSound("88406027536494")
anim3.Stopped:Wait()
task.wait(3)
messageLabel.Text = ""
unfreezeCharacter()
malShrineActive = false
abilityInProgress = false
shrineCooldownRemaining = shrineCooldownTime
while shrineCooldownRemaining > 0 do
updateAbilityLabel("malevolent shrine - cooldown: " .. shrineCooldownRemaining .. "s")
task.wait(1)
shrineCooldownRemaining = shrineCooldownRemaining - 1
end
canActivateShrine = true
updateAbilityLabel()
end
end)
local canActivateGrapple = true
local grappleCooldownRemaining = grappleCooldownTime
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed or abilityInProgress or malShrineActive then return end
if input.KeyCode == Enum.KeyCode.N and canActivateGrapple then
if tick() < grappleNextAvailableTime then return end
grappleNextAvailableTime = tick() + grappleCooldownTime
abilityInProgress = true
canActivateGrapple = false
stopAllAnimations()
local grappleAnim = playCustomAnimation("121162477402224", false)
playCustomSound("118208498013260")
local mouse = player:GetMouse()
local targetPosition = mouse.Hit.p
local tweenInfo = TweenInfo.new(0.5, Enum.EasingStyle.Linear, Enum.EasingDirection.Out)
local goal = {Position = targetPosition}
local tween = TweenService:Create(rootPart, tweenInfo, goal)
tween:Play()
tween.Completed:Wait()
task.wait(0.2)
abilityInProgress = false
grappleCooldownRemaining = grappleCooldownTime
while grappleCooldownRemaining > 0 do
updateGrappleLabel(grappleCooldownRemaining)
task.wait(1)
grappleCooldownRemaining = grappleCooldownRemaining - 1
end
canActivateGrapple = true
updateGrappleLabel()
end
end)
![Forsaken Plus [Invicible,Autogen and more]](https://scriptblox.com/images/sb/18687417158-1791951163014.png)


Hey why'd you steal someones script?