

Your Semibot visibly falls apart as its health drops. A crack or two first, then bandages, dented plating, and limbs hanging off by the time you're one hit from dead. Heal up and it mends.
![]()
R.E.P.O. puts a health bar on the back of everyone's neck, but you have to be behind them and close to read it. BattleScars writes the damage across the whole body instead, so you can read a teammate from across the room.
The part most cosmetic mods can't manage: it shows on every Semibot in the lobby, even your unmodded friends'. Damage rides the game's own cosmetic system, so everyone sees it whether they installed the mod or not. Nothing gets unlocked, saved, or written to your file. The scars wipe clean when you patch up.
Visuals only by default. No gameplay changes, just the look, plus a red low-health vignette creeping in at the screen edges. Want the Semibot to play as rough as it looks? Flip Mode = Full for a slower walk and capped stamina as the damage stacks up.
Per-player. Every player who wants the effects on their own Semibot needs the mod. Your scars broadcast to everyone via the game's normal cosmetic RPC, so unmodded teammates still see them; they just can't have their own.
If only the host installs, only the host gets scars. There's no "host enforces on everyone" path. Unmodded clients never run the code that drives SetupCosmeticsRPC, so nothing can be forced onto them.
The first scar shows up at 75 HP, and another body part joins it every 8 HP you lose after that.
Each scarred part worsens by stacking layers rather than swapping one look for the next. A crack shows up first, then a bandage joins it, then the crack deepens into dented plating, and finally the limb breaks outright into a broken mesh. The parts don't worsen in lockstep. Whatever got scarred first runs a stage or two ahead of the newest scar, so most of the time the Semibot wears a mix. A bandaged arm next to a cracked leg next to a broken-mesh shoulder.
Rough landmarks: the first broken-mesh limb turns up around 30 HP. The broken head holds out the longest, until you're under 10. Everything between those overlaps. Those numbers are the Normal intensity; ScarIntensity in the config shifts the whole curve earlier or later.
Which limbs scar, and in what order, is reseeded every level, so the same HP wears differently from one level to the next. Within a level the layout holds steady and healing walks it back in reverse; it only reshuffles once you're patched back up to full health.
Max-HP upgrades buy a real buffer. 160 max HP means you can take 85 damage before the first scar.
Different effects travel different paths:
| Effect | Reaches | How |
|---|---|---|
| Scars | Everyone in the lobby | Vanilla SetupCosmeticsRPC |
| Speed / stamina nerfs | Everyone | Local nerfs ride position sync |
| Red screen vignette | You only | Local |
The mod adds no network traffic of its own. Scars travel on the game's existing cosmetic RPC, and the nerfs are local.
One setting decides the overall feel:
Lives at BepInEx/config/Vippy.BattleScars.cfg. REPOConfig picks it up as an in-game settings page, edits apply live.
[General]
Mode = VisualOnly
ScarIntensity = Normal
[Effects]
VignetteIntensity = 0.25
[Testing]
TestHealth = -1
DebugLogging = false
That's all of it. Five settings. Most players never need to touch anything except Mode.
ScarIntensity shifts the whole curve. Light holds scars off until you're badly hurt, Heavy starts them after the first couple of hits, Normal is the tuned default. VignetteIntensity is how strong the red low-health vignette gets at its worst, near death, 0 to 1. It ramps up as your HP drops and eases back off as you heal.
TestHealth is for previewing thresholds without taking damage. -1 disables. 0-100 forces that HP value through the tier pipeline, no real damage taken. Numpad 0-9 in-game drives the same field: Numpad 0 disables, Numpad 1 jumps to HP 1, Numpad 2-9 jumps to HP 20, 30, ... 90.
DebugLogging dumps every scar apply and restore to the BepInEx console. Off by default; turn it on if you're filing a bug report about scars not showing up right.
First time the mod loads each session it copies MetaSave.es3 to BepInEx/config/BattleScars/backups/<your name>/. Five newest kept. BattleScars never writes to your save, but the copy is cheap insurance.
Harmony targets: PlayerCosmetics.SetupCosmetics, PlayerCosmetics.SetupCosmeticsLogic, StatsManager.Start. Should coexist with any mod that doesn't replace those entirely.
GitHub Issues for bugs. Other mods at Vippy on Thunderstore.