Run it
Copy the script and paste it into your executor.
Players=:()
RunService=:()
TweenService=:()
Workspace=:()
player=Players.LocalPlayer
BLOOD_TEXTURE_PARTICLE=
BLOOD_DECAL_TEXTURE=
BASE_RATE=
DAMAGE_MULTIPLIER=
MIN_ADD=
MAX_ADD=
MAX_TOTAL_DURATION=
RATE_MULTIPLIER=
BURST_MULTIPLIER=
PUDDLE_CHANCE=
PUDDLE_COUNT=
PUDDLE_SIZE_MIN=
PUDDLE_SIZE_MAX=
PUDDLE_LIFETIME=
(position)
puddleSize=.(PUDDLE_SIZE_MIN*,PUDDLE_SIZE_MAX*)/
rayOrigin=position+.(,,)
rayDirection=.(,-,)
raycastParams=RaycastParams.()
raycastParams.FilterType=.RaycastFilterType.Blacklist
raycastParams.FilterDescendantsInstances={player.Character}
raycastResult=Workspace:(rayOrigin,rayDirection,raycastParams)
raycastResult
hitPosition=raycastResult.Position
hitNormal=raycastResult.Normal
puddlePart=.()
puddlePart.Name=
puddlePart.Size=.(puddleSize,,puddleSize)
puddlePart.Material=.Material.SmoothPlastic
puddlePart.Transparency=
puddlePart.CanCollide=
puddlePart.Anchored=
puddlePart.CanQuery=
puddlePart.Parent=Workspace
rightVector=.yAxis:(hitNormal).Unit
upVector=hitNormal
puddlePart.CFrame=.(hitPosition+.(,,),rightVector,upVector)
decal=.()
decal.Name=
decal.Texture=BLOOD_DECAL_TEXTURE
decal.Face=.NormalId.Top
decal.Transparency=
decal.Parent=puddlePart
fadeInfo=TweenInfo.(PUDDLE_LIFETIME,.EasingStyle.Quad,.EasingDirection.Out)
fadeTween=TweenService:(puddlePart,fadeInfo,{Size=.(,,)})
decalTween=TweenService:(decal,fadeInfo,{Transparency=})
fadeTween:()
decalTween:()
fadeTween.Completed:(()
puddlePart:()
)
(character)
humanoid=character:()
root=character:()
attach=.()
attach.Name=
attach.Parent=root
blood=.()
blood.Name=
blood.Parent=attach
blood.Texture=BLOOD_TEXTURE_PARTICLE
blood.Color=ColorSequence.(.(,,))
blood.Transparency=NumberSequence.({
NumberSequenceKeypoint.(,),
NumberSequenceKeypoint.(,),
NumberSequenceKeypoint.(,)
})
blood.Size=NumberSequence.({
NumberSequenceKeypoint.(,),
NumberSequenceKeypoint.(,),
NumberSequenceKeypoint.(,)
})
blood.Lifetime=NumberRange.(,)
blood.Rate=BASE_RATE
blood.Speed=NumberRange.(,)
blood.SpreadAngle=.(,)
blood.VelocitySpread=
blood.Acceleration=.(,-,)
blood.Drag=
blood.RotSpeed=NumberRange.(-,)
blood.LightEmission=
blood.ZOffset=
blood.Enabled=
bleedEndTime=
bleedConnection=
()
remaining=.(,bleedEndTime-())
remaining<=
blood.Enabled=
blood.Rate=BASE_RATE
bleedConnection
bleedConnection:()
bleedConnection=
blood.Rate=BASE_RATE+remaining*RATE_MULTIPLIER
lastHealth=humanoid.Health
humanoid.HealthChanged:((health)
health<lastHealth
damage=lastHealth-health
emitAmount=.(damage*BURST_MULTIPLIER,,)
blood:(emitAmount)
addedDuration=.(damage*DAMAGE_MULTIPLIER,MIN_ADD,MAX_ADD)
now=()
bleedEndTime>now
bleedEndTime=bleedEndTime+addedDuration
bleedEndTime=now+addedDuration
bleedEndTime=.(bleedEndTime,now+MAX_TOTAL_DURATION)
blood.Enabled=
bleedConnection
bleedConnection=RunService.Heartbeat:(updateBleed)
()
.()<PUDDLE_CHANCE
puddleCount=.(.(damage/),,PUDDLE_COUNT)
i=,puddleCount
offset=.(.(-,),,.(-,))
.(()
(root.Position+offset)
)
lastHealth=health
)
character.AncestryChanged:(()
bleedConnection bleedConnection:()
)
player.CharacterAdded:(setupBlood)
player.Character
(player.Character)
Features: - Customized Script - ejects blood particles if the player takes damage Tags: blood, damage, bleed, particles, vfx, gore, combat, blood splatter, hit effect, script, realistic blood, health, on hit, visual effects, pvp, fps, horror, fighting, action, simple blood, damage fx