Skip to content

Repository files navigation

CS Gas — SPT 4.1.2 port

Backports the M8230 CS gas hand grenade from EFT 1.0 — a volumetric, occlusion-aware gas cloud that burns eyes, forces coughing, blocks meds and is stopped by a proper gas mask. Ported from WelcomeToTarkov/ManimalCSGas (by Manimal) to SPT 4.1.2.


🟣 JOIN THE DISCORD — https://discord.gg/nxa3W7w4rJ

This is the single most important link in this README. All updates, release announcements, bug fixes, early builds and support happen in the Discord first. If you run this mod, join it — it is the only place you will reliably hear about breaking changes and new versions.

What's coming next: I am building a post-1.0 patcher and backend, written from scratch and engineered to be very performant — a proper foundation instead of the current patchwork. All of these mods will shortly be merged into that new system. If you want to follow that work, or use it when it lands, the Discord is where it will be announced.


Requirements

Dependency Minimum version
WTT-ClientCommonLib 2.0.20
WTT-ServerCommonLib 2.0.20

Requires SPT 4.1.2. It will not run on 4.0.x — see What the port changed below.

Installation

  1. Install the dependencies above first.
  2. Download the latest release zip from GitHub.
  3. Extract it into your SPT install root — the folder containing EscapeFromTarkov.exe and SPT_Runtime.

The zip is already laid out correctly and will place:

BepInEx/plugins/CSGas/CSGasClient.dll        <- client plugin
SPT_Runtime/user/mods/CSGasServer/           <- server mod (DLL + db/ + bundles/ + config/)

Note: server mods live under SPT_Runtime/user/mods/not user/mods/ at the SPT root. A server mod folder placed at the root is silently ignored by the server, with no error.

Configuration

Gas-mask tiers are in SPT_Runtime/user/mods/CSGasServer/config/gas_masks.json and are served to the client at runtime. Cloud size, duration, damage and line-of-sight behaviour are in BepInEx/config/com.manimal.csgas.cfg.

What the port changed

SPT 4.1.2 is a breaking release on both halves:

  • Server: net9.0 → net10.0; AbstractModMetadataIModMetadata (and IsBundleMod is gone — bundles are detected automatically); IOnLoad.OnLoad()OnLoadAsync(CancellationToken); OnLoadOrder.PostDBModLoader removed; route handlers take a trailing CancellationToken.
  • Client: 4.1.2 deobfuscated Assembly-CSharp. Every obfuscated reference was re-pointed at its named type and verified against the shipped assemblies — for example ThrowWeapItemClassEFT.InventoryLogic.ThrowWeap, GInterface203EFT.IMedsController, GClass1006VolumetricBounds, DamageInfoStructEFT.Ballistics.DamageInfo.
  • Reflection targets: string-literal Harmony targets compile fine and fail silently at runtime, so all of them were audited against the shipped assemblies — Grenade.collider_0_collider, Player.method_74OnHealthApplyDamage, and the Rigidbody property → the field on Throwable.

Troubleshooting

"Errors were found with mods, NO MODS WILL BE LOADED" — a dependency version range is unsatisfied. SPT aborts the entire mod load on one conflict, so the mod it names is often not the one at fault.

The grenade throws but nothing happens — the M8230 prefab failed to resolve its emission effect. The client repairs this at the cook and the throw; check LogOutput.log for [CSGas] warnings.

Credits

Original mod by ManimalWelcomeToTarkov/ManimalCSGas. This repository is a port to SPT 4.1.2; all original design and assets are theirs.

License

MIT — see LICENSE. Copyright (c) 2026 danauraborealis.

About

Manimal's CS Gas ported to SPT 4.1.2 — the EFT 1.0 M8230 gas grenade with a volumetric, occlusion-aware cloud, coughing, blocked meds and working gas masks.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages