local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local Workspace = game:GetService("Workspace") local CoreGui = game:GetService("CoreGui") local SoundService = game:GetService("SoundService") local Lighting = game:GetService("Lighting") local TweenService = game:GetService("TweenService") local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local hrp = character:WaitForChild("HumanoidRootPart") local mouse = player:GetMouse() local camera = Workspace.CurrentCamera local allConnections = {} local originalGravity = Workspace.Gravity local ANIMATIONS = { Idle = 72492959889389, Run = 18537384940, } local LOOP_ANIMATION_IDS = {} for _, id in pairs(ANIMATIONS) do LOOP_ANIMATION_IDS["rbxassetid://" .. id] = true end local animationReloadAttempts = 0 local maxAnimationReloadAttempts = 5 local animationTracks = {} local FLIGHT_ANIM_ID = "120303626369803" local FLIGHT_IDLE_EMOTE_ID = "118287320739937" local TELEPORT_EMOTE_ID = "133631846764964" local FLIGHT_FAST_SOUND_ID = 596046130 local JUMP_SOUND_ID = 90860337520096 local TELEPORT_CHARGE_SOUND_ID = 5066021887 local KAIOKEN_ANIMATION_ID = 132846696697494 local KAIOKEN_EXPLOSION_SOUND_ID = 18704549552 local scriptActive = true local originalSwimSpeed = 16 local customAnimationsLoaded = false local originalAnimations = { Idle1 = nil, Idle2 = nil, Walk = nil, Run = nil, Jump = nil, Fall = nil, Climb = nil, Swim = nil, SwimIdle = nil } local flying = false local flightSpeed = 55 local flightSpeedMode = 1 local FLIGHT_SPEEDS = {55, 100, 250} local FLIGHT_MAX_SPEED = 500 local moveState = {forward = 0, backward = 0, left = 0, right = 0, up = 0, down = 0} local currentVelocity = Vector3.new(0, 0, 0) local currentCF = nil local currentRoll = 0 local maxRoll = 45 local flightConns = {} local currentAnimTrack = nil local flightFastAnimTrack = nil local lastMoveTime = tick() local AUTO_RESET_DELAY = 0.01 local flightFastSound = nil local flightIdleTrack = nil local flightEmoteActive = false local flightEmoteCooldown = false local teleporting = false local teleportGui = nil local lastJumpSoundTime = 0 local isKaiokenActive = false local kaiokenAnimTrack = nil local kaiokenExplosionSound = nil local kaiokenConnections = {} local KAIOKEN_DURATION = 300 local kaiokenTimer = 0 local kaiokenExplosion = nil local kaiokenFlameAura = nil local kaiokenFlameParticles = {} local KAIOKEN_FLAME_COLOR = Color3.fromRGB(255, 50, 50) local KAIOKEN_FLAME_SIZE = 30 local kaiokenExplosionActive = false local originalWalkSpeed = 16 local originalJumpPower = 50 local originalJumpHeight = 7.2 local originalUseJumpPower = false local kaiokenUpdateConnection = nil local originalBodyColors = {} local function connect(event, func) local conn = event:Connect(func) table.insert(allConnections, conn) return conn end local function createKaiokenExplosion() if not character or not hrp then return end kaiokenExplosion = Instance.new("Part") kaiokenExplosion.Name = "KaiokenExplosion" kaiokenExplosion.Size = Vector3.new(5, 5, 5) kaiokenExplosion.Shape = Enum.PartType.Ball kaiokenExplosion.Material = Enum.Material.Neon kaiokenExplosion.BrickColor = BrickColor.new("Really red") kaiokenExplosion.Transparency = 0.2 kaiokenExplosion.CanCollide = false kaiokenExplosion.Anchored = true kaiokenExplosion.Locked = true kaiokenExplosion.Position = hrp.Position kaiokenExplosion.Parent = Workspace local explosionLight = Instance.new("PointLight") explosionLight.Name = "KaiokenExplosionLight" explosionLight.Brightness = 30 explosionLight.Range = 60 explosionLight.Color = Color3.fromRGB(255, 100, 100) explosionLight.Parent = kaiokenExplosion for i = 1, 40 do local particle = Instance.new("ParticleEmitter") particle.Name = "ExplosionParticle" .. i particle.Texture = "rbxassetid://242563111" particle.Lifetime = NumberRange.new(0.3, 1.2) particle.Rate = 150 particle.Speed = NumberRange.new(30, 70) particle.Size = NumberSequence.new({ NumberSequenceKeypoint.new(0, 2.0), NumberSequenceKeypoint.new(0.3, 3.5), NumberSequenceKeypoint.new(0.7, 2.0), NumberSequenceKeypoint.new(1, 0) }) particle.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0), NumberSequenceKeypoint.new(0.5, 0.2), NumberSequenceKeypoint.new(1, 1) }) particle.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 150, 150)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(255, 100, 100)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 50, 50)) }) particle.Acceleration = Vector3.new(0, 40, 0) particle.Rotation = NumberRange.new(0, 360) particle.RotSpeed = NumberRange.new(-100, 100) particle.Parent = kaiokenExplosion end task.spawn(function() for i = 1, 10 do if kaiokenExplosion then kaiokenExplosion.Size = kaiokenExplosion.Size + Vector3.new(1.5, 1.5, 1.5) explosionLight.Brightness = explosionLight.Brightness + 2 explosionLight.Range = explosionLight.Range + 5 end task.wait(0.05) end local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local tween = TweenService:Create(kaiokenExplosion, tweenInfo, {Size = Vector3.new(20, 20, 20), Transparency = 1}) tween:Play() local lightTween = TweenService:Create(explosionLight, tweenInfo, {Brightness = 0, Range = 0}) lightTween:Play() end) end local function applyKaiokenBuffs() if not humanoid then return end humanoid.WalkSpeed = 100 humanoid.JumpHeight = 55 end local function createKaiokenVisuals() if not character or not hrp then return end local bc = character:FindFirstChildWhichIsA("BodyColors") if bc then originalBodyColors = { Head = bc.HeadColor3, LArm = bc.LeftArmColor3, RArm = bc.RightArmColor3, LLeg = bc.LeftLegColor3, RLeg = bc.RightLegColor3, Torso = bc.TorsoColor3 } local kColor = Color3.fromRGB(255, 150, 150) bc.HeadColor3 = kColor bc.LeftArmColor3 = kColor bc.RightArmColor3 = kColor bc.LeftLegColor3 = kColor bc.RightLegColor3 = kColor bc.TorsoColor3 = kColor end local highlight = Instance.new("Highlight") highlight.Name = "KaiokenHighlight" highlight.Adornee = character highlight.FillColor = Color3.fromRGB(255, 0, 0) highlight.OutlineColor = Color3.fromRGB(255, 0, 0) highlight.FillTransparency = 0.5 highlight.OutlineTransparency = 0 highlight.Parent = character local light = Instance.new("PointLight") light.Name = "KaiokenLight" light.Color = Color3.fromRGB(255, 0, 0) light.Brightness = 4 light.Range = 16 light.Parent = hrp end local function removeKaiokenBuffs() if not humanoid then return end humanoid.WalkSpeed = originalWalkSpeed humanoid.JumpPower = originalJumpPower humanoid.JumpHeight = originalJumpHeight humanoid.UseJumpPower = originalUseJumpPower end local function cleanupKaioken() if isKaiokenActive then removeKaiokenBuffs() if character:FindFirstChild("KaiokenHighlight") then character.KaiokenHighlight:Destroy() end if hrp:FindFirstChild("KaiokenLight") then hrp.KaiokenLight:Destroy() end local bc = character:FindFirstChildWhichIsA("BodyColors") if bc and originalBodyColors.Head then bc.HeadColor3 = originalBodyColors.Head bc.LeftArmColor3 = originalBodyColors.LArm bc.RightArmColor3 = originalBodyColors.RArm bc.LeftLegColor3 = originalBodyColors.LLeg bc.RightLegColor3 = originalBodyColors.RLeg bc.TorsoColor3 = originalBodyColors.Torso end if kaiokenAnimTrack then kaiokenAnimTrack:Stop(0.1) kaiokenAnimTrack = nil end if kaiokenExplosionSound then kaiokenExplosionSound:Stop() kaiokenExplosionSound:Destroy() kaiokenExplosionSound = nil end if kaiokenExplosion then kaiokenExplosion:Destroy() kaiokenExplosion = nil end for _, conn in ipairs(kaiokenConnections) do if conn and conn.Connected then pcall(function() conn:Disconnect() end) end end kaiokenConnections = {} isKaiokenActive = false kaiokenTimer = 0 kaiokenExplosionActive = false end end local function cleanupEverything() scriptActive = false if flying then if flightFastSound then flightFastSound:Stop() flightFastSound:Destroy() end Workspace.Gravity = originalGravity if humanoid then humanoid.PlatformStand = false end if hrp then if hrp:FindFirstChild("FlyGyro") then hrp.FlyGyro:Destroy() end if hrp:FindFirstChild("FlyVelocity") then hrp.FlyVelocity:Destroy() end end if currentAnimTrack then currentAnimTrack:Stop(0.1) currentAnimTrack = nil end if flightFastAnimTrack then flightFastAnimTrack:Stop() flightFastAnimTrack = nil end if flightIdleTrack then flightIdleTrack:Stop() flightIdleTrack = nil end end for _, conn in ipairs(flightConns) do if conn and conn.Connected then pcall(function() conn:Disconnect() end) end end flightConns = {} moveState = {forward=0, backward=0, left=0, right=0, up=0, down=0} if teleportGui then teleportGui:Destroy() teleportGui = nil end cleanupKaioken() for _, conn in ipairs(allConnections) do if conn and conn.Connected then pcall(function() conn:Disconnect() end) end end allConnections = {} if humanoid then humanoid.WalkSpeed = 16 humanoid.JumpPower = 50 humanoid.UseJumpPower = true humanoid.PlatformStand = false local animate = character:FindFirstChild("Animate") if animate then animate.Disabled = false end end if customAnimationsLoaded then local character = player.Character if character then local animate = character:FindFirstChild("Animate") if animate then animate.Disabled = false end end customAnimationsLoaded = false end for _, track in pairs(animationTracks) do if track then pcall(function() track:Stop() end) end end flying = false teleporting = false isKaiokenActive = false end local function restoreOriginalAnimations() if not customAnimationsLoaded then return end local character = player.Character if not character then return end local animate = character:FindFirstChild("Animate") if not animate then return end if originalAnimations.Idle1 then local anim1 = animate.idle:FindFirstChild("Animation1") if anim1 then anim1.AnimationId = originalAnimations.Idle1 end end if originalAnimations.Idle2 then local anim2 = animate.idle:FindFirstChild("Animation2") if anim2 then anim2.AnimationId = originalAnimations.Idle2 end end if originalAnimations.Walk then local walkAnim = animate.walk:FindFirstChild("WalkAnim") if walkAnim then walkAnim.AnimationId = originalAnimations.Walk end end if originalAnimations.Run then local runAnim = animate.run:FindFirstChild("RunAnim") if runAnim then runAnim.AnimationId = originalAnimations.Run end end if originalAnimations.Jump then local jumpAnim = animate.jump:FindFirstChild("JumpAnim") if jumpAnim then jumpAnim.AnimationId = originalAnimations.Jump end end if originalAnimations.Fall then local fallAnim = animate.fall:FindFirstChild("FallAnim") if fallAnim then fallAnim.AnimationId = originalAnimations.Fall end end if originalAnimations.Climb then local climbAnim = animate.climb:FindFirstChild("ClimbAnim") if climbAnim then climbAnim.AnimationId = originalAnimations.Climb end end if originalAnimations.Swim then local swimAnim = animate.swim:FindFirstChild("Swim") if swimAnim then swimAnim.AnimationId = originalAnimations.Swim end end if originalAnimations.SwimIdle then local swimIdleAnim = animate.swimidle:FindFirstChild("SwimIdle") if swimIdleAnim then swimIdleAnim.AnimationId = originalAnimations.SwimIdle end end animate.Enabled = false task.wait(0.05) animate.Enabled = true customAnimationsLoaded = false end local function waitForAnimate(character, timeout) timeout = timeout or 1 local startTime = tick() while tick() - startTime < timeout do local animate = character:FindFirstChild("Animate") if animate and animate:FindFirstChild("run") and animate:FindFirstChild("idle") then return animate end task.wait(0.1) end return nil end local function setAnimation(animationType, animationId, animate) if not animate or not animationId then return false end local success = pcall(function() local idStr = "rbxassetid://" .. tostring(animationId) if animationType == "Idle" then local anim1 = animate.idle:FindFirstChild("Animation1") local anim2 = animate.idle:FindFirstChild("Animation2") if anim1 then anim1.AnimationId = idStr end if anim2 then anim2.AnimationId = idStr end elseif animationType == "Walk" then local walkAnim = animate.walk:FindFirstChild("WalkAnim") if walkAnim then walkAnim.AnimationId = idStr end elseif animationType == "Run" then local runAnim = animate.run:FindFirstChild("RunAnim") if runAnim then runAnim.AnimationId = idStr end elseif animationType == "Jump" then local jumpAnim = animate.jump:FindFirstChild("JumpAnim") if jumpAnim then jumpAnim.AnimationId = idStr end elseif animationType == "Fall" then local fallAnim = animate.fall:FindFirstChild("FallAnim") if fallAnim then fallAnim.AnimationId = idStr end elseif animationType == "Climb" then local climbAnim = animate.climb:FindFirstChild("ClimbAnim") if climbAnim then climbAnim.AnimationId = idStr end elseif animationType == "Swim" and animate:FindFirstChild("swim") then local swimAnim = animate.swim:FindFirstChild("Swim") if swimAnim then swimAnim.AnimationId = idStr end elseif animationType == "SwimIdle" and animate:FindFirstChild("swimidle") then local swimIdleAnim = animate.swimidle:FindFirstChild("SwimIdle") if swimIdleAnim then swimIdleAnim.AnimationId = idStr end end end) return success end local function saveOriginalAnimations(animate) if not animate then return end originalAnimations = { Idle1 = nil, Idle2 = nil, Walk = nil, Run = nil, Jump = nil, Fall = nil, Climb = nil, Swim = nil, SwimIdle = nil } if animate.idle then local anim1 = animate.idle:FindFirstChild("Animation1") local anim2 = animate.idle:FindFirstChild("Animation2") if anim1 then originalAnimations.Idle1 = anim1.AnimationId end if anim2 then originalAnimations.Idle2 = anim2.AnimationId end end if animate.walk then local walkAnim = animate.walk:FindFirstChild("WalkAnim") if walkAnim then originalAnimations.Walk = walkAnim.AnimationId end end if animate.run then local runAnim = animate.run:FindFirstChild("RunAnim") if runAnim then originalAnimations.Run = runAnim.AnimationId end end if animate.jump then local jumpAnim = animate.jump:FindFirstChild("JumpAnim") if jumpAnim then originalAnimations.Jump = jumpAnim.AnimationId end end if animate.fall then local fallAnim = animate.fall:FindFirstChild("FallAnim") if fallAnim then originalAnimations.Fall = fallAnim.AnimationId end end if animate.climb then local climbAnim = animate.climb:FindFirstChild("ClimbAnim") if climbAnim then originalAnimations.Climb = climbAnim.AnimationId end end if animate:FindFirstChild("swim") then local swimAnim = animate.swim:FindFirstChild("Swim") if swimAnim then originalAnimations.Swim = swimAnim.AnimationId end end if animate:FindFirstChild("swimidle") then local swimIdleAnim = animate.swimidle:FindFirstChild("SwimIdle") if swimIdleAnim then originalAnimations.SwimIdle = swimIdleAnim.AnimationId end end end local function waitForCharacter() local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid", 10) return character, humanoid end local function stopAllAnimations(hum) if not hum then return end for _, track in ipairs(hum:GetPlayingAnimationTracks()) do track:Stop(0) end end local function reloadAnimationsWithRetry() if not scriptActive then return false end for attempt = 1, maxAnimationReloadAttempts do local success = loadAnimations() if success then animationReloadAttempts = 0 return true end if attempt < maxAnimationReloadAttempts then task.wait(0.5) end end animationReloadAttempts = animationReloadAttempts + 1 if animationReloadAttempts >= 3 then return false end return false end local function loadAnimations() local character, humanoid = waitForCharacter() if not character or not humanoid then return false end local animate = waitForAnimate(character) if not animate then return false end saveOriginalAnimations(animate) stopAllAnimations(humanoid) task.wait(0.1) local animTypes = {"Idle", "Walk", "Run", "Jump", "Fall", "Climb", "Swim", "SwimIdle"} for _, animType in ipairs(animTypes) do if ANIMATIONS[animType] then setAnimation(animType, ANIMATIONS[animType], animate) end end animate.Enabled = false task.wait(0.1) animate.Enabled = true local function refreshState() if humanoid and humanoid.Parent then humanoid:ChangeState(Enum.HumanoidStateType.Landed) task.wait(0.05) humanoid:ChangeState(Enum.HumanoidStateType.Freefall) end end refreshState() customAnimationsLoaded = true return true end local function makeHumanoidInvisible() for _, part in ipairs(character:GetDescendants()) do if part:IsA("BasePart") or part:IsA("Decal") then part.Transparency = 1 end end end local function makeHumanoidVisible() for _, part in ipairs(character:GetDescendants()) do if part:IsA("BasePart") then if part ~= hrp then part.Transparency = 0 end elseif part:IsA("Decal") then part.Transparency = 0 end end end local function disableFootstepSounds() for _, descendant in ipairs(character:GetDescendants()) do if descendant:IsA("Sound") and descendant.Name:lower():find("step") then descendant.Volume = 0 if descendant.Playing then descendant:Stop() end end end end local function enableFootstepSounds() for _, descendant in ipairs(character:GetDescendants()) do if descendant:IsA("Sound") and descendant.Name:lower():find("step") then descendant.Volume = 1 end end end local function playAnimation(animId, startTime, speed, loop) if not scriptActive then return end if not character or not humanoid then return end if currentAnimTrack then currentAnimTrack:Stop(0.1) currentAnimTrack = nil end for _, track in ipairs(humanoid:GetPlayingAnimationTracks()) do track:Stop() end local anim = Instance.new("Animation") anim.AnimationId = "rbxassetid://" .. tostring(animId) currentAnimTrack = humanoid:LoadAnimation(anim) currentAnimTrack.Looped = loop or false currentAnimTrack:Play() currentAnimTrack.TimePosition = startTime or 0 currentAnimTrack:AdjustSpeed(speed or 1) animationTracks[animId] = currentAnimTrack end local function stopAnimation() if not humanoid then return end if currentAnimTrack then currentAnimTrack:Stop(0.1) currentAnimTrack = nil end for _, track in ipairs(humanoid:GetPlayingAnimationTracks()) do track:Stop() end end local function disableDefaultAnimate() if not character then return end local animate = character:FindFirstChild("Animate") if animate then animate.Disabled = true end end local function enableDefaultAnimate() if not character then return end local animate = character:FindFirstChild("Animate") if animate then animate.Disabled = false end end local function playFlightFastAnimation() if not scriptActive then return end if not humanoid then return end if flightFastAnimTrack then flightFastAnimTrack:Stop(0.1) flightFastAnimTrack = nil end local anim = Instance.new("Animation") anim.AnimationId = "rbxassetid://" .. FLIGHT_ANIM_ID flightFastAnimTrack = humanoid:LoadAnimation(anim) flightFastAnimTrack:Play() flightFastAnimTrack:AdjustSpeed(1.5) end local function stopFlightFastAnimation() if flightFastAnimTrack then flightFastAnimTrack:Stop(0.1) flightFastAnimTrack = nil end end local function playFlightIdleEmote() if flightIdleTrack then flightIdleTrack:Stop() flightIdleTrack = nil end if not humanoid or not flying then return end local anim = Instance.new("Animation") anim.AnimationId = "rbxassetid://" .. FLIGHT_IDLE_EMOTE_ID flightIdleTrack = humanoid:LoadAnimation(anim) flightIdleTrack.Priority = Enum.AnimationPriority.Action4 flightIdleTrack:Play() flightIdleTrack.Looped = true end local function stopFlight() if not flying then return end flying = false for _, conn in ipairs(flightConns) do if conn and conn.Connected then pcall(function() conn:Disconnect() end) end end flightConns = {} moveState = {forward=0, backward=0, left=0, right=0, up=0, down=0} Workspace.Gravity = originalGravity if humanoid then humanoid.PlatformStand = false end stopAnimation() enableDefaultAnimate() stopFlightFastAnimation() if humanoid then humanoid.Jump = true end if hrp and hrp:FindFirstChild("FlyGyro") then hrp.FlyGyro:Destroy() end if hrp and hrp:FindFirstChild("FlyVelocity") then hrp.FlyVelocity:Destroy() end end local function startFlight() if not scriptActive then return end if flying or not character or not hrp or not humanoid then return end flying = true originalGravity = Workspace.Gravity Workspace.Gravity = 192.2 humanoid.PlatformStand = true playAnimation(113420763488155, 4, 1, true) disableFootstepSounds() local gyro = Instance.new("BodyGyro") gyro.Name = "FlyGyro" gyro.Parent = hrp gyro.P = 90000 gyro.MaxTorque = Vector3.new(9e9, 9e9, 9e9) gyro.CFrame = hrp.CFrame local bv = Instance.new("BodyVelocity") bv.Name = "FlyVelocity" bv.Parent = hrp bv.MaxForce = Vector3.new(9e9, 9e9, 9e9) bv.Velocity = Vector3.new(0, 0, 0) currentVelocity = Vector3.new(0, 0, 0) local lastUpdate = tick() lastMoveTime = tick() local flightUpdate = connect(RunService.RenderStepped, function(deltaTime) if not scriptActive then flightUpdate:Disconnect() return end if not character or not hrp or not humanoid then return end local cam = Workspace.CurrentCamera local now = tick() local delta = now - lastUpdate lastUpdate = now local fwd = moveState.forward - moveState.backward local side = moveState.right - moveState.left local moveDirection = Vector3.new(0, 0, 0) if fwd ~= 0 then moveDirection = moveDirection + (cam.CFrame.LookVector * fwd) end if side ~= 0 then moveDirection = moveDirection + (cam.CFrame.RightVector * side) end if moveDirection.Magnitude > 0 then moveDirection = moveDirection.Unit end local vertical = 0 if moveState.up > 0 then vertical = 1 elseif moveState.down > 0 then vertical = -1 end local desiredVelocity = Vector3.new(0, 0, 0) if moveDirection.Magnitude > 0 then desiredVelocity = desiredVelocity + (moveDirection * flightSpeed) end if vertical ~= 0 then desiredVelocity = desiredVelocity + Vector3.new(0, vertical * flightSpeed * 0.6, 0) end local isMoving = desiredVelocity.Magnitude > 0.1 if isMoving then lastMoveTime = now currentVelocity = currentVelocity:Lerp(desiredVelocity, 0.15) local desiredCF if fwd > 0 then desiredCF = cam.CFrame * CFrame.Angles(math.rad(0), 0, math.rad(currentRoll * 0.5)) elseif fwd < 0 then desiredCF = cam.CFrame * CFrame.Angles(math.rad(30), 0, math.rad(currentRoll * 0.5)) else desiredCF = cam.CFrame end if currentCF then currentCF = currentCF:Lerp(desiredCF, 0.25) else currentCF = desiredCF end gyro.CFrame = currentCF else currentVelocity = currentVelocity:Lerp(Vector3.new(0, 0, 0), 0.3) if now - lastMoveTime > AUTO_RESET_DELAY then flightSpeed = FLIGHT_SPEEDS[1] end end bv.Velocity = currentVelocity end) table.insert(flightConns, flightUpdate) local function onFlyInputBegan(input, gameProc) if not scriptActive then return end if gameProc then return end if input.UserInputType == Enum.UserInputType.Keyboard then local key = input.KeyCode if key == Enum.KeyCode.W then moveState.forward = 1 if flightSpeed >= 100 then playFlightFastAnimation() else playAnimation(106345021112927, 15, 1, true) end elseif key == Enum.KeyCode.S then moveState.backward = 1 playAnimation(132783162476851, 4, 1, true) elseif key == Enum.KeyCode.A then moveState.left = 1 elseif key == Enum.KeyCode.D then moveState.right = 1 elseif key == Enum.KeyCode.Space then moveState.up = 1 elseif key == Enum.KeyCode.LeftControl then moveState.down = 1 end end end local flyBegan = UserInputService.InputBegan:Connect(onFlyInputBegan) table.insert(flightConns, flyBegan) table.insert(allConnections, flyBegan) local function onFlyInputEnded(input, gameProc) if not scriptActive then return end if input.UserInputType == Enum.UserInputType.Keyboard then local key = input.KeyCode if key == Enum.KeyCode.W then moveState.forward = 0 playAnimation(113420763488155, 4, 1, true) elseif key == Enum.KeyCode.S then moveState.backward = 0 playAnimation(113420763488155, 4, 1, true) elseif key == Enum.KeyCode.A then moveState.left = 0 elseif key == Enum.KeyCode.D then moveState.right = 0 elseif key == Enum.KeyCode.Space then moveState.up = 0 elseif key == Enum.KeyCode.LeftControl then moveState.down = 0 end end end local flyEnded = UserInputService.InputEnded:Connect(onFlyInputEnded) table.insert(flightConns, flyEnded) table.insert(allConnections, flyEnded) end local function createTeleportGui() if teleportGui then teleportGui:Destroy() end teleportGui = Instance.new("ScreenGui", player.PlayerGui) teleportGui.Name = "TeleportGui" local mainFrame = Instance.new("Frame", teleportGui) mainFrame.Size = UDim2.new(0.3, 0, 0.5, 0) mainFrame.Position = UDim2.new(0.35, 0, 0.25, 0) mainFrame.BackgroundColor3 = Color3.fromRGB(255, 165, 0) mainFrame.BorderSizePixel = 0 Instance.new("UICorner", mainFrame).CornerRadius = UDim.new(0, 12) local scroll = Instance.new("ScrollingFrame", mainFrame) scroll.Size = UDim2.new(1, -20, 1, -20) scroll.Position = UDim2.new(0, 10, 0, 10) scroll.BackgroundTransparency = 1 scroll.ScrollBarThickness = 6 local listLayout = Instance.new("UIListLayout", scroll) listLayout.Padding = UDim.new(0, 8) for _, p in ipairs(Players:GetPlayers()) do if p ~= player then local btn = Instance.new("TextButton", scroll) btn.Size = UDim2.new(1, 0, 0, 40) btn.BackgroundColor3 = Color3.fromRGB(230, 230, 230) btn.TextColor3 = Color3.new(0, 0, 0) btn.Text = p.Name btn.Font = Enum.Font.GothamBold btn.TextSize = 14 Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8) btn.MouseButton1Click:Connect(function() if teleporting then return end teleporting = true teleportGui:Destroy() teleportGui = nil local emoteAnim = Instance.new("Animation") emoteAnim.AnimationId = "rbxassetid://" .. TELEPORT_EMOTE_ID local emoteTrack = humanoid:LoadAnimation(emoteAnim) emoteTrack:Play() local chargeSound = Instance.new("Sound") chargeSound.SoundId = "rbxassetid://" .. TELEPORT_CHARGE_SOUND_ID chargeSound.Volume = 0.8 chargeSound.Parent = hrp chargeSound:Play() local camera = Workspace.CurrentCamera local originalCameraType = camera.CameraType local originalCameraCFrame = camera.CFrame camera.CameraType = Enum.CameraType.Scriptable task.wait(0.5) local originalCFrame = hrp.CFrame makeHumanoidInvisible() hrp.CFrame = CFrame.new(0, 10000, 0) camera.CFrame = originalCameraCFrame task.wait(1) local targetChar = p.Character if targetChar and targetChar:FindFirstChild("HumanoidRootPart") then hrp.CFrame = targetChar.HumanoidRootPart.CFrame * CFrame.new(0, 0, -5) else hrp.CFrame = originalCFrame end makeHumanoidVisible() camera.CameraType = originalCameraType emoteTrack:Stop() teleporting = false if teleportGui then teleportGui:Destroy() teleportGui = nil end end) end end end local function getVehicleMass(model) if not model then return 0 end local totalMass = 0 for _, part in ipairs(model:GetDescendants()) do if part:IsA("BasePart") then totalMass = totalMass + (part.AssemblyMass or part:GetMass()) end end return math.max(totalMass, 1) end local function playKaiokenAnimation() if not scriptActive then return end if not character or not humanoid then return end if isKaiokenActive then return end originalWalkSpeed = humanoid.WalkSpeed originalJumpPower = humanoid.JumpPower originalJumpHeight = humanoid.JumpHeight originalUseJumpPower = humanoid.UseJumpPower humanoid.WalkSpeed = 0 humanoid.JumpPower = 0 humanoid.JumpHeight = 0 stopAllAnimations(humanoid) if currentAnimTrack then currentAnimTrack:Stop(0.1) currentAnimTrack = nil end local camera = Workspace.CurrentCamera local originalCameraType = camera.CameraType camera.CameraType = Enum.CameraType.Scriptable local targetCFrame = CFrame.lookAt(hrp.Position + (hrp.CFrame.LookVector * 18) + Vector3.new(0, 5, 0), hrp.Position) local tween = TweenService:Create(camera, TweenInfo.new(1.5, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {CFrame = targetCFrame}) tween:Play() local anim = Instance.new("Animation") anim.AnimationId = "rbxassetid://" .. tostring(KAIOKEN_ANIMATION_ID) kaiokenAnimTrack = humanoid:LoadAnimation(anim) kaiokenAnimTrack.Looped = false kaiokenAnimTrack:Play() kaiokenAnimTrack:AdjustSpeed(2,5) task.wait(0.5) createKaiokenExplosion() if not kaiokenExplosionSound then kaiokenExplosionSound = Instance.new("Sound") kaiokenExplosionSound.SoundId = "rbxassetid://" .. tostring(KAIOKEN_EXPLOSION_SOUND_ID) kaiokenExplosionSound.Volume = 1.0 kaiokenExplosionSound.Looped = false kaiokenExplosionSound.Parent = hrp or character else kaiokenExplosionSound.Looped = false end kaiokenExplosionSound:Play() local explosionDuration = 1 task.wait(explosionDuration) if kaiokenExplosion then kaiokenExplosion:Destroy() kaiokenExplosion = nil end if kaiokenExplosionSound then kaiokenExplosionSound:Stop() task.wait(0.1) kaiokenExplosionSound:Destroy() kaiokenExplosionSound = nil end camera.CameraType = originalCameraType applyKaiokenBuffs() createKaiokenVisuals() kaiokenTimer = KAIOKEN_DURATION isKaiokenActive = true kaiokenExplosionActive = true local animate = character:FindFirstChild("Animate") if animate then animate.Disabled = true task.wait(0.1) animate.Disabled = false end task.wait(0.5) kaiokenExplosionActive = false if flying then playAnimation(113420763488155, 4, 1, true) end end local function startKaioken() if not scriptActive then return end if isKaiokenActive then return end playKaiokenAnimation() end local function stopKaioken() cleanupKaioken() end local function updateKaiokenTimer(deltaTime) if isKaiokenActive and kaiokenTimer > 0 then kaiokenTimer = kaiokenTimer - deltaTime if kaiokenTimer <= 0 then stopKaioken() end end end local function createTools() local backpack = player:WaitForChild("Backpack") -- Vuelo (1) local flightTool = Instance.new("Tool") flightTool.Name = "vuelo" flightTool.TextureId = "rbxassetid://138393727967636" flightTool.RequiresHandle = false flightTool.Parent = backpack flightTool.Equipped:Connect(function() if flying then stopFlight() else startFlight() end end) -- Teletransporte (2) local tpTool = Instance.new("Tool") tpTool.Name = "teletransportacion" tpTool.TextureId = "rbxassetid://77738072756366" tpTool.RequiresHandle = false tpTool.Parent = backpack tpTool.Equipped:Connect(function() createTeleportGui() end) tpTool.Unequipped:Connect(function() if teleportGui then teleportGui:Destroy() teleportGui = nil end end) -- Kaio-ken (3) local kaiokenTool = Instance.new("Tool") kaiokenTool.Name = "kaioken (invisible)" kaiokenTool.TextureId = "rbxassetid://81438887708519" kaiokenTool.RequiresHandle = false kaiokenTool.Parent = backpack kaiokenTool.Equipped:Connect(function() if isKaiokenActive then stopKaioken() else startKaioken() end end) end connect(humanoid.StateChanged, function(_, newState) if newState == Enum.HumanoidStateType.Freefall then local currentTime = tick() local jumpSound = Instance.new("Sound") jumpSound.SoundId = "rbxassetid://" .. JUMP_SOUND_ID jumpSound.Volume = 0.7 jumpSound.Parent = hrp jumpSound:Play() game.Debris:AddItem(jumpSound, 3) lastJumpSoundTime = currentTime end end) player.CharacterAdded:Connect(function(newChar) if not scriptActive then return end cleanupEverything() character = newChar humanoid = character:WaitForChild("Humanoid") hrp = character:WaitForChild("HumanoidRootPart") task.wait(0.5) reloadAnimationsWithRetry() createTools() end) humanoid.Died:Connect(function() cleanupEverything() end) connect(RunService.Heartbeat, function(deltaTime) if not scriptActive then return end if humanoid then for _, track in ipairs(humanoid:GetPlayingAnimationTracks()) do if track.Animation and LOOP_ANIMATION_IDS[track.Animation.AnimationId] and not track.Looped then track.Looped = true end end end if isKaiokenActive then updateKaiokenTimer(deltaTime) end end) createTools() loadAnimations()