Heritage¶
Lineage¶
BUFF stands on the shoulders of years of community work on the DCS splash damage problem.
FrozenDroid -- The Original¶
The original "Splash Damage" script was written by FrozenDroid. It established the core technique that every subsequent version uses: intercept S_EVENT_SHOT, track the weapon object, detect impact via isExist() going false, and spawn a supplemental trigger.action.explosion at the impact point.
This was the insight that made the whole thing work. DCS provides no "weapon impact" event, so tracking the weapon object and detecting its disappearance is the only way to know when and where a bomb hit.
spencershepard / GRIMM -- Extended¶
spencershepard (GRIMM) extended FrozenDroid's script with additional weapon types, the cascade/blast wave mechanic (secondary explosions on nearby units), and the damage model (ROE HOLD and movement disable on damaged vehicles).
The cascade mechanic was a significant addition -- it's what makes near-misses lethal, not just direct hits.
Stevey666 -- Splash Damage 3.4¶
Stevey666 produced the most widely-used version: Splash Damage 3.4. This is a comprehensive 7,700-line script that added:
- Napalm persistence (fire effects and damage over time)
- Cluster munition simulation (submunition dispersal patterns)
- Trophy APS (active protection system simulation for ground vehicles)
- Kill feed with player attribution (pre/post health scanning)
- Cargo cook-offs (ammo trucks and fuel tankers with secondary explosions)
- Vehicle IEDs (proximity-triggered detonation on named units)
- Murder Mode, strobe markers, critical component RNG, and more
The weapon table -- the community-tuned mapping of DCS weapon type names to explosive power values -- is 3.4's most valuable contribution. Years of player testing went into those numbers. BUFF ports this table directly.
BUFF -- Lean Rewrite¶
BUFF extracts the core splash damage mechanic from 3.4 and rewrites it from scratch. The goal is not to replace 3.4 -- it's to provide a lighter-weight option for squadrons that only need the blast damage fix.
The features BUFF drops are all valid -- napalm, clusters, kill feed, Trophy APS are all useful in the right context. They're just not part of the core problem (bombs don't kill at realistic radii) and they add complexity, configuration surface area, and performance cost.
For squadrons that want those features, Splash Damage 3.4 remains available and actively maintained by the community.
What BUFF Keeps¶
| From | What | Why |
|---|---|---|
| FrozenDroid | S_EVENT_SHOT + isExist() tracking + supplemental explosion | The core technique. It works. |
| GRIMM | Cascade blast wave mechanic | Near-misses need to kill. |
| GRIMM | Damage model (ROE HOLD + movement disable) | Partial kills feel right. |
| Stevey666 (3.4) | Weapon table (151+ entries) | Community-tuned power values. Years of testing. |
| Stevey666 (3.4) | Inverse-square intensity with bounding box scaling | The physics is approximate but the results are good. |
| Stevey666 (3.4) | Structure damage boost | DCS buildings need the extra help. |
What BUFF Adds¶
| Feature | Description |
|---|---|
| AGL intercept gate | Weapons destroyed mid-air don't produce phantom ground explosions. The original 3.4 has this bug -- the fix exists in its napalm handler but was never applied to the main pipeline. |
| Zero in-flight sphere searches | No world.searchObjects calls during weapon flight. All spatial queries deferred to impact. |
| Adaptive poll rate | 0.5s idle rate when nothing tracked, 0.1s when weapons in flight. |
| Pre-computed power | All multipliers applied once at registration. No per-tick or per-impact recalculation. |
| Instance-based design | BUFF:New() / :Start() / :Stop() pattern. Clean lifecycle, no global state pollution. |
What BUFF Drops¶
| Feature | Approx Lines in 3.4 | Reason |
|---|---|---|
| Kill feed / attribution | ~400 | Scripted explosions are anonymous in DCS (S_EVENT_KILL.initiator = nil). The workaround requires pre/post health scanning. Separate concern. |
| Napalm persistence | ~400 | Fire effects, static object spawning, scheduled damage. Separate module. |
| Cluster munition sim | ~200 | Submunition dispersal patterns. Separate module. |
| Trophy APS | ~250 | Active protection system simulation. Unrelated to splash damage. |
| Cargo cook-offs | ~600 | Ammo trucks / fuel tanker secondary explosions. Separate module. |
| Vehicle IEDs | ~150 | Named unit proximity detonation. Unrelated to splash damage. |
| Murder Mode | ~100 | A-10 bonus explosions. Unrelated to splash damage. |
| Strobe markers | ~200 | Periodic explosions as visual beacons. Unrelated. |
| Critical Component RNG | ~80 | Random instakill chance on any hit. Doesn't belong in core. |
| Ground Unit Explode on Death | ~150 | Cosmetic explosion on unit death. Separate module. |
| CBU bomblet hit spread | ~200 | Cluster module concern. |
| Tactical / Giant explosions | ~400 | MOAB-style / named-unit mega-detonations. Separate module. |
| Radio menu | ~200 | Runtime configuration. Can be added as optional module. |
| Advanced smoke/fire sequencing | ~200 | Cosmetic effects. Separate module. |
Total: ~3,500+ lines of feature code removed. The remaining ~4,200 lines in 3.4 are the core mechanic (~300-400 lines of logic) plus config parsing, utility functions, and the weapon table.
Design Philosophy¶
BUFF follows the Unix philosophy: do one thing well. The blast damage fix is one job. Napalm is a different job. Kill feed is a different job. Each can be a separate script, loaded independently, sharing the DCS event system without knowing about each other.
This isn't a criticism of 3.4's approach -- monolithic scripts have real advantages (single file to manage, guaranteed feature interaction, unified configuration). BUFF just makes a different tradeoff: less capability, less complexity, less surface area for bugs and performance issues.