Idk what happened i swear it was working normally before but now it just sometimes doesnt work / has a long delay (3-4 seconds) on it
local ExplosivePart = script.Parent
local Touched = true
local Debug = true
local Vx = 0
local Vy = 0
local Vz = 0
local StartedFall = false
local EndedFall = false
local StartTime = tick()
local EndTime = tick()
local StartPos = Vector3.zero
local TouchedPos = Vector3.zero
local Force
ExplosivePart.Touched:Connect(function(Part)
Touched = true
TouchedPos = ExplosivePart.Position
end)
while task.wait() do
local V = ExplosivePart.AssemblyLinearVelocity
local X1 = if math.abs(V.X) > 0 then math.abs(V.X) else 0
local Y1 = if math.abs(V.Y) > 0 then math.abs(V.Y) else 0
local Z1 = if math.abs(V.Z) > 0 then math.abs(V.Z) else 0
if X1 > Vx then Vx = X1 end
if Y1 > Vy then Vy = Y1 end
if Z1 > Vz then Vz = Z1 end
if Vy > 10 or Vx > 10 or Vz > 10 then
if not StartedFall then StartTime = tick(); StartPos = ExplosivePart.Position; StartedFall = true end
end
if StartedFall then
print("d")
if Touched then
local hit = false
local V2 = ExplosivePart.Velocity
if Vx-V2.X > Vx*0.80 then hit = true end
if Vy-V2.Y > Vy*0.80 then hit = true end
if Vz-V2.Z > Vz*0.80 then hit = true end
if hit then
EndTime = tick()
local Vctr = (Vx+Vy+Vz)
local Mass = ExplosivePart.Mass
local Distance = (TouchedPos - StartPos).Magnitude
if Distance < 10*(Mass/4) then Distance = 10*(Mass/4) end
Force = Mass * Vctr / (2 * Distance)
if Force >= 5 then
ExplosivePart:FindFirstChildWhichIsA("Humanoid"):TakeDamage(Force)
end
Vx = 0
Vy = 0
Vz = 0
Distance = nil
StartedFall = false
Touched = false
hit = false
if Debug then
print(Force)
print("Part fell for " .. EndTime - StartTime .. " Seconds")
end
else
Touched = false
end
end
end
end