RotVitals

v1.0.4·Updated 2026-08-17

Floating enemy health bars - live health, a damage-lag ghost bar, hit punch, and no reading enemies through walls.

About this mod Author’s original text

RotVitals

Floating health bars over every enemy's head in Grain Rot.

What it does

  • Tracks at frame rate. The bar reads the enemy's live health every frame,

so it never lags a hit, and it stays locked to the enemy while you move.

  • Damage-lag ghost bar. A pale red bar drains behind the fill after a hit,

so you can see exactly how much that swing took off.

  • Hit punch. The bar pops the instant health drops.
  • Reads at a glance. Fill ramps green → amber → red over a segmented

track, framed with a drop shadow and a bone rim.

  • Not a wallhack. A bar only goes up once line of sight is confirmed, and

comes straight down the moment cover breaks it, so nothing shows through

geometry — not even a flicker as you move past a wall. Range is capped at

18 m too, so you cannot read a room before you enter it.

  • Enchanted enemies get a gold rim.
  • HP numbers above the bar (42 / 118), switchable off.
  • Flying drones too. Drones have no health of their own — they live and die

by the character flying them — so their bar shows that character's health,

which is what actually decides whether the drone goes down.

Only enemies get bars. Players, soul vessels and friendly NPCs are ignored.

Multiplayer

Purely local and visual. It reads replicated health, so it works whether you

are hosting or joining, and lobby mates without the mod see nothing different.

The game only replicates an enemy's current health; its maximum is worked

out on each machine separately and is not meaningful on a machine that does

not own the enemy. So when you are joining someone else's game, the bar takes

its maximum from the highest health it has seen that enemy at. Enemies are at

full when they spawn, so this is normally exact — and it is the only approach

that stays correct when the host runs a mod that changes enemy health. The one

case it cannot know about is an enemy that was already damaged before you ever

laid eyes on it, which will read as full until you damage it further.

Performance

Bars are pooled and each one is its own canvas, so a moving enemy costs a

single position write per frame. Enemy intake is event-driven — no polling

loops — and only the nearest 16 on-screen enemies are ever drawn.

Tuning

Everything is in the CFG block at the top of mod/Scripts/main.lua:

| Setting | Default | What it does |

|----------------|---------|---------------------------------------------------|

| MAX_DIST | 1800 | Range in uu (100 uu = 1 m) — no bars past this |

| FADE_DIST | 1300 | Bars start fading out here |

| MAX_BARS | 16 | Most bars on screen at once (nearest enemies win) |

| WALL_CHECK | true | Hide bars for enemies behind geometry |

| LOS_HITS | 2 | Clear line-of-sight traces in a row before a bar appears |

| SHOW_NUMBERS | true | 42 / 118 above the bar |

| HIDE_FULL_HP | false | Set true to only show enemies you have hurt |

| SEGMENTS | 4 | Divider ticks across the track (0 = plain bar) |

| DRONES | "host" | Drone bars: "host" health, "state" 3-step, "off" none |

| BAR_W / BAR_H | 128 / 14 | Bar size at reference distance |

| HEAD_OFFSET | 40 | Height above the head |

| CAMERA_LEAD | 1.0 | One-frame camera correction (see below) |

No hotkeys, no config file, no external processes, nothing written to disk.

Notes

Bar placement uses the mod's own world-to-screen maths against a camera

extrapolated one frame forward, because the per-frame hook it runs from fires

before the camera manager updates — without that, bars visibly swim whenever

the camera moves. On startup it cross-checks its maths against the engine's

own projection and only switches over if they agree, so on any build where

that assumption does not hold it quietly falls back instead of misplacing

bars. If bars ever appear to overshoot when you spin, set CAMERA_LEAD = 0.

Status lines land in UE4SS.log every 60 seconds.

Credits

Made by Mentalize.

Install & use Install: follow the bundled instructions

  1. Unzip the archive from playbuff and read the bundled readme / instructions first.
  2. Most mods rely on the game's mod loader — the usual route is a community mod manager (such as r2modman): pick this game, install, and it handles the loader and dependencies.
  3. For a manual install, put the mod files into the matching Mod / plugins folder inside the game directory.
  4. Launch the game to confirm it loaded; mods with listed dependencies need those installed as well.

Install locations vary a lot between mods — the bundled readme is the most reliable guide.

Dependencies

Install these first, or the mod will not work:

GrainRot_UE4SS

File & checksum

Filename
RotVitals-1.0.4.zip
File size
51.8 KiB