The Kinetic Abilities Script -

-- Deduct energy module.AddEnergy(player, -20)

if nearest then local dmg = 20 * module.DamageMultiplier(serverEnergy) local targetHum = nearest:FindFirstChild("Humanoid") if targetHum then targetHum:TakeDamage(dmg) -- Knockback effect local direction = (nearest.HumanoidRootPart.Position - rootPart.Position).Unit targetHum:ApplyImpulse(direction * 50) end end The Kinetic Abilities Script

local player = game.Players.LocalPlayer local module = require(game.ReplicatedStorage.Modules.KineticAbilityHandler) local frame = script.Parent local fill = frame.Fill -- Deduct energy module

LocalScript inside StarterGui:

function KineticAbility.SetEnergy(player, amount) local new = math.clamp(amount, 0, KineticAbility.MaxEnergy) player:SetAttribute("KineticEnergy", new) end -- Deduct energy module.AddEnergy(player

-- Track sprinting state humanoid.Running:Connect(function(speed) sprinting = (speed > 0 and humanoid:GetState() == Enum.HumanoidStateType.Running) end)

function KineticAbility.AddEnergy(player, delta) local current = KineticAbility.GetEnergy(player) KineticAbility.SetEnergy(player, current + delta) end