Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
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
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100README
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 (viaHurtCollider), falls and collisions (LightImpact/MediumImpact/HeavyImpact), death pits, and even instant kills — which are implemented as damage equal to the health remaining.Deathis private, andHurtis 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
- BepInEx 5.x installed for R.E.P.O.
That is all. Assess has no mod dependencies and no host requirements.
Installation
- Install via Thunderstore (recommended).
- Or manually: place
Assess.dllinto yourBepInEx/pluginsfolder. - 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.