headclef-Assess icon

Assess

See what your hits actually do: floating damage numbers and enemy health bars, accurate even as a co-op client, in R.E.P.O.

Last updated 8 hours ago
Total downloads 67
Total rating 0 
Categories Mods Monsters Client-side AI Generated Quality Of Life
Dependency string headclef-Assess-1.0.0
Dependants 0 other packages depend on this package

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2100 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2100

README

Assess

A BepInEx mod for R.E.P.O. that shows you what your hits actually do — floating damage numbers and enemy health bars — and gets the numbers right even when you are not the host.

What This Mod Does

You swing, you tumble, you throw something heavy. Did it do anything? R.E.P.O. never tells you. You learn that an enemy is nearly dead by watching it die.

Assess answers the question:

  • Damage numbers. Every time an enemy takes damage, the number floats up where the hit landed. Your weapons, a tumble, a fall, a death pit — all of it.
  • Health bar on hover. Look at an enemy and read what it has left. Quiet and deliberate: you get the reading when you ask for it.
  • Health bar above every enemy. Off by default, on if you want it — see Configuration.

It pairs naturally with the rest of the suite. If you run Improve, Train or Increase Tumble Damage, Assess is how you finally see those upgrades working instead of taking them on faith. Watching a tumble hit for 412 instead of 60 is the whole point.

It completes a set: Observe tells you where the valuables are, Sense tells you where the enemies are, Assess tells you what condition they are in.

Accurate as a co-op client — and why that is worth saying

Most of R.E.P.O. is simulated on the host, and enemy health is no exception. EnemyHealth.healthCurrent is only ever changed inside EnemyHealth.Hurt, which returns immediately if you are not the host. On a client that value keeps the number it was handed when the enemy spawned — the full maximum, forever. Enemy health is never serialized to anyone either.

So a mod that simply read that value would show every enemy at full health, to every client, permanently — and would look like it was working the whole time.

Assess reconstructs the real number instead, and it is exact rather than a guess, because the game already broadcasts everything needed:

  • Every damage source in the game funnels through EnemyHealth.Hurt: weapons and equipment (via HurtCollider), falls and collisions (LightImpact / MediumImpact / HeavyImpact), death pits, and even instant kills — which are implemented as damage equal to the health remaining. Death is private, and Hurt is its only caller. There is no way around it.
  • Every non-lethal hit is broadcast to all players with the damage value attached.
  • The killing blow arrives as a death broadcast. The health that was left is the damage that finished it.
  • Enemies start from a prefab value that nothing changes at runtime, so every machine counts from the same number.
  • The only enemy in the game that heals already broadcasts its own health, so its value is taken directly from the game rather than counted.

Assess therefore sends nothing over the network at all. Nothing to configure, no host-side install, no risk to your connection — it works in any lobby, against any host, whether or not they have ever heard of this mod.

Configuration

Settings are in BepInEx/config/headclef.Assess.cfg or in the in-game mod config menu.

Key Default Description
Damage Numbers → Enable true Floating number on every hit
Damage Numbers → Duration 1.2 Seconds a number stays up (0.3–5)
Damage Numbers → Font Size 22 Size of the numbers (8–72)
Health Bar → Show On Hover true Bar for the enemy you are looking at
Health Bar → Show Above Every Enemy false Bar above every enemy in range, always
Health Bar → Show Numbers On Bar true Print current / max on the bar
General → Max Distance 30 Only show bars within this many metres (5–100)
General → Require Line Of Sight true Do not read health through walls

Nothing here needs changing to use the mod — install it and it works. The two worth a thought:

  • Show Above Every Enemy is off on purpose. R.E.P.O. leans on not quite knowing what is around you, and a permanent bar over everything spends that tension for information you rarely need. Hovering gives you the same answer when you actually want it. Turn it on if you disagree — it is your game.
  • Require Line Of Sight is on for the same reason. With it off you read health through walls, which is a genuine advantage and a genuine change to how the game feels.

Requirements

That is all. Assess has no mod dependencies and no host requirements.

Installation

  1. Install via Thunderstore (recommended).
  2. Or manually: place Assess.dll into your BepInEx/plugins folder.
  3. Launch the game — the config file is generated on first run.

Multiplayer

  • Fully client-side. Assess reads broadcasts the game already sends and never sends anything itself, so it cannot affect your connection and cannot affect anyone else's game.
  • Works as host, as client, and in single player, with the same accuracy in each — see above for why the client case is not a guess.
  • The host does not need the mod. Nobody else needs it either. Only you see your numbers.

Development

Project Structure

├── Assess.cs                       # Plugin entry point & config
├── EnemyTracker.cs                 # Knows every enemy's real health, on every machine
├── AssessHud.cs                    # Damage numbers & health bars (IMGUI)
├── Patches/
│   └── AssessPatch.cs              # The four game broadcasts that make it exact
└── README.md

Building

dotnet build -c Release

License

See LICENSE.