Blood module - item asylum, Combat Warriors styled blood

This is my first resource on the devforum!

Ever wanted blood like this?

image

Or this?

Maybe even this?


Well, i made a blood module.
API:

-- Returns a droplet with the origin of `position`, velocity of `velocity` and optional color and puddleTransparency.
Blood.spawnDroplet(
     position: Vector3,
     velocity: Vector3,
     color: Color3?,
     puddleTransparency: number?
)

There is also a settings module inside the blood module which you can customize to your needs.
Here is a video of my blood module in action.

Feedback will be appreciated.

56 Likes

You should use PartCache to create blood faster like Combat Warrior

7 Likes

i’ll try implementing partcache into my module, thanks for the feedback!

5 Likes

I like the module, but add a option to make it only visible for 13+ or 17+ users so that my experience can be available for all ages.

4 Likes

You can do it by yourself by making it a setting in your game.
Tbh you dont need to check player age, just do the questionnaire for your experience.

3 Likes

my blood module doesn’t show realistic blood or isn’t too gory, so this module should be fine to use in any game.

On an unrelated note:
Although my module has some flaws, (like this for example), it’s sometimes rare, but only happens if you spawn TOO much blood or a droplet lands on another puddle.
image

I’ll need to optimize this a lot, as even after puddles are gone my module stays at around 29-30 fps… :fear:
like there are no puddles here and my laptop is plugged in, i might need to clean up raycasting connections

1 Like

I’m not that smart but how do you get it activated? There’s nowhere that tells you how to get it active.

2 Likes

I’m curious or the legality of using this without an age check and believe it’s important to factor the characters user age into this.

2 Likes

Use the script provided in a function
example:

Char.Humanoid.Died:Connect(function()
Blood.spawnDroplet(
     position: Char["Left Leg"].Position,
     velocity:   Vector3.Zero,
     color: Color3.new("255,0,0"),
     puddleTransparency: .5
)
3 Likes

there is no need for “legality” over virtual blood in MOST countries.
combat warriors doesn’t have an age check and it’s fine.

5 Likes

the only country i know so far that doesn’t allow blood in games is china, which banned roblox anyway.

3 Likes

btw, the color argument inputs a Color3, not a BrickColor.
just a small correction

3 Likes

Version 1.0.1

  • Added DEFAULT_PUDDLE_PARENT, DEFAULT_DROPLET_PARENT and FALLEN_DROPLETS_DESTROY_HEIGHT to the settings script.
1 Like

The only gripe i have that i can see from the demo video you provided, is that the blood that was splattered on the wall pools out and expands as if it was on the floor.

other than that though, seems very useful for people wanting some viscera in their games! :+1:

2 Likes

Oh yeah my fault lol.
I forgot color3 isn’t compatible with brickcolor

1 Like

A visitor? Hm… Indeed. I have slept long enough.
(seriously though this is insane, love it!)

1 Like

Here you go
@GrandMarineLCS I have also fixed the issue of the blood pile staying in the air. However, this module will create a folder in the workspace named ‘Temp,’ and the droplet and puddle will be parented to that folder.

Furthermore, I have resolved the problem where the trail color and droplet color did not change.

Usage
local m = require(game.ReplicatedStorage.Blood)
local plr = game.Players.LocalPlayer
local char = plr.Character

script.Parent.MouseButton1Click:Connect(function()
	for i = 0,20 do
		m.spawnDroplet(
			char.HumanoidRootPart.Position,
			Vector3.new(math.random(-10,10),15,math.random(-10,10)),
			Color3.fromRGB(141, 0, 0),
			0
		)
	end
end)

(ignore the lag, its the recorder)

4 Likes

Thank you for fixing my module, but just a question: is the parent supposed to be like this?
image
Also, if this was a mistake, i edited it out.

Yes, as I said before the module creates a folder named Temp to workspace.
And that folder is added to raycast params which will ignore the blood droplet and pile.

Explaination of the code
local folder ← lets pretend that the variable value is nil
so if its nil then set droplet parent to “Settings droplet parent”

If its not nil then it will parent it to the temp folder.

example:

local child = nil
print( child and child or "Nope child is nil" ) -- Output: Nope child is nil

local child = workspace.Folder
print( child and child or "Nope child is nil" ) -- Output: Folder
2 Likes

Version 1.0.2

  • Implemented @Synitx’s patches/fixes in my own way
  • Hid all the internal functions and other things
2 Likes