BONELAB
Install

Details

Last Updated
First Uploaded
Downloads
135
Likes
0
Size
42KB
Dependency string
Lemmys-Overheat-1.1.0
Dependants

Overheat

Guns get hot. Keep the trigger down and smoke starts pouring off the barrel; keep going and it cooks off — OVERHEAT!! flashes red in front of you and the gun refuses to fire until it cools.

Nothing to install but the DLL. The smoke and the warning panel are both built in code at runtime — no asset bundle.

What happens

Heat builds per round. A thin bar appears under your sight line once a gun passes 35% heat, going amber → red as it climbs.

Smoke from about 30% heat. It comes out of the gun's actual firePointTransform, drifts with the barrel while you move, and curls with noise as it rises. Emission scales with heat, so a warm gun wisps and a cooked one gushes.

The muzzle starts glowing at about 45%. The tip of the barrel comes up dull red, goes cherry, then orange as it approaches cook-off — roughly the order real steel does it. It casts actual light, so in a dark room you can see the heat on the walls and on your own hands. Glow is deliberately later than smoke, because metal smokes off before it visibly colours.

At 100% the gun locks out. The trigger does nothing. The warning panel appears and pulses red until heat falls back to 35%, which takes about three seconds. Full cool from there is another second and a half.

The panel pulses on a smooth sine at 2.5 Hz rather than hard-blinking on and off — it reads as just as urgent in a headset without the strobe.

The heat model

One round adds (1 / ShotsToOverheat) × sqrt(10 / roundsPerSecond).

That square root is a deliberate halfway house between "every round costs the same heat" (which makes a minigun overheat in half a second) and "every gun takes the same time" (which makes fire rate meaningless). Faster guns still cook off sooner in wall-clock, but they get more rounds out first. At the defaults — 35 shots, 0.22 cooling:

Gun Rounds to overheat Time on full auto
300 RPM 25 4.9s
600 RPM 35 3.5s
900 RPM 43 2.9s
1200 RPM 50 2.5s
3000 RPM 78 1.6s

Turn Scale By Fire Rate off in BoneMenu if you want a flat round count regardless of weapon.

Cooling runs at 0.22 per second whether you are holding the gun or not, so a cooked weapon you drop or holster is usable again by the time you pick it back up. Lockout ends at 35% heat rather than at zero — that hysteresis is what stops you firing one round, overheating instantly, and repeating.

Semi-auto pistols essentially never overheat, because you cannot pull a trigger 35 times fast enough to outrun the cooling. That is intended.

Settings

BoneMenu → Overheat.

Default
Shots To Overheat 35 The whole difficulty dial, on the front page
Cool Per Second 0.22
Resume At Heat 0.35 Lockout ends here
Scale By Fire Rate on The sqrt curve above
Affect NPC Guns off On, and enemies cook their guns too
Smoke Starts At 0.30
Smoke Amount 1.0 Up to 4x if you want it theatrical
Barrel Glow on
Glow Starts At 0.45
Glow Size 1.0
Glow Casts Light on Turn off to save a real-time light per hot gun
Show Warning / Heat Bar on
Flash Rate 2.5 Hz
Scale / Distance / Height 1.0 / 0.55 / −0.12 Where the panel sits relative to your head

Cool Everything Now on the front page clears all heat instantly.

Install

Requires MelonLoader and BoneLib.

Drop Overheat.dll into BONELAB/Mods/.

Notes

Only your guns heat up, by default. A gun counts as yours when one of the hands attached to its trigger grip belongs to the player's RigManager — NPC hands carry their own manager, so this separates them exactly rather than guessing.

Blocking happens at Gun.Fire(), which is the entry point for a trigger pull, so a locked-out gun skips the whole shot — animation, projectile and ammo — instead of ending up half-fired. Rounds are counted in Gun.OnFire(), which only runs once a shot is actually committed; if that method is unavailable the mod falls back to counting in Fire() and says so in the console.

Guns are pooled in BONELAB — a despawned one is disabled and later handed back out with the same instance id. Heat is keyed on that id, so the mod resets a gun's heat whenever it finds it inactive, and evicts entries that have been cold and untouched for 25 seconds. The dictionary cannot grow across a session.

Particle modules are stripped in this build. VelocityOverLifetime, ForceOverLifetime, LimitVelocityOverLifetime and TextureSheetAnimation all survive IL2CPP as empty shells with no settable members, and ShapeModule.enabled is gone too. The smoke gets its rise from negative gravity and its drift from the noise module, which did survive.

The gun's own materials are never touched. The glow is an additive billboard plus a point light parented to the fire point, not an emissive tint on the weapon. Weapon materials are shared assets — tinting one would light up every copy of that gun in the scene, and there would be nothing dependable to restore afterwards.

The first time you fire, the console prints the gun's RPM and how many rounds it will take to cook — a quick way to confirm the hook landed and to sanity-check your tuning.

Changelog

1.1.0 — Added the glowing muzzle: dull red → cherry → orange as heat climbs, with a real point light so it spills onto nearby surfaces.

1.0.0 — Initial release.

Thunderstore development is made possible with ads. Please consider making an exception to your adblock.