
RotVitals
Floating enemy health bars - live health, a damage-lag ghost bar, hit punch, and no reading enemies through walls.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. Bars are hidden when the enemy is behind geometry, and the range is capped at 18 m 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.
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 |
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) |
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.