Tommygun Blood Splatter

Directional blood splatter that paints the walls and floor behind your target.

$15.00
Version: 0.4.3
Last updated Jul 3, 2026
new pve pvp visual

Instant digital download — delivered to your email after purchase

Description

Counter-Strike style directional blood splatter for Rust. When a player or NPC is shot, blood is projected onto the wall and floor behind them, along the bullet's travel direction — not a generic puff at the impact point.

It reproduces the GoldSrc/Source engine blood model: the damage you deal picks a tier, the tier sets how many decals spray and how wide the cone spreads, and a trace finds the surface behind the victim to paint. Bigger hits leave more blood. Headshots leave bigger blood. Kills and heavy hits drop a pool beneath the body.

Blood persists — it stays until it ages out (configurable, default 60 seconds) or the live-decal cap recycles it. Every constant is exposed in the config.

Why This Is Different

  • Directional, not decorative — blood lands on the surface behind the target along the shot line, the way a real exit spray would. Most "blood" effects are a fixed particle at the hit point.
  • No spray-can burst — Rust's spray decal fires an unavoidable particle puff every time a client first sees it. This plugin pre-spawns a pool of hidden decals, lets them burst once out of sight, then only ever moves them into kill positions. The result is clean blood with none of the spray-can pop-in that a naive implementation shows on every hit.
  • Zero dependencies — no ImageLibrary, no client mods, no other plugins required. Drop it in.
  • Works on players and NPCs — humans, scientists/bots, and (optionally) animals, each toggled independently.

Features

  • Damage tiers: low/medium/high hits spray 1/2/4 decals with widening cone noise — fully configurable thresholds, counts, and spread
  • Headshot emphasis: headshots scale the splatter larger (1.75x by default)
  • Floor pools: a blood pool forms under the body on kill, and optionally on any hit over a damage threshold
  • Custom blood textures: ships with a CS-style blood pack (7 wall splatters + 3 floor pools) as Steam Workshop skins — swap in your own skin IDs to rebrand
  • Persistent: auto-remove timer is configurable (0 = keep until the cap recycles it)
  • Configurable triggers: which damage types draw blood (Bullet + Arrow by default), minimum damage, per-victim cooldown so shotgun pellets don't over-spray, and minimum spacing between decals
  • Decal sizing: min/max size range, projection depth, and surface sink so blood reads as embedded rather than floating

Built for Instanced Servers

Arena, duel, and match servers can isolate blood per instance: the plugin asks a host plugin which "bucket" each player belongs to, and a player only sees blood from their own bucket. Players in one duel never see the blood from the duel next door. If no host plugin answers, every player shares one bucket and the plugin behaves like a standard server-wide blood plugin. See the developer hook below.

Performance

  • Pooled decals are spawned once and reused — no per-hit entity churn
  • Pool warm-up is throttled across frames so it never stalls a busy server
  • Pools pre-warm around players and around their grid as combat moves
  • One-off fallback decals are capped (default 150) and recycled oldest-first
  • Idle instance pools are reclaimed automatically to free budget

Permissions

Permission Default Description
tgbloodsplatter.admin Manual grant Use the admin console commands below

Console Commands

Command Description
tgbloodsplatter.clear [bucket|all] Clear visible blood — all of it, or a single visibility bucket
tgbloodsplatter.pools Report every live decal pool and its slot usage (diagnostics)
tgbloodsplatter.debug [0|1] Toggle verbose decision logging at runtime (no reload needed)

Developer Hook (instanced servers)

To isolate blood per match/instance, implement the visibility hook in your host plugin:

Hook Description
OnBloodVisibilityContext(BasePlayer player) Return an int bucket id for the player. 0 = the shared bucket (no isolation). Players only see blood spawned in their own bucket.
OnBloodVisibilityContextDestroyed(int ctx) Call when an instance is torn down so its pooled blood is reclaimed immediately instead of waiting for the idle timer.

Support

License

TOMMYGUN'S EULA – BY USING THIS PLUGIN YOU AGREE TO THE FOLLOWING!

  • Code contained in this file is not licensed to be copied, shared, resold, or modified in any way.
  • You may copy the plugin freely to each server instance that your organization owns.
  • Do not share this plugin with other server organizations — they must purchase their own licenses.

Customer Reviews


Discussion

Be the first to start the discussion!

Leave a Comment

0/2000