local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local RunService = game:GetService("RunService") local Debris = game:GetService("Debris") local Players = game:GetService("Players") local Lighting = game:GetService("Lighting") local player = Players.LocalPlayer local camera = workspace.CurrentCamera local cooldowns = { E = false, Q = false, R = false } local isOverdriveActive = false local function screenShake(intensity, duration) local start = tick() local conn conn = RunService.RenderStepped:Connect(function() local elapsed = tick() - start if elapsed > duration then conn:Disconnect() return end local fade = 1 - (elapsed/duration) local cur = intensity * fade camera.CFrame = camera.CFrame * CFrame.Angles( math.rad((math.random()-0.5)*cur), math.rad((math.random()-0.5)*cur), 0) end) end local function impactFrame(color, duration, transparency) local gui = Instance.new("ScreenGui", player:WaitForChild("PlayerGui")) gui.IgnoreGuiInset = true local frame = Instance.new("Frame", gui) frame.Size = UDim2.new(1, 0, 1, 0) frame.BackgroundColor3 = color frame.BackgroundTransparency = transparency or 0 TweenService:Create(frame, TweenInfo.new(duration, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {BackgroundTransparency = 1}):Play() Debris:AddItem(gui, duration + 0.1) end local function createExpandingRing(pos, color, endSize, duration, orientation) local ring = Instance.new("Part", workspace) ring.Shape = Enum.PartType.Cylinder ring.Material = Enum.Material.Neon ring.Color = color ring.Size = Vector3.new(0.5, 2, 2) ring.Position = pos ring.Orientation = orientation or Vector3.new(0, 0, 90) ring.Anchored = true ring.CanCollide = false TweenService:Create(ring, TweenInfo.new(duration, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Size = Vector3.new(0.1, endSize, endSize), Transparency = 1}):Play() Debris:AddItem(ring, duration + 0.1) end local function createFloatingDebris(pos, amount, power) for i = 1, (amount or 8) do local rock = Instance.new("Part", workspace) rock.Size = Vector3.new(math.random(1,4)/2, math.random(1,4)/2, math.random(1,4)/2) rock.Material = Enum.Material.Slate rock.Color = Color3.fromRGB(50, 50, 50) rock.Position = pos + Vector3.new(math.random(-5, 5), -2, math.random(-5, 5)) rock.Anchored = true rock.CanCollide = false local upTween = TweenService:Create(rock, TweenInfo.new(1, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out), { Position = rock.Position + Vector3.new(0, math.random(10, power or 25), 0), Transparency = 1, Orientation = Vector3.new(math.random(-180, 180), math.random(-180, 180), math.random(-180, 180)) }) upTween:Play() Debris:AddItem(rock, 1.2) end end local function createKineticUI() if player:WaitForChild("PlayerGui"):FindFirstChild("KineticUI") then player.PlayerGui.KineticUI:Destroy() end local gui = Instance.new("ScreenGui", player.PlayerGui) gui.Name = "KineticUI" gui.ResetOnSpawn = false local mainFrame = Instance.new("Frame", gui) mainFrame.Size = UDim2.new(0, 260, 0, 150) mainFrame.Position = UDim2.new(1, -280, 0.5, -75) mainFrame.BackgroundColor3 = Color3.fromRGB(20, 10, 10) mainFrame.BorderSizePixel = 3 mainFrame.BorderColor3 = Color3.fromRGB(255, 50, 0) local layout = Instance.new("UIListLayout", mainFrame) layout.SortOrder = Enum.SortOrder.LayoutOrder layout.Padding = UDim.new(0, 5) local function createSkillRow(key, name) local row = Instance.new("Frame", mainFrame) row.Size = UDim2.new(1, 0, 0, 38) row.BackgroundColor3 = Color3.fromRGB(40, 15, 15) row.BorderSizePixel = 0 local keyLabel = Instance.new("TextLabel", row) keyLabel.Size = UDim2.new(0, 45, 1, 0) keyLabel.BackgroundTransparency = 1 keyLabel.Text = "[" .. key .. "]" keyLabel.TextColor3 = Color3.fromRGB(255, 100, 0) keyLabel.Font = Enum.Font.GothamBlack keyLabel.TextSize = 20 local nameLabel = Instance.new("TextLabel", row) nameLabel.Size = UDim2.new(1, -50, 1, 0) nameLabel.Position = UDim2.new(0, 50, 0, 0) nameLabel.BackgroundTransparency = 1 nameLabel.Text = name nameLabel.TextColor3 = Color3.fromRGB(255, 255, 255) nameLabel.Font = Enum.Font.GothamBold nameLabel.TextSize = 15 nameLabel.TextXAlignment = Enum.TextXAlignment.Left end createSkillRow("E", "Heat Overdrive (Toggle)") createSkillRow("Q", "Sonic Impact (Dash)") createSkillRow("R", "World Stillness (Hyper)") end local overdriveAura, overdriveConn local function toggleHeatOverdrive(character) local root = character:FindFirstChild("HumanoidRootPart") local humanoid = character:FindFirstChild("Humanoid") if not root or not humanoid then return end if isOverdriveActive then isOverdriveActive = false humanoid.WalkSpeed = 16 if overdriveAura then overdriveAura:Destroy() end if overdriveConn then overdriveConn:Disconnect() end TweenService:Create(camera, TweenInfo.new(0.5), {FieldOfView = 70}):Play() return end isOverdriveActive = true humanoid.WalkSpeed = 60 impactFrame(Color3.fromRGB(255, 50, 0), 0.1, 0.5) screenShake(3, 0.3) TweenService:Create(camera, TweenInfo.new(0.5), {FieldOfView = 90}):Play() overdriveAura = Instance.new("Attachment", root) local fire = Instance.new("ParticleEmitter", overdriveAura) fire.Texture = "rbxassetid://284205403" fire.Color = ColorSequence.new({ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 200, 0)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 0))}) fire.Size = NumberSequence.new({NumberSequenceKeypoint.new(0, 2), NumberSequenceKeypoint.new(1, 0)}) fire.Rate = 100 fire.Speed = NumberRange.new(5, 10) fire.Lifetime = NumberRange.new(0.5) fire.EmissionDirection = Enum.NormalId.Top local lastFootstep = 0 overdriveConn = RunService.Heartbeat:Connect(function() if root.AssemblyLinearVelocity.Magnitude > 20 and tick() - lastFootstep > 0.1 then lastFootstep = tick() createFloatingDebris(root.Position, 2, 10) local scorch = Instance.new("Part", workspace) scorch.Size = Vector3.new(3, 0.1, 3) scorch.Position = root.Position - Vector3.new(0, 2.5, 0) scorch.Anchored = true scorch.CanCollide = false scorch.Material = Enum.Material.Neon scorch.Color = Color3.fromRGB(255, 50, 0) TweenService:Create(scorch, TweenInfo.new(0.5), {Transparency = 1, Size = Vector3.new(0,0,0)}):Play() Debris:AddItem(scorch, 0.6) end end) end local function castSonicImpact(character) local root = character:FindFirstChild("HumanoidRootPart") local humanoid = character:FindFirstChild("Humanoid") if not root or not humanoid then return end local startPos = root.Position local dashDir = root.CFrame.LookVector local dashDistance = 80 local machCone = Instance.new("Part", workspace) machCone.Size = Vector3.new(5, 5, 5) machCone.CFrame = root.CFrame * CFrame.Angles(math.rad(90), 0, 0) machCone.Material = Enum.Material.Neon machCone.Color = Color3.fromRGB(255, 255, 255) machCone.Anchored = true machCone.CanCollide = false local mesh = Instance.new("SpecialMesh", machCone) mesh.MeshType = Enum.MeshType.FileMesh mesh.MeshId = "rbxassetid://1033714" -- Cone Mesh mesh.Scale = Vector3.new(3, 10, 3) TweenService:Create(machCone, TweenInfo.new(0.3, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out), { CFrame = machCone.CFrame + (dashDir * dashDistance), Transparency = 1, Size = Vector3.new(10, 10, 10) }):Play() Debris:AddItem(machCone, 0.4) createExpandingRing(startPos, Color3.fromRGB(255, 100, 0), 40, 0.3) createFloatingDebris(startPos, 15, 30) screenShake(8, 0.3) impactFrame(Color3.fromRGB(255, 255, 255), 0.1) local targetCFrame = root.CFrame + (dashDir * dashDistance) local rayParams = RaycastParams.new() rayParams.FilterDescendantsInstances = {character} local hit = workspace:Raycast(startPos, dashDir * dashDistance, rayParams) if hit then targetCFrame = root.CFrame + (dashDir * (hit.Distance - 3)) end root.Anchored = true local dashTween = TweenService:Create(root, TweenInfo.new(0.15, Enum.EasingStyle.Linear), {CFrame = targetCFrame}) dashTween:Play() dashTween.Completed:Connect(function() root.Anchored = false root.AssemblyLinearVelocity = Vector3.zero createExpandingRing(root.Position, Color3.fromRGB(255, 50, 0), 60, 0.4) createFloatingDebris(root.Position, 20, 40) screenShake(10, 0.4) end) end local function castWorldStillness(character) local root = character:FindFirstChild("HumanoidRootPart") local humanoid = character:FindFirstChild("Humanoid") if not root or not humanoid then return end impactFrame(Color3.fromRGB(255, 255, 255), 0.2, 0) screenShake(12, 0.5) createExpandingRing(root.Position, Color3.fromRGB(255, 255, 0), 200, 1) local cc = Instance.new("ColorCorrectionEffect", Lighting) cc.Saturation = -1 cc.Contrast = 0.5 cc.Brightness = -0.2 cc.TintColor = Color3.fromRGB(255, 255, 150) local origSpeed = humanoid.WalkSpeed humanoid.WalkSpeed = 150 local lightningAtt = Instance.new("Attachment", root) local lightning = Instance.new("ParticleEmitter", lightningAtt) lightning.Texture = "rbxassetid://284205403" lightning.Color = ColorSequence.new(Color3.fromRGB(255, 255, 0)) lightning.Size = NumberSequence.new(4, 0) lightning.Speed = NumberRange.new(50, 150) lightning.Drag = 3 lightning.SpreadAngle = Vector2.new(360, 360) lightning.Lifetime = NumberRange.new(0.2, 0.4) lightning.Squash = NumberSequence.new(5) lightning.Rate = 200 local origFOV = camera.FieldOfView TweenService:Create(camera, TweenInfo.new(0.3), {FieldOfView = 110}):Play() task.delay(5, function() humanoid.WalkSpeed = origSpeed lightning:Destroy() lightningAtt:Destroy() TweenService:Create(cc, TweenInfo.new(1), {Saturation = 0, Contrast = 0, Brightness = 0, TintColor = Color3.fromRGB(255,255,255)}):Play() TweenService:Create(camera, TweenInfo.new(0.5), {FieldOfView = origFOV}):Play() Debris:AddItem(cc, 1.2) createExpandingRing(root.Position, Color3.fromRGB(255, 255, 255), 100, 0.5) screenShake(5, 0.3) end) end createKineticUI() UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end local character = player.Character if not character then return end if input.KeyCode == Enum.KeyCode.E and not cooldowns.E then cooldowns.E = true toggleHeatOverdrive(character) task.delay(1, function() cooldowns.E = false end) end if input.KeyCode == Enum.KeyCode.Q and not cooldowns.Q then cooldowns.Q = true castSonicImpact(character) task.delay(4, function() cooldowns.Q = false end) end if input.KeyCode == Enum.KeyCode.R and not cooldowns.R then cooldowns.R = true castWorldStillness(character) task.delay(12, function() cooldowns.R = false end) end end)