KrYn0MoRe

pain engine v0.9

Nov 28th, 2020 (edited)
970
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local studspermeters = 20
  2. local fatal_vel = studspermeters*15
  3. local terminal_vel = fatal_vel --studspermeters*25
  4. local fallstates = {
  5.     Enum.HumanoidStateType.Freefall,
  6.     Enum.HumanoidStateType.FallingDown,
  7.     Enum.HumanoidStateType.Flying,
  8.     Enum.HumanoidStateType.Jumping,
  9. }
  10. local bleeding = {}
  11. local falling = {}
  12. local ragdolled = {}
  13. local gores1 = {3739335394,3737268126,3929462189,3739335007}
  14. local gores2 = {3847883680,3847884467,3847885772,3929462677}
  15. local pg = {1489922915,1489934368}
  16. local stuns = {
  17.     5169623605,
  18.     5169624072,
  19.     5169626214,
  20.     5169624072,
  21.     5169623821,
  22.     5169626595
  23. }
  24. local impacts = {
  25.     3848124871,
  26.     3848125583,
  27.     3848126035,
  28.     3929466751
  29. }
  30. if not _G['ignore pain engine'] then
  31.     _G['ignore pain engine'] = {}
  32. end
  33.  
  34. function check_fatal(hum,dmg)
  35.     if 0 >= (hum.Health - dmg) then
  36.         return true
  37.     end
  38.     return false
  39. end
  40.  
  41. function check_godded(hum,lasthp)
  42.     if lasthp then
  43.         if lasthp > hum.Health then
  44.             return true
  45.         end
  46.     elseif hum.MaxHealth >= math.huge or hum.MaxHealth >= 1/0 then
  47.         return true
  48.     elseif hum.Parent:FindFirstChildOfClass("ForceField") then
  49.         return true
  50.     end
  51. end
  52.  
  53. function is_enabled(plr)
  54.     if _G['ignore pain engine'][plr.UserId] then
  55.         return true
  56.     elseif _G['ignore pain engine'][plr.UserId] == nil then
  57.         return true
  58.     else
  59.         return false
  60.     end
  61. end
  62.  
  63. function toggle_enable(plr,bool)
  64.     _G['ignore pain engine'][plr.UserId] = bool
  65. end
  66.  
  67. local junk = Instance.new("Folder",script)
  68.  
  69. function bleed2(plr,frick,targhum,can_hurt,t,splat,dir)
  70.     coroutine.resume(coroutine.create(function()
  71.         if frick and targhum then else return end
  72.         local rig = targhum.RigType
  73.         local limbs = {'Head','Left Arm','Right Arm','Left Leg','Right Leg','RightUpperLeg','LeftUpperLeg','RightUpperArm','LeftUpperArm','RightLowerLeg','LeftLowerLeg','RightLowerArm','LeftLowerArm','RightFoot','LeftFoot','RightHand','LeftHand'}
  74.         local interval_bleed = 0.1
  75.         if not bleeding[frick] or 0 >= bleeding[frick] then
  76.             bleeding[frick] = 0
  77.             bleeding[frick] = bleeding[frick] + t
  78.         elseif bleeding[frick] > 0 then
  79.             bleeding[frick] = bleeding[frick] + t
  80.             return
  81.         else
  82.             return
  83.         end
  84.         while bleeding[frick] > 0 do
  85.             if (not frick or not frick.Parent or not frick.Parent.Parent or not targhum or not targhum.Parent) then
  86.                 break
  87.             end
  88.             local max_limbs = 0
  89.             local current_limbs = 0
  90.             local gone_limbs = 0
  91.             local targchar = targhum.Parent
  92.             if rig == Enum.HumanoidRigType.R6 then
  93.                 max_limbs = 5
  94.             elseif rig == Enum.HumanoidRigType.R15 then
  95.                 max_limbs = 13
  96.             end
  97.             for i,v in pairs(targchar:GetChildren()) do
  98.                 local found = false
  99.                 for i,n in pairs(limbs) do if n == v.Name then found = true; end; end;
  100.                 if found and not v:FindFirstChild("Dismembered") then
  101.                     current_limbs = current_limbs + 1
  102.                 end
  103.             end
  104.             gone_limbs = (max_limbs-current_limbs)
  105.             if targhum and can_hurt then
  106.                 local bdmg = 0.3
  107.                 local multi = 3
  108.                 if 0 >= gone_limbs then
  109.                     gone_limbs = 1
  110.                 else
  111.                     gone_limbs = gone_limbs*multi
  112.                 end
  113.                 if 0 >= (targhum.Health - bdmg*gone_limbs) then
  114.                     targhum.BreakJointsOnDeath = false
  115.                     --[[
  116.                     pcall(function()
  117.                         kill(plr,targchar,dir,5)
  118.                     end)
  119.                     ]]
  120.                 end
  121.                 targhum:TakeDamage(bdmg*gone_limbs)
  122.             end
  123.             local vel = (dir*0.5)+Vector3.new(math.random(-5, 5)/40,math.random(-5, 5)/30,math.random(-5, 5)/40)
  124.             local thing = Instance.new('Part')
  125.             thing.Name = "blood_drop"
  126.             thing.Size = Vector3.new(0.1,0.1,0.1)
  127.             thing.CFrame = frick.CFrame*CFrame.new(0,frick.Size.Y/2,0)
  128.             if splat then
  129.                 thing.Transparency = 0
  130.             elseif not splat then
  131.                 thing.Transparency = 1
  132.             end
  133.             thing.Color = Color3.fromRGB(75, 0, 0)
  134.             thing.Material = Enum.Material.SmoothPlastic
  135.             thing.CanCollide = false
  136.             thing.Velocity = vel
  137.             thing.Parent = junk
  138.             thing:SetNetworkOwner(plr)
  139.             local mesh = Instance.new('SpecialMesh')
  140.             mesh.MeshType = Enum.MeshType.Sphere
  141.             mesh.Parent = thing
  142.             game:GetService("Debris"):AddItem(thing,10)
  143.             local att1,att2 = Instance.new("Attachment"),Instance.new("Attachment")
  144.             att1.Parent = thing
  145.             att1.Position = Vector3.new(0,-(thing.Size.Y/2),0)
  146.             att2.Parent = thing
  147.             att2.Position = Vector3.new(0,(thing.Size.Y/2),0)
  148.             if splat then
  149.                 local trail_drop = Instance.new("Trail")
  150.                 trail_drop.Parent = thing
  151.                 trail_drop.Attachment0 = att1
  152.                 trail_drop.Attachment1 = att2
  153.                 trail_drop.Color = ColorSequence.new(Color3.new(0.5, 0, 0),Color3.new(0.7, 0, 0))
  154.                 trail_drop.FaceCamera = true
  155.                 trail_drop.LightInfluence = 1
  156.                 trail_drop.WidthScale = NumberSequence.new(1,0)
  157.                 trail_drop.Transparency = NumberSequence.new(0,1)
  158.                 trail_drop.Lifetime = 0.1
  159.                 trail_drop.MinLength = 0
  160.             end
  161.             local rawrxd = Instance.new('BodyForce')
  162.             rawrxd.Parent = thing
  163.             rawrxd.Force = vel
  164.             game:GetService("Debris"):AddItem(rawrxd,0.01)
  165.             thing.Touched:connect(function(tou)
  166.                 if tou and tou.Parent and not tou:IsDescendantOf(targchar) and not tou:IsDescendantOf(junk) and not tou.Parent:FindFirstChildOfClass("Humanoid") and not tou.Parent.Parent:FindFirstChildOfClass("Humanoid") and not tou.Parent:IsA("Accessory") and tou.Name ~= 'Handle' and tou.Parent.Name ~= 'Handle' and not tou.Parent:IsA("Tool") and not string.match(tou.Name:lower(),'blood_drop') and not string.match(tou.Name:lower(),'bullet') and not string.match(tou.Name:lower(),'bone') and not string.match(tou.Name:lower(),'gun mag') and not string.match(tou.Name:lower(),'limb') then
  167.                     local pos = Vector3.new(thing.Position.X,(tou.Position.Y+(tou.Size.Y/2))+(0.02/2),thing.Position.Z)
  168.                     local Point1 = pos-Vector3.new(0.01,0.01,0.01)
  169.                     local Point2 = pos+Vector3.new(0.01,0.01,0.01)
  170.                     local Region = Region3.new(Point1,Point2)
  171.                     for _,Part in pairs(game.Workspace:FindPartsInRegion3(Region,nil,math.huge)) do
  172.                         if Part.Name == "blood" then
  173.                             tou = Part
  174.                         end
  175.                     end
  176.                     thing:Destroy()
  177.                     if tou.Name == "blood" then
  178.                         local reee = tou.CFrame
  179.                         if tou.Transparency > -0.2 then
  180.                             tou.Transparency = tou.Transparency - 0.1
  181.                         end
  182.                         local s = 0.025
  183.                         if tou.Color.R > 0 then
  184.                             local nc = tou.Color.R*1.012
  185.                             if nc > 1 then
  186.                                 nc = 1
  187.                             end
  188.                             tou.Color = Color3.new(nc, 0, 0)
  189.                         end
  190.                         if tou.Size.X < 5 then
  191.                             tou.Size = tou.Size+Vector3.new(s*4,0,s*4)
  192.                         elseif tou.Size.X < 7.5 then
  193.                             tou.Size = tou.Size+Vector3.new(s*3,0,s*3)
  194.                         elseif tou.Size.X < 10 then
  195.                             tou.Size = tou.Size+Vector3.new(s*2,0,s*2)
  196.                         end
  197.                         tou.CFrame = reee
  198.                         local tween = game:GetService("TweenService"):Create(tou,TweenInfo.new(4),{Transparency = 1})
  199.                         tween:Play()
  200.                         tween.Completed:Connect(function()
  201.                             if tou.Transparency >= 0.9 then
  202.                                 tou:Destroy()
  203.                             end
  204.                         end)
  205.                         local splash = Instance.new("Sound",tou)
  206.                         splash.SoundId = 'rbxassetid://5157825454' --685857471
  207.                         splash.Volume = 0.025
  208.                         splash.PlayOnRemove = true
  209.                         splash:Destroy()
  210.                     elseif tou.CanCollide == true then
  211.                         local bloodsplat = Instance.new('Part')
  212.                         local s = math.random(5,10)/10
  213.                         if gone_limbs >= 1 then
  214.                             bloodsplat.Size = Vector3.new(s*gone_limbs,0.2,s*gone_limbs)
  215.                         else
  216.                             bloodsplat.Size = Vector3.new(s,0.2,s)
  217.                         end
  218.                         bloodsplat.Name = "blood"
  219.                         bloodsplat.Anchored = true
  220.                         bloodsplat.CanCollide = false
  221.                         bloodsplat.Material = Enum.Material.Glass
  222.                         bloodsplat.Color = Color3.fromRGB(75, 0, 0)
  223.                         bloodsplat.Transparency = -0.2
  224.                         bloodsplat.Parent = junk
  225.                         bloodsplat.CFrame = CFrame.new(pos)
  226.                         local mesh = Instance.new('SpecialMesh')
  227.                         mesh.MeshType = Enum.MeshType.Sphere
  228.                         mesh.Parent = bloodsplat
  229.                         local tween = game:GetService("TweenService"):Create(bloodsplat,TweenInfo.new(4),{Transparency = 1})
  230.                         tween:Play()
  231.                         tween.Completed:Connect(function()
  232.                             if bloodsplat.Transparency >= 0.9 then
  233.                                 bloodsplat:Destroy()
  234.                             end
  235.                         end)
  236.                         local splash = Instance.new("Sound",bloodsplat)
  237.                         splash.SoundId = 'rbxassetid://5157825454'
  238.                         splash.Volume = 0.025
  239.                         splash.PlayOnRemove = true
  240.                         splash:Destroy()
  241.                     end
  242.                 end
  243.             end)
  244.             bleeding[frick] = bleeding[frick] - interval_bleed
  245.             wait(interval_bleed)
  246.         end
  247.     end))
  248. end
  249.  
  250. function blood_splat(obj)
  251.     local ParticleEmitter1 = Instance.new("ParticleEmitter")
  252.     local ParticleEmitter2 = Instance.new("ParticleEmitter")
  253.     local ParticleEmitter3 = Instance.new("ParticleEmitter")
  254.     ParticleEmitter1.Name = "Blood3"
  255.     ParticleEmitter1.Parent = obj
  256.     ParticleEmitter1.Speed = NumberRange.new(3, 7)
  257.     ParticleEmitter1.Rotation = NumberRange.new(-360, 360)
  258.     ParticleEmitter1.Color = ColorSequence.new(Color3.new(0.486275, 0, 0),Color3.new(0.258824, 0, 0))
  259.     ParticleEmitter1.Enabled = false
  260.     ParticleEmitter1.LightEmission = 0.20000000298023
  261.     ParticleEmitter1.LightInfluence = 1
  262.     ParticleEmitter1.Texture = "rbxassetid://241779220"
  263.     ParticleEmitter1.Transparency = NumberSequence.new(1,0.48750001192093,0.75625002384186,1)
  264.     ParticleEmitter1.ZOffset = 0.5
  265.     ParticleEmitter1.Size = NumberSequence.new(0,2.8749995231628)
  266.     ParticleEmitter1.Acceleration = Vector3.new(0, -5, 0)
  267.     ParticleEmitter1.EmissionDirection = Enum.NormalId.Front
  268.     ParticleEmitter1.Lifetime = NumberRange.new(0.40000000596046, 1)
  269.     ParticleEmitter1.Rate = 3000
  270.     ParticleEmitter1.RotSpeed = NumberRange.new(-40, 270)
  271.     ParticleEmitter1.SpreadAngle = Vector2.new(360, 360)
  272.     ParticleEmitter1.VelocitySpread = 360
  273.     ParticleEmitter2.Name = "Blood"
  274.     ParticleEmitter2.Parent = obj
  275.     ParticleEmitter2.Speed = NumberRange.new(5, 10)
  276.     ParticleEmitter2.Rotation = NumberRange.new(-360, 360)
  277.     ParticleEmitter2.Color = ColorSequence.new(Color3.new(0.666667, 0, 0),Color3.new(0.423529, 0, 0))
  278.     ParticleEmitter2.Enabled = false
  279.     ParticleEmitter2.LightEmission = 0.40000000596046
  280.     ParticleEmitter2.LightInfluence = 1
  281.     ParticleEmitter2.Texture = "rbxassetid://73547327"
  282.     ParticleEmitter2.Transparency = NumberSequence.new(0.10000000149012,0.14375001192093,0.49374997615814,1)
  283.     ParticleEmitter2.Size = NumberSequence.new(0,2.8749995231628)
  284.     ParticleEmitter2.Acceleration = Vector3.new(0, -5, 0)
  285.     ParticleEmitter2.EmissionDirection = Enum.NormalId.Front
  286.     ParticleEmitter2.Lifetime = NumberRange.new(0.30000001192093, 0.5)
  287.     ParticleEmitter2.Rate = 10000000
  288.     ParticleEmitter2.RotSpeed = NumberRange.new(-40, 270)
  289.     ParticleEmitter2.SpreadAngle = Vector2.new(360, 360)
  290.     ParticleEmitter2.VelocitySpread = 360
  291.     ParticleEmitter3.Name = "Blood2"
  292.     ParticleEmitter3.Parent = obj
  293.     ParticleEmitter3.Speed = NumberRange.new(5, 14)
  294.     ParticleEmitter3.Color = ColorSequence.new(Color3.new(0.45098, 0, 0),Color3.new(0.45098, 0, 0))
  295.     ParticleEmitter3.Enabled = false
  296.     ParticleEmitter3.LightEmission = 0.20000000298023
  297.     ParticleEmitter3.LightInfluence = 1
  298.     ParticleEmitter3.Texture = "http://www.roblox.com/asset/?id=134531274"
  299.     ParticleEmitter3.Transparency = NumberSequence.new(0.30000001192093,0.30000001192093)
  300.     ParticleEmitter3.ZOffset = 1
  301.     ParticleEmitter3.Size = NumberSequence.new(0.12499988079071,0)
  302.     ParticleEmitter3.Acceleration = Vector3.new(0, -20, 0)
  303.     ParticleEmitter3.EmissionDirection = Enum.NormalId.Front
  304.     ParticleEmitter3.Lifetime = NumberRange.new(0.5, 1.5)
  305.     ParticleEmitter3.Rate = 100000
  306.     ParticleEmitter3.SpreadAngle = Vector2.new(360, 360)
  307.     ParticleEmitter3.VelocitySpread = 360
  308.     --
  309.     ParticleEmitter1:Emit(20)
  310.     ParticleEmitter2:Emit(20)
  311.     ParticleEmitter3:Emit(20)
  312.     --
  313.     game:GetService("Debris"):AddItem(ParticleEmitter1,2)
  314.     game:GetService("Debris"):AddItem(ParticleEmitter2,2)
  315.     game:GetService("Debris"):AddItem(ParticleEmitter3,2)
  316.     --
  317. end
  318.  
  319. function limb_collide(obj,mode,d)
  320.     if (obj:IsA("UnionOperation") or obj:IsA("BasePart")) and not obj:FindFirstChild('limb') then else return end
  321.     local exists = pcall(game:GetService("PhysicsService").GetCollisionGroupId, game:GetService("PhysicsService"), 'Limb Collide')
  322.     if not exists then
  323.         game:GetService("PhysicsService"):CreateCollisionGroup('Limb Collide')
  324.     end
  325.     game:GetService("PhysicsService"):CollisionGroupSetCollidable('Limb Collide','Limb Collide',false)
  326.     --
  327.     local t = {}
  328.     --
  329.     local cb = Instance.new("Part")
  330.     cb.Name = 'limb'
  331.     cb.Transparency = 1
  332.     cb.CanCollide = true
  333.     cb.Anchored = false
  334.     cb.CFrame = obj.CFrame
  335.     cb.Size = obj.Size*0.9
  336.     cb.Massless = true
  337.     cb.Locked = true
  338.     game:GetService("PhysicsService"):SetPartCollisionGroup(cb,'Limb Collide')
  339.     game:GetService("PhysicsService"):SetPartCollisionGroup(obj,'Limb Collide')
  340.     local weld = Instance.new("Weld")
  341.     weld.Part0 = cb
  342.     weld.Part1 = obj
  343.     weld.Parent = cb
  344.     --obj.Massless = true
  345.     obj.Anchored = false
  346.     if mode or obj:FindFirstChild("Dismembered") then
  347.         cb.Parent = junk -- .Parent
  348.     else
  349.         cb.Parent = junk
  350.         table.insert(t,1,cb)
  351.     end
  352.     if d then
  353.         game:GetService("Debris"):AddItem(cb,d)
  354.     end
  355.     --
  356.     if not string.match(obj.Name:lower(),'torso') and not string.match(obj.Name:lower(),'rootpart') and not string.match(obj.Name:lower(),'head') then
  357.         local lv = Vector3.new() -- Vector3.new(cb.Size.X,0,cb.Size.Z)
  358.         local cb2 = Instance.new("Part")
  359.         cb2.Name = 'limb'
  360.         cb2.Transparency = 1
  361.         cb2.CanCollide = true
  362.         cb2.Anchored = false
  363.         cb2.CFrame = obj.CFrame
  364.         cb2.Size = lv
  365.         cb2.Massless = true
  366.         cb2.Locked = true
  367.         --game:GetService("PhysicsService"):SetPartCollisionGroup(cb2,'Limb Collide')
  368.         local weld2 = Instance.new("Weld")
  369.         weld2.Part0 = cb
  370.         weld2.Part1 = cb2
  371.         weld2.C1 = CFrame.new(0,(cb.Size.Y/2),0)
  372.         weld2.Parent = cb2
  373.         if mode or obj:FindFirstChild("Dismembered") then
  374.             cb2.Parent = junk -- .Parent
  375.         else
  376.             cb2.Parent = junk
  377.             table.insert(t,1,cb2)
  378.         end
  379.         if d then
  380.             game:GetService("Debris"):AddItem(cb2,d)
  381.         end
  382.     end
  383.     --
  384.     return t
  385. end
  386.  
  387. function recurse(root,callback,i)
  388.     i= i or 0
  389.     for _,v in pairs(root:GetChildren()) do
  390.         i = i + 1
  391.         callback(i,v)
  392.  
  393.         if #v:GetChildren() > 0 then
  394.             i = recurse(v,callback,i)
  395.         end
  396.     end
  397.  
  398.     return i
  399. end
  400.  
  401. function ragdollJoint(character, part0, part1, attachmentName, className, properties)
  402.     attachmentName = attachmentName.."RigAttachment"
  403.     local constraint = Instance.new(className.."Constraint")
  404.     constraint.Attachment0 = part0:FindFirstChild(attachmentName)
  405.     constraint.Attachment1 = part1:FindFirstChild(attachmentName)
  406.     constraint.Name = "RagdollConstraint"..part1.Name
  407.  
  408.     for _,propertyData in next,properties or {} do
  409.         constraint[propertyData[1]] = propertyData[2]
  410.     end
  411.  
  412.     constraint.Parent = character
  413. end
  414.  
  415. function getAttachment0(character, attachmentName)
  416.     for _,child in next,character:GetChildren() do
  417.         local attachment = child:FindFirstChild(attachmentName)
  418.         if attachment then
  419.             return attachment
  420.         end
  421.     end
  422. end
  423.  
  424. function ragdoll(targchar,kill,remove)
  425.     if targchar then else return end
  426.     local targplr
  427.     pcall(function()
  428.         targplr = game:GetService("Players"):GetPlayerFromCharacter(targchar)
  429.     end)
  430.     local pc = targchar
  431.     local targhum = pc:FindFirstChildOfClass("Humanoid")
  432.     local js,js2 = {},{}
  433.     local lc = {}
  434.    
  435.     targhum.PlatformStand = true
  436.     --if kill then
  437.         local old_pc
  438.         if remove then
  439.             pc.Archivable = true
  440.             old_pc = pc
  441.             pc = pc:Clone()
  442.         end
  443.         for i,v in pairs(pc:GetDescendants()) do
  444.             if v.Name ~= 'HumanoidRootPart' and v.Name ~= 'Torso' and v:IsA("BasePart") then
  445.                 if remove or not kill then
  446.                     local t = limb_collide(v,false,10)
  447.                     table.insert(lc,1,t)
  448.                 end
  449.             end
  450.             if kill then
  451.                 if v:IsA("ParticleEmitter") then
  452.                     v.Enabled = false
  453.                 end
  454.                 if v:IsA("SelectionBox") or v:IsA("BodyVelocity") or v:IsA("BodyPosition") or v:IsA("BodyAngularVelocity") or v:IsA("BodyForce") or v:IsA("BodyGyro") or v:IsA("BodyThrust") or v:IsA("BodyMover") then
  455.                     if v:IsA("BodyVelocity") then
  456.                         game:GetService("Debris"):AddItem(v,0.15)
  457.                     else
  458.                         v:Destroy()
  459.                     end
  460.                 end
  461.                 if (v:IsA("Script") and v.Name == 'Health') or (v:IsA("LocalScript") and v.Name == 'Animate') then
  462.                     v:Destroy()
  463.                 end
  464.                 if v:IsA("Humanoid") then
  465.                     v.HealthDisplayType = Enum.HumanoidHealthDisplayType.AlwaysOff
  466.                     v.PlatformStand = true
  467.                 end
  468.             end
  469.         end
  470.         if remove then
  471.             for i,v in pairs(old_pc:GetDescendants()) do
  472.                 if v:IsA("BasePart") or v:IsA("UnionOperation") or v:IsA("ForceField") or v:IsA("Accessory") or v:IsA("Decal") or v:IsA("Texture") or v:IsA("SurfaceGui") then
  473.                     v:destroy()
  474.                 end
  475.                 if v:IsA("Humanoid") then
  476.                     v.BreakJointsOnDeath = true
  477.                     v.Health = 0
  478.                     v.HealthDisplayType = Enum.HumanoidHealthDisplayType.AlwaysOff
  479.                     v.PlatformStand = true
  480.                 end
  481.             end
  482.             pc.Parent = junk
  483.             game:GetService("Debris"):AddItem(pc,10)
  484.         end
  485.     --end
  486.     --if kill and targhum:FindFirstChild("Ragdolled") then return; end;
  487.     coroutine.resume(coroutine.create(function()
  488.         if targplr then
  489.             for i,v in pairs(pc:GetChildren()) do
  490.                 if v:IsA("BasePart") then
  491.                     --v.Massless = true
  492.                     if v:CanSetNetworkOwnership() then
  493.                         v:SetNetworkOwner(targplr)
  494.                     end
  495.                 end
  496.             end
  497.         end
  498.     end))
  499.     local kb = 15
  500.     local root = pc:FindFirstChild("HumanoidRootPart")
  501.     local targtorso = pc:FindFirstChild("Torso") or pc:FindFirstChild("UpperTorso") or pc:FindFirstChild("Head") or pc:FindFirstChild("HumanoidRootPart")
  502.     if targtorso then else return end
  503.     local dir = targtorso.CFrame.lookVector*-1
  504.     local bv = Instance.new("BodyVelocity")
  505.     bv.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
  506.     bv.Velocity = --[[dir*kb+]]Vector3.new(0,kb,0)
  507.     bv.Parent = targtorso
  508.     game:GetService("Debris"):AddItem(bv,0.1)
  509.     if kill then
  510.         local ragval = Instance.new("ObjectValue")
  511.         ragval.Name = 'Ragdolled'
  512.         ragval.Parent = targhum
  513.     end
  514.     coroutine.resume(coroutine.create(function()
  515.         if (targhum.RigType == Enum.HumanoidRigType.R6 or (targhum.RigType == Enum.HumanoidRigType.R15 and not kill)) then
  516.             for _,m in pairs(pc:GetChildren()) do
  517.                 for _,v in pairs(m:GetChildren()) do
  518.                     if (v:IsA("Snap") --[[or v:IsA('Weld')]] or v:IsA("BallSocketConstraint")) and kill then
  519.                         v:Destroy()
  520.                     end
  521.                     if (v:IsA('Motor6D') or v:IsA('Motor') or v:IsA("Weld")) and (v.Parent:IsA("BasePart") or v.Parent:IsA("UnionOperation")) then
  522.                         if not kill then
  523.                             table.insert(js2,1,{obj = v,par = v.Parent})
  524.                         end
  525.  
  526.                         local a0, a1 = Instance.new("Attachment"), Instance.new("Attachment")
  527.                         a0.CFrame = v.C0
  528.                         a1.CFrame = v.C1
  529.                         a0.Parent = v.Part0
  530.                         a1.Parent = v.Part1
  531.  
  532.                         local b = Instance.new("BallSocketConstraint")
  533.                         b.Attachment0 = a0
  534.                         b.Attachment1 = a1
  535.                         b.Parent = v.Part0
  536.  
  537.                         v.Parent = nil
  538.                         table.insert(js,1,b)
  539.                     end
  540.                 end
  541.             end
  542.         elseif targhum.RigType == Enum.HumanoidRigType.R15 and kill then
  543.             local character = targchar
  544.             recurse(character, function(_,v)
  545.                 if v:IsA("Attachment") then
  546.                     v.Axis = Vector3.new(0, 1, 0)
  547.                     v.SecondaryAxis = Vector3.new(0, 0, 1)
  548.                     v.Rotation = Vector3.new(0, 0, 0)
  549.                 end
  550.             end)
  551.  
  552.             --Re-attach hats
  553.             for _,child in next,character:GetChildren() do
  554.                 if child:IsA("Accoutrement") then
  555.                     --Loop through all parts instead of only checking for one to be forwards-compatible in the event
  556.                     --ROBLOX implements multi-part accessories
  557.                     for _,part in next,child:GetChildren() do
  558.                         if part:IsA("BasePart") then
  559.                             local attachment1 = part:FindFirstChildOfClass("Attachment")
  560.                             local attachment0 = getAttachment0(character, attachment1.Name)
  561.                             if attachment0 and attachment1 then
  562.                                 --Shouldn't use constraints for this, but have to because of a ROBLOX idiosyncrasy where
  563.                                 --joints connecting a character are perpetually deleted while the character is dead
  564.                                 local constraint = Instance.new("HingeConstraint")
  565.                                 constraint.Attachment0 = attachment0
  566.                                 constraint.Attachment1 = attachment1
  567.                                 constraint.LimitsEnabled = true
  568.                                 constraint.UpperAngle = 0 --Simulate weld by making it difficult for constraint to move
  569.                                 constraint.LowerAngle = 0
  570.                                 constraint.Parent = character
  571.                             end
  572.                         end
  573.                     end
  574.                 end
  575.             end
  576.  
  577.             ragdollJoint(character, character.LowerTorso, character.UpperTorso, "Waist", "BallSocket", {
  578.                 {"LimitsEnabled",true};
  579.                 {"UpperAngle",5};
  580.             })
  581.             ragdollJoint(character, character.UpperTorso, character.Head, "Neck", "BallSocket", {
  582.                 {"LimitsEnabled",true};
  583.                 {"UpperAngle",15};
  584.             })
  585.  
  586.             local handProperties = {
  587.                 {"LimitsEnabled", true};
  588.                 {"UpperAngle",0};
  589.                 {"LowerAngle",0};
  590.             }
  591.             ragdollJoint(character, character.LeftLowerArm, character.LeftHand, "LeftWrist", "Hinge", handProperties)
  592.             ragdollJoint(character, character.RightLowerArm, character.RightHand, "RightWrist", "Hinge", handProperties)
  593.  
  594.             local shinProperties = {
  595.                 {"LimitsEnabled", true};
  596.                 {"UpperAngle", 0};
  597.                 {"LowerAngle", -75};
  598.             }
  599.             ragdollJoint(character, character.LeftUpperLeg, character.LeftLowerLeg, "LeftKnee", "Hinge", shinProperties)
  600.             ragdollJoint(character, character.RightUpperLeg, character.RightLowerLeg, "RightKnee", "Hinge", shinProperties)
  601.  
  602.             local footProperties = {
  603.                 {"LimitsEnabled", true};
  604.                 {"UpperAngle", 15};
  605.                 {"LowerAngle", -45};
  606.             }
  607.             ragdollJoint(character, character.LeftLowerLeg, character.LeftFoot, "LeftAnkle", "Hinge", footProperties)
  608.             ragdollJoint(character, character.RightLowerLeg, character.RightFoot, "RightAnkle", "Hinge", footProperties)
  609.  
  610.             --TODO fix ability for socket to turn backwards whenn ConeConstraints are shipped
  611.             ragdollJoint(character, character.UpperTorso, character.LeftUpperArm, "LeftShoulder", "BallSocket")
  612.             ragdollJoint(character, character.LeftUpperArm, character.LeftLowerArm, "LeftElbow", "BallSocket")
  613.             ragdollJoint(character, character.UpperTorso, character.RightUpperArm, "RightShoulder", "BallSocket")
  614.             ragdollJoint(character, character.RightUpperArm, character.RightLowerArm, "RightElbow", "BallSocket")
  615.             ragdollJoint(character, character.LowerTorso, character.LeftUpperLeg, "LeftHip", "BallSocket")
  616.             ragdollJoint(character, character.LowerTorso, character.RightUpperLeg, "RightHip", "BallSocket")
  617.         end
  618.     end))
  619.     if root then
  620.         root.CanCollide = false
  621.     end
  622.     local c
  623.     if root then
  624.         c = root.Touched:Connect(function(obj)
  625.             if obj and not obj:IsDescendantOf(junk) and (root.Velocity.Magnitude >= 2) then
  626.                 local impact = Instance.new("Sound",root)
  627.                 impact.Name = 'impact'
  628.                 impact.SoundId = 'rbxassetid://' .. impacts[math.random(1,#impacts)]
  629.                 impact.Volume = 0.1
  630.                 impact.PlayOnRemove = true
  631.                 impact:Destroy()
  632.             end
  633.         end)
  634.     end
  635.     local function restore()
  636.         if c then
  637.             c:Disconnect()
  638.         end
  639.         if root then
  640.             root.CFrame = root.CFrame*CFrame.new(0,4,0)
  641.         end
  642.         for i,v in pairs(js) do
  643.             v:Destroy()
  644.         end
  645.         for i,v in pairs(lc) do
  646.             for i,v in pairs(v) do
  647.                 v:Destroy()
  648.             end
  649.         end
  650.         if targhum then
  651.             targhum.PlatformStand = false
  652.         end
  653.         for i,v in pairs(js2) do
  654.             v.obj.Parent = v.par
  655.         end
  656.         if root then
  657.             root.CanCollide = true
  658.         end
  659.     end
  660.     return restore
  661. end
  662.  
  663. function connectfall(plr,torso,hum)
  664.     local dmg = 0
  665.     local saved_vel = 0
  666.     while falling[hum] do
  667.         if not falling[hum] then
  668.             break
  669.         end
  670.         saved_vel = torso.Velocity.Magnitude
  671.         wait(0)
  672.     end
  673.     if saved_vel >= 75 then
  674.         dmg = 100*(saved_vel/fatal_vel)
  675.         if check_godded(hum) then
  676.             return
  677.         end
  678.         if not check_fatal(hum,dmg) then
  679.             if not torso:FindFirstChild("pain groan") then
  680.                 local groan = Instance.new("Sound")
  681.                 groan.Name = 'pain groan'
  682.                 groan.SoundId = 'rbxassetid://' .. stuns[math.random(1,#stuns)]
  683.                 groan.Volume = 1
  684.                 groan.Parent = torso
  685.                 groan.PlayOnRemove = true
  686.                 groan:Destroy()
  687.             end
  688.             coroutine.resume(coroutine.create(function()
  689.                 ragdolled[plr] = true
  690.                 local restore = ragdoll(torso.Parent,false)
  691.                 hum:SetStateEnabled(Enum.HumanoidStateType.Freefall,true)
  692.                 hum:SetStateEnabled(Enum.HumanoidStateType.Landed,true)
  693.                 wait(10*(saved_vel/fatal_vel))
  694.                 ragdolled[plr] = false
  695.                 restore()
  696.             end))
  697.         end
  698.         blood_splat(torso,torso.Position,Vector3.new())
  699.         --[[
  700.         if check_fatal(hum,dmg) then
  701.             bleed2(plr,torso,hum,false,game:GetService("Players").RespawnTime,false,torso.CFrame.upVector*-1)
  702.         elseif dmg >= 25 then
  703.             bleed2(plr,torso,hum,false,3,false,torso.CFrame.upVector*-1)
  704.         end
  705.         ]]
  706.         local smash_s = Instance.new("Sound")
  707.         smash_s.Parent = torso
  708.         smash_s.PlayOnRemove = true
  709.         local dmg_s = Instance.new("Sound")
  710.         dmg_s.Parent = torso
  711.         dmg_s.PlayOnRemove = true
  712.         if check_fatal(hum,dmg) then
  713.             --smash_s.SoundId = 'rbxassetid://' .. gores2[math.random(1,#gores2)]
  714.             smash_s.Volume = 0.7
  715.             dmg_s.SoundId = 'rbxassetid://704141469'
  716.             dmg_s.Volume = 1.5
  717.         elseif dmg >= 50 then
  718.             --smash_s.SoundId = 'rbxassetid://' .. gores1[math.random(1,#gores1)]
  719.             smash_s.Volume = 0.7
  720.             dmg_s.SoundId = 'rbxassetid://535681058'
  721.             dmg_s.Volume = 1
  722.         elseif dmg >= 25 then
  723.             dmg_s.SoundId = 'rbxassetid://4057626616'
  724.             dmg_s.Volume = 1.5
  725.         end
  726.         smash_s:Destroy()
  727.         dmg_s:Destroy()
  728.         hum:TakeDamage(dmg)
  729.     end
  730. end
  731.  
  732. function burn_up(obj,mode)
  733.     if mode == 1 then
  734.         local particle = obj:FindFirstChild("flame")
  735.         local light = obj:FindFirstChild("flame light")
  736.         local flame_sound = obj:FindFirstChild('burn up')
  737.         local scream_sound = obj:FindFirstChild('flame scream')
  738.         if not obj:FindFirstChild("burn up") then
  739.             local start_flame = Instance.new("Sound")
  740.             start_flame.SoundId = 'rbxassetid://5868574236'
  741.             start_flame.Parent = obj
  742.             start_flame.Volume = 2.5
  743.             start_flame.PlayOnRemove = true
  744.             start_flame:Destroy()
  745.             flame_sound = Instance.new("Sound")
  746.             flame_sound.Name = 'burn up'
  747.             flame_sound.SoundId = 'rbxassetid://443980606'
  748.             flame_sound.Volume = 1.5
  749.             flame_sound.Parent = obj
  750.             flame_sound.Looped = true
  751.             flame_sound:Play()
  752.             scream_sound = Instance.new("Sound")
  753.             scream_sound.Name = 'flame scream'
  754.             scream_sound.SoundId = 'rbxassetid://147758618'
  755.             scream_sound.Parent = obj
  756.             scream_sound.Looped = true
  757.             scream_sound:Play()
  758.             local PointLight1 = Instance.new("PointLight")
  759.             PointLight1.Name = 'flame light'
  760.             PointLight1.Parent = obj
  761.             PointLight1.Color = Color3.new(1, 0.803922, 0.341176)
  762.             PointLight1.Range = 21
  763.             PointLight1.Brightness = 0.47499999403954
  764.             PointLight1.Shadows = true
  765.             light = PointLight1
  766.             particle = Instance.new("Fire")
  767.             particle.Name = 'flame'
  768.             particle.Size = 10
  769.             particle.Parent = obj
  770.         end
  771.     elseif mode == 2 then
  772.         local particle = obj:FindFirstChild("flame")
  773.         local light = obj:FindFirstChild("flame light")
  774.         local flame_sound = obj:FindFirstChild('burn up')
  775.         local scream_sound = obj:FindFirstChild('flame scream')
  776.         if particle and particle.Enabled then
  777.             particle.Enabled = false
  778.             game:GetService("Debris"):AddItem(particle,1.5)
  779.         end
  780.         if light and light.Enabled then
  781.             light.Enabled = false
  782.             game:GetService("Debris"):AddItem(light,1)
  783.         end
  784.         if flame_sound then
  785.             flame_sound:Destroy()
  786.         end
  787.         if scream_sound then
  788.             scream_sound:Destroy()
  789.         end
  790.     end
  791. end
  792.  
  793. function explode_limb(plr,obj,targchar,dir,dmg)
  794.     local targhum = targchar:FindFirstChildOfClass("Humanoid")
  795.     local targtorso = targchar:FindFirstChild("Torso") or targchar:FindFirstChild("UpperTorso") or targchar:FindFirstChild("HumanoidRootPart")
  796.     if dmg > 0 and not obj:FindFirstChild('Dismembered') and obj.Name ~= 'Torso' and obj.Name ~= 'HumanoidRootPart' and obj.Name ~= 'UpperTorso' and obj.Name ~= 'LowerTorso' then else return end
  797.     local d = 10
  798.     local t = dmg/d
  799.     local t2 = dmg/20/d
  800.     bleed2(plr,targtorso,targhum,true,t,true,Vector3.new(0,-1,0).Unit)
  801.     local gs = Instance.new("Sound")
  802.     gs.SoundId = 'rbxassetid://206082273' -- 'rbxassetid://' .. gores2[math.random(1,#gores2)]
  803.     gs.PlayOnRemove = true
  804.     gs.Parent = obj
  805.     gs:Destroy()
  806.     for i = 1,d do
  807.         local p = Vector3.new(obj.Size.X/math.random(d/3,d/2),obj.Size.Y/math.random(d/3,d/2),obj.Size.Z/math.random(d/3,d/2))
  808.         local blood_chunk = Instance.new("Part")
  809.         blood_chunk.Size = p
  810.         blood_chunk.CanCollide = true
  811.         blood_chunk.Anchored = false
  812.         blood_chunk.Color = Color3.fromRGB(math.random(90,170),0,0)
  813.         blood_chunk.Position = obj.Position+Vector3.new(math.random(-obj.Size.X*10,obj.Size.X*10)/10/2,math.random(-obj.Size.Y*10,obj.Size.Y*10)/10/2,math.random(-obj.Size.Z*10,obj.Size.Z*10)/10/2)
  814.         blood_chunk.Material = Enum.Material.Slate
  815.         blood_chunk.Parent = junk
  816.         local kb = 15
  817.         local ka = 90
  818.         local bav = Instance.new("BodyAngularVelocity")
  819.         bav.MaxTorque = Vector3.new(math.huge,math.huge,math.huge)
  820.         bav.AngularVelocity = Vector3.new(math.random(-ka,ka),math.random(-ka,ka),math.random(-ka,ka))
  821.         bav.Parent = blood_chunk
  822.         local bv = Instance.new("BodyVelocity")
  823.         bv.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
  824.         local ud = (obj.Position-blood_chunk.Position).Unit
  825.         if kb*3 >= ud.Magnitude then
  826.             bv.Velocity = (ud*kb)+Vector3.new(0,kb,0)
  827.             --bleed2(plr,targtorso,targhum,true,3,false,ud)
  828.         else
  829.             bv.Velocity = Vector3.new(0,kb,0)
  830.             --bleed2(plr,targtorso,targhum,true,3,false,dir)
  831.         end
  832.         bv.Parent = blood_chunk
  833.         game:GetService("Debris"):AddItem(bv,0.1)
  834.         game:GetService("Debris"):AddItem(bav,0.1)
  835.         game:GetService("Debris"):AddItem(blood_chunk,10)
  836.     end
  837.     obj:Destroy()
  838. end
  839.  
  840. function bind(plr,char)
  841.     pcall(function()
  842.         if char then else return end
  843.         if is_enabled(plr) then
  844.             local ff = Instance.new("ForceField",char)
  845.             game:GetService("Debris"):AddItem(ff,2)
  846.         end
  847.         local torso = char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso") or char:FindFirstChild("HumanoidRootPart")
  848.         local hum = char:FindFirstChildOfClass("Humanoid")
  849.         hum.StateChanged:Connect(function(oldstate,newstate)
  850.             if table.find(fallstates,newstate) and not check_godded(hum) and is_enabled(plr) then
  851.                 if not falling[hum] then
  852.                     falling[hum] = true
  853.                     connectfall(plr,torso,hum)
  854.                 end
  855.             else
  856.                 falling[hum] = false
  857.             end
  858.         end)
  859.         local cv
  860.         if is_enabled(plr) then
  861.             cv = game:GetService("RunService").Stepped:Connect(function()
  862.                 if not char or not torso or not hum then
  863.                     cv:Disconnect()
  864.                 end
  865.                 local vel = torso.Velocity.Magnitude
  866.                 if vel >= terminal_vel then
  867.                     local dmg = (vel/terminal_vel)/5
  868.                     hum:TakeDamage(dmg)
  869.                     burn_up(torso,1)
  870.                 else
  871.                     burn_up(torso,2)
  872.                 end
  873.             end)
  874.         end
  875.         if hum.RigType == Enum.HumanoidRigType.R6 then
  876.             hum.BreakJointsOnDeath = false
  877.             hum:SetStateEnabled(Enum.HumanoidStateType.Dead,true)
  878.         end
  879.         local bid = 0
  880.         local did_break = {}
  881.         local can_break = false
  882.         local dmged = false
  883.         for _,limb in pairs(char:GetChildren()) do
  884.             if (limb:IsA("BasePart") or limb:IsA("UnionOperation")) and limb.Name ~= 'HumanoidRootPart' and limb.Name ~= 'Torso' and limb.Name ~= 'UpperTorso' and limb.Name ~= 'LowerTorso' then
  885.                 limb.Touched:Connect(function()
  886.                     local saved_vel = limb.Velocity.Magnitude
  887.                     local dmg = (saved_vel/fatal_vel)*hum.MaxHealth
  888.                     if limb and not dmged and (can_break or ragdolled[plr]) and dmg >= 40 then
  889.                         dmged = true
  890.                         did_break[bid] = true
  891.                         local p = Instance.new("Part")
  892.                         p.CanCollide = false
  893.                         p.Anchored = true
  894.                         p.Size = Vector3.new()
  895.                         p.Position = limb.Position
  896.                         p.Transparency = 1
  897.                         p.Parent = junk
  898.                         local impact = Instance.new("Sound",p)
  899.                         impact.Name = 'impact'
  900.                         impact.SoundId = 'rbxassetid://' .. impacts[math.random(1,#impacts)]
  901.                         impact.Volume = 0.1
  902.                         impact.PlayOnRemove = true
  903.                         impact:Destroy()
  904.                         local explode = Instance.new("Sound",p)
  905.                         explode.Name = 'expode'
  906.                         explode.SoundId = 'rbxassetid://' .. gores2[math.random(1,#gores2)]
  907.                         explode.Volume = 0.1
  908.                         explode.PlayOnRemove = true
  909.                         explode:Destroy()
  910.                         blood_splat(p)
  911.                         explode_limb(plr,limb,char,limb.CFrame.upVector*-1,dmg)
  912.                         game:GetService("Debris"):AddItem(p,2)
  913.                         wait(0.2)
  914.                         dmged = false
  915.                     end
  916.                 end)
  917.             end
  918.         end
  919.         local curhealth = hum.Health
  920.         hum.HealthChanged:Connect(function(newhealth)
  921.             if check_godded(hum) then return end
  922.             local dmg = (curhealth-newhealth)
  923.             if curhealth > newhealth and torso and hum.Health > 0 then
  924.                 if dmg >= 30 or 0 >= newhealth then
  925.                     bid = bid + 1
  926.                     can_break = true
  927.                     wait(0.4)
  928.                     can_break = false
  929.                 end
  930.                 if dmg > 0 then
  931.                     if not did_break[bid] then
  932.                         bleed2(plr,torso,hum,false,(dmg/hum.MaxHealth)*10,false,torso.CFrame.upVector*-1)
  933.                     end
  934.                 end
  935.             end
  936.             curhealth = hum.Health
  937.         end)
  938.         hum.Died:Connect(function()
  939.             ragdoll(char,true)
  940.         end)
  941.     end)
  942. end
  943.  
  944. function chat(plr)
  945.     plr.Chatted:Connect(function(msg)
  946.         if msg:lower():sub(1,6) == 'tfall/' then
  947.             local bool = msg:lower():sub(7)
  948.             if bool == 'true' then
  949.                 toggle_enable(plr,true)
  950.             elseif bool == 'false' then
  951.                 toggle_enable(plr,false)
  952.             end
  953.         end
  954.     end)
  955. end
  956.  
  957. for _,plr in pairs(game:GetService("Players"):GetPlayers()) do
  958.     chat(plr)
  959.     bind(plr,plr.Character)
  960.     plr.CharacterAdded:Connect(function(char)
  961.         bind(plr,char)
  962.     end)
  963. end
  964.  
  965. game:GetService("Players").PlayerAdded:Connect(function(plr)
  966.     chat(plr)
  967.     plr.CharacterAdded:Connect(function(char)
  968.         bind(plr,char)
  969.     end)
  970. end)
  971.  
  972. while wait(1) do
  973.     if not junk then
  974.         junk = Instance.new("Folder",script)
  975.     end
  976. end
RAW Paste Data