local ScriptENV do -- Basically EZConvert, but better :)
--Be warned! Scripts may or may not have a noticable performance issue depending on the senario (unoptimized expensive loops etc)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local _ENV = getfenv()
local Player = _ENV.owner or Players:GetPlayerFromCharacter(script.Parent) or (script.Parent.Parent:IsA("Player") and script.Parent.Parent)
if not Player then
error("Cannot run script : must be ran in a sandbox, inside a character, or inside playergui/backpack")
end
local Remote = Player:FindFirstChild("SyncInput")
if not Remote then
Remote = Instance.new("RemoteEvent")
Remote.Name = "SyncInput"
Remote.Parent = Player
end
local Signal = (function() -- GoodSignal module by stravant
local freeRunnerThread = nil
local function acquireRunnerThreadAndCallEventHandler(fn, ...)
local acquiredRunnerThread = freeRunnerThread
freeRunnerThread = nil
fn(...)
freeRunnerThread = acquiredRunnerThread
end
local function runEventHandlerInFreeThread()
while true do
acquireRunnerThreadAndCallEventHandler(coroutine.yield())
end
end
local Connection = {}
Connection.__index = Connection
function Connection.new(signal, fn)
return setmetatable({
_connected = true,
_signal = signal,
_fn = fn,
_next = false,
}, Connection)
end
function Connection:Disconnect()
self._connected = false
if self._signal._handlerListHead == self then
self._signal._handlerListHead = self._next
else
local prev = self._signal._handlerListHead
while prev and prev._next ~= self do
prev = prev._next
end
if prev then
prev._next = self._next
end
end
end
Connection.disconnect = Connection.Disconnect
setmetatable(Connection, {
__index = function(tb, key)
--error(("Attempt to get Connection::%s (not a valid member)"):format(tostring(key)), 2)
end,
__newindex = function(tb, key, value)
--error(("Attempt to set Connection::%s (not a valid member)"):format(tostring(key)), 2)
end
})
local Signal = {}
Signal.__index = Signal
function Signal.new()
return setmetatable({
_handlerListHead = false,
}, Signal)
end
function Signal:Connect(fn)
local connection = Connection.new(self, fn)
if self._handlerListHead then
connection._next = self._handlerListHead
self._handlerListHead = connection
else
self._handlerListHead = connection
end
return connection
end
function Signal:DisconnectAll()
self._handlerListHead = false
end
function Signal:Fire(...)
local item = self._handlerListHead
while item do
if item._connected then
if not freeRunnerThread then
freeRunnerThread = coroutine.create(runEventHandlerInFreeThread)
-- Get the freeRunnerThread to the first yield
coroutine.resume(freeRunnerThread)
end
task.spawn(freeRunnerThread, item._fn, ...)
end
item = item._next
end
end
function Signal:Wait()
local waitingCoroutine = coroutine.running()
local cn;
cn = self:Connect(function(...)
cn:Disconnect()
task.spawn(waitingCoroutine, ...)
end)
return coroutine.yield()
end
function Signal:Once(fn)
local cn;
cn = self:Connect(function(...)
if cn._connected then
cn:Disconnect()
end
fn(...)
end)
return cn
end
Signal.wait = Signal.Wait
Signal.fire = Signal.Fire
Signal.connect = Signal.Connect
-- Signal.once doesn't exist in luau, so we don't add it here.
setmetatable(Signal, {
__index = function(tb, key)
-- have to bypass it this way or the script shits itself
--error(("Attempt to get Signal::%s (not a valid member)"):format(tostring(key)), 2)
end,
__newindex = function(tb, key, value)
-- have to bypass it this way or the script shits itself
--error(("Attempt to set Signal::%s (not a valid member)"):format(tostring(key)), 2)
end
})
return Signal
end)()
local NLS = _ENV.NLS
if NLS then -- If NLS doesn't exist, a local script should be parented to this script (with the same code).
NLS([[local Player = game:GetService("Players").LocalPlayer
local Remote = Player:WaitForChild("SyncInput")
local UserInputService = game:GetService("UserInputService")
if not Remote then
error("Cannot run script: Unable to find remote - Client failed to launch")
end
local UpdateInterval = 1 / 30
local Mouse = Player:GetMouse()
local InputObjectProperties = {
"Position",
"KeyCode",
"UserInputType",
"UserInputState",
"Delta",
}
local MouseProperties = {
"Hit",
"Icon",
"Origin",
"Target",
"TargetFilter",
"TargetSurface",
"UnitRay",
"ViewSizeX",
"ViewSizeY",
"X",
"Y",
"hit",
"target",
}
UserInputService.InputBegan:Connect(function(Input, GP)
local Package = {}
for i = 1, #InputObjectProperties do
local Name = InputObjectProperties[i]
Package[Name] = Input[Name]
end
Remote:FireServer(1, Package, GP)
end)
UserInputService.InputChanged:Connect(function(Input, GP)
local Package = {}
for i = 1, #InputObjectProperties do
local Name = InputObjectProperties[i]
Package[Name] = Input[Name]
end
Remote:FireServer(2, Package, GP)
end)
UserInputService.InputEnded:Connect(function(Input, GP)
local Package = {}
for i = 1, #InputObjectProperties do
local Name = InputObjectProperties[i]
Package[Name] = Input[Name]
end
Remote:FireServer(0, Package, GP)
end)
local ReplicateList = {}
Remote.OnClientEvent:Connect(function(Type, Package)
if Type == 0 then
local Object = Package[1]
local Properties = Package[2]
ReplicateList[Object] = Properties
for i = 1, #Properties do
local Name = Properties[i]
Object:GetPropertyChangedSignal(Name):Connect(function()
if table.find(ReplicateList, Name) then return end
table.insert(ReplicateList[Object], Object[Name])
end)
end
end
end)
function Update()
local MousePackage = {}
for i = 1, #MouseProperties do
local Name = MouseProperties[i]
MousePackage[Name] = Mouse[Name]
end
Remote:FireServer(3, {
Mouse = MousePackage,
Replicate = ReplicateList
})
end
Update()
while true do
task.wait(UpdateInterval)
Update()
end]], Player.PlayerGui)
end
task.wait(0.5)
local Mouse = {}
local UserInputService = {}
Mouse.KeyDown = Signal.new()
Mouse.KeyUp = Signal.new()
Mouse.Button1Down = Signal.new()
Mouse.Button1Up = Signal.new()
Mouse.Button2Down = Signal.new()
Mouse.Button2Up = Signal.new()
--TODO: Implement these
Mouse.Move = Signal.new()
Mouse.Idle = Signal.new()
-- TODO: More UserInputService properties.
UserInputService.InputBegan = Signal.new()
UserInputService.InputEnded = Signal.new()
UserInputService.InputChanged = Signal.new()
UserInputService.InputBegan:Connect(function(Input, GP)
if not GP then
if Input.KeyCode ~= Enum.KeyCode.Unknown then
Mouse.KeyDown:Fire(utf8.char(Input.KeyCode.Value))
end
if Input.UserInputType == Enum.UserInputType.MouseButton1 then
Mouse.Button1Down:Fire()
end
if Input.UserInputType == Enum.UserInputType.MouseButton2 then
Mouse.Button2Down:Fire()
end
end
end)
UserInputService.InputEnded:Connect(function(Input, GP)
if not GP then
if Input.KeyCode ~= Enum.KeyCode.Unknown then
Mouse.KeyUp:Fire(utf8.char(Input.KeyCode.Value))
end
if Input.UserInputType == Enum.UserInputType.MouseButton1 then
Mouse.Button1Up:Fire()
end
if Input.UserInputType == Enum.UserInputType.MouseButton2 then
Mouse.Button2Up:Fire()
end
end
end)
local MouseProperties = {}
for Name, Connection in Mouse do
Mouse[Name:sub(1,1)..Name:sub(2)] = Connection
end
for Name, Connection in UserInputService do
Mouse[Name:sub(1,1)..Name:sub(2)] = Connection
end
local InputTypes = {
[0] = "InputEnded",
[1] = "InputBegan",
[2] = "InputChanged",
-- Number 3 is specially handled
}
local ReplicatedProperties = {}
Remote.OnServerEvent:Connect(function(Sender, Type, Package, ...)
local UISType = InputTypes[Type]
if UISType then
UserInputService[UISType]:Fire(Package, ...)
end
if Type == 3 then -- Mouse and replication stuff
MouseProperties = Package.Mouse
ReplicatedProperties = Package.Replicate
end
end)
function Unsandbox(Value)
if Value and typeof(Value) == "table" then
local Real = Value._Real
if Real then
return Real
end
end
end
function GetReplicated(Object, Property)
if not ReplicatedProperties[Object] then
local Replicate = {
[Property] = 0
}
ReplicatedProperties[Object] = Replicate
Remote:FireClient(Player, 0, {Object, Replicate})
end
local ReplicatedProperty = ReplicatedProperties[Object]
if not ReplicatedProperty[Property] then
ReplicatedProperties[Object][Property] = Object[Property]
end
return ReplicatedProperty[Property]
end
function Sandbox(Object, Custom)
if Object == nil then
return
end
if Unsandbox(Object) then
return Object
end
return setmetatable({}, {
__index = function(self, Property)
if Property == "_Real" then
return Object
end
local CustomValue = (Custom and Custom[Property])
if CustomValue then
return CustomValue
end
local Value = Object[Property]
local Unsandboxed = Unsandbox(Value)
if Property == "PlaybackLoudness" or Property == "playbackLoudness" then
return GetReplicated(Object, "PlaybackLoudness")
end
if Value and typeof(Value) == "function" then
return function(_, ...)
local UnsandboxedArgs = {...}
for i = 1, #UnsandboxedArgs do
UnsandboxedArgs[i] = Unsandbox(UnsandboxedArgs[i]) or UnsandboxedArgs[i]
end
local Result = Value(Object, table.unpack(UnsandboxedArgs))
if Result then
if typeof(Result) == "Instance" then
Result = Sandbox(Result)
end
if typeof(Result) == "table" then
for Index, Object in Result do
if typeof(Object) == "Instance" then
Result[Index] = Sandbox(Object)
end
end
end
end
return Result
end
end
if Value and typeof(Value) == "Instance" then
Value = Sandbox(Value)
end
return Value
end,
__newindex = function(self, Property, Value)
Object[Property] = Unsandbox(Value) or Value
end,
__metatable = "The metatable is locked",
__type = "Instance",
__tostring = function()
return Object.Name
end,
})
end
local NewENV = {}
NewENV.typeof = function(Object)
local Unsandboxed = Unsandbox(Object)
return (Unsandboxed and typeof(Unsandboxed) or typeof(Object))
end
NewENV.type = function(Object)
local Unsandboxed = Unsandbox(Object)
return (Unsandboxed and type(Unsandboxed) or type(Object))
end
local FakeMouse = setmetatable({}, {
__index = function(self, Property)
return Mouse[Property] or MouseProperties[Property]
end,
__newindex = function(self, Property, Value)
error("Cant set property of \"Mouse\"", 2)
end,
__metatable = "The metatable is locked",
__type = "Instance",
__tostring = function()
return "Mouse"
end,
})
function GetMouse()
return FakeMouse
end
local FakePlayer = Sandbox(Player, {
GetMouse = GetMouse,
getMouse = GetMouse
})
local FakePlayers = Sandbox(Players, {
LocalPlayer = FakePlayer,
localPlayer = FakePlayer
})
local Services = {
Players = FakePlayers,
players = FakePlayers,
UserInputService = UserInputService,
userInputService = UserInputService,
}
function GetService(_, Name)
return Sandbox(Services[Name] or game:GetService(Name))
end
NewENV.script = Sandbox(script, {
Parent = Player.Character,
parent = Player.Character
})
NewENV.game = Sandbox(game, {
table.unpack(Services),
GetService = GetService,
getService = GetService,
service = GetService,
})
NewENV.Instance = {
new = function(Class, Parent)
return Sandbox(Instance.new(Class, Unsandbox(Parent) or Parent))
end,
}
NewENV.owner = Player
NewENV.mouse = FakeMouse
NewENV.LoadLibrary = function(Library)
if Library == "RbxUtility" then
return {
Create = function(Class)
local Object = NewENV.Instance.new(Class)
return function(Properties)
for Name, Value in Properties do
Object[Name] = Value
end
return Object
end
end
}
end
end
ScriptENV = setmetatable({}, {
__index = function(self, Index)
return NewENV[Index] or _ENV[Index]
end,
__newindex = function(self, Index, Value)
rawset(ScriptENV, Index, Value)
end,
__metatable = "The metatable is locked"
})
end
setfenv(1, ScriptENV)
local create = {
sound = function(id: number,volume: number,parent)
local sound = Instance.new("Sound")
sound.Parent = parent
sound.SoundId = "rbxassetid://"..id
sound.Volume = volume
sound:Play()
sound.Ended:Connect(function()
sound:Destroy()
end)
end,
meshPart = function(meshId: string): MeshPart
return game:GetService("InsertService"):CreateMeshPartAsync(meshId,Enum.CollisionFidelity.Hull,Enum.RenderFidelity.Automatic)
end,
weld = function(parent,part0: BasePart,part1: BasePart,c0: CFrame,c1: CFrame,between: boolean): Weld
assert(part0,"Part0 required.")
assert(part1,"Part1 required.")
local w = Instance.new("Weld")
w.Parent = parent or nil
w.Part0 = part0
w.Part1 = part1
if not between then
w.C0 = c0
w.C1 = c1
else
w.C1 = part1.CFrame:Inverse() * part0.CFrame
end
return w
end,
part = function(size,shape,material,transparency,reflectance,color,name,anchored,parent): Part
local p = Instance.new("Part")
p.Size = size or Vector3.zero
p.Shape = shape or Enum.PartType.Block
p.Material = material or Enum.Material.Plastic
p.Transparency = transparency or 0
p.Reflectance = reflectance or 0
p.Color = color or Color3.fromRGB(255,255,255)
p.Name = name or "Part"
p.Anchored = anchored or false
p.Parent = parent or nil
return p
end,
decal = function(parent,texture: string,face: Enum.NormalId): Decal
local d = Instance.new("Decal")
d.Texture = texture
d.Face = face
d.Parent = parent
return d
end,
mesh = function(meshId,textureId,scale,parent): SpecialMesh
local m = Instance.new("SpecialMesh")
m.MeshId = meshId or "rbxassetid://0"
m.TextureId = textureId or "rbxassetid://0"
m.Scale = scale or Vector3.new(1,1,1)
m.Parent = parent or nil
return m
end,
charMesh = function(parent: Instance,meshId: number,baseTexId: number,bodyPart: Enum.BodyPart)
local b = Instance.new("CharacterMesh")
b.MeshId = meshId
b.BaseTextureId = baseTexId
b.BodyPart = bodyPart
b.Parent = parent
end,
shirt = function(parent: Instance,id: string)
local i = Instance.new("Shirt")
i.ShirtTemplate = id
i.Parent = parent
end,
pants = function(parent: Instance,id: string)
local i = Instance.new("Shirt")
i.ShirtTemplate = id
i.Parent = parent
end,
raycast = function(origin,direction,params)
return workspace:Raycast(origin,direction,params)
end
}
local RISE_FROM_FLOOR_ID = 108838065760325
local SINK_INTO_FROOM_ID = 112379749595409
local runService = game:GetService("RunService")
local userInput = game:GetService("UserInputService")
local tweenService = game:GetService("TweenService")
local debris = game:GetService("Debris")
local players = game:GetService("Players")
local AnimationTrack = loadstring(game:GetService("HttpService"):GetAsync("https://raw.githubusercontent.com/MechaXYZ/Modules/main/Anitracker.lua"))()
local character: Model = owner.Character or owner.CharacterAdded:Wait()
local mouse: Mouse = owner:GetMouse()
local humanoid: Humanoid = character:FindFirstChildWhichIsA("Humanoid") or character:WaitForChild("Humanoid")
if humanoid.RigType ~= Enum.HumanoidRigType.R6 then
assert("This script only works when using R6 rig type")
end
if humanoid.RootPart == nil then
error("No HumanoidRootPart")
end
local torso: BasePart = character:WaitForChild("Torso")
local head: BasePart = character:WaitForChild("Head")
type Joint = {
weld: Weld,
defaultC0: CFrame,
defaultC1: CFrame
}
local joints: {[string]: Joint} = {
RootJoint = nil,
LeftHip = nil,
LeftShoulder = nil,
Neck = nil,
RightHip = nil,
RightShoulder = nil
}
--[[for _,motor in character:GetDescendants() do
if motor:IsA("Motor6D") then
local w = Instance.new("Weld")
w.Name = motor.Name
w.Parent = motor.Parent
w.Part0 = motor.Part0
w.Part1 = motor.Part1
w.C0 = motor.C0
w.C1 = motor.C1
joints[string.gsub(motor.Name," ","")] = {
weld = w,
defaultC0 = w.C0,
defaultC1 = w.C1
}
end
end]]--
local function enableJoints()
for _,joint in joints do
if not joint.weld.Enabled then
joint.weld.Enabled = true
end
end
end
local function disableJoints()
for _,joint in joints do
if joint.weld.Enabled then
joint.weld.Enabled = false
end
end
end
humanoid.CameraOffset = Vector3.yAxis * 4
humanoid.MaxHealth = math.huge
humanoid.Health = math.huge
local pd: Model = workspace:FindFirstChild("PD")
if not pd then
if script:FindFirstChild("PD") then
pd = script:FindFirstChild("PD")
else
if getfenv().LoadAssets == nil then error("This script only works in Lua Sandbox") end
local assets = LoadAssets(121750914074195)
pd = assets:Get("PD")
end
if not pd then error("Couldnt create the Pocket Dimension") end
pd.Parent = workspace
end
pd:PivotTo(CFrame.new(1000,-50,1000))
local overlapParams = OverlapParams.new()
overlapParams.FilterDescendantsInstances = {character,pd}
overlapParams.FilterType = Enum.RaycastFilterType.Exclude
local raycastParams = RaycastParams.new()
raycastParams.FilterDescendantsInstances = {character}
raycastParams.FilterType = Enum.RaycastFilterType.Exclude
local ncc1 = Instance.new("NoCollisionConstraint")
ncc1.Parent = humanoid.RootPart
ncc1.Part0 = humanoid.RootPart
local ncc2 = Instance.new("NoCollisionConstraint")
ncc2.Parent = character:WaitForChild("Torso")
ncc2.Part0 = character:WaitForChild("Torso")
for _,part in character:GetDescendants() do
if part:IsA("Clothing") or part:IsA("Shirt") or part:IsA("Pants") or part:IsA("Decal") or part:IsA("ShirtGraphic") or part:IsA("Accessory") or part:IsA("CharacterMesh") then
part:Destroy()
end
end
create.mesh("http://www.roblox.com/asset/?id=17392637","http://www.roblox.com/asset/?id=188606054",Vector3.one,head)
create.charMesh(character,27111894,188608369,Enum.BodyPart.Torso)
create.charMesh(character,64022346,188608369,Enum.BodyPart.LeftArm)
create.charMesh(character,64022355,188608369,Enum.BodyPart.LeftLeg)
create.charMesh(character,64022364,188608369,Enum.BodyPart.RightArm)
create.charMesh(character,64022375,188608369,Enum.BodyPart.RightLeg)
create.shirt(character,"rbxassetid://188608369")
create.pants(character,"rbxassetid://188607890")
local isInGround = false
--disableJoints()
local walkAnim = AnimationTrack.new()
walkAnim:setAnimation("https://glot.io/snippets/gzdvhjyg6h/raw/main.lua")
walkAnim:setRig(character)
walkAnim.Looped = true
local riseAnim = AnimationTrack.new()
riseAnim:setAnimation("https://glot.io/snippets/gzdvidndiv/raw/main.lua")
riseAnim:setRig(character)
riseAnim.lerpFactor = 1
local sinkAnim = AnimationTrack.new()
sinkAnim:setAnimation("https://glot.io/snippets/gzdvhukk9u/raw/main.lua")
sinkAnim:setRig(character)
local breathing = Instance.new("Sound")
breathing.SoundId = "rbxassetid://129086821125966"
breathing.Volume = 1
breathing.Looped = true
breathing.Parent = humanoid.RootPart
breathing:Play()
for _,part in pd:GetDescendants() do
if part:IsA("BasePart") and part.Name == "Hitbox" then
part.Touched:Connect(function(touchedPart)
local model = touchedPart:FindFirstAncestorWhichIsA("Model")
if not model then return end
local humanoid: Humanoid = model:FindFirstChildWhichIsA("Humanoid")
if not humanoid then return end
math.randomseed(tick())
if math.random() < 0.12 then
model:PivotTo(CFrame.new(0,3,0))
else
humanoid.Health = 0
model:BreakJoints()
end
end)
end
end
local function createMucus()
local rayResult = create.raycast(humanoid.RootPart.Position,Vector3.yAxis * -50,raycastParams)
if not rayResult then
return
end
local mucusPart = create.part(Vector3.new(0.1,0.1,0.1),Enum.PartType.Block,Enum.Material.SmoothPlastic,1,0,Color3.new(0,0,0),"Mucus",true,workspace)
create.decal(mucusPart,"rbxassetid://129418678",Enum.NormalId.Top)
mucusPart.Position = rayResult.Position
mucusPart.CanCollide = false
mucusPart.CanQuery = false
mucusPart.CanTouch = false
local tween: Tween = tweenService:Create(mucusPart,TweenInfo.new(1.5,Enum.EasingStyle.Linear,Enum.EasingDirection.InOut),{
Size = Vector3.new(10,0.1,10)
})
tween:Play()
local completed
completed = tween.Completed:Connect(function()
tween:Destroy()
completed:Disconnect()
end)
debris:AddItem(mucusPart,10)
end
userInput.InputBegan:Connect(function(input: InputObject, chatting: boolean)
if chatting then return end
if input.KeyCode == Enum.KeyCode.LeftShift and not isGoingInOut and not riseAnim.IsPlaying and not sinkAnim.IsPlaying then
isInGround = not isInGround
humanoid:MoveTo(humanoid.RootPart.Position)
createMucus()
if isInGround then
sinkAnim:Play()
create.sound(RISE_FROM_FLOOR_ID,2,humanoid.RootPart)
task.wait(sinkAnim.Length)
else
riseAnim:Play()
create.sound(SINK_INTO_FROOM_ID,2,humanoid.RootPart)
task.wait(riseAnim.Length)
end
end
if input.UserInputType == Enum.UserInputType.MouseButton1 and not isInGround and not riseAnim.IsPlaying and not sinkAnim.IsPlaying then
local parts = workspace:GetPartBoundsInBox(CFrame.new(humanoid.RootPart.Position),Vector3.new(6,2.5,6),overlapParams)
for _,part in parts do
if part:IsA("BasePart") then
local targetModel = part:FindFirstAncestorWhichIsA("Model")
if not targetModel or targetModel == character then continue end
local targetHumanoid: Humanoid = targetModel:FindFirstChildWhichIsA("Humanoid")
if not targetHumanoid then
local targetPlayer: Player = players:FindFirstChild(targetModel.Name)
if (targetPlayer and targetPlayer.Character == nil) or targetModel:FindFirstChild("Torso") or targetModel:FindFirstChild("HumanoidRootPart") then
if pd:FindFirstChild("TP") then
if math.random() < 0.5 then
targetModel:PivotTo(CFrame.new(pd:FindFirstChild("TP").Position))
else
targetModel:BreakJoints()
end
else
targetModel:BreakJoints()
end
end
continue
end
if pd:FindFirstChild("TP") then
targetModel:PivotTo(CFrame.new(pd:FindFirstChild("TP").Position))
end
targetHumanoid.Health -= targetHumanoid.MaxHealth - 40
break
end
end
end
end)
while task.wait(1 / 60) do
head.CanCollide = false
torso.CanCollide = false
humanoid.Health = humanoid.MaxHealth
humanoid:SetStateEnabled(Enum.HumanoidStateType.Dead,false)
if riseAnim.IsPlaying or sinkAnim.IsPlaying then
humanoid.WalkSpeed = 0
elseif isInGround then
humanoid.WalkSpeed = 80
else
humanoid.WalkSpeed = 25
end
if isInGround or riseAnim.IsPlaying or sinkAnim.IsPlaying then
if breathing.IsPlaying then
breathing:Stop()
end
else
if not breathing.IsPlaying then
breathing:Play()
end
end
for _,part in character:GetChildren() do
if part:IsA("BasePart") then
if part == humanoid.RootPart then continue end
if isInGround and not riseAnim.IsPlaying and not sinkAnim.IsPlaying then
part.Transparency = 1
else
part.Transparency = 0
end
end
end
if humanoid:GetState() == Enum.HumanoidStateType.Running then
local parts = workspace:GetPartBoundsInBox(CFrame.new(humanoid.RootPart.Position),Vector3.new(4,2,4),overlapParams)
for _,part in parts do
if part:IsA("BasePart") and part.CanCollide then
ncc1.Part1 = part
ncc2.Part1 = part
end
end
else
ncc1.Part1 = nil
ncc2.Part1 = nil
end
if humanoid.MoveDirection.Magnitude > 0 and not isInGround and not riseAnim.IsPlaying and not sinkAnim.IsPlaying then
walkAnim:AdjustSpeed(humanoid.WalkSpeed / 16)
if not walkAnim.IsPlaying then
walkAnim:Play()
end
else
if walkAnim.IsPlaying then
walkAnim:Stop()
end
end
end